Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - Graphene

Pages: [1] 2 3
Kits / PSP2 Coredump Parser - Simple tool to parse .psp2dmp files
« on: January 05, 2022, 01:26:59 AM »
Coredump Parser is a simple tool to parse .psp2dmp files based on PSP2TMAPILib.

It allows to parse coredumps made on Retail, TestKit or TOOL PS Vita consoles.
Note that SCE Target Manager Server for PSP2 must be installed and running on your PC in order to use this tool (yes, even to work with retail system/coredumps).

Currently this tool parses various information for following objects:

- Version
- Device
- TTY cache
- Process
- Application
- Budget
- Module
- Library
- File
- Memory Block
- Thread
- Callback
- Condition Variable
- Lightweight Condition Variable
- Event
- Mutex
- Lightweight Mutex
- Message Pipe
- RW Lock
- Semaphore
- Thread Event Handler
- Fiber
- User-level thread

libAppSettings is simple library that implements app settings dialog with official UI functions.
Comes with SCE SDK and vitasdk stubs.

Download and usage sample:

Plugin for PS Vita that unlocks hidden copy/paste feature in system software.
To activate copypaste popup press and hold your finger on the text until it zooms in. After that release your finger from the screen and copypaste popup will open.

This feature was present in very early Vita firmwares but starting somewhere around 1.06 it was disabled for unknown reasons.

Install under *main


Reverse Engineering / VVNZRunner - run custom MeP code on Venezia
« on: September 01, 2021, 12:08:52 AM »
VVNZRunner is kernel plugin for PS Vita that provides API to run Toshiba MeP code on Venezia. Original idea from PS Vita Henkaku wiki Venezia article.
VVNZRunner provides safe way to run MeP code on Venezia processor and functions to transfer data from and to Venezia SPRAM.

Github link:

V-Thread support

V-Threads are threads that run on Venezia cores. Up to 6 cores can run tasks simultaneously in normal mode and up to 7 in extended mode (enabled with sceCodecEngineChangeNumWorkerCoresMax()). All tasks that fall outside of limit will be automatically scheduled for execution. Note that even when running V-Thread, vnzBridgeExec() is blocking on ARM side. Refer to sample_mep for V-Thread creation procedure.


Example of userland application is in sample folder.
Example of MeP code used in the sample application is in sample_mep folder. To compile MeP code use mepsdk.
Check CMakeLists for flags used to compile MeP code for Venezia.

Usage notes

- Safe spram offset is 0x1404 bytes. Everything below belongs to Venezia context and will be reset upon execution.
- For now code memory size is limited to 0x1000 bytes.

GPU driver modules on Vita are SceGpuEs4 and SceGpuEs4User. Both of these modules were built with modified SGX DDK.
While there some similarities with SGX DDK 1.8, there are a lot of custom things too.
The purpose of this project is to document differences in GPU driver and hardware and port SGX DDK 1.8 with as minimal changes as possible.

Currently this project include:

1. Common and PSP2-specific GPU  driver headers.
2. Extension library for GPU driver (libgpu_es4_ext), which includes:
 - Full Display Class API implementation;
 - Lowlevel USE codegen code;
 - OS and kernel bridge extensions.
3. PVR2D port for PSP2.
4. IMGEGL port for PSP2.
5. WSEGL port for PSP2.
6. OpenGL ES v1.1 port for PSP2.
7. OpenGL ES v2 port for PSP2.
8. Various unittests to check basic driver features.


Some GPU driver info (from sgx_init_test):

This plugin is intended only for developers!

Use debug GXM module on retail PS Vita. Debug GXM module will be loaded for all game and VSH applications.
Tested on 3.60 and 3.65


Grab vs0/sys/external/libgxm_dbg_es4.suprx from TOOL firmware corresponding to your current firmware version and put it in ux0:data/external. If debug module is not found, normal GXM module will be loaded instead.

- Path to debug module can be changed in source code
- Debug module is not loaded as shared unlike normal GXM module
- It is not recommended to use debug GXM module when testing for performance

