PS3 PS3 In-Game Menu 0.2

This plugin have already been done by Mysis in VSH but it shows you can make a menu during gameplay.

  1. kozarovv

    • I took a small break from ps3xpad and decided to create an in-game menu. This is more of a POC for an in-game menu. Most of the features of this plugin have already been done by Mysis in VSH but it shows you can make a menu during gameplay. It can also lead to in-game trainers and such. You will need firmware with PS3MAPI enabled and a debug eboot of your game. You can either use webMAN-mod or using the supplied VSH plugin. The VSH plugin will automatically detect if a game has been booted and will attach the game menu plugin to it.

      Game Menu Features:

      - In game music player (music from hdd only)
      - In game screenshots (saved to /dev_hdd0/tmp/ folder)
      - In game recording (saved to /dev_hdd0/tmp/ folder)
      VSH Menu Features:
      - Auto detect and attach game menu plugin (may be disabled/enabled)
      - XMB screenshots

    • Requirements:

      2 requirements needed for loading and displaying the game menu.
      1. 4MB free memory (if your game uses most of the 256MB of memory, the plugin will not work or will not display the menu until 4MB is free)
      2. Game needs to run gcm (most games do)
      You can tell if a game uses gcm by looking at the modules loaded during gameplay.
      This can be done by using webMAN-mod and selecting your game proc from PS3MAPI interface. It will have libgcm listed as one of the modules loaded.


      1. Copy the plugins folder to /dev_hdd0/. You should have the directory /dev_hdd0/plugins/ps3_menu/ with ps3_vsh_menu.sprx and ps3_game_menu.sprx in it.
      2. Add this line to plugins.txt if you're using PRX Loader or to boot_plugins.txt if you're using Cobra:
      3. Boot up a game and the game menu should automatically be loaded once it starts.
      (Alternatively you may load ps3_game_plugin.sprx directly to the game using webMAN-mod PS3MAPI interface)

    • Notes:

      - Unlike VSH where RSX buffer pointers are at the same address, these buffers are dynamic in games.
      Fortunatley libgcm allows us to obtain them in game and giving us the ability to do blitting.
      - Blitting in game follows the same procedure as VSH where we pause RSX and disable pad data for VSH to process.
      The only difference is I'm using a hook instead of getting pad object from memory due to it being dynamic when switching from game to game.
      - Be careful when programming game plugins. Unlike VSH where the same modules are loaded for every system, not all games will load the same modules and you will have to load them manually.
      - Remember to change font and background constants in blitting.h if you want them custom and also enable their compiler flags.
      - Make sure to pass the -B flag when compiling both vsh and game menu plugins concurrently. Shared objects need to be recompiled for each individually.
      (make -B all)

    • Credits:

      3141card for the VSH menu framework
      littlebalup and Orion for providing their source code of their VSH menu plugins

      Masterzorag for keeping an up to date template provided in github
      therifboy for his explanation on hooking methods
      Mysis for his POC plugin

      UPDATE 0.2:
      Just a minor memory optimization. The 16MB requirement is for canvas size of 1920x1080. I was using the same memory size as the orignal VSH menu plugin and overlooked for a canvas size of 720x400 as shown in the picture. The memory limit is now dynamic and depends on canvase width and height (the smaller they are, the lower memory requirement).
    T.A.U likes this.

Recent Updates

  1. PS3 In-Game Menu 0.2