summaryrefslogtreecommitdiff
path: root/include/user/appmgr.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/user/appmgr.h')
-rw-r--r--include/user/appmgr.h86
1 files changed, 57 insertions, 29 deletions
diff --git a/include/user/appmgr.h b/include/user/appmgr.h
index e4ba75e..e912ce5 100644
--- a/include/user/appmgr.h
+++ b/include/user/appmgr.h
@@ -1,6 +1,7 @@
#ifndef _PSP2_APPMGR_H_
#define _PSP2_APPMGR_H_
+#include <psp2/scebase.h>
#include <psp2/types.h>
#include <psp2/apputil.h>
@@ -8,6 +9,8 @@
extern "C" {
#endif
+#define _SCE_APPMGR_VERSION (SCE_PSP2_SDK_VERSION & 0xffff0000)
+
typedef enum SceAppMgrErrorCode {
SCE_APPMGR_ERROR_BUSY = 0x80802000, //!< Busy
SCE_APPMGR_ERROR_STATE = 0x80802013, //!< Invalid state
@@ -40,12 +43,6 @@ typedef enum SceAppMgrInfoBarTransparency {
SCE_APPMGR_INFOBAR_TRANSPARENCY_TRANSLUCENT = 1
} SceAppMgrInfoBarTransparency;
-typedef enum SceAppMgrApplicationMode {
- SCE_APPMGR_APPLICATION_MODE_A = 2, //!< Application without physically contiguous memory access
- SCE_APPMGR_APPLICATION_MODE_B = 3, //!< Application with physically contiguous memory access
- SCE_APPMGR_APPLICATION_MODE_C = 4 //!< Application with physically contiguous memory and extra memory access
-} SceAppMgrApplicationMode;
-
typedef struct SceAppMgrSystemEvent {
int systemEvent; //!< One of ::SceAppMgrSystemEventType
uint8_t reserved[60]; //!< Reserved data
@@ -93,25 +90,6 @@ typedef struct SceAppMgrAppState {
SceUInt8 reserved[116];
} SceAppMgrAppState;
-typedef struct SceAppMgrBudgetInfo {
- int size; //!< Must be 0x88
- int app_mode; //!< One of ::SceAppMgrApplicationMode
- int unk0; //!< Unknown Data
- unsigned int total_user_rw_mem; //!< Total amount of accessible USER_RW memory
- unsigned int free_user_rw; //!< Free amount of accessible USER_RW memory
- SceBool extra_mem_allowed; //!< Flag for extra memory accessibility
- int unk1; //!< Unknown Data
- unsigned int total_extra_mem; //!< Total amount of accessible extra memory
- unsigned int free_extra_mem; //!< Free amount of accessible extra memory
- int unk2[2]; //!< Unknown Data
- unsigned int total_phycont_mem; //!< Total amount of accessible physically contiguous memory
- unsigned int free_phycont_mem; //!< Free amount of accessible physically contiguous memory
- int unk3[10]; //!< Unknown Data
- unsigned int total_cdram_mem; //!< Total amount of accessible CDRAM memory
- unsigned int free_cdram_mem; //!< Free amount of accessible CDRAM memory
- int reserved[9]; //!< Reserved data
-} SceAppMgrBudgetInfo;
-
typedef struct SceAppMgrExecOptParam SceAppMgrExecOptParam; // Missing struct
typedef struct SceAppMgrLaunchAppOptParam SceAppMgrLaunchAppOptParam; // Missing struct
@@ -121,6 +99,38 @@ typedef struct sceAppMgrLoadExecOptParam {
#define SCE_APPMGR_MAX_APP_NAME_LENGTH (31)
+#define SCE_APPMGR_BUDGET_MODE_MAIN 2
+#define SCE_APPMGR_BUDGET_MODE_MAIN_PHYCONT 3
+#define SCE_APPMGR_BUDGET_MODE_MAIN_PHYCONT_CDLG 4
+
+typedef struct SceAppMgrBudgetInfo {
+// 0x00
+ SceSize size; //!< Sizes if 0x88 bytes
+ SceUInt32 mode; //!< Application budget mode
+ SceUInt32 unk_8;
+ SceUInt32 budgetMain; //!< Main LPDDR2 budget in bytes
+// 0x10
+ SceUInt32 freeMain; //!< Free main LPDDR2 in bytes
+ SceUInt32 hasCdlg; //!< Has CDLG memory type in budget
+ SceUInt32 unk_14; //!< Only if CDLG is used, otherwise 0
+ SceUInt32 budgetCdlg; //!< CDLG budget in bytes
+// 0x20
+ SceUInt32 freeCdlg; //!< Free CDLG in bytes
+ SceUInt32 unk_24; //!< always 0
+ SceUInt32 unk_28; //!< Only phycont is used, otherwise 0
+ SceUInt32 budgetPhycont; //!< Phycont budget in bytes
+// 0x30
+ SceUInt32 freePhycont; //!< Free phycont in bytes
+ SceUInt32 allow; //!< Some memory type?
+ SceUChar8 unk_38[0x20]; //!< Some memory type?
+ SceUInt32 unk_58;
+ SceUInt32 budgetCdram; //!< Cdram budget in bytes
+// 0x60
+ SceUInt32 freeCdram; //!< Free Cdram in bytes
+ SceUChar8 reserved_64[0x24];
+// 0x88
+} SceAppMgrBudgetInfo;
+
/**
* Save data on savedata0: partition
*
@@ -514,16 +524,34 @@ int _sceAppMgrGetRawPath(char *path, char *resolved_path, int resolved_path_size
int _sceAppMgrGetRawPathOfApp0ByAppIdForShell(int appId, char resolved_path[292]);
/**
- * Get memory budget info for a running system application
+ * Get application memory budget info.
*
- * @param[out] info - Info related to the memory budget of the running application.
- *
* @return 0 on success, < 0 on error.
*
- * @note This function will always return an error if used in a normal application.
*/
int sceAppMgrGetBudgetInfo(SceAppMgrBudgetInfo *info);
+/**
+ * Shared Framebuffer
+ */
+
+typedef struct SceSharedFbInfo SceSharedFbInfo;
+
+SceUID _sceSharedFbOpen(int index, SceUInt32 buildVersion);
+
+static __inline__
+SceUID sceSharedFbOpen(int index, SceUInt32 buildVersion) {
+ return _sceSharedFbOpen(index, _SCE_APPMGR_VERSION);
+}
+
+int sceSharedFbClose(SceUID fbId);
+
+int sceSharedFbBegin(SceUID fbId, SceSharedFbInfo *fbInfo);
+
+int sceSharedFbEnd(SceUID fbId);
+
+int sceSharedFbGetInfo(SceUID fbId, SceSharedFbInfo *fbInfo);
+
#ifdef __cplusplus
}
#endif