Source code:

PS Vita / [Release] Live2D Cubism 4 for PS Vita
« on: February 24, 2021, 07:08:32 PM »
Live2D is a technique of generating animated 2D graphics, usually anime-style characters, using layered, continuous parts based on a single illustration, without the need of animating frame-by-frame or creating a 3D model.

Live2D website:
Live2D Github repositories:

This is a full native GXM port of Live2D Cubism 4 for PS Vita. It includes 3 main parts:

  • Cubism Native Core
  • Cubism Native Framework
  • Cubism Native Sample

Cubism Native Core

This is the core library. It does all basic calculations for vertices and indices and parses initial model information.
PS Vita port of this library is hybrid based on Raspberry Pi version, with added NEON-optimized functions from Android version to provide highest possible performance on Vita.

Current version of the Core for PS Vita: 4.0.0

Cubism Native Framework

This is a framework for using the model output by Live2D Cubism 4 Editor in the application. It provides various functions for displaying and operating the model.
PS Vita port uses native GXM backend for rendering. It supports 2X and 4X MSAA and resolutions up to 1920x1088.

Current version of the Framework for PS Vita: 4 Native R2

Cubism Native Sample

This sample application demonstrates basic Live2D Cubism operation on PS Vita.
Please note that sample application project does not include resource files. Download resource files separately and unpack them to app0: after installing sample application on PS Vita. End path should be ux0:app/L2DC00001/Resources

Resource files download link:

Differences of PS Vita version

Due to the differences in GXM implementation following functions have been changed/added:


Specifics of usage on PS Vita

Basic usage is the same as on other platforms. Main differences include:

  • need to pass various GXM context parameters to framework when creating renderer
  • need to pass current display index to framework before performing model draw
  • need to manually end current scene before using any framework renderer draw functions


To build these projects you will need:

Credits and Acknowledgements

  • Live2D and its contributors for Cubism Native Framework and Cubism Native Samples
  • Sony for PlayStation Vita SDK
  • marburg for Vita Development Suite
  • SonicMastr for PIB, converting shaders, debugging and other help with this project

PS Vita / [Release] CBPSTube - Unofficial Youtube Application for PS Vita
« on: February 17, 2021, 06:00:55 PM »
CBPSTube is unofficial Youtube application for PS Vita based on SCE VSL framework.

Key Features:

1. Supports all current Youtube features
2. Supports native 1280x720 playback on PS TV
3. Quickly access various youtube pages via sidebar menu (triangle button)


1. Required. Install CapUnlocker plugin:
Without this plugin your account information will not be saved and you will have to relogin each time you start the app
2. Install .vpk

Known limitations and bugs:

1. By default, youtube uses 360p resolution. You can change that to 720p in video playback settings (gear icon)
2. If video playback has been canceled during video player loading, it may get stuck on the video loading screen and playback controls will not show

How to close ads:

1. Once add starts playing, close it and press on the info icon near the "Ad" in the video player window
2. Select "Do not show this advertisement"

Button Controls:

L/R triggers - previous/next page
Cross - select
Square - load home page
Triangle - show/hide sidebar
Circle - previous page

PS Vita / [Realease] Rodem the Wild (PCSG00800) English "patch"
« on: January 20, 2021, 06:12:52 PM »
This game was first published on PS Mobile with support for Japanese, English and French. Some time after PSM support ended, standalone version of the game was released in Japan only. Turns out the game still has English assets too, but doesn't use them. This patch simply renames English assets to make the game use them instead of the Japanese ones.

Manual is still in Japanese.

P.S. This will not make game any easier to understand. It is weird by design.

This explains how to enable special DS4 touchpad mode in any app or game on PSTV, officially called "DUALSHOCK®4 Touch Pad Mode: Special mode (easy flick)".
As far as I know this mode has never been used in any released PS Vita game or application.

This mode is read directly from app0: param.sfo on app boot which means we can enable it by simply using rePatch plugin.

