Developer

Vita homebrew are written with the unoffical SDK, which is a modified ARM EABI toolchain. You get access to all the same public APIs found in the official SDK (which is available only to Sony licensed developers) as well as many private APIs which allows, for example:

Setup

Automatic Installation

You can build the toolchain using vdpm. This script lets you easily set up the toolchain from source and also install some common dependencies such as libpng/libjpeg/vita2dlib/etc. Follow the directions from there.

Manual Installation

  1. Get the toolchain
    1. Use the prebuilt toolchain, available for Linux, OSX, and Windows
    2. For those who want to do more work, you may build the toolchain from scratch using the buildscripts by following the directions there.
  2. Install the toolchain to a directory of your choice
    1. We recommend /usr/local/vitasdk for both Linux and OSX
    2. On Windows, it is recommended you install MSYS2 and make (pacman -S make) in order to use Makefiles.
  3. Setup the $VITASDK path variable to point to where the toolchain is installed
    1. On Linux/OSX you can add export VITASDK=/path/to/toolchain to your Bash profile.

Usage

You can find various sample code here. Build them and play around with the code to familiarize yourself with the environment. You can also look at the showcase to see some more advanced code. Unfortunately, there currently does not exist comprehensive documentation for the unoffical SDK. If you have the time, please help us with that!

Build process

You should look at the makefiles for the sample code, but here’s a breakdown:

Library usage

In order to use functions from the Vita’s runtime library (beyond the C/C++ standard libraries and SceKernel), then in addition to including the required headers you also need to statically link against the corresponding modules’ stub libraries. In some cases, it’s also necessary to load the sysmodule and/or call the library’s initialisation function before using any of its other functions.

For instance, to use the sceNetConnect function, you need to follow the following process:

Making a .vpk

Homebrew installer uses a .vpk format which is just a ZIP file, start from this template (try installing it from the shell) * replace eboot.bin with your eboot.bin * you can also add template.xml and stuff like icon/background/etc that will be displayed in LiveArea, check out how it’s done in molecularShell (launch it and go to app0:) * make sure to run pngquant on all your png images * to make param.sfo, use vita-mksfoex -s TITLE_ID=XXXX00001 "homebrew name" output/param.sfo

When developing homebrew instead of rebuilding the vpk and reinstalling it on every change, you can upload your new eboot.bin to ux0:app/TITLE_ID/eboot.bin over ftp

NB: all files you place to .vpk will be available as read-only inside app0:. For example, you can add vpk/something.txt and later in your app read app0:something.txt. In the same way, you can read app0:sce_sys/param.sfo and app0:eboot.bin.

Future

The development community is still in its infancy. Do not be scared at all the new tools and terms. We are actively developing easier tools and templates to do the work, so the process will only be easier in the future. If you run into any issues, please check out the support options below.

Showcase

You can request to add your homebrew to the showcase.

  1. To do so, first fork the website on GitHub.
  2. Create a new file _homebrew/x-name.md where x is a unique id which you should choose as the next available number and name is a short-name for your homebrew.
  3. Fill the contents of _homebrew/x-name.md appropriately. Look at one of the other entries as a template. The fields should be self explanatory.
  4. Take a screenshot of the homebrew, make sure it is a PNG file and copy it to assets/homebrew/x-name.md where id and name should be the same as above. For the best results, make sure your screenshot is 240x136.
  5. Commit the changes and send a pull request.

Support

Running into SDK related issues? Need help setting up the toolchain? Want advice on how to do something with vitasdk? You can find the community of developers on FreeNode IRC at #vitasdk. Please only join for development related support! General support can be found at #henkaku.