From 34a02553c4c43b5b09f49d221d433231bb5dcc02 Mon Sep 17 00:00:00 2001 From: 1whatleytay <1whatleytay@hdsb.ca> Date: Thu, 6 Feb 2020 09:44:49 -0500 Subject: [PATCH] vita3k: remove vita-headers (#649) --- .gitmodules | 3 - external/CMakeLists.txt | 3 - external/vita-headers | 1 - tools/gen-modules/CMakeLists.txt | 1 - vita3k/app/CMakeLists.txt | 2 +- vita3k/audio/CMakeLists.txt | 2 +- vita3k/audio/include/audio/functions.h | 2 +- vita3k/audio/include/audio/state.h | 8 +- vita3k/config/CMakeLists.txt | 2 +- vita3k/config/include/config/config.h | 3 +- vita3k/ctrl/include/ctrl/state.h | 14 +- vita3k/dialog/include/dialog/state.h | 7 +- vita3k/dialog/include/dialog/types.h | 227 +++- vita3k/gui/src/common_dialog.cpp | 23 +- vita3k/gui/src/trophy_unlocked.cpp | 8 +- vita3k/gxm/CMakeLists.txt | 2 +- vita3k/gxm/include/gxm/functions.h | 7 +- vita3k/gxm/include/gxm/state.h | 4 +- vita3k/gxm/include/gxm/types.h | 979 +++++++++++++++++- vita3k/gxm/src/textures.cpp | 6 +- vita3k/host/include/host/app_util.h | 15 +- vita3k/host/include/host/import_fn.h | 2 +- vita3k/host/include/host/load_self.h | 2 +- vita3k/host/include/host/state.h | 2 - vita3k/host/src/load_self.cpp | 4 +- vita3k/io/CMakeLists.txt | 2 +- vita3k/io/include/io/functions.h | 5 +- vita3k/io/include/io/types.h | 76 +- vita3k/io/include/io/util.h | 6 +- vita3k/io/include/io/vfs.h | 3 +- vita3k/io/src/io.cpp | 2 +- vita3k/kernel/CMakeLists.txt | 2 +- vita3k/kernel/include/kernel/functions.h | 2 +- vita3k/kernel/include/kernel/state.h | 12 +- .../include/kernel/thread/sync_primitives.h | 2 - .../include/kernel/thread/thread_functions.h | 2 +- vita3k/kernel/include/kernel/types.h | 530 +++++++++- vita3k/kernel/src/thread/sync_primitives.cpp | 4 - vita3k/kernel/src/thread/thread.cpp | 2 - vita3k/module/include/module/load_module.h | 2 - vita3k/modules/SceAppMgr/SceAppMgrUser.cpp | 22 +- vita3k/modules/SceAppUtil/SceAppUtil.cpp | 70 +- vita3k/modules/SceAudio/SceAudio.cpp | 30 +- vita3k/modules/SceAudioIn/SceAudioIn.cpp | 39 +- vita3k/modules/SceAvPlayer/SceAvPlayer.cpp | 14 +- .../SceCommonDialog/SceCommonDialog.cpp | 193 ++-- vita3k/modules/SceCtrl/SceCtrl.cpp | 100 +- vita3k/modules/SceDbg/SceDbg.cpp | 2 - vita3k/modules/SceDisplay/SceDisplay.cpp | 14 +- vita3k/modules/SceDisplay/SceDisplayUser.cpp | 27 +- vita3k/modules/SceFiber/SceFiber.cpp | 27 +- vita3k/modules/SceGxm/SceGxm.cpp | 150 ++- vita3k/modules/SceJpeg/SceJpegUser.cpp | 6 +- .../SceKernelModulemgr/SceModulemgr.cpp | 5 +- .../SceKernelThreadMgr/SceThreadmgr.cpp | 1 - vita3k/modules/SceLibKernel/SceLibKernel.cpp | 44 +- vita3k/modules/SceLibKernel/SceLibRng.cpp | 2 - vita3k/modules/SceNet/SceNet.cpp | 2 +- vita3k/modules/SceNetCtl/SceNetCtl.cpp | 62 +- vita3k/modules/SceNgsUser/SceNgs.cpp | 6 +- vita3k/modules/SceNpManager/SceNpManager.cpp | 6 +- vita3k/modules/SceNpTrophy/SceNpTrophy.cpp | 50 +- vita3k/modules/ScePower/ScePower.cpp | 12 +- .../modules/SceProcessmgr/SceProcessmgr.cpp | 13 +- vita3k/modules/SceSysmem/SceSysmem.cpp | 26 +- .../modules/SceVideodec/SceVideodecUser.cpp | 79 +- .../modules/include/modules/module_parent.h | 4 +- vita3k/net/CMakeLists.txt | 3 +- vita3k/net/include/net/state.h | 13 +- vita3k/net/include/net/types.h | 313 ++++++ vita3k/net/src/net.cpp | 2 - vita3k/np/include/np/common.h | 4 +- vita3k/np/include/np/functions.h | 18 +- vita3k/np/include/np/state.h | 10 +- vita3k/np/include/np/trophy/context.h | 8 +- vita3k/np/include/np/trophy/trp_parser.h | 4 +- vita3k/np/src/init.cpp | 2 +- vita3k/np/src/trophy/context.cpp | 51 +- vita3k/np/src/trophy/trp_parser.cpp | 4 +- vita3k/renderer/CMakeLists.txt | 2 +- vita3k/renderer/include/renderer/functions.h | 16 +- .../renderer/include/renderer/gl/functions.h | 14 +- vita3k/renderer/include/renderer/gl/types.h | 2 - .../include/renderer/texture_cache_state.h | 3 +- vita3k/renderer/include/renderer/types.h | 5 +- vita3k/renderer/src/creation.cpp | 2 +- vita3k/renderer/src/gl/load_shaders.cpp | 6 +- vita3k/renderer/src/gl/renderer.cpp | 6 +- vita3k/renderer/src/gl/sync_state.cpp | 4 +- vita3k/renderer/src/gl/texture.cpp | 6 +- vita3k/renderer/src/renderer.cpp | 4 +- vita3k/renderer/src/scene.cpp | 4 +- vita3k/renderer/src/state_set.cpp | 2 +- vita3k/renderer/src/texture_cache.cpp | 8 +- vita3k/renderer/src/texture_format.cpp | 3 +- vita3k/renderer/src/texture_palette.cpp | 2 +- vita3k/rtc/CMakeLists.txt | 2 +- vita3k/rtc/include/rtc/rtc.h | 22 +- vita3k/shader/CMakeLists.txt | 2 +- .../shader/include/shader/spirv_recompiler.h | 1 - vita3k/shader/src/spirv_recompiler.cpp | 14 +- vita3k/touch/CMakeLists.txt | 2 +- vita3k/touch/include/touch/touch.h | 45 + vita3k/touch/src/touch.cpp | 3 - vita3k/util/CMakeLists.txt | 34 +- vita3k/util/include/util/system.h | 32 + vita3k/util/include/util/types.h | 231 +++++ 107 files changed, 3250 insertions(+), 646 deletions(-) delete mode 160000 external/vita-headers create mode 100644 vita3k/net/include/net/types.h create mode 100644 vita3k/util/include/util/system.h create mode 100644 vita3k/util/include/util/types.h diff --git a/.gitmodules b/.gitmodules index 1ea047c2f..1bedbfad9 100644 --- a/.gitmodules +++ b/.gitmodules @@ -72,9 +72,6 @@ [submodule "external/unicorn-src"] path = external/unicorn-src url = https://github.com/unicorn-engine/unicorn -[submodule "external/vita-headers"] - path = external/vita-headers - url = https://github.com/vitasdk/vita-headers [submodule "external/vita-toolchain"] path = external/vita-toolchain url = https://github.com/Vita3K/vita-toolchain diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt index acea83dfc..67370a433 100644 --- a/external/CMakeLists.txt +++ b/external/CMakeLists.txt @@ -153,9 +153,6 @@ else() target_link_libraries(unicorn INTERFACE "${UNICORN_LIB}") endif() -add_library(vita-headers INTERFACE) -target_include_directories(vita-headers INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/vita-headers/include") - add_library(vita-toolchain INTERFACE) target_include_directories(vita-toolchain INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/vita-toolchain/src") diff --git a/external/vita-headers b/external/vita-headers deleted file mode 160000 index dd8ec2126..000000000 --- a/external/vita-headers +++ /dev/null @@ -1 +0,0 @@ -Subproject commit dd8ec212682c176efbe450041be3f3456739d467 diff --git a/tools/gen-modules/CMakeLists.txt b/tools/gen-modules/CMakeLists.txt index 25854fbda..046133390 100644 --- a/tools/gen-modules/CMakeLists.txt +++ b/tools/gen-modules/CMakeLists.txt @@ -1,3 +1,2 @@ add_executable(gen-modules gen-modules.cpp) target_link_libraries(gen-modules PRIVATE yaml) -add_dependencies(gen-modules vita-headers) diff --git a/vita3k/app/CMakeLists.txt b/vita3k/app/CMakeLists.txt index 33aa4d420..d45c6d2b6 100644 --- a/vita3k/app/CMakeLists.txt +++ b/vita3k/app/CMakeLists.txt @@ -11,5 +11,5 @@ add_library( ) target_include_directories(app PUBLIC include) -target_link_libraries(app PUBLIC discord-rpc host vita-headers) +target_link_libraries(app PUBLIC discord-rpc host) target_link_libraries(app PRIVATE gui) diff --git a/vita3k/audio/CMakeLists.txt b/vita3k/audio/CMakeLists.txt index 708c66172..be3e88340 100644 --- a/vita3k/audio/CMakeLists.txt +++ b/vita3k/audio/CMakeLists.txt @@ -7,5 +7,5 @@ src/audio.cpp ) target_include_directories(audio PUBLIC include) -target_link_libraries(audio PUBLIC sdl2 vita-headers) +target_link_libraries(audio PUBLIC sdl2) target_link_libraries(audio PRIVATE microprofile util) diff --git a/vita3k/audio/include/audio/functions.h b/vita3k/audio/include/audio/functions.h index 7e1ee736b..26126da91 100644 --- a/vita3k/audio/include/audio/functions.h +++ b/vita3k/audio/include/audio/functions.h @@ -17,7 +17,7 @@ #pragma once -#include +#include #include diff --git a/vita3k/audio/include/audio/state.h b/vita3k/audio/include/audio/state.h index 5b31b89b1..f36884f5a 100644 --- a/vita3k/audio/include/audio/state.h +++ b/vita3k/audio/include/audio/state.h @@ -17,16 +17,16 @@ #pragma once +#include + +#include + #include #include #include #include #include -#include - -#include - typedef std::shared_ptr AudioStreamPtr; typedef std::function ResumeAudioThread; diff --git a/vita3k/config/CMakeLists.txt b/vita3k/config/CMakeLists.txt index 7691e03c4..ed2e528f4 100644 --- a/vita3k/config/CMakeLists.txt +++ b/vita3k/config/CMakeLists.txt @@ -13,4 +13,4 @@ add_library( configure_file(src/version.cpp.in version.cpp) target_include_directories(config PUBLIC include) -target_link_libraries(config PUBLIC util vita-headers yaml-cpp) +target_link_libraries(config PUBLIC util yaml-cpp) diff --git a/vita3k/config/include/config/config.h b/vita3k/config/include/config/config.h index 3474277de..d10816914 100644 --- a/vita3k/config/include/config/config.h +++ b/vita3k/config/include/config/config.h @@ -17,7 +17,8 @@ #pragma once -#include +#include + #include // clang-format off diff --git a/vita3k/ctrl/include/ctrl/state.h b/vita3k/ctrl/include/ctrl/state.h index 1cb8272ca..a6b666760 100644 --- a/vita3k/ctrl/include/ctrl/state.h +++ b/vita3k/ctrl/include/ctrl/state.h @@ -1,8 +1,5 @@ #pragma once -#include -#include - #include #include @@ -14,6 +11,17 @@ struct _SDL_GameController; typedef std::shared_ptr<_SDL_GameController> GameControllerPtr; typedef std::shared_ptr<_SDL_Haptic> HapticPtr; +enum SceCtrlPadInputMode { + SCE_CTRL_MODE_DIGITAL = 0, + SCE_CTRL_MODE_ANALOG = 1, + SCE_CTRL_MODE_ANALOG_WIDE = 2 +}; + +enum SceTouchSamplingState { + SCE_TOUCH_SAMPLING_STATE_STOP, + SCE_TOUCH_SAMPLING_STATE_START +}; + struct Controller { GameControllerPtr controller; HapticPtr haptic; diff --git a/vita3k/dialog/include/dialog/state.h b/vita3k/dialog/include/dialog/state.h index c1738c2cc..75c8722ae 100644 --- a/vita3k/dialog/include/dialog/state.h +++ b/vita3k/dialog/include/dialog/state.h @@ -18,7 +18,6 @@ #pragma once #include -#include #include @@ -59,7 +58,7 @@ struct SavedataState { uint8_t btn_num = 0; std::string btn[2]; uint32_t btn_val[2]; - uint32_t button_id = emu::SCE_SAVEDATA_DIALOG_BUTTON_ID_INVALID; + uint32_t button_id = SCE_SAVEDATA_DIALOG_BUTTON_ID_INVALID; std::vector icon_buffer; std::vector icon_loaded; @@ -69,7 +68,7 @@ struct SavedataState { uint32_t display_type; std::vector slot_id; - std::vector slot_info; + std::vector slot_info; Ptr userdata; std::string msg; @@ -82,7 +81,7 @@ struct SavedataState { uint32_t bar_rate = 0; bool has_progress_bar = false; - emu::SceAppUtilSaveDataSlotEmptyParam *list_empty_param = nullptr; + SceAppUtilSaveDataSlotEmptyParam *list_empty_param = nullptr; uint32_t slot_list_size = 0; uint32_t list_style; std::string list_title; diff --git a/vita3k/dialog/include/dialog/types.h b/vita3k/dialog/include/dialog/types.h index 7af25e7ad..5d6902e9b 100644 --- a/vita3k/dialog/include/dialog/types.h +++ b/vita3k/dialog/include/dialog/types.h @@ -19,21 +19,17 @@ #include #include -#include -#include -namespace emu { - -typedef enum SceSaveDataDialogMode { +enum SceSaveDataDialogMode { SCE_SAVEDATA_DIALOG_MODE_FIXED = 1, SCE_SAVEDATA_DIALOG_MODE_LIST = 2, SCE_SAVEDATA_DIALOG_MODE_USER_MSG = 3, SCE_SAVEDATA_DIALOG_MODE_SYSTEM_MSG = 4, SCE_SAVEDATA_DIALOG_MODE_ERROR_CODE = 5, SCE_SAVEDATA_DIALOG_MODE_PROGRESS_BAR = 6 -} SceSaveDataDialogMode; +}; -typedef enum SceSaveDataDialogFocusPos { +enum SceSaveDataDialogFocusPos { SCE_SAVEDATA_DIALOG_FOCUS_POS_LISTHEAD = 0, SCE_SAVEDATA_DIALOG_FOCUS_POS_LISTTAIL = 1, SCE_SAVEDATA_DIALOG_FOCUS_POS_EMPTYHEAD = 2, @@ -43,27 +39,27 @@ typedef enum SceSaveDataDialogFocusPos { SCE_SAVEDATA_DIALOG_FOCUS_POS_DATALATEST = 6, SCE_SAVEDATA_DIALOG_FOCUS_POS_DATAOLDEST = 7, SCE_SAVEDATA_DIALOG_FOCUS_POS_ID = 8 -} SceSaveDataDialogFocusPos; +}; -typedef enum SceSaveDataDialogListItemStyle { +enum SceSaveDataDialogListItemStyle { SCE_SAVEDATA_DIALOG_LIST_ITEM_STYLE_TITLE_DATE_SUBTITLE = 0, SCE_SAVEDATA_DIALOG_LIST_ITEM_STYLE_TITLE_SUBTITLE_DATE = 1, SCE_SAVEDATA_DIALOG_LIST_ITEM_STYLE_TITLE_DATE = 2 -} SceSaveDataDialogListItemStyle; +}; -typedef enum SceSaveDataDialogType { +enum SceSaveDataDialogType { SCE_SAVEDATA_DIALOG_TYPE_SAVE = 1, SCE_SAVEDATA_DIALOG_TYPE_LOAD = 2, SCE_SAVEDATA_DIALOG_TYPE_DELETE = 3 -} SceSaveDataDialogType; +}; -typedef enum SceSaveDataDialogButtonType { +enum SceSaveDataDialogButtonType { SCE_SAVEDATA_DIALOG_BUTTON_TYPE_OK = 0, SCE_SAVEDATA_DIALOG_BUTTON_TYPE_YESNO = 1, SCE_SAVEDATA_DIALOG_BUTTON_TYPE_NONE = 2 -} SceSaveDataDialogButtonType; +}; -typedef enum SceSaveDataDialogSystemMessageType { +enum SceSaveDataDialogSystemMessageType { SCE_SAVEDATA_DIALOG_SYSMSG_TYPE_NODATA = 1, SCE_SAVEDATA_DIALOG_SYSMSG_TYPE_CONFIRM = 2, SCE_SAVEDATA_DIALOG_SYSMSG_TYPE_OVERWRITE = 3, @@ -74,26 +70,142 @@ typedef enum SceSaveDataDialogSystemMessageType { SCE_SAVEDATA_DIALOG_SYSMSG_TYPE_FILE_CORRUPTED = 8, SCE_SAVEDATA_DIALOG_SYSMSG_TYPE_NOSPACE_CONTINUABLE = 9, SCE_SAVEDATE_DIALOG_SYSMSG_TYPE_NODATA_IMPORT = 12 -} SceSaveDataDialogSystemMessageType; +}; -typedef enum SceSaveDataDialogProgressBarType { +enum SceSaveDataDialogProgressBarType { SCE_SAVEDATA_DIALOG_PROGRESSBAR_TYPE_PERCENTAGE = 0 -} SceSaveDataDialogProgressBarType; +}; -typedef enum SceSaveDataDialogEnvFlag { +enum SceSaveDataDialogEnvFlag { SCE_SAVEDATA_DIALOG_ENV_FLAG_DEFAULT = 0 -} SceSaveDataDialogEnvFlag; +}; -typedef enum SceSaveDataDialogButtonId { +enum SceSaveDataDialogButtonId { SCE_SAVEDATA_DIALOG_BUTTON_ID_INVALID = 0, SCE_SAVEDATA_DIALOG_BUTTON_ID_OK = 1, SCE_SAVEDATA_DIALOG_BUTTON_ID_YES = 1, SCE_SAVEDATA_DIALOG_BUTTON_ID_NO = 2 -} SceSaveDataDialogButtonId; +}; -typedef enum SceSaveDataDialogProgressBarTarget { +enum SceSaveDataDialogProgressBarTarget { SCE_SAVEDATA_DIALOG_PROGRESSBAR_TARGET_BAR_DEFAULT = 0 -} SceSaveDataDialogProgressBarTarget; +}; + +enum SceCommonDialogStatus { + SCE_COMMON_DIALOG_STATUS_NONE = 0, + SCE_COMMON_DIALOG_STATUS_RUNNING = 1, + SCE_COMMON_DIALOG_STATUS_FINISHED = 2 +}; + +enum SceCommonDialogResult { + SCE_COMMON_DIALOG_RESULT_OK, + SCE_COMMON_DIALOG_RESULT_USER_CANCELED, + SCE_COMMON_DIALOG_RESULT_ABORTED +}; + +enum SceCommonDialogErrorCode { + SCE_COMMON_DIALOG_ERROR_BUSY = 0x80020401, + SCE_COMMON_DIALOG_ERROR_NULL = 0x80020402, + SCE_COMMON_DIALOG_ERROR_INVALID_ARGUMENT = 0x80020403, + SCE_COMMON_DIALOG_ERROR_NOT_RUNNING = 0x80020404, + SCE_COMMON_DIALOG_ERROR_NOT_SUPPORTED = 0x80020405, + SCE_COMMON_DIALOG_ERROR_ILLEGAL_CALLER_THREAD = 0x80020406, + SCE_COMMON_DIALOG_ERROR_NOT_CONFIGURED = 0x80020407, + SCE_COMMON_DIALOG_ERROR_NOT_AVAILABLE = 0x80020408, + SCE_COMMON_DIALOG_ERROR_NOT_FINISHED = 0x80020410, + SCE_COMMON_DIALOG_ERROR_NOT_IN_USE = 0x80020411, + SCE_COMMON_DIALOG_ERROR_INVALID_COLOR_FORMAT = 0x80020420, + SCE_COMMON_DIALOG_ERROR_INVALID_SURFACE_RESOLUTION = 0x80020421, + SCE_COMMON_DIALOG_ERROR_INVALID_SURFACE_STRIDE = 0x80020422, + SCE_COMMON_DIALOG_ERROR_INVALID_SURFACE_TYPE = 0x80020423, + SCE_COMMON_DIALOG_ERROR_WITHIN_SCENE = 0x80020424, + SCE_COMMON_DIALOG_ERROR_IME_IN_USE = 0x80020430, + SCE_COMMON_DIALOG_ERROR_INVALID_LANGUAGE = 0x80020431, + SCE_COMMON_DIALOG_ERROR_INVALID_ENTER_BUTTON_ASSIGN = 0x80020432, + SCE_COMMON_DIALOG_ERROR_INVALID_INFOBAR_PARAM = 0x80020433, + SCE_COMMON_DIALOG_ERROR_INVALID_BG_COLOR = 0x80020434, + SCE_COMMON_DIALOG_ERROR_INVALID_DIMMER_COLOR = 0x80020435, + SCE_COMMON_DIALOG_ERROR_GXM_IS_UNINITIALIZED = 0x80020436, + SCE_COMMON_DIALOG_ERROR_UNEXPECTED_FATAL = 0x8002047F +}; + +enum SceImeDialogButton { + SCE_IME_DIALOG_BUTTON_NONE = 0, + SCE_IME_DIALOG_BUTTON_CLOSE = 1, + SCE_IME_DIALOG_BUTTON_ENTER = 2 +}; + +enum SceImeOption { + SCE_IME_OPTION_MULTILINE = 0x01, + SCE_IME_OPTION_NO_AUTO_CAPITALIZATION = 0x02, + SCE_IME_OPTION_NO_ASSISTANCE = 0x04 +}; + +enum SceImeDialogDialogMode { + SCE_IME_DIALOG_DIALOG_MODE_DEFAULT = 0, + SCE_IME_DIALOG_DIALOG_MODE_WITH_CANCEL = 1 +}; + +enum SceMsgDialogButtonId { + SCE_MSG_DIALOG_BUTTON_ID_INVALID = 0, + SCE_MSG_DIALOG_BUTTON_ID_OK = 1, + SCE_MSG_DIALOG_BUTTON_ID_YES = 1, + SCE_MSG_DIALOG_BUTTON_ID_NO = 2, + SCE_MSG_DIALOG_BUTTON_ID_RETRY = 3, + SCE_MSG_DIALOG_BUTTON_ID_BUTTON1 = 1, + SCE_MSG_DIALOG_BUTTON_ID_BUTTON2 = 2, + SCE_MSG_DIALOG_BUTTON_ID_BUTTON3 = 3 +}; + +enum SceMsgDialogSystemMessageType { + SCE_MSG_DIALOG_SYSMSG_TYPE_INVALID = 0, + SCE_MSG_DIALOG_SYSMSG_TYPE_WAIT = 1, + SCE_MSG_DIALOG_SYSMSG_TYPE_NOSPACE = 2, + SCE_MSG_DIALOG_SYSMSG_TYPE_MAGNETIC_CALIBRATION = 3, + SCE_MSG_DIALOG_SYSMSG_TYPE_WAIT_SMALL = 5, + SCE_MSG_DIALOG_SYSMSG_TYPE_WAIT_CANCEL = 6, + SCE_MSG_DIALOG_SYSMSG_TYPE_NEED_MC_CONTINUE = 7, + SCE_MSG_DIALOG_SYSMSG_TYPE_NEED_MC_OPERATION = 8, + SCE_MSG_DIALOG_SYSMSG_TYPE_TRC_MIC_DISABLED = 100, + SCE_MSG_DIALOG_SYSMSG_TYPE_TRC_WIFI_REQUIRED_OPERATION = 101, + SCE_MSG_DIALOG_SYSMSG_TYPE_TRC_WIFI_REQUIRED_APPLICATION = 102, + SCE_MSG_DIALOG_SYSMSG_TYPE_TRC_EMPTY_STORE = 103 +}; + +enum SceMsgDialogProgressBarTarget { + SCE_MSG_DIALOG_PROGRESSBAR_TARGET_BAR_DEFAULT = 0 +}; + +enum SceMsgDialogButtonType { + SCE_MSG_DIALOG_BUTTON_TYPE_OK = 0, + SCE_MSG_DIALOG_BUTTON_TYPE_YESNO = 1, + SCE_MSG_DIALOG_BUTTON_TYPE_NONE = 2, + SCE_MSG_DIALOG_BUTTON_TYPE_OK_CANCEL = 3, + SCE_MSG_DIALOG_BUTTON_TYPE_CANCEL = 4, + SCE_MSG_DIALOG_BUTTON_TYPE_3BUTTONS = 5 +}; + +typedef enum SceMsgDialogMode { + SCE_MSG_DIALOG_MODE_INVALID = 0, + SCE_MSG_DIALOG_MODE_USER_MSG = 1, + SCE_MSG_DIALOG_MODE_SYSTEM_MSG = 2, + SCE_MSG_DIALOG_MODE_ERROR_CODE = 3, + SCE_MSG_DIALOG_MODE_PROGRESS_BAR = 4 +} SceMsgDialogMode; + +struct SceCommonDialogInfobarParam { + SceInt32 visibility; + SceInt32 color; + SceInt32 transparency; + SceUInt8 reserved[32]; +}; + +struct SceCommonDialogColor { + SceUInt8 r; + SceUInt8 g; + SceUInt8 b; + SceUInt8 a; +}; struct SceCommonDialogParam { Ptr infobarParam; @@ -120,16 +232,22 @@ struct SceImeDialogParam { Ptr initialText; Ptr inputTextBuffer; - emu::SceCommonDialogParam commonParam; + SceCommonDialogParam commonParam; SceUChar8 enterLabel; SceChar8 reserved[35]; }; +struct SceImeDialogResult { + SceInt32 result; + SceInt32 button; + SceChar8 reserved[28]; +}; + struct SceNpTrophySetupDialogParam { SceUInt32 sdkVersion; - emu::SceCommonDialogParam commonParam; + SceCommonDialogParam commonParam; SceUInt32 context; SceUInt32 options; @@ -146,6 +264,13 @@ struct SceMsgDialogButtonsParam { SceChar8 reserved[32]; }; +struct SceMsgDialogResult { + SceInt32 mode; + SceInt32 result; + SceInt32 buttonId; + SceChar8 reserved[32]; +}; + struct SceNpTrophySetupDialogResult { SceInt32 result; SceUInt8 reserved[128]; @@ -154,10 +279,21 @@ struct SceNpTrophySetupDialogResult { struct SceMsgDialogUserMessageParam { SceInt32 buttonType; const Ptr msg; - Ptr buttonParam; + Ptr buttonParam; SceChar8 reserved[28]; }; +struct SceMsgDialogSystemMessageParam { + SceInt32 sysMsgType; + SceInt32 value; + SceChar8 reserved[32]; +}; + +struct SceMsgDialogErrorCodeParam { + SceInt32 errorCode; + SceChar8 reserved[32]; +}; + struct SceMsgDialogProgressBarParam { SceInt32 barType; SceMsgDialogSystemMessageParam sysMsgParam; @@ -169,21 +305,21 @@ struct SceMsgDialogParam { SceUInt32 sdkVersion; SceCommonDialogParam commonParam; SceInt32 mode; - Ptr userMsgParam; + Ptr userMsgParam; Ptr sysMsgParam; Ptr errorCodeParam; - Ptr progBarParam; + Ptr progBarParam; SceInt32 flag; SceChar8 reserved[32]; }; struct SceSaveDataDialogFixedParam { - emu::SceAppUtilSaveDataSlot targetSlot; + SceAppUtilSaveDataSlot targetSlot; SceChar8 reserved[32]; }; struct SceSaveDataDialogListParam { - const Ptr slotList; + const Ptr slotList; SceUInt slotListSize; SceSaveDataDialogFocusPos focusPos; SceAppUtilSaveDataSlotId focusId; @@ -195,28 +331,32 @@ struct SceSaveDataDialogListParam { struct SceSaveDataDialogUserMessageParam { SceSaveDataDialogButtonType buttonType; const Ptr msg; - emu::SceAppUtilSaveDataSlot targetSlot; + SceAppUtilSaveDataSlot targetSlot; SceChar8 reserved[32]; }; struct SceSaveDataDialogSystemMessageParam { SceSaveDataDialogSystemMessageType sysMsgType; SceInt32 value; - emu::SceAppUtilSaveDataSlot targetSlot; + SceAppUtilSaveDataSlot targetSlot; SceChar8 reserved[32]; }; struct SceSaveDataDialogErrorCodeParam { SceInt32 errorCode; - emu::SceAppUtilSaveDataSlot targetSlot; + SceAppUtilSaveDataSlot targetSlot; SceChar8 reserved[32]; }; +struct SceAppUtilMountPoint { + int8_t data[16]; +}; + struct SceSaveDataDialogProgressBarParam { SceSaveDataDialogProgressBarType barType; SceSaveDataDialogSystemMessageParam sysMsgParam; const Ptr msg; - emu::SceAppUtilSaveDataSlot targetSlot; + SceAppUtilSaveDataSlot targetSlot; SceChar8 reserved[32]; }; @@ -237,13 +377,13 @@ struct SceSaveDataDialogParam { SceCommonDialogParam commonParam; SceSaveDataDialogMode mode; SceSaveDataDialogType dispType; - Ptr fixedParam; - Ptr listParam; - Ptr userMsgParam; - Ptr sysMsgParam; - Ptr errorCodeParam; - Ptr progressBarParam; - Ptr slotConfParam; + Ptr fixedParam; + Ptr listParam; + Ptr userMsgParam; + Ptr sysMsgParam; + Ptr errorCodeParam; + Ptr progressBarParam; + Ptr slotConfParam; SceSaveDataDialogEnvFlag flag; Ptr userdata; SceChar8 reserved[32]; @@ -251,7 +391,7 @@ struct SceSaveDataDialogParam { struct SceSaveDataDialogSlotInfo { SceUInt32 isExist; - emu::SceAppUtilSaveDataSlotParam *slotParam; + SceAppUtilSaveDataSlotParam *slotParam; SceChar8 reserved[32]; }; @@ -264,4 +404,3 @@ struct SceSaveDataDialogResult { Ptr userdata; SceChar8 reserved[32]; }; -} // namespace emu diff --git a/vita3k/gui/src/common_dialog.cpp b/vita3k/gui/src/common_dialog.cpp index ac20de9a2..4d068e851 100644 --- a/vita3k/gui/src/common_dialog.cpp +++ b/vita3k/gui/src/common_dialog.cpp @@ -26,7 +26,6 @@ #include namespace gui { - static void draw_ime_dialog(DialogState &common_dialog) { ImGui::SetNextWindowSize(ImVec2(0, 0)); ImGui::Begin(common_dialog.ime.title.c_str()); @@ -119,7 +118,7 @@ static void draw_savedata_dialog_list(DialogState &common_dialog, GuiState &gui, common_dialog.savedata.selected_save = loop_index; common_dialog.result = SCE_COMMON_DIALOG_RESULT_OK; common_dialog.status = SCE_COMMON_DIALOG_STATUS_FINISHED; - common_dialog.savedata.mode_to_display = emu::SCE_SAVEDATA_DIALOG_MODE_FIXED; + common_dialog.savedata.mode_to_display = SCE_SAVEDATA_DIALOG_MODE_FIXED; } ImGui::SameLine(); ImGui::SetWindowFontScale(1.5f); @@ -129,7 +128,7 @@ static void draw_savedata_dialog_list(DialogState &common_dialog, GuiState &gui, } ImGui::SetWindowFontScale(1.2f); switch (common_dialog.savedata.list_style) { - case emu::SCE_SAVEDATA_DIALOG_LIST_ITEM_STYLE_TITLE_DATE_SUBTITLE: + case SCE_SAVEDATA_DIALOG_LIST_ITEM_STYLE_TITLE_DATE_SUBTITLE: if (common_dialog.savedata.has_date[loop_index]) { ImGui::SetCursorPos(ImVec2(WINDOW_SIZE.x - WINDOW_SIZE.x + THUMBNAIL_SIZE.x + 10 + 5, WINDOW_SIZE.y - WINDOW_SIZE.y + (save_index * THUMBNAIL_SIZE.y) + 24)); ImGui::Text("%d/%02d/%02d %02d:%02d", common_dialog.savedata.date[loop_index].year, common_dialog.savedata.date[loop_index].month, @@ -140,7 +139,7 @@ static void draw_savedata_dialog_list(DialogState &common_dialog, GuiState &gui, ImGui::Text(common_dialog.savedata.subtitle[loop_index].c_str()); } break; - case emu::SCE_SAVEDATA_DIALOG_LIST_ITEM_STYLE_TITLE_SUBTITLE_DATE: + case SCE_SAVEDATA_DIALOG_LIST_ITEM_STYLE_TITLE_SUBTITLE_DATE: if (!common_dialog.savedata.subtitle[loop_index].empty()) { ImGui::SetCursorPos(ImVec2(WINDOW_SIZE.x - WINDOW_SIZE.x + THUMBNAIL_SIZE.x + 10 + 5, WINDOW_SIZE.y - WINDOW_SIZE.y + (save_index * THUMBNAIL_SIZE.y) + 24)); ImGui::Text(common_dialog.savedata.subtitle[loop_index].c_str()); @@ -151,7 +150,7 @@ static void draw_savedata_dialog_list(DialogState &common_dialog, GuiState &gui, common_dialog.savedata.date[loop_index].day, common_dialog.savedata.date[loop_index].hour, common_dialog.savedata.date[loop_index].minute); } break; - case emu::SCE_SAVEDATA_DIALOG_LIST_ITEM_STYLE_TITLE_DATE: + case SCE_SAVEDATA_DIALOG_LIST_ITEM_STYLE_TITLE_DATE: if (common_dialog.savedata.has_date[loop_index]) { ImGui::SetCursorPos(ImVec2(WINDOW_SIZE.x - WINDOW_SIZE.x + THUMBNAIL_SIZE.x + 10 + 5, WINDOW_SIZE.y - WINDOW_SIZE.y + (save_index * THUMBNAIL_SIZE.y) + 24)); ImGui::Text("%d/%02d/%02d %02d:%02d", common_dialog.savedata.date[loop_index].year, common_dialog.savedata.date[loop_index].month, @@ -191,14 +190,14 @@ static void draw_savedata_dialog(DialogState &common_dialog, GuiState &gui) { int existing_saves_count = 0; switch (common_dialog.savedata.mode_to_display) { - case emu::SCE_SAVEDATA_DIALOG_MODE_LIST: + case SCE_SAVEDATA_DIALOG_MODE_LIST: ImGui::SetNextWindowPosCenter(); ImGui::SetNextWindowSize(WINDOW_SIZE); ImGui::Begin("##Savedata Dialog", nullptr, ImGuiWindowFlags_NoDecoration); ImGui::SetWindowFontScale(1.5f); if (ImGui::Button("X", ImVec2(40, 30))) { common_dialog.status = SCE_COMMON_DIALOG_STATUS_FINISHED; - common_dialog.savedata.button_id = emu::SCE_SAVEDATA_DIALOG_BUTTON_ID_INVALID; + common_dialog.savedata.button_id = SCE_SAVEDATA_DIALOG_BUTTON_ID_INVALID; common_dialog.result = SCE_COMMON_DIALOG_RESULT_USER_CANCELED; } ImGui::SameLine(); @@ -208,11 +207,11 @@ static void draw_savedata_dialog(DialogState &common_dialog, GuiState &gui) { ImGui::BeginChild("##Selectables", ImVec2(0, 0), false, ImGuiWindowFlags_NoDecoration); for (int i = 0; i < common_dialog.savedata.slot_list_size; i++) { switch (common_dialog.savedata.display_type) { - case emu::SCE_SAVEDATA_DIALOG_TYPE_SAVE: + case SCE_SAVEDATA_DIALOG_TYPE_SAVE: draw_savedata_dialog_list(common_dialog, gui, WINDOW_SIZE, THUMBNAIL_SIZE, i, i); break; - case emu::SCE_SAVEDATA_DIALOG_TYPE_LOAD: - case emu::SCE_SAVEDATA_DIALOG_TYPE_DELETE: + case SCE_SAVEDATA_DIALOG_TYPE_LOAD: + case SCE_SAVEDATA_DIALOG_TYPE_DELETE: if (common_dialog.savedata.slot_info[i].isExist == 1) { draw_savedata_dialog_list(common_dialog, gui, WINDOW_SIZE, THUMBNAIL_SIZE, i, existing_saves_count); existing_saves_count++; @@ -220,7 +219,7 @@ static void draw_savedata_dialog(DialogState &common_dialog, GuiState &gui) { break; } } - if (common_dialog.savedata.display_type != emu::SCE_SAVEDATA_DIALOG_TYPE_SAVE) { + if (common_dialog.savedata.display_type != SCE_SAVEDATA_DIALOG_TYPE_SAVE) { if (existing_saves_count == 0) { ImGui::SetWindowFontScale(1.5f); ImGui::SetCursorPos(ImVec2(WINDOW_SIZE.x / 2 - ImGui::CalcTextSize("There is no saved data.").x / 2 - 10, WINDOW_SIZE.y / 2 - ImGui::CalcTextSize("There is no saved data.").y / 2 - 25)); @@ -231,7 +230,7 @@ static void draw_savedata_dialog(DialogState &common_dialog, GuiState &gui) { ImGui::End(); break; default: - case emu::SCE_SAVEDATA_DIALOG_MODE_FIXED: + case SCE_SAVEDATA_DIALOG_MODE_FIXED: ImGui::SetNextWindowPosCenter(); ImGui::SetNextWindowSize(WINDOW_SIZE); ImGui::Begin("##Savedata Dialog", nullptr, ImGuiWindowFlags_NoDecoration); diff --git a/vita3k/gui/src/trophy_unlocked.cpp b/vita3k/gui/src/trophy_unlocked.cpp index 7e084180c..87323ef81 100644 --- a/vita3k/gui/src/trophy_unlocked.cpp +++ b/vita3k/gui/src/trophy_unlocked.cpp @@ -64,22 +64,22 @@ static void draw_trophy_unlocked(GuiState &gui, HostState &host, NpTrophyUnlockC std::string trophy_kind_s = "?"; switch (callback_data.trophy_kind) { - case emu::np::trophy::TrophyType::PLATINUM: { + case np::trophy::TrophyType::PLATINUM: { trophy_kind_s = "Platinum"; break; } - case emu::np::trophy::TrophyType::BRONZE: { + case np::trophy::TrophyType::BRONZE: { trophy_kind_s = "Bronze"; break; } - case emu::np::trophy::TrophyType::SILVER: { + case np::trophy::TrophyType::SILVER: { trophy_kind_s = "Silver"; break; } - case emu::np::trophy::TrophyType::GOLD: { + case np::trophy::TrophyType::GOLD: { trophy_kind_s = "Gold"; break; } diff --git a/vita3k/gxm/CMakeLists.txt b/vita3k/gxm/CMakeLists.txt index 5f40258df..3516466ab 100644 --- a/vita3k/gxm/CMakeLists.txt +++ b/vita3k/gxm/CMakeLists.txt @@ -10,5 +10,5 @@ add_library( ) target_include_directories(gxm PUBLIC include) -target_link_libraries(gxm PUBLIC mem rpcs3 threads vita-headers) +target_link_libraries(gxm PUBLIC mem rpcs3 threads) target_link_libraries(gxm PRIVATE) diff --git a/vita3k/gxm/include/gxm/functions.h b/vita3k/gxm/include/gxm/functions.h index 22dc78785..bf9db8574 100644 --- a/vita3k/gxm/include/gxm/functions.h +++ b/vita3k/gxm/include/gxm/functions.h @@ -1,15 +1,14 @@ #pragma once #include -#include #include namespace gxm { // Textures. -size_t get_width(const emu::SceGxmTexture *texture); -size_t get_height(const emu::SceGxmTexture *texture); -SceGxmTextureFormat get_format(const emu::SceGxmTexture *texture); +size_t get_width(const SceGxmTexture *texture); +size_t get_height(const SceGxmTexture *texture); +SceGxmTextureFormat get_format(const SceGxmTexture *texture); SceGxmTextureBaseFormat get_base_format(SceGxmTextureFormat src); bool is_paletted_format(SceGxmTextureFormat src); bool is_yuv_format(SceGxmTextureFormat src); diff --git a/vita3k/gxm/include/gxm/state.h b/vita3k/gxm/include/gxm/state.h index 5b61c5e85..956727f24 100644 --- a/vita3k/gxm/include/gxm/state.h +++ b/vita3k/gxm/include/gxm/state.h @@ -3,7 +3,6 @@ #include #include -namespace emu { typedef void SceGxmDisplayQueueCallback(Ptr callbackData); struct SceGxmInitializeParams { @@ -13,7 +12,6 @@ struct SceGxmInitializeParams { uint32_t displayQueueCallbackDataSize = 0; uint32_t parameterBufferSize = 0; }; -} // namespace emu struct DisplayCallback { Address pc; @@ -23,7 +21,7 @@ struct DisplayCallback { }; struct GxmState { - emu::SceGxmInitializeParams params; + SceGxmInitializeParams params; bool is_in_scene = false; Queue display_queue; Ptr notification_region; diff --git a/vita3k/gxm/include/gxm/types.h b/vita3k/gxm/include/gxm/types.h index c45b3a565..9e5f98e00 100644 --- a/vita3k/gxm/include/gxm/types.h +++ b/vita3k/gxm/include/gxm/types.h @@ -1,8 +1,8 @@ #pragma once #include +#include -#include #include #include @@ -11,14 +11,955 @@ #include #define SCE_GXM_DEFAULT_UNIFORM_BUFFER_CONTAINER_INDEX 0xE +#define SCE_GXM_MAX_VERTEX_STREAMS 4 +#define SCE_GXM_MAX_TEXTURE_UNITS 16 #define SCE_GXM_REAL_MAX_UNIFORM_BUFFER 15 // Include default +#define SCE_GXM_TILE_SHIFTX 5U +#define SCE_GXM_TILE_SHIFTY 5U +#define SCE_GXM_TILE_SIZEX (1U << SCE_GXM_TILE_SHIFTX) +#define SCE_GXM_TILE_SIZEY (1U << SCE_GXM_TILE_SHIFTY) namespace renderer { struct FragmentProgram; struct VertexProgram; } // namespace renderer -namespace emu { +struct SceGxmSyncObject; + +enum SceGxmColorMask { + SCE_GXM_COLOR_MASK_NONE = 0, + SCE_GXM_COLOR_MASK_A = (1 << 0), + SCE_GXM_COLOR_MASK_R = (1 << 1), + SCE_GXM_COLOR_MASK_G = (1 << 2), + SCE_GXM_COLOR_MASK_B = (1 << 3), + SCE_GXM_COLOR_MASK_ALL = (SCE_GXM_COLOR_MASK_A | SCE_GXM_COLOR_MASK_B | SCE_GXM_COLOR_MASK_G | SCE_GXM_COLOR_MASK_R) +}; + +enum SceGxmBlendFunc { + SCE_GXM_BLEND_FUNC_NONE, + SCE_GXM_BLEND_FUNC_ADD, + SCE_GXM_BLEND_FUNC_SUBTRACT, + SCE_GXM_BLEND_FUNC_REVERSE_SUBTRACT, + SCE_GXM_BLEND_FUNC_MIN, + SCE_GXM_BLEND_FUNC_MAX +}; + +enum SceGxmBlendFactor { + SCE_GXM_BLEND_FACTOR_ZERO, + SCE_GXM_BLEND_FACTOR_ONE, + SCE_GXM_BLEND_FACTOR_SRC_COLOR, + SCE_GXM_BLEND_FACTOR_ONE_MINUS_SRC_COLOR, + SCE_GXM_BLEND_FACTOR_SRC_ALPHA, + SCE_GXM_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA, + SCE_GXM_BLEND_FACTOR_DST_COLOR, + SCE_GXM_BLEND_FACTOR_ONE_MINUS_DST_COLOR, + SCE_GXM_BLEND_FACTOR_DST_ALPHA, + SCE_GXM_BLEND_FACTOR_ONE_MINUS_DST_ALPHA, + SCE_GXM_BLEND_FACTOR_SRC_ALPHA_SATURATE, + SCE_GXM_BLEND_FACTOR_DST_ALPHA_SATURATE +}; + +enum SceGxmStencilFunc { + SCE_GXM_STENCIL_FUNC_NEVER = 0x00000000u, + SCE_GXM_STENCIL_FUNC_LESS = 0x02000000u, + SCE_GXM_STENCIL_FUNC_EQUAL = 0x04000000u, + SCE_GXM_STENCIL_FUNC_LESS_EQUAL = 0x06000000u, + SCE_GXM_STENCIL_FUNC_GREATER = 0x08000000u, + SCE_GXM_STENCIL_FUNC_NOT_EQUAL = 0x0A000000u, + SCE_GXM_STENCIL_FUNC_GREATER_EQUAL = 0x0C000000u, + SCE_GXM_STENCIL_FUNC_ALWAYS = 0x0E000000u +}; + +enum SceGxmStencilOp { + SCE_GXM_STENCIL_OP_KEEP = 0x00000000u, + SCE_GXM_STENCIL_OP_ZERO = 0x00000001u, + SCE_GXM_STENCIL_OP_REPLACE = 0x00000002u, + SCE_GXM_STENCIL_OP_INCR = 0x00000003u, + SCE_GXM_STENCIL_OP_DECR = 0x00000004u, + SCE_GXM_STENCIL_OP_INVERT = 0x00000005u, + SCE_GXM_STENCIL_OP_INCR_WRAP = 0x00000006u, + SCE_GXM_STENCIL_OP_DECR_WRAP = 0x00000007u +}; + +enum SceGxmViewportMode { + SCE_GXM_VIEWPORT_DISABLED = 0x00010000u, + SCE_GXM_VIEWPORT_ENABLED = 0x00000000u +}; + +enum SceGxmCullMode { + SCE_GXM_CULL_NONE = 0x00000000u, + SCE_GXM_CULL_CW = 0x00000001u, + SCE_GXM_CULL_CCW = 0x00000002u +}; + +enum SceGxmRegionClipMode { + SCE_GXM_REGION_CLIP_NONE = 0x00000000u, + SCE_GXM_REGION_CLIP_ALL = 0x40000000u, + SCE_GXM_REGION_CLIP_OUTSIDE = 0x80000000u, + SCE_GXM_REGION_CLIP_INSIDE = 0xC0000000u +}; + +enum SceGxmTwoSidedMode { + SCE_GXM_TWO_SIDED_DISABLED = 0x00000000u, + SCE_GXM_TWO_SIDED_ENABLED = 0x00000800u +}; + +enum SceGxmDepthFunc { + SCE_GXM_DEPTH_FUNC_NEVER = 0x00000000u, + SCE_GXM_DEPTH_FUNC_LESS = 0x00400000u, + SCE_GXM_DEPTH_FUNC_EQUAL = 0x00800000u, + SCE_GXM_DEPTH_FUNC_LESS_EQUAL = 0x00C00000u, + SCE_GXM_DEPTH_FUNC_GREATER = 0x01000000u, + SCE_GXM_DEPTH_FUNC_NOT_EQUAL = 0x01400000u, + SCE_GXM_DEPTH_FUNC_GREATER_EQUAL = 0x01800000u, + SCE_GXM_DEPTH_FUNC_ALWAYS = 0x01C00000u +}; + +enum SceGxmDepthWriteMode { + SCE_GXM_DEPTH_WRITE_DISABLED = 0x00100000u, + SCE_GXM_DEPTH_WRITE_ENABLED = 0x00000000u +}; + +enum SceGxmPolygonMode { + SCE_GXM_POLYGON_MODE_TRIANGLE_FILL = 0x00000000u, + SCE_GXM_POLYGON_MODE_LINE = 0x00008000u, + SCE_GXM_POLYGON_MODE_POINT_10UV = 0x00010000u, + SCE_GXM_POLYGON_MODE_POINT = 0x00018000u, + SCE_GXM_POLYGON_MODE_POINT_01UV = 0x00020000u, + SCE_GXM_POLYGON_MODE_TRIANGLE_LINE = 0x00028000u, + SCE_GXM_POLYGON_MODE_TRIANGLE_POINT = 0x00030000u +}; + +enum SceGxmPrimitiveType { + SCE_GXM_PRIMITIVE_TRIANGLES = 0x00000000u, + SCE_GXM_PRIMITIVE_LINES = 0x04000000u, + SCE_GXM_PRIMITIVE_POINTS = 0x08000000u, + SCE_GXM_PRIMITIVE_TRIANGLE_STRIP = 0x0C000000u, + SCE_GXM_PRIMITIVE_TRIANGLE_FAN = 0x10000000u, + SCE_GXM_PRIMITIVE_TRIANGLE_EDGES = 0x14000000u +}; + +enum SceGxmDepthStencilFormat { + SCE_GXM_DEPTH_STENCIL_FORMAT_DF32 = 0x00044000u, + SCE_GXM_DEPTH_STENCIL_FORMAT_S8 = 0x00022000u, + SCE_GXM_DEPTH_STENCIL_FORMAT_DF32_S8 = 0x00066000u, + SCE_GXM_DEPTH_STENCIL_FORMAT_DF32M = 0x000CC000U, + SCE_GXM_DEPTH_STENCIL_FORMAT_DF32M_S8 = 0x000EE000U, + SCE_GXM_DEPTH_STENCIL_FORMAT_S8D24 = 0x01266000u, + SCE_GXM_DEPTH_STENCIL_FORMAT_D16 = 0x02444000u +}; + +enum SceGxmIndexFormat { + SCE_GXM_INDEX_FORMAT_U16 = 0x00000000u, + SCE_GXM_INDEX_FORMAT_U32 = 0x01000000u +}; + +enum SceGxmParameterCategory { + SCE_GXM_PARAMETER_CATEGORY_ATTRIBUTE, + SCE_GXM_PARAMETER_CATEGORY_UNIFORM, + SCE_GXM_PARAMETER_CATEGORY_SAMPLER, + SCE_GXM_PARAMETER_CATEGORY_AUXILIARY_SURFACE, + SCE_GXM_PARAMETER_CATEGORY_UNIFORM_BUFFER +}; + +enum SceGxmParameterType { + SCE_GXM_PARAMETER_TYPE_F32, + SCE_GXM_PARAMETER_TYPE_F16, + SCE_GXM_PARAMETER_TYPE_C10, + SCE_GXM_PARAMETER_TYPE_U32, + SCE_GXM_PARAMETER_TYPE_S32, + SCE_GXM_PARAMETER_TYPE_U16, + SCE_GXM_PARAMETER_TYPE_S16, + SCE_GXM_PARAMETER_TYPE_U8, + SCE_GXM_PARAMETER_TYPE_S8, + SCE_GXM_PARAMETER_TYPE_AGGREGATE +}; + +enum SceGxmParameterSemantic { + SCE_GXM_PARAMETER_SEMANTIC_NONE, + SCE_GXM_PARAMETER_SEMANTIC_ATTR, + SCE_GXM_PARAMETER_SEMANTIC_BCOL, + SCE_GXM_PARAMETER_SEMANTIC_BINORMAL, + SCE_GXM_PARAMETER_SEMANTIC_BLENDINDICES, + SCE_GXM_PARAMETER_SEMANTIC_BLENDWEIGHT, + SCE_GXM_PARAMETER_SEMANTIC_COLOR, + SCE_GXM_PARAMETER_SEMANTIC_DIFFUSE, + SCE_GXM_PARAMETER_SEMANTIC_FOGCOORD, + SCE_GXM_PARAMETER_SEMANTIC_NORMAL, + SCE_GXM_PARAMETER_SEMANTIC_POINTSIZE, + SCE_GXM_PARAMETER_SEMANTIC_POSITION, + SCE_GXM_PARAMETER_SEMANTIC_SPECULAR, + SCE_GXM_PARAMETER_SEMANTIC_TANGENT, + SCE_GXM_PARAMETER_SEMANTIC_TEXCOORD +}; + +enum SceGxmTextureType { + SCE_GXM_TEXTURE_SWIZZLED = 0x00000000u, + SCE_GXM_TEXTURE_CUBE = 0x40000000u, + SCE_GXM_TEXTURE_LINEAR = 0x60000000u, + SCE_GXM_TEXTURE_TILED = 0x80000000u, + SCE_GXM_TEXTURE_SWIZZLED_ARBITRARY = 0xA0000000U, + SCE_GXM_TEXTURE_LINEAR_STRIDED = 0xC0000000u, + SCE_GXM_TEXTURE_CUBE_ARBITRARY = 0xE0000000U +}; + +enum SceGxmTextureSwizzle4Mode { + SCE_GXM_TEXTURE_SWIZZLE4_ABGR = 0x00000000u, + SCE_GXM_TEXTURE_SWIZZLE4_ARGB = 0x00001000u, + SCE_GXM_TEXTURE_SWIZZLE4_RGBA = 0x00002000u, + SCE_GXM_TEXTURE_SWIZZLE4_BGRA = 0x00003000u, + SCE_GXM_TEXTURE_SWIZZLE4_1BGR = 0x00004000u, + SCE_GXM_TEXTURE_SWIZZLE4_1RGB = 0x00005000u, + SCE_GXM_TEXTURE_SWIZZLE4_RGB1 = 0x00006000u, + SCE_GXM_TEXTURE_SWIZZLE4_BGR1 = 0x00007000u +}; + +enum SceGxmTextureSwizzle3Mode { + SCE_GXM_TEXTURE_SWIZZLE3_BGR = 0x00000000u, + SCE_GXM_TEXTURE_SWIZZLE3_RGB = 0x00001000u +}; + +enum SceGxmTextureSwizzle2Mode { + SCE_GXM_TEXTURE_SWIZZLE2_GR = 0x00000000u, + SCE_GXM_TEXTURE_SWIZZLE2_00GR = 0x00001000u, + SCE_GXM_TEXTURE_SWIZZLE2_GRRR = 0x00002000u, + SCE_GXM_TEXTURE_SWIZZLE2_RGGG = 0x00003000u, + SCE_GXM_TEXTURE_SWIZZLE2_GRGR = 0x00004000u, + SCE_GXM_TEXTURE_SWIZZLE2_00RG = 0x00005000u +}; + +enum SceGxmTextureSwizzle2ModeAlt { + SCE_GXM_TEXTURE_SWIZZLE2_SD = 0x00000000u, + SCE_GXM_TEXTURE_SWIZZLE2_DS = 0x00001000u +}; + +enum SceGxmTextureSwizzle1Mode { + SCE_GXM_TEXTURE_SWIZZLE1_R = 0x00000000u, + SCE_GXM_TEXTURE_SWIZZLE1_000R = 0x00001000u, + SCE_GXM_TEXTURE_SWIZZLE1_111R = 0x00002000u, + SCE_GXM_TEXTURE_SWIZZLE1_RRRR = 0x00003000u, + SCE_GXM_TEXTURE_SWIZZLE1_0RRR = 0x00004000u, + SCE_GXM_TEXTURE_SWIZZLE1_1RRR = 0x00005000u, + SCE_GXM_TEXTURE_SWIZZLE1_R000 = 0x00006000u, + SCE_GXM_TEXTURE_SWIZZLE1_R111 = 0x00007000u +}; + +enum SceGxmTextureSwizzleYUV422Mode { + SCE_GXM_TEXTURE_SWIZZLE_YUYV_CSC0 = 0x00000000u, + SCE_GXM_TEXTURE_SWIZZLE_YVYU_CSC0 = 0x00001000u, + SCE_GXM_TEXTURE_SWIZZLE_UYVY_CSC0 = 0x00002000u, + SCE_GXM_TEXTURE_SWIZZLE_VYUY_CSC0 = 0x00003000u, + SCE_GXM_TEXTURE_SWIZZLE_YUYV_CSC1 = 0x00004000u, + SCE_GXM_TEXTURE_SWIZZLE_YVYU_CSC1 = 0x00005000u, + SCE_GXM_TEXTURE_SWIZZLE_UYVY_CSC1 = 0x00006000u, + SCE_GXM_TEXTURE_SWIZZLE_VYUY_CSC1 = 0x00007000u +}; + +enum SceGxmTextureSwizzleYUV420Mode { + SCE_GXM_TEXTURE_SWIZZLE_YUV_CSC0 = 0x00000000u, + SCE_GXM_TEXTURE_SWIZZLE_YVU_CSC0 = 0x00001000u, + SCE_GXM_TEXTURE_SWIZZLE_YUV_CSC1 = 0x00002000u, + SCE_GXM_TEXTURE_SWIZZLE_YVU_CSC1 = 0x00003000u +}; + +enum SceGxmTextureFilter { + SCE_GXM_TEXTURE_FILTER_POINT = 0x00000000u, + SCE_GXM_TEXTURE_FILTER_LINEAR = 0x00000001u +}; + +enum SceGxmTextureMipFilter { + SCE_GXM_TEXTURE_MIP_FILTER_DISABLED = 0x00000000u, + SCE_GXM_TEXTURE_MIP_FILTER_ENABLED = 0x00000200u +}; + +enum SceGxmTextureAddrMode { + SCE_GXM_TEXTURE_ADDR_REPEAT = 0x00000000u, + SCE_GXM_TEXTURE_ADDR_MIRROR = 0x00000001u, + SCE_GXM_TEXTURE_ADDR_CLAMP = 0x00000002u, + SCE_GXM_TEXTURE_ADDR_MIRROR_CLAMP = 0x00000003u, + SCE_GXM_TEXTURE_ADDR_REPEAT_IGNORE_BORDER = 0x00000004u, + SCE_GXM_TEXTURE_ADDR_CLAMP_FULL_BORDER = 0x00000005u, + SCE_GXM_TEXTURE_ADDR_CLAMP_IGNORE_BORDER = 0x00000006u, + SCE_GXM_TEXTURE_ADDR_CLAMP_HALF_BORDER = 0x00000007u +}; + +struct SceGxmRenderTargetParams { + uint32_t flags; + uint16_t width; + uint16_t height; + uint16_t scenesPerFrame; + uint16_t multisampleMode; + uint32_t multisampleLocations; + SceUID driverMemBlock; +}; + +enum SceGxmTextureBaseFormat { + SCE_GXM_TEXTURE_BASE_FORMAT_U8 = 0x00000000, + SCE_GXM_TEXTURE_BASE_FORMAT_S8 = 0x01000000, + SCE_GXM_TEXTURE_BASE_FORMAT_U4U4U4U4 = 0x02000000, + SCE_GXM_TEXTURE_BASE_FORMAT_U8U3U3U2 = 0x03000000, + SCE_GXM_TEXTURE_BASE_FORMAT_U1U5U5U5 = 0x04000000, + SCE_GXM_TEXTURE_BASE_FORMAT_U5U6U5 = 0x05000000, + SCE_GXM_TEXTURE_BASE_FORMAT_S5S5U6 = 0x06000000, + SCE_GXM_TEXTURE_BASE_FORMAT_U8U8 = 0x07000000, + SCE_GXM_TEXTURE_BASE_FORMAT_S8S8 = 0x08000000, + SCE_GXM_TEXTURE_BASE_FORMAT_U16 = 0x09000000, + SCE_GXM_TEXTURE_BASE_FORMAT_S16 = 0x0A000000, + SCE_GXM_TEXTURE_BASE_FORMAT_F16 = 0x0B000000, + SCE_GXM_TEXTURE_BASE_FORMAT_U8U8U8U8 = 0x0C000000, + SCE_GXM_TEXTURE_BASE_FORMAT_S8S8S8S8 = 0x0D000000, + SCE_GXM_TEXTURE_BASE_FORMAT_U2U10U10U10 = 0x0E000000, + SCE_GXM_TEXTURE_BASE_FORMAT_U16U16 = 0x0F000000, + SCE_GXM_TEXTURE_BASE_FORMAT_S16S16 = 0x10000000, + SCE_GXM_TEXTURE_BASE_FORMAT_F16F16 = 0x11000000, + SCE_GXM_TEXTURE_BASE_FORMAT_F32 = 0x12000000, + SCE_GXM_TEXTURE_BASE_FORMAT_F32M = 0x13000000, + SCE_GXM_TEXTURE_BASE_FORMAT_X8S8S8U8 = 0x14000000, + SCE_GXM_TEXTURE_BASE_FORMAT_X8U24 = 0x15000000, + SCE_GXM_TEXTURE_BASE_FORMAT_U32 = 0x17000000, + SCE_GXM_TEXTURE_BASE_FORMAT_S32 = 0x18000000, + SCE_GXM_TEXTURE_BASE_FORMAT_SE5M9M9M9 = 0x19000000, + SCE_GXM_TEXTURE_BASE_FORMAT_F11F11F10 = 0x1A000000, + SCE_GXM_TEXTURE_BASE_FORMAT_F16F16F16F16 = 0x1B000000, + SCE_GXM_TEXTURE_BASE_FORMAT_U16U16U16U16 = 0x1C000000, + SCE_GXM_TEXTURE_BASE_FORMAT_S16S16S16S16 = 0x1D000000, + SCE_GXM_TEXTURE_BASE_FORMAT_F32F32 = 0x1E000000, + SCE_GXM_TEXTURE_BASE_FORMAT_U32U32 = 0x1F000000, + SCE_GXM_TEXTURE_BASE_FORMAT_PVRT2BPP = 0x80000000, + SCE_GXM_TEXTURE_BASE_FORMAT_PVRT4BPP = 0x81000000, + SCE_GXM_TEXTURE_BASE_FORMAT_PVRTII2BPP = 0x82000000, + SCE_GXM_TEXTURE_BASE_FORMAT_PVRTII4BPP = 0x83000000, + SCE_GXM_TEXTURE_BASE_FORMAT_UBC1 = 0x85000000, + SCE_GXM_TEXTURE_BASE_FORMAT_UBC2 = 0x86000000, + SCE_GXM_TEXTURE_BASE_FORMAT_UBC3 = 0x87000000, + SCE_GXM_TEXTURE_BASE_FORMAT_YUV420P2 = 0x90000000, + SCE_GXM_TEXTURE_BASE_FORMAT_YUV420P3 = 0x91000000, + SCE_GXM_TEXTURE_BASE_FORMAT_YUV422 = 0x92000000, + SCE_GXM_TEXTURE_BASE_FORMAT_P4 = 0x94000000, + SCE_GXM_TEXTURE_BASE_FORMAT_P8 = 0x95000000, + SCE_GXM_TEXTURE_BASE_FORMAT_U8U8U8 = 0x98000000, + SCE_GXM_TEXTURE_BASE_FORMAT_S8S8S8 = 0x99000000, + SCE_GXM_TEXTURE_BASE_FORMAT_U2F10F10F10 = 0x9A000000 +}; + +enum SceGxmTextureFormat { + // Supported formats + + SCE_GXM_TEXTURE_FORMAT_U8_000R = SCE_GXM_TEXTURE_BASE_FORMAT_U8 | SCE_GXM_TEXTURE_SWIZZLE1_000R, + SCE_GXM_TEXTURE_FORMAT_U8_111R = SCE_GXM_TEXTURE_BASE_FORMAT_U8 | SCE_GXM_TEXTURE_SWIZZLE1_111R, + SCE_GXM_TEXTURE_FORMAT_U8_RRRR = SCE_GXM_TEXTURE_BASE_FORMAT_U8 | SCE_GXM_TEXTURE_SWIZZLE1_RRRR, + SCE_GXM_TEXTURE_FORMAT_U8_0RRR = SCE_GXM_TEXTURE_BASE_FORMAT_U8 | SCE_GXM_TEXTURE_SWIZZLE1_0RRR, + SCE_GXM_TEXTURE_FORMAT_U8_1RRR = SCE_GXM_TEXTURE_BASE_FORMAT_U8 | SCE_GXM_TEXTURE_SWIZZLE1_1RRR, + SCE_GXM_TEXTURE_FORMAT_U8_R000 = SCE_GXM_TEXTURE_BASE_FORMAT_U8 | SCE_GXM_TEXTURE_SWIZZLE1_R000, + SCE_GXM_TEXTURE_FORMAT_U8_R111 = SCE_GXM_TEXTURE_BASE_FORMAT_U8 | SCE_GXM_TEXTURE_SWIZZLE1_R111, + SCE_GXM_TEXTURE_FORMAT_U8_R = SCE_GXM_TEXTURE_BASE_FORMAT_U8 | SCE_GXM_TEXTURE_SWIZZLE1_R, + + SCE_GXM_TEXTURE_FORMAT_S8_000R = SCE_GXM_TEXTURE_BASE_FORMAT_S8 | SCE_GXM_TEXTURE_SWIZZLE1_000R, + SCE_GXM_TEXTURE_FORMAT_S8_111R = SCE_GXM_TEXTURE_BASE_FORMAT_S8 | SCE_GXM_TEXTURE_SWIZZLE1_111R, + SCE_GXM_TEXTURE_FORMAT_S8_RRRR = SCE_GXM_TEXTURE_BASE_FORMAT_S8 | SCE_GXM_TEXTURE_SWIZZLE1_RRRR, + SCE_GXM_TEXTURE_FORMAT_S8_0RRR = SCE_GXM_TEXTURE_BASE_FORMAT_S8 | SCE_GXM_TEXTURE_SWIZZLE1_0RRR, + SCE_GXM_TEXTURE_FORMAT_S8_1RRR = SCE_GXM_TEXTURE_BASE_FORMAT_S8 | SCE_GXM_TEXTURE_SWIZZLE1_1RRR, + SCE_GXM_TEXTURE_FORMAT_S8_R000 = SCE_GXM_TEXTURE_BASE_FORMAT_S8 | SCE_GXM_TEXTURE_SWIZZLE1_R000, + SCE_GXM_TEXTURE_FORMAT_S8_R111 = SCE_GXM_TEXTURE_BASE_FORMAT_S8 | SCE_GXM_TEXTURE_SWIZZLE1_R111, + SCE_GXM_TEXTURE_FORMAT_S8_R = SCE_GXM_TEXTURE_BASE_FORMAT_S8 | SCE_GXM_TEXTURE_SWIZZLE1_R, + + SCE_GXM_TEXTURE_FORMAT_U4U4U4U4_ABGR = SCE_GXM_TEXTURE_BASE_FORMAT_U4U4U4U4 | SCE_GXM_TEXTURE_SWIZZLE4_ABGR, + SCE_GXM_TEXTURE_FORMAT_U4U4U4U4_ARGB = SCE_GXM_TEXTURE_BASE_FORMAT_U4U4U4U4 | SCE_GXM_TEXTURE_SWIZZLE4_ARGB, + SCE_GXM_TEXTURE_FORMAT_U4U4U4U4_RGBA = SCE_GXM_TEXTURE_BASE_FORMAT_U4U4U4U4 | SCE_GXM_TEXTURE_SWIZZLE4_RGBA, + SCE_GXM_TEXTURE_FORMAT_U4U4U4U4_BGRA = SCE_GXM_TEXTURE_BASE_FORMAT_U4U4U4U4 | SCE_GXM_TEXTURE_SWIZZLE4_BGRA, + SCE_GXM_TEXTURE_FORMAT_X4U4U4U4_1BGR = SCE_GXM_TEXTURE_BASE_FORMAT_U4U4U4U4 | SCE_GXM_TEXTURE_SWIZZLE4_1BGR, + SCE_GXM_TEXTURE_FORMAT_X4U4U4U4_1RGB = SCE_GXM_TEXTURE_BASE_FORMAT_U4U4U4U4 | SCE_GXM_TEXTURE_SWIZZLE4_1RGB, + SCE_GXM_TEXTURE_FORMAT_U4U4U4X4_RGB1 = SCE_GXM_TEXTURE_BASE_FORMAT_U4U4U4U4 | SCE_GXM_TEXTURE_SWIZZLE4_RGB1, + SCE_GXM_TEXTURE_FORMAT_U4U4U4X4_BGR1 = SCE_GXM_TEXTURE_BASE_FORMAT_U4U4U4U4 | SCE_GXM_TEXTURE_SWIZZLE4_BGR1, + + SCE_GXM_TEXTURE_FORMAT_U8U3U3U2_ARGB = SCE_GXM_TEXTURE_BASE_FORMAT_U8U3U3U2, + + SCE_GXM_TEXTURE_FORMAT_U1U5U5U5_ABGR = SCE_GXM_TEXTURE_BASE_FORMAT_U1U5U5U5 | SCE_GXM_TEXTURE_SWIZZLE4_ABGR, + SCE_GXM_TEXTURE_FORMAT_U1U5U5U5_ARGB = SCE_GXM_TEXTURE_BASE_FORMAT_U1U5U5U5 | SCE_GXM_TEXTURE_SWIZZLE4_ARGB, + SCE_GXM_TEXTURE_FORMAT_U5U5U5U1_RGBA = SCE_GXM_TEXTURE_BASE_FORMAT_U1U5U5U5 | SCE_GXM_TEXTURE_SWIZZLE4_RGBA, + SCE_GXM_TEXTURE_FORMAT_U5U5U5U1_BGRA = SCE_GXM_TEXTURE_BASE_FORMAT_U1U5U5U5 | SCE_GXM_TEXTURE_SWIZZLE4_BGRA, + SCE_GXM_TEXTURE_FORMAT_X1U5U5U5_1BGR = SCE_GXM_TEXTURE_BASE_FORMAT_U1U5U5U5 | SCE_GXM_TEXTURE_SWIZZLE4_1BGR, + SCE_GXM_TEXTURE_FORMAT_X1U5U5U5_1RGB = SCE_GXM_TEXTURE_BASE_FORMAT_U1U5U5U5 | SCE_GXM_TEXTURE_SWIZZLE4_1RGB, + SCE_GXM_TEXTURE_FORMAT_U5U5U5X1_RGB1 = SCE_GXM_TEXTURE_BASE_FORMAT_U1U5U5U5 | SCE_GXM_TEXTURE_SWIZZLE4_RGB1, + SCE_GXM_TEXTURE_FORMAT_U5U5U5X1_BGR1 = SCE_GXM_TEXTURE_BASE_FORMAT_U1U5U5U5 | SCE_GXM_TEXTURE_SWIZZLE4_BGR1, + + SCE_GXM_TEXTURE_FORMAT_U5U6U5_BGR = SCE_GXM_TEXTURE_BASE_FORMAT_U5U6U5 | SCE_GXM_TEXTURE_SWIZZLE3_BGR, + SCE_GXM_TEXTURE_FORMAT_U5U6U5_RGB = SCE_GXM_TEXTURE_BASE_FORMAT_U5U6U5 | SCE_GXM_TEXTURE_SWIZZLE3_RGB, + + SCE_GXM_TEXTURE_FORMAT_U6S5S5_BGR = SCE_GXM_TEXTURE_BASE_FORMAT_S5S5U6 | SCE_GXM_TEXTURE_SWIZZLE3_BGR, + SCE_GXM_TEXTURE_FORMAT_S5S5U6_RGB = SCE_GXM_TEXTURE_BASE_FORMAT_S5S5U6 | SCE_GXM_TEXTURE_SWIZZLE3_RGB, + + SCE_GXM_TEXTURE_FORMAT_U8U8_00GR = SCE_GXM_TEXTURE_BASE_FORMAT_U8U8 | SCE_GXM_TEXTURE_SWIZZLE2_00GR, + SCE_GXM_TEXTURE_FORMAT_U8U8_GRRR = SCE_GXM_TEXTURE_BASE_FORMAT_U8U8 | SCE_GXM_TEXTURE_SWIZZLE2_GRRR, + SCE_GXM_TEXTURE_FORMAT_U8U8_RGGG = SCE_GXM_TEXTURE_BASE_FORMAT_U8U8 | SCE_GXM_TEXTURE_SWIZZLE2_RGGG, + SCE_GXM_TEXTURE_FORMAT_U8U8_GRGR = SCE_GXM_TEXTURE_BASE_FORMAT_U8U8 | SCE_GXM_TEXTURE_SWIZZLE2_GRGR, + SCE_GXM_TEXTURE_FORMAT_U8U8_00RG = SCE_GXM_TEXTURE_BASE_FORMAT_U8U8 | SCE_GXM_TEXTURE_SWIZZLE2_00RG, + SCE_GXM_TEXTURE_FORMAT_U8U8_GR = SCE_GXM_TEXTURE_BASE_FORMAT_U8U8 | SCE_GXM_TEXTURE_SWIZZLE2_GR, + + SCE_GXM_TEXTURE_FORMAT_S8S8_00GR = SCE_GXM_TEXTURE_BASE_FORMAT_S8S8 | SCE_GXM_TEXTURE_SWIZZLE2_00GR, + SCE_GXM_TEXTURE_FORMAT_S8S8_GRRR = SCE_GXM_TEXTURE_BASE_FORMAT_S8S8 | SCE_GXM_TEXTURE_SWIZZLE2_GRRR, + SCE_GXM_TEXTURE_FORMAT_S8S8_RGGG = SCE_GXM_TEXTURE_BASE_FORMAT_S8S8 | SCE_GXM_TEXTURE_SWIZZLE2_RGGG, + SCE_GXM_TEXTURE_FORMAT_S8S8_GRGR = SCE_GXM_TEXTURE_BASE_FORMAT_S8S8 | SCE_GXM_TEXTURE_SWIZZLE2_GRGR, + SCE_GXM_TEXTURE_FORMAT_S8S8_00RG = SCE_GXM_TEXTURE_BASE_FORMAT_S8S8 | SCE_GXM_TEXTURE_SWIZZLE2_00RG, + SCE_GXM_TEXTURE_FORMAT_S8S8_GR = SCE_GXM_TEXTURE_BASE_FORMAT_S8S8 | SCE_GXM_TEXTURE_SWIZZLE2_GR, + + SCE_GXM_TEXTURE_FORMAT_U16_000R = SCE_GXM_TEXTURE_BASE_FORMAT_U16 | SCE_GXM_TEXTURE_SWIZZLE1_000R, + SCE_GXM_TEXTURE_FORMAT_U16_111R = SCE_GXM_TEXTURE_BASE_FORMAT_U16 | SCE_GXM_TEXTURE_SWIZZLE1_111R, + SCE_GXM_TEXTURE_FORMAT_U16_RRRR = SCE_GXM_TEXTURE_BASE_FORMAT_U16 | SCE_GXM_TEXTURE_SWIZZLE1_RRRR, + SCE_GXM_TEXTURE_FORMAT_U16_0RRR = SCE_GXM_TEXTURE_BASE_FORMAT_U16 | SCE_GXM_TEXTURE_SWIZZLE1_0RRR, + SCE_GXM_TEXTURE_FORMAT_U16_1RRR = SCE_GXM_TEXTURE_BASE_FORMAT_U16 | SCE_GXM_TEXTURE_SWIZZLE1_1RRR, + SCE_GXM_TEXTURE_FORMAT_U16_R000 = SCE_GXM_TEXTURE_BASE_FORMAT_U16 | SCE_GXM_TEXTURE_SWIZZLE1_R000, + SCE_GXM_TEXTURE_FORMAT_U16_R111 = SCE_GXM_TEXTURE_BASE_FORMAT_U16 | SCE_GXM_TEXTURE_SWIZZLE1_R111, + SCE_GXM_TEXTURE_FORMAT_U16_R = SCE_GXM_TEXTURE_BASE_FORMAT_U16 | SCE_GXM_TEXTURE_SWIZZLE1_R, + + SCE_GXM_TEXTURE_FORMAT_S16_000R = SCE_GXM_TEXTURE_BASE_FORMAT_S16 | SCE_GXM_TEXTURE_SWIZZLE1_000R, + SCE_GXM_TEXTURE_FORMAT_S16_111R = SCE_GXM_TEXTURE_BASE_FORMAT_S16 | SCE_GXM_TEXTURE_SWIZZLE1_111R, + SCE_GXM_TEXTURE_FORMAT_S16_RRRR = SCE_GXM_TEXTURE_BASE_FORMAT_S16 | SCE_GXM_TEXTURE_SWIZZLE1_RRRR, + SCE_GXM_TEXTURE_FORMAT_S16_0RRR = SCE_GXM_TEXTURE_BASE_FORMAT_S16 | SCE_GXM_TEXTURE_SWIZZLE1_0RRR, + SCE_GXM_TEXTURE_FORMAT_S16_1RRR = SCE_GXM_TEXTURE_BASE_FORMAT_S16 | SCE_GXM_TEXTURE_SWIZZLE1_1RRR, + SCE_GXM_TEXTURE_FORMAT_S16_R000 = SCE_GXM_TEXTURE_BASE_FORMAT_S16 | SCE_GXM_TEXTURE_SWIZZLE1_R000, + SCE_GXM_TEXTURE_FORMAT_S16_R111 = SCE_GXM_TEXTURE_BASE_FORMAT_S16 | SCE_GXM_TEXTURE_SWIZZLE1_R111, + SCE_GXM_TEXTURE_FORMAT_S16_R = SCE_GXM_TEXTURE_BASE_FORMAT_S16 | SCE_GXM_TEXTURE_SWIZZLE1_R, + + SCE_GXM_TEXTURE_FORMAT_F16_000R = SCE_GXM_TEXTURE_BASE_FORMAT_F16 | SCE_GXM_TEXTURE_SWIZZLE1_000R, + SCE_GXM_TEXTURE_FORMAT_F16_111R = SCE_GXM_TEXTURE_BASE_FORMAT_F16 | SCE_GXM_TEXTURE_SWIZZLE1_111R, + SCE_GXM_TEXTURE_FORMAT_F16_RRRR = SCE_GXM_TEXTURE_BASE_FORMAT_F16 | SCE_GXM_TEXTURE_SWIZZLE1_RRRR, + SCE_GXM_TEXTURE_FORMAT_F16_0RRR = SCE_GXM_TEXTURE_BASE_FORMAT_F16 | SCE_GXM_TEXTURE_SWIZZLE1_0RRR, + SCE_GXM_TEXTURE_FORMAT_F16_1RRR = SCE_GXM_TEXTURE_BASE_FORMAT_F16 | SCE_GXM_TEXTURE_SWIZZLE1_1RRR, + SCE_GXM_TEXTURE_FORMAT_F16_R000 = SCE_GXM_TEXTURE_BASE_FORMAT_F16 | SCE_GXM_TEXTURE_SWIZZLE1_R000, + SCE_GXM_TEXTURE_FORMAT_F16_R111 = SCE_GXM_TEXTURE_BASE_FORMAT_F16 | SCE_GXM_TEXTURE_SWIZZLE1_R111, + SCE_GXM_TEXTURE_FORMAT_F16_R = SCE_GXM_TEXTURE_BASE_FORMAT_F16 | SCE_GXM_TEXTURE_SWIZZLE1_R, + + SCE_GXM_TEXTURE_FORMAT_U8U8U8U8_ABGR = SCE_GXM_TEXTURE_BASE_FORMAT_U8U8U8U8 | SCE_GXM_TEXTURE_SWIZZLE4_ABGR, + SCE_GXM_TEXTURE_FORMAT_U8U8U8U8_ARGB = SCE_GXM_TEXTURE_BASE_FORMAT_U8U8U8U8 | SCE_GXM_TEXTURE_SWIZZLE4_ARGB, + SCE_GXM_TEXTURE_FORMAT_U8U8U8U8_RGBA = SCE_GXM_TEXTURE_BASE_FORMAT_U8U8U8U8 | SCE_GXM_TEXTURE_SWIZZLE4_RGBA, + SCE_GXM_TEXTURE_FORMAT_U8U8U8U8_BGRA = SCE_GXM_TEXTURE_BASE_FORMAT_U8U8U8U8 | SCE_GXM_TEXTURE_SWIZZLE4_BGRA, + SCE_GXM_TEXTURE_FORMAT_X8U8U8U8_1BGR = SCE_GXM_TEXTURE_BASE_FORMAT_U8U8U8U8 | SCE_GXM_TEXTURE_SWIZZLE4_1BGR, + SCE_GXM_TEXTURE_FORMAT_X8U8U8U8_1RGB = SCE_GXM_TEXTURE_BASE_FORMAT_U8U8U8U8 | SCE_GXM_TEXTURE_SWIZZLE4_1RGB, + SCE_GXM_TEXTURE_FORMAT_U8U8U8X8_RGB1 = SCE_GXM_TEXTURE_BASE_FORMAT_U8U8U8U8 | SCE_GXM_TEXTURE_SWIZZLE4_RGB1, + SCE_GXM_TEXTURE_FORMAT_U8U8U8X8_BGR1 = SCE_GXM_TEXTURE_BASE_FORMAT_U8U8U8U8 | SCE_GXM_TEXTURE_SWIZZLE4_BGR1, + + SCE_GXM_TEXTURE_FORMAT_S8S8S8S8_ABGR = SCE_GXM_TEXTURE_BASE_FORMAT_S8S8S8S8 | SCE_GXM_TEXTURE_SWIZZLE4_ABGR, + SCE_GXM_TEXTURE_FORMAT_S8S8S8S8_ARGB = SCE_GXM_TEXTURE_BASE_FORMAT_S8S8S8S8 | SCE_GXM_TEXTURE_SWIZZLE4_ARGB, + SCE_GXM_TEXTURE_FORMAT_S8S8S8S8_RGBA = SCE_GXM_TEXTURE_BASE_FORMAT_S8S8S8S8 | SCE_GXM_TEXTURE_SWIZZLE4_RGBA, + SCE_GXM_TEXTURE_FORMAT_S8S8S8S8_BGRA = SCE_GXM_TEXTURE_BASE_FORMAT_S8S8S8S8 | SCE_GXM_TEXTURE_SWIZZLE4_BGRA, + SCE_GXM_TEXTURE_FORMAT_X8S8S8S8_1BGR = SCE_GXM_TEXTURE_BASE_FORMAT_S8S8S8S8 | SCE_GXM_TEXTURE_SWIZZLE4_1BGR, + SCE_GXM_TEXTURE_FORMAT_X8S8S8S8_1RGB = SCE_GXM_TEXTURE_BASE_FORMAT_S8S8S8S8 | SCE_GXM_TEXTURE_SWIZZLE4_1RGB, + SCE_GXM_TEXTURE_FORMAT_S8S8S8X8_RGB1 = SCE_GXM_TEXTURE_BASE_FORMAT_S8S8S8S8 | SCE_GXM_TEXTURE_SWIZZLE4_RGB1, + SCE_GXM_TEXTURE_FORMAT_S8S8S8X8_BGR1 = SCE_GXM_TEXTURE_BASE_FORMAT_S8S8S8S8 | SCE_GXM_TEXTURE_SWIZZLE4_BGR1, + + SCE_GXM_TEXTURE_FORMAT_U2U10U10U10_ABGR = SCE_GXM_TEXTURE_BASE_FORMAT_U2U10U10U10 | SCE_GXM_TEXTURE_SWIZZLE4_ABGR, + SCE_GXM_TEXTURE_FORMAT_U2U10U10U10_ARGB = SCE_GXM_TEXTURE_BASE_FORMAT_U2U10U10U10 | SCE_GXM_TEXTURE_SWIZZLE4_ARGB, + SCE_GXM_TEXTURE_FORMAT_U10U10U10U2_RGBA = SCE_GXM_TEXTURE_BASE_FORMAT_U2U10U10U10 | SCE_GXM_TEXTURE_SWIZZLE4_RGBA, + SCE_GXM_TEXTURE_FORMAT_U10U10U10U2_BGRA = SCE_GXM_TEXTURE_BASE_FORMAT_U2U10U10U10 | SCE_GXM_TEXTURE_SWIZZLE4_BGRA, + SCE_GXM_TEXTURE_FORMAT_X2U10U10U10_1BGR = SCE_GXM_TEXTURE_BASE_FORMAT_U2U10U10U10 | SCE_GXM_TEXTURE_SWIZZLE4_1BGR, + SCE_GXM_TEXTURE_FORMAT_X2U10U10U10_1RGB = SCE_GXM_TEXTURE_BASE_FORMAT_U2U10U10U10 | SCE_GXM_TEXTURE_SWIZZLE4_1RGB, + SCE_GXM_TEXTURE_FORMAT_U10U10U10X2_RGB1 = SCE_GXM_TEXTURE_BASE_FORMAT_U2U10U10U10 | SCE_GXM_TEXTURE_SWIZZLE4_RGB1, + SCE_GXM_TEXTURE_FORMAT_U10U10U10X2_BGR1 = SCE_GXM_TEXTURE_BASE_FORMAT_U2U10U10U10 | SCE_GXM_TEXTURE_SWIZZLE4_BGR1, + + SCE_GXM_TEXTURE_FORMAT_U16U16_00GR = SCE_GXM_TEXTURE_BASE_FORMAT_U16U16 | SCE_GXM_TEXTURE_SWIZZLE2_00GR, + SCE_GXM_TEXTURE_FORMAT_U16U16_GRRR = SCE_GXM_TEXTURE_BASE_FORMAT_U16U16 | SCE_GXM_TEXTURE_SWIZZLE2_GRRR, + SCE_GXM_TEXTURE_FORMAT_U16U16_RGGG = SCE_GXM_TEXTURE_BASE_FORMAT_U16U16 | SCE_GXM_TEXTURE_SWIZZLE2_RGGG, + SCE_GXM_TEXTURE_FORMAT_U16U16_GRGR = SCE_GXM_TEXTURE_BASE_FORMAT_U16U16 | SCE_GXM_TEXTURE_SWIZZLE2_GRGR, + SCE_GXM_TEXTURE_FORMAT_U16U16_00RG = SCE_GXM_TEXTURE_BASE_FORMAT_U16U16 | SCE_GXM_TEXTURE_SWIZZLE2_00RG, + SCE_GXM_TEXTURE_FORMAT_U16U16_GR = SCE_GXM_TEXTURE_BASE_FORMAT_U16U16 | SCE_GXM_TEXTURE_SWIZZLE2_GR, + + SCE_GXM_TEXTURE_FORMAT_S16S16_00GR = SCE_GXM_TEXTURE_BASE_FORMAT_S16S16 | SCE_GXM_TEXTURE_SWIZZLE2_00GR, + SCE_GXM_TEXTURE_FORMAT_S16S16_GRRR = SCE_GXM_TEXTURE_BASE_FORMAT_S16S16 | SCE_GXM_TEXTURE_SWIZZLE2_GRRR, + SCE_GXM_TEXTURE_FORMAT_S16S16_RGGG = SCE_GXM_TEXTURE_BASE_FORMAT_S16S16 | SCE_GXM_TEXTURE_SWIZZLE2_RGGG, + SCE_GXM_TEXTURE_FORMAT_S16S16_GRGR = SCE_GXM_TEXTURE_BASE_FORMAT_S16S16 | SCE_GXM_TEXTURE_SWIZZLE2_GRGR, + SCE_GXM_TEXTURE_FORMAT_S16S16_00RG = SCE_GXM_TEXTURE_BASE_FORMAT_S16S16 | SCE_GXM_TEXTURE_SWIZZLE2_00RG, + SCE_GXM_TEXTURE_FORMAT_S16S16_GR = SCE_GXM_TEXTURE_BASE_FORMAT_S16S16 | SCE_GXM_TEXTURE_SWIZZLE2_GR, + + SCE_GXM_TEXTURE_FORMAT_F16F16_00GR = SCE_GXM_TEXTURE_BASE_FORMAT_F16F16 | SCE_GXM_TEXTURE_SWIZZLE2_00GR, + SCE_GXM_TEXTURE_FORMAT_F16F16_GRRR = SCE_GXM_TEXTURE_BASE_FORMAT_F16F16 | SCE_GXM_TEXTURE_SWIZZLE2_GRRR, + SCE_GXM_TEXTURE_FORMAT_F16F16_RGGG = SCE_GXM_TEXTURE_BASE_FORMAT_F16F16 | SCE_GXM_TEXTURE_SWIZZLE2_RGGG, + SCE_GXM_TEXTURE_FORMAT_F16F16_GRGR = SCE_GXM_TEXTURE_BASE_FORMAT_F16F16 | SCE_GXM_TEXTURE_SWIZZLE2_GRGR, + SCE_GXM_TEXTURE_FORMAT_F16F16_00RG = SCE_GXM_TEXTURE_BASE_FORMAT_F16F16 | SCE_GXM_TEXTURE_SWIZZLE2_00RG, + SCE_GXM_TEXTURE_FORMAT_F16F16_GR = SCE_GXM_TEXTURE_BASE_FORMAT_F16F16 | SCE_GXM_TEXTURE_SWIZZLE2_GR, + + SCE_GXM_TEXTURE_FORMAT_F32_000R = SCE_GXM_TEXTURE_BASE_FORMAT_F32 | SCE_GXM_TEXTURE_SWIZZLE1_000R, + SCE_GXM_TEXTURE_FORMAT_F32_111R = SCE_GXM_TEXTURE_BASE_FORMAT_F32 | SCE_GXM_TEXTURE_SWIZZLE1_111R, + SCE_GXM_TEXTURE_FORMAT_F32_RRRR = SCE_GXM_TEXTURE_BASE_FORMAT_F32 | SCE_GXM_TEXTURE_SWIZZLE1_RRRR, + SCE_GXM_TEXTURE_FORMAT_F32_0RRR = SCE_GXM_TEXTURE_BASE_FORMAT_F32 | SCE_GXM_TEXTURE_SWIZZLE1_0RRR, + SCE_GXM_TEXTURE_FORMAT_F32_1RRR = SCE_GXM_TEXTURE_BASE_FORMAT_F32 | SCE_GXM_TEXTURE_SWIZZLE1_1RRR, + SCE_GXM_TEXTURE_FORMAT_F32_R000 = SCE_GXM_TEXTURE_BASE_FORMAT_F32 | SCE_GXM_TEXTURE_SWIZZLE1_R000, + SCE_GXM_TEXTURE_FORMAT_F32_R111 = SCE_GXM_TEXTURE_BASE_FORMAT_F32 | SCE_GXM_TEXTURE_SWIZZLE1_R111, + SCE_GXM_TEXTURE_FORMAT_F32_R = SCE_GXM_TEXTURE_BASE_FORMAT_F32 | SCE_GXM_TEXTURE_SWIZZLE1_R, + + SCE_GXM_TEXTURE_FORMAT_F32M_000R = SCE_GXM_TEXTURE_BASE_FORMAT_F32M | SCE_GXM_TEXTURE_SWIZZLE1_000R, + SCE_GXM_TEXTURE_FORMAT_F32M_111R = SCE_GXM_TEXTURE_BASE_FORMAT_F32M | SCE_GXM_TEXTURE_SWIZZLE1_111R, + SCE_GXM_TEXTURE_FORMAT_F32M_RRRR = SCE_GXM_TEXTURE_BASE_FORMAT_F32M | SCE_GXM_TEXTURE_SWIZZLE1_RRRR, + SCE_GXM_TEXTURE_FORMAT_F32M_0RRR = SCE_GXM_TEXTURE_BASE_FORMAT_F32M | SCE_GXM_TEXTURE_SWIZZLE1_0RRR, + SCE_GXM_TEXTURE_FORMAT_F32M_1RRR = SCE_GXM_TEXTURE_BASE_FORMAT_F32M | SCE_GXM_TEXTURE_SWIZZLE1_1RRR, + SCE_GXM_TEXTURE_FORMAT_F32M_R000 = SCE_GXM_TEXTURE_BASE_FORMAT_F32M | SCE_GXM_TEXTURE_SWIZZLE1_R000, + SCE_GXM_TEXTURE_FORMAT_F32M_R111 = SCE_GXM_TEXTURE_BASE_FORMAT_F32M | SCE_GXM_TEXTURE_SWIZZLE1_R111, + SCE_GXM_TEXTURE_FORMAT_F32M_R = SCE_GXM_TEXTURE_BASE_FORMAT_F32M | SCE_GXM_TEXTURE_SWIZZLE1_R, + + SCE_GXM_TEXTURE_FORMAT_X8S8S8U8_1BGR = SCE_GXM_TEXTURE_BASE_FORMAT_X8S8S8U8 | SCE_GXM_TEXTURE_SWIZZLE3_BGR, + SCE_GXM_TEXTURE_FORMAT_X8U8S8S8_1RGB = SCE_GXM_TEXTURE_BASE_FORMAT_X8S8S8U8 | SCE_GXM_TEXTURE_SWIZZLE3_RGB, + + SCE_GXM_TEXTURE_FORMAT_X8U24_SD = SCE_GXM_TEXTURE_BASE_FORMAT_X8U24 | SCE_GXM_TEXTURE_SWIZZLE2_SD, + SCE_GXM_TEXTURE_FORMAT_U24X8_DS = SCE_GXM_TEXTURE_BASE_FORMAT_X8U24 | SCE_GXM_TEXTURE_SWIZZLE2_DS, + + SCE_GXM_TEXTURE_FORMAT_U32_000R = SCE_GXM_TEXTURE_BASE_FORMAT_U32 | SCE_GXM_TEXTURE_SWIZZLE1_000R, + SCE_GXM_TEXTURE_FORMAT_U32_111R = SCE_GXM_TEXTURE_BASE_FORMAT_U32 | SCE_GXM_TEXTURE_SWIZZLE1_111R, + SCE_GXM_TEXTURE_FORMAT_U32_RRRR = SCE_GXM_TEXTURE_BASE_FORMAT_U32 | SCE_GXM_TEXTURE_SWIZZLE1_RRRR, + SCE_GXM_TEXTURE_FORMAT_U32_0RRR = SCE_GXM_TEXTURE_BASE_FORMAT_U32 | SCE_GXM_TEXTURE_SWIZZLE1_0RRR, + SCE_GXM_TEXTURE_FORMAT_U32_1RRR = SCE_GXM_TEXTURE_BASE_FORMAT_U32 | SCE_GXM_TEXTURE_SWIZZLE1_1RRR, + SCE_GXM_TEXTURE_FORMAT_U32_R000 = SCE_GXM_TEXTURE_BASE_FORMAT_U32 | SCE_GXM_TEXTURE_SWIZZLE1_R000, + SCE_GXM_TEXTURE_FORMAT_U32_R111 = SCE_GXM_TEXTURE_BASE_FORMAT_U32 | SCE_GXM_TEXTURE_SWIZZLE1_R111, + SCE_GXM_TEXTURE_FORMAT_U32_R = SCE_GXM_TEXTURE_BASE_FORMAT_U32 | SCE_GXM_TEXTURE_SWIZZLE1_R, + + SCE_GXM_TEXTURE_FORMAT_S32_000R = SCE_GXM_TEXTURE_BASE_FORMAT_S32 | SCE_GXM_TEXTURE_SWIZZLE1_000R, + SCE_GXM_TEXTURE_FORMAT_S32_111R = SCE_GXM_TEXTURE_BASE_FORMAT_S32 | SCE_GXM_TEXTURE_SWIZZLE1_111R, + SCE_GXM_TEXTURE_FORMAT_S32_RRRR = SCE_GXM_TEXTURE_BASE_FORMAT_S32 | SCE_GXM_TEXTURE_SWIZZLE1_RRRR, + SCE_GXM_TEXTURE_FORMAT_S32_0RRR = SCE_GXM_TEXTURE_BASE_FORMAT_S32 | SCE_GXM_TEXTURE_SWIZZLE1_0RRR, + SCE_GXM_TEXTURE_FORMAT_S32_1RRR = SCE_GXM_TEXTURE_BASE_FORMAT_S32 | SCE_GXM_TEXTURE_SWIZZLE1_1RRR, + SCE_GXM_TEXTURE_FORMAT_S32_R000 = SCE_GXM_TEXTURE_BASE_FORMAT_S32 | SCE_GXM_TEXTURE_SWIZZLE1_R000, + SCE_GXM_TEXTURE_FORMAT_S32_R111 = SCE_GXM_TEXTURE_BASE_FORMAT_S32 | SCE_GXM_TEXTURE_SWIZZLE1_R111, + SCE_GXM_TEXTURE_FORMAT_S32_R = SCE_GXM_TEXTURE_BASE_FORMAT_S32 | SCE_GXM_TEXTURE_SWIZZLE1_R, + + SCE_GXM_TEXTURE_FORMAT_SE5M9M9M9_BGR = SCE_GXM_TEXTURE_BASE_FORMAT_SE5M9M9M9 | SCE_GXM_TEXTURE_SWIZZLE3_BGR, + SCE_GXM_TEXTURE_FORMAT_SE5M9M9M9_RGB = SCE_GXM_TEXTURE_BASE_FORMAT_SE5M9M9M9 | SCE_GXM_TEXTURE_SWIZZLE3_RGB, + + SCE_GXM_TEXTURE_FORMAT_F10F11F11_BGR = SCE_GXM_TEXTURE_BASE_FORMAT_F11F11F10 | SCE_GXM_TEXTURE_SWIZZLE3_BGR, + SCE_GXM_TEXTURE_FORMAT_F11F11F10_RGB = SCE_GXM_TEXTURE_BASE_FORMAT_F11F11F10 | SCE_GXM_TEXTURE_SWIZZLE3_RGB, + + SCE_GXM_TEXTURE_FORMAT_F16F16F16F16_ABGR = SCE_GXM_TEXTURE_BASE_FORMAT_F16F16F16F16 | SCE_GXM_TEXTURE_SWIZZLE4_ABGR, + SCE_GXM_TEXTURE_FORMAT_F16F16F16F16_ARGB = SCE_GXM_TEXTURE_BASE_FORMAT_F16F16F16F16 | SCE_GXM_TEXTURE_SWIZZLE4_ARGB, + SCE_GXM_TEXTURE_FORMAT_F16F16F16F16_RGBA = SCE_GXM_TEXTURE_BASE_FORMAT_F16F16F16F16 | SCE_GXM_TEXTURE_SWIZZLE4_RGBA, + SCE_GXM_TEXTURE_FORMAT_F16F16F16F16_BGRA = SCE_GXM_TEXTURE_BASE_FORMAT_F16F16F16F16 | SCE_GXM_TEXTURE_SWIZZLE4_BGRA, + SCE_GXM_TEXTURE_FORMAT_X16F16F16F16_1BGR = SCE_GXM_TEXTURE_BASE_FORMAT_F16F16F16F16 | SCE_GXM_TEXTURE_SWIZZLE4_1BGR, + SCE_GXM_TEXTURE_FORMAT_X16F16F16F16_1RGB = SCE_GXM_TEXTURE_BASE_FORMAT_F16F16F16F16 | SCE_GXM_TEXTURE_SWIZZLE4_1RGB, + SCE_GXM_TEXTURE_FORMAT_F16F16F16X16_RGB1 = SCE_GXM_TEXTURE_BASE_FORMAT_F16F16F16F16 | SCE_GXM_TEXTURE_SWIZZLE4_RGB1, + SCE_GXM_TEXTURE_FORMAT_F16F16F16X16_BGR1 = SCE_GXM_TEXTURE_BASE_FORMAT_F16F16F16F16 | SCE_GXM_TEXTURE_SWIZZLE4_BGR1, + + SCE_GXM_TEXTURE_FORMAT_U16U16U16U16_ABGR = SCE_GXM_TEXTURE_BASE_FORMAT_U16U16U16U16 | SCE_GXM_TEXTURE_SWIZZLE4_ABGR, + SCE_GXM_TEXTURE_FORMAT_U16U16U16U16_ARGB = SCE_GXM_TEXTURE_BASE_FORMAT_U16U16U16U16 | SCE_GXM_TEXTURE_SWIZZLE4_ARGB, + SCE_GXM_TEXTURE_FORMAT_U16U16U16U16_RGBA = SCE_GXM_TEXTURE_BASE_FORMAT_U16U16U16U16 | SCE_GXM_TEXTURE_SWIZZLE4_RGBA, + SCE_GXM_TEXTURE_FORMAT_U16U16U16U16_BGRA = SCE_GXM_TEXTURE_BASE_FORMAT_U16U16U16U16 | SCE_GXM_TEXTURE_SWIZZLE4_BGRA, + SCE_GXM_TEXTURE_FORMAT_X16U16U16U16_1BGR = SCE_GXM_TEXTURE_BASE_FORMAT_U16U16U16U16 | SCE_GXM_TEXTURE_SWIZZLE4_1BGR, + SCE_GXM_TEXTURE_FORMAT_X16U16U16U16_1RGB = SCE_GXM_TEXTURE_BASE_FORMAT_U16U16U16U16 | SCE_GXM_TEXTURE_SWIZZLE4_1RGB, + SCE_GXM_TEXTURE_FORMAT_U16U16U16X16_RGB1 = SCE_GXM_TEXTURE_BASE_FORMAT_U16U16U16U16 | SCE_GXM_TEXTURE_SWIZZLE4_RGB1, + SCE_GXM_TEXTURE_FORMAT_U16U16U16X16_BGR1 = SCE_GXM_TEXTURE_BASE_FORMAT_U16U16U16U16 | SCE_GXM_TEXTURE_SWIZZLE4_BGR1, + + SCE_GXM_TEXTURE_FORMAT_S16S16S16S16_ABGR = SCE_GXM_TEXTURE_BASE_FORMAT_S16S16S16S16 | SCE_GXM_TEXTURE_SWIZZLE4_ABGR, + SCE_GXM_TEXTURE_FORMAT_S16S16S16S16_ARGB = SCE_GXM_TEXTURE_BASE_FORMAT_S16S16S16S16 | SCE_GXM_TEXTURE_SWIZZLE4_ARGB, + SCE_GXM_TEXTURE_FORMAT_S16S16S16S16_RGBA = SCE_GXM_TEXTURE_BASE_FORMAT_S16S16S16S16 | SCE_GXM_TEXTURE_SWIZZLE4_RGBA, + SCE_GXM_TEXTURE_FORMAT_S16S16S16S16_BGRA = SCE_GXM_TEXTURE_BASE_FORMAT_S16S16S16S16 | SCE_GXM_TEXTURE_SWIZZLE4_BGRA, + SCE_GXM_TEXTURE_FORMAT_X16S16S16S16_1BGR = SCE_GXM_TEXTURE_BASE_FORMAT_S16S16S16S16 | SCE_GXM_TEXTURE_SWIZZLE4_1BGR, + SCE_GXM_TEXTURE_FORMAT_X16S16S16S16_1RGB = SCE_GXM_TEXTURE_BASE_FORMAT_S16S16S16S16 | SCE_GXM_TEXTURE_SWIZZLE4_1RGB, + SCE_GXM_TEXTURE_FORMAT_S16S16S16X16_RGB1 = SCE_GXM_TEXTURE_BASE_FORMAT_S16S16S16S16 | SCE_GXM_TEXTURE_SWIZZLE4_RGB1, + SCE_GXM_TEXTURE_FORMAT_S16S16S16X16_BGR1 = SCE_GXM_TEXTURE_BASE_FORMAT_S16S16S16S16 | SCE_GXM_TEXTURE_SWIZZLE4_BGR1, + + SCE_GXM_TEXTURE_FORMAT_F32F32_00GR = SCE_GXM_TEXTURE_BASE_FORMAT_F32F32 | SCE_GXM_TEXTURE_SWIZZLE2_00GR, + SCE_GXM_TEXTURE_FORMAT_F32F32_GRRR = SCE_GXM_TEXTURE_BASE_FORMAT_F32F32 | SCE_GXM_TEXTURE_SWIZZLE2_GRRR, + SCE_GXM_TEXTURE_FORMAT_F32F32_RGGG = SCE_GXM_TEXTURE_BASE_FORMAT_F32F32 | SCE_GXM_TEXTURE_SWIZZLE2_RGGG, + SCE_GXM_TEXTURE_FORMAT_F32F32_GRGR = SCE_GXM_TEXTURE_BASE_FORMAT_F32F32 | SCE_GXM_TEXTURE_SWIZZLE2_GRGR, + SCE_GXM_TEXTURE_FORMAT_F32F32_00RG = SCE_GXM_TEXTURE_BASE_FORMAT_F32F32 | SCE_GXM_TEXTURE_SWIZZLE2_00RG, + SCE_GXM_TEXTURE_FORMAT_F32F32_GR = SCE_GXM_TEXTURE_BASE_FORMAT_F32F32 | SCE_GXM_TEXTURE_SWIZZLE2_GR, + + SCE_GXM_TEXTURE_FORMAT_U32U32_00GR = SCE_GXM_TEXTURE_BASE_FORMAT_U32U32 | SCE_GXM_TEXTURE_SWIZZLE2_00GR, + SCE_GXM_TEXTURE_FORMAT_U32U32_GRRR = SCE_GXM_TEXTURE_BASE_FORMAT_U32U32 | SCE_GXM_TEXTURE_SWIZZLE2_GRRR, + SCE_GXM_TEXTURE_FORMAT_U32U32_RGGG = SCE_GXM_TEXTURE_BASE_FORMAT_U32U32 | SCE_GXM_TEXTURE_SWIZZLE2_RGGG, + SCE_GXM_TEXTURE_FORMAT_U32U32_GRGR = SCE_GXM_TEXTURE_BASE_FORMAT_U32U32 | SCE_GXM_TEXTURE_SWIZZLE2_GRGR, + SCE_GXM_TEXTURE_FORMAT_U32U32_00RG = SCE_GXM_TEXTURE_BASE_FORMAT_U32U32 | SCE_GXM_TEXTURE_SWIZZLE2_00RG, + SCE_GXM_TEXTURE_FORMAT_U32U32_GR = SCE_GXM_TEXTURE_BASE_FORMAT_U32U32 | SCE_GXM_TEXTURE_SWIZZLE2_GR, + + SCE_GXM_TEXTURE_FORMAT_PVRT2BPP_ABGR = SCE_GXM_TEXTURE_BASE_FORMAT_PVRT2BPP | SCE_GXM_TEXTURE_SWIZZLE4_ABGR, + SCE_GXM_TEXTURE_FORMAT_PVRT2BPP_1BGR = SCE_GXM_TEXTURE_BASE_FORMAT_PVRT2BPP | SCE_GXM_TEXTURE_SWIZZLE4_1BGR, + + SCE_GXM_TEXTURE_FORMAT_PVRT4BPP_ABGR = SCE_GXM_TEXTURE_BASE_FORMAT_PVRT4BPP | SCE_GXM_TEXTURE_SWIZZLE4_ABGR, + SCE_GXM_TEXTURE_FORMAT_PVRT4BPP_1BGR = SCE_GXM_TEXTURE_BASE_FORMAT_PVRT4BPP | SCE_GXM_TEXTURE_SWIZZLE4_1BGR, + + SCE_GXM_TEXTURE_FORMAT_PVRTII2BPP_ABGR = SCE_GXM_TEXTURE_BASE_FORMAT_PVRTII2BPP | SCE_GXM_TEXTURE_SWIZZLE4_ABGR, + SCE_GXM_TEXTURE_FORMAT_PVRTII2BPP_1BGR = SCE_GXM_TEXTURE_BASE_FORMAT_PVRTII2BPP | SCE_GXM_TEXTURE_SWIZZLE4_1BGR, + + SCE_GXM_TEXTURE_FORMAT_PVRTII4BPP_ABGR = SCE_GXM_TEXTURE_BASE_FORMAT_PVRTII4BPP | SCE_GXM_TEXTURE_SWIZZLE4_ABGR, + SCE_GXM_TEXTURE_FORMAT_PVRTII4BPP_1BGR = SCE_GXM_TEXTURE_BASE_FORMAT_PVRTII4BPP | SCE_GXM_TEXTURE_SWIZZLE4_1BGR, + + SCE_GXM_TEXTURE_FORMAT_UBC1_ABGR = SCE_GXM_TEXTURE_BASE_FORMAT_UBC1 | SCE_GXM_TEXTURE_SWIZZLE4_ABGR, + + SCE_GXM_TEXTURE_FORMAT_UBC2_ABGR = SCE_GXM_TEXTURE_BASE_FORMAT_UBC2 | SCE_GXM_TEXTURE_SWIZZLE4_ABGR, + + SCE_GXM_TEXTURE_FORMAT_UBC3_ABGR = SCE_GXM_TEXTURE_BASE_FORMAT_UBC3 | SCE_GXM_TEXTURE_SWIZZLE4_ABGR, + + SCE_GXM_TEXTURE_FORMAT_YUV420P2_CSC0 = SCE_GXM_TEXTURE_BASE_FORMAT_YUV420P2 | SCE_GXM_TEXTURE_SWIZZLE_YUV_CSC0, + SCE_GXM_TEXTURE_FORMAT_YVU420P2_CSC0 = SCE_GXM_TEXTURE_BASE_FORMAT_YUV420P2 | SCE_GXM_TEXTURE_SWIZZLE_YVU_CSC0, + SCE_GXM_TEXTURE_FORMAT_YUV420P2_CSC1 = SCE_GXM_TEXTURE_BASE_FORMAT_YUV420P2 | SCE_GXM_TEXTURE_SWIZZLE_YUV_CSC1, + SCE_GXM_TEXTURE_FORMAT_YVU420P2_CSC1 = SCE_GXM_TEXTURE_BASE_FORMAT_YUV420P2 | SCE_GXM_TEXTURE_SWIZZLE_YVU_CSC1, + + SCE_GXM_TEXTURE_FORMAT_YUV420P3_CSC0 = SCE_GXM_TEXTURE_BASE_FORMAT_YUV420P3 | SCE_GXM_TEXTURE_SWIZZLE_YUV_CSC0, + SCE_GXM_TEXTURE_FORMAT_YVU420P3_CSC0 = SCE_GXM_TEXTURE_BASE_FORMAT_YUV420P3 | SCE_GXM_TEXTURE_SWIZZLE_YVU_CSC0, + SCE_GXM_TEXTURE_FORMAT_YUV420P3_CSC1 = SCE_GXM_TEXTURE_BASE_FORMAT_YUV420P3 | SCE_GXM_TEXTURE_SWIZZLE_YUV_CSC1, + SCE_GXM_TEXTURE_FORMAT_YVU420P3_CSC1 = SCE_GXM_TEXTURE_BASE_FORMAT_YUV420P3 | SCE_GXM_TEXTURE_SWIZZLE_YVU_CSC1, + + SCE_GXM_TEXTURE_FORMAT_YUYV422_CSC0 = SCE_GXM_TEXTURE_BASE_FORMAT_YUV422 | SCE_GXM_TEXTURE_SWIZZLE_YUYV_CSC0, + SCE_GXM_TEXTURE_FORMAT_YVYU422_CSC0 = SCE_GXM_TEXTURE_BASE_FORMAT_YUV422 | SCE_GXM_TEXTURE_SWIZZLE_YVYU_CSC0, + SCE_GXM_TEXTURE_FORMAT_UYVY422_CSC0 = SCE_GXM_TEXTURE_BASE_FORMAT_YUV422 | SCE_GXM_TEXTURE_SWIZZLE_UYVY_CSC0, + SCE_GXM_TEXTURE_FORMAT_VYUY422_CSC0 = SCE_GXM_TEXTURE_BASE_FORMAT_YUV422 | SCE_GXM_TEXTURE_SWIZZLE_VYUY_CSC0, + SCE_GXM_TEXTURE_FORMAT_YUYV422_CSC1 = SCE_GXM_TEXTURE_BASE_FORMAT_YUV422 | SCE_GXM_TEXTURE_SWIZZLE_YUYV_CSC1, + SCE_GXM_TEXTURE_FORMAT_YVYU422_CSC1 = SCE_GXM_TEXTURE_BASE_FORMAT_YUV422 | SCE_GXM_TEXTURE_SWIZZLE_YVYU_CSC1, + SCE_GXM_TEXTURE_FORMAT_UYVY422_CSC1 = SCE_GXM_TEXTURE_BASE_FORMAT_YUV422 | SCE_GXM_TEXTURE_SWIZZLE_UYVY_CSC1, + SCE_GXM_TEXTURE_FORMAT_VYUY422_CSC1 = SCE_GXM_TEXTURE_BASE_FORMAT_YUV422 | SCE_GXM_TEXTURE_SWIZZLE_VYUY_CSC1, + + SCE_GXM_TEXTURE_FORMAT_P4_ABGR = SCE_GXM_TEXTURE_BASE_FORMAT_P4 | SCE_GXM_TEXTURE_SWIZZLE4_ABGR, + SCE_GXM_TEXTURE_FORMAT_P4_ARGB = SCE_GXM_TEXTURE_BASE_FORMAT_P4 | SCE_GXM_TEXTURE_SWIZZLE4_ARGB, + SCE_GXM_TEXTURE_FORMAT_P4_RGBA = SCE_GXM_TEXTURE_BASE_FORMAT_P4 | SCE_GXM_TEXTURE_SWIZZLE4_RGBA, + SCE_GXM_TEXTURE_FORMAT_P4_BGRA = SCE_GXM_TEXTURE_BASE_FORMAT_P4 | SCE_GXM_TEXTURE_SWIZZLE4_BGRA, + SCE_GXM_TEXTURE_FORMAT_P4_1BGR = SCE_GXM_TEXTURE_BASE_FORMAT_P4 | SCE_GXM_TEXTURE_SWIZZLE4_1BGR, + SCE_GXM_TEXTURE_FORMAT_P4_1RGB = SCE_GXM_TEXTURE_BASE_FORMAT_P4 | SCE_GXM_TEXTURE_SWIZZLE4_1RGB, + SCE_GXM_TEXTURE_FORMAT_P4_RGB1 = SCE_GXM_TEXTURE_BASE_FORMAT_P4 | SCE_GXM_TEXTURE_SWIZZLE4_RGB1, + SCE_GXM_TEXTURE_FORMAT_P4_BGR1 = SCE_GXM_TEXTURE_BASE_FORMAT_P4 | SCE_GXM_TEXTURE_SWIZZLE4_BGR1, + + SCE_GXM_TEXTURE_FORMAT_P8_ABGR = SCE_GXM_TEXTURE_BASE_FORMAT_P8 | SCE_GXM_TEXTURE_SWIZZLE4_ABGR, + SCE_GXM_TEXTURE_FORMAT_P8_ARGB = SCE_GXM_TEXTURE_BASE_FORMAT_P8 | SCE_GXM_TEXTURE_SWIZZLE4_ARGB, + SCE_GXM_TEXTURE_FORMAT_P8_RGBA = SCE_GXM_TEXTURE_BASE_FORMAT_P8 | SCE_GXM_TEXTURE_SWIZZLE4_RGBA, + SCE_GXM_TEXTURE_FORMAT_P8_BGRA = SCE_GXM_TEXTURE_BASE_FORMAT_P8 | SCE_GXM_TEXTURE_SWIZZLE4_BGRA, + SCE_GXM_TEXTURE_FORMAT_P8_1BGR = SCE_GXM_TEXTURE_BASE_FORMAT_P8 | SCE_GXM_TEXTURE_SWIZZLE4_1BGR, + SCE_GXM_TEXTURE_FORMAT_P8_1RGB = SCE_GXM_TEXTURE_BASE_FORMAT_P8 | SCE_GXM_TEXTURE_SWIZZLE4_1RGB, + SCE_GXM_TEXTURE_FORMAT_P8_RGB1 = SCE_GXM_TEXTURE_BASE_FORMAT_P8 | SCE_GXM_TEXTURE_SWIZZLE4_RGB1, + SCE_GXM_TEXTURE_FORMAT_P8_BGR1 = SCE_GXM_TEXTURE_BASE_FORMAT_P8 | SCE_GXM_TEXTURE_SWIZZLE4_BGR1, + + SCE_GXM_TEXTURE_FORMAT_U8U8U8_BGR = SCE_GXM_TEXTURE_BASE_FORMAT_U8U8U8 | SCE_GXM_TEXTURE_SWIZZLE3_BGR, + SCE_GXM_TEXTURE_FORMAT_U8U8U8_RGB = SCE_GXM_TEXTURE_BASE_FORMAT_U8U8U8 | SCE_GXM_TEXTURE_SWIZZLE3_RGB, + + SCE_GXM_TEXTURE_FORMAT_S8S8S8_BGR = SCE_GXM_TEXTURE_BASE_FORMAT_S8S8S8 | SCE_GXM_TEXTURE_SWIZZLE3_BGR, + SCE_GXM_TEXTURE_FORMAT_S8S8S8_RGB = SCE_GXM_TEXTURE_BASE_FORMAT_S8S8S8 | SCE_GXM_TEXTURE_SWIZZLE3_RGB, + + SCE_GXM_TEXTURE_FORMAT_U2F10F10F10_ABGR = SCE_GXM_TEXTURE_BASE_FORMAT_U2F10F10F10 | SCE_GXM_TEXTURE_SWIZZLE4_ABGR, + SCE_GXM_TEXTURE_FORMAT_U2F10F10F10_ARGB = SCE_GXM_TEXTURE_BASE_FORMAT_U2F10F10F10 | SCE_GXM_TEXTURE_SWIZZLE4_ARGB, + SCE_GXM_TEXTURE_FORMAT_F10F10F10U2_RGBA = SCE_GXM_TEXTURE_BASE_FORMAT_U2F10F10F10 | SCE_GXM_TEXTURE_SWIZZLE4_RGBA, + SCE_GXM_TEXTURE_FORMAT_F10F10F10U2_BGRA = SCE_GXM_TEXTURE_BASE_FORMAT_U2F10F10F10 | SCE_GXM_TEXTURE_SWIZZLE4_BGRA, + SCE_GXM_TEXTURE_FORMAT_X2F10F10F10_1BGR = SCE_GXM_TEXTURE_BASE_FORMAT_U2F10F10F10 | SCE_GXM_TEXTURE_SWIZZLE4_1BGR, + SCE_GXM_TEXTURE_FORMAT_X2F10F10F10_1RGB = SCE_GXM_TEXTURE_BASE_FORMAT_U2F10F10F10 | SCE_GXM_TEXTURE_SWIZZLE4_1RGB, + SCE_GXM_TEXTURE_FORMAT_F10F10F10X2_RGB1 = SCE_GXM_TEXTURE_BASE_FORMAT_U2F10F10F10 | SCE_GXM_TEXTURE_SWIZZLE4_RGB1, + SCE_GXM_TEXTURE_FORMAT_F10F10F10X2_BGR1 = SCE_GXM_TEXTURE_BASE_FORMAT_U2F10F10F10 | SCE_GXM_TEXTURE_SWIZZLE4_BGR1, + + // Legacy formats + + SCE_GXM_TEXTURE_FORMAT_L8 = SCE_GXM_TEXTURE_FORMAT_U8_1RRR, + SCE_GXM_TEXTURE_FORMAT_A8 = SCE_GXM_TEXTURE_FORMAT_U8_R000, + SCE_GXM_TEXTURE_FORMAT_R8 = SCE_GXM_TEXTURE_FORMAT_U8_000R, + SCE_GXM_TEXTURE_FORMAT_A4R4G4B4 = SCE_GXM_TEXTURE_FORMAT_U4U4U4U4_ARGB, + SCE_GXM_TEXTURE_FORMAT_A1R5G5B5 = SCE_GXM_TEXTURE_FORMAT_U1U5U5U5_ARGB, + SCE_GXM_TEXTURE_FORMAT_R5G6B5 = SCE_GXM_TEXTURE_FORMAT_U5U6U5_RGB, + SCE_GXM_TEXTURE_FORMAT_A8L8 = SCE_GXM_TEXTURE_FORMAT_U8U8_GRRR, + SCE_GXM_TEXTURE_FORMAT_L8A8 = SCE_GXM_TEXTURE_FORMAT_U8U8_RGGG, + SCE_GXM_TEXTURE_FORMAT_G8R8 = SCE_GXM_TEXTURE_FORMAT_U8U8_00GR, + SCE_GXM_TEXTURE_FORMAT_L16 = SCE_GXM_TEXTURE_FORMAT_U16_1RRR, + SCE_GXM_TEXTURE_FORMAT_A16 = SCE_GXM_TEXTURE_FORMAT_U16_R000, + SCE_GXM_TEXTURE_FORMAT_R16 = SCE_GXM_TEXTURE_FORMAT_U16_000R, + SCE_GXM_TEXTURE_FORMAT_D16 = SCE_GXM_TEXTURE_FORMAT_U16_R, + SCE_GXM_TEXTURE_FORMAT_LF16 = SCE_GXM_TEXTURE_FORMAT_F16_1RRR, + SCE_GXM_TEXTURE_FORMAT_AF16 = SCE_GXM_TEXTURE_FORMAT_F16_R000, + SCE_GXM_TEXTURE_FORMAT_RF16 = SCE_GXM_TEXTURE_FORMAT_F16_000R, + SCE_GXM_TEXTURE_FORMAT_A8R8G8B8 = SCE_GXM_TEXTURE_FORMAT_U8U8U8U8_ARGB, + SCE_GXM_TEXTURE_FORMAT_A8B8G8R8 = SCE_GXM_TEXTURE_FORMAT_U8U8U8U8_ABGR, + SCE_GXM_TEXTURE_FORMAT_AF16LF16 = SCE_GXM_TEXTURE_FORMAT_F16F16_GRRR, + SCE_GXM_TEXTURE_FORMAT_LF16AF16 = SCE_GXM_TEXTURE_FORMAT_F16F16_RGGG, + SCE_GXM_TEXTURE_FORMAT_GF16RF16 = SCE_GXM_TEXTURE_FORMAT_F16F16_00GR, + SCE_GXM_TEXTURE_FORMAT_LF32M = SCE_GXM_TEXTURE_FORMAT_F32M_1RRR, + SCE_GXM_TEXTURE_FORMAT_AF32M = SCE_GXM_TEXTURE_FORMAT_F32M_R000, + SCE_GXM_TEXTURE_FORMAT_RF32M = SCE_GXM_TEXTURE_FORMAT_F32M_000R, + SCE_GXM_TEXTURE_FORMAT_DF32M = SCE_GXM_TEXTURE_FORMAT_F32M_R, + SCE_GXM_TEXTURE_FORMAT_VYUY = SCE_GXM_TEXTURE_FORMAT_VYUY422_CSC0, + SCE_GXM_TEXTURE_FORMAT_YVYU = SCE_GXM_TEXTURE_FORMAT_YVYU422_CSC0, + SCE_GXM_TEXTURE_FORMAT_UBC1 = SCE_GXM_TEXTURE_FORMAT_UBC1_ABGR, + SCE_GXM_TEXTURE_FORMAT_UBC2 = SCE_GXM_TEXTURE_FORMAT_UBC2_ABGR, + SCE_GXM_TEXTURE_FORMAT_UBC3 = SCE_GXM_TEXTURE_FORMAT_UBC3_ABGR, + SCE_GXM_TEXTURE_FORMAT_PVRT2BPP = SCE_GXM_TEXTURE_FORMAT_PVRT2BPP_ABGR, + SCE_GXM_TEXTURE_FORMAT_PVRT4BPP = SCE_GXM_TEXTURE_FORMAT_PVRT4BPP_ABGR, + SCE_GXM_TEXTURE_FORMAT_PVRTII2BPP = SCE_GXM_TEXTURE_FORMAT_PVRTII2BPP_ABGR, + SCE_GXM_TEXTURE_FORMAT_PVRTII4BPP = SCE_GXM_TEXTURE_FORMAT_PVRTII4BPP_ABGR +}; + +enum SceGxmColorSwizzle4Mode { + SCE_GXM_COLOR_SWIZZLE4_ABGR = 0x00000000u, + SCE_GXM_COLOR_SWIZZLE4_ARGB = 0x00100000u, + SCE_GXM_COLOR_SWIZZLE4_RGBA = 0x00200000u, + SCE_GXM_COLOR_SWIZZLE4_BGRA = 0x00300000u +}; + +enum SceGxmColorSwizzle3Mode { + SCE_GXM_COLOR_SWIZZLE3_BGR = 0x00000000u, + SCE_GXM_COLOR_SWIZZLE3_RGB = 0x00100000u +}; + +enum SceGxmColorSwizzle2Mode { + SCE_GXM_COLOR_SWIZZLE2_GR = 0x00000000u, + SCE_GXM_COLOR_SWIZZLE2_RG = 0x00100000u, + SCE_GXM_COLOR_SWIZZLE2_RA = 0x00200000u, + SCE_GXM_COLOR_SWIZZLE2_AR = 0x00300000u +}; + +enum SceGxmColorSwizzle1Mode { + SCE_GXM_COLOR_SWIZZLE1_R = 0x00000000u, + SCE_GXM_COLOR_SWIZZLE1_G = 0x00100000u, + SCE_GXM_COLOR_SWIZZLE1_A = 0x00100000u +}; + +enum SceGxmColorBaseFormat { + SCE_GXM_COLOR_BASE_FORMAT_U8U8U8U8 = 0x00000000, + SCE_GXM_COLOR_BASE_FORMAT_U8U8U8 = 0x10000000, + SCE_GXM_COLOR_BASE_FORMAT_U5U6U5 = 0x30000000, + SCE_GXM_COLOR_BASE_FORMAT_U1U5U5U5 = 0x40000000, + SCE_GXM_COLOR_BASE_FORMAT_U4U4U4U4 = 0x50000000, + SCE_GXM_COLOR_BASE_FORMAT_U8U3U3U2 = 0x60000000, + SCE_GXM_COLOR_BASE_FORMAT_F16 = 0xF0000000, + SCE_GXM_COLOR_BASE_FORMAT_F16F16 = 0x00800000, + SCE_GXM_COLOR_BASE_FORMAT_F32 = 0x10800000, + SCE_GXM_COLOR_BASE_FORMAT_S16 = 0x20800000, + SCE_GXM_COLOR_BASE_FORMAT_S16S16 = 0x30800000, + SCE_GXM_COLOR_BASE_FORMAT_U16 = 0x40800000, + SCE_GXM_COLOR_BASE_FORMAT_U16U16 = 0x50800000, + SCE_GXM_COLOR_BASE_FORMAT_U2U10U10U10 = 0x60800000, + SCE_GXM_COLOR_BASE_FORMAT_U8 = 0x80800000, + SCE_GXM_COLOR_BASE_FORMAT_S8 = 0x90800000, + SCE_GXM_COLOR_BASE_FORMAT_S5S5U6 = 0xA0800000, + SCE_GXM_COLOR_BASE_FORMAT_U8U8 = 0xB0800000, + SCE_GXM_COLOR_BASE_FORMAT_S8S8 = 0xC0800000, + SCE_GXM_COLOR_BASE_FORMAT_U8S8S8U8 = 0xD0800000, + SCE_GXM_COLOR_BASE_FORMAT_S8S8S8S8 = 0xE0800000, + SCE_GXM_COLOR_BASE_FORMAT_F16F16F16F16 = 0x01000000, + SCE_GXM_COLOR_BASE_FORMAT_F32F32 = 0x11000000, + SCE_GXM_COLOR_BASE_FORMAT_F11F11F10 = 0x21000000, + SCE_GXM_COLOR_BASE_FORMAT_SE5M9M9M9 = 0x31000000, + SCE_GXM_COLOR_BASE_FORMAT_U2F10F10F10 = 0x41000000 +}; + +enum SceGxmColorFormat { + + SCE_GXM_COLOR_FORMAT_U8U8U8U8_ABGR = SCE_GXM_COLOR_BASE_FORMAT_U8U8U8U8 | SCE_GXM_COLOR_SWIZZLE4_ABGR, + SCE_GXM_COLOR_FORMAT_U8U8U8U8_ARGB = SCE_GXM_COLOR_BASE_FORMAT_U8U8U8U8 | SCE_GXM_COLOR_SWIZZLE4_ARGB, + SCE_GXM_COLOR_FORMAT_U8U8U8U8_RGBA = SCE_GXM_COLOR_BASE_FORMAT_U8U8U8U8 | SCE_GXM_COLOR_SWIZZLE4_RGBA, + SCE_GXM_COLOR_FORMAT_U8U8U8U8_BGRA = SCE_GXM_COLOR_BASE_FORMAT_U8U8U8U8 | SCE_GXM_COLOR_SWIZZLE4_BGRA, + + SCE_GXM_COLOR_FORMAT_U8U8U8_BGR = SCE_GXM_COLOR_BASE_FORMAT_U8U8U8 | SCE_GXM_COLOR_SWIZZLE3_BGR, + SCE_GXM_COLOR_FORMAT_U8U8U8_RGB = SCE_GXM_COLOR_BASE_FORMAT_U8U8U8 | SCE_GXM_COLOR_SWIZZLE3_RGB, + + SCE_GXM_COLOR_FORMAT_U5U6U5_BGR = SCE_GXM_COLOR_BASE_FORMAT_U5U6U5 | SCE_GXM_COLOR_SWIZZLE3_BGR, + SCE_GXM_COLOR_FORMAT_U5U6U5_RGB = SCE_GXM_COLOR_BASE_FORMAT_U5U6U5 | SCE_GXM_COLOR_SWIZZLE3_RGB, + + SCE_GXM_COLOR_FORMAT_U1U5U5U5_ABGR = SCE_GXM_COLOR_BASE_FORMAT_U1U5U5U5 | SCE_GXM_COLOR_SWIZZLE4_ABGR, + SCE_GXM_COLOR_FORMAT_U1U5U5U5_ARGB = SCE_GXM_COLOR_BASE_FORMAT_U1U5U5U5 | SCE_GXM_COLOR_SWIZZLE4_ARGB, + SCE_GXM_COLOR_FORMAT_U5U5U5U1_RGBA = SCE_GXM_COLOR_BASE_FORMAT_U1U5U5U5 | SCE_GXM_COLOR_SWIZZLE4_RGBA, + SCE_GXM_COLOR_FORMAT_U5U5U5U1_BGRA = SCE_GXM_COLOR_BASE_FORMAT_U1U5U5U5 | SCE_GXM_COLOR_SWIZZLE4_BGRA, + + SCE_GXM_COLOR_FORMAT_U4U4U4U4_ABGR = SCE_GXM_COLOR_BASE_FORMAT_U4U4U4U4 | SCE_GXM_COLOR_SWIZZLE4_ABGR, + SCE_GXM_COLOR_FORMAT_U4U4U4U4_ARGB = SCE_GXM_COLOR_BASE_FORMAT_U4U4U4U4 | SCE_GXM_COLOR_SWIZZLE4_ARGB, + SCE_GXM_COLOR_FORMAT_U4U4U4U4_RGBA = SCE_GXM_COLOR_BASE_FORMAT_U4U4U4U4 | SCE_GXM_COLOR_SWIZZLE4_RGBA, + SCE_GXM_COLOR_FORMAT_U4U4U4U4_BGRA = SCE_GXM_COLOR_BASE_FORMAT_U4U4U4U4 | SCE_GXM_COLOR_SWIZZLE4_BGRA, + + SCE_GXM_COLOR_FORMAT_U8U3U3U2_ARGB = SCE_GXM_COLOR_BASE_FORMAT_U8U3U3U2, + + SCE_GXM_COLOR_FORMAT_F16_R = SCE_GXM_COLOR_BASE_FORMAT_F16 | SCE_GXM_COLOR_SWIZZLE1_R, + SCE_GXM_COLOR_FORMAT_F16_G = SCE_GXM_COLOR_BASE_FORMAT_F16 | SCE_GXM_COLOR_SWIZZLE1_G, + + SCE_GXM_COLOR_FORMAT_F16F16_GR = SCE_GXM_COLOR_BASE_FORMAT_F16F16 | SCE_GXM_COLOR_SWIZZLE2_GR, + SCE_GXM_COLOR_FORMAT_F16F16_RG = SCE_GXM_COLOR_BASE_FORMAT_F16F16 | SCE_GXM_COLOR_SWIZZLE2_RG, + + SCE_GXM_COLOR_FORMAT_F32_R = SCE_GXM_COLOR_BASE_FORMAT_F32 | SCE_GXM_COLOR_SWIZZLE1_R, + + SCE_GXM_COLOR_FORMAT_S16_R = SCE_GXM_COLOR_BASE_FORMAT_S16 | SCE_GXM_COLOR_SWIZZLE1_R, + SCE_GXM_COLOR_FORMAT_S16_G = SCE_GXM_COLOR_BASE_FORMAT_S16 | SCE_GXM_COLOR_SWIZZLE1_G, + + SCE_GXM_COLOR_FORMAT_S16S16_GR = SCE_GXM_COLOR_BASE_FORMAT_S16S16 | SCE_GXM_COLOR_SWIZZLE2_GR, + SCE_GXM_COLOR_FORMAT_S16S16_RG = SCE_GXM_COLOR_BASE_FORMAT_S16S16 | SCE_GXM_COLOR_SWIZZLE2_RG, + + SCE_GXM_COLOR_FORMAT_U16_R = SCE_GXM_COLOR_BASE_FORMAT_U16 | SCE_GXM_COLOR_SWIZZLE1_R, + SCE_GXM_COLOR_FORMAT_U16_G = SCE_GXM_COLOR_BASE_FORMAT_U16 | SCE_GXM_COLOR_SWIZZLE1_G, + + SCE_GXM_COLOR_FORMAT_U16U16_GR = SCE_GXM_COLOR_BASE_FORMAT_U16U16 | SCE_GXM_COLOR_SWIZZLE2_GR, + SCE_GXM_COLOR_FORMAT_U16U16_RG = SCE_GXM_COLOR_BASE_FORMAT_U16U16 | SCE_GXM_COLOR_SWIZZLE2_RG, + + SCE_GXM_COLOR_FORMAT_U2U10U10U10_ABGR = SCE_GXM_COLOR_BASE_FORMAT_U2U10U10U10 | SCE_GXM_COLOR_SWIZZLE4_ABGR, + SCE_GXM_COLOR_FORMAT_U2U10U10U10_ARGB = SCE_GXM_COLOR_BASE_FORMAT_U2U10U10U10 | SCE_GXM_COLOR_SWIZZLE4_ARGB, + SCE_GXM_COLOR_FORMAT_U10U10U10U2_RGBA = SCE_GXM_COLOR_BASE_FORMAT_U2U10U10U10 | SCE_GXM_COLOR_SWIZZLE4_RGBA, + SCE_GXM_COLOR_FORMAT_U10U10U10U2_BGRA = SCE_GXM_COLOR_BASE_FORMAT_U2U10U10U10 | SCE_GXM_COLOR_SWIZZLE4_BGRA, + + SCE_GXM_COLOR_FORMAT_U8_R = SCE_GXM_COLOR_BASE_FORMAT_U8 | SCE_GXM_COLOR_SWIZZLE1_R, + SCE_GXM_COLOR_FORMAT_U8_A = SCE_GXM_COLOR_BASE_FORMAT_U8 | SCE_GXM_COLOR_SWIZZLE1_A, + + SCE_GXM_COLOR_FORMAT_S8_R = SCE_GXM_COLOR_BASE_FORMAT_S8 | SCE_GXM_COLOR_SWIZZLE1_R, + SCE_GXM_COLOR_FORMAT_S8_A = SCE_GXM_COLOR_BASE_FORMAT_S8 | SCE_GXM_COLOR_SWIZZLE1_A, + + SCE_GXM_COLOR_FORMAT_U6S5S5_BGR = SCE_GXM_COLOR_BASE_FORMAT_S5S5U6 | SCE_GXM_COLOR_SWIZZLE3_BGR, + SCE_GXM_COLOR_FORMAT_S5S5U6_RGB = SCE_GXM_COLOR_BASE_FORMAT_S5S5U6 | SCE_GXM_COLOR_SWIZZLE3_RGB, + + SCE_GXM_COLOR_FORMAT_U8U8_GR = SCE_GXM_COLOR_BASE_FORMAT_U8U8 | SCE_GXM_COLOR_SWIZZLE2_GR, + SCE_GXM_COLOR_FORMAT_U8U8_RG = SCE_GXM_COLOR_BASE_FORMAT_U8U8 | SCE_GXM_COLOR_SWIZZLE2_RG, + SCE_GXM_COLOR_FORMAT_U8U8_RA = SCE_GXM_COLOR_BASE_FORMAT_U8U8 | SCE_GXM_COLOR_SWIZZLE2_RA, + SCE_GXM_COLOR_FORMAT_U8U8_AR = SCE_GXM_COLOR_BASE_FORMAT_U8U8 | SCE_GXM_COLOR_SWIZZLE2_AR, + + SCE_GXM_COLOR_FORMAT_S8S8_GR = SCE_GXM_COLOR_BASE_FORMAT_S8S8 | SCE_GXM_COLOR_SWIZZLE2_GR, + SCE_GXM_COLOR_FORMAT_S8S8_RG = SCE_GXM_COLOR_BASE_FORMAT_S8S8 | SCE_GXM_COLOR_SWIZZLE2_RG, + SCE_GXM_COLOR_FORMAT_S8S8_RA = SCE_GXM_COLOR_BASE_FORMAT_S8S8 | SCE_GXM_COLOR_SWIZZLE2_RA, + SCE_GXM_COLOR_FORMAT_S8S8_AR = SCE_GXM_COLOR_BASE_FORMAT_S8S8 | SCE_GXM_COLOR_SWIZZLE2_AR, + + SCE_GXM_COLOR_FORMAT_U8S8S8U8_ABGR = SCE_GXM_COLOR_BASE_FORMAT_U8S8S8U8 | SCE_GXM_COLOR_SWIZZLE4_ABGR, + SCE_GXM_COLOR_FORMAT_U8U8S8S8_ARGB = SCE_GXM_COLOR_BASE_FORMAT_U8S8S8U8 | SCE_GXM_COLOR_SWIZZLE4_ARGB, + SCE_GXM_COLOR_FORMAT_U8S8S8U8_RGBA = SCE_GXM_COLOR_BASE_FORMAT_U8S8S8U8 | SCE_GXM_COLOR_SWIZZLE4_RGBA, + SCE_GXM_COLOR_FORMAT_S8S8U8U8_BGRA = SCE_GXM_COLOR_BASE_FORMAT_U8S8S8U8 | SCE_GXM_COLOR_SWIZZLE4_BGRA, + + SCE_GXM_COLOR_FORMAT_S8S8S8S8_ABGR = SCE_GXM_COLOR_BASE_FORMAT_S8S8S8S8 | SCE_GXM_COLOR_SWIZZLE4_ABGR, + SCE_GXM_COLOR_FORMAT_S8S8S8S8_ARGB = SCE_GXM_COLOR_BASE_FORMAT_S8S8S8S8 | SCE_GXM_COLOR_SWIZZLE4_ARGB, + SCE_GXM_COLOR_FORMAT_S8S8S8S8_RGBA = SCE_GXM_COLOR_BASE_FORMAT_S8S8S8S8 | SCE_GXM_COLOR_SWIZZLE4_RGBA, + SCE_GXM_COLOR_FORMAT_S8S8S8S8_BGRA = SCE_GXM_COLOR_BASE_FORMAT_S8S8S8S8 | SCE_GXM_COLOR_SWIZZLE4_BGRA, + + SCE_GXM_COLOR_FORMAT_F16F16F16F16_ABGR = SCE_GXM_COLOR_BASE_FORMAT_F16F16F16F16 | SCE_GXM_COLOR_SWIZZLE4_ABGR, + SCE_GXM_COLOR_FORMAT_F16F16F16F16_ARGB = SCE_GXM_COLOR_BASE_FORMAT_F16F16F16F16 | SCE_GXM_COLOR_SWIZZLE4_ARGB, + SCE_GXM_COLOR_FORMAT_F16F16F16F16_RGBA = SCE_GXM_COLOR_BASE_FORMAT_F16F16F16F16 | SCE_GXM_COLOR_SWIZZLE4_RGBA, + SCE_GXM_COLOR_FORMAT_F16F16F16F16_BGRA = SCE_GXM_COLOR_BASE_FORMAT_F16F16F16F16 | SCE_GXM_COLOR_SWIZZLE4_BGRA, + + SCE_GXM_COLOR_FORMAT_F32F32_GR = SCE_GXM_COLOR_BASE_FORMAT_F32F32 | SCE_GXM_COLOR_SWIZZLE2_GR, + SCE_GXM_COLOR_FORMAT_F32F32_RG = SCE_GXM_COLOR_BASE_FORMAT_F32F32 | SCE_GXM_COLOR_SWIZZLE2_RG, + + SCE_GXM_COLOR_FORMAT_F10F11F11_BGR = SCE_GXM_COLOR_BASE_FORMAT_F11F11F10 | SCE_GXM_COLOR_SWIZZLE3_BGR, + SCE_GXM_COLOR_FORMAT_F11F11F10_RGB = SCE_GXM_COLOR_BASE_FORMAT_F11F11F10 | SCE_GXM_COLOR_SWIZZLE3_RGB, + + SCE_GXM_COLOR_FORMAT_SE5M9M9M9_BGR = SCE_GXM_COLOR_BASE_FORMAT_SE5M9M9M9 | SCE_GXM_COLOR_SWIZZLE3_BGR, + SCE_GXM_COLOR_FORMAT_SE5M9M9M9_RGB = SCE_GXM_COLOR_BASE_FORMAT_SE5M9M9M9 | SCE_GXM_COLOR_SWIZZLE3_RGB, + + SCE_GXM_COLOR_FORMAT_U2F10F10F10_ABGR = SCE_GXM_COLOR_BASE_FORMAT_U2F10F10F10 | SCE_GXM_COLOR_SWIZZLE4_ABGR, + SCE_GXM_COLOR_FORMAT_U2F10F10F10_ARGB = SCE_GXM_COLOR_BASE_FORMAT_U2F10F10F10 | SCE_GXM_COLOR_SWIZZLE4_ARGB, + SCE_GXM_COLOR_FORMAT_F10F10F10U2_RGBA = SCE_GXM_COLOR_BASE_FORMAT_U2F10F10F10 | SCE_GXM_COLOR_SWIZZLE4_RGBA, + SCE_GXM_COLOR_FORMAT_F10F10F10U2_BGRA = SCE_GXM_COLOR_BASE_FORMAT_U2F10F10F10 | SCE_GXM_COLOR_SWIZZLE4_BGRA, + + // Legacy formats + + SCE_GXM_COLOR_FORMAT_A8B8G8R8 = SCE_GXM_COLOR_FORMAT_U8U8U8U8_ABGR, + SCE_GXM_COLOR_FORMAT_A8R8G8B8 = SCE_GXM_COLOR_FORMAT_U8U8U8U8_ARGB, + SCE_GXM_COLOR_FORMAT_R5G6B5 = SCE_GXM_COLOR_FORMAT_U5U6U5_RGB, + SCE_GXM_COLOR_FORMAT_A1R5G5B5 = SCE_GXM_COLOR_FORMAT_U1U5U5U5_ARGB, + SCE_GXM_COLOR_FORMAT_A4R4G4B4 = SCE_GXM_COLOR_FORMAT_U4U4U4U4_ARGB, + SCE_GXM_COLOR_FORMAT_A8 = SCE_GXM_COLOR_FORMAT_U8_A +}; + +enum SceGxmColorSurfaceType { + SCE_GXM_COLOR_SURFACE_LINEAR = 0x00000000u, + SCE_GXM_COLOR_SURFACE_TILED = 0x04000000u, + SCE_GXM_COLOR_SURFACE_SWIZZLED = 0x08000000u +}; + +enum SceGxmColorSurfaceGammaMode { + SCE_GXM_COLOR_SURFACE_GAMMA_NONE = 0x00000000u, + SCE_GXM_COLOR_SURFACE_GAMMA_R = 0x00001000u, + SCE_GXM_COLOR_SURFACE_GAMMA_GR = 0x00003000u, + SCE_GXM_COLOR_SURFACE_GAMMA_BGR = 0x00001000u +}; + +enum SceGxmColorSurfaceScaleMode { + SCE_GXM_COLOR_SURFACE_SCALE_NONE = 0x00000000u, + SCE_GXM_COLOR_SURFACE_SCALE_MSAA_DOWNSCALE = 0x00000001u +}; + +enum SceGxmOutputRegisterSize { + SCE_GXM_OUTPUT_REGISTER_SIZE_32BIT = 0x00000000u, + SCE_GXM_OUTPUT_REGISTER_SIZE_64BIT = 0x00000001u +}; + +enum SceGxmOutputRegisterFormat { + SCE_GXM_OUTPUT_REGISTER_FORMAT_DECLARED, + SCE_GXM_OUTPUT_REGISTER_FORMAT_UCHAR4, + SCE_GXM_OUTPUT_REGISTER_FORMAT_CHAR4, + SCE_GXM_OUTPUT_REGISTER_FORMAT_USHORT2, + SCE_GXM_OUTPUT_REGISTER_FORMAT_SHORT2, + SCE_GXM_OUTPUT_REGISTER_FORMAT_HALF4, + SCE_GXM_OUTPUT_REGISTER_FORMAT_HALF2, + SCE_GXM_OUTPUT_REGISTER_FORMAT_FLOAT2, + SCE_GXM_OUTPUT_REGISTER_FORMAT_FLOAT +}; + +enum SceGxmTextureGammaMode { + SCE_GXM_TEXTURE_GAMMA_NONE = 0x00000000u, + SCE_GXM_TEXTURE_GAMMA_R = 0x08000000u, + SCE_GXM_TEXTURE_GAMMA_GR = 0x18000000u, + SCE_GXM_TEXTURE_GAMMA_BGR = 0x08000000u +}; + +enum SceGxmDepthStencilForceLoadMode { + SCE_GXM_DEPTH_STENCIL_FORCE_LOAD_DISABLED = 0x00000000u, + SCE_GXM_DEPTH_STENCIL_FORCE_LOAD_ENABLED = 0x00000002u +}; + +enum SceGxmDepthStencilForceStoreMode { + SCE_GXM_DEPTH_STENCIL_FORCE_STORE_DISABLED = 0x00000000u, + SCE_GXM_DEPTH_STENCIL_FORCE_STORE_ENABLED = 0x00000004u +}; + +enum SceGxmColorSurfaceDitherMode { + SCE_GXM_COLOR_SURFACE_DITHER_DISABLED = 0x00000000u, + SCE_GXM_COLOR_SURFACE_DITHER_ENABLED = 0x00000008u +}; + +enum SceGxmDepthStencilSurfaceType { + SCE_GXM_DEPTH_STENCIL_SURFACE_LINEAR = 0x00000000u, + SCE_GXM_DEPTH_STENCIL_SURFACE_TILED = 0x00011000u +}; + +enum SceGxmMemoryAttribFlags { + SCE_GXM_MEMORY_ATTRIB_READ = 1, + SCE_GXM_MEMORY_ATTRIB_WRITE = 2, + SCE_GXM_MEMORY_ATTRIB_RW = (SCE_GXM_MEMORY_ATTRIB_READ | SCE_GXM_MEMORY_ATTRIB_WRITE) +}; + +enum SceGxmMultisampleMode { + SCE_GXM_MULTISAMPLE_NONE, + SCE_GXM_MULTISAMPLE_2X, + SCE_GXM_MULTISAMPLE_4X +}; + +enum SceGxmAttributeFormat { + SCE_GXM_ATTRIBUTE_FORMAT_U8, + SCE_GXM_ATTRIBUTE_FORMAT_S8, + SCE_GXM_ATTRIBUTE_FORMAT_U16, + SCE_GXM_ATTRIBUTE_FORMAT_S16, + SCE_GXM_ATTRIBUTE_FORMAT_U8N, + SCE_GXM_ATTRIBUTE_FORMAT_S8N, + SCE_GXM_ATTRIBUTE_FORMAT_U16N, + SCE_GXM_ATTRIBUTE_FORMAT_S16N, + SCE_GXM_ATTRIBUTE_FORMAT_F16, + SCE_GXM_ATTRIBUTE_FORMAT_F32, + SCE_GXM_ATTRIBUTE_FORMAT_UNTYPED +}; + +enum SceGxmErrorCode { + SCE_GXM_ERROR_UNINITIALIZED = 0x805B0000, + SCE_GXM_ERROR_ALREADY_INITIALIZED = 0x805B0001, + SCE_GXM_ERROR_OUT_OF_MEMORY = 0x805B0002, + SCE_GXM_ERROR_INVALID_VALUE = 0x805B0003, + SCE_GXM_ERROR_INVALID_POINTER = 0x805B0004, + SCE_GXM_ERROR_INVALID_ALIGNMENT = 0x805B0005, + SCE_GXM_ERROR_NOT_WITHIN_SCENE = 0x805B0006, + SCE_GXM_ERROR_WITHIN_SCENE = 0x805B0007, + SCE_GXM_ERROR_NULL_PROGRAM = 0x805B0008, + SCE_GXM_ERROR_UNSUPPORTED = 0x805B0009, + SCE_GXM_ERROR_PATCHER_INTERNAL = 0x805B000A, + SCE_GXM_ERROR_RESERVE_FAILED = 0x805B000B, + SCE_GXM_ERROR_PROGRAM_IN_USE = 0x805B000C, + SCE_GXM_ERROR_INVALID_INDEX_COUNT = 0x805B000D, + SCE_GXM_ERROR_INVALID_POLYGON_MODE = 0x805B000E, + SCE_GXM_ERROR_INVALID_SAMPLER_RESULT_TYPE_PRECISION = 0x805B000F, + SCE_GXM_ERROR_INVALID_SAMPLER_RESULT_TYPE_COMPONENT_COUNT = 0x805B0010, + SCE_GXM_ERROR_UNIFORM_BUFFER_NOT_RESERVED = 0x805B0011, + SCE_GXM_ERROR_INVALID_AUXILIARY_SURFACE = 0x805B0013, + SCE_GXM_ERROR_INVALID_PRECOMPUTED_DRAW = 0x805B0014, + SCE_GXM_ERROR_INVALID_PRECOMPUTED_VERTEX_STATE = 0x805B0015, + SCE_GXM_ERROR_INVALID_PRECOMPUTED_FRAGMENT_STATE = 0x805B0016, + SCE_GXM_ERROR_DRIVER = 0x805B0017 +}; + +struct SceGxmVertexStream { + uint16_t stride; + uint16_t indexSource; +}; + +struct SceGxmProgram; +struct SceGxmVertexProgram; +struct SceGxmFragmentProgram; + struct SceGxmBlendInfo { SceGxmColorMask colorMask : 8; SceGxmBlendFunc colorFunc : 4; @@ -68,7 +1009,14 @@ struct SceGxmColorSurface { uint32_t pbeSidebandWord; uint32_t pbeEmitWords[6]; uint32_t outputRegisterSize; - emu::SceGxmTexture backgroundTex; + SceGxmTexture backgroundTex; +}; + +struct SceGxmValidRegion { + unsigned int xMin; + unsigned int yMin; + unsigned int xMax; + unsigned int yMax; }; struct SceGxmDepthStencilSurface { @@ -92,7 +1040,6 @@ struct SceGxmContextParams { uint32_t fragmentUsseRingBufferMemSize; uint32_t fragmentUsseRingBufferOffset; }; -} // namespace emu typedef std::array, 15> UniformBuffers; typedef std::array, SCE_GXM_MAX_VERTEX_STREAMS> StreamDatas; @@ -134,11 +1081,11 @@ struct GXMRecordState { struct GxmContextState { // Constant after initialisation. - emu::SceGxmContextParams params; + SceGxmContextParams params; // Surfaces. - emu::SceGxmColorSurface color_surface; - emu::SceGxmDepthStencilSurface depth_stencil_surface; + SceGxmColorSurface color_surface; + SceGxmDepthStencilSurface depth_stencil_surface; // Clipping. SceGxmRegionClipMode region_clip_mode = SCE_GXM_REGION_CLIP_NONE; @@ -193,7 +1140,7 @@ struct GxmContextState { int back_depth_bias_units = 0; // Textures. - std::array fragment_textures; + std::array fragment_textures; // Fragment Sync Object Ptr fragment_sync_object; @@ -205,7 +1152,6 @@ struct SceGxmFragmentProgram { std::unique_ptr renderer_data; }; -namespace emu { struct SceGxmNotification { Ptr address; uint32_t value; @@ -216,7 +1162,6 @@ enum SceGxmProgramType : std::uint8_t { Vertex = 0, Fragment = 1 }; -} // namespace emu enum SceGxmVertexProgramOutputs : int { _SCE_GXM_VERTEX_PROGRAM_OUTPUT_INVALID = 0, @@ -371,14 +1316,14 @@ public: std::uint32_t container_count; std::uint32_t container_offset; - emu::SceGxmProgramType get_type() const { - return static_cast(type & 1); + SceGxmProgramType get_type() const { + return static_cast(type & 1); } bool is_vertex() const { - return get_type() == emu::SceGxmProgramType::Vertex; + return get_type() == SceGxmProgramType::Vertex; } bool is_fragment() const { - return get_type() == emu::SceGxmProgramType::Fragment; + return get_type() == SceGxmProgramType::Fragment; } uint64_t *primary_program_start() const { return (uint64_t *)((uint8_t *)&primary_program_offset + primary_program_offset); @@ -439,7 +1384,6 @@ struct SceGxmRegisteredProgram { Ptr program; }; -namespace emu { typedef Ptr SceGxmShaderPatcherId; typedef Ptr SceGxmShaderPatcherHostAllocCallback(Ptr userData, uint32_t size); @@ -468,9 +1412,7 @@ struct SceGxmShaderPatcherParams { uint32_t fragmentUsseMemSize; uint32_t fragmentUsseOffset; }; -} // namespace emu -namespace emu { struct SceGxmVertexAttribute { uint16_t streamIndex; uint16_t offset; @@ -480,13 +1422,12 @@ struct SceGxmVertexAttribute { }; static_assert(sizeof(SceGxmVertexAttribute) == 8, "Structure has been incorrectly packed."); -} // namespace emu struct SceGxmVertexProgram { size_t reference_count = 1; Ptr program; std::vector streams; - std::vector attributes; + std::vector attributes; std::unique_ptr renderer_data; }; diff --git a/vita3k/gxm/src/textures.cpp b/vita3k/gxm/src/textures.cpp index 2e10c5905..0a25904b7 100644 --- a/vita3k/gxm/src/textures.cpp +++ b/vita3k/gxm/src/textures.cpp @@ -1,21 +1,21 @@ #include namespace gxm { -size_t get_width(const emu::SceGxmTexture *texture) { +size_t get_width(const SceGxmTexture *texture) { if (texture->type << 29 != SCE_GXM_TEXTURE_SWIZZLED) { return texture->width + 1; } return 1ull << (texture->width & 0xF); } -size_t get_height(const emu::SceGxmTexture *texture) { +size_t get_height(const SceGxmTexture *texture) { if (texture->type << 29 != SCE_GXM_TEXTURE_SWIZZLED) { return texture->height + 1; } return 1ull << (texture->height & 0xF); } -SceGxmTextureFormat get_format(const emu::SceGxmTexture *texture) { +SceGxmTextureFormat get_format(const SceGxmTexture *texture) { return static_cast( texture->base_format << 24 | texture->format0 << 31 | texture->swizzle_format << 12); } diff --git a/vita3k/host/include/host/app_util.h b/vita3k/host/include/host/app_util.h index d044075e6..5e81650dc 100644 --- a/vita3k/host/include/host/app_util.h +++ b/vita3k/host/include/host/app_util.h @@ -1,10 +1,14 @@ #pragma once #include +#include -#include - -namespace emu { +typedef unsigned int SceAppUtilBootAttribute; +typedef unsigned int SceAppUtilAppEventType; +typedef unsigned int SceAppUtilSaveDataSlotId; +typedef unsigned int SceAppUtilSaveDataSlotStatus; +typedef unsigned int SceAppUtilAppParamId; +typedef unsigned int SceAppUtilBgdlStatusType; #define SCE_APPUTIL_NP_DRM_ADDCONT_ID_SIZE 17 @@ -46,7 +50,7 @@ struct SceAppUtilSaveDataSlotParam { struct SceAppUtilSaveDataFileSlot { unsigned int id; - Ptr slotParam; + Ptr slotParam; uint8_t reserved[32]; }; @@ -62,7 +66,7 @@ struct SceAppUtilSaveDataSlot { SceAppUtilSaveDataSlotId id; SceAppUtilSaveDataSlotStatus status; int userParam; - Ptr emptyParam; + Ptr emptyParam; }; struct SceAppUtilSaveDataRemoveItem { @@ -70,6 +74,5 @@ struct SceAppUtilSaveDataRemoveItem { int mode; uint8_t reserved[36]; }; -} // namespace emu std::string construct_slotparam_path(const unsigned int data); diff --git a/vita3k/host/include/host/import_fn.h b/vita3k/host/include/host/import_fn.h index 91628c741..d433742af 100644 --- a/vita3k/host/include/host/import_fn.h +++ b/vita3k/host/include/host/import_fn.h @@ -17,7 +17,7 @@ #pragma once -#include +#include #include diff --git a/vita3k/host/include/host/load_self.h b/vita3k/host/include/host/load_self.h index b5e3c9078..79479f968 100644 --- a/vita3k/host/include/host/load_self.h +++ b/vita3k/host/include/host/load_self.h @@ -17,7 +17,7 @@ #pragma once -#include +#include #include diff --git a/vita3k/host/include/host/state.h b/vita3k/host/include/host/state.h index 8f7d2bf00..07f4a9c33 100644 --- a/vita3k/host/include/host/state.h +++ b/vita3k/host/include/host/state.h @@ -37,8 +37,6 @@ #include #endif -#include - #include #include #include diff --git a/vita3k/host/src/load_self.cpp b/vita3k/host/src/load_self.cpp index fe9f6c21a..c596e8631 100644 --- a/vita3k/host/src/load_self.cpp +++ b/vita3k/host/src/load_self.cpp @@ -437,7 +437,7 @@ SceUID load_self(Ptr &entry_point, KernelState &kernel, MemState &me const uint8_t *const module_info_segment_bytes = module_info_segment_address.get(mem); const sce_module_info_raw *const module_info = reinterpret_cast(module_info_segment_bytes + module_info_offset); - const SceKernelModuleInfoPtr sceKernelModuleInfo = std::make_shared(); + const SceKernelModuleInfoPtr sceKernelModuleInfo = std::make_shared(); sceKernelModuleInfo->size = sizeof(*sceKernelModuleInfo); strncpy(sceKernelModuleInfo->module_name, module_info->name, 28); //unk28 @@ -481,7 +481,7 @@ SceUID load_self(Ptr &entry_point, KernelState &kernel, MemState &me continue; } - emu::SceKernelSegmentInfo &segment = sceKernelModuleInfo->segments[segment_index]; + SceKernelSegmentInfo &segment = sceKernelModuleInfo->segments[segment_index]; segment.size = sizeof(segment); segment.vaddr = it->second.addr; segment.memsz = segments[segment_index].p_memsz; diff --git a/vita3k/io/CMakeLists.txt b/vita3k/io/CMakeLists.txt index c231384f5..602f4a156 100644 --- a/vita3k/io/CMakeLists.txt +++ b/vita3k/io/CMakeLists.txt @@ -19,4 +19,4 @@ add_library( ) target_include_directories(io PUBLIC include) -target_link_libraries(io PUBLIC better-enums dirent mem rtc util vita-headers) +target_link_libraries(io PUBLIC better-enums dirent mem rtc util) diff --git a/vita3k/io/include/io/functions.h b/vita3k/io/include/io/functions.h index 237ab3ed7..ff75dcc14 100644 --- a/vita3k/io/include/io/functions.h +++ b/vita3k/io/include/io/functions.h @@ -20,9 +20,6 @@ #undef st_atime #undef st_ctime #undef st_mtime -#include -#include -#include #include #include @@ -54,7 +51,7 @@ int close_file(IOState &io, SceUID fd, const char *export_name); int remove_file(IOState &io, const char *file, const std::string &pref_path, const char *export_name); SceUID open_dir(IOState &io, const char *path, const std::string &pref_path, const char *export_name); -SceUID read_dir(IOState &io, SceUID fd, emu::SceIoDirent *dent, const std::string &pref_path, const SceUInt64 base_tick, const char *export_name); +SceUID read_dir(IOState &io, SceUID fd, SceIoDirent *dent, const std::string &pref_path, const SceUInt64 base_tick, const char *export_name); int create_dir(IOState &io, const char *dir, int mode, const std::string &pref_path, const char *export_name, const bool recursive = false); int close_dir(IOState &io, SceUID fd, const char *export_name); int remove_dir(IOState &io, const char *dir, const std::string &pref_path, const char *export_name); diff --git a/vita3k/io/include/io/types.h b/vita3k/io/include/io/types.h index a6b3ef9c8..a19543dad 100644 --- a/vita3k/io/include/io/types.h +++ b/vita3k/io/include/io/types.h @@ -20,11 +20,82 @@ #undef st_atime #undef st_ctime #undef st_mtime -#include #include +#include -namespace emu { +typedef enum SceIoMode { + SCE_O_RDONLY = 0x0001, //!< Read-only + SCE_O_WRONLY = 0x0002, //!< Write-only + SCE_O_RDWR = (SCE_O_RDONLY | SCE_O_WRONLY), //!< Read/Write + SCE_O_NBLOCK = 0x0004, //!< Non blocking + SCE_O_DIROPEN = 0x0008, //!< Internal use for ::sceIoDopen + SCE_O_RDLOCK = 0x0010, //!< Read locked (non-shared) + SCE_O_WRLOCK = 0x0020, //!< Write locked (non-shared) + SCE_O_APPEND = 0x0100, //!< Append + SCE_O_CREAT = 0x0200, //!< Create + SCE_O_TRUNC = 0x0400, //!< Truncate + SCE_O_EXCL = 0x0800, //!< Exclusive create + SCE_O_SCAN = 0x1000, //!< Scan type + SCE_O_RCOM = 0x2000, //!< Remote command entry + SCE_O_NOBUF = 0x4000, //!< Number device buffer + SCE_O_NOWAIT = 0x8000, //!< Asynchronous I/O + SCE_O_FDEXCL = 0x01000000, //!< Exclusive access + SCE_O_PWLOCK = 0x02000000, //!< Power control lock + SCE_O_FGAMEDATA = 0x40000000 //!< Gamedata access +} SceIoMode; + +typedef enum SceIoAccessMode { + SCE_S_IXUSR = 0x0001, //!< User execute permission + SCE_S_IWUSR = 0x0002, //!< User write permission + SCE_S_IRUSR = 0x0004, //!< User read permission + SCE_S_IRWXU = 0x0007, //!< User access rights mask + + SCE_S_IXGRP = 0x0008, //!< Group execute permission + SCE_S_IWGRP = 0x0010, //!< Group write permission + SCE_S_IRGRP = 0x0020, //!< Group read permission + SCE_S_IRWXG = 0x0038, //!< Group access rights mask + + SCE_S_IXOTH = 0x0040, //!< Others execute permission + SCE_S_IWOTH = 0x0080, //!< Others write permission + SCE_S_IROTH = 0x0100, //!< Others read permission + SCE_S_IRWXO = 0x01C0, //!< Others access rights mask + + SCE_S_ISVTX = 0x0200, //!< Sticky + SCE_S_ISGID = 0x0400, //!< Set GID + SCE_S_ISUID = 0x0800, //!< Set UID + + SCE_S_IFDIR = 0x1000, //!< Directory + SCE_S_IFREG = 0x2000, //!< Regular file + SCE_S_IFLNK = 0x4000, //!< Symbolic link + SCE_S_IFMT = 0xF000, //!< Format bits mask +} SceIoAccessMode; + +enum SceIoFileMode { + SCE_SO_IXOTH = 0x0001, //!< Hidden execute permission + SCE_SO_IWOTH = 0x0002, //!< Hidden write permission + SCE_SO_IROTH = 0x0004, //!< Hidden read permission + SCE_SO_IFLNK = 0x0008, //!< Symbolic link + SCE_SO_IFDIR = 0x0010, //!< Directory + SCE_SO_IFREG = 0x0020, //!< Regular file + SCE_SO_IFMT = 0x0038, //!< Format mask +}; + +enum SceIoSeekMode { + SCE_SEEK_SET, //!< Starts from the begin of the file + SCE_SEEK_CUR, //!< Starts from current position + SCE_SEEK_END //!< Starts from the end of the file +}; + +struct SceIoStat { + SceMode st_mode; //!< One or more ::SceIoAccessMode + unsigned int st_attr; //!< One or more ::SceIoFileMode + SceOff st_size; //!< Size of the file in bytes + SceDateTime st_ctime; //!< Creation time + SceDateTime st_atime; //!< Last access time + SceDateTime st_mtime; //!< Last modification time + unsigned int st_private[6]; //!< Device-specific data +}; struct SceIoDirent { SceIoStat d_stat; @@ -32,4 +103,3 @@ struct SceIoDirent { Ptr d_private; int dummy; }; -} // namespace emu diff --git a/vita3k/io/include/io/util.h b/vita3k/io/include/io/util.h index 9eb70b15e..650c3583f 100644 --- a/vita3k/io/include/io/util.h +++ b/vita3k/io/include/io/util.h @@ -20,13 +20,11 @@ #undef st_atime #undef st_ctime #undef st_mtime -#include -#include -#include +#include #include -typedef SceUInt8 TtyType; +typedef uint8_t TtyType; inline constexpr TtyType TTY_UNKNOWN = 0b00; inline constexpr TtyType TTY_IN = 0b01; diff --git a/vita3k/io/include/io/vfs.h b/vita3k/io/include/io/vfs.h index 8350c065c..4af66612e 100644 --- a/vita3k/io/include/io/vfs.h +++ b/vita3k/io/include/io/vfs.h @@ -17,9 +17,8 @@ #pragma once -#include - #include +#include class VitaIoDevice; diff --git a/vita3k/io/src/io.cpp b/vita3k/io/src/io.cpp index 57e693613..ec72be0f6 100644 --- a/vita3k/io/src/io.cpp +++ b/vita3k/io/src/io.cpp @@ -474,7 +474,7 @@ SceUID open_dir(IOState &io, const char *path, const std::string &pref_path, con return fd; } -SceUID read_dir(IOState &io, const SceUID fd, emu::SceIoDirent *dent, const std::string &pref_path, const SceUInt64 base_tick, const char *export_name) { +SceUID read_dir(IOState &io, const SceUID fd, SceIoDirent *dent, const std::string &pref_path, const SceUInt64 base_tick, const char *export_name) { assert(dent != nullptr); memset(dent->d_name, '\0', sizeof(dent->d_name)); diff --git a/vita3k/kernel/CMakeLists.txt b/vita3k/kernel/CMakeLists.txt index 6f5333c8f..05be28c22 100644 --- a/vita3k/kernel/CMakeLists.txt +++ b/vita3k/kernel/CMakeLists.txt @@ -15,5 +15,5 @@ add_library( ) target_include_directories(kernel PUBLIC include) -target_link_libraries(kernel PUBLIC cpu mem util vita-headers) +target_link_libraries(kernel PUBLIC rtc cpu mem util) target_link_libraries(kernel PRIVATE sdl2 miniz vita-toolchain) diff --git a/vita3k/kernel/include/kernel/functions.h b/vita3k/kernel/include/kernel/functions.h index 0368a9ac9..be318ce39 100644 --- a/vita3k/kernel/include/kernel/functions.h +++ b/vita3k/kernel/include/kernel/functions.h @@ -17,7 +17,7 @@ #pragma once -#include +#include template class Ptr; diff --git a/vita3k/kernel/include/kernel/state.h b/vita3k/kernel/include/kernel/state.h index 93aa7b5a0..1b0f6d62a 100644 --- a/vita3k/kernel/include/kernel/state.h +++ b/vita3k/kernel/include/kernel/state.h @@ -21,9 +21,7 @@ #include #include -#include -#include -#include +#include #include #include @@ -35,7 +33,7 @@ struct ThreadState; struct SDL_Thread; -typedef std::shared_ptr SceKernelMemBlockInfoPtr; +typedef std::shared_ptr SceKernelMemBlockInfoPtr; typedef std::map Blocks; typedef std::map>> SlotToAddress; typedef std::map ThreadToSlotToAddress; @@ -43,7 +41,7 @@ typedef std::shared_ptr ThreadStatePtr; typedef std::map ThreadStatePtrs; typedef std::shared_ptr ThreadPtr; typedef std::map ThreadPtrs; -typedef std::shared_ptr SceKernelModuleInfoPtr; +typedef std::shared_ptr SceKernelModuleInfoPtr; typedef std::map SceKernelModuleInfoPtrs; typedef std::map ExportNids; @@ -161,10 +159,6 @@ struct Condvar : SyncPrimitive { typedef std::shared_ptr CondvarPtr; typedef std::map CondvarPtrs; -namespace emu { -typedef Ptr argp)> SceKernelThreadEntry; -} - struct WaitingThreadState { std::string name; // for debugging }; diff --git a/vita3k/kernel/include/kernel/thread/sync_primitives.h b/vita3k/kernel/include/kernel/thread/sync_primitives.h index 9ab06822a..c829ddc53 100644 --- a/vita3k/kernel/include/kernel/thread/sync_primitives.h +++ b/vita3k/kernel/include/kernel/thread/sync_primitives.h @@ -17,8 +17,6 @@ #pragma once -#include - #include enum class SyncWeight { diff --git a/vita3k/kernel/include/kernel/thread/thread_functions.h b/vita3k/kernel/include/kernel/thread/thread_functions.h index b2bcba488..2ea8d5905 100644 --- a/vita3k/kernel/include/kernel/thread/thread_functions.h +++ b/vita3k/kernel/include/kernel/thread/thread_functions.h @@ -19,7 +19,7 @@ #include #include -#include +//#include #include #include diff --git a/vita3k/kernel/include/kernel/types.h b/vita3k/kernel/include/kernel/types.h index 19889b98a..4f2319099 100644 --- a/vita3k/kernel/include/kernel/types.h +++ b/vita3k/kernel/include/kernel/types.h @@ -1,9 +1,6 @@ #pragma once #include - -#include -#include -#include +#include #include @@ -18,7 +15,7 @@ #define SCE_KERNEL_ATTR_TH_FIFO 0x00000000U #define SCE_KERNEL_ATTR_TH_PRIO 0x00002000U -// #define SCE_KERNEL_MUTEX_ATTR_RECURSIVE 0x2U +#define SCE_KERNEL_MUTEX_ATTR_RECURSIVE 0x2U #define SCE_KERNEL_LW_MUTEX_ATTR_TH_FIFO SCE_KERNEL_ATTR_TH_FIFO #define SCE_KERNEL_LW_MUTEX_ATTR_TH_PRIO SCE_KERNEL_ATTR_TH_PRIO @@ -29,7 +26,444 @@ constexpr size_t MODULE_INFO_NUM_SEGMENTS = 4; -namespace emu { +enum SceKernelModel { + SCE_KERNEL_MODEL_VITA, + SCE_KERNEL_MODEL_VITATV +}; + +enum SceKernelErrorCode { + SCE_KERNEL_OK = 0x0, + SCE_KERNEL_ERROR_ERROR = 0x80020001, + SCE_KERNEL_ERROR_NOT_IMPLEMENTED = 0x80020002, + SCE_KERNEL_ERROR_NOSYS = 0x80020003, + SCE_KERNEL_ERROR_UNSUP = 0x80020004, + SCE_KERNEL_ERROR_INVALID_ARGUMENT = 0x80020005, + SCE_KERNEL_ERROR_ILLEGAL_ADDR = 0x80020006, + SCE_KERNEL_ERROR_ILLEGAL_ALIGNMENT = 0x80020007, + SCE_KERNEL_ERROR_ILLEGAL_PERMISSION = 0x80020008, + SCE_KERNEL_ERROR_INVALID_ARGUMENT_SIZE = 0x80020009, + SCE_KERNEL_ERROR_INVALID_FLAGS = 0x8002000A, + SCE_KERNEL_ERROR_ILLEGAL_SIZE = 0x8002000B, + SCE_KERNEL_ERROR_ILLEGAL_TYPE = 0x8002000C, + SCE_KERNEL_ERROR_ILLEGAL_PATTERN = 0x8002000D, + SCE_KERNEL_ERROR_ILLEGAL_ATTR = 0x8002000E, + SCE_KERNEL_ERROR_ILLEGAL_COUNT = 0x8002000F, + SCE_KERNEL_ERROR_ILLEGAL_MODE = 0x80020010, + SCE_KERNEL_ERROR_ILLEGAL_OPEN_LIMIT = 0x80020011, + SCE_KERNEL_ERROR_ONLY_DEVELOPMENT_MODE = 0x80020012, + SCE_KERNEL_ERROR_DEBUG_ERROR = 0x80021000, + SCE_KERNEL_ERROR_ILLEGAL_DIPSW_NUMBER = 0x80021001, + SCE_KERNEL_ERROR_PA_ERROR = 0x80021100, + SCE_KERNEL_ERROR_PA_NOT_AVAILABLE = 0x80021101, + SCE_KERNEL_ERROR_PA_INVALID_KEY = 0x80021102, + SCE_KERNEL_ERROR_PA_KEY_IS_NOT_SHARED = 0x80021103, + SCE_KERNEL_ERROR_PA_INVALID_SIGNATURE = 0x80021104, + SCE_KERNEL_ERROR_CPU_ERROR = 0x80022000, + SCE_KERNEL_ERROR_MMU_ILLEGAL_L1_TYPE = 0x80022001, + SCE_KERNEL_ERROR_MMU_L2_INDEX_OVERFLOW = 0x80022002, + SCE_KERNEL_ERROR_MMU_L2_SIZE_OVERFLOW = 0x80022003, + SCE_KERNEL_ERROR_INVALID_CPU_AFFINITY = 0x80022004, + SCE_KERNEL_ERROR_INVALID_MEMORY_ACCESS = 0x80022005, + SCE_KERNEL_ERROR_INVALID_MEMORY_ACCESS_PERMISSION = 0x80022006, + SCE_KERNEL_ERROR_VA2PA_FAULT = 0x80022007, + SCE_KERNEL_ERROR_VA2PA_MAPPED = 0x80022008, + SCE_KERNEL_ERROR_VALIDATION_CHECK_FAILED = 0x80022009, + SCE_KERNEL_ERROR_SYSMEM_ERROR = 0x80024000, + SCE_KERNEL_ERROR_INVALID_PROCESS_CONTEXT = 0x80024001, + SCE_KERNEL_ERROR_UID_NAME_TOO_LONG = 0x80024002, + SCE_KERNEL_ERROR_VARANGE_IS_NOT_PHYSICAL_CONTINUOUS = 0x80024003, + SCE_KERNEL_ERROR_PHYADDR_ERROR = 0x80024100, + SCE_KERNEL_ERROR_NO_PHYADDR = 0x80024101, + SCE_KERNEL_ERROR_PHYADDR_USED = 0x80024102, + SCE_KERNEL_ERROR_PHYADDR_NOT_USED = 0x80024103, + SCE_KERNEL_ERROR_NO_IOADDR = 0x80024104, + SCE_KERNEL_ERROR_PHYMEM_ERROR = 0x80024300, + SCE_KERNEL_ERROR_ILLEGAL_PHYPAGE_STATUS = 0x80024301, + SCE_KERNEL_ERROR_NO_FREE_PHYSICAL_PAGE = 0x80024302, + SCE_KERNEL_ERROR_NO_FREE_PHYSICAL_PAGE_UNIT = 0x80024303, + SCE_KERNEL_ERROR_PHYMEMPART_NOT_EMPTY = 0x80024304, + SCE_KERNEL_ERROR_NO_PHYMEMPART_LPDDR2 = 0x80024305, + SCE_KERNEL_ERROR_NO_PHYMEMPART_CDRAM = 0x80024306, + SCE_KERNEL_ERROR_PHYMEMPART_OUT_OF_INDEX = 0x80024307, + SCE_KERNEL_ERROR_CANNOT_GROW_PHYMEMPART = 0x80024308, + SCE_KERNEL_ERROR_NO_FREE_PHYSICAL_PAGE_CDRAM = 0x80024309, + SCE_KERNEL_ERROR_INVALID_SUBBUDGET_ID = 0x8002430A, + SCE_KERNEL_ERROR_FIXEDHEAP_ERROR = 0x80024400, + SCE_KERNEL_ERROR_FIXEDHEAP_ILLEGAL_SIZE = 0x80024401, + SCE_KERNEL_ERROR_FIXEDHEAP_ILLEGAL_INDEX = 0x80024402, + SCE_KERNEL_ERROR_FIXEDHEAP_INDEX_OVERFLOW = 0x80024403, + SCE_KERNEL_ERROR_FIXEDHEAP_NO_CHUNK = 0x80024404, + SCE_KERNEL_ERROR_UID_ERROR = 0x80024500, + SCE_KERNEL_ERROR_INVALID_UID = 0x80024501, + SCE_KERNEL_ERROR_SYSMEM_UID_INVALID_ARGUMENT = 0x80024502, + SCE_KERNEL_ERROR_SYSMEM_INVALID_UID_RANGE = 0x80024503, + SCE_KERNEL_ERROR_SYSMEM_NO_VALID_UID = 0x80024504, + SCE_KERNEL_ERROR_SYSMEM_CANNOT_ALLOCATE_UIDENTRY = 0x80024505, + SCE_KERNEL_ERROR_NOT_PROCESS_UID = 0x80024506, + SCE_KERNEL_ERROR_NOT_KERNEL_UID = 0x80024507, + SCE_KERNEL_ERROR_INVALID_UID_CLASS = 0x80024508, + SCE_KERNEL_ERROR_INVALID_UID_SUBCLASS = 0x80024509, + SCE_KERNEL_ERROR_UID_CANNOT_FIND_BY_NAME = 0x8002450A, + SCE_KERNEL_ERROR_UID_NOT_VISIBLE = 0x8002450B, + SCE_KERNEL_ERROR_UID_MAX_OPEN = 0x8002450C, + SCE_KERNEL_ERROR_UID_RL_OVERFLOW = 0x8002450D, + SCE_KERNEL_ERROR_VIRPAGE_ERROR = 0x80024600, + SCE_KERNEL_ERROR_ILLEGAL_VIRPAGE_TYPE = 0x80024601, + SCE_KERNEL_ERROR_BLOCK_ERROR = 0x80024700, + SCE_KERNEL_ERROR_ILLEGAL_BLOCK_ID = 0x80024701, + SCE_KERNEL_ERROR_ILLEGAL_BLOCK_TYPE = 0x80024702, + SCE_KERNEL_ERROR_BLOCK_IN_USE = 0x80024703, + SCE_KERNEL_ERROR_PARTITION_ERROR = 0x80024800, + SCE_KERNEL_ERROR_ILLEGAL_PARTITION_ID = 0x80024801, + SCE_KERNEL_ERROR_ILLEGAL_PARTITION_INDEX = 0x80024802, + SCE_KERNEL_ERROR_NO_L2PAGETABLE = 0x80024803, + SCE_KERNEL_ERROR_HEAPLIB_ERROR = 0x80024900, + SCE_KERNEL_ERROR_ILLEGAL_HEAP_ID = 0x80024901, + SCE_KERNEL_ERROR_OUT_OF_RANG = 0x80024902, + SCE_KERNEL_ERROR_HEAPLIB_NOMEM = 0x80024903, + SCE_KERNEL_ERROR_HEAPLIB_VERIFY_ERROR = 0x80024904, + SCE_KERNEL_ERROR_SYSMEM_ADDRESS_SPACE_ERROR = 0x80024A00, + SCE_KERNEL_ERROR_INVALID_ADDRESS_SPACE_ID = 0x80024A01, + SCE_KERNEL_ERROR_INVALID_PARTITION_INDEX = 0x80024A02, + SCE_KERNEL_ERROR_ADDRESS_SPACE_CANNOT_FIND_PARTITION_BY_ADDR = 0x80024A03, + SCE_KERNEL_ERROR_SYSMEM_MEMBLOCK_ERROR = 0x80024B00, + SCE_KERNEL_ERROR_ILLEGAL_MEMBLOCK_TYPE = 0x80024B01, + SCE_KERNEL_ERROR_ILLEGAL_MEMBLOCK_REMAP_TYPE = 0x80024B02, + SCE_KERNEL_ERROR_NOT_PHY_CONT_MEMBLOCK = 0x80024B03, + SCE_KERNEL_ERROR_ILLEGAL_MEMBLOCK_CODE = 0x80024B04, + SCE_KERNEL_ERROR_ILLEGAL_MEMBLOCK_SIZE = 0x80024B05, + SCE_KERNEL_ERROR_ILLEGAL_USERMAP_SIZE = 0x80024B06, + SCE_KERNEL_ERROR_MEMBLOCK_TYPE_FOR_KERNEL_PROCESS = 0x80024B07, + SCE_KERNEL_ERROR_PROCESS_CANNOT_REMAP_MEMBLOCK = 0x80024B08, + SCE_KERNEL_ERROR_MEMBLOCK_RANGE_ERROR = 0x80024B09, + SCE_KERNEL_ERROR_MEMBLOCK_TYPE_FOR_UPDATER_OR_SAFEMODE = 0x80024B0A, + SCE_KERNEL_ERROR_MEMBLOCK_OVERFLOW = 0x80024B0B, + SCE_KERNEL_ERROR_SYSMEM_PHYMEMLOW_ERROR = 0x80024C00, + SCE_KERNEL_ERROR_CANNOT_ALLOC_PHYMEMLOW = 0x80024C01, + SCE_KERNEL_ERROR_UNKNOWN_PHYMEMLOW_TYPE = 0x80024C02, + SCE_KERNEL_ERROR_SYSMEM_BITHEAP_ERROR = 0x80024D00, + SCE_KERNEL_ERROR_CANNOT_ALLOC_BITHEAP = 0x80024D01, + SCE_KERNEL_ERROR_SYSMEM_NAMEHEAP_ERROR = 0x80024E00, + SCE_KERNEL_ERROR_NO_SUCH_NAME = 0x80024E01, + SCE_KERNEL_ERROR_DUPLICATE_NAME = 0x80024E02, + SCE_KERNEL_ERROR_LOADCORE_ERROR = 0x80025000, + SCE_KERNEL_ERROR_ILLEGAL_ELF_HEADER = 0x80025001, + SCE_KERNEL_ERROR_ILLEGAL_SELF_HEADER = 0x80025002, + SCE_KERNEL_ERROR_EXCPMGR_ERROR = 0x80027000, + SCE_KERNEL_ERROR_ILLEGAL_EXCPCODE = 0x80027001, + SCE_KERNEL_ERROR_ILLEGAL_EXCPHANDLER = 0x80027002, + SCE_KERNEL_ERROR_NOTFOUND_EXCPHANDLER = 0x80027003, + SCE_KERNEL_ERROR_CANNOT_RELEASE_EXCPHANDLER = 0x80027004, + SCE_KERNEL_ERROR_INTRMGR_ERROR = 0x80027100, + SCE_KERNEL_ERROR_ILLEGAL_CONTEXT = 0x80027101, + SCE_KERNEL_ERROR_ILLEGAL_INTRCODE = 0x80027102, + SCE_KERNEL_ERROR_ILLEGAL_INTRPARAM = 0x80027103, + SCE_KERNEL_ERROR_ILLEGAL_INTRPRIORITY = 0x80027104, + SCE_KERNEL_ERROR_ILLEGAL_TARGET_CPU = 0x80027105, + SCE_KERNEL_ERROR_ILLEGAL_INTRFILTER = 0x80027106, + SCE_KERNEL_ERROR_ILLEGAL_INTRTYPE = 0x80027107, + SCE_KERNEL_ERROR_ILLEGAL_HANDLER = 0x80027108, + SCE_KERNEL_ERROR_FOUND_HANDLER = 0x80027109, + SCE_KERNEL_ERROR_NOTFOUND_HANDLER = 0x8002710A, + SCE_KERNEL_ERROR_NO_MEMORY = 0x8002710B, + SCE_KERNEL_ERROR_DMACMGR_ERROR = 0x80027200, + SCE_KERNEL_ERROR_ALREADY_QUEUED = 0x80027201, + SCE_KERNEL_ERROR_NOT_QUEUED = 0x80027202, + SCE_KERNEL_ERROR_NOT_SETUP = 0x80027203, + SCE_KERNEL_ERROR_ON_TRANSFERRING = 0x80027204, + SCE_KERNEL_ERROR_NOT_INITIALIZED = 0x80027205, + SCE_KERNEL_ERROR_TRANSFERRED = 0x80027206, + SCE_KERNEL_ERROR_NOT_UNDER_CONTROL = 0x80027207, + SCE_KERNEL_ERROR_CANCELING = 0x80027208, + SCE_KERNEL_ERROR_SYSTIMER_ERROR = 0x80027300, + SCE_KERNEL_ERROR_NO_FREE_TIMER = 0x80027301, + SCE_KERNEL_ERROR_TIMER_NOT_ALLOCATED = 0x80027302, + SCE_KERNEL_ERROR_TIMER_COUNTING = 0x80027303, + SCE_KERNEL_ERROR_TIMER_STOPPED = 0x80027304, + SCE_KERNEL_ERROR_THREADMGR_ERROR = 0x80028000, + SCE_KERNEL_ERROR_UNKNOWN_UID = 0x80028001, + SCE_KERNEL_ERROR_DIFFERENT_UID_CLASS = 0x80028002, + SCE_KERNEL_ERROR_ALREADY_REGISTERED = 0x80028003, + SCE_KERNEL_ERROR_CAN_NOT_WAIT = 0x80028004, + SCE_KERNEL_ERROR_WAIT_TIMEOUT = 0x80028005, + SCE_KERNEL_ERROR_WAIT_DELETE = 0x80028006, + SCE_KERNEL_ERROR_WAIT_CANCEL = 0x80028007, + SCE_KERNEL_ERROR_THREAD_ERROR = 0x80028020, + SCE_KERNEL_ERROR_UNKNOWN_THREAD_ID = 0x80028021, + SCE_KERNEL_ERROR_ILLEGAL_THREAD_ID = 0x80028022, + SCE_KERNEL_ERROR_ILLEGAL_PRIORITY = 0x80028023, + SCE_KERNEL_ERROR_ILLEGAL_STACK_SIZE = 0x80028024, + SCE_KERNEL_ERROR_ILLEGAL_CPU_AFFINITY_MASK = 0x80028025, + SCE_KERNEL_ERROR_ILLEGAL_THREAD_PARAM_COMBINATION = 0x80028026, + SCE_KERNEL_ERROR_DORMANT = 0x80028027, + SCE_KERNEL_ERROR_NOT_DORMANT = 0x80028028, + SCE_KERNEL_ERROR_RUNNING = 0x80028029, + SCE_KERNEL_ERROR_DELETED = 0x8002802A, + SCE_KERNEL_ERROR_CAN_NOT_SUSPEND = 0x8002802B, + SCE_KERNEL_ERROR_THREAD_STOPPED = 0x8002802C, + SCE_KERNEL_ERROR_THREAD_SUSPENDED = 0x8002802D, + SCE_KERNEL_ERROR_NOT_SUSPENDED = 0x8002802E, + SCE_KERNEL_ERROR_ALREADY_DEBUG_SUSPENDED = 0x8002802F, + SCE_KERNEL_ERROR_NOT_DEBUG_SUSPENDED = 0x80028030, + SCE_KERNEL_ERROR_CAN_NOT_USE_VFP = 0x80028031, + SCE_KERNEL_ERROR_THREAD_EVENT_ERROR = 0x80028060, + SCE_KERNEL_ERROR_UNKNOWN_THREAD_EVENT_ID = 0x80028061, + SCE_KERNEL_ERROR_KERNEL_TLS_ERROR = 0x80028080, + SCE_KERNEL_ERROR_KERNEL_TLS_FULL = 0x80028081, + SCE_KERNEL_ERROR_ILLEGAL_KERNEL_TLS_INDEX = 0x80028082, + SCE_KERNEL_ERROR_KERNEL_TLS_BUSY = 0x80028083, + SCE_KERNEL_ERROR_CALLBACK_ERROR = 0x800280A0, + SCE_KERNEL_ERROR_UNKNOWN_CALLBACK_ID = 0x800280A1, + SCE_KERNEL_ERROR_NOTIFY_CALLBACK = 0x800280A2, + SCE_KERNEL_ERROR_CALLBACK_NOT_REGISTERED = 0x800280A3, + SCE_KERNEL_ERROR_ALARM_ERROR = 0x800280C0, + SCE_KERNEL_ERROR_UNKNOWN_ALARM_ID = 0x800280C1, + SCE_KERNEL_ERROR_ALARM_CAN_NOT_CANCEL = 0x800280C2, + SCE_KERNEL_ERROR_EVF_ERROR = 0x800280E0, + SCE_KERNEL_ERROR_UNKNOWN_EVF_ID = 0x800280E1, + SCE_KERNEL_ERROR_EVF_MULTI = 0x800280E2, + SCE_KERNEL_ERROR_EVF_COND = 0x800280E3, + SCE_KERNEL_ERROR_SEMA_ERROR = 0x80028100, + SCE_KERNEL_ERROR_UNKNOWN_SEMA_ID = 0x80028101, + SCE_KERNEL_ERROR_SEMA_ZERO = 0x80028102, + SCE_KERNEL_ERROR_SEMA_OVF = 0x80028103, + SCE_KERNEL_ERROR_SIGNAL_ERROR = 0x80028120, + SCE_KERNEL_ERROR_ALREADY_SENT = 0x80028121, + SCE_KERNEL_ERROR_MUTEX_ERROR = 0x80028140, + SCE_KERNEL_ERROR_UNKNOWN_MUTEX_ID = 0x80028141, + SCE_KERNEL_ERROR_MUTEX_RECURSIVE = 0x80028142, + SCE_KERNEL_ERROR_MUTEX_LOCK_OVF = 0x80028143, + SCE_KERNEL_ERROR_MUTEX_UNLOCK_UDF = 0x80028144, + SCE_KERNEL_ERROR_MUTEX_FAILED_TO_OWN = 0x80028145, + SCE_KERNEL_ERROR_MUTEX_NOT_OWNED = 0x80028146, + SCE_KERNEL_ERROR_FAST_MUTEX_ERROR = 0x80028160, + SCE_KERNEL_ERROR_UNKNOWN_FAST_MUTEX_ID = 0x80028161, + SCE_KERNEL_ERROR_FAST_MUTEX_RECURSIVE = 0x80028162, + SCE_KERNEL_ERROR_FAST_MUTEX_LOCK_OVF = 0x80028163, + SCE_KERNEL_ERROR_FAST_MUTEX_FAILED_TO_OWN = 0x80028164, + SCE_KERNEL_ERROR_FAST_MUTEX_NOT_OWNED = 0x80028165, + SCE_KERNEL_ERROR_FAST_MUTEX_OWNED = 0x80028166, + SCE_KERNEL_ERROR_FAST_MUTEX_ALREADY_INITIALIZED = 0x80028167, + SCE_KERNEL_ERROR_FAST_MUTEX_NOT_INITIALIZED = 0x80028168, + SCE_KERNEL_ERROR_LW_MUTEX_ERROR = 0x80028180, + SCE_KERNEL_ERROR_UNKNOWN_LW_MUTEX_ID = 0x80028181, + SCE_KERNEL_ERROR_LW_MUTEX_RECURSIVE = 0x80028182, + SCE_KERNEL_ERROR_LW_MUTEX_LOCK_OVF = 0x80028183, + SCE_KERNEL_ERROR_LW_MUTEX_UNLOCK_UDF = 0x80028184, + SCE_KERNEL_ERROR_LW_MUTEX_FAILED_TO_OWN = 0x80028185, + SCE_KERNEL_ERROR_LW_MUTEX_NOT_OWNED = 0x80028186, + SCE_KERNEL_ERROR_COND_ERROR = 0x800281A0, + SCE_KERNEL_ERROR_UNKNOWN_COND_ID = 0x800281A1, + SCE_KERNEL_ERROR_WAIT_DELETE_MUTEX = 0x800281A2, + SCE_KERNEL_ERROR_WAIT_CANCEL_MUTEX = 0x800281A3, + SCE_KERNEL_ERROR_WAIT_DELETE_COND = 0x800281A4, + SCE_KERNEL_ERROR_WAIT_CANCEL_COND = 0x800281A5, + SCE_KERNEL_ERROR_LW_COND_ERROR = 0x800281C0, + SCE_KERNEL_ERROR_UNKNOWN_LW_COND_ID = 0x800281C1, + SCE_KERNEL_ERROR_WAIT_DELETE_LW_MUTEX = 0x800281C2, + SCE_KERNEL_ERROR_WAIT_DELETE_LW_COND = 0x800281C3, + SCE_KERNEL_ERROR_RW_LOCK_ERROR = 0x800281E0, + SCE_KERNEL_ERROR_UNKNOWN_RW_LOCK_ID = 0x800281E1, + SCE_KERNEL_ERROR_RW_LOCK_RECURSIVE = 0x800281E2, + SCE_KERNEL_ERROR_RW_LOCK_LOCK_OVF = 0x800281E3, + SCE_KERNEL_ERROR_RW_LOCK_NOT_OWNED = 0x800281E4, + SCE_KERNEL_ERROR_RW_LOCK_UNLOCK_UDF = 0x800281E5, + SCE_KERNEL_ERROR_RW_LOCK_FAILED_TO_LOCK = 0x800281E6, + SCE_KERNEL_ERROR_RW_LOCK_FAILED_TO_UNLOCK = 0x800281E7, + SCE_KERNEL_ERROR_EVENT_ERROR = 0x80028200, + SCE_KERNEL_ERROR_UNKNOWN_EVENT_ID = 0x80028201, + SCE_KERNEL_ERROR_EVENT_COND = 0x80028202, + SCE_KERNEL_ERROR_MSG_PIPE_ERROR = 0x80028220, + SCE_KERNEL_ERROR_UNKNOWN_MSG_PIPE_ID = 0x80028221, + SCE_KERNEL_ERROR_MSG_PIPE_FULL = 0x80028222, + SCE_KERNEL_ERROR_MSG_PIPE_EMPTY = 0x80028223, + SCE_KERNEL_ERROR_MSG_PIPE_DELETED = 0x80028224, + SCE_KERNEL_ERROR_TIMER_ERROR = 0x80028240, + SCE_KERNEL_ERROR_UNKNOWN_TIMER_ID = 0x80028241, + SCE_KERNEL_ERROR_EVENT_NOT_SET = 0x80028242, + SCE_KERNEL_ERROR_SIMPLE_EVENT_ERROR = 0x80028260, + SCE_KERNEL_ERROR_UNKNOWN_SIMPLE_EVENT_ID = 0x80028261, + SCE_KERNEL_ERROR_PMON_ERROR = 0x80028280, + SCE_KERNEL_ERROR_PMON_NOT_THREAD_MODE = 0x80028281, + SCE_KERNEL_ERROR_PMON_NOT_CPU_MODE = 0x80028282, + SCE_KERNEL_ERROR_WORK_QUEUE = 0x80028300, + SCE_KERNEL_ERROR_UNKNOWN_WORK_QUEUE_ID = 0x80028301, + SCE_KERNEL_ERROR_UNKNOWN_WORK_TASK_ID = 0x80028302, + SCE_KERNEL_ERROR_PROCESSMGR_ERROR = 0x80029000, + SCE_KERNEL_ERROR_INVALID_PID = 0x80029001, + SCE_KERNEL_ERROR_INVALID_PROCESS_TYPE = 0x80029002, + SCE_KERNEL_ERROR_PLS_FULL = 0x80029003, + SCE_KERNEL_ERROR_INVALID_PROCESS_STATUS = 0x80029004, + SCE_KERNEL_ERROR_PROCESS_CALLBACK_NOTFOUND = 0x80029005, + SCE_KERNEL_ERROR_INVALID_BUDGET_ID = 0x80029006, + SCE_KERNEL_ERROR_INVALID_BUDGET_SIZE = 0x80029007, + SCE_KERNEL_ERROR_CP14_DISABLED = 0x80029008, + SCE_KERNEL_ERROR_EXCEEDED_MAX_PROCESSES = 0x80029009, + SCE_KERNEL_ERROR_PROCESS_REMAINING = 0x8002900A, + SCE_KERNEL_ERROR_NO_PROCESS_DATA = 0x8002900B, + SCE_KERNEL_ERROR_PROCESS_EVENT_INHIBITED = 0x8002900C, + SCE_KERNEL_ERROR_IOFILEMGR_ERROR = 0x8002A000, + SCE_KERNEL_ERROR_IO_NAME_TOO_LONG = 0x8002A001, + SCE_KERNEL_ERROR_IO_REG_DEV = 0x8002A002, + SCE_KERNEL_ERROR_IO_ALIAS_USED = 0x8002A003, + SCE_KERNEL_ERROR_IO_DEL_DEV = 0x8002A004, + SCE_KERNEL_ERROR_IO_WOULD_BLOCK = 0x8002A005, + SCE_KERNEL_ERROR_MODULEMGR_START_FAILED = 0x8002D000, + SCE_KERNEL_ERROR_MODULEMGR_STOP_FAIL = 0x8002D001, + SCE_KERNEL_ERROR_MODULEMGR_IN_USE = 0x8002D002, + SCE_KERNEL_ERROR_MODULEMGR_NO_LIB = 0x8002D003, + SCE_KERNEL_ERROR_MODULEMGR_SYSCALL_REG = 0x8002D004, + SCE_KERNEL_ERROR_MODULEMGR_NOMEM_LIB = 0x8002D005, + SCE_KERNEL_ERROR_MODULEMGR_NOMEM_STUB = 0x8002D006, + SCE_KERNEL_ERROR_MODULEMGR_NOMEM_SELF = 0x8002D007, + SCE_KERNEL_ERROR_MODULEMGR_NOMEM = 0x8002D008, + SCE_KERNEL_ERROR_MODULEMGR_INVALID_LIB = 0x8002D009, + SCE_KERNEL_ERROR_MODULEMGR_INVALID_STUB = 0x8002D00A, + SCE_KERNEL_ERROR_MODULEMGR_NO_FUNC_NID = 0x8002D00B, + SCE_KERNEL_ERROR_MODULEMGR_NO_VAR_NID = 0x8002D00C, + SCE_KERNEL_ERROR_MODULEMGR_INVALID_TYPE = 0x8002D00D, + SCE_KERNEL_ERROR_MODULEMGR_NO_MOD_ENTRY = 0x8002D00E, + SCE_KERNEL_ERROR_MODULEMGR_INVALID_PROC_PARAM = 0x8002D00F, + SCE_KERNEL_ERROR_MODULEMGR_NO_MODOBJ = 0x8002D010, + SCE_KERNEL_ERROR_MODULEMGR_NO_MOD = 0x8002D011, + SCE_KERNEL_ERROR_MODULEMGR_NO_PROCESS = 0x8002D012, + SCE_KERNEL_ERROR_MODULEMGR_OLD_LIB = 0x8002D013, + SCE_KERNEL_ERROR_MODULEMGR_STARTED = 0x8002D014, + SCE_KERNEL_ERROR_MODULEMGR_NOT_STARTED = 0x8002D015, + SCE_KERNEL_ERROR_MODULEMGR_NOT_STOPPED = 0x8002D016, + SCE_KERNEL_ERROR_MODULEMGR_INVALID_PROCESS_UID = 0x8002D017, + SCE_KERNEL_ERROR_MODULEMGR_CANNOT_EXPORT_LIB_TO_SHARED = 0x8002D018, + SCE_KERNEL_ERROR_MODULEMGR_INVALID_REL_INFO = 0x8002D019, + SCE_KERNEL_ERROR_MODULEMGR_INVALID_REF_INFO = 0x8002D01A, + SCE_KERNEL_ERROR_MODULEMGR_ELINK = 0x8002D01B, + SCE_KERNEL_ERROR_MODULEMGR_NOENT = 0x8002D01C, + SCE_KERNEL_ERROR_MODULEMGR_BUSY = 0x8002D01D, + SCE_KERNEL_ERROR_MODULEMGR_NOEXEC = 0x8002D01E, + SCE_KERNEL_ERROR_MODULEMGR_NAMETOOLONG = 0x8002D01F, + SCE_KERNEL_ERROR_LIBRARYDB_NOENT = 0x8002D080, + SCE_KERNEL_ERROR_LIBRARYDB_NO_LIB = 0x8002D081, + SCE_KERNEL_ERROR_LIBRARYDB_NO_MOD = 0x8002D082, + SCE_KERNEL_ERROR_PRELOAD_FAILED = 0x8002D0F0, + SCE_KERNEL_ERROR_PRELOAD_LIBC_FAILED = 0x8002D0F1, + SCE_KERNEL_ERROR_PRELOAD_FIOS2_FAILED = 0x8002D0F2, + SCE_KERNEL_ERROR_AUTHFAIL = 0x8002F000, + SCE_KERNEL_ERROR_NO_AUTH = 0x8002F001 +}; + +enum SceEventFlagWaitTypes { + SCE_EVENT_WAITAND = 0, + SCE_EVENT_WAITOR = 1, + SCE_EVENT_WAITCLEAR = 2, + SCE_EVENT_WAITCLEAR_PAT = 4 +}; + +enum SceKernelMemBlockType { + SCE_KERNEL_MEMBLOCK_TYPE_USER_RW_UNCACHE = 0x0C208060, + SCE_KERNEL_MEMBLOCK_TYPE_USER_RX = 0x0C20D050, + SCE_KERNEL_MEMBLOCK_TYPE_USER_RW = 0x0C20D060, + SCE_KERNEL_MEMBLOCK_TYPE_USER_MAIN_PHYCONT_RW = 0x0C80D060, + SCE_KERNEL_MEMBLOCK_TYPE_USER_MAIN_PHYCONT_NC_RW = 0x0D808060, + SCE_KERNEL_MEMBLOCK_TYPE_USER_CDRAM_RW = 0x09408060 +}; + +enum SceSysmoduleModuleId { + SCE_SYSMODULE_INVALID = 0x0000, + SCE_SYSMODULE_NET = 0x0001, + SCE_SYSMODULE_HTTP = 0x0002, + SCE_SYSMODULE_SSL = 0x0003, + SCE_SYSMODULE_HTTPS = 0x0004, + SCE_SYSMODULE_PERF = 0x0005, + SCE_SYSMODULE_FIBER = 0x0006, + SCE_SYSMODULE_ULT = 0x0007, + SCE_SYSMODULE_DBG = 0x0008, + SCE_SYSMODULE_RAZOR_CAPTURE = 0x0009, + SCE_SYSMODULE_RAZOR_HUD = 0x000A, + SCE_SYSMODULE_NGS = 0x000B, + SCE_SYSMODULE_SULPHA = 0x000C, + SCE_SYSMODULE_SAS = 0x000D, + SCE_SYSMODULE_PGF = 0x000E, + SCE_SYSMODULE_APPUTIL = 0x000F, + SCE_SYSMODULE_FIOS2 = 0x0010, + SCE_SYSMODULE_IME = 0x0011, + SCE_SYSMODULE_NP_BASIC = 0x0012, + SCE_SYSMODULE_SYSTEM_GESTURE = 0x0013, + SCE_SYSMODULE_LOCATION = 0x0014, + SCE_SYSMODULE_NP = 0x0015, + SCE_SYSMODULE_PHOTO_EXPORT = 0x0016, + SCE_SYSMODULE_XML = 0x0017, + SCE_SYSMODULE_NP_COMMERCE2 = 0x0018, + SCE_SYSMODULE_NP_UTILITY = 0x0019, + SCE_SYSMODULE_VOICE = 0x001A, + SCE_SYSMODULE_VOICEQOS = 0x001B, + SCE_SYSMODULE_NP_MATCHING2 = 0x001C, + SCE_SYSMODULE_SCREEN_SHOT = 0x001D, + SCE_SYSMODULE_NP_SCORE_RANKING = 0x001E, + SCE_SYSMODULE_SQLITE = 0x001F, + SCE_SYSMODULE_TRIGGER_UTIL = 0x0020, + SCE_SYSMODULE_RUDP = 0x0021, + SCE_SYSMODULE_CODECENGINE_PERF = 0x0022, + SCE_SYSMODULE_LIVEAREA = 0x0023, + SCE_SYSMODULE_NP_ACTIVITY = 0x0024, + SCE_SYSMODULE_NP_TROPHY = 0x0025, + SCE_SYSMODULE_NP_MESSAGE = 0x0026, + SCE_SYSMODULE_SHUTTER_SOUND = 0x0027, + SCE_SYSMODULE_CLIPBOARD = 0x0028, + SCE_SYSMODULE_NP_PARTY = 0x0029, + SCE_SYSMODULE_NET_ADHOC_MATCHING = 0x002A, + SCE_SYSMODULE_NEAR_UTIL = 0x002B, + SCE_SYSMODULE_NP_TUS = 0x002C, + SCE_SYSMODULE_MP4 = 0x002D, + SCE_SYSMODULE_AACENC = 0x002E, + SCE_SYSMODULE_HANDWRITING = 0x002F, + SCE_SYSMODULE_ATRAC = 0x0030, + SCE_SYSMODULE_NP_SNS_FACEBOOK = 0x0031, + SCE_SYSMODULE_VIDEO_EXPORT = 0x0032, + SCE_SYSMODULE_NOTIFICATION_UTIL = 0x0033, + SCE_SYSMODULE_BG_APP_UTIL = 0x0034, + SCE_SYSMODULE_INCOMING_DIALOG = 0x0035, + SCE_SYSMODULE_IPMI = 0x0036, + SCE_SYSMODULE_AUDIOCODEC = 0x0037, + SCE_SYSMODULE_FACE = 0x0038, + SCE_SYSMODULE_SMART = 0x0039, + SCE_SYSMODULE_MARLIN = 0x003A, + SCE_SYSMODULE_MARLIN_DOWNLOADER = 0x003B, + SCE_SYSMODULE_MARLIN_APP_LIB = 0x003C, + SCE_SYSMODULE_TELEPHONY_UTIL = 0x003D, + SCE_SYSMODULE_PSPNET_ADHOC = 0x0043, + SCE_SYSMODULE_DTCP_IP = 0x0044, + SCE_SYSMODULE_VIDEO_SEARCH_EMPR = 0x0045, + SCE_SYSMODULE_NP_SIGNALING = 0x0046, + SCE_SYSMODULE_BEISOBMF = 0x0047, + SCE_SYSMODULE_BEMP2SYS = 0x0048, + SCE_SYSMODULE_MUSIC_EXPORT = 0x0049, + SCE_SYSMODULE_NEAR_DIALOG_UTIL = 0x004A, + SCE_SYSMODULE_LOCATION_EXTENSION = 0x004B, + SCE_SYSMODULE_AVPLAYER = 0x004C, + SCE_SYSMODULE_GAME_UPDATE = 0x004D, + SCE_SYSMODULE_MAIL_API = 0x004E, + SCE_SYSMODULE_TELEPORT_CLIENT = 0x004F, + SCE_SYSMODULE_TELEPORT_SERVER = 0x0050, + SCE_SYSMODULE_MP4_RECORDER = 0x0051, + SCE_SYSMODULE_APPUTIL_EXT = 0x0052, + SCE_SYSMODULE_NP_WEBAPI = 0x0053, + SCE_SYSMODULE_AVCDEC = 0x0054, + SCE_SYSMODULE_JSON = 0x0055 +}; + +enum SceSysmoduleErrorCode { + SCE_SYSMODULE_LOADED = 0, + SCE_SYSMODULE_ERROR_INVALID_VALUE = 0x805A1000, + SCE_SYSMODULE_ERROR_UNLOADED = 0x805A1001, + SCE_SYSMODULE_ERROR_FATAL = 0x805A10FF +}; + +typedef SceUInt64 SceKernelSysClock; +typedef Ptr argp)> SceKernelThreadEntry; + +enum SceDisplayPixelFormat { + SCE_DISPLAY_PIXELFORMAT_A8B8G8R8 = 0x00000000U +}; + struct SceKernelSegmentInfo { SceUInt size; //!< sizeof(SceKernelSegmentInfo) SceUInt perms; //!< probably rwx in low bits @@ -69,6 +503,33 @@ struct SceKernelMemBlockInfo { SceKernelMemBlockType type; }; +struct SceKernelEventFlagOptParam { + SceSize size; +}; + +struct SceKernelLwCondOptParam { + SceSize size; +}; + +struct SceKernelLwMutexOptParam { + SceSize size; +}; + +struct SceKernelMutexOptParam { + /** Size of the ::SceKernelMutexOptParam structure. */ + SceSize size; + int ceilingPriority; +}; + +struct SceKernelSemaOptParam { + /** Size of the ::SceKernelSemaOptParam structure. */ + SceSize size; +}; + +struct SceKernelLMOption { + SceSize size; +}; + // We only use workarea for uid struct SceKernelLwMutexWork { SceUID uid; @@ -83,5 +544,60 @@ struct SceKernelLwCondWork { std::uint8_t padding[28]; }; +struct SceKernelThreadInfo { + /** Size of the structure */ + SceSize size; + /** The UID of the process where the thread belongs */ + SceUID processId; //Needs confirmation + /** Nul terminated name of the thread */ + char name[32]; + /** Thread attributes */ + SceUInt attr; + /** Thread status */ + int status; + /** Thread entry point */ + SceKernelThreadEntry entry; + /** Thread stack pointer */ + void *stack; + /** Thread stack size */ + int stackSize; + /** Initial priority */ + int initPriority; + /** Current priority */ + int currentPriority; + /** Initial CPU affinity mask */ + int initCpuAffinityMask; + /** Current CPU affinity mask */ + int currentCpuAffinityMask; + /** Current CPU ID */ + int currentCpuId; + /** Last executed CPU ID */ + int lastExecutedCpuId; + /** Wait type */ + int waitType; + /** Wait id */ + SceUID waitId; + /** Exit status of the thread */ + int exitStatus; + /** Number of clock cycles run */ + SceKernelSysClock runClocks; + /** Interrupt preemption count */ + SceUInt intrPreemptCount; + /** Thread preemption count */ + SceUInt threadPreemptCount; + /** Thread release count */ + SceUInt threadReleaseCount; + /** Function notify callback UID */ + SceUID fNotifyCallback; + /** Reserved */ + int reserved; +}; + +struct SceKernelThreadOptParam { + /** Size of the ::SceKernelThreadOptParam structure. */ + SceSize size; + /** Attributes */ + SceUInt32 attr; +}; + static_assert(sizeof(SceKernelLwMutexWork) == 32, "Incorrect size"); -} // namespace emu diff --git a/vita3k/kernel/src/thread/sync_primitives.cpp b/vita3k/kernel/src/thread/sync_primitives.cpp index 8aa3963b2..01dcf0d57 100644 --- a/vita3k/kernel/src/thread/sync_primitives.cpp +++ b/vita3k/kernel/src/thread/sync_primitives.cpp @@ -17,10 +17,6 @@ #include -#include -#include -#include - #include #include #include diff --git a/vita3k/kernel/src/thread/thread.cpp b/vita3k/kernel/src/thread/thread.cpp index 743b04adc..bf8bcb430 100644 --- a/vita3k/kernel/src/thread/thread.cpp +++ b/vita3k/kernel/src/thread/thread.cpp @@ -17,8 +17,6 @@ #include #include -#include -#include #include diff --git a/vita3k/module/include/module/load_module.h b/vita3k/module/include/module/load_module.h index d741c2888..d684ebb73 100644 --- a/vita3k/module/include/module/load_module.h +++ b/vita3k/module/include/module/load_module.h @@ -18,8 +18,6 @@ #include #include -#include - #include static constexpr auto SYSMODULE_COUNT = 0x56; diff --git a/vita3k/modules/SceAppMgr/SceAppMgrUser.cpp b/vita3k/modules/SceAppMgr/SceAppMgrUser.cpp index 5d2a3e70f..91761913e 100644 --- a/vita3k/modules/SceAppMgr/SceAppMgrUser.cpp +++ b/vita3k/modules/SceAppMgr/SceAppMgrUser.cpp @@ -19,7 +19,27 @@ #include -#include +enum SceAppMgrErrorCode { + SCE_APPMGR_ERROR_BUSY = 0x80802000, //!< Busy + SCE_APPMGR_ERROR_STATE = 0x80802013, //!< Invalid state + SCE_APPMGR_ERROR_NULL_POINTER = 0x80802016, //!< NULL pointer + SCE_APPMGR_ERROR_INVALID = 0x8080201A, //!< Invalid param + SCE_APPMGR_ERROR_TOO_LONG_ARGV = 0x8080201D, //!< argv is too long + SCE_APPMGR_ERROR_INVALID_SELF_PATH = 0x8080201E, //!< Invalid SELF path + SCE_APPMGR_ERROR_BGM_PORT_BUSY = 0x80803000 //!< BGM port was occupied and could not be secured +}; + +enum SceAppMgrSystemEventType { + SCE_APPMGR_SYSTEMEVENT_ON_RESUME = 0x10000003, + SCE_APPMGR_SYSTEMEVENT_ON_STORE_PURCHASE = 0x10000004, + SCE_APPMGR_SYSTEMEVENT_ON_NP_MESSAGE_ARRIVED = 0x10000005, + SCE_APPMGR_SYSTEMEVENT_ON_STORE_REDEMPTION = 0x10000006 +}; + +struct SceAppMgrSystemEvent { + int systemEvent; //!< One of ::SceAppMgrSystemEventType + uint8_t reserved[60]; //!< Reserved data +}; EXPORT(int, _sceAppMgrGetAppState, void *appState, uint32_t len, uint32_t version) { memset(appState, 0, len); diff --git a/vita3k/modules/SceAppUtil/SceAppUtil.cpp b/vita3k/modules/SceAppUtil/SceAppUtil.cpp index 0e667a9cc..947f2116d 100644 --- a/vita3k/modules/SceAppUtil/SceAppUtil.cpp +++ b/vita3k/modules/SceAppUtil/SceAppUtil.cpp @@ -17,9 +17,6 @@ #include "SceAppUtil.h" -#include -#include - #include #include #include @@ -28,6 +25,53 @@ #include +#define SCE_SYSTEM_PARAM_USERNAME_MAXSIZE 17 + +enum SceSystemParamId { + SCE_SYSTEM_PARAM_ID_LANG = 1, + SCE_SYSTEM_PARAM_ID_ENTER_BUTTON, + SCE_SYSTEM_PARAM_ID_USERNAME, + SCE_SYSTEM_PARAM_ID_DATE_FORMAT, + SCE_SYSTEM_PARAM_ID_TIME_FORMAT, + SCE_SYSTEM_PARAM_ID_TIME_ZONE, + SCE_SYSTEM_PARAM_ID_DAYLIGHT_SAVINGS, + SCE_SYSTEM_PARAM_ID_MAX_VALUE = 0xFFFFFFFF +}; + +enum SceAppUtilSaveDataRemoveMode { + SCE_APPUTIL_SAVEDATA_DATA_REMOVE_MODE_DEFAULT = 0, + SCE_APPUTIL_SAVEDATA_DATA_REMOVE_MODE_NO_SLOT = 1 +}; + +enum SceAppUtilSaveDataSaveMode { + SCE_APPUTIL_SAVEDATA_DATA_SAVE_MODE_FILE = 0, + SCE_APPUTIL_SAVEDATA_DATA_SAVE_MODE_DIRECTORY = 2 +}; + +enum SceAppUtilErrorCode { + SCE_APPUTIL_ERROR_PARAMETER = 0x80100600, + SCE_APPUTIL_ERROR_NOT_INITIALIZED = 0x80100601, + SCE_APPUTIL_ERROR_NO_MEMORY = 0x80100602, + SCE_APPUTIL_ERROR_BUSY = 0x80100603, + SCE_APPUTIL_ERROR_NOT_MOUNTED = 0x80100604, + SCE_APPUTIL_ERROR_NO_PERMISSION = 0x80100605, + SCE_APPUTIL_ERROR_PASSCODE_MISMATCH = 0x80100606, + SCE_APPUTIL_ERROR_APPEVENT_PARSE_INVALID_DATA = 0x80100620, + SCE_APPUTIL_ERROR_SAVEDATA_SLOT_EXISTS = 0x80100640, + SCE_APPUTIL_ERROR_SAVEDATA_SLOT_NOT_FOUND = 0x80100641, + SCE_APPUTIL_ERROR_SAVEDATA_NO_SPACE_QUOTA = 0x80100642, + SCE_APPUTIL_ERROR_SAVEDATA_NO_SPACE_FS = 0x80100643, + SCE_APPUTIL_ERROR_DRM_NO_ENTITLEMENT = 0x80100660, + SCE_APPUTIL_ERROR_PHOTO_DEVICE_NOT_FOUND = 0x80100680, + SCE_APPUTIL_ERROR_MUSIC_DEVICE_NOT_FOUND = 0x80100685, + SCE_APPUTIL_ERROR_MOUNT_LIMIT_OVER = 0x80100686, + SCE_APPUTIL_ERROR_STACKSIZE_TOO_SHORT = 0x801006A0 +}; + +struct SceAppUtilSaveDataMountPoint { + uint8_t data[16]; +}; + EXPORT(int, sceAppUtilAddCookieWebBrowser) { return UNIMPLEMENTED(); } @@ -104,7 +148,7 @@ EXPORT(int, sceAppUtilDrmClose) { return UNIMPLEMENTED(); } -EXPORT(int, sceAppUtilDrmOpen, emu::SceAppUtilDrmAddcontId *dirName, SceAppUtilMountPoint *mountPoint) { +EXPORT(int, sceAppUtilDrmOpen, SceAppUtilDrmAddcontId *dirName, SceAppUtilMountPoint *mountPoint) { const auto drm_content_id_path{ fs::path(host.pref_path) / (+VitaIoDevice::ux0)._to_string() / host.io.device_paths.addcont0 / reinterpret_cast(dirName->data) }; if (dirName == nullptr) @@ -168,7 +212,7 @@ std::string construct_slotparam_path(const unsigned int data) { return construct_savedata0_path("SlotParam_" + std::to_string(data), "bin"); } -EXPORT(int, sceAppUtilSaveDataDataRemove, emu::SceAppUtilSaveDataFileSlot *slot, emu::SceAppUtilSaveDataRemoveItem *files, unsigned int fileNum, SceAppUtilSaveDataMountPoint *mountPoint) { +EXPORT(int, sceAppUtilSaveDataDataRemove, SceAppUtilSaveDataFileSlot *slot, SceAppUtilSaveDataRemoveItem *files, unsigned int fileNum, SceAppUtilSaveDataMountPoint *mountPoint) { for (unsigned int i = 0; i < fileNum; i++) { remove_file(host.io, construct_savedata0_path(files[i].dataPath.get(host.mem)).c_str(), host.pref_path, export_name); } @@ -179,7 +223,7 @@ EXPORT(int, sceAppUtilSaveDataDataRemove, emu::SceAppUtilSaveDataFileSlot *slot, return 0; } -EXPORT(int, sceAppUtilSaveDataDataSave, emu::SceAppUtilSaveDataFileSlot *slot, emu::SceAppUtilSaveDataFile *files, unsigned int fileNum, SceAppUtilSaveDataMountPoint *mountPoint, SceSize *requiredSizeKB) { +EXPORT(int, sceAppUtilSaveDataDataSave, SceAppUtilSaveDataFileSlot *slot, SceAppUtilSaveDataFile *files, unsigned int fileNum, SceAppUtilSaveDataMountPoint *mountPoint, SceSize *requiredSizeKB) { SceUID fd; for (unsigned int i = 0; i < fileNum; i++) { @@ -210,7 +254,7 @@ EXPORT(int, sceAppUtilSaveDataDataSave, emu::SceAppUtilSaveDataFileSlot *slot, e modified_time.second = local->tm_sec; slot->slotParam.get(host.mem)->modifiedTime = modified_time; fd = open_file(host.io, construct_slotparam_path(slot->id).c_str(), SCE_O_WRONLY, host.pref_path, export_name); - write_file(fd, slot->slotParam.get(host.mem), sizeof(emu::SceAppUtilSaveDataSlotParam), host.io, export_name); + write_file(fd, slot->slotParam.get(host.mem), sizeof(SceAppUtilSaveDataSlotParam), host.io, export_name); close_file(host.io, fd, export_name); } @@ -227,9 +271,9 @@ EXPORT(int, sceAppUtilSaveDataMount) { return UNIMPLEMENTED(); } -EXPORT(int, sceAppUtilSaveDataSlotCreate, unsigned int slotId, emu::SceAppUtilSaveDataSlotParam *param, SceAppUtilSaveDataMountPoint *mountPoint) { +EXPORT(int, sceAppUtilSaveDataSlotCreate, unsigned int slotId, SceAppUtilSaveDataSlotParam *param, SceAppUtilSaveDataMountPoint *mountPoint) { const auto fd = open_file(host.io, construct_slotparam_path(slotId).c_str(), SCE_O_WRONLY | SCE_O_CREAT, host.pref_path, export_name); - write_file(fd, param, sizeof(emu::SceAppUtilSaveDataSlotParam), host.io, export_name); + write_file(fd, param, sizeof(SceAppUtilSaveDataSlotParam), host.io, export_name); close_file(host.io, fd, export_name); return 0; } @@ -239,11 +283,11 @@ EXPORT(int, sceAppUtilSaveDataSlotDelete, unsigned int slotId, SceAppUtilSaveDat return 0; } -EXPORT(int, sceAppUtilSaveDataSlotGetParam, unsigned int slotId, emu::SceAppUtilSaveDataSlotParam *param, SceAppUtilSaveDataMountPoint *mountPoint) { +EXPORT(int, sceAppUtilSaveDataSlotGetParam, unsigned int slotId, SceAppUtilSaveDataSlotParam *param, SceAppUtilSaveDataMountPoint *mountPoint) { const auto fd = open_file(host.io, construct_slotparam_path(slotId).c_str(), SCE_O_RDONLY, host.pref_path, export_name); if (fd < 0) return RET_ERROR(SCE_APPUTIL_ERROR_SAVEDATA_SLOT_NOT_FOUND); - read_file(param, host.io, fd, sizeof(emu::SceAppUtilSaveDataSlotParam), export_name); + read_file(param, host.io, fd, sizeof(SceAppUtilSaveDataSlotParam), export_name); close_file(host.io, fd, export_name); return 0; } @@ -252,11 +296,11 @@ EXPORT(int, sceAppUtilSaveDataSlotSearch) { return UNIMPLEMENTED(); } -EXPORT(int, sceAppUtilSaveDataSlotSetParam, unsigned int slotId, emu::SceAppUtilSaveDataSlotParam *param, SceAppUtilSaveDataMountPoint *mountPoint) { +EXPORT(int, sceAppUtilSaveDataSlotSetParam, unsigned int slotId, SceAppUtilSaveDataSlotParam *param, SceAppUtilSaveDataMountPoint *mountPoint) { const auto fd = open_file(host.io, construct_slotparam_path(slotId).c_str(), SCE_O_WRONLY, host.pref_path, export_name); if (fd < 0) return RET_ERROR(SCE_APPUTIL_ERROR_SAVEDATA_SLOT_NOT_FOUND); - write_file(fd, param, sizeof(emu::SceAppUtilSaveDataSlotParam), host.io, export_name); + write_file(fd, param, sizeof(SceAppUtilSaveDataSlotParam), host.io, export_name); close_file(host.io, fd, export_name); return 0; } diff --git a/vita3k/modules/SceAudio/SceAudio.cpp b/vita3k/modules/SceAudio/SceAudio.cpp index ac4662e94..af52b7e9f 100644 --- a/vita3k/modules/SceAudio/SceAudio.cpp +++ b/vita3k/modules/SceAudio/SceAudio.cpp @@ -19,7 +19,35 @@ #include -#include +enum SceAudioOutMode { + SCE_AUDIO_OUT_MODE_MONO = 0, + SCE_AUDIO_OUT_MODE_STEREO = 1 +}; + +enum SceAudioOutPortType { + //! Used for main audio output, freq must be set to 48000 Hz + SCE_AUDIO_OUT_PORT_TYPE_MAIN = 0, + //! Used for Background Music port + SCE_AUDIO_OUT_PORT_TYPE_BGM = 1, + //! Used for voice chat port + SCE_AUDIO_OUT_PORT_TYPE_VOICE = 2 +}; + +enum SceAudioOutErrorCode { + SCE_AUDIO_OUT_ERROR_NOT_OPENED = 0x80260001, + SCE_AUDIO_OUT_ERROR_BUSY = 0x80260002, + SCE_AUDIO_OUT_ERROR_INVALID_PORT = 0x80260003, + SCE_AUDIO_OUT_ERROR_INVALID_POINTER = 0x80260004, + SCE_AUDIO_OUT_ERROR_PORT_FULL = 0x80260005, + SCE_AUDIO_OUT_ERROR_INVALID_SIZE = 0x80260006, + SCE_AUDIO_OUT_ERROR_INVALID_FORMAT = 0x80260007, + SCE_AUDIO_OUT_ERROR_INVALID_SAMPLE_FREQ = 0x80260008, + SCE_AUDIO_OUT_ERROR_INVALID_VOLUME = 0x80260009, + SCE_AUDIO_OUT_ERROR_INVALID_PORT_TYPE = 0x8026000A, + SCE_AUDIO_OUT_ERROR_INVALID_FX_TYPE = 0x8026000B, + SCE_AUDIO_OUT_ERROR_INVALID_CONF_TYPE = 0x8026000C, + SCE_AUDIO_OUT_ERROR_OUT_OF_MEMORY = 0x8026000D +}; EXPORT(int, sceAudioOutGetAdopt) { return UNIMPLEMENTED(); diff --git a/vita3k/modules/SceAudioIn/SceAudioIn.cpp b/vita3k/modules/SceAudioIn/SceAudioIn.cpp index 88fe4294f..672dfeb3b 100644 --- a/vita3k/modules/SceAudioIn/SceAudioIn.cpp +++ b/vita3k/modules/SceAudioIn/SceAudioIn.cpp @@ -19,10 +19,45 @@ #include -#include - #define PORT_ID 0 +enum SceAudioInPortType { + SCE_AUDIO_IN_PORT_TYPE_VOICE = 0, + SCE_AUDIO_IN_PORT_TYPE_RAW = 2 +}; + +enum SceAudioInParam { + SCE_AUDIO_IN_PARAM_FORMAT_S16_MONO = 0, + SCE_AUDIO_IN_GETSTATUS_MUTE = 1 +}; + +enum SceAudioInErrorCode { + //! Undefined error + SCE_AUDIO_IN_ERROR_FATAL = 0x80260100, + //! Bad value of port number + SCE_AUDIO_IN_ERROR_INVALID_PORT = 0x80260101, + //! Invalid sample length + SCE_AUDIO_IN_ERROR_INVALID_SIZE = 0x80260102, + //! Invalid sample frequency + SCE_AUDIO_IN_ERROR_INVALID_SAMPLE_FREQ = 0x80260103, + //! Invalid port type + SCE_AUDIO_IN_ERROR_INVALID_PORT_TYPE = 0x80260104, + //! Invalid pointer value + SCE_AUDIO_IN_ERROR_INVALID_POINTER = 0x80260105, + //! Invalid port param + SCE_AUDIO_IN_ERROR_INVALID_PORT_PARAM = 0x80260106, + //! Cannot open no ports + SCE_AUDIO_IN_ERROR_PORT_FULL = 0x80260107, + //! Not enough memory + SCE_AUDIO_IN_ERROR_OUT_OF_MEMORY = 0x80260108, + //! Port is not opened + SCE_AUDIO_IN_ERROR_NOT_OPENED = 0x80260109, + //! Tried to input while busy + SCE_AUDIO_IN_ERROR_BUSY = 0x8026010A, + //! Invalid parameter + SCE_AUDIO_IN_ERROR_INVALID_PARAMETER = 0x8026010B +}; + EXPORT(int, sceAudioInGetAdopt, SceAudioInPortType portType) { if (portType != SCE_AUDIO_IN_PORT_TYPE_VOICE && portType != SCE_AUDIO_IN_PORT_TYPE_RAW) { return RET_ERROR(SCE_AUDIO_IN_ERROR_INVALID_PORT_TYPE); diff --git a/vita3k/modules/SceAvPlayer/SceAvPlayer.cpp b/vita3k/modules/SceAvPlayer/SceAvPlayer.cpp index de704b694..7e914fbd6 100644 --- a/vita3k/modules/SceAvPlayer/SceAvPlayer.cpp +++ b/vita3k/modules/SceAvPlayer/SceAvPlayer.cpp @@ -27,8 +27,6 @@ extern "C" { #include #include -#include - #include #include @@ -38,7 +36,6 @@ constexpr bool CATCHUP_VIDEO_PLAYBACK = true; // Defines stop/pause behaviour. If true, GetVideo/AudioData will return false when stopped (instead of returning the last frame). constexpr bool REJECT_DATA_ON_PAUSE = true; -namespace emu { typedef Ptr (*SceAvPlayerAllocator)(void *arguments, uint32_t alignment, uint32_t size); typedef void (*SceAvPlayerDeallocator)(void *arguments, void *memory); @@ -121,7 +118,7 @@ struct SceAvPlayerTimedText { char language[4]; uint16_t text_size; uint16_t font_size; - emu::SceAvPlayerTextPosition position; + SceAvPlayerTextPosition position; }; union SceAvPlayerStreamDetails { @@ -134,9 +131,8 @@ struct SceAvPlayerFrameInfo { Ptr data; uint32_t unknown; uint64_t timestamp; - emu::SceAvPlayerStreamDetails stream_details; + SceAvPlayerStreamDetails stream_details; }; -} // namespace emu static inline uint64_t current_time() { return std::chrono::duration_cast( @@ -402,7 +398,7 @@ EXPORT(int, sceAvPlayerEnableStream) { return UNIMPLEMENTED(); } -EXPORT(bool, sceAvPlayerGetAudioData, SceUID player_handle, emu::SceAvPlayerFrameInfo *frame_info) { +EXPORT(bool, sceAvPlayerGetAudioData, SceUID player_handle, SceAvPlayerFrameInfo *frame_info) { const PlayerPtr &player_info = lock_and_find(player_handle, host.kernel.players, host.kernel.mutex); if (player_info->audio_stream_id < 0) @@ -494,7 +490,7 @@ EXPORT(int, sceAvPlayerGetStreamInfo) { return UNIMPLEMENTED(); } -EXPORT(bool, sceAvPlayerGetVideoData, SceUID player_handle, emu::SceAvPlayerFrameInfo *frame_info) { +EXPORT(bool, sceAvPlayerGetVideoData, SceUID player_handle, SceAvPlayerFrameInfo *frame_info) { const PlayerPtr &player_info = lock_and_find(player_handle, host.kernel.players, host.kernel.mutex); if (player_info->video_stream_id < 0) @@ -524,7 +520,7 @@ EXPORT(int, sceAvPlayerGetVideoDataEx) { return UNIMPLEMENTED(); } -EXPORT(SceUID, sceAvPlayerInit, emu::SceAvPlayerInfo *info) { +EXPORT(SceUID, sceAvPlayerInit, SceAvPlayerInfo *info) { SceUID player_handle = host.kernel.get_next_uid(); host.kernel.players[player_handle] = std::make_shared(); const PlayerPtr &player_info = host.kernel.players[player_handle]; diff --git a/vita3k/modules/SceCommonDialog/SceCommonDialog.cpp b/vita3k/modules/SceCommonDialog/SceCommonDialog.cpp index 25e0d2a87..b69381eac 100644 --- a/vita3k/modules/SceCommonDialog/SceCommonDialog.cpp +++ b/vita3k/modules/SceCommonDialog/SceCommonDialog.cpp @@ -28,9 +28,6 @@ #include -#include -#include - EXPORT(int, sceCameraImportDialogAbort) { return UNIMPLEMENTED(); } @@ -126,12 +123,12 @@ EXPORT(int, sceImeDialogGetStatus) { return host.common_dialog.status; } -EXPORT(int, sceImeDialogInit, const Ptr param) { +EXPORT(int, sceImeDialogInit, const Ptr param) { if (host.common_dialog.type != NO_DIALOG) { return RET_ERROR(SCE_COMMON_DIALOG_ERROR_NOT_SUPPORTED); } - emu::SceImeDialogParam *p = param.get(host.mem); + SceImeDialogParam *p = param.get(host.mem); std::u16string title = reinterpret_cast(p->title.get(host.mem)); std::u16string text = reinterpret_cast(p->initialText.get(host.mem)); @@ -188,15 +185,15 @@ EXPORT(int, sceMsgDialogGetStatus) { return host.common_dialog.status; } -EXPORT(int, sceMsgDialogInit, const Ptr param) { +EXPORT(int, sceMsgDialogInit, const Ptr param) { if (host.common_dialog.type != NO_DIALOG) { return RET_ERROR(SCE_COMMON_DIALOG_ERROR_NOT_SUPPORTED); } - emu::SceMsgDialogParam *p = param.get(host.mem); - emu::SceMsgDialogUserMessageParam *up; - emu::SceMsgDialogButtonsParam *bp; - emu::SceMsgDialogProgressBarParam *pp; + SceMsgDialogParam *p = param.get(host.mem); + SceMsgDialogUserMessageParam *up; + SceMsgDialogButtonsParam *bp; + SceMsgDialogProgressBarParam *pp; host.common_dialog.status = SCE_COMMON_DIALOG_STATUS_RUNNING; host.common_dialog.type = MESSAGE_DIALOG; @@ -513,7 +510,7 @@ EXPORT(int, sceNpTrophySetupDialogAbort) { return 0; } -EXPORT(int, sceNpTrophySetupDialogGetResult, emu::SceNpTrophySetupDialogResult *result) { +EXPORT(int, sceNpTrophySetupDialogGetResult, SceNpTrophySetupDialogResult *result) { result->result = host.common_dialog.result; return 0; } @@ -522,7 +519,7 @@ EXPORT(int, sceNpTrophySetupDialogGetStatus) { return host.common_dialog.status; } -EXPORT(int, sceNpTrophySetupDialogInit, const Ptr param) { +EXPORT(int, sceNpTrophySetupDialogInit, const Ptr param) { if (host.common_dialog.type != NO_DIALOG) { return RET_ERROR(SCE_COMMON_DIALOG_ERROR_NOT_SUPPORTED); } @@ -623,13 +620,13 @@ EXPORT(int, sceSaveDataDialogAbort) { return RET_ERROR(SCE_COMMON_DIALOG_ERROR_NOT_IN_USE); } host.common_dialog.status = SCE_COMMON_DIALOG_STATUS_FINISHED; - host.common_dialog.savedata.button_id = emu::SCE_SAVEDATA_DIALOG_BUTTON_ID_INVALID; + host.common_dialog.savedata.button_id = SCE_SAVEDATA_DIALOG_BUTTON_ID_INVALID; host.common_dialog.result = SCE_COMMON_DIALOG_RESULT_ABORTED; host.common_dialog.type = NO_DIALOG; return 0; } -static void check_empty_param(HostState &host, const emu::SceAppUtilSaveDataSlotEmptyParam *empty_param) { +static void check_empty_param(HostState &host, const SceAppUtilSaveDataSlotEmptyParam *empty_param) { vfs::FileBuffer thumbnail_buffer; host.common_dialog.savedata.title[host.common_dialog.savedata.selected_save] = ""; host.common_dialog.savedata.subtitle[host.common_dialog.savedata.selected_save] = ""; @@ -645,7 +642,7 @@ static void check_empty_param(HostState &host, const emu::SceAppUtilSaveDataSlot } } -static void check_save_file(SceUID fd, std::vector slot_param, int index, HostState &host, const char *export_name) { +static void check_save_file(SceUID fd, std::vector slot_param, int index, HostState &host, const char *export_name) { vfs::FileBuffer thumbnail_buffer; if (fd < 0) { host.common_dialog.savedata.slot_info[index].isExist = 0; @@ -664,7 +661,7 @@ static void check_save_file(SceUID fd, std::vector param) { +EXPORT(int, sceSaveDataDialogContinue, const Ptr param) { if (param.get(host.mem) == nullptr) { return RET_ERROR(SCE_COMMON_DIALOG_ERROR_NULL); } @@ -692,12 +689,12 @@ EXPORT(int, sceSaveDataDialogContinue, const Ptr pa host.common_dialog.status = SCE_COMMON_DIALOG_STATUS_RUNNING; host.common_dialog.savedata.has_progress_bar = false; - const emu::SceSaveDataDialogParam *p = param.get(host.mem); - emu::SceSaveDataDialogUserMessageParam *user_message; - emu::SceSaveDataDialogSystemMessageParam *sys_message; - emu::SceSaveDataDialogProgressBarParam *progress_bar; - emu::SceAppUtilSaveDataSlotEmptyParam *empty_param; - std::vector slot_param; + const SceSaveDataDialogParam *p = param.get(host.mem); + SceSaveDataDialogUserMessageParam *user_message; + SceSaveDataDialogSystemMessageParam *sys_message; + SceSaveDataDialogProgressBarParam *progress_bar; + SceAppUtilSaveDataSlotEmptyParam *empty_param; + std::vector slot_param; vfs::FileBuffer thumbnail_buffer; SceUID fd; @@ -707,8 +704,8 @@ EXPORT(int, sceSaveDataDialogContinue, const Ptr pa switch (host.common_dialog.savedata.mode) { default: - case emu::SCE_SAVEDATA_DIALOG_MODE_FIXED: - host.common_dialog.savedata.mode_to_display = emu::SCE_SAVEDATA_DIALOG_MODE_FIXED; + case SCE_SAVEDATA_DIALOG_MODE_FIXED: + host.common_dialog.savedata.mode_to_display = SCE_SAVEDATA_DIALOG_MODE_FIXED; slot_param.resize(1); host.common_dialog.savedata.icon_loaded.resize(1); fd = open_file(host.io, construct_slotparam_path(host.common_dialog.savedata.slot_id[host.common_dialog.savedata.selected_save]).c_str(), SCE_O_RDONLY, host.pref_path, export_name); @@ -716,7 +713,7 @@ EXPORT(int, sceSaveDataDialogContinue, const Ptr pa host.common_dialog.savedata.slot_info[host.common_dialog.savedata.selected_save].isExist = 0; } else { host.common_dialog.savedata.slot_info[host.common_dialog.savedata.selected_save].isExist = 1; - read_file(&slot_param[0], host.io, fd, sizeof(emu::SceAppUtilSaveDataSlotParam), export_name); + read_file(&slot_param[0], host.io, fd, sizeof(SceAppUtilSaveDataSlotParam), export_name); close_file(host.io, fd, export_name); host.common_dialog.savedata.title[host.common_dialog.savedata.selected_save] = slot_param[0].title; host.common_dialog.savedata.subtitle[host.common_dialog.savedata.selected_save] = slot_param[0].subTitle; @@ -730,7 +727,7 @@ EXPORT(int, sceSaveDataDialogContinue, const Ptr pa host.common_dialog.savedata.icon_loaded[0] = true; } switch (p->mode) { - case emu::SCE_SAVEDATA_DIALOG_MODE_USER_MSG: + case SCE_SAVEDATA_DIALOG_MODE_USER_MSG: user_message = p->userMsgParam.get(host.mem); host.common_dialog.savedata.msg = reinterpret_cast(user_message->msg.get(host.mem)); host.common_dialog.savedata.slot_id[host.common_dialog.savedata.selected_save] = user_message->targetSlot.id; @@ -740,25 +737,25 @@ EXPORT(int, sceSaveDataDialogContinue, const Ptr pa } switch (user_message->buttonType) { - case emu::SCE_SAVEDATA_DIALOG_BUTTON_TYPE_OK: + case SCE_SAVEDATA_DIALOG_BUTTON_TYPE_OK: host.common_dialog.savedata.btn_num = 1; host.common_dialog.savedata.btn[0] = "OK"; - host.common_dialog.savedata.btn_val[0] = emu::SCE_SAVEDATA_DIALOG_BUTTON_ID_OK; + host.common_dialog.savedata.btn_val[0] = SCE_SAVEDATA_DIALOG_BUTTON_ID_OK; break; - case emu::SCE_SAVEDATA_DIALOG_BUTTON_TYPE_YESNO: + case SCE_SAVEDATA_DIALOG_BUTTON_TYPE_YESNO: host.common_dialog.savedata.btn_num = 2; host.common_dialog.savedata.btn[0] = "NO"; - host.common_dialog.savedata.btn_val[0] = emu::SCE_SAVEDATA_DIALOG_BUTTON_ID_NO; + host.common_dialog.savedata.btn_val[0] = SCE_SAVEDATA_DIALOG_BUTTON_ID_NO; host.common_dialog.savedata.btn[1] = "YES"; - host.common_dialog.savedata.btn_val[1] = emu::SCE_SAVEDATA_DIALOG_BUTTON_ID_YES; + host.common_dialog.savedata.btn_val[1] = SCE_SAVEDATA_DIALOG_BUTTON_ID_YES; break; - case emu::SCE_SAVEDATA_DIALOG_BUTTON_TYPE_NONE: + case SCE_SAVEDATA_DIALOG_BUTTON_TYPE_NONE: host.common_dialog.savedata.btn_num = 0; - host.common_dialog.savedata.btn_val[0] = emu::SCE_SAVEDATA_DIALOG_BUTTON_ID_INVALID; + host.common_dialog.savedata.btn_val[0] = SCE_SAVEDATA_DIALOG_BUTTON_ID_INVALID; break; } break; - case emu::SCE_SAVEDATA_DIALOG_MODE_SYSTEM_MSG: + case SCE_SAVEDATA_DIALOG_MODE_SYSTEM_MSG: sys_message = p->sysMsgParam.get(host.mem); host.common_dialog.savedata.slot_id[host.common_dialog.savedata.selected_save] = sys_message->targetSlot.id; if (!host.common_dialog.savedata.slot_info[host.common_dialog.savedata.selected_save].isExist) { @@ -766,116 +763,116 @@ EXPORT(int, sceSaveDataDialogContinue, const Ptr pa check_empty_param(host, empty_param); } switch (sys_message->sysMsgType) { - case emu::SCE_SAVEDATA_DIALOG_SYSMSG_TYPE_NODATA: + case SCE_SAVEDATA_DIALOG_SYSMSG_TYPE_NODATA: host.common_dialog.savedata.msg = "There is no saved data."; host.common_dialog.savedata.btn_num = 1; host.common_dialog.savedata.btn[0] = "OK"; - host.common_dialog.savedata.btn_val[0] = emu::SCE_SAVEDATA_DIALOG_BUTTON_ID_OK; + host.common_dialog.savedata.btn_val[0] = SCE_SAVEDATA_DIALOG_BUTTON_ID_OK; break; - case emu::SCE_SAVEDATA_DIALOG_SYSMSG_TYPE_CONFIRM: + case SCE_SAVEDATA_DIALOG_SYSMSG_TYPE_CONFIRM: switch (host.common_dialog.savedata.display_type) { - case emu::SCE_SAVEDATA_DIALOG_TYPE_SAVE: + case SCE_SAVEDATA_DIALOG_TYPE_SAVE: host.common_dialog.savedata.msg = "Do you want to save the data?"; break; - case emu::SCE_SAVEDATA_DIALOG_TYPE_LOAD: + case SCE_SAVEDATA_DIALOG_TYPE_LOAD: host.common_dialog.savedata.msg = "Do you want to load this saved data?"; break; - case emu::SCE_SAVEDATA_DIALOG_TYPE_DELETE: + case SCE_SAVEDATA_DIALOG_TYPE_DELETE: host.common_dialog.savedata.msg = "Do you want to delete this saved data?"; break; } host.common_dialog.savedata.btn_num = 2; host.common_dialog.savedata.btn[0] = "NO"; - host.common_dialog.savedata.btn_val[0] = emu::SCE_SAVEDATA_DIALOG_BUTTON_ID_NO; + host.common_dialog.savedata.btn_val[0] = SCE_SAVEDATA_DIALOG_BUTTON_ID_NO; host.common_dialog.savedata.btn[1] = "YES"; - host.common_dialog.savedata.btn_val[1] = emu::SCE_SAVEDATA_DIALOG_BUTTON_ID_YES; + host.common_dialog.savedata.btn_val[1] = SCE_SAVEDATA_DIALOG_BUTTON_ID_YES; break; - case emu::SCE_SAVEDATA_DIALOG_SYSMSG_TYPE_OVERWRITE: + case SCE_SAVEDATA_DIALOG_SYSMSG_TYPE_OVERWRITE: host.common_dialog.savedata.msg = "Do you want to overwrite this saved data?"; host.common_dialog.savedata.btn_num = 2; host.common_dialog.savedata.btn[0] = "NO"; - host.common_dialog.savedata.btn_val[0] = emu::SCE_SAVEDATA_DIALOG_BUTTON_ID_NO; + host.common_dialog.savedata.btn_val[0] = SCE_SAVEDATA_DIALOG_BUTTON_ID_NO; host.common_dialog.savedata.btn[1] = "YES"; - host.common_dialog.savedata.btn_val[1] = emu::SCE_SAVEDATA_DIALOG_BUTTON_ID_YES; + host.common_dialog.savedata.btn_val[1] = SCE_SAVEDATA_DIALOG_BUTTON_ID_YES; break; - case emu::SCE_SAVEDATA_DIALOG_SYSMSG_TYPE_NOSPACE: + case SCE_SAVEDATA_DIALOG_SYSMSG_TYPE_NOSPACE: host.common_dialog.savedata.msg = "There is not enough free space on the memory card."; host.common_dialog.savedata.btn_num = 0; break; - case emu::SCE_SAVEDATA_DIALOG_SYSMSG_TYPE_PROGRESS: + case SCE_SAVEDATA_DIALOG_SYSMSG_TYPE_PROGRESS: host.common_dialog.savedata.btn_num = 0; switch (host.common_dialog.savedata.display_type) { - case emu::SCE_SAVEDATA_DIALOG_TYPE_SAVE: + case SCE_SAVEDATA_DIALOG_TYPE_SAVE: host.common_dialog.savedata.msg = "Saving...\nDo not power off the system or close the application"; break; - case emu::SCE_SAVEDATA_DIALOG_TYPE_LOAD: + case SCE_SAVEDATA_DIALOG_TYPE_LOAD: host.common_dialog.savedata.msg = "Loading..."; break; - case emu::SCE_SAVEDATA_DIALOG_TYPE_DELETE: + case SCE_SAVEDATA_DIALOG_TYPE_DELETE: host.common_dialog.savedata.msg = "Please Wait..."; break; } break; - case emu::SCE_SAVEDATA_DIALOG_SYSMSG_TYPE_FINISHED: + case SCE_SAVEDATA_DIALOG_SYSMSG_TYPE_FINISHED: switch (host.common_dialog.savedata.display_type) { - case emu::SCE_SAVEDATA_DIALOG_TYPE_SAVE: + case SCE_SAVEDATA_DIALOG_TYPE_SAVE: host.common_dialog.savedata.msg = "Saving complete."; break; - case emu::SCE_SAVEDATA_DIALOG_TYPE_LOAD: + case SCE_SAVEDATA_DIALOG_TYPE_LOAD: host.common_dialog.savedata.msg = "Loading complete."; break; - case emu::SCE_SAVEDATA_DIALOG_TYPE_DELETE: + case SCE_SAVEDATA_DIALOG_TYPE_DELETE: host.common_dialog.savedata.msg = "Deletion complete."; break; } host.common_dialog.savedata.btn_num = 1; host.common_dialog.savedata.btn[0] = "OK"; - host.common_dialog.savedata.btn_val[0] = emu::SCE_SAVEDATA_DIALOG_BUTTON_ID_OK; + host.common_dialog.savedata.btn_val[0] = SCE_SAVEDATA_DIALOG_BUTTON_ID_OK; break; - case emu::SCE_SAVEDATA_DIALOG_SYSMSG_TYPE_CONFIRM_CANCEL: + case SCE_SAVEDATA_DIALOG_SYSMSG_TYPE_CONFIRM_CANCEL: switch (host.common_dialog.savedata.display_type) { - case emu::SCE_SAVEDATA_DIALOG_TYPE_SAVE: + case SCE_SAVEDATA_DIALOG_TYPE_SAVE: host.common_dialog.savedata.msg = "Do you want to cancel saving?"; break; - case emu::SCE_SAVEDATA_DIALOG_TYPE_LOAD: + case SCE_SAVEDATA_DIALOG_TYPE_LOAD: host.common_dialog.savedata.msg = "Do you want to cancel loading?"; break; - case emu::SCE_SAVEDATA_DIALOG_TYPE_DELETE: + case SCE_SAVEDATA_DIALOG_TYPE_DELETE: host.common_dialog.savedata.msg = "Do you want to cancel deleting?"; break; } host.common_dialog.savedata.btn_num = 2; host.common_dialog.savedata.btn[0] = "NO"; - host.common_dialog.savedata.btn_val[0] = emu::SCE_SAVEDATA_DIALOG_BUTTON_ID_NO; + host.common_dialog.savedata.btn_val[0] = SCE_SAVEDATA_DIALOG_BUTTON_ID_NO; host.common_dialog.savedata.btn[1] = "YES"; - host.common_dialog.savedata.btn_val[1] = emu::SCE_SAVEDATA_DIALOG_BUTTON_ID_YES; + host.common_dialog.savedata.btn_val[1] = SCE_SAVEDATA_DIALOG_BUTTON_ID_YES; break; - case emu::SCE_SAVEDATA_DIALOG_SYSMSG_TYPE_FILE_CORRUPTED: + case SCE_SAVEDATA_DIALOG_SYSMSG_TYPE_FILE_CORRUPTED: host.common_dialog.savedata.msg = "The file is corrupt"; host.common_dialog.savedata.btn_num = 1; host.common_dialog.savedata.btn[0] = "OK"; - host.common_dialog.savedata.btn_val[0] = emu::SCE_SAVEDATA_DIALOG_BUTTON_ID_OK; + host.common_dialog.savedata.btn_val[0] = SCE_SAVEDATA_DIALOG_BUTTON_ID_OK; break; - case emu::SCE_SAVEDATA_DIALOG_SYSMSG_TYPE_NOSPACE_CONTINUABLE: + case SCE_SAVEDATA_DIALOG_SYSMSG_TYPE_NOSPACE_CONTINUABLE: host.common_dialog.savedata.msg = "Could not save the file.\n\ There is not enough free space on the memory card."; host.common_dialog.savedata.btn_num = 1; host.common_dialog.savedata.btn[0] = "OK"; - host.common_dialog.savedata.btn_val[0] = emu::SCE_SAVEDATA_DIALOG_BUTTON_TYPE_OK; + host.common_dialog.savedata.btn_val[0] = SCE_SAVEDATA_DIALOG_BUTTON_TYPE_OK; break; - case emu::SCE_SAVEDATE_DIALOG_SYSMSG_TYPE_NODATA_IMPORT: + case SCE_SAVEDATE_DIALOG_SYSMSG_TYPE_NODATA_IMPORT: host.common_dialog.savedata.msg = "There is no saved data that can be used with this application.\n\ If the saved data you want to use is on the memory card, select the \"import saved data\" icon on the LiveArea screen."; host.common_dialog.savedata.btn_num = 1; host.common_dialog.savedata.btn[0] = "OK"; - host.common_dialog.savedata.btn_val[0] = emu::SCE_SAVEDATA_DIALOG_BUTTON_ID_OK; + host.common_dialog.savedata.btn_val[0] = SCE_SAVEDATA_DIALOG_BUTTON_ID_OK; break; default: LOG_ERROR("Attempt to continue savedata dialog with unknown system message mode: {}", log_hex(sys_message->sysMsgType)); break; } break; - case emu::SCE_SAVEDATA_DIALOG_MODE_ERROR_CODE: + case SCE_SAVEDATA_DIALOG_MODE_ERROR_CODE: host.common_dialog.savedata.slot_id[host.common_dialog.savedata.selected_save] = p->errorCodeParam.get(host.mem)->targetSlot.id; if (!host.common_dialog.savedata.slot_info[host.common_dialog.savedata.selected_save].isExist) { empty_param = p->errorCodeParam.get(host.mem)->targetSlot.emptyParam.get(host.mem); @@ -883,20 +880,20 @@ EXPORT(int, sceSaveDataDialogContinue, const Ptr pa } host.common_dialog.savedata.btn_num = 1; host.common_dialog.savedata.btn[0] = "OK"; - host.common_dialog.savedata.btn_val[0] = emu::SCE_SAVEDATA_DIALOG_BUTTON_ID_OK; + host.common_dialog.savedata.btn_val[0] = SCE_SAVEDATA_DIALOG_BUTTON_ID_OK; switch (host.common_dialog.savedata.display_type) { - case emu::SCE_SAVEDATA_DIALOG_TYPE_SAVE: + case SCE_SAVEDATA_DIALOG_TYPE_SAVE: host.common_dialog.savedata.msg = fmt::format("An error has occurred while saving.\n({})", log_hex(p->errorCodeParam.get(host.mem)->errorCode)); break; - case emu::SCE_SAVEDATA_DIALOG_TYPE_LOAD: + case SCE_SAVEDATA_DIALOG_TYPE_LOAD: host.common_dialog.savedata.msg = fmt::format("An error has occurred while loading.\n({})", log_hex(p->errorCodeParam.get(host.mem)->errorCode)); break; - case emu::SCE_SAVEDATA_DIALOG_TYPE_DELETE: + case SCE_SAVEDATA_DIALOG_TYPE_DELETE: host.common_dialog.savedata.msg = fmt::format("An error has occurred while deleting.\n({})", log_hex(p->errorCodeParam.get(host.mem)->errorCode)); break; } break; - case emu::SCE_SAVEDATA_DIALOG_MODE_PROGRESS_BAR: + case SCE_SAVEDATA_DIALOG_MODE_PROGRESS_BAR: progress_bar = p->progressBarParam.get(host.mem); host.common_dialog.savedata.slot_id[host.common_dialog.savedata.selected_save] = progress_bar->targetSlot.id; host.common_dialog.savedata.has_progress_bar = true; @@ -908,15 +905,15 @@ EXPORT(int, sceSaveDataDialogContinue, const Ptr pa host.common_dialog.savedata.msg = reinterpret_cast(progress_bar->msg.get(host.mem)); } else { switch (progress_bar->sysMsgParam.sysMsgType) { - case emu::SCE_SAVEDATA_DIALOG_SYSMSG_TYPE_PROGRESS: + case SCE_SAVEDATA_DIALOG_SYSMSG_TYPE_PROGRESS: switch (host.common_dialog.savedata.display_type) { - case emu::SCE_SAVEDATA_DIALOG_TYPE_SAVE: + case SCE_SAVEDATA_DIALOG_TYPE_SAVE: host.common_dialog.savedata.msg = "Saving..."; break; - case emu::SCE_SAVEDATA_DIALOG_TYPE_LOAD: + case SCE_SAVEDATA_DIALOG_TYPE_LOAD: host.common_dialog.savedata.msg = "Loading..."; break; - case emu::SCE_SAVEDATA_DIALOG_TYPE_DELETE: + case SCE_SAVEDATA_DIALOG_TYPE_DELETE: host.common_dialog.savedata.msg = "Please Wait."; break; } @@ -932,8 +929,8 @@ EXPORT(int, sceSaveDataDialogContinue, const Ptr pa break; } break; - case emu::SCE_SAVEDATA_DIALOG_MODE_LIST: - host.common_dialog.savedata.mode_to_display = emu::SCE_SAVEDATA_DIALOG_MODE_LIST; + case SCE_SAVEDATA_DIALOG_MODE_LIST: + host.common_dialog.savedata.mode_to_display = SCE_SAVEDATA_DIALOG_MODE_LIST; slot_param.resize(host.common_dialog.savedata.slot_list_size); host.common_dialog.savedata.icon_loaded.resize(host.common_dialog.savedata.slot_list_size); for (int i = 0; i < host.common_dialog.savedata.slot_list_size; i++) { @@ -957,7 +954,7 @@ EXPORT(int, sceSaveDataDialogFinish) { return 0; } -EXPORT(int, sceSaveDataDialogGetResult, Ptr result) { +EXPORT(int, sceSaveDataDialogGetResult, Ptr result) { if (result.get(host.mem) == nullptr) { return RET_ERROR(SCE_COMMON_DIALOG_ERROR_NULL); } @@ -987,7 +984,7 @@ EXPORT(int, sceSaveDataDialogGetSubStatus) { return host.common_dialog.status; } -EXPORT(int, sceSaveDataDialogInit, const Ptr param) { +EXPORT(int, sceSaveDataDialogInit, const Ptr param) { if (param.get(host.mem) == nullptr) { return RET_ERROR(SCE_COMMON_DIALOG_ERROR_NULL); } @@ -998,11 +995,11 @@ EXPORT(int, sceSaveDataDialogInit, const Ptr param) host.common_dialog.status = SCE_COMMON_DIALOG_STATUS_RUNNING; - const emu::SceSaveDataDialogParam *p = param.get(host.mem); - emu::SceSaveDataDialogFixedParam *fixed_param; - emu::SceSaveDataDialogListParam *list_param; - std::vector slot_list; - std::vector slot_param; + const SceSaveDataDialogParam *p = param.get(host.mem); + SceSaveDataDialogFixedParam *fixed_param; + SceSaveDataDialogListParam *list_param; + std::vector slot_list; + std::vector slot_param; std::string thumbnail_path; SceUID fd; @@ -1012,7 +1009,7 @@ EXPORT(int, sceSaveDataDialogInit, const Ptr param) host.common_dialog.savedata.userdata = p->userdata; switch (p->mode) { - case emu::SCE_SAVEDATA_DIALOG_MODE_FIXED: + case SCE_SAVEDATA_DIALOG_MODE_FIXED: fixed_param = p->fixedParam.get(host.mem); slot_param.resize(1); host.common_dialog.savedata.icon_loaded.resize(1); @@ -1034,7 +1031,7 @@ EXPORT(int, sceSaveDataDialogInit, const Ptr param) host.common_dialog.savedata.has_date[0] = false; } else { host.common_dialog.savedata.slot_info[0].isExist = 1; - read_file(&slot_param[0], host.io, fd, sizeof(emu::SceAppUtilSaveDataSlotParam), export_name); + read_file(&slot_param[0], host.io, fd, sizeof(SceAppUtilSaveDataSlotParam), export_name); close_file(host.io, fd, export_name); host.common_dialog.savedata.title[0] = slot_param[0].title; host.common_dialog.savedata.subtitle[0] = slot_param[0].subTitle; @@ -1049,7 +1046,7 @@ EXPORT(int, sceSaveDataDialogInit, const Ptr param) } host.common_dialog.status = SCE_COMMON_DIALOG_STATUS_FINISHED; break; - case emu::SCE_SAVEDATA_DIALOG_MODE_LIST: + case SCE_SAVEDATA_DIALOG_MODE_LIST: list_param = p->listParam.get(host.mem); host.common_dialog.savedata.slot_list_size = list_param->slotListSize; host.common_dialog.savedata.list_style = list_param->itemStyle; @@ -1070,13 +1067,13 @@ EXPORT(int, sceSaveDataDialogInit, const Ptr param) host.common_dialog.savedata.list_title = reinterpret_cast(list_param->listTitle.get(host.mem)); } else { switch (p->dispType) { - case emu::SCE_SAVEDATA_DIALOG_TYPE_SAVE: + case SCE_SAVEDATA_DIALOG_TYPE_SAVE: host.common_dialog.savedata.list_title = "Save"; break; - case emu::SCE_SAVEDATA_DIALOG_TYPE_LOAD: + case SCE_SAVEDATA_DIALOG_TYPE_LOAD: host.common_dialog.savedata.list_title = "Load"; break; - case emu::SCE_SAVEDATA_DIALOG_TYPE_DELETE: + case SCE_SAVEDATA_DIALOG_TYPE_DELETE: host.common_dialog.savedata.list_title = "Delete"; break; } @@ -1098,24 +1095,24 @@ EXPORT(int, sceSaveDataDialogInit, const Ptr param) return 0; } -EXPORT(int, sceSaveDataDialogProgressBarInc, emu::SceSaveDataDialogProgressBarTarget target, SceUInt32 delta) { +EXPORT(int, sceSaveDataDialogProgressBarInc, SceSaveDataDialogProgressBarTarget target, SceUInt32 delta) { if (host.common_dialog.type != SAVEDATA_DIALOG) { return RET_ERROR(SCE_COMMON_DIALOG_ERROR_NOT_RUNNING); } - if (host.common_dialog.savedata.mode != emu::SCE_SAVEDATA_DIALOG_MODE_PROGRESS_BAR) { + if (host.common_dialog.savedata.mode != SCE_SAVEDATA_DIALOG_MODE_PROGRESS_BAR) { return RET_ERROR(SCE_COMMON_DIALOG_ERROR_NOT_SUPPORTED); } host.common_dialog.savedata.bar_rate += delta; return 0; } -EXPORT(int, sceSaveDataDialogProgressBarSetValue, emu::SceSaveDataDialogProgressBarTarget target, SceUInt32 rate) { +EXPORT(int, sceSaveDataDialogProgressBarSetValue, SceSaveDataDialogProgressBarTarget target, SceUInt32 rate) { if (host.common_dialog.type != SAVEDATA_DIALOG) { return RET_ERROR(SCE_COMMON_DIALOG_ERROR_NOT_RUNNING); } - if (host.common_dialog.savedata.mode != emu::SCE_SAVEDATA_DIALOG_MODE_PROGRESS_BAR) { + if (host.common_dialog.savedata.mode != SCE_SAVEDATA_DIALOG_MODE_PROGRESS_BAR) { return RET_ERROR(SCE_COMMON_DIALOG_ERROR_NOT_SUPPORTED); } host.common_dialog.savedata.bar_rate = rate; @@ -1131,7 +1128,7 @@ EXPORT(int, sceSaveDataDialogSubClose) { } host.common_dialog.status = SCE_COMMON_DIALOG_STATUS_FINISHED; host.common_dialog.result = SCE_COMMON_DIALOG_RESULT_OK; - host.common_dialog.savedata.button_id = emu::SCE_SAVEDATA_DIALOG_BUTTON_ID_INVALID; + host.common_dialog.savedata.button_id = SCE_SAVEDATA_DIALOG_BUTTON_ID_INVALID; return 0; } diff --git a/vita3k/modules/SceCtrl/SceCtrl.cpp b/vita3k/modules/SceCtrl/SceCtrl.cpp index 4ba1b2f61..fa3d38287 100644 --- a/vita3k/modules/SceCtrl/SceCtrl.cpp +++ b/vita3k/modules/SceCtrl/SceCtrl.cpp @@ -19,10 +19,6 @@ #include -#include -#include -#include - #include #include #include @@ -33,6 +29,102 @@ // TODO Move elsewhere. static uint64_t timestamp; +enum SceCtrlErrorCode { + SCE_CTRL_ERROR_INVALID_ARG = 0x80340001, + SCE_CTRL_ERROR_PRIV_REQUIRED = 0x80340002, + SCE_CTRL_ERROR_NO_DEVICE = 0x80340020, + SCE_CTRL_ERROR_NOT_SUPPORTED = 0x80340021, + SCE_CTRL_ERROR_INVALID_MODE = 0x80340022, + SCE_CTRL_ERROR_FATAL = 0x803400FF +}; + +enum SceCtrlExternalInputMode { + SCE_CTRL_TYPE_UNPAIRED = 0, //!< Unpaired controller + SCE_CTRL_TYPE_PHY = 1, //!< Physical controller for VITA + SCE_CTRL_TYPE_VIRT = 2, //!< Virtual controller for PSTV + SCE_CTRL_TYPE_DS3 = 4, //!< DualShock 3 + SCE_CTRL_TYPE_DS4 = 8 //!< DualShock 4 +}; + +enum SceCtrlButtons { + SCE_CTRL_SELECT = 0x00000001, //!< Select button. + SCE_CTRL_L3 = 0x00000002, //!< L3 button. + SCE_CTRL_R3 = 0x00000004, //!< R3 button. + SCE_CTRL_START = 0x00000008, //!< Start button. + SCE_CTRL_UP = 0x00000010, //!< Up D-Pad button. + SCE_CTRL_RIGHT = 0x00000020, //!< Right D-Pad button. + SCE_CTRL_DOWN = 0x00000040, //!< Down D-Pad button. + SCE_CTRL_LEFT = 0x00000080, //!< Left D-Pad button. + SCE_CTRL_LTRIGGER = 0x00000100, //!< Left trigger. + SCE_CTRL_L2 = SCE_CTRL_LTRIGGER, //!< L2 button. + SCE_CTRL_RTRIGGER = 0x00000200, //!< Right trigger. + SCE_CTRL_R2 = SCE_CTRL_RTRIGGER, //!< R2 button. + SCE_CTRL_L1 = 0x00000400, //!< L1 button. + SCE_CTRL_R1 = 0x00000800, //!< R1 button. + SCE_CTRL_TRIANGLE = 0x00001000, //!< Triangle button. + SCE_CTRL_CIRCLE = 0x00002000, //!< Circle button. + SCE_CTRL_CROSS = 0x00004000, //!< Cross button. + SCE_CTRL_SQUARE = 0x00008000, //!< Square button. + SCE_CTRL_INTERCEPTED = 0x00010000, //!< Input not available because intercepted by another application + SCE_CTRL_PSBUTTON = SCE_CTRL_INTERCEPTED, //!< Playstation (Home) button. + SCE_CTRL_HEADPHONE = 0x00080000, //!< Headphone plugged in. + SCE_CTRL_VOLUP = 0x00100000, //!< Volume up button. + SCE_CTRL_VOLDOWN = 0x00200000, //!< Volume down button. + SCE_CTRL_POWER = 0x40000000 //!< Power button. +}; + +struct SceCtrlPortInfo { + uint8_t port[5]; //!< Controller type of each port (See ::SceCtrlExternalInputMode) + uint8_t unk[11]; //!< Unknown +}; + +struct SceCtrlActuator { + unsigned char small; //!< Vibration strength of the small motor + unsigned char large; //!< Vibration strength of the large motor + uint8_t unk[6]; //!< Unknown +}; + +struct SceCtrlData { + /** The current read frame. */ + uint64_t timeStamp; + /** Bit mask containing zero or more of ::SceCtrlButtons. */ + unsigned int buttons; + /** Left analogue stick, X axis. */ + unsigned char lx; + /** Left analogue stick, Y axis. */ + unsigned char ly; + /** Right analogue stick, X axis. */ + unsigned char rx; + /** Right analogue stick, Y axis. */ + unsigned char ry; + /** Up button */ + uint8_t up; + /** Right button */ + uint8_t right; + /** Down button */ + uint8_t down; + /** Left button */ + uint8_t left; + /** Left trigger (L2) */ + uint8_t lt; + /** Right trigger (R2) */ + uint8_t rt; + /** Left button (L1) */ + uint8_t l1; + /** Right button (R1) */ + uint8_t r1; + /** Triangle button */ + uint8_t triangle; + /** Circle button */ + uint8_t circle; + /** Cross button */ + uint8_t cross; + /** Square button */ + uint8_t square; + /** Reserved. */ + uint8_t reserved[4]; +}; + struct KeyBinding { SDL_Scancode scancode; uint32_t button; diff --git a/vita3k/modules/SceDbg/SceDbg.cpp b/vita3k/modules/SceDbg/SceDbg.cpp index e177ff023..991172f57 100644 --- a/vita3k/modules/SceDbg/SceDbg.cpp +++ b/vita3k/modules/SceDbg/SceDbg.cpp @@ -22,8 +22,6 @@ #include -#include - EXPORT(int, sceDbgAssertionHandler, const char *filename, int line, bool do_stop, const char *component, module::vargs messages) { const ThreadStatePtr thread = lock_and_find(thread_id, host.kernel.threads, host.kernel.mutex); diff --git a/vita3k/modules/SceDisplay/SceDisplay.cpp b/vita3k/modules/SceDisplay/SceDisplay.cpp index 177f385fa..e47628697 100644 --- a/vita3k/modules/SceDisplay/SceDisplay.cpp +++ b/vita3k/modules/SceDisplay/SceDisplay.cpp @@ -19,7 +19,19 @@ #include -#include +enum SceDisplayErrorCode { + SCE_DISPLAY_ERROR_OK = 0, + SCE_DISPLAY_ERROR_INVALID_HEAD = 0x80290000, + SCE_DISPLAY_ERROR_INVALID_VALUE = 0x80290001, + SCE_DISPLAY_ERROR_INVALID_ADDR = 0x80290002, + SCE_DISPLAY_ERROR_INVALID_PIXELFORMAT = 0x80290003, + SCE_DISPLAY_ERROR_INVALID_PITCH = 0x80290004, + SCE_DISPLAY_ERROR_INVALID_RESOLUTION = 0x80290005, + SCE_DISPLAY_ERROR_INVALID_UPDATETIMING = 0x80290006, + SCE_DISPLAY_ERROR_NO_FRAME_BUFFER = 0x80290007, + SCE_DISPLAY_ERROR_NO_PIXEL_DATA = 0x80290008, + SCE_DISPLAY_ERROR_NO_OUTPUT_SIGNAL = 0x80290009 +}; static int display_wait(HostState &host) { std::unique_lock lock(host.display.mutex); diff --git a/vita3k/modules/SceDisplay/SceDisplayUser.cpp b/vita3k/modules/SceDisplay/SceDisplayUser.cpp index 2c7ebe485..e37d1caa1 100644 --- a/vita3k/modules/SceDisplay/SceDisplayUser.cpp +++ b/vita3k/modules/SceDisplay/SceDisplayUser.cpp @@ -17,9 +17,25 @@ #include "SceDisplayUser.h" -#include +enum SceDisplaySetBufSync { + SCE_DISPLAY_SETBUF_IMMEDIATE = 0, + SCE_DISPLAY_SETBUF_NEXTFRAME = 1 +}; + +enum SceDisplayErrorCode { + SCE_DISPLAY_ERROR_OK = 0, + SCE_DISPLAY_ERROR_INVALID_HEAD = 0x80290000, + SCE_DISPLAY_ERROR_INVALID_VALUE = 0x80290001, + SCE_DISPLAY_ERROR_INVALID_ADDR = 0x80290002, + SCE_DISPLAY_ERROR_INVALID_PIXELFORMAT = 0x80290003, + SCE_DISPLAY_ERROR_INVALID_PITCH = 0x80290004, + SCE_DISPLAY_ERROR_INVALID_RESOLUTION = 0x80290005, + SCE_DISPLAY_ERROR_INVALID_UPDATETIMING = 0x80290006, + SCE_DISPLAY_ERROR_NO_FRAME_BUFFER = 0x80290007, + SCE_DISPLAY_ERROR_NO_PIXEL_DATA = 0x80290008, + SCE_DISPLAY_ERROR_NO_OUTPUT_SIGNAL = 0x80290009 +}; -namespace emu { struct SceDisplayFrameBuf { uint32_t size = 0; Ptr base; @@ -28,9 +44,6 @@ struct SceDisplayFrameBuf { uint32_t width = 0; uint32_t height = 0; }; -} // namespace emu - -using namespace emu; EXPORT(int, sceDisplayGetFrameBuf) { return UNIMPLEMENTED(); @@ -48,9 +61,9 @@ EXPORT(int, sceDisplayGetResolutionInfoInternal) { return UNIMPLEMENTED(); } -EXPORT(int, sceDisplaySetFrameBuf, const emu::SceDisplayFrameBuf *pParam, SceDisplaySetBufSync sync) { +EXPORT(int, sceDisplaySetFrameBuf, const SceDisplayFrameBuf *pParam, SceDisplaySetBufSync sync) { assert(pParam != nullptr); // Todo: pParam can be NULL, in that case black screen is shown - if (pParam->size != sizeof(emu::SceDisplayFrameBuf)) { + if (pParam->size != sizeof(SceDisplayFrameBuf)) { return RET_ERROR(SCE_DISPLAY_ERROR_INVALID_VALUE); } if (!pParam->base) { diff --git a/vita3k/modules/SceFiber/SceFiber.cpp b/vita3k/modules/SceFiber/SceFiber.cpp index 4f4df2921..d40d6e727 100644 --- a/vita3k/modules/SceFiber/SceFiber.cpp +++ b/vita3k/modules/SceFiber/SceFiber.cpp @@ -18,14 +18,16 @@ #include "SceFiber.h" #include "cpu/functions.h" -#include "psp2/fiber.h" #include #include -#include +typedef void (SceFiberEntry)(SceUInt32 argOnInitialize, SceUInt32 argOnRun); + +struct SceFiberOptParam { + char reserved[128]; +}; -namespace emu { typedef struct SceFiber { Ptr entry; SceUInt32 argOnInitialize; @@ -34,7 +36,6 @@ typedef struct SceFiber { char name[32]; CPUContext cpu; } SceFiber; -} // namespace emu EXPORT(int, _sceFiberAttachContextAndRun) { return UNIMPLEMENTED(); @@ -44,7 +45,7 @@ EXPORT(int, _sceFiberAttachContextAndSwitch) { return UNIMPLEMENTED(); } -EXPORT(SceInt32, _sceFiberInitializeImpl, emu::SceFiber *fiber, char *name, Ptr entry, SceUInt32 argOnInitialize, Ptr addrContext, SceSize sizeContext, SceFiberOptParam *params) { +EXPORT(SceInt32, _sceFiberInitializeImpl, SceFiber *fiber, char *name, Ptr entry, SceUInt32 argOnInitialize, Ptr addrContext, SceSize sizeContext, SceFiberOptParam *params) { const ThreadStatePtr thread = lock_and_find(thread_id, host.kernel.threads, host.kernel.mutex); if (!thread) { @@ -76,10 +77,10 @@ EXPORT(int, sceFiberGetInfo) { return UNIMPLEMENTED(); } -EXPORT(SceUInt32, sceFiberGetSelf, emu::SceFiber *fiber) { +EXPORT(SceUInt32, sceFiberGetSelf, SceFiber *fiber) { const ThreadStatePtr thread = lock_and_find(thread_id, host.kernel.threads, host.kernel.mutex); - *fiber = *thread->fiber.cast().get(host.mem); + *fiber = *thread->fiber.cast().get(host.mem); return 0; } @@ -103,7 +104,7 @@ EXPORT(int, sceFiberRenameSelf) { EXPORT(SceInt32, sceFiberReturnToThread, SceUInt32 argOnReturn, Ptr argOnRun) { const ThreadStatePtr thread = lock_and_find(thread_id, host.kernel.threads, host.kernel.mutex); - save_context(*(thread->cpu), (thread->fiber.cast().get(host.mem)->cpu)); + save_context(*(thread->cpu), (thread->fiber.cast().get(host.mem)->cpu)); load_context(*(thread->cpu), *(thread->cpu_context)); @@ -115,14 +116,14 @@ EXPORT(SceInt32, sceFiberReturnToThread, SceUInt32 argOnReturn, Ptr a return SCE_KERNEL_OK; } -EXPORT(SceUInt32, sceFiberRun, Ptr fiber_ptr, SceUInt32 argOnRunTo, Ptr argOnRun) { +EXPORT(SceUInt32, sceFiberRun, Ptr fiber_ptr, SceUInt32 argOnRunTo, Ptr argOnRun) { const ThreadStatePtr thread = lock_and_find(thread_id, host.kernel.threads, host.kernel.mutex); save_context(*(thread->cpu), *(thread->cpu_context)); bool suspended = false; - emu::SceFiber *fiber = fiber_ptr.get(host.mem); + SceFiber *fiber = fiber_ptr.get(host.mem); if (fiber->entry.address() == fiber->cpu.pc) { fiber->cpu.cpu_registers[1] = argOnRunTo; @@ -149,14 +150,14 @@ EXPORT(int, sceFiberStopContextSizeCheck) { return UNIMPLEMENTED(); } -EXPORT(SceUInt32, sceFiberSwitch, Ptr fiber_ptr, SceUInt32 argOnRunTo, Ptr argOnRun) { +EXPORT(SceUInt32, sceFiberSwitch, Ptr fiber_ptr, SceUInt32 argOnRunTo, Ptr argOnRun) { const ThreadStatePtr thread = lock_and_find(thread_id, host.kernel.threads, host.kernel.mutex); - save_context(*(thread->cpu), (thread->fiber.cast().get(host.mem)->cpu)); + save_context(*(thread->cpu), (thread->fiber.cast().get(host.mem)->cpu)); bool suspended = false; - emu::SceFiber *fiber = fiber_ptr.get(host.mem); + SceFiber *fiber = fiber_ptr.get(host.mem); if (fiber->entry.address() == fiber->cpu.pc) { fiber->cpu.cpu_registers[1] = argOnRunTo; diff --git a/vita3k/modules/SceGxm/SceGxm.cpp b/vita3k/modules/SceGxm/SceGxm.cpp index 4debc3825..e95cb9725 100644 --- a/vita3k/modules/SceGxm/SceGxm.cpp +++ b/vita3k/modules/SceGxm/SceGxm.cpp @@ -29,8 +29,6 @@ #include #include -#include - struct SceGxmContext { GxmContextState state; GXMRecordState record; @@ -45,7 +43,7 @@ struct SceGxmRenderTarget { struct FragmentProgramCacheKey { SceGxmRegisteredProgram fragment_program; - emu::SceGxmBlendInfo blend_info; + SceGxmBlendInfo blend_info; }; typedef std::map> FragmentProgramCache; @@ -75,7 +73,7 @@ static bool operator<(const SceGxmRegisteredProgram &a, const SceGxmRegisteredPr return a.program < b.program; } -static bool operator<(const emu::SceGxmBlendInfo &a, const emu::SceGxmBlendInfo &b) { +static bool operator<(const SceGxmBlendInfo &a, const SceGxmBlendInfo &b) { return memcmp(&a, &b, sizeof(a)) < 0; } @@ -97,7 +95,7 @@ EXPORT(int, sceGxmBeginCommandList) { return UNIMPLEMENTED(); } -EXPORT(int, sceGxmBeginScene, SceGxmContext *context, unsigned int flags, const SceGxmRenderTarget *renderTarget, const SceGxmValidRegion *validRegion, SceGxmSyncObject *vertexSyncObject, Ptr fragmentSyncObject, const emu::SceGxmColorSurface *colorSurface, const emu::SceGxmDepthStencilSurface *depthStencil) { +EXPORT(int, sceGxmBeginScene, SceGxmContext *context, unsigned int flags, const SceGxmRenderTarget *renderTarget, const SceGxmValidRegion *validRegion, SceGxmSyncObject *vertexSyncObject, Ptr fragmentSyncObject, const SceGxmColorSurface *colorSurface, const SceGxmDepthStencilSurface *depthStencil) { assert(context != nullptr); assert(flags == 0); assert(renderTarget != nullptr); @@ -129,16 +127,16 @@ EXPORT(int, sceGxmBeginScene, SceGxmContext *context, unsigned int flags, const // Reset command list and finish status renderer::reset_command_list(context->renderer->command_list); - emu::SceGxmColorSurface *color_surface_copy = nullptr; - emu::SceGxmDepthStencilSurface *depth_stencil_surface_copy = nullptr; + SceGxmColorSurface *color_surface_copy = nullptr; + SceGxmDepthStencilSurface *depth_stencil_surface_copy = nullptr; if (colorSurface) { - color_surface_copy = new emu::SceGxmColorSurface; + color_surface_copy = new SceGxmColorSurface; *color_surface_copy = *colorSurface; } if (depthStencil) { - depth_stencil_surface_copy = new emu::SceGxmDepthStencilSurface; + depth_stencil_surface_copy = new SceGxmDepthStencilSurface; *depth_stencil_surface_copy = *depthStencil; } @@ -169,40 +167,40 @@ EXPORT(int, sceGxmColorSurfaceGetClip) { return UNIMPLEMENTED(); } -EXPORT(Ptr, sceGxmColorSurfaceGetData, emu::SceGxmColorSurface *surface) { +EXPORT(Ptr, sceGxmColorSurfaceGetData, SceGxmColorSurface *surface) { return Ptr(surface->pbeEmitWords[3]); } -EXPORT(SceGxmColorSurfaceDitherMode, sceGxmColorSurfaceGetDitherMode, emu::SceGxmColorSurface *surface) { +EXPORT(SceGxmColorSurfaceDitherMode, sceGxmColorSurfaceGetDitherMode, SceGxmColorSurface *surface) { STUBBED("SCE_GXM_COLOR_SURFACE_DITHER_DISABLED"); return SceGxmColorSurfaceDitherMode::SCE_GXM_COLOR_SURFACE_DITHER_DISABLED; } -EXPORT(SceGxmColorFormat, sceGxmColorSurfaceGetFormat, emu::SceGxmColorSurface *surface) { +EXPORT(SceGxmColorFormat, sceGxmColorSurfaceGetFormat, SceGxmColorSurface *surface) { STUBBED("SCE_GXM_COLOR_FORMAT_U8U8U8U8_ABGR"); return SceGxmColorFormat::SCE_GXM_COLOR_FORMAT_U8U8U8U8_ABGR; } -EXPORT(SceGxmColorSurfaceGammaMode, sceGxmColorSurfaceGetGammaMode, emu::SceGxmColorSurface *surface) { +EXPORT(SceGxmColorSurfaceGammaMode, sceGxmColorSurfaceGetGammaMode, SceGxmColorSurface *surface) { STUBBED("SCE_GXM_COLOR_SURFACE_GAMMA_NONE"); return SceGxmColorSurfaceGammaMode::SCE_GXM_COLOR_SURFACE_GAMMA_NONE; } -EXPORT(SceGxmColorSurfaceScaleMode, sceGxmColorSurfaceGetScaleMode, emu::SceGxmColorSurface *surface) { +EXPORT(SceGxmColorSurfaceScaleMode, sceGxmColorSurfaceGetScaleMode, SceGxmColorSurface *surface) { STUBBED("SCE_GXM_COLOR_SURFACE_SCALE_NONE"); return SceGxmColorSurfaceScaleMode::SCE_GXM_COLOR_SURFACE_SCALE_NONE; } -EXPORT(int, sceGxmColorSurfaceGetStrideInPixels, emu::SceGxmColorSurface *surface) { +EXPORT(int, sceGxmColorSurfaceGetStrideInPixels, SceGxmColorSurface *surface) { return surface->pbeEmitWords[2]; } -EXPORT(SceGxmColorSurfaceType, sceGxmColorSurfaceGetType, emu::SceGxmColorSurface *surface) { +EXPORT(SceGxmColorSurfaceType, sceGxmColorSurfaceGetType, SceGxmColorSurface *surface) { STUBBED("SCE_GXM_COLOR_SURFACE_LINEAR"); return SceGxmColorSurfaceType::SCE_GXM_COLOR_SURFACE_LINEAR; } -EXPORT(int, sceGxmColorSurfaceInit, emu::SceGxmColorSurface *surface, SceGxmColorFormat colorFormat, SceGxmColorSurfaceType surfaceType, SceGxmColorSurfaceScaleMode scaleMode, SceGxmOutputRegisterSize outputRegisterSize, unsigned int width, unsigned int height, unsigned int strideInPixels, Ptr data) { +EXPORT(int, sceGxmColorSurfaceInit, SceGxmColorSurface *surface, SceGxmColorFormat colorFormat, SceGxmColorSurfaceType surfaceType, SceGxmColorSurfaceScaleMode scaleMode, SceGxmOutputRegisterSize outputRegisterSize, unsigned int width, unsigned int height, unsigned int strideInPixels, Ptr data) { assert(surface != nullptr); assert(colorFormat == SCE_GXM_COLOR_FORMAT_A8B8G8R8); assert(surfaceType == SCE_GXM_COLOR_SURFACE_LINEAR); @@ -255,7 +253,7 @@ EXPORT(int, sceGxmColorSurfaceSetScaleMode) { return UNIMPLEMENTED(); } -EXPORT(int, sceGxmCreateContext, const emu::SceGxmContextParams *params, Ptr *context) { +EXPORT(int, sceGxmCreateContext, const SceGxmContextParams *params, Ptr *context) { assert(params != nullptr); assert(context != nullptr); @@ -329,7 +327,7 @@ EXPORT(int, sceGxmDepthStencilSurfaceGetStrideInSamples) { return UNIMPLEMENTED(); } -EXPORT(int, sceGxmDepthStencilSurfaceInit, emu::SceGxmDepthStencilSurface *surface, SceGxmDepthStencilFormat depthStencilFormat, SceGxmDepthStencilSurfaceType surfaceType, unsigned int strideInSamples, Ptr depthData, Ptr stencilData) { +EXPORT(int, sceGxmDepthStencilSurfaceInit, SceGxmDepthStencilSurface *surface, SceGxmDepthStencilFormat depthStencilFormat, SceGxmDepthStencilSurfaceType surfaceType, unsigned int strideInSamples, Ptr depthData, Ptr stencilData) { assert(surface != nullptr); assert(surfaceType == SCE_GXM_DEPTH_STENCIL_SURFACE_TILED); assert(strideInSamples > 0); @@ -363,12 +361,12 @@ EXPORT(int, sceGxmDepthStencilSurfaceSetBackgroundStencil) { return UNIMPLEMENTED(); } -EXPORT(void, sceGxmDepthStencilSurfaceSetForceLoadMode, emu::SceGxmDepthStencilSurface *surface, +EXPORT(void, sceGxmDepthStencilSurfaceSetForceLoadMode, SceGxmDepthStencilSurface *surface, SceGxmDepthStencilForceLoadMode forceLoad) { surface->zlsControl = (forceLoad & 2) | (surface->zlsControl & 0xFFFFFFFD); } -EXPORT(void, sceGxmDepthStencilSurfaceSetForceStoreMode, emu::SceGxmDepthStencilSurface *surface, +EXPORT(void, sceGxmDepthStencilSurfaceSetForceStoreMode, SceGxmDepthStencilSurface *surface, SceGxmDepthStencilForceStoreMode forceStore) { surface->zlsControl = (forceStore & 4) | (surface->zlsControl & 0xFFFFFFFB); } @@ -499,7 +497,7 @@ EXPORT(int, sceGxmDraw, SceGxmContext *context, SceGxmPrimitiveType primType, Sc size_t max_data_length[SCE_GXM_MAX_VERTEX_STREAMS] = {}; std::uint32_t stream_used = 0; - for (const emu::SceGxmVertexAttribute &attribute : gxm_vertex_program.attributes) { + for (const SceGxmVertexAttribute &attribute : gxm_vertex_program.attributes) { const SceGxmAttributeFormat attribute_format = static_cast(attribute.format); const size_t attribute_size = gxm::attribute_format_size(attribute_format) * attribute.componentCount; const SceGxmVertexStream &stream = gxm_vertex_program.streams[attribute.streamIndex]; @@ -542,7 +540,7 @@ EXPORT(int, sceGxmEndCommandList) { return UNIMPLEMENTED(); } -EXPORT(int, sceGxmEndScene, SceGxmContext *context, const emu::SceGxmNotification *vertexNotification, const emu::SceGxmNotification *fragmentNotification) { +EXPORT(int, sceGxmEndScene, SceGxmContext *context, const SceGxmNotification *vertexNotification, const SceGxmNotification *fragmentNotification) { const MemState &mem = host.mem; assert(context != nullptr); //assert(vertexNotification == nullptr); @@ -696,7 +694,7 @@ static int SDLCALL thread_function(void *data) { return 0; } -EXPORT(int, sceGxmInitialize, const emu::SceGxmInitializeParams *params) { +EXPORT(int, sceGxmInitialize, const SceGxmInitializeParams *params) { assert(params != nullptr); host.gxm.params = *params; @@ -783,7 +781,7 @@ EXPORT(int, sceGxmNotificationWait) { return UNIMPLEMENTED(); } -EXPORT(int, sceGxmPadHeartbeat, const emu::SceGxmColorSurface *displaySurface, SceGxmSyncObject *displaySyncObject) { +EXPORT(int, sceGxmPadHeartbeat, const SceGxmColorSurface *displaySurface, SceGxmSyncObject *displaySyncObject) { assert(displaySurface != nullptr); assert(displaySyncObject != nullptr); @@ -1186,7 +1184,7 @@ EXPORT(void, sceGxmSetFragmentProgram, SceGxmContext *context, Ptrrenderer.get(), &context->state, fragmentProgram, true); } -EXPORT(int, sceGxmSetFragmentTexture, SceGxmContext *context, unsigned int textureIndex, const emu::SceGxmTexture *texture) { +EXPORT(int, sceGxmSetFragmentTexture, SceGxmContext *context, unsigned int textureIndex, const SceGxmTexture *texture) { assert(context != nullptr); assert(texture != nullptr); @@ -1434,7 +1432,7 @@ EXPORT(int, sceGxmShaderPatcherAddRefVertexProgram, SceGxmShaderPatcher *shaderP return 0; } -EXPORT(int, sceGxmShaderPatcherCreate, const emu::SceGxmShaderPatcherParams *params, Ptr *shaderPatcher) { +EXPORT(int, sceGxmShaderPatcherCreate, const SceGxmShaderPatcherParams *params, Ptr *shaderPatcher) { assert(params != nullptr); assert(shaderPatcher != nullptr); @@ -1447,14 +1445,14 @@ EXPORT(int, sceGxmShaderPatcherCreate, const emu::SceGxmShaderPatcherParams *par return 0; } -EXPORT(int, sceGxmShaderPatcherCreateFragmentProgram, SceGxmShaderPatcher *shaderPatcher, const SceGxmRegisteredProgram *programId, SceGxmOutputRegisterFormat outputFormat, SceGxmMultisampleMode multisampleMode, const emu::SceGxmBlendInfo *blendInfo, Ptr vertexProgram, Ptr *fragmentProgram) { +EXPORT(int, sceGxmShaderPatcherCreateFragmentProgram, SceGxmShaderPatcher *shaderPatcher, const SceGxmRegisteredProgram *programId, SceGxmOutputRegisterFormat outputFormat, SceGxmMultisampleMode multisampleMode, const SceGxmBlendInfo *blendInfo, Ptr vertexProgram, Ptr *fragmentProgram) { MemState &mem = host.mem; assert(shaderPatcher != nullptr); assert(programId != nullptr); assert(multisampleMode == SCE_GXM_MULTISAMPLE_NONE); assert(fragmentProgram != nullptr); - static const emu::SceGxmBlendInfo default_blend_info = { + static const SceGxmBlendInfo default_blend_info = { SCE_GXM_COLOR_MASK_ALL, SCE_GXM_BLEND_FUNC_NONE, SCE_GXM_BLEND_FUNC_NONE, @@ -1514,7 +1512,7 @@ EXPORT(int, sceGxmShaderPatcherCreateMaskUpdateFragmentProgram, SceGxmShaderPatc return STUBBED("Using a null shader"); } -EXPORT(int, sceGxmShaderPatcherCreateVertexProgram, SceGxmShaderPatcher *shaderPatcher, const SceGxmRegisteredProgram *programId, const emu::SceGxmVertexAttribute *attributes, unsigned int attributeCount, const SceGxmVertexStream *streams, unsigned int streamCount, Ptr *vertexProgram) { +EXPORT(int, sceGxmShaderPatcherCreateVertexProgram, SceGxmShaderPatcher *shaderPatcher, const SceGxmRegisteredProgram *programId, const SceGxmVertexAttribute *attributes, unsigned int attributeCount, const SceGxmVertexStream *streams, unsigned int streamCount, Ptr *vertexProgram) { MemState &mem = host.mem; assert(shaderPatcher != nullptr); assert(programId != nullptr); @@ -1572,7 +1570,7 @@ EXPORT(int, sceGxmShaderPatcherGetHostMemAllocated) { return UNIMPLEMENTED(); } -EXPORT(Ptr, sceGxmShaderPatcherGetProgramFromId, emu::SceGxmShaderPatcherId programId) { +EXPORT(Ptr, sceGxmShaderPatcherGetProgramFromId, SceGxmShaderPatcherId programId) { if (!programId) { return Ptr(); } @@ -1592,7 +1590,7 @@ EXPORT(int, sceGxmShaderPatcherGetVertexUsseMemAllocated) { return UNIMPLEMENTED(); } -EXPORT(int, sceGxmShaderPatcherRegisterProgram, SceGxmShaderPatcher *shaderPatcher, Ptr programHeader, emu::SceGxmShaderPatcherId *programId) { +EXPORT(int, sceGxmShaderPatcherRegisterProgram, SceGxmShaderPatcher *shaderPatcher, Ptr programHeader, SceGxmShaderPatcherId *programId) { assert(shaderPatcher != nullptr); assert(programHeader); assert(programId != nullptr); @@ -1649,7 +1647,7 @@ EXPORT(int, sceGxmShaderPatcherSetUserData) { return UNIMPLEMENTED(); } -EXPORT(int, sceGxmShaderPatcherUnregisterProgram, SceGxmShaderPatcher *shaderPatcher, emu::SceGxmShaderPatcherId programId) { +EXPORT(int, sceGxmShaderPatcherUnregisterProgram, SceGxmShaderPatcher *shaderPatcher, SceGxmShaderPatcherId programId) { assert(shaderPatcher != nullptr); assert(programId); @@ -1711,27 +1709,27 @@ EXPORT(int, sceGxmTerminate) { return 0; } -EXPORT(Ptr, sceGxmTextureGetData, const emu::SceGxmTexture *texture) { +EXPORT(Ptr, sceGxmTextureGetData, const SceGxmTexture *texture) { assert(texture != nullptr); return Ptr(texture->data_addr << 2); } -EXPORT(SceGxmTextureFormat, sceGxmTextureGetFormat, const emu::SceGxmTexture *texture) { +EXPORT(SceGxmTextureFormat, sceGxmTextureGetFormat, const SceGxmTexture *texture) { assert(texture != nullptr); return gxm::get_format(texture); } -EXPORT(int, sceGxmTextureGetGammaMode, const emu::SceGxmTexture *texture) { +EXPORT(int, sceGxmTextureGetGammaMode, const SceGxmTexture *texture) { assert(texture != nullptr); return (texture->gamma_mode << 27); } -EXPORT(unsigned int, sceGxmTextureGetHeight, const emu::SceGxmTexture *texture) { +EXPORT(unsigned int, sceGxmTextureGetHeight, const SceGxmTexture *texture) { assert(texture != nullptr); return static_cast(gxm::get_height(texture)); } -EXPORT(unsigned int, sceGxmTextureGetLodBias, const emu::SceGxmTexture *texture) { +EXPORT(unsigned int, sceGxmTextureGetLodBias, const SceGxmTexture *texture) { assert(texture != nullptr); if ((texture->type << 29) == SCE_GXM_TEXTURE_LINEAR_STRIDED) { return 0; @@ -1739,7 +1737,7 @@ EXPORT(unsigned int, sceGxmTextureGetLodBias, const emu::SceGxmTexture *texture) return texture->lod_bias; } -EXPORT(unsigned int, sceGxmTextureGetLodMin, const emu::SceGxmTexture *texture) { +EXPORT(unsigned int, sceGxmTextureGetLodMin, const SceGxmTexture *texture) { assert(texture != nullptr); if ((texture->type << 29) == SCE_GXM_TEXTURE_LINEAR_STRIDED) { return 0; @@ -1747,12 +1745,12 @@ EXPORT(unsigned int, sceGxmTextureGetLodMin, const emu::SceGxmTexture *texture) return (texture->lod_min0 << 2) | texture->lod_min1; } -EXPORT(int, sceGxmTextureGetMagFilter, const emu::SceGxmTexture *texture) { +EXPORT(int, sceGxmTextureGetMagFilter, const SceGxmTexture *texture) { assert(texture != nullptr); return texture->mag_filter; } -EXPORT(int, sceGxmTextureGetMinFilter, const emu::SceGxmTexture *texture) { +EXPORT(int, sceGxmTextureGetMinFilter, const SceGxmTexture *texture) { assert(texture != nullptr); if ((texture->type << 29) == SCE_GXM_TEXTURE_LINEAR_STRIDED) { return texture->mag_filter; @@ -1760,7 +1758,7 @@ EXPORT(int, sceGxmTextureGetMinFilter, const emu::SceGxmTexture *texture) { return texture->min_filter; } -EXPORT(SceGxmTextureMipFilter, sceGxmTextureGetMipFilter, const emu::SceGxmTexture *texture) { +EXPORT(SceGxmTextureMipFilter, sceGxmTextureGetMipFilter, const SceGxmTexture *texture) { assert(texture != nullptr); if ((texture->type << 29) == SCE_GXM_TEXTURE_LINEAR_STRIDED) { return SCE_GXM_TEXTURE_MIP_FILTER_DISABLED; @@ -1768,7 +1766,7 @@ EXPORT(SceGxmTextureMipFilter, sceGxmTextureGetMipFilter, const emu::SceGxmTextu return texture->mip_filter ? SCE_GXM_TEXTURE_MIP_FILTER_ENABLED : SCE_GXM_TEXTURE_MIP_FILTER_DISABLED; } -EXPORT(unsigned int, sceGxmTextureGetMipmapCount, const emu::SceGxmTexture *texture) { +EXPORT(unsigned int, sceGxmTextureGetMipmapCount, const SceGxmTexture *texture) { assert(texture != nullptr); if ((texture->type << 29) == SCE_GXM_TEXTURE_LINEAR_STRIDED) { return 0; @@ -1776,38 +1774,38 @@ EXPORT(unsigned int, sceGxmTextureGetMipmapCount, const emu::SceGxmTexture *text return texture->mip_count + 1; } -EXPORT(unsigned int, sceGxmTextureGetMipmapCountUnsafe, const emu::SceGxmTexture *texture) { +EXPORT(unsigned int, sceGxmTextureGetMipmapCountUnsafe, const SceGxmTexture *texture) { assert(texture != nullptr); return texture->mip_count + 1; } -EXPORT(int, sceGxmTextureGetNormalizeMode, const emu::SceGxmTexture *texture) { +EXPORT(int, sceGxmTextureGetNormalizeMode, const SceGxmTexture *texture) { assert(texture != nullptr); return texture->normalize_mode << 31; } -EXPORT(Ptr, sceGxmTextureGetPalette, const emu::SceGxmTexture *texture) { +EXPORT(Ptr, sceGxmTextureGetPalette, const SceGxmTexture *texture) { assert(texture != nullptr); assert(gxm::is_paletted_format(gxm::get_format(texture))); return Ptr(texture->palette_addr << 6); } -EXPORT(int, sceGxmTextureGetStride, const emu::SceGxmTexture *texture) { +EXPORT(int, sceGxmTextureGetStride, const SceGxmTexture *texture) { assert(texture != nullptr); return UNIMPLEMENTED(); } -EXPORT(int, sceGxmTextureGetType, const emu::SceGxmTexture *texture) { +EXPORT(int, sceGxmTextureGetType, const SceGxmTexture *texture) { assert(texture != nullptr); return (texture->type << 29); } -EXPORT(int, sceGxmTextureGetUAddrMode, const emu::SceGxmTexture *texture) { +EXPORT(int, sceGxmTextureGetUAddrMode, const SceGxmTexture *texture) { assert(texture != nullptr); return texture->uaddr_mode; } -EXPORT(int, sceGxmTextureGetUAddrModeSafe, const emu::SceGxmTexture *texture) { +EXPORT(int, sceGxmTextureGetUAddrModeSafe, const SceGxmTexture *texture) { assert(texture != nullptr); if ((texture->type << 29) == SCE_GXM_TEXTURE_LINEAR_STRIDED) { return SCE_GXM_TEXTURE_ADDR_CLAMP; @@ -1815,12 +1813,12 @@ EXPORT(int, sceGxmTextureGetUAddrModeSafe, const emu::SceGxmTexture *texture) { return texture->uaddr_mode; } -EXPORT(int, sceGxmTextureGetVAddrMode, const emu::SceGxmTexture *texture) { +EXPORT(int, sceGxmTextureGetVAddrMode, const SceGxmTexture *texture) { assert(texture != nullptr); return texture->vaddr_mode; } -EXPORT(int, sceGxmTextureGetVAddrModeSafe, const emu::SceGxmTexture *texture) { +EXPORT(int, sceGxmTextureGetVAddrModeSafe, const SceGxmTexture *texture) { assert(texture != nullptr); if ((texture->type << 29) == SCE_GXM_TEXTURE_LINEAR_STRIDED) { return SCE_GXM_TEXTURE_ADDR_CLAMP; @@ -1828,7 +1826,7 @@ EXPORT(int, sceGxmTextureGetVAddrModeSafe, const emu::SceGxmTexture *texture) { return texture->vaddr_mode; } -EXPORT(unsigned int, sceGxmTextureGetWidth, const emu::SceGxmTexture *texture) { +EXPORT(unsigned int, sceGxmTextureGetWidth, const SceGxmTexture *texture) { assert(texture != nullptr); return static_cast(gxm::get_width(texture)); } @@ -1841,7 +1839,7 @@ EXPORT(int, sceGxmTextureInitCubeArbitrary) { return UNIMPLEMENTED(); } -static int init_texture_base(const char *export_name, emu::SceGxmTexture *texture, Ptr data, SceGxmTextureFormat tex_format, unsigned int width, unsigned int height, unsigned int mipCount, +static int init_texture_base(const char *export_name, SceGxmTexture *texture, Ptr data, SceGxmTextureFormat tex_format, unsigned int width, unsigned int height, unsigned int mipCount, const SceGxmTextureType &texture_type) { if (width > 4096 || height > 4096 || mipCount > 13) { return RET_ERROR(SCE_GXM_ERROR_INVALID_VALUE); @@ -1922,7 +1920,7 @@ static int init_texture_base(const char *export_name, emu::SceGxmTexture *textur return 0; } -EXPORT(int, sceGxmTextureInitLinear, emu::SceGxmTexture *texture, Ptr data, SceGxmTextureFormat texFormat, unsigned int width, unsigned int height, unsigned int mipCount) { +EXPORT(int, sceGxmTextureInitLinear, SceGxmTexture *texture, Ptr data, SceGxmTextureFormat texFormat, unsigned int width, unsigned int height, unsigned int mipCount) { const int result = init_texture_base(export_name, texture, data, texFormat, width, height, mipCount, SCE_GXM_TEXTURE_LINEAR); return result; @@ -1932,7 +1930,7 @@ EXPORT(int, sceGxmTextureInitLinearStrided) { return UNIMPLEMENTED(); } -EXPORT(int, sceGxmTextureInitSwizzled, emu::SceGxmTexture *texture, Ptr data, SceGxmTextureFormat texFormat, unsigned int width, unsigned int height, unsigned int mipCount) { +EXPORT(int, sceGxmTextureInitSwizzled, SceGxmTexture *texture, Ptr data, SceGxmTextureFormat texFormat, unsigned int width, unsigned int height, unsigned int mipCount) { const int result = init_texture_base(export_name, texture, data, texFormat, width, height, mipCount, SCE_GXM_TEXTURE_SWIZZLED); return result; @@ -1942,13 +1940,13 @@ EXPORT(int, sceGxmTextureInitSwizzledArbitrary) { return UNIMPLEMENTED(); } -EXPORT(int, sceGxmTextureInitTiled, emu::SceGxmTexture *texture, Ptr data, SceGxmTextureFormat texFormat, unsigned int width, unsigned int height, unsigned int mipCount) { +EXPORT(int, sceGxmTextureInitTiled, SceGxmTexture *texture, Ptr data, SceGxmTextureFormat texFormat, unsigned int width, unsigned int height, unsigned int mipCount) { const int result = init_texture_base(export_name, texture, data, texFormat, width, height, mipCount, SCE_GXM_TEXTURE_TILED); return result; } -EXPORT(int, sceGxmTextureSetData, emu::SceGxmTexture *texture, Ptr data) { +EXPORT(int, sceGxmTextureSetData, SceGxmTexture *texture, Ptr data) { if (texture == nullptr) { return RET_ERROR(SCE_GXM_ERROR_INVALID_POINTER); } @@ -1957,7 +1955,7 @@ EXPORT(int, sceGxmTextureSetData, emu::SceGxmTexture *texture, Ptr d return 0; } -EXPORT(int, sceGxmTextureSetFormat, emu::SceGxmTexture *texture, SceGxmTextureFormat texFormat) { +EXPORT(int, sceGxmTextureSetFormat, SceGxmTexture *texture, SceGxmTextureFormat texFormat) { STUBBED("FAST"); if (texture == nullptr) { return RET_ERROR(SCE_GXM_ERROR_INVALID_POINTER); @@ -1967,7 +1965,7 @@ EXPORT(int, sceGxmTextureSetFormat, emu::SceGxmTexture *texture, SceGxmTextureFo return SCE_KERNEL_OK; } -EXPORT(int, sceGxmTextureSetGammaMode, emu::SceGxmTexture *texture, SceGxmTextureGammaMode gammaMode) { +EXPORT(int, sceGxmTextureSetGammaMode, SceGxmTexture *texture, SceGxmTextureGammaMode gammaMode) { if (texture == nullptr) { return RET_ERROR(SCE_GXM_ERROR_INVALID_POINTER); } @@ -1975,7 +1973,7 @@ EXPORT(int, sceGxmTextureSetGammaMode, emu::SceGxmTexture *texture, SceGxmTextur return 0; } -EXPORT(int, sceGxmTextureSetHeight, emu::SceGxmTexture *texture, unsigned int height) { +EXPORT(int, sceGxmTextureSetHeight, SceGxmTexture *texture, unsigned int height) { if (texture == nullptr) { return RET_ERROR(SCE_GXM_ERROR_INVALID_POINTER); } else if (height > 4096) { @@ -2003,7 +2001,7 @@ EXPORT(int, sceGxmTextureSetHeight, emu::SceGxmTexture *texture, unsigned int he return 0; } -EXPORT(int, sceGxmTextureSetLodBias, emu::SceGxmTexture *texture, unsigned int bias) { +EXPORT(int, sceGxmTextureSetLodBias, SceGxmTexture *texture, unsigned int bias) { if (texture == nullptr) { return RET_ERROR(SCE_GXM_ERROR_INVALID_POINTER); } @@ -2015,7 +2013,7 @@ EXPORT(int, sceGxmTextureSetLodBias, emu::SceGxmTexture *texture, unsigned int b return UNIMPLEMENTED(); } -EXPORT(int, sceGxmTextureSetLodMin, emu::SceGxmTexture *texture, unsigned int lodMin) { +EXPORT(int, sceGxmTextureSetLodMin, SceGxmTexture *texture, unsigned int lodMin) { if (texture == nullptr) { return RET_ERROR(SCE_GXM_ERROR_INVALID_POINTER); } @@ -2027,7 +2025,7 @@ EXPORT(int, sceGxmTextureSetLodMin, emu::SceGxmTexture *texture, unsigned int lo return UNIMPLEMENTED(); } -EXPORT(int, sceGxmTextureSetMagFilter, emu::SceGxmTexture *texture, SceGxmTextureFilter magFilter) { +EXPORT(int, sceGxmTextureSetMagFilter, SceGxmTexture *texture, SceGxmTextureFilter magFilter) { if (texture == nullptr) { return RET_ERROR(SCE_GXM_ERROR_INVALID_POINTER); } @@ -2036,7 +2034,7 @@ EXPORT(int, sceGxmTextureSetMagFilter, emu::SceGxmTexture *texture, SceGxmTextur return 0; } -EXPORT(int, sceGxmTextureSetMinFilter, emu::SceGxmTexture *texture, SceGxmTextureFilter minFilter) { +EXPORT(int, sceGxmTextureSetMinFilter, SceGxmTexture *texture, SceGxmTextureFilter minFilter) { if (texture == nullptr) { return RET_ERROR(SCE_GXM_ERROR_INVALID_POINTER); } @@ -2049,7 +2047,7 @@ EXPORT(int, sceGxmTextureSetMinFilter, emu::SceGxmTexture *texture, SceGxmTextur return 0; } -EXPORT(int, sceGxmTextureSetMipFilter, emu::SceGxmTexture *texture, SceGxmTextureMipFilter mipFilter) { +EXPORT(int, sceGxmTextureSetMipFilter, SceGxmTexture *texture, SceGxmTextureMipFilter mipFilter) { if (texture == nullptr) { return RET_ERROR(SCE_GXM_ERROR_INVALID_POINTER); } @@ -2062,7 +2060,7 @@ EXPORT(int, sceGxmTextureSetMipFilter, emu::SceGxmTexture *texture, SceGxmTextur return 0; } -EXPORT(int, sceGxmTextureSetMipmapCount, emu::SceGxmTexture *texture, uint32_t mipCount) { +EXPORT(int, sceGxmTextureSetMipmapCount, SceGxmTexture *texture, uint32_t mipCount) { if (texture == nullptr) { return RET_ERROR(SCE_GXM_ERROR_INVALID_POINTER); } @@ -2078,7 +2076,7 @@ EXPORT(int, sceGxmTextureSetMipmapCount, emu::SceGxmTexture *texture, uint32_t m /** * TODO: uncomment code once https://github.com/vitasdk/vita-headers/commit/2995273a998f355a498cc4e9c563974fe5938ac6 is available */ -EXPORT(int, sceGxmTextureSetNormalizeMode, emu::SceGxmTexture *texture /*, SceGxmTextureNormalizeMode normalizeMode*/) { +EXPORT(int, sceGxmTextureSetNormalizeMode, SceGxmTexture *texture /*, SceGxmTextureNormalizeMode normalizeMode*/) { if (texture == nullptr) { return RET_ERROR(SCE_GXM_ERROR_INVALID_POINTER); } @@ -2087,7 +2085,7 @@ EXPORT(int, sceGxmTextureSetNormalizeMode, emu::SceGxmTexture *texture /*, SceGx return 0; } -EXPORT(int, sceGxmTextureSetPalette, emu::SceGxmTexture *texture, Ptr paletteData) { +EXPORT(int, sceGxmTextureSetPalette, SceGxmTexture *texture, Ptr paletteData) { if (texture == nullptr) { return RET_ERROR(SCE_GXM_ERROR_INVALID_POINTER); } else if ((uint8_t)paletteData.address() & 0x3F) { @@ -2098,7 +2096,7 @@ EXPORT(int, sceGxmTextureSetPalette, emu::SceGxmTexture *texture, Ptr pale return 0; } -EXPORT(int, sceGxmTextureSetStride, emu::SceGxmTexture *texture, uint32_t byteStride) { +EXPORT(int, sceGxmTextureSetStride, SceGxmTexture *texture, uint32_t byteStride) { if (texture == nullptr) { return RET_ERROR(SCE_GXM_ERROR_INVALID_POINTER); } @@ -2110,7 +2108,7 @@ EXPORT(int, sceGxmTextureSetStride, emu::SceGxmTexture *texture, uint32_t byteSt return UNIMPLEMENTED(); } -EXPORT(int, sceGxmTextureSetUAddrMode, emu::SceGxmTexture *texture, SceGxmTextureAddrMode mode) { +EXPORT(int, sceGxmTextureSetUAddrMode, SceGxmTexture *texture, SceGxmTextureAddrMode mode) { if (texture == nullptr) { return RET_ERROR(SCE_GXM_ERROR_INVALID_POINTER); } @@ -2132,7 +2130,7 @@ EXPORT(int, sceGxmTextureSetUAddrMode, emu::SceGxmTexture *texture, SceGxmTextur return 0; } -EXPORT(int, sceGxmTextureSetUAddrModeSafe, emu::SceGxmTexture *texture, SceGxmTextureAddrMode mode) { +EXPORT(int, sceGxmTextureSetUAddrModeSafe, SceGxmTexture *texture, SceGxmTextureAddrMode mode) { if (texture == nullptr) { return RET_ERROR(SCE_GXM_ERROR_INVALID_POINTER); } @@ -2155,7 +2153,7 @@ EXPORT(int, sceGxmTextureSetUAddrModeSafe, emu::SceGxmTexture *texture, SceGxmTe return 0; } -EXPORT(int, sceGxmTextureSetVAddrMode, emu::SceGxmTexture *texture, SceGxmTextureAddrMode mode) { +EXPORT(int, sceGxmTextureSetVAddrMode, SceGxmTexture *texture, SceGxmTextureAddrMode mode) { if (texture == nullptr) { return RET_ERROR(SCE_GXM_ERROR_INVALID_POINTER); } @@ -2177,7 +2175,7 @@ EXPORT(int, sceGxmTextureSetVAddrMode, emu::SceGxmTexture *texture, SceGxmTextur return 0; } -EXPORT(int, sceGxmTextureSetVAddrModeSafe, emu::SceGxmTexture *texture, SceGxmTextureAddrMode mode) { +EXPORT(int, sceGxmTextureSetVAddrModeSafe, SceGxmTexture *texture, SceGxmTextureAddrMode mode) { if (texture == nullptr) { return RET_ERROR(SCE_GXM_ERROR_INVALID_POINTER); } @@ -2200,7 +2198,7 @@ EXPORT(int, sceGxmTextureSetVAddrModeSafe, emu::SceGxmTexture *texture, SceGxmTe return 0; } -EXPORT(int, sceGxmTextureSetWidth, emu::SceGxmTexture *texture, unsigned int width) { +EXPORT(int, sceGxmTextureSetWidth, SceGxmTexture *texture, unsigned int width) { if (texture == nullptr) { return RET_ERROR(SCE_GXM_ERROR_INVALID_POINTER); } else if (width > 4096) { @@ -2227,7 +2225,7 @@ EXPORT(int, sceGxmTextureSetWidth, emu::SceGxmTexture *texture, unsigned int wid return 0; } -EXPORT(int, sceGxmTextureValidate, const emu::SceGxmTexture *texture) { +EXPORT(int, sceGxmTextureValidate, const SceGxmTexture *texture) { if (texture == nullptr) { return RET_ERROR(SCE_GXM_ERROR_INVALID_POINTER); } diff --git a/vita3k/modules/SceJpeg/SceJpegUser.cpp b/vita3k/modules/SceJpeg/SceJpegUser.cpp index 33e2937db..ce245e5c0 100644 --- a/vita3k/modules/SceJpeg/SceJpegUser.cpp +++ b/vita3k/modules/SceJpeg/SceJpegUser.cpp @@ -24,7 +24,6 @@ extern "C" { #include -namespace emu { struct SceJpegMJpegInitInfo { uint32_t size; int32_t decoder_count; @@ -45,7 +44,6 @@ struct SceJpegOutputInfo { uint32_t unknown2; SceJpegPitch pitch[4]; }; -} // namespace emu void init(MJpegState &state) { AVCodec *codec = avcodec_find_decoder(AV_CODEC_ID_MJPEG); @@ -134,7 +132,7 @@ EXPORT(int, sceJpegFinishMJpeg) { } EXPORT(int, sceJpegGetOutputInfo, const uint8_t *jpeg_data, uint32_t jpeg_size, - int32_t format, int32_t mode, emu::SceJpegOutputInfo *output) { + int32_t format, int32_t mode, SceJpegOutputInfo *output) { MJpegState &state = host.kernel.mjpeg_state; AVFrame *frame = decode(state, jpeg_data, jpeg_size); @@ -156,7 +154,7 @@ EXPORT(int, sceJpegInitMJpeg, int32_t decoder_count) { return 0; } -EXPORT(int, sceJpegInitMJpegWithParam, const emu::SceJpegMJpegInitInfo *info) { +EXPORT(int, sceJpegInitMJpegWithParam, const SceJpegMJpegInitInfo *info) { init(host.kernel.mjpeg_state); return 0; diff --git a/vita3k/modules/SceKernelModulemgr/SceModulemgr.cpp b/vita3k/modules/SceKernelModulemgr/SceModulemgr.cpp index c12ef49d2..cd854742a 100644 --- a/vita3k/modules/SceKernelModulemgr/SceModulemgr.cpp +++ b/vita3k/modules/SceKernelModulemgr/SceModulemgr.cpp @@ -16,10 +16,7 @@ // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. #include "SceModulemgr.h" -#include "kernel/state.h" - -#include -#include +#include EXPORT(int, _sceKernelCloseModule) { return UNIMPLEMENTED(); diff --git a/vita3k/modules/SceKernelThreadMgr/SceThreadmgr.cpp b/vita3k/modules/SceKernelThreadMgr/SceThreadmgr.cpp index 7b96ace92..d6f413477 100644 --- a/vita3k/modules/SceKernelThreadMgr/SceThreadmgr.cpp +++ b/vita3k/modules/SceKernelThreadMgr/SceThreadmgr.cpp @@ -23,7 +23,6 @@ #include #include -#include #include #include diff --git a/vita3k/modules/SceLibKernel/SceLibKernel.cpp b/vita3k/modules/SceLibKernel/SceLibKernel.cpp index b471cac61..5faafb7bd 100644 --- a/vita3k/modules/SceLibKernel/SceLibKernel.cpp +++ b/vita3k/modules/SceLibKernel/SceLibKernel.cpp @@ -33,10 +33,6 @@ #include #include -#include -#include -#include - #include #include @@ -77,7 +73,7 @@ EXPORT(int, __stack_chk_guard) { return UNIMPLEMENTED(); } -EXPORT(int, _sceKernelCreateLwMutex, Ptr workarea, const char *name, unsigned int attr, int init_count, const SceKernelLwMutexOptParam *opt_param) { +EXPORT(int, _sceKernelCreateLwMutex, Ptr workarea, const char *name, unsigned int attr, int init_count, const SceKernelLwMutexOptParam *opt_param) { assert(name != nullptr); assert(init_count >= 0); @@ -371,7 +367,7 @@ EXPORT(int, sceIoDopen, const char *dir) { return open_dir(host.io, dir, host.pref_path, export_name); } -EXPORT(int, sceIoDread, const SceUID fd, emu::SceIoDirent *dir) { +EXPORT(int, sceIoDread, const SceUID fd, SceIoDirent *dir) { if (dir == nullptr) { return RET_ERROR(SCE_KERNEL_ERROR_ILLEGAL_ADDR); } @@ -863,14 +859,14 @@ EXPORT(int, sceKernelCreateEventFlag, const char *name, unsigned int attr, unsig return eventflag_create(host.kernel, export_name, name, thread_id, attr, flags); } -EXPORT(int, sceKernelCreateLwCond, Ptr workarea, const char *name, SceUInt attr, Ptr workarea_mutex, const SceKernelLwCondOptParam *opt_param) { +EXPORT(int, sceKernelCreateLwCond, Ptr workarea, const char *name, SceUInt attr, Ptr workarea_mutex, const SceKernelLwCondOptParam *opt_param) { const auto uid_out = &workarea.get(host.mem)->uid; const auto assoc_mutex_uid = workarea_mutex.get(host.mem)->uid; return condvar_create(uid_out, host.kernel, export_name, name, thread_id, attr, assoc_mutex_uid, SyncWeight::Light); } -EXPORT(int, sceKernelCreateLwMutex, Ptr workarea, const char *name, SceUInt attr, int init_count, const SceKernelLwMutexOptParam *opt_param) { +EXPORT(int, sceKernelCreateLwMutex, Ptr workarea, const char *name, SceUInt attr, int init_count, const SceKernelLwMutexOptParam *opt_param) { assert(workarea); assert(name); assert(init_count >= 0); @@ -912,7 +908,7 @@ EXPORT(int, sceKernelCreateSimpleEvent) { return UNIMPLEMENTED(); } -EXPORT(SceUID, sceKernelCreateThread, const char *name, emu::SceKernelThreadEntry entry, int init_priority, int stack_size, SceUInt attr, int cpu_affinity_mask, const SceKernelThreadOptParam *option) { +EXPORT(SceUID, sceKernelCreateThread, const char *name, SceKernelThreadEntry entry, int init_priority, int stack_size, SceUInt attr, int cpu_affinity_mask, const SceKernelThreadOptParam *option) { if (cpu_affinity_mask > 0x70000) { return RET_ERROR(SCE_KERNEL_ERROR_INVALID_CPU_AFFINITY); } @@ -957,13 +953,13 @@ EXPORT(SceUID, sceKernelCreateTimer, const char *name, uint32_t flags, const voi return handle; } -EXPORT(int, sceKernelDeleteLwCond, Ptr workarea) { +EXPORT(int, sceKernelDeleteLwCond, Ptr workarea) { SceUID lightweight_condition_id = workarea.get(host.mem)->uid; return condvar_delete(host.kernel, export_name, thread_id, lightweight_condition_id, SyncWeight::Light); } -EXPORT(int, sceKernelDeleteLwMutex, Ptr workarea) { +EXPORT(int, sceKernelDeleteLwMutex, Ptr workarea) { const auto lightweight_mutex_id = workarea.get(host.mem)->uid; return mutex_delete(host.kernel, export_name, thread_id, lightweight_mutex_id, SyncWeight::Light); @@ -1016,7 +1012,7 @@ EXPORT(int, sceKernelGetLwMutexInfoById) { return UNIMPLEMENTED(); } -EXPORT(int, sceKernelGetModuleInfoByAddr, Ptr addr, emu::SceKernelModuleInfo *info) { +EXPORT(int, sceKernelGetModuleInfoByAddr, Ptr addr, SceKernelModuleInfo *info) { KernelState *const state = &host.kernel; for (const auto &module : state->loaded_modules) { @@ -1024,7 +1020,7 @@ EXPORT(int, sceKernelGetModuleInfoByAddr, Ptr addr, emu::SceKernelModuleIn const auto segment_address_begin = module.second->segments[n].vaddr.address(); const auto segment_address_end = segment_address_begin + module.second->segments[n].memsz; if (addr.address() > segment_address_begin && addr.address() < segment_address_end) { - memcpy(info, module.second.get(), sizeof(emu::SceKernelModuleInfo)); + memcpy(info, module.second.get(), sizeof(SceKernelModuleInfo)); return SCE_KERNEL_OK; } } @@ -1126,7 +1122,7 @@ EXPORT(int, sceKernelGetThreadInfo, SceUID thid, SceKernelThreadInfo *info) { info->stackSize = thread->stack_size; info->initPriority = thread->priority; info->currentPriority = thread->priority; - info->entry = reinterpret_cast(thread->entry_point); + info->entry = SceKernelThreadEntry(thread->entry_point); return SCE_KERNEL_OK; } @@ -1276,12 +1272,12 @@ EXPORT(int, sceKernelLoadStartModule, char *path, SceSize args, Ptr argp, return mod_id; } -EXPORT(int, sceKernelLockLwMutex, Ptr workarea, int lock_count, unsigned int *ptimeout) { +EXPORT(int, sceKernelLockLwMutex, Ptr workarea, int lock_count, unsigned int *ptimeout) { const auto lwmutexid = workarea.get(host.mem)->uid; return mutex_lock(host.kernel, export_name, thread_id, lwmutexid, lock_count, ptimeout, SyncWeight::Light); } -EXPORT(int, sceKernelLockLwMutexCB, Ptr workarea, int lock_count, unsigned int *ptimeout) { +EXPORT(int, sceKernelLockLwMutexCB, Ptr workarea, int lock_count, unsigned int *ptimeout) { STUBBED("no CB"); const auto lwmutexid = workarea.get(host.mem)->uid; return mutex_lock(host.kernel, export_name, thread_id, lwmutexid, lock_count, ptimeout, SyncWeight::Light); @@ -1399,19 +1395,19 @@ EXPORT(int, sceKernelSetTimerTime) { return UNIMPLEMENTED(); } -EXPORT(int, sceKernelSignalLwCond, Ptr workarea) { +EXPORT(int, sceKernelSignalLwCond, Ptr workarea) { SceUID condid = workarea.get(host.mem)->uid; return condvar_signal(host.kernel, export_name, thread_id, condid, Condvar::SignalTarget(Condvar::SignalTarget::Type::Any), SyncWeight::Light); } -EXPORT(int, sceKernelSignalLwCondAll, Ptr workarea) { +EXPORT(int, sceKernelSignalLwCondAll, Ptr workarea) { SceUID condid = workarea.get(host.mem)->uid; return condvar_signal(host.kernel, export_name, thread_id, condid, Condvar::SignalTarget(Condvar::SignalTarget::Type::All), SyncWeight::Light); } -EXPORT(int, sceKernelSignalLwCondTo, Ptr workarea, SceUID thread_target) { +EXPORT(int, sceKernelSignalLwCondTo, Ptr workarea, SceUID thread_target) { SceUID condid = workarea.get(host.mem)->uid; return condvar_signal(host.kernel, export_name, thread_id, condid, Condvar::SignalTarget(Condvar::SignalTarget::Type::Specific, thread_target), SyncWeight::Light); @@ -1442,7 +1438,7 @@ EXPORT(int, sceKernelStopUnloadModule) { return UNIMPLEMENTED(); } -EXPORT(int, sceKernelTryLockLwMutex, Ptr workarea, int lock_count) { +EXPORT(int, sceKernelTryLockLwMutex, Ptr workarea, int lock_count) { const auto lwmutexid = workarea.get(host.mem)->uid; return mutex_try_lock(host.kernel, export_name, thread_id, lwmutexid, lock_count, SyncWeight::Light); } @@ -1467,12 +1463,12 @@ EXPORT(int, sceKernelUnloadModule) { return UNIMPLEMENTED(); } -EXPORT(int, sceKernelUnlockLwMutex, Ptr workarea, int unlock_count) { +EXPORT(int, sceKernelUnlockLwMutex, Ptr workarea, int unlock_count) { const auto lwmutexid = workarea.get(host.mem)->uid; return mutex_unlock(host.kernel, export_name, thread_id, lwmutexid, unlock_count, SyncWeight::Light); } -EXPORT(int, sceKernelUnlockLwMutex2, Ptr workarea, int unlock_count) { +EXPORT(int, sceKernelUnlockLwMutex2, Ptr workarea, int unlock_count) { const auto lwmutexid = workarea.get(host.mem)->uid; return mutex_unlock(host.kernel, export_name, thread_id, lwmutexid, unlock_count, SyncWeight::Light); } @@ -1511,12 +1507,12 @@ EXPORT(int, sceKernelWaitExceptionCB) { return UNIMPLEMENTED(); } -EXPORT(int, sceKernelWaitLwCond, Ptr workarea, SceUInt32 *timeout) { +EXPORT(int, sceKernelWaitLwCond, Ptr workarea, SceUInt32 *timeout) { const auto cond_id = workarea.get(host.mem)->uid; return condvar_wait(host.kernel, export_name, thread_id, cond_id, timeout, SyncWeight::Light); } -EXPORT(int, sceKernelWaitLwCondCB, Ptr workarea, SceUInt32 *timeout) { +EXPORT(int, sceKernelWaitLwCondCB, Ptr workarea, SceUInt32 *timeout) { STUBBED("no CB"); const auto cond_id = workarea.get(host.mem)->uid; return condvar_wait(host.kernel, export_name, thread_id, cond_id, timeout, SyncWeight::Light); diff --git a/vita3k/modules/SceLibKernel/SceLibRng.cpp b/vita3k/modules/SceLibKernel/SceLibRng.cpp index c8af5c0f8..da3fdfcfd 100644 --- a/vita3k/modules/SceLibKernel/SceLibRng.cpp +++ b/vita3k/modules/SceLibKernel/SceLibRng.cpp @@ -17,8 +17,6 @@ #include "SceLibRng.h" -#include - #include #include diff --git a/vita3k/modules/SceNet/SceNet.cpp b/vita3k/modules/SceNet/SceNet.cpp index bc2f389b3..761db7260 100644 --- a/vita3k/modules/SceNet/SceNet.cpp +++ b/vita3k/modules/SceNet/SceNet.cpp @@ -17,8 +17,8 @@ #include "SceNet.h" +#include #include -#include #ifdef WIN32 #include diff --git a/vita3k/modules/SceNetCtl/SceNetCtl.cpp b/vita3k/modules/SceNetCtl/SceNetCtl.cpp index 4e9c55a64..ed0632324 100644 --- a/vita3k/modules/SceNetCtl/SceNetCtl.cpp +++ b/vita3k/modules/SceNetCtl/SceNetCtl.cpp @@ -20,7 +20,65 @@ #include #include -#include +#define SCE_NETCTL_INFO_SSID_LEN_MAX 32 +#define SCE_NETCTL_INFO_CONFIG_NAME_LEN_MAX 64 + +enum SceNetCtlState { + SCE_NETCTL_STATE_DISCONNECTED, + SCE_NETCTL_STATE_CONNECTING, + SCE_NETCTL_STATE_FINALIZING, + SCE_NETCTL_STATE_CONNECTED +}; + +enum SceNetCtlInfoType { + SCE_NETCTL_INFO_GET_CNF_NAME = 1, + SCE_NETCTL_INFO_GET_DEVICE, + SCE_NETCTL_INFO_GET_ETHER_ADDR, + SCE_NETCTL_INFO_GET_MTU, + SCE_NETCTL_INFO_GET_LINK, + SCE_NETCTL_INFO_GET_BSSID, + SCE_NETCTL_INFO_GET_SSID, + SCE_NETCTL_INFO_GET_WIFI_SECURITY, + SCE_NETCTL_INFO_GET_RSSI_DBM, + SCE_NETCTL_INFO_GET_RSSI_PERCENTAGE, + SCE_NETCTL_INFO_GET_CHANNEL, + SCE_NETCTL_INFO_GET_IP_CONFIG, + SCE_NETCTL_INFO_GET_DHCP_HOSTNAME, + SCE_NETCTL_INFO_GET_PPPOE_AUTH_NAME, + SCE_NETCTL_INFO_GET_IP_ADDRESS, + SCE_NETCTL_INFO_GET_NETMASK, + SCE_NETCTL_INFO_GET_DEFAULT_ROUTE, + SCE_NETCTL_INFO_GET_PRIMARY_DNS, + SCE_NETCTL_INFO_GET_SECONDARY_DNS, + SCE_NETCTL_INFO_GET_HTTP_PROXY_CONFIG, + SCE_NETCTL_INFO_GET_HTTP_PROXY_SERVER, + SCE_NETCTL_INFO_GET_HTTP_PROXY_PORT, +}; + +typedef union SceNetCtlInfo { + char cnf_name[SCE_NETCTL_INFO_CONFIG_NAME_LEN_MAX + 1]; + unsigned int device; + SceNetEtherAddr ether_addr; + unsigned int mtu; + unsigned int link; + SceNetEtherAddr bssid; + char ssid[SCE_NETCTL_INFO_SSID_LEN_MAX + 1]; + unsigned int wifi_security; + unsigned int rssi_dbm; + unsigned int rssi_percentage; + unsigned int channel; + unsigned int ip_config; + char dhcp_hostname[256]; + char pppoe_auth_name[128]; + char ip_address[16]; + char netmask[16]; + char default_route[16]; + char primary_dns[16]; + char secondary_dns[16]; + unsigned int http_proxy_config; + char http_proxy_server[256]; + unsigned int http_proxy_port; +} SceNetCtlInfo; EXPORT(int, sceNetCtlAdhocDisconnect) { return UNIMPLEMENTED(); @@ -108,7 +166,7 @@ EXPORT(int, sceNetCtlInetGetState, uint32_t *state) { EXPORT(int, sceNetCtlInetRegisterCallback, Ptr callback, Ptr data, uint32_t *cid) { const std::lock_guard lock(host.kernel.mutex); *cid = host.kernel.get_next_uid(); - emu::SceNetCtlCallback sceNetCtlCallback; + SceNetCtlCallback sceNetCtlCallback; sceNetCtlCallback.pc = callback.address(); sceNetCtlCallback.data = data.address(); host.net.cbs.emplace(*cid, sceNetCtlCallback); diff --git a/vita3k/modules/SceNgsUser/SceNgs.cpp b/vita3k/modules/SceNgsUser/SceNgs.cpp index c67ec48f7..4eb80a0ae 100644 --- a/vita3k/modules/SceNgsUser/SceNgs.cpp +++ b/vita3k/modules/SceNgsUser/SceNgs.cpp @@ -19,7 +19,6 @@ #include "SceNgs.h" -namespace emu { struct SceNgsPatchInfo1 { std::int32_t out_channels; std::int32_t in_channels; @@ -37,7 +36,6 @@ struct SceNgsBufferInfo { std::uint32_t size; }; static_assert(sizeof(SceNgsBufferInfo) == 8); -} // namespace emu EXPORT(int, sceNgsAT9GetSectionDetails) { return UNIMPLEMENTED(); @@ -55,7 +53,7 @@ EXPORT(int, sceNgsPatchCreateRouting) { return UNIMPLEMENTED(); } -EXPORT(int, sceNgsPatchGetInfo, std::uint32_t patch, Ptr patch_info1_, Ptr patch_info2_) { +EXPORT(int, sceNgsPatchGetInfo, std::uint32_t patch, Ptr patch_info1_, Ptr patch_info2_) { auto *patch_info1 = patch_info1_.get(host.mem); patch_info1->in_channels = 2; @@ -234,7 +232,7 @@ EXPORT(int, sceNgsVoiceKill) { return UNIMPLEMENTED(); } -EXPORT(int, sceNgsVoiceLockParams, std::uint32_t voice, std::uint32_t unk1, std::uint32_t unk2, Ptr buf) { +EXPORT(int, sceNgsVoiceLockParams, std::uint32_t voice, std::uint32_t unk1, std::uint32_t unk2, Ptr buf) { auto *buffer_info = buf.get(host.mem); buffer_info->data = alloc(host.mem, 10, "SceNgs buffer stub"); diff --git a/vita3k/modules/SceNpManager/SceNpManager.cpp b/vita3k/modules/SceNpManager/SceNpManager.cpp index db47e3f7b..41de231fd 100644 --- a/vita3k/modules/SceNpManager/SceNpManager.cpp +++ b/vita3k/modules/SceNpManager/SceNpManager.cpp @@ -71,12 +71,12 @@ EXPORT(int, sceNpGetServiceState) { return UNIMPLEMENTED(); } -EXPORT(int, sceNpInit, emu::np::CommunicationConfig *comm_config, void *dontcare) { +EXPORT(int, sceNpInit, np::CommunicationConfig *comm_config, void *dontcare) { if (host.np.inited) { return SCE_NP_ERROR_ALREADY_INITIALIZED; } - const emu::np::CommunicationID *comm_id = (comm_config) ? comm_config->comm_id.get(host.mem) : nullptr; + const np::CommunicationID *comm_id = (comm_config) ? comm_config->comm_id.get(host.mem) : nullptr; if (!init(host.np, comm_id)) { return SCE_NP_ERROR_NOT_INITIALIZED; @@ -126,7 +126,7 @@ EXPORT(int, sceNpManagerGetNpId, SceNpId *id) { EXPORT(int, sceNpRegisterServiceStateCallback, Ptr callback, Ptr data) { const std::lock_guard lock(host.kernel.mutex); uint32_t cid = host.kernel.get_next_uid(); - emu::SceNpServiceStateCallback sceNpServiceStateCallback; + SceNpServiceStateCallback sceNpServiceStateCallback; sceNpServiceStateCallback.pc = callback.address(); sceNpServiceStateCallback.data = data.address(); host.np.cbs.emplace(cid, sceNpServiceStateCallback); diff --git a/vita3k/modules/SceNpTrophy/SceNpTrophy.cpp b/vita3k/modules/SceNpTrophy/SceNpTrophy.cpp index 5c4cd8ed6..f863e6a09 100644 --- a/vita3k/modules/SceNpTrophy/SceNpTrophy.cpp +++ b/vita3k/modules/SceNpTrophy/SceNpTrophy.cpp @@ -26,7 +26,7 @@ EXPORT(int, sceNpTrophyAbortHandle) { return 0; } -EXPORT(int, sceNpTrophyCreateContext, emu::np::trophy::ContextHandle *context, const emu::np::CommunicationID *comm_id, +EXPORT(int, sceNpTrophyCreateContext, np::trophy::ContextHandle *context, const np::CommunicationID *comm_id, void *comm_sign, const std::uint64_t options) { if (!host.np.trophy_state.inited) { return SCE_NP_TROPHY_ERROR_NOT_INITIALIZED; @@ -36,17 +36,17 @@ EXPORT(int, sceNpTrophyCreateContext, emu::np::trophy::ContextHandle *context, c return SCE_NP_TROPHY_ERROR_INVALID_NPCOMMID; } - emu::np::NpTrophyError err = emu::np::NpTrophyError::TROPHY_ERROR_NONE; + np::NpTrophyError err = np::NpTrophyError::TROPHY_ERROR_NONE; *context = create_trophy_context(host.np, host.io, host.pref_path, comm_id, static_cast(host.cfg.sys_lang), &err); - if (*context == emu::np::trophy::INVALID_CONTEXT_HANDLE) { + if (*context == np::trophy::INVALID_CONTEXT_HANDLE) { switch (err) { - case emu::np::NpTrophyError::TROPHY_CONTEXT_EXIST: { + case np::NpTrophyError::TROPHY_CONTEXT_EXIST: { return SCE_NP_TROPHY_ERROR_CONTEXT_ALREADY_EXISTS; } - case emu::np::NpTrophyError::TROPHY_CONTEXT_FILE_NON_EXIST: { + case np::NpTrophyError::TROPHY_CONTEXT_FILE_NON_EXIST: { return SCE_NP_TROPHY_ERROR_TRP_FILE_NOT_FOUND; } @@ -55,7 +55,7 @@ EXPORT(int, sceNpTrophyCreateContext, emu::np::trophy::ContextHandle *context, c } } - emu::np::trophy::Context *ctx_ptr = get_trophy_context(host.np.trophy_state, *context); + np::trophy::Context *ctx_ptr = get_trophy_context(host.np.trophy_state, *context); LOG_TRACE("Trophy context for {}_{:0>2d} create successfuly!", ctx_ptr->comm_id.data, ctx_ptr->comm_id.num); return 0; @@ -69,7 +69,7 @@ EXPORT(int, sceNpTrophyCreateHandle, SceNpTrophyHandle *handle) { return 0; } -EXPORT(int, sceNpTrophyDestroyContext, emu::np::trophy::ContextHandle handle) { +EXPORT(int, sceNpTrophyDestroyContext, np::trophy::ContextHandle handle) { const bool result = destroy_trophy_context(host.np.trophy_state, handle); if (!result) { @@ -84,7 +84,7 @@ EXPORT(int, sceNpTrophyDestroyHandle, SceNpTrophyHandle handle) { return 0; } -static int copy_file_data_from_trophy_file(emu::np::trophy::Context *context, const char *filename, void *buffer, +static int copy_file_data_from_trophy_file(np::trophy::Context *context, const char *filename, void *buffer, SceSize *size) { // Search for ICON0.PNG in the trophy file const std::int32_t file_index = context->trophy_file.search_file(filename); @@ -128,12 +128,12 @@ static int copy_file_data_from_trophy_file(emu::np::trophy::Context *context, co if (!size) { \ return SCE_NP_TROPHY_ERROR_INVALID_ARGUMENT; \ } \ - emu::np::trophy::Context *context = get_trophy_context(host.np.trophy_state, context_handle); \ + np::trophy::Context *context = get_trophy_context(host.np.trophy_state, context_handle); \ if (!context) { \ return SCE_NP_TROPHY_ERROR_INVALID_CONTEXT; \ } -EXPORT(int, sceNpTrophyGetGameIcon, emu::np::trophy::ContextHandle context_handle, SceNpTrophyHandle api_handle, +EXPORT(int, sceNpTrophyGetGameIcon, np::trophy::ContextHandle context_handle, SceNpTrophyHandle api_handle, void *buffer, SceSize *size) { NP_TROPHY_GET_FUNCTION_STARTUP(context_handle) return copy_file_data_from_trophy_file(context, "ICON0.PNG", buffer, size); @@ -151,12 +151,12 @@ EXPORT(int, sceNpTrophyGetGroupInfo) { return UNIMPLEMENTED(); } -EXPORT(int, sceNpTrophyGetTrophyIcon, emu::np::trophy::ContextHandle context_handle, SceNpTrophyHandle api_handle, +EXPORT(int, sceNpTrophyGetTrophyIcon, np::trophy::ContextHandle context_handle, SceNpTrophyHandle api_handle, SceNpTrophyID trophy_id, void *buffer, SceSize *size) { NP_TROPHY_GET_FUNCTION_STARTUP(context_handle) // Trophy should only be in this region - if (trophy_id < 0 || trophy_id >= emu::np::trophy::MAX_TROPHIES) { + if (trophy_id < 0 || trophy_id >= np::trophy::MAX_TROPHIES) { return SCE_NP_TROPHY_ERROR_INVALID_TROPHY_ID; } @@ -169,8 +169,8 @@ EXPORT(int, sceNpTrophyGetTrophyInfo) { return UNIMPLEMENTED(); } -EXPORT(int, sceNpTrophyGetTrophyUnlockState, emu::np::trophy::ContextHandle context_handle, SceNpTrophyHandle api_handle, - emu::np::trophy::TrophyFlagArray *flag_array, std::uint32_t *count) { +EXPORT(int, sceNpTrophyGetTrophyUnlockState, np::trophy::ContextHandle context_handle, SceNpTrophyHandle api_handle, + np::trophy::TrophyFlagArray *flag_array, std::uint32_t *count) { if (!host.np.trophy_state.inited) { return SCE_NP_TROPHY_ERROR_NOT_INITIALIZED; } @@ -180,13 +180,13 @@ EXPORT(int, sceNpTrophyGetTrophyUnlockState, emu::np::trophy::ContextHandle cont } // Get context - emu::np::trophy::Context *context = get_trophy_context(host.np.trophy_state, context_handle); + np::trophy::Context *context = get_trophy_context(host.np.trophy_state, context_handle); if (!context) { return SCE_NP_TROPHY_ERROR_INVALID_CONTEXT; } *count = context->trophy_count; - std::memcpy(flag_array, context->trophy_progress, sizeof(emu::np::trophy::TrophyFlagArray)); + std::memcpy(flag_array, context->trophy_progress, sizeof(np::trophy::TrophyFlagArray)); return 0; } @@ -220,10 +220,10 @@ static void trophy_unlocked(const NpTrophyUnlockCallbackData &callback_data, con LOG_TRACE("Detail: {}", callback_data.description); } -static int do_trophy_callback(HostState &host, emu::np::trophy::Context *context, SceNpTrophyID trophy_id) { +static int do_trophy_callback(HostState &host, np::trophy::Context *context, SceNpTrophyID trophy_id) { NpTrophyUnlockCallbackData callback_data; - if (context->trophy_kinds[trophy_id] == emu::np::trophy::TrophyType::INVALID) { + if (context->trophy_kinds[trophy_id] == np::trophy::TrophyType::INVALID) { // Yes this ID is not present. So return INVALID_ID return SCE_NP_TROPHY_ERROR_INVALID_TROPHY_ID; } @@ -252,35 +252,35 @@ static int do_trophy_callback(HostState &host, emu::np::trophy::Context *context return 0; } -EXPORT(int, sceNpTrophyUnlockTrophy, emu::np::trophy::ContextHandle context_handle, SceNpTrophyHandle api_handle, +EXPORT(int, sceNpTrophyUnlockTrophy, np::trophy::ContextHandle context_handle, SceNpTrophyHandle api_handle, SceNpTrophyID trophy_id, SceNpTrophyID *platinum_id) { if (!host.np.trophy_state.inited) { return SCE_NP_TROPHY_ERROR_NOT_INITIALIZED; } // Trophy should only be in this region - if (trophy_id < 0 || trophy_id >= emu::np::trophy::MAX_TROPHIES) { + if (trophy_id < 0 || trophy_id >= np::trophy::MAX_TROPHIES) { return SCE_NP_TROPHY_ERROR_INVALID_TROPHY_ID; } // Get context - emu::np::trophy::Context *context = get_trophy_context(host.np.trophy_state, context_handle); + np::trophy::Context *context = get_trophy_context(host.np.trophy_state, context_handle); if (!context) { return SCE_NP_TROPHY_ERROR_INVALID_CONTEXT; } - emu::np::NpTrophyError error; + np::NpTrophyError error; if (!context->unlock_trophy(trophy_id, &error)) { switch (error) { - case emu::np::NpTrophyError::TROPHY_PLATINUM_IS_UNBREAKABLE: { + case np::NpTrophyError::TROPHY_PLATINUM_IS_UNBREAKABLE: { return SCE_NP_TROPHY_ERROR_PLATINUM_CANNOT_UNLOCK; } - case emu::np::NpTrophyError::TROPHY_ALREADY_UNLOCKED: { + case np::NpTrophyError::TROPHY_ALREADY_UNLOCKED: { return SCE_NP_TROPHY_ERROR_TROPHY_ALREADY_UNLOCKED; } - case emu::np::NpTrophyError::TROPHY_ID_INVALID: { + case np::NpTrophyError::TROPHY_ID_INVALID: { return SCE_NP_TROPHY_ERROR_INVALID_TROPHY_ID; } diff --git a/vita3k/modules/ScePower/ScePower.cpp b/vita3k/modules/ScePower/ScePower.cpp index 286384c26..591f5f832 100644 --- a/vita3k/modules/ScePower/ScePower.cpp +++ b/vita3k/modules/ScePower/ScePower.cpp @@ -17,13 +17,23 @@ #include "ScePower.h" +#include + #include -#include #include #define LOW_BATTERY_PERCENT 10 +enum ScePowerErrorCode { + SCE_POWER_ERROR_INVALID_VALUE = 0x802B0000, + SCE_POWER_ERROR_ALREADY_REGISTERED = 0x802B0001, + SCE_POWER_ERROR_CALLBACK_NOT_REGISTERED = 0x802B0002, + SCE_POWER_ERROR_CANT_SUSPEND = 0x802B0003, + SCE_POWER_ERROR_NO_BATTERY = 0x802B0100, + SCE_POWER_ERROR_DETECTING = 0x802B0101 +}; + EXPORT(int, scePowerBatteryUpdateInfo) { return UNIMPLEMENTED(); } diff --git a/vita3k/modules/SceProcessmgr/SceProcessmgr.cpp b/vita3k/modules/SceProcessmgr/SceProcessmgr.cpp index 401bbd2fa..ae2c252d2 100644 --- a/vita3k/modules/SceProcessmgr/SceProcessmgr.cpp +++ b/vita3k/modules/SceProcessmgr/SceProcessmgr.cpp @@ -18,12 +18,21 @@ #include "SceProcessmgr.h" #include -#include -#include #include #include +enum SceKernelPowerTickType { + /** Cancel all timers */ + SCE_KERNEL_POWER_TICK_DEFAULT = 0, + /** Cancel automatic suspension timer */ + SCE_KERNEL_POWER_TICK_DISABLE_AUTO_SUSPEND = 1, + /** Cancel OLED-off timer */ + SCE_KERNEL_POWER_TICK_DISABLE_OLED_OFF = 4, + /** Cancel OLED dimming timer */ + SCE_KERNEL_POWER_TICK_DISABLE_OLED_DIMMING = 6 +}; + struct VitaTimeval { uint32_t tv_sec; uint32_t tv_usec; diff --git a/vita3k/modules/SceSysmem/SceSysmem.cpp b/vita3k/modules/SceSysmem/SceSysmem.cpp index ac270b8c1..d7a6e826d 100644 --- a/vita3k/modules/SceSysmem/SceSysmem.cpp +++ b/vita3k/modules/SceSysmem/SceSysmem.cpp @@ -17,19 +17,19 @@ #include "SceSysmem.h" -#include -#include - #include #include -namespace emu { struct SceKernelAllocMemBlockOpt; -} -using namespace emu; +struct SceKernelFreeMemorySizeInfo { + int size; //!< sizeof(SceKernelFreeMemorySizeInfo) + int size_user; //!< Free memory size for *_USER_RW memory + int size_cdram; //!< Free memory size for USER_CDRAM_RW memory + int size_phycont; //!< Free memory size for USER_MAIN_PHYCONT_*_RW memory +}; -EXPORT(SceUID, sceKernelAllocMemBlock, const char *name, SceKernelMemBlockType type, int size, emu::SceKernelAllocMemBlockOpt *optp) { +EXPORT(SceUID, sceKernelAllocMemBlock, const char *name, SceKernelMemBlockType type, int size, SceKernelAllocMemBlockOpt *optp) { MemState &mem = host.mem; assert(name != nullptr); assert(type != 0); @@ -43,11 +43,11 @@ EXPORT(SceUID, sceKernelAllocMemBlock, const char *name, SceKernelMemBlockType t KernelState *const state = &host.kernel; const SceUID uid = state->get_next_uid(); - const SceKernelMemBlockInfoPtr sceKernelMemBlockInfo = std::make_shared(); + const SceKernelMemBlockInfoPtr sceKernelMemBlockInfo = std::make_shared(); sceKernelMemBlockInfo->type = type; sceKernelMemBlockInfo->mappedBase = address; sceKernelMemBlockInfo->mappedSize = size; - sceKernelMemBlockInfo->size = sizeof(emu::SceKernelMemBlockInfo); + sceKernelMemBlockInfo->size = sizeof(SceKernelMemBlockInfo); state->blocks.insert(Blocks::value_type(uid, sceKernelMemBlockInfo)); return uid; @@ -66,10 +66,10 @@ EXPORT(int, sceKernelAllocMemBlockForVM, const char *name, int size) { KernelState *const state = &host.kernel; const SceUID uid = state->get_next_uid(); - const SceKernelMemBlockInfoPtr sceKernelMemBlockInfo = std::make_shared(); + const SceKernelMemBlockInfoPtr sceKernelMemBlockInfo = std::make_shared(); sceKernelMemBlockInfo->mappedBase = address; sceKernelMemBlockInfo->mappedSize = size; - sceKernelMemBlockInfo->size = sizeof(emu::SceKernelMemBlockInfo); + sceKernelMemBlockInfo->size = sizeof(SceKernelMemBlockInfo); state->blocks.insert(Blocks::value_type(uid, sceKernelMemBlockInfo)); state->vm_blocks.insert(Blocks::value_type(uid, sceKernelMemBlockInfo)); @@ -147,14 +147,14 @@ EXPORT(int, sceKernelGetMemBlockBase, SceUID uid, Ptr *basep) { return SCE_KERNEL_OK; } -EXPORT(int, sceKernelGetMemBlockInfoByAddr, Address addr, emu::SceKernelMemBlockInfo *info) { +EXPORT(int, sceKernelGetMemBlockInfoByAddr, Address addr, SceKernelMemBlockInfo *info) { assert(addr >= 0); assert(info != nullptr); const KernelState *const state = &host.kernel; for (Blocks::const_iterator it = state->blocks.begin(); it != state->blocks.end(); ++it) { if (it->second->mappedBase.address() < addr && (it->second->mappedBase.address() + it->second->mappedSize > addr)) { - memcpy(info, it->second.get(), sizeof(emu::SceKernelMemBlockInfo)); + memcpy(info, it->second.get(), sizeof(SceKernelMemBlockInfo)); return SCE_KERNEL_OK; } } diff --git a/vita3k/modules/SceVideodec/SceVideodecUser.cpp b/vita3k/modules/SceVideodec/SceVideodecUser.cpp index e194fe3ce..aaddc2d9c 100644 --- a/vita3k/modules/SceVideodec/SceVideodecUser.cpp +++ b/vita3k/modules/SceVideodec/SceVideodecUser.cpp @@ -17,13 +17,61 @@ #include "SceVideodecUser.h" -#include - extern "C" { #include } -namespace emu { +enum SceVideodecType { + SCE_VIDEODEC_TYPE_HW_AVCDEC = 0x1001 +}; + +struct SceVideodecTimeStamp { + uint32_t upper; + uint32_t lower; +}; + +struct SceAvcdecFrameOptionRGBA { + uint8_t alpha; + uint8_t cscCoefficient; + uint8_t reserved[14]; +}; + +union SceAvcdecFrameOption { + uint8_t reserved[16]; + SceAvcdecFrameOptionRGBA rgba; +}; + +struct SceAvcdecQueryDecoderInfo { + uint32_t horizontal; + uint32_t vertical; + uint32_t numOfRefFrames; //!< Number of reference frames +}; + +struct SceAvcdecDecoderInfo { + uint32_t frameMemSize; +}; + +struct SceAvcdecInfo { + uint32_t numUnitsInTick; + uint32_t timeScale; + uint8_t fixedFrameRateFlag; + + uint8_t aspectRatioIdc; + uint16_t sarWidth; + uint16_t sarHeight; + + uint8_t colourPrimaries; + uint8_t transferCharacteristics; + uint8_t matrixCoefficients; + + uint8_t videoFullRangeFlag; + + uint8_t picStruct[2]; + uint8_t ctType; + + SceVideodecTimeStamp pts; +}; + struct SceAvcdecBuf { Ptr pBuf; uint32_t size; @@ -31,13 +79,13 @@ struct SceAvcdecBuf { struct SceAvcdecCtrl { uint32_t handle; - emu::SceAvcdecBuf frameBuf; + SceAvcdecBuf frameBuf; }; struct SceAvcdecAu { SceVideodecTimeStamp pts; SceVideodecTimeStamp dts; - emu::SceAvcdecBuf es; + SceAvcdecBuf es; }; struct SceAvcdecFrame { @@ -68,15 +116,14 @@ struct SceAvcdecPicture { struct SceAvcdecArrayPicture { uint32_t numOfOutput; uint32_t numOfElm; - Ptr> pPicture; + Ptr> pPicture; }; -} // namespace emu inline uint32_t calculate_buffer_size(uint32_t width, uint32_t height, uint32_t frameRefs) { return width * height * 3 / 2 * frameRefs; } -void send_decoder_data(MemState &mem, DecoderPtr &decoder_info, const emu::SceAvcdecAu *au) { +void send_decoder_data(MemState &mem, DecoderPtr &decoder_info, const SceAvcdecAu *au) { int error = 0; std::vector au_frame(au->es.size + AV_INPUT_BUFFER_PADDING_SIZE); @@ -124,11 +171,11 @@ inline void copy_yuv_data_from_frame(AVFrame *frame, uint8_t *dest) { } } -void receive_decoder_data(MemState &mem, DecoderPtr &decoder_info, emu::SceAvcdecArrayPicture *picture) { +void receive_decoder_data(MemState &mem, DecoderPtr &decoder_info, SceAvcdecArrayPicture *picture) { AVFrame *frame = av_frame_alloc(); if (avcodec_receive_frame(decoder_info->context, frame) == 0) { - emu::SceAvcdecFrame *avc_frame = &picture->pPicture.get(mem)[0].get(mem)->frame; + SceAvcdecFrame *avc_frame = &picture->pPicture.get(mem)[0].get(mem)->frame; auto *avc_data = reinterpret_cast(avc_frame->pPicture[0].get(mem)); copy_yuv_data_from_frame(frame, avc_data); picture->numOfOutput++; @@ -137,7 +184,7 @@ void receive_decoder_data(MemState &mem, DecoderPtr &decoder_info, emu::SceAvcde av_frame_free(&frame); } -EXPORT(int, sceAvcdecCreateDecoder, uint32_t codec_type, emu::SceAvcdecCtrl *decoder, const SceAvcdecQueryDecoderInfo *query) { +EXPORT(int, sceAvcdecCreateDecoder, uint32_t codec_type, SceAvcdecCtrl *decoder, const SceAvcdecQueryDecoderInfo *query) { assert(codec_type == SCE_VIDEODEC_TYPE_HW_AVCDEC); SceUID handle = host.kernel.get_next_uid(); @@ -185,7 +232,7 @@ EXPORT(int, sceAvcdecCscInternal) { return UNIMPLEMENTED(); } -EXPORT(int, sceAvcdecDecode, emu::SceAvcdecCtrl *decoder, const emu::SceAvcdecAu *au, emu::SceAvcdecArrayPicture *picture) { +EXPORT(int, sceAvcdecDecode, SceAvcdecCtrl *decoder, const SceAvcdecAu *au, SceAvcdecArrayPicture *picture) { DecoderPtr &decoder_info = host.kernel.decoders[decoder->handle]; // TODO: decoding can be done async I think @@ -211,14 +258,14 @@ EXPORT(int, sceAvcdecDecodeAuNongameapp) { return UNIMPLEMENTED(); } -EXPORT(int, sceAvcdecDecodeAvailableSize, emu::SceAvcdecCtrl *decoder) { +EXPORT(int, sceAvcdecDecodeAvailableSize, SceAvcdecCtrl *decoder) { DecoderPtr &decoder_info = host.kernel.decoders[decoder->handle]; return calculate_buffer_size( decoder_info->frame_width, decoder_info->frame_height, decoder_info->frame_ref_count); } -EXPORT(int, sceAvcdecDecodeFlush, emu::SceAvcdecCtrl *decoder) { +EXPORT(int, sceAvcdecDecodeFlush, SceAvcdecCtrl *decoder) { auto &decoder_info = host.kernel.decoders[decoder->handle]; avcodec_flush_buffers(decoder_info->context); @@ -254,7 +301,7 @@ EXPORT(int, sceAvcdecDecodeSetUserDataSei1FieldMemSizeNongameapp) { return UNIMPLEMENTED(); } -EXPORT(int, sceAvcdecDecodeStop, emu::SceAvcdecCtrl *decoder, emu::SceAvcdecArrayPicture *picture) { +EXPORT(int, sceAvcdecDecodeStop, SceAvcdecCtrl *decoder, SceAvcdecArrayPicture *picture) { auto &decoder_info = host.kernel.decoders[decoder->handle]; receive_decoder_data(host.mem, decoder_info, picture); @@ -270,7 +317,7 @@ EXPORT(int, sceAvcdecDecodeWithWorkPicture) { return UNIMPLEMENTED(); } -EXPORT(int, sceAvcdecDeleteDecoder, emu::SceAvcdecCtrl *decoder) { +EXPORT(int, sceAvcdecDeleteDecoder, SceAvcdecCtrl *decoder) { auto &decoder_info = host.kernel.decoders[decoder->handle]; avcodec_close(decoder_info->context); diff --git a/vita3k/modules/include/modules/module_parent.h b/vita3k/modules/include/modules/module_parent.h index 8bdd1cd9c..2c5883bff 100644 --- a/vita3k/modules/include/modules/module_parent.h +++ b/vita3k/modules/include/modules/module_parent.h @@ -17,8 +17,8 @@ #pragma once -#include -#include +#include +#include struct CPUState; struct HostState; diff --git a/vita3k/net/CMakeLists.txt b/vita3k/net/CMakeLists.txt index 5f4dd05e4..53c389340 100644 --- a/vita3k/net/CMakeLists.txt +++ b/vita3k/net/CMakeLists.txt @@ -3,11 +3,12 @@ net STATIC include/net/functions.h include/net/state.h +include/net/types.h src/net.cpp ) target_include_directories(net PUBLIC include) -target_link_libraries(net PUBLIC mem vita-headers) +target_link_libraries(net PUBLIC mem) if (WIN32) target_link_libraries(net PRIVATE winsock) endif() diff --git a/vita3k/net/include/net/state.h b/vita3k/net/include/net/state.h index 230571a65..d75b9cde0 100644 --- a/vita3k/net/include/net/state.h +++ b/vita3k/net/include/net/state.h @@ -17,6 +17,8 @@ #pragma once +#include + #include #ifdef WIN32 @@ -38,17 +40,8 @@ typedef int socklen_t; typedef int abs_socket; #endif -#include // Address. - -namespace emu { -struct SceNetCtlCallback { - Address pc; - Address data; -}; -} // namespace emu - typedef std::map sockets; -typedef std::map callbacks; +typedef std::map callbacks; struct NetState { bool inited = false; diff --git a/vita3k/net/include/net/types.h b/vita3k/net/include/net/types.h new file mode 100644 index 000000000..dad4044f1 --- /dev/null +++ b/vita3k/net/include/net/types.h @@ -0,0 +1,313 @@ +#pragma once + +#include +#include + +enum SceNetProtocol { + SCE_NET_IPPROTO_IP = 0, + SCE_NET_IPPROTO_ICMP = 1, + SCE_NET_IPPROTO_IGMP = 2, + SCE_NET_IPPROTO_TCP = 6, + SCE_NET_IPPROTO_UDP = 17, + SCE_NET_SOL_SOCKET = 0xFFFF +}; + +enum SceNetSocketType { + SCE_NET_SOCK_STREAM = 1, + SCE_NET_SOCK_DGRAM = 2, + SCE_NET_SOCK_RAW = 3, + SCE_NET_SOCK_DGRAM_P2P = 6, + SCE_NET_SOCK_STREAM_P2P = 10 +}; + +enum SceNetSocketOption { + /* IP */ + SCE_NET_IP_HDRINCL = 2, + SCE_NET_IP_TOS = 3, + SCE_NET_IP_TTL = 4, + SCE_NET_IP_MULTICAST_IF = 9, + SCE_NET_IP_MULTICAST_TTL = 10, + SCE_NET_IP_MULTICAST_LOOP = 11, + SCE_NET_IP_ADD_MEMBERSHIP = 12, + SCE_NET_IP_DROP_MEMBERSHIP = 13, + SCE_NET_IP_TTLCHK = 23, + SCE_NET_IP_MAXTTL = 24, + /* TCP */ + SCE_NET_TCP_NODELAY = 1, + SCE_NET_TCP_MAXSEG = 2, + SCE_NET_TCP_MSS_TO_ADVERTISE = 3, + /* SOCKET */ + SCE_NET_SO_REUSEADDR = 0x00000004, + SCE_NET_SO_KEEPALIVE = 0x00000008, + SCE_NET_SO_BROADCAST = 0x00000020, + SCE_NET_SO_LINGER = 0x00000080, + SCE_NET_SO_OOBINLINE = 0x00000100, + SCE_NET_SO_REUSEPORT = 0x00000200, + SCE_NET_SO_ONESBCAST = 0x00000800, + SCE_NET_SO_USECRYPTO = 0x00001000, + SCE_NET_SO_USESIGNATURE = 0x00002000, + SCE_NET_SO_SNDBUF = 0x1001, + SCE_NET_SO_RCVBUF = 0x1002, + SCE_NET_SO_SNDLOWAT = 0x1003, + SCE_NET_SO_RCVLOWAT = 0x1004, + SCE_NET_SO_SNDTIMEO = 0x1005, + SCE_NET_SO_RCVTIMEO = 0x1006, + SCE_NET_SO_ERROR = 0x1007, + SCE_NET_SO_TYPE = 0x1008, + SCE_NET_SO_NBIO = 0x1100, + SCE_NET_SO_TPPOLICY = 0x1101, + SCE_NET_SO_NAME = 0x1102 +}; + +enum SceNetKernelErrorCode { + SCE_NET_EPERM = 1, + SCE_NET_ENOENT = 2, + SCE_NET_ESRCH = 3, + SCE_NET_EINTR = 4, + SCE_NET_EIO = 5, + SCE_NET_ENXIO = 6, + SCE_NET_E2BIG = 7, + SCE_NET_ENOEXEC = 8, + SCE_NET_EBADF = 9, + SCE_NET_ECHILD = 10, + SCE_NET_EDEADLK = 11, + SCE_NET_ENOMEM = 12, + SCE_NET_EACCES = 13, + SCE_NET_EFAULT = 14, + SCE_NET_ENOTBLK = 15, + SCE_NET_EBUSY = 16, + SCE_NET_EEXIST = 17, + SCE_NET_EXDEV = 18, + SCE_NET_ENODEV = 19, + SCE_NET_ENOTDIR = 20, + SCE_NET_EISDIR = 21, + SCE_NET_EINVAL = 22, + SCE_NET_ENFILE = 23, + SCE_NET_EMFILE = 24, + SCE_NET_ENOTTY = 25, + SCE_NET_ETXTBSY = 26, + SCE_NET_EFBIG = 27, + SCE_NET_ENOSPC = 28, + SCE_NET_ESPIPE = 29, + SCE_NET_EROFS = 30, + SCE_NET_EMLINK = 31, + SCE_NET_EPIPE = 32, + SCE_NET_EDOM = 33, + SCE_NET_ERANGE = 34, + SCE_NET_EAGAIN = 35, + SCE_NET_EWOULDBLOCK = 35, + SCE_NET_EINPROGRESS = 36, + SCE_NET_EALREADY = 37, + SCE_NET_ENOTSOCK = 38, + SCE_NET_EDESTADDRREQ = 39, + SCE_NET_EMSGSIZE = 40, + SCE_NET_EPROTOTYPE = 41, + SCE_NET_ENOPROTOOPT = 42, + SCE_NET_EPROTONOSUPPORT = 43, + SCE_NET_ESOCKTNOSUPPORT = 44, + SCE_NET_EOPNOTSUPP = 45, + SCE_NET_EPFNOSUPPORT = 46, + SCE_NET_EAFNOSUPPORT = 47, + SCE_NET_EADDRINUSE = 48, + SCE_NET_EADDRNOTAVAIL = 49, + SCE_NET_ENETDOWN = 50, + SCE_NET_ENETUNREACH = 51, + SCE_NET_ENETRESET = 52, + SCE_NET_ECONNABORTED = 53, + SCE_NET_ECONNRESET = 54, + SCE_NET_ENOBUFS = 55, + SCE_NET_EISCONN = 56, + SCE_NET_ENOTCONN = 57, + SCE_NET_ESHUTDOWN = 58, + SCE_NET_ETOOMANYREFS = 59, + SCE_NET_ETIMEDOUT = 60, + SCE_NET_ECONNREFUSED = 61, + SCE_NET_ELOOP = 62, + SCE_NET_ENAMETOOLONG = 63, + SCE_NET_EHOSTDOWN = 64, + SCE_NET_EHOSTUNREACH = 65, + SCE_NET_ENOTEMPTY = 66, + SCE_NET_EPROCLIM = 67, + SCE_NET_EUSERS = 68, + SCE_NET_EDQUOT = 69, + SCE_NET_ESTALE = 70, + SCE_NET_EREMOTE = 71, + SCE_NET_EBADRPC = 72, + SCE_NET_ERPCMISMATCH = 73, + SCE_NET_EPROGUNAVAIL = 74, + SCE_NET_EPROGMISMATCH = 75, + SCE_NET_EPROCUNAVAIL = 76, + SCE_NET_ENOLCK = 77, + SCE_NET_ENOSYS = 78, + SCE_NET_EFTYPE = 79, + SCE_NET_EAUTH = 80, + SCE_NET_ENEEDAUTH = 81, + SCE_NET_EIDRM = 82, + SCE_NET_ENOMSG = 83, + SCE_NET_EOVERFLOW = 84, + SCE_NET_EILSEQ = 85, + SCE_NET_ENOTSUP = 86, + SCE_NET_ECANCELED = 87, + SCE_NET_EBADMSG = 88, + SCE_NET_ENODATA = 89, + SCE_NET_ENOSR = 90, + SCE_NET_ENOSTR = 91, + SCE_NET_ETIME = 92, + SCE_NET_EADHOC = 160, + SCE_NET_EDISABLEDIF = 161, + SCE_NET_ERESUME = 162 +}; + +enum SceNetErrorCode { + SCE_NET_ERROR_EPERM = 0x80410101, + SCE_NET_ERROR_ENOENT = 0x80410102, + SCE_NET_ERROR_ESRCH = 0x80410103, + SCE_NET_ERROR_EINTR = 0x80410104, + SCE_NET_ERROR_EIO = 0x80410105, + SCE_NET_ERROR_ENXIO = 0x80410106, + SCE_NET_ERROR_E2BIG = 0x80410107, + SCE_NET_ERROR_ENOEXEC = 0x80410108, + SCE_NET_ERROR_EBADF = 0x80410109, + SCE_NET_ERROR_ECHILD = 0x8041010A, + SCE_NET_ERROR_EDEADLK = 0x8041010B, + SCE_NET_ERROR_ENOMEM = 0x8041010C, + SCE_NET_ERROR_EACCES = 0x8041010D, + SCE_NET_ERROR_EFAULT = 0x8041010E, + SCE_NET_ERROR_ENOTBLK = 0x8041010F, + SCE_NET_ERROR_EBUSY = 0x80410110, + SCE_NET_ERROR_EEXIST = 0x80410111, + SCE_NET_ERROR_EXDEV = 0x80410112, + SCE_NET_ERROR_ENODEV = 0x80410113, + SCE_NET_ERROR_ENOTDIR = 0x80410114, + SCE_NET_ERROR_EISDIR = 0x80410115, + SCE_NET_ERROR_EINVAL = 0x80410116, + SCE_NET_ERROR_ENFILE = 0x80410117, + SCE_NET_ERROR_EMFILE = 0x80410118, + SCE_NET_ERROR_ENOTTY = 0x80410119, + SCE_NET_ERROR_ETXTBSY = 0x8041011A, + SCE_NET_ERROR_EFBIG = 0x8041011B, + SCE_NET_ERROR_ENOSPC = 0x8041011C, + SCE_NET_ERROR_ESPIPE = 0x8041011D, + SCE_NET_ERROR_EROFS = 0x8041011E, + SCE_NET_ERROR_EMLINK = 0x8041011F, + SCE_NET_ERROR_EPIPE = 0x80410120, + SCE_NET_ERROR_EDOM = 0x80410121, + SCE_NET_ERROR_ERANGE = 0x80410122, + SCE_NET_ERROR_EAGAIN = 0x80410123, + SCE_NET_ERROR_EWOULDBLOCK = 0x80410123, + SCE_NET_ERROR_EINPROGRESS = 0x80410124, + SCE_NET_ERROR_EALREADY = 0x80410125, + SCE_NET_ERROR_ENOTSOCK = 0x80410126, + SCE_NET_ERROR_EDESTADDRREQ = 0x80410127, + SCE_NET_ERROR_EMSGSIZE = 0x80410128, + SCE_NET_ERROR_EPROTOTYPE = 0x80410129, + SCE_NET_ERROR_ENOPROTOOPT = 0x8041012A, + SCE_NET_ERROR_EPROTONOSUPPORT = 0x8041012B, + SCE_NET_ERROR_ESOCKTNOSUPPORT = 0x8041012C, + SCE_NET_ERROR_EOPNOTSUPP = 0x8041012D, + SCE_NET_ERROR_EPFNOSUPPORT = 0x8041012E, + SCE_NET_ERROR_EAFNOSUPPORT = 0x8041012F, + SCE_NET_ERROR_EADDRINUSE = 0x80410130, + SCE_NET_ERROR_EADDRNOTAVAIL = 0x80410131, + SCE_NET_ERROR_ENETDOWN = 0x80410132, + SCE_NET_ERROR_ENETUNREACH = 0x80410133, + SCE_NET_ERROR_ENETRESET = 0x80410134, + SCE_NET_ERROR_ECONNABORTED = 0x80410135, + SCE_NET_ERROR_ECONNRESET = 0x80410136, + SCE_NET_ERROR_ENOBUFS = 0x80410137, + SCE_NET_ERROR_EISCONN = 0x80410138, + SCE_NET_ERROR_ENOTCONN = 0x80410139, + SCE_NET_ERROR_ESHUTDOWN = 0x8041013A, + SCE_NET_ERROR_ETOOMANYREFS = 0x8041013B, + SCE_NET_ERROR_ETIMEDOUT = 0x8041013C, + SCE_NET_ERROR_ECONNREFUSED = 0x8041013D, + SCE_NET_ERROR_ELOOP = 0x8041013E, + SCE_NET_ERROR_ENAMETOOLONG = 0x8041013F, + SCE_NET_ERROR_EHOSTDOWN = 0x80410140, + SCE_NET_ERROR_EHOSTUNREACH = 0x80410141, + SCE_NET_ERROR_ENOTEMPTY = 0x80410142, + SCE_NET_ERROR_EPROCLIM = 0x80410143, + SCE_NET_ERROR_EUSERS = 0x80410144, + SCE_NET_ERROR_EDQUOT = 0x80410145, + SCE_NET_ERROR_ESTALE = 0x80410146, + SCE_NET_ERROR_EREMOTE = 0x80410147, + SCE_NET_ERROR_EBADRPC = 0x80410148, + SCE_NET_ERROR_ERPCMISMATCH = 0x80410149, + SCE_NET_ERROR_EPROGUNAVAIL = 0x8041014A, + SCE_NET_ERROR_EPROGMISMATCH = 0x8041014B, + SCE_NET_ERROR_EPROCUNAVAIL = 0x8041014C, + SCE_NET_ERROR_ENOLCK = 0x8041014D, + SCE_NET_ERROR_ENOSYS = 0x8041014E, + SCE_NET_ERROR_EFTYPE = 0x8041014F, + SCE_NET_ERROR_EAUTH = 0x80410150, + SCE_NET_ERROR_ENEEDAUTH = 0x80410151, + SCE_NET_ERROR_EIDRM = 0x80410152, + SCE_NET_ERROR_ENOMS = 0x80410153, + SCE_NET_ERROR_EOVERFLOW = 0x80410154, + SCE_NET_ERROR_EILSEQ = 0x80410155, + SCE_NET_ERROR_ENOTSUP = 0x80410156, + SCE_NET_ERROR_ECANCELED = 0x80410157, + SCE_NET_ERROR_EBADMSG = 0x80410158, + SCE_NET_ERROR_ENODATA = 0x80410159, + SCE_NET_ERROR_ENOSR = 0x8041015A, + SCE_NET_ERROR_ENOSTR = 0x8041015B, + SCE_NET_ERROR_ETIME = 0x8041015C, + SCE_NET_ERROR_EADHOC = 0x804101A0, + SCE_NET_ERROR_EDISABLEDIF = 0x804101A1, + SCE_NET_ERROR_ERESUME = 0x804101A2, + SCE_NET_ERROR_ENOTINIT = 0x804101C8, + SCE_NET_ERROR_ENOLIBMEM = 0x804101C9, + SCE_NET_ERROR_ERESERVED202 = 0x804101CA, + SCE_NET_ERROR_ECALLBACK = 0x804101CB, + SCE_NET_ERROR_EINTERNAL = 0x804101CC, + SCE_NET_ERROR_ERETURN = 0x804101CD, + SCE_NET_ERROR_RESOLVER_EINTERNAL = 0x804101DC, + SCE_NET_ERROR_RESOLVER_EBUSY = 0x804101DD, + SCE_NET_ERROR_RESOLVER_ENOSPACE = 0x804101DE, + SCE_NET_ERROR_RESOLVER_EPACKET = 0x804101DF, + SCE_NET_ERROR_RESOLVER_ERESERVED22 = 0x804101E0, + SCE_NET_ERROR_RESOLVER_ENODNS = 0x804101E1, + SCE_NET_ERROR_RESOLVER_ETIMEDOUT = 0x804101E2, + SCE_NET_ERROR_RESOLVER_ENOSUPPORT = 0x804101E3, + SCE_NET_ERROR_RESOLVER_EFORMAT = 0x804101E4, + SCE_NET_ERROR_RESOLVER_ESERVERFAILURE = 0x804101E5, + SCE_NET_ERROR_RESOLVER_ENOHOST = 0x804101E6, + SCE_NET_ERROR_RESOLVER_ENOTIMPLEMENTED = 0x804101E7, + SCE_NET_ERROR_RESOLVER_ESERVERREFUSED = 0x804101E8, + SCE_NET_ERROR_RESOLVER_ENORECORD = 0x804101E9, + SCE_NET_ERROR_RESOLVER_EALIGNMENT = 0x804101EA +}; + +struct SceNetEtherAddr { + unsigned char data[6]; +}; + +struct SceNetCtlCallback { + Address pc; + Address data; +}; + +struct SceNetInAddr { + unsigned int s_addr; +}; + +struct SceNetSockaddrIn { + unsigned char sin_len; + unsigned char sin_family; + unsigned short int sin_port; + SceNetInAddr sin_addr; + unsigned short int sin_vport; + char sin_zero[6]; +}; + +struct SceNetSockaddr { + unsigned char sa_len; + unsigned char sa_family; + char sa_data[14]; +}; + +struct SceNetInitParam { + Ptr memory; + int32_t size; + int32_t flags; +}; diff --git a/vita3k/net/src/net.cpp b/vita3k/net/src/net.cpp index abdb69721..745b4c704 100644 --- a/vita3k/net/src/net.cpp +++ b/vita3k/net/src/net.cpp @@ -15,8 +15,6 @@ // with this program; if not, write to the Free Software Foundation, Inc., // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -#include - #include #include diff --git a/vita3k/np/include/np/common.h b/vita3k/np/include/np/common.h index 63c287841..271cc06e8 100644 --- a/vita3k/np/include/np/common.h +++ b/vita3k/np/include/np/common.h @@ -21,7 +21,7 @@ #include #include -namespace emu::np { +namespace np { struct CommunicationID { char data[9]; @@ -49,4 +49,4 @@ enum class NpTrophyError { TROPHY_PLATINUM_IS_UNBREAKABLE = 5, // Platinum is unbreakable }; -} // namespace emu::np \ No newline at end of file +} // namespace np \ No newline at end of file diff --git a/vita3k/np/include/np/functions.h b/vita3k/np/include/np/functions.h index 8b6a775b0..7be7a1347 100644 --- a/vita3k/np/include/np/functions.h +++ b/vita3k/np/include/np/functions.h @@ -21,20 +21,20 @@ #include #include -namespace emu::np { +namespace np { struct CommunicationID; -} +} // namespace np -namespace emu::np::trophy { +namespace np::trophy { using ContextHandle = std::int32_t; struct Context; -} // namespace emu::np::trophy +} // namespace np struct NpState; struct NpTrophyState; struct IOState; -bool init(NpState &state, const emu::np::CommunicationID *comm_id); +bool init(NpState &state, const np::CommunicationID *comm_id); bool deinit(NpState &state); bool init(NpTrophyState &state); @@ -51,8 +51,8 @@ bool deinit(NpTrophyState &state); * * \returns uint32_t(-1) on failure, else the handle to the context. */ -emu::np::trophy::ContextHandle create_trophy_context(NpState &np, IOState &io, const std::string &pref_path, - const emu::np::CommunicationID *custom_comm, const std::uint32_t lang, emu::np::NpTrophyError *error); +np::trophy::ContextHandle create_trophy_context(NpState &np, IOState &io, const std::string &pref_path, + const np::CommunicationID *custom_comm, const std::uint32_t lang, np::NpTrophyError *error); -emu::np::trophy::Context *get_trophy_context(NpTrophyState &state, const emu::np::trophy::ContextHandle handle); -bool destroy_trophy_context(NpTrophyState &state, const emu::np::trophy::ContextHandle handle); \ No newline at end of file +np::trophy::Context *get_trophy_context(NpTrophyState &state, const np::trophy::ContextHandle handle); +bool destroy_trophy_context(NpTrophyState &state, const np::trophy::ContextHandle handle); \ No newline at end of file diff --git a/vita3k/np/include/np/state.h b/vita3k/np/include/np/state.h index 88e61d315..eaa267fa9 100644 --- a/vita3k/np/include/np/state.h +++ b/vita3k/np/include/np/state.h @@ -26,19 +26,17 @@ #include #include -namespace emu { struct SceNpServiceStateCallback { Address pc; Address data; }; -} // namespace emu -typedef std::map np_callbacks; +typedef std::map np_callbacks; struct NpTrophyUnlockCallbackData { std::string trophy_name; std::string description; - emu::np::trophy::TrophyType trophy_kind; + np::trophy::TrophyType trophy_kind; std::vector icon_buf; }; @@ -48,7 +46,7 @@ struct NpTrophyState { bool inited = false; std::mutex access_mutex; - std::vector contexts; + std::vector contexts; NpTrophyUnlockCallback trophy_unlock_callback; }; @@ -58,5 +56,5 @@ struct NpState { int state = -1; NpTrophyState trophy_state; - emu::np::CommunicationID comm_id; + np::CommunicationID comm_id; }; diff --git a/vita3k/np/include/np/trophy/context.h b/vita3k/np/include/np/trophy/context.h index 56b31dd84..e16c8f3d0 100644 --- a/vita3k/np/include/np/trophy/context.h +++ b/vita3k/np/include/np/trophy/context.h @@ -17,16 +17,16 @@ #pragma once +#include #include #include -#include #include #include struct IOState; -namespace emu::np::trophy { +namespace np::trophy { using ContextHandle = std::int32_t; @@ -74,7 +74,7 @@ struct Context { bool load_trophy_progress_file(const SceUID &progress_input_file); bool init_info_from_trp(); - bool unlock_trophy(std::int32_t id, emu::np::NpTrophyError *err, const bool force_unlock = false); + bool unlock_trophy(std::int32_t id, np::NpTrophyError *err, const bool force_unlock = false); const int total_trophy_unlocked(); bool get_trophy_description(const std::int32_t id, std::string &name, std::string &detail); @@ -83,4 +83,4 @@ struct Context { const std::string &output_progress_path); }; -} // namespace emu::np::trophy +} // namespace np::trophy diff --git a/vita3k/np/include/np/trophy/trp_parser.h b/vita3k/np/include/np/trophy/trp_parser.h index 174b0059e..d9c2efaaa 100644 --- a/vita3k/np/include/np/trophy/trp_parser.h +++ b/vita3k/np/include/np/trophy/trp_parser.h @@ -22,7 +22,7 @@ #include #include -namespace emu::np::trophy { +namespace np::trophy { struct TRPEntry { std::string filename; @@ -48,4 +48,4 @@ struct TRPFile { const std::int32_t search_file(const char *name); }; -} // namespace emu::np::trophy +} // namespace np::trophy diff --git a/vita3k/np/src/init.cpp b/vita3k/np/src/init.cpp index 89558d847..caf666349 100644 --- a/vita3k/np/src/init.cpp +++ b/vita3k/np/src/init.cpp @@ -19,7 +19,7 @@ #include #include -bool init(NpState &state, const emu::np::CommunicationID *comm_id) { +bool init(NpState &state, const np::CommunicationID *comm_id) { state.inited = true; if (comm_id) { diff --git a/vita3k/np/src/trophy/context.cpp b/vita3k/np/src/trophy/context.cpp index 4fd39d047..4268652c6 100644 --- a/vita3k/np/src/trophy/context.cpp +++ b/vita3k/np/src/trophy/context.cpp @@ -5,11 +5,10 @@ #include #include -#include #include #include -namespace emu::np::trophy { +namespace np::trophy { Context::Context(const CommunicationID &comm_id, IOState &io, const SceUID trophy_stream, const std::string &output_progress_path) : comm_id(comm_id) @@ -27,7 +26,7 @@ Context::Context(const CommunicationID &comm_id, IOState &io, const SceUID troph #define SET_TROPHY_BIT(arr, bit) arr[bit >> 5] |= (1 << (bit & 31)) -static bool read_trophy_entry_to_buffer(emu::np::trophy::TRPFile &trophy_file, const char *fname, std::string &buffer) { +static bool read_trophy_entry_to_buffer(np::trophy::TRPFile &trophy_file, const char *fname, std::string &buffer) { // Read the trophy config const std::int32_t eidx = trophy_file.search_file(fname); @@ -85,20 +84,20 @@ bool Context::init_info_from_trp() { } if (type == "P") { - trophy_kinds[id] = emu::np::trophy::TrophyType::PLATINUM; + trophy_kinds[id] = np::trophy::TrophyType::PLATINUM; platinum_trophy_id = id; } if (type == "G") { - trophy_kinds[id] = emu::np::trophy::TrophyType::GOLD; + trophy_kinds[id] = np::trophy::TrophyType::GOLD; } if (type == "S") { - trophy_kinds[id] = emu::np::trophy::TrophyType::SILVER; + trophy_kinds[id] = np::trophy::TrophyType::SILVER; } if (type == "B") { - trophy_kinds[id] = emu::np::trophy::TrophyType::BRONZE; + trophy_kinds[id] = np::trophy::TrophyType::BRONZE; } trophy_count++; @@ -174,18 +173,18 @@ bool Context::load_trophy_progress_file(const SceUID &progress_input_file) { return true; } -bool Context::unlock_trophy(std::int32_t id, emu::np::NpTrophyError *err, const bool force_unlock) { - if (id < 0 || id >= emu::np::trophy::MAX_TROPHIES || trophy_kinds[id] == emu::np::trophy::TrophyType::INVALID) { +bool Context::unlock_trophy(std::int32_t id, np::NpTrophyError *err, const bool force_unlock) { + if (id < 0 || id >= np::trophy::MAX_TROPHIES || trophy_kinds[id] == np::trophy::TrophyType::INVALID) { if (err) { - *err = emu::np::NpTrophyError::TROPHY_ID_INVALID; + *err = np::NpTrophyError::TROPHY_ID_INVALID; } return false; } - if (trophy_kinds[id] == emu::np::trophy::TrophyType::PLATINUM && !force_unlock) { + if (trophy_kinds[id] == np::trophy::TrophyType::PLATINUM && !force_unlock) { if (err) { - *err = emu::np::NpTrophyError::TROPHY_PLATINUM_IS_UNBREAKABLE; + *err = np::NpTrophyError::TROPHY_PLATINUM_IS_UNBREAKABLE; } return false; @@ -193,7 +192,7 @@ bool Context::unlock_trophy(std::int32_t id, emu::np::NpTrophyError *err, const if (trophy_progress[id >> 5] & (1 << (id & 31))) { if (err) { - *err = emu::np::NpTrophyError::TROPHY_ALREADY_UNLOCKED; + *err = np::NpTrophyError::TROPHY_ALREADY_UNLOCKED; } return false; @@ -202,7 +201,7 @@ bool Context::unlock_trophy(std::int32_t id, emu::np::NpTrophyError *err, const SET_TROPHY_BIT(trophy_progress, id); if (err) { - *err = emu::np::NpTrophyError::TROPHY_ERROR_NONE; + *err = np::NpTrophyError::TROPHY_ERROR_NONE; } save_trophy_progress_file(); @@ -265,21 +264,21 @@ bool Context::get_trophy_description(const std::int32_t id, std::string &name, s return false; } -} // namespace emu::np::trophy +} // namespace np::trophy -emu::np::trophy::ContextHandle create_trophy_context(NpState &np, IOState &io, const std::string &pref_path, - const emu::np::CommunicationID *custom_comm, const std::uint32_t lang, emu::np::NpTrophyError *error) { +np::trophy::ContextHandle create_trophy_context(NpState &np, IOState &io, const std::string &pref_path, + const np::CommunicationID *custom_comm, const std::uint32_t lang, np::NpTrophyError *error) { if (!custom_comm) { custom_comm = &np.comm_id; } if (error) - *error = emu::np::NpTrophyError::TROPHY_ERROR_NONE; + *error = np::NpTrophyError::TROPHY_ERROR_NONE; #define TROPHY_RET_ERROR(err) \ if (error) \ - *error = emu::np::NpTrophyError::err; \ - return emu::np::trophy::INVALID_CONTEXT_HANDLE + *error = np::NpTrophyError::err; \ + return np::trophy::INVALID_CONTEXT_HANDLE // Check if a context has already been created for this communication ID for (std::size_t i = 0; i < np.trophy_state.contexts.size(); i++) { @@ -306,7 +305,7 @@ emu::np::trophy::ContextHandle create_trophy_context(NpState &np, IOState &io, c trophy_progress_save_file += "TROPUSR.DAT"; const SceUID trophy_progress_file_inp = open_file(io, trophy_progress_save_file.c_str(), SCE_O_RDONLY, pref_path, "create_trophy_context"); - emu::np::trophy::Context *new_context = nullptr; + np::trophy::Context *new_context = nullptr; // Yesss, we can now go fully creative // Check for free slot first @@ -324,7 +323,7 @@ emu::np::trophy::ContextHandle create_trophy_context(NpState &np, IOState &io, c if (!new_context) { // Yikes. Create new one. np.trophy_state.contexts.emplace_back(*custom_comm, io, trophy_file, trophy_progress_save_file); - np.trophy_state.contexts.back().id = static_cast(np.trophy_state.contexts.size()); + np.trophy_state.contexts.back().id = static_cast(np.trophy_state.contexts.size()); new_context = &np.trophy_state.contexts.back(); new_context->pref_path = pref_path; @@ -345,16 +344,16 @@ emu::np::trophy::ContextHandle create_trophy_context(NpState &np, IOState &io, c return new_context->id; } -emu::np::trophy::Context *get_trophy_context(NpTrophyState &state, const emu::np::trophy::ContextHandle handle) { - if (handle < 0 || handle > static_cast(state.contexts.size())) { +np::trophy::Context *get_trophy_context(NpTrophyState &state, const np::trophy::ContextHandle handle) { + if (handle < 0 || handle > static_cast(state.contexts.size())) { return nullptr; } return &state.contexts[handle - 1]; } -bool destroy_trophy_context(NpTrophyState &state, const emu::np::trophy::ContextHandle handle) { - if (handle < 0 || handle > static_cast(state.contexts.size())) { +bool destroy_trophy_context(NpTrophyState &state, const np::trophy::ContextHandle handle) { + if (handle < 0 || handle > static_cast(state.contexts.size())) { return false; } diff --git a/vita3k/np/src/trophy/trp_parser.cpp b/vita3k/np/src/trophy/trp_parser.cpp index fa7b0e003..0f6d287d9 100644 --- a/vita3k/np/src/trophy/trp_parser.cpp +++ b/vita3k/np/src/trophy/trp_parser.cpp @@ -22,7 +22,7 @@ #include -namespace emu::np::trophy { +namespace np::trophy { static constexpr std::uint32_t NP_TRP_HEADER_MAGIC = 0x004DA2DC; @@ -139,4 +139,4 @@ const std::int32_t TRPFile::search_file(const char *name) { return -1; } -} // namespace emu::np::trophy +} // namespace np::trophy diff --git a/vita3k/renderer/CMakeLists.txt b/vita3k/renderer/CMakeLists.txt index 0531406fb..515ae0393 100644 --- a/vita3k/renderer/CMakeLists.txt +++ b/vita3k/renderer/CMakeLists.txt @@ -54,6 +54,6 @@ add_library( ) target_include_directories(renderer PUBLIC include) -target_link_libraries(renderer PUBLIC crypto shader glutil threads config vita-headers util ${RENDERER_VULKAN_LIBRARIES}) +target_link_libraries(renderer PUBLIC crypto shader glutil threads config util ${RENDERER_VULKAN_LIBRARIES}) target_link_libraries(renderer PRIVATE sdl2 stb ffmpeg) diff --git a/vita3k/renderer/include/renderer/functions.h b/vita3k/renderer/include/renderer/functions.h index c9498413f..1413dd231 100644 --- a/vita3k/renderer/include/renderer/functions.h +++ b/vita3k/renderer/include/renderer/functions.h @@ -1,7 +1,5 @@ #pragma once -#include -#include #include #include @@ -10,10 +8,6 @@ struct MemState; struct FeatureState; struct Config; -namespace emu { -struct SceGxmBlendInfo; -} - namespace renderer { struct Context; struct FragmentProgram; @@ -21,7 +15,7 @@ struct RenderTarget; struct State; struct VertexProgram; -bool create(std::unique_ptr &fp, State &state, const SceGxmProgram &program, const emu::SceGxmBlendInfo *blend, GXPPtrMap &gxp_ptr_map, const char *base_path, const char *title_id); +bool create(std::unique_ptr &fp, State &state, const SceGxmProgram &program, const SceGxmBlendInfo *blend, GXPPtrMap &gxp_ptr_map, const char *base_path, const char *title_id); bool create(std::unique_ptr &vp, State &state, const SceGxmProgram &program, GXPPtrMap &gxp_ptr_map, const char *base_path, const char *title_id); void finish(State &state, Context &context); @@ -75,7 +69,7 @@ void set_stencil_func(State &state, Context *ctx, GxmContextState *gxm_context, void set_stencil_ref(State &state, Context *ctx, GxmContextState *gxm_context, bool is_front, unsigned char sref); void set_program(State &state, Context *ctx, GxmContextState *gxm_context, Ptr program, const bool is_fragment); void set_cull_mode(State &state, Context *ctx, GxmContextState *gxm_context, SceGxmCullMode cull); -void set_fragment_texture(State &state, Context *ctx, GxmContextState *gxm_context, const std::uint32_t tex_index, const emu::SceGxmTexture tex); +void set_fragment_texture(State &state, Context *ctx, GxmContextState *gxm_context, const std::uint32_t tex_index, const SceGxmTexture tex); void set_viewport(State &state, Context *ctx, GxmContextState *gxm_context, float xOffset, float yOffset, float zOffset, float xScale, float yScale, float zScale); void set_viewport_enable(State &state, Context *ctx, GxmContextState *gxm_context, SceGxmViewportMode enable); void set_region_clip(State &state, Context *ctx, GxmContextState *gxm_context, SceGxmRegionClipMode mode, unsigned int xMin, unsigned int xMax, unsigned int yMin, unsigned int yMax); @@ -83,7 +77,7 @@ void set_two_sided_enable(State &state, Context *ctx, GxmContextState *gxm_conte void set_uniform(State &state, Context *ctx, const bool is_vertex_uniform, const SceGxmProgramParameter *parameter, const void *data); void set_uniform_buffer(State &state, Context *ctx, const bool is_vertex_uniform, const int block_num, const std::uint16_t buffer_size, const void *data); -void set_context(State &state, Context *ctx, GxmContextState *gxm_context, RenderTarget *target, emu::SceGxmColorSurface *color_surface, emu::SceGxmDepthStencilSurface *depth_stencil_surface); +void set_context(State &state, Context *ctx, GxmContextState *gxm_context, RenderTarget *target, SceGxmColorSurface *color_surface, SceGxmDepthStencilSurface *depth_stencil_surface); void set_vertex_stream(State &state, Context *ctx, GxmContextState *gxm_context, const std::size_t index, const std::size_t data_len, const void *data); void draw(State &state, Context *ctx, GxmContextState *gxm_context, SceGxmPrimitiveType prim_type, SceGxmIndexFormat index_type, const void *index_data, const std::uint32_t index_count); void sync_surface_data(State &state, Context *ctx, GxmContextState *gxm_context); @@ -146,7 +140,7 @@ namespace texture { void palette_texture_to_rgba_4(uint32_t *dst, const uint8_t *src, size_t width, size_t height, const uint32_t *palette); void palette_texture_to_rgba_8(uint32_t *dst, const uint8_t *src, size_t width, size_t height, const uint32_t *palette); void yuv420_texture_to_rgb(uint8_t *dst, const uint8_t *src, size_t width, size_t height); -const uint32_t *get_texture_palette(const emu::SceGxmTexture &texture, const MemState &mem); +const uint32_t *get_texture_palette(const SceGxmTexture &texture, const MemState &mem); /** * \brief Decompresses all the blocks of a DXT compressed texture and stores the resulting pixels in 'image'. @@ -164,7 +158,7 @@ void decompress_bc_swizz_image(std::uint32_t width, std::uint32_t height, const void swizzled_texture_to_linear_texture(uint8_t *dest, const uint8_t *src, uint16_t width, uint16_t height, uint8_t bits_per_pixel); void tiled_texture_to_linear_texture(uint8_t *dest, const uint8_t *src, uint16_t width, uint16_t height, uint8_t bits_per_pixel); -void cache_and_bind_texture(TextureCacheState &cache, const emu::SceGxmTexture &gxm_texture, const MemState &mem); +void cache_and_bind_texture(TextureCacheState &cache, const SceGxmTexture &gxm_texture, const MemState &mem); size_t bits_per_pixel(SceGxmTextureBaseFormat base_format); bool is_compressed_format(SceGxmTextureBaseFormat base_format, std::uint32_t width, std::uint32_t height, size_t &source_size); diff --git a/vita3k/renderer/include/renderer/gl/functions.h b/vita3k/renderer/include/renderer/gl/functions.h index 707208efa..136aef066 100644 --- a/vita3k/renderer/include/renderer/gl/functions.h +++ b/vita3k/renderer/include/renderer/gl/functions.h @@ -21,10 +21,8 @@ #include #include -#include "state.h" -#include "types.h" - -#include +#include +#include #include #include @@ -53,7 +51,7 @@ bool set_uniform_buffer(GLContext &context, const bool vertex_shader, const int bool create(WindowPtr &window, std::unique_ptr &state); bool create(std::unique_ptr &context); bool create(std::unique_ptr &rt, const SceGxmRenderTargetParams ¶ms, const FeatureState &features); -bool create(std::unique_ptr &fp, GLState &state, const SceGxmProgram &program, const emu::SceGxmBlendInfo *blend, GXPPtrMap &gxp_ptr_map, const char *base_path, const char *title_id); +bool create(std::unique_ptr &fp, GLState &state, const SceGxmProgram &program, const SceGxmBlendInfo *blend, GXPPtrMap &gxp_ptr_map, const char *base_path, const char *title_id); bool create(std::unique_ptr &vp, GLState &state, const SceGxmProgram &program, GXPPtrMap &gxp_ptr_map, const char *base_path, const char *title_id); bool sync_state(GLContext &context, const GxmContextState &state, const MemState &mem, bool enable_texture_cache, bool hardware_flip); void sync_rendertarget(const GLRenderTarget &rt); @@ -94,9 +92,9 @@ GLboolean attribute_format_normalised(SceGxmAttributeFormat format); namespace texture { // Textures. -void bind_texture(GLTextureCacheState &cache, const emu::SceGxmTexture &gxm_texture, const MemState &mem); -void configure_bound_texture(const emu::SceGxmTexture &gxm_texture); -void upload_bound_texture(const emu::SceGxmTexture &gxm_texture, const MemState &mem); +void bind_texture(GLTextureCacheState &cache, const SceGxmTexture &gxm_texture, const MemState &mem); +void configure_bound_texture(const SceGxmTexture &gxm_texture); +void upload_bound_texture(const SceGxmTexture &gxm_texture, const MemState &mem); // Texture formats. const GLint *translate_swizzle(SceGxmTextureFormat fmt); diff --git a/vita3k/renderer/include/renderer/gl/types.h b/vita3k/renderer/include/renderer/gl/types.h index c3507fb58..3e03676ef 100644 --- a/vita3k/renderer/include/renderer/gl/types.h +++ b/vita3k/renderer/include/renderer/gl/types.h @@ -22,8 +22,6 @@ #include #include -#include - #include #include diff --git a/vita3k/renderer/include/renderer/texture_cache_state.h b/vita3k/renderer/include/renderer/texture_cache_state.h index c032c4978..969822b6d 100644 --- a/vita3k/renderer/include/renderer/texture_cache_state.h +++ b/vita3k/renderer/include/renderer/texture_cache_state.h @@ -3,7 +3,6 @@ #include #include -#include #include #include @@ -16,7 +15,7 @@ constexpr size_t TextureCacheSize = 1024; typedef uint64_t TextureCacheTimestamp; typedef uint32_t TextureCacheHash; -typedef std::array TextureCacheGxmTextures; +typedef std::array TextureCacheGxmTextures; typedef std::array TextureCacheTimestamps; typedef std::array TextureCacheHashes; typedef std::function TextureCacheStateSelectCallback; diff --git a/vita3k/renderer/include/renderer/types.h b/vita3k/renderer/include/renderer/types.h index a5b6a57ca..4d3ad3b75 100644 --- a/vita3k/renderer/include/renderer/types.h +++ b/vita3k/renderer/include/renderer/types.h @@ -4,8 +4,7 @@ #include #include #include - -#include +#include #include #include @@ -17,6 +16,8 @@ static constexpr auto DEFAULT_RES_WIDTH = 960; static constexpr auto DEFAULT_RES_HEIGHT = 544; +struct SceGxmProgram; + // Copy from host/window.h for the moment. struct SDL_Window; typedef std::shared_ptr WindowPtr; diff --git a/vita3k/renderer/src/creation.cpp b/vita3k/renderer/src/creation.cpp index d7528abfa..9b0f273c6 100644 --- a/vita3k/renderer/src/creation.cpp +++ b/vita3k/renderer/src/creation.cpp @@ -82,7 +82,7 @@ COMMAND(handle_destroy_render_target) { } // Client -bool create(std::unique_ptr &fp, State &state, const SceGxmProgram &program, const emu::SceGxmBlendInfo *blend, GXPPtrMap &gxp_ptr_map, const char *base_path, const char *title_id) { +bool create(std::unique_ptr &fp, State &state, const SceGxmProgram &program, const SceGxmBlendInfo *blend, GXPPtrMap &gxp_ptr_map, const char *base_path, const char *title_id) { switch (state.current_backend) { case Backend::OpenGL: { return gl::create(fp, static_cast(state), program, blend, gxp_ptr_map, base_path, title_id); diff --git a/vita3k/renderer/src/gl/load_shaders.cpp b/vita3k/renderer/src/gl/load_shaders.cpp index 9ecfe8c4d..e426e5413 100644 --- a/vita3k/renderer/src/gl/load_shaders.cpp +++ b/vita3k/renderer/src/gl/load_shaders.cpp @@ -71,11 +71,11 @@ static void dump_missing_shader(const char *hash, const char *extension, const S std::string load_shader(const SceGxmProgram &program, const FeatureState &features, const char *base_path, const char *title_id) { const Sha256Hash hash_bytes = sha256(&program, program.size); - auto shader_type_to_str = [](emu::SceGxmProgramType type) { - return type == emu::Vertex ? "vert" : type == emu::Fragment ? "frag" : "unknown"; + auto shader_type_to_str = [](SceGxmProgramType type) { + return type == Vertex ? "vert" : type == Fragment ? "frag" : "unknown"; }; - emu::SceGxmProgramType program_type = program.get_type(); + SceGxmProgramType program_type = program.get_type(); const char *shader_type_str = shader_type_to_str(program_type); const Sha256HashText hash_text = hex(hash_bytes); diff --git a/vita3k/renderer/src/gl/renderer.cpp b/vita3k/renderer/src/gl/renderer.cpp index 5ba285665..a8760a969 100644 --- a/vita3k/renderer/src/gl/renderer.cpp +++ b/vita3k/renderer/src/gl/renderer.cpp @@ -29,11 +29,11 @@ bool init(GLTextureCacheState &cache) { }; cache.configure_texture_callback = [](const std::size_t index, const void *texture) { - configure_bound_texture(*reinterpret_cast(texture)); + configure_bound_texture(*reinterpret_cast(texture)); }; cache.upload_texture_callback = [](const std::size_t index, const void *texture, const MemState &mem) { - upload_bound_texture(*reinterpret_cast(texture), mem); + upload_bound_texture(*reinterpret_cast(texture), mem); }; return cache.textures.init(glGenTextures, glDeleteTextures); @@ -351,7 +351,7 @@ bool create(std::unique_ptr &rt, const SceGxmRenderTargetParams &p return true; } -bool create(std::unique_ptr &fp, GLState &state, const SceGxmProgram &program, const emu::SceGxmBlendInfo *blend, GXPPtrMap &gxp_ptr_map, const char *base_path, const char *title_id) { +bool create(std::unique_ptr &fp, GLState &state, const SceGxmProgram &program, const SceGxmBlendInfo *blend, GXPPtrMap &gxp_ptr_map, const char *base_path, const char *title_id) { R_PROFILE(__func__); fp = std::make_unique(); diff --git a/vita3k/renderer/src/gl/sync_state.cpp b/vita3k/renderer/src/gl/sync_state.cpp index 90e471a45..80d58ddd4 100644 --- a/vita3k/renderer/src/gl/sync_state.cpp +++ b/vita3k/renderer/src/gl/sync_state.cpp @@ -249,7 +249,7 @@ void sync_front_depth_bias(const GxmContextState &state) { void sync_texture(GLContext &context, const GxmContextState &state, const MemState &mem, std::size_t index, bool enable_texture_cache) { - const emu::SceGxmTexture &texture = state.fragment_textures[index]; + const SceGxmTexture &texture = state.fragment_textures[index]; if (texture.data_addr == 0) { LOG_WARN("Texture has null data."); @@ -286,7 +286,7 @@ void sync_blending(const GxmContextState &state, const MemState &mem) { void sync_vertex_attributes(GLContext &context, const GxmContextState &state, const MemState &mem) { // Vertex attributes. const SceGxmVertexProgram &vertex_program = *state.vertex_program.get(mem); - for (const emu::SceGxmVertexAttribute &attribute : vertex_program.attributes) { + for (const SceGxmVertexAttribute &attribute : vertex_program.attributes) { const SceGxmVertexStream &stream = vertex_program.streams[attribute.streamIndex]; const SceGxmAttributeFormat attribute_format = static_cast(attribute.format); const GLenum type = attribute_format_to_gl_type(attribute_format); diff --git a/vita3k/renderer/src/gl/texture.cpp b/vita3k/renderer/src/gl/texture.cpp index 469207572..4601e1e20 100644 --- a/vita3k/renderer/src/gl/texture.cpp +++ b/vita3k/renderer/src/gl/texture.cpp @@ -11,7 +11,7 @@ namespace renderer::gl { namespace texture { -void bind_texture(GLTextureCacheState &cache, const emu::SceGxmTexture &gxm_texture, const MemState &mem) { +void bind_texture(GLTextureCacheState &cache, const SceGxmTexture &gxm_texture, const MemState &mem) { R_PROFILE(__func__); glBindTexture(GL_TEXTURE_2D, cache.textures[0]); @@ -23,7 +23,7 @@ static bool can_texture_be_unswizzled_without_decode(SceGxmTextureBaseFormat fmt return (fmt == SCE_GXM_TEXTURE_BASE_FORMAT_P8 || fmt == SCE_GXM_TEXTURE_BASE_FORMAT_U5U6U5 || fmt == SCE_GXM_TEXTURE_BASE_FORMAT_U1U5U5U5 || fmt == SCE_GXM_TEXTURE_BASE_FORMAT_U8U8U8 || fmt == SCE_GXM_TEXTURE_BASE_FORMAT_U8U8U8U8); } -void configure_bound_texture(const emu::SceGxmTexture &gxm_texture) { +void configure_bound_texture(const SceGxmTexture &gxm_texture) { R_PROFILE(__func__); const SceGxmTextureFormat fmt = gxm::get_format(&gxm_texture); @@ -109,7 +109,7 @@ static size_t decompress_compressed_swizz_texture(SceGxmTextureBaseFormat fmt, v return 0; } -void upload_bound_texture(const emu::SceGxmTexture &gxm_texture, const MemState &mem) { +void upload_bound_texture(const SceGxmTexture &gxm_texture, const MemState &mem) { R_PROFILE(__func__); const SceGxmTextureFormat fmt = gxm::get_format(&gxm_texture); diff --git a/vita3k/renderer/src/renderer.cpp b/vita3k/renderer/src/renderer.cpp index 04cb61762..4f3e3f2b8 100644 --- a/vita3k/renderer/src/renderer.cpp +++ b/vita3k/renderer/src/renderer.cpp @@ -83,7 +83,7 @@ void set_cull_mode(State &state, Context *ctx, GxmContextState *gxm_context, Sce } } -void set_fragment_texture(State &state, Context *ctx, GxmContextState *gxm_context, const std::uint32_t tex_index, const emu::SceGxmTexture tex) { +void set_fragment_texture(State &state, Context *ctx, GxmContextState *gxm_context, const std::uint32_t tex_index, const SceGxmTexture tex) { switch (state.current_backend) { default: renderer::add_state_set_command(ctx, renderer::GXMState::FragmentTexture, tex_index, tex); @@ -125,7 +125,7 @@ void set_two_sided_enable(State &state, Context *ctx, GxmContextState *gxm_conte } } -void set_context(State &state, Context *ctx, GxmContextState *gxm_context, RenderTarget *target, emu::SceGxmColorSurface *color_surface, emu::SceGxmDepthStencilSurface *depth_stencil_surface) { +void set_context(State &state, Context *ctx, GxmContextState *gxm_context, RenderTarget *target, SceGxmColorSurface *color_surface, SceGxmDepthStencilSurface *depth_stencil_surface) { switch (state.current_backend) { default: renderer::add_command(ctx, renderer::CommandOpcode::SetContext, nullptr, target, color_surface, depth_stencil_surface); diff --git a/vita3k/renderer/src/scene.cpp b/vita3k/renderer/src/scene.cpp index 3e372f6a5..539605b24 100644 --- a/vita3k/renderer/src/scene.cpp +++ b/vita3k/renderer/src/scene.cpp @@ -21,8 +21,8 @@ namespace renderer { COMMAND(handle_set_context) { const RenderTarget *rt = helper.pop(); - const emu::SceGxmColorSurface *color_surface = helper.pop(); - const emu::SceGxmDepthStencilSurface *depth_stencil_surface = helper.pop(); + const SceGxmColorSurface *color_surface = helper.pop(); + const SceGxmDepthStencilSurface *depth_stencil_surface = helper.pop(); if (rt) { render_context->current_render_target = rt; diff --git a/vita3k/renderer/src/state_set.cpp b/vita3k/renderer/src/state_set.cpp index 0b35ed2a6..bf1516c1e 100644 --- a/vita3k/renderer/src/state_set.cpp +++ b/vita3k/renderer/src/state_set.cpp @@ -311,7 +311,7 @@ COMMAND_SET_STATE(stencil_ref) { COMMAND_SET_STATE(fragment_texture) { const std::uint32_t texture_index = helper.pop(); - emu::SceGxmTexture texture = helper.pop(); + SceGxmTexture texture = helper.pop(); state->fragment_textures[texture_index] = texture; switch (renderer.current_backend) { diff --git a/vita3k/renderer/src/texture_cache.cpp b/vita3k/renderer/src/texture_cache.cpp index 08467c2bb..d9b7cc997 100644 --- a/vita3k/renderer/src/texture_cache.cpp +++ b/vita3k/renderer/src/texture_cache.cpp @@ -27,13 +27,13 @@ static TextureCacheHash hash_data(const void *data, size_t size) { #endif } -static TextureCacheHash hash_palette_data(const emu::SceGxmTexture &texture, size_t count, const MemState &mem) { +static TextureCacheHash hash_palette_data(const SceGxmTexture &texture, size_t count, const MemState &mem) { const uint32_t *const palette_bytes = get_texture_palette(texture, mem); const TextureCacheHash palette_hash = hash_data(palette_bytes, count * sizeof(uint32_t)); return palette_hash; } -static TextureCacheHash hash_texture_data(const emu::SceGxmTexture &texture, const MemState &mem) { +static TextureCacheHash hash_texture_data(const SceGxmTexture &texture, const MemState &mem) { R_PROFILE(__func__); const SceGxmTextureFormat format = gxm::get_format(&texture); @@ -73,7 +73,7 @@ static size_t find_lru(const TextureCacheTimestamps ×tamps, TextureCacheTim return oldest_index; } -void cache_and_bind_texture(TextureCacheState &cache, const emu::SceGxmTexture &gxm_texture, const MemState &mem) { +void cache_and_bind_texture(TextureCacheState &cache, const SceGxmTexture &gxm_texture, const MemState &mem) { R_PROFILE(__func__); size_t index = 0; @@ -86,7 +86,7 @@ void cache_and_bind_texture(TextureCacheState &cache, const emu::SceGxmTexture & // Try to find GXM texture in cache. size_t cached_gxm_texture_index = -1; for (size_t a = 0; a < cache.used; a++) { - if (memcmp(&cache.gxm_textures[a], &gxm_texture, sizeof(emu::SceGxmTexture)) == 0) { + if (memcmp(&cache.gxm_textures[a], &gxm_texture, sizeof(SceGxmTexture)) == 0) { cached_gxm_texture_index = a; break; } diff --git a/vita3k/renderer/src/texture_format.cpp b/vita3k/renderer/src/texture_format.cpp index 6ed62d583..c5a859a32 100644 --- a/vita3k/renderer/src/texture_format.cpp +++ b/vita3k/renderer/src/texture_format.cpp @@ -19,7 +19,8 @@ #include #include #include -#include + +#include namespace renderer::texture { diff --git a/vita3k/renderer/src/texture_palette.cpp b/vita3k/renderer/src/texture_palette.cpp index f59213428..da01b73de 100644 --- a/vita3k/renderer/src/texture_palette.cpp +++ b/vita3k/renderer/src/texture_palette.cpp @@ -38,7 +38,7 @@ void palette_texture_to_rgba_8(uint32_t *dst, const uint8_t *src, size_t width, } } -const uint32_t *get_texture_palette(const emu::SceGxmTexture &texture, const MemState &mem) { +const uint32_t *get_texture_palette(const SceGxmTexture &texture, const MemState &mem) { const Ptr palette_ptr(texture.palette_addr << 6); return palette_ptr.get(mem); } diff --git a/vita3k/rtc/CMakeLists.txt b/vita3k/rtc/CMakeLists.txt index 23a136af2..a3b760b4e 100644 --- a/vita3k/rtc/CMakeLists.txt +++ b/vita3k/rtc/CMakeLists.txt @@ -6,4 +6,4 @@ src/rtc.cpp ) target_include_directories(rtc PUBLIC include) -target_link_libraries(rtc PUBLIC util vita-headers) +target_link_libraries(rtc PUBLIC util) diff --git a/vita3k/rtc/include/rtc/rtc.h b/vita3k/rtc/include/rtc/rtc.h index 59ebe84a8..0f0b022a6 100644 --- a/vita3k/rtc/include/rtc/rtc.h +++ b/vita3k/rtc/include/rtc/rtc.h @@ -17,7 +17,7 @@ #pragma once -#include +#include #include #include @@ -36,6 +36,26 @@ constexpr auto VITA_CLOCKS_PER_SEC = 1'000'000; using VitaClocks = std::chrono::duration>; +enum SceRtcErrorCode { + SCE_RTC_ERROR_INVALID_VALUE = 0x80251000, + SCE_RTC_ERROR_INVALID_POINTER = 0x80251001, + SCE_RTC_ERROR_NOT_INITIALIZED = 0x80251002, + SCE_RTC_ERROR_ALREADY_REGISTERD = 0x80251003, + SCE_RTC_ERROR_NOT_FOUND = 0x80251004, + SCE_RTC_ERROR_BAD_PARSE = 0x80251080, + SCE_RTC_ERROR_INVALID_YEAR = 0x80251081, + SCE_RTC_ERROR_INVALID_MONTH = 0x80251082, + SCE_RTC_ERROR_INVALID_DAY = 0x80251083, + SCE_RTC_ERROR_INVALID_HOUR = 0x80251084, + SCE_RTC_ERROR_INVALID_MINUTE = 0x80251085, + SCE_RTC_ERROR_INVALID_SECOND = 0x80251086, + SCE_RTC_ERROR_INVALID_MICROSECOND = 0x80251087 +}; + +struct SceRtcTick { + SceUInt64 tick; +}; + std::uint64_t rtc_base_ticks(); std::uint64_t rtc_get_ticks(uint64_t base_tick); #ifdef WIN32 diff --git a/vita3k/shader/CMakeLists.txt b/vita3k/shader/CMakeLists.txt index 1fa7ff077..de818e91e 100644 --- a/vita3k/shader/CMakeLists.txt +++ b/vita3k/shader/CMakeLists.txt @@ -30,7 +30,7 @@ add_library( ) target_include_directories(shader PUBLIC include) -target_link_libraries(shader PUBLIC features gxm util microprofile spirv-cross-glsl vita-headers) +target_link_libraries(shader PUBLIC features gxm util microprofile spirv-cross-glsl) target_link_libraries(shader PRIVATE SPIRV) add_executable( diff --git a/vita3k/shader/include/shader/spirv_recompiler.h b/vita3k/shader/include/shader/spirv_recompiler.h index 74e23ba29..ba5f5423b 100644 --- a/vita3k/shader/include/shader/spirv_recompiler.h +++ b/vita3k/shader/include/shader/spirv_recompiler.h @@ -1,7 +1,6 @@ #pragma once #include -#include #include #include diff --git a/vita3k/shader/src/spirv_recompiler.cpp b/vita3k/shader/src/spirv_recompiler.cpp index 26d7b9e60..7b378eae6 100644 --- a/vita3k/shader/src/spirv_recompiler.cpp +++ b/vita3k/shader/src/spirv_recompiler.cpp @@ -688,7 +688,7 @@ static spv::Id create_uniform_block(spv::Builder &b, const FeatureState &feature } static SpirvShaderParameters create_parameters(spv::Builder &b, const SceGxmProgram &program, utils::SpirvUtilFunctions &utils, - const FeatureState &features, TranslationState &translation_state, emu::SceGxmProgramType program_type, NonDependentTextureQueryCallInfos &texture_queries) { + const FeatureState &features, TranslationState &translation_state, SceGxmProgramType program_type, NonDependentTextureQueryCallInfos &texture_queries) { SpirvShaderParameters spv_params = {}; const SceGxmProgramParameter *const gxp_parameters = gxp::program_parameters(program); @@ -930,7 +930,7 @@ static SpirvShaderParameters create_parameters(spv::Builder &b, const SceGxmProg } } - if (program_type == emu::SceGxmProgramType::Vertex && features.hardware_flip) { + if (program_type == SceGxmProgramType::Vertex && features.hardware_flip) { // Create variable that helps us do flipping // TODO: Not emit this on Vulkan or DirectX spv::Id f32 = b.makeFloatType(32); @@ -940,7 +940,7 @@ static SpirvShaderParameters create_parameters(spv::Builder &b, const SceGxmProg translation_state.flip_vec_id = flip_vec; } - if (program_type == emu::SceGxmProgramType::Fragment) { + if (program_type == SceGxmProgramType::Fragment) { create_fragment_inputs(b, spv_params, utils, features, translation_state, texture_queries, samplers, program); } @@ -1094,7 +1094,7 @@ static spv::Function *make_vert_finalize_function(spv::Builder &b, const SpirvSh static SpirvCode convert_gxp_to_spirv(const SceGxmProgram &program, const std::string &shader_hash, const FeatureState &features, TranslationState &translation_state, bool force_shader_debug, std::string *spirv_dump, std::string *disasm_dump) { SpirvCode spirv; - emu::SceGxmProgramType program_type = program.get_type(); + SceGxmProgramType program_type = program.get_type(); spv::SpvBuildLogger spv_logger; spv::Builder b(SPV_VERSION, 0x1337 << 12, &spv_logger); @@ -1116,11 +1116,11 @@ static SpirvCode convert_gxp_to_spirv(const SceGxmProgram &program, const std::s default: LOG_ERROR("Unknown GXM program type"); // fallthrough - case emu::Vertex: + case Vertex: entry_point_name = "main_vs"; execution_model = spv::ExecutionModelVertex; break; - case emu::Fragment: + case Fragment: entry_point_name = "main_fs"; execution_model = spv::ExecutionModelFragment; break; @@ -1152,7 +1152,7 @@ static SpirvCode convert_gxp_to_spirv(const SceGxmProgram &program, const std::s generate_shader_body(b, parameters, program, features, utils, end_hook_func, texture_queries); // Execution modes - if (program_type == emu::SceGxmProgramType::Fragment) { + if (program_type == SceGxmProgramType::Fragment) { b.addExecutionMode(spv_func_main, spv::ExecutionModeOriginLowerLeft); if (program.is_native_color() && features.should_use_shader_interlock()) { diff --git a/vita3k/touch/CMakeLists.txt b/vita3k/touch/CMakeLists.txt index c1a90aa0b..91efb65d6 100644 --- a/vita3k/touch/CMakeLists.txt +++ b/vita3k/touch/CMakeLists.txt @@ -6,4 +6,4 @@ add_library( ) target_include_directories(touch PUBLIC include) -target_link_libraries(touch PUBLIC host vita-headers) +target_link_libraries(touch PUBLIC host) diff --git a/vita3k/touch/include/touch/touch.h b/vita3k/touch/include/touch/touch.h index 55af12b9b..e5675dce6 100644 --- a/vita3k/touch/include/touch/touch.h +++ b/vita3k/touch/include/touch/touch.h @@ -18,9 +18,54 @@ #pragma once #include +#include + +#define SCE_TOUCH_MAX_REPORT 8 struct SDL_TouchFingerEvent; +enum SceTouchErrorCode { + SCE_TOUCH_ERROR_INVALID_ARG = 0x80350001, + SCE_TOUCH_ERROR_PRIV_REQUIRED = 0x80350002, + SCE_TOUCH_ERROR_FATAL = 0x803500FF +}; + +enum SceTouchPortType { + SCE_TOUCH_PORT_FRONT = 0, + SCE_TOUCH_PORT_BACK = 1, + SCE_TOUCH_PORT_MAX_NUM = 2 +}; + +struct SceTouchReport { + SceUInt8 id; + SceUInt8 force; + SceInt16 x; + SceInt16 y; + SceUInt8 reserved[8]; + SceUInt16 info; +}; + +struct SceTouchPanelInfo { + SceInt16 minAaX; + SceInt16 minAaY; + SceInt16 maxAaX; + SceInt16 maxAaY; + SceInt16 minDispX; + SceInt16 minDispY; + SceInt16 maxDispX; + SceInt16 maxDispY; + SceUInt8 minForce; + SceUInt8 maxForce; + SceUInt8 reserved[30]; +}; + +struct SceTouchData { + SceUInt64 timeStamp; + SceUInt32 status; + SceUInt32 reportNum; + SceTouchReport report[SCE_TOUCH_MAX_REPORT]; +}; + int handle_touch_event(SDL_TouchFingerEvent &finger); int toggle_touchscreen(); int peek_touch(const HostState &host, const SceUInt32 &port, SceTouchData *pData, SceUInt32 count); diff --git a/vita3k/touch/src/touch.cpp b/vita3k/touch/src/touch.cpp index c957e6af2..d52c237e7 100644 --- a/vita3k/touch/src/touch.cpp +++ b/vita3k/touch/src/touch.cpp @@ -17,9 +17,6 @@ #include -#include -#include - #include #include diff --git a/vita3k/util/CMakeLists.txt b/vita3k/util/CMakeLists.txt index 3619e4bf2..477982cca 100644 --- a/vita3k/util/CMakeLists.txt +++ b/vita3k/util/CMakeLists.txt @@ -1,20 +1,22 @@ add_library( - util - STATIC - include/util/align.h - include/util/bytes.h - include/util/exit_code.h - include/util/exec.h - include/util/find.h - include/util/fs.h - include/util/function_info.h - include/util/lock_and_find.h - include/util/log.h - include/util/preprocessor.h - include/util/resource.h - include/util/string_utils.h - include/util/vector_utils.h - src/util.cpp + util + STATIC + include/util/align.h + include/util/bytes.h + include/util/exit_code.h + include/util/exec.h + include/util/find.h + include/util/fs.h + include/util/function_info.h + include/util/lock_and_find.h + include/util/log.h + include/util/preprocessor.h + include/util/resource.h + include/util/string_utils.h + include/util/system.h + include/util/types.h + include/util/vector_utils.h + src/util.cpp ) target_include_directories(util PUBLIC include) diff --git a/vita3k/util/include/util/system.h b/vita3k/util/include/util/system.h new file mode 100644 index 000000000..5779b1bcb --- /dev/null +++ b/vita3k/util/include/util/system.h @@ -0,0 +1,32 @@ +#pragma once + + +enum SceSystemParamLang { + SCE_SYSTEM_PARAM_LANG_JAPANESE, + SCE_SYSTEM_PARAM_LANG_ENGLISH_US, + SCE_SYSTEM_PARAM_LANG_FRENCH, + SCE_SYSTEM_PARAM_LANG_SPANISH, + SCE_SYSTEM_PARAM_LANG_GERMAN, + SCE_SYSTEM_PARAM_LANG_ITALIAN, + SCE_SYSTEM_PARAM_LANG_DUTCH, + SCE_SYSTEM_PARAM_LANG_PORTUGUESE_PT, + SCE_SYSTEM_PARAM_LANG_RUSSIAN, + SCE_SYSTEM_PARAM_LANG_KOREAN, + SCE_SYSTEM_PARAM_LANG_CHINESE_T, + SCE_SYSTEM_PARAM_LANG_CHINESE_S, + SCE_SYSTEM_PARAM_LANG_FINNISH, + SCE_SYSTEM_PARAM_LANG_SWEDISH, + SCE_SYSTEM_PARAM_LANG_DANISH, + SCE_SYSTEM_PARAM_LANG_NORWEGIAN, + SCE_SYSTEM_PARAM_LANG_POLISH, + SCE_SYSTEM_PARAM_LANG_PORTUGUESE_BR, + SCE_SYSTEM_PARAM_LANG_ENGLISH_GB, + SCE_SYSTEM_PARAM_LANG_TURKISH, + SCE_SYSTEM_PARAM_LANG_MAX_VALUE = 0xFFFFFFFF +}; + +enum SceSystemParamEnterButtonAssign { + SCE_SYSTEM_PARAM_ENTER_BUTTON_CIRCLE, + SCE_SYSTEM_PARAM_ENTER_BUTTON_CROSS, + SCE_SYSTEM_PARAM_ENTER_BUTTON_MAX_VALUE = 0xFFFFFFFF +}; diff --git a/vita3k/util/include/util/types.h b/vita3k/util/include/util/types.h new file mode 100644 index 000000000..cb6d528da --- /dev/null +++ b/vita3k/util/include/util/types.h @@ -0,0 +1,231 @@ +#pragma once + +#include + +/* SCE types */ +typedef int8_t SceChar8; +typedef uint8_t SceUChar8; + +typedef int8_t SceInt8; +typedef uint8_t SceUInt8; + +typedef int16_t SceShort16; +typedef uint16_t SceUShort16; + +typedef int16_t SceInt16; +typedef uint16_t SceUInt16; + +typedef int32_t SceInt32; +typedef uint32_t SceUInt32; + +typedef int32_t SceInt; +typedef uint32_t SceUInt; + +typedef int64_t SceInt64; +typedef uint64_t SceUInt64; + +typedef int64_t SceLong64; +typedef uint64_t SceULong64; + +typedef unsigned int SceSize; +typedef int SceSSize; + +typedef int SceBool; + +enum { + SCE_FALSE, + SCE_TRUE +}; + +typedef float SceFloat; +typedef float SceFloat32; + +typedef double SceDouble; +typedef double SceDouble64; + +typedef signed char SceSByte; +typedef signed char SceSByte8; + +typedef unsigned char SceByte; +typedef unsigned char SceByte8; + +typedef uint16_t SceWChar16; +typedef uint32_t SceWChar32; + +typedef void SceVoid; +typedef void *ScePVoid; + +typedef int SceIntPtr; +typedef unsigned int SceUIntPtr; +typedef SceUIntPtr SceUIntVAddr; + +/* PSP2 Specific types */ +typedef struct SceIVector2 { + SceInt x; + SceInt y; +} SceIVector2; + +typedef struct SceFVector2 { + SceFloat x; + SceFloat y; +} SceFVector2; + +typedef struct SceIVector3 { + SceInt x; + SceInt y; + SceInt z; +} SceIVector3; + +typedef struct SceFVector3 { + SceFloat x; + SceFloat y; + SceFloat z; +} SceFVector3; + +typedef struct SceIVector4 { + SceInt x; + SceInt y; + SceInt z; + SceInt w; +} SceIVector4; + +typedef struct SceUVector4 { + SceUInt x; + SceUInt y; + SceUInt z; + SceUInt w; +} SceUVector4; + +typedef struct SceFVector4 { + SceFloat x; + SceFloat y; + SceFloat z; + SceFloat w; +} SceFVector4; + +typedef struct SceIMatrix2 { + SceIVector2 x; + SceIVector2 y; +} SceIMatrix2; + +typedef struct SceFMatrix2 { + SceFVector2 x; + SceFVector2 y; +} SceFMatrix2; + +typedef struct SceIMatrix3 { + SceIVector3 x; + SceIVector3 y; + SceIVector3 z; +} SceIMatrix3; + +typedef struct SceFMatrix3 { + SceFVector3 x; + SceFVector3 y; + SceFVector3 z; +} SceFMatrix3; + +typedef struct SceIMatrix4 { + SceIVector4 x; + SceIVector4 y; + SceIVector4 z; + SceIVector4 w; +} SceIMatrix4; + +typedef struct SceUMatrix4 { + SceUVector4 x; + SceUVector4 y; + SceUVector4 z; + SceUVector4 w; +} SceUMatrix4; + +typedef struct SceFMatrix4 { + SceFVector4 x; + SceFVector4 y; + SceFVector4 z; + SceFVector4 w; +} SceFMatrix4; + +typedef struct SceFQuaternion { + SceFloat x; + SceFloat y; + SceFloat z; + SceFloat w; +} SceFQuaternion; + +typedef struct SceFColor { + SceFloat r; + SceFloat g; + SceFloat b; + SceFloat a; +} SceFColor; + +typedef struct SceFPlane { + SceFloat a; + SceFloat b; + SceFloat c; + SceFloat d; +} SceFPlane; + +typedef union SceUnion32 { + unsigned int ui; + int i; + unsigned short us[2]; + short s[2]; + unsigned char uc[4]; + char c[4]; + float f; + void *p; +} SceUnion32; + +typedef union SceUnion64 { + SceULong64 ull; + SceLong64 ll; + unsigned int ui[2]; + int i[2]; + unsigned short us[4]; + short s[4]; + unsigned char uc[8]; + char c[8]; + float f[2]; + SceFVector2 fv; + SceIVector2 iv; +} SceUnion64; + +typedef union SceUnion128 { + SceULong64 ull[2]; + SceLong64 ll[2]; + unsigned int ui[4]; + int i[4]; + unsigned short us[8]; + short s[8]; + unsigned char uc[16]; + char c[16]; + float f[4]; + SceFVector4 fv; + SceFQuaternion fq; + SceFPlane fp; + SceFColor fc; + SceIVector4 iv; +} SceUnion128; + +typedef struct SceDateTime { + unsigned short year; + unsigned short month; + unsigned short day; + unsigned short hour; + unsigned short minute; + unsigned short second; + unsigned int microsecond; +} SceDateTime; + +typedef int SceMode; +typedef SceInt64 SceOff; + +typedef int SceUID; + +typedef int ScePID; +#define PSP2_KERNEL_PROCESS_ID_SELF 0 //!< Current running process ID is always 0 + +typedef char* SceName; +#define PSP2_UID_NAMELEN 31 //!< Maximum length for kernel object names