Main differences from normal DS4 touchpad -> touchscreeen emulation:

  - DS4 touchpad area is directly mapped to Vita touchscreen area
  - There is no hand icons on screen when using touchpad
  - Fingers are recognized without the need to press DS4 touchpad

How to enable it:

0. Download and install rePatch plugin if you don't have it (
1. Grab param.sfo file for the game that you want to enable the mode for. The path is:
  - ux0:app/.../sce_sys/param.sfo for the game without patches
  - ux0:patch/.../sce_sys/param.sfo for the game with patches

2. Open param.sfo file in any hex editor and increase ATTRIBUTE2 value by 1. Example:



3. Create rePatch folder for your game and put edited param.sfo file in there: ux0:rePatch/.../sce_sys/param.sfo

This small app triggers native savedata backup feature of PS Vita system software. More info here: and here

Download vpk here:

PS Vita / [Release] Vita Moonlight HD
« on: October 15, 2020, 12:41:38 AM »
Original application here:


New features:

- Added support for native 1920x1080 and 1280x720 resolutions
- Added on screen keyboard support
- Audio stream can now be continued with the screen off
- Audio stream can now be continued with application suspended
- Moonlight stream will now not disconnect when you suspend application
- DS4 touchpad on PSTV will now work in direct input mode (full touchscreen simulation)
- Bluetooth keyboard support
- Touchscreen/touchpad (DS4) input has been reworked. All timeframes have been adjusted. It is now as close as possible to laptop touchpad. You can use following gestures:
     - Drag to move cursor
     - Tap: left mouse button click (recognized on release)
     - First finger hold, second finger tap: right mouse button click (recognized on release of second finger)
     - Tap and hold in one place: enter hold left mouse button mode. After mode is entered, you can freely drag finger to move cursor (recognition stops when finger is released)
     - First finger hold, second finger move: mouse wheel scroll (recognition stops when any of the fingers released)

- Fixed all issues related to touch input (such as special keys being accidentaly recognized when moving cursor)
- Implemented proper AVC decoder flushing on stream resume
- Various minor optimizations

Details and limitations:
Please read this before asking questions!

1. Requirements for HD resolution modes on normal Vita and PSTV.
     - On normal PS Vita, Sharpscale is required
     - On PSTV there are no special requirements
2. Limitations of Vita AVC decoding hardware:
     - AVC decoder is not fast enough to decode 1920x1080@60FPS stream. Please use 1920x1080@30FPS instead
3. About new options:
     - Resolution modes:
    960x540, 960x544 -> Vita/PSTV display resolution set to 960x544
    1280x540, 1280x720 -> Vita/PSTV display resolution set to 1280x725
    1920x1080 -> Vita/PSTV display resolution set to 1920x1088
    Application restart is required to apply stream resolution settings!
     - Enable BGM mode:
    When set to on, system will continue audio stream playback even when application is suspended
    Application restart is required to apply this option!
     - Disable system suspend
    Disable automatic system suspend feature
     - Disable screen dimming
    Disable automatic screen dimming feature

     - Special keys: Open keyboard
    When this special key is pressed, on-screen keyboard will be opened

     - This version does not replace v0.8.0. You will have to do clean reinstall manually.
Current issues:

     - UI is not scaled properly in 1280x720 and 1920x1080 modes so it will appear small, especially on normal Vita screen.
Coming in the future:

     - Full bluetooth mouse support
Path to all Moonlight configuration data has been changed from ux0:data/moonlight to ux0:user/00/savedata/GRVA00010.
You have to open that folder with triangle->open decrypted in Vitashell before doing any manual operations with it.

On normal Vita, Sharpscale is required to use this application.
Unlock framebuffer size option in Sharpscale config app must be set to on


Kits / pfs_builder.exe usage
« on: September 27, 2020, 06:41:15 PM »
This was either undocumented or unknown.

General usage instructions can be obtained by just running pfs_builder.exe without any arguments. These are:

