/store-api

Homebrew Store API library that any PS4 app can implement made using the OOSDK

Primary LanguageC++GNU General Public License v3.0GPL-3.0

store-api

Homebrew Store API library that any PS4 Homebrew app can implement (works with sandboxed apps too)

License Build Library

Building

FIRST Download the Linux create_fself with multi-lib support OR compile it yourself using This multi-lib pull request

Alternatively you can Download the HB Store's OOSDK

Run make to create a static library and a prx Run make install to install the static library and store_api.h header

Developer Instructions

the following PS4 system libs are used by this library -lSceBgft -lSceAppInstUtil -lSceLncUtil -ljbc -lcurl -lpolarssl -lSceUserService -lSceLncUtil -lSceSysmodule -lSceNet -lSceSystemService -lSceCommonDialog -lSceLibcInternal

make install will install the store_api.h header to the SDK so you can include it in your project by doing <store_api.h> and include the static lib -lstore_api you can either use the static (.a) or dynamic (.prx) libs

System/mini apps

The following needs to be added to your app failure to do so can result in crashing

#define SCE_SYSMODULE_INTERNAL_NET 0x8000001C
#define SCE_SYSMODULE_INTERNAL_BGFT 0x8000002A
#define SCE_SYSMODULE_INTERNAL_NETCTL 0x80000009
#define SCE_SYSMODULE_INTERNAL_COMMON_DIALOG 0x80000018
#define SCE_SYSMODULE_INTERNAL_APPINSTUTIL 0x80000014
#define ORBIS_SYSMODULE_MESSAGE_DIALOG 0x00A4 // libSceMsgDialog.sprx


sceSysmoduleLoadModuleInternal(SCE_SYSMODULE_INTERNAL_BGFT);
sceSysmoduleLoadModuleInternal(SCE_SYSMODULE_INTERNAL_NET);
sceSysmoduleLoadModuleInternal(SCE_SYSMODULE_INTERNAL_NETCTL);
sceSysmoduleLoadModuleInternal(SCE_SYSMODULE_INTERNAL_COMMON_DIALOG);
sceSysmoduleLoadModuleInternal(SCE_SYSMODULE_INTERNAL_APPINSTUTIL);
sceSysmoduleLoadModule(ORBIS_SYSMODULE_MESSAGE_DIALOG);
// call for the Store api message dialogs
sceCommonDialogInitialize();
    

Big apps

Works in sandboxed games as well

#define ORBIS_SYSMODULE_MESSAGE_DIALOG 0x00A4 // libSceMsgDialog.sprx

sceSysmoduleLoadModule(ORBIS_SYSMODULE_MESSAGE_DIALOG);
// call for the Store api message dialogs
sceCommonDialogInitialize();

Errors and reporting

  • every API error is logged to /data/store_api.log and UART
  • Join this Discord server for API Questions or issues

Example code

// include our API header with enum
#include <store_api.h>

int main(){
   // check for an update using a title id
   if(sceStoreApiCheckUpdate("LAPY20001") == UPDATE_FOUND){
       // update found now launch store with either the title id or app name
       If(!sceStoreApiLaunchStore("LAPY20001")){
         // ERROR HANDLING HERE
         return -1;
        }
         
   }
   return 0;
}

Required external libs