usage: [-s<number>] [-q] [-n<number>] [-v] [-f<number>] [-k<number>] [-d] <dest path> <param file>
-s : generate PFS image for 0:gamedata(default), 1:savedata, 2:AC ROOT, 3:ACID DIR.
-q : quiet mode (no message).
-n : random number seed (32bit-HEX, default 0).
-v : print svn revision of source code.
-f : set DB format version (default:latest).
-k : set key type. 0:type2(default), 1:type3.
-d : generate PFS DB only.

There are actually more options, but the main issue was structure of param file, that is not documented anywhere.

param file structure:

Here is how param file should be structured:

1. Each new line of param file indicates file or folder that will be added to PFS
2. Lines can be commented with "#"
3. Each line must contain 4 or 5 parameters:
     1. Input file/directory name
     2. Output file/directory name for PFS result
     3. PFS param 1 (described below)
     4. PFS param 2 (described below)
     5 (optional). PFS file seed
4. Parameters in line are separated by tabbing (0x09 HEX code). Line must also end with 0x09.

Detailed description of parameters:

PFS param 1 is used to determine PFS access mode. Available options are:
(nothing. Tabbing still must be preserved)
rw (read/write)
ro (read only)
sys (ex. sce_sys dircetory or clearsign/keystone files)

PFS param 2 is used to determine how PFS should treat file/directory. Available options are:
(nothing. Tabbing still must be preserved)
dir (treat input as directory)
acidir (?, maybe treat input as addcont included directory (PFS-in-PFS))
npfs (?, maybe copy that file without including it in PFS)
nenc (do not encrypt that file)
nicv (?)

PFS file seed is optional parameter. It is a string of 40 characters in HEX format that will be used as encryption seed for the file/directory. If not set, common options seed will be used.

Hidden modes:

Some of these modes can not be set by input arguments, only by directly editing pfs_builder.exe executable:


Reverse Engineering / Full param.sfo attributes list
« on: August 17, 2020, 04:53:37 PM »
Format is: special mode(if present):BIT(S):XX:YY(Y)(if multiple bits):group name:attribute bit name:comment
Comments with * are my own, everything else is official.

      BIT:01:liblocation:null:Use liblocation in order to get location
      PRIVILEGED:BIT:03:null:NO_SUSPEND_DEACTIVATE:*Do not deactivate application when application is suspended
      PRIVILEGED:BIT:06:null:NO_FORCED_KILL:*Always warn user if application needs to be closed in order to open other application
      BIT:07:Information Bar:null:Information Bar is displayed on startup
      BIT:08:Information Bar:null:Information Bar color (white:ON, black:OFF)
      PRIVILEGED:BIT:09:Information Bar (noname):null:Use alpha blending to display Information Bar (option for Non-Game)
      BIT:10:Upgradable:null:The Application is upgradable
      PRIVILEGED:BIT:11:null:ENABLE_BGM_PROXY:*Proxy SceShell BGM to application automatically (equal to sceAppMgrSetBgmProxyApp("NPXS19999"))
      PRIVILEGED:BIT:12:null:null:The Application is set to be not-visible from "near"
      PRIVILEGED:BITS:14-13:00:null:LIVEAREA_UPDATE_MODE:*LiveArea update mode is not set
      PRIVILEGED:BITS:14-13:01:null:LIVEAREA_UPDATE_MODE:*LiveArea update mode is set to 1
      PRIVILEGED:BITS:14-13:10:null:LIVEAREA_UPDATE_MODE:*LiveArea update mode is set to 2
      PRIVILEGED:BIT:15:LiveArea™:null:Communication Zone is not displayed (option for Non-Game)
      PRIVILEGED:BIT:16:null:DISABLE_LIVEAREA_SCREENSHOT:*Disable LiveArea gate screenshot
      PRIVILEGED:BIT:17:null:MUSIC_BROWSER_EXCLUSIVE_LAUNCH:*This application replaces Music
      PRIVILEGED:BIT:18:null:PARTY_EXCLUSIVE_LAUNCH:*This application replaces Party
      PRIVILEGED:BIT:19:null:DISABLE_SYSTEM_SUSPEND:*Do not deactivate application when system is suspended
      BIT:20:null:null:The VC-MC Application supports boot from VC without MC
      BIT:21:Software manual:null:Add a health warning to the first page of software manual
      PRIVILEGED:BIT:23:cache0:null:Content of cache0: is cleared when application is killed (option for Non-Game)
      PRIVILEGED:BIT:24:libNotification:null:Use libNotification to post Notification Messages (option for Non-Game)
      BIT:25:Twitter:null:Use Tw dialog
      PRIVILEGED:BIT:26:LiveArea™:null:The Background applicaiton is not killed when LiveArea™ is peeled off
      DOLCE:BIT:27:Teleport Feature:null:The Application can be launched by Teleport feature
      DOLCE:BIT:28:Touch Pointer on PS TV:null:Disable Touch Panel Emulation by L3/R3 buttons
      DOLCE_PRIVILEGED_1:BIT:29:Resolution:null:The Application supports 720p resolution
      DOLCE_PRIVILEGED_1:BIT:30:Resolution:null:The Application supports 1080p resolution
      BITS:01-00:00:Enter Button Assignment:null:Not Specified (for SDK200 or older)
      BITS:01-00:01:Enter Button Assignment:null:Circle Button (for SDK210 or newer)
      BITS:01-00:10:Enter Button Assignment:null:Cross Button (for SDK210 or newer)
      BITS:04-02:000:Boot Mode:null:Managed by system software (selectable only under PS Vita TRC1.5 in SCEE/SCEA regions)
      BITS:04-02:100:Boot Mode:null:PS Vita:Bootable, PS TV:Bootable
      BITS:04-02:110:Boot Mode:null:PS Vita:Bootable, PS TV:Not Bootable
      PRIVILEGED:BITS:04-02:101:Boot Mode:null:PS Vita:Not Bootable, PS TV:Bootable
      DOLCE_PRIVILEGED_2:BITS:01-00:00:DUALSHOCK®4 Touch Pad Mode:null:Normal mode
      DOLCE_PRIVILEGED_2:BITS:01-00:01:DUALSHOCK®4 Touch Pad Mode:null:Special mode (easy flick)
      BITS:04-02:000:Large Memory Mode:null:The Application does not use the enlarged memory
      BITS:04-02:001:Large Memory Mode:null:The Application uses the enlarged memory (+29MiB)
      BITS:04-02:010:Large Memory Mode:null:The Application uses the enlarged memory (+77MiB)
      BITS:04-02:011:Large Memory Mode:null:The Application uses the enlarged memory (+109MiB)
      BIT:00:null:null:*BG application
      BIT:01:null:null:*SCE nongame application
      BIT:02:null:null:*Allow CDLG memory
      BIT:03:null:null:*Allow user CPU cores affinity mask

PS Vita / [Release] HonRipper - extracts data from .MNH books
« on: August 01, 2020, 09:52:02 PM »
HonRipper is the plugin for PS Vita Sony Reader application (PCSC80012) that is designed to extract contents of Sony's .MNH (Marlin-Hon) book format.

This plugin can extract contents of any books bought on Reader Store. Scan resolution can vary, but it is usually quite high (eg. above 1500x2000 for manga).
There are quite a lot of rare books/manga scans on Reader Store in good quality.

To extract contents of the book:
0. Add plugin in config.txt under *PCSC80012.
(optional) 1. Create config file: ux0:book/HonRipper.ini. File should contain either 0 or 1:
  - 0 to set output path to ux0:HonRipper/%bookname%/%imagenum%.jpg.
  - 1 to set output path to uma0:HonRipper/%bookname%/%imagenum%.jpg.
  - default (if config file is not found) is 0
2. Start Reader, open book that you want to extract.
3. Go through all book to dump all pages.
4. Close book or application. Your dump is finished.

Some notes:
  - Avoid using official Sony memory cards as output location as IO load is quite high during dumping and can reduce memory card lifespan.
  - Plugin will slow down Reader, so if you are going to use it normally disable plugin before that.


Pages: [1] 2 3