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 - cuevavirus

Pages: [1] 2 3


RIF Ripper backs up your licenses for purchased digital content for PSP, PS3, and PS Vita.


First connect to network and sign into your PSN account. Open the application and the backup process will begin automatically. Saved licenses are stored at ux0:/rif-ripper. It is recommended that you do not delete this folder, so that if the backup process is interrupted, or if you have purchased additional items, previously downloaded licenses are not downloaded again the next time you run RIF Ripper. During the backup process the screen may dim or turn off, however the console will not be put into suspend mode.

RIFs for PlayStation Vita content are saved as NoNpDrm compatible fake RIFs, while licenses for PS3 and PSP content are saved as RAPs.

PS Vita / [Release] PlayStation Mini Store
« on: April 12, 2021, 04:37:11 AM »


This application is an alternative for the PlayStation Store application.


* Fast browsing with text-only UI
* 10 item cart even for free items
* Browse Vita and PS3 stores
* Browse arbitrary categories
* Browse arbitrary products

Category IDs

The top level category ID can be set or left blank to be populated automatically when opening the mini store.

Vita store: PN.VT.XX-PN.VT.GAME.XX-BASE where XX is your PSN account country code in uppercase
PS3 store: PN.P3.XX-PN.P3.GAME.XX-BASE where XX is your PSN account country code in uppercase

Please note that the PS3 store is a very old version and does not correspond to the PS3 store application.

Product IDs

It is possible to load product IDs from file to browse and purchase items for any PlayStation Network platform. Put product IDs one per line a file. If the file path is not specified, the default path is ux0:/product-list.txt.

There are a number of ways to find product IDs:

1. From the webstore. For example in, JP9000-CUSA11436_00-PLATFORMERVR00JP is the product ID.

2. From scraped htmls of the old webstore. Download ps-store-grid.7z and browse the files to find product IDs.

3. From Chihiro API.

Old webstore (JP)
Old webstore (HK)
Old webstore (US)
PS3 Store App (US)

PS Vita / [Release] Moonshine - block PSN presence and status posts
« on: April 03, 2021, 11:45:48 PM »

Source repository

Moonshine is a plugin that blocks PSN presence and status posts.


Copy moonshine.suprx to your Vita and add its path under *main in your taiHEN config.txt.


PSN presence and status post blocking can be configured to apply to no titles, homebrew titles, or all titles. Place the configuration file at ur0:/data/moonshine.ini. Please see the included sample configuration file for valid keys and values.

The default is to block homebrew titles.

Reverse Engineering / NIDs database
« on: March 08, 2021, 11:47:38 PM »

NIDs are organised into three categories.


Contains NIDs with names extracted from stub libraries from different PlayStation Vita SDK versions.


Contains NIDs with names extracted from syslibtrace.skprx from different system software versions.

System software

Contains every export and import of every module from different system software versions. Names are filled in from a composite of other sources. These help to easily identify the following:

1. The system software versions that contain a particular function.
2. Usage examples of a particular function.
3. Functions which are exported more than once, or import stubs that are exported.

PS Vita / [Release] Fruitpeel - Change lockscreen background wallpaper
« on: February 25, 2021, 10:28:20 PM »

Source repository


Copy fruitpeel.suprx to your Vita and add its path under *main in your taiHEN config.txt. Place the background image you want to use at ur0:/data/fruitpeel.png.

Note that scaling of the foreground wallpaper (part that peels off) has been disabled due to a bug in the scaling code. If you use a custom foreground wallpaper make sure it is 1020x512.

Image requirements

PNG with 8 bit palette non-interlaced. Up to a maximum size of 896x448. The file size up to a maximum of 512 KiB.

PS Vita / [Release] taiHEN - new developments
« on: February 20, 2021, 06:06:35 PM »
See original readme:

Yifan is no longer maintaining it so I will post updates in this thread. Previous releases used versions 0.2 to 0.11. Please consider them as 0.2.0 to 0.11.0. From this point, versions 0.x.y will be backward compatible with 0.11.0, while versions 1.x.y will not.

Source repository

Version 0.12.0

Module changes

- Support all system software versions >=3.60 with a single module
- Skip plugin load on boot on a PSTV (see steps below)
- Reduced the memory requirement of the loadable image from 256 KiB to 64 KiB
- Reduced the block size of the patches heap from 64 KiB to 4 KiB
- Fixed a fatal crash caused by erroneous linked list manipulation when unhooking when the hook chain has two or more hooks
- Fixed a fatal crash caused by unresolved stubs erroneously identified as resolved
- Fixed a fatal crash caused by a Thumb to Thumb BLX (reg) instruction erroneously written to the outro trampoline when the jump patch overwrites a Thumb to ARM BLX (imm) instruction (

Development header changes

- Added a TAI_NEXT macro similar to TAI_CONTINUE, but has static type checking and allows continuing the hook chain on functions that pass arguments with VFP registers
- Added taihenModuleUtils functions to the public header

No API changes. The included stub libraries are for the SN linker only. The Vitasdk stub libraries from previous releases will continue to work for Vitasdk users.

Recovery from bad plugin on a PSTV

1. Unplug the power supply from the PSTV.
2. Plug in the power supply. The PSTV will boot automatically. Connect the controller by pressing the PS button.
3. The power LED will blink slowly for 10 seconds when taiHEN is waiting for input. When the controller has connected, press and hold L1. The power LED will blink rapidly to indicate that input has been received.
4. Boot continues with plugin loading skipped.

Note that if you boot with any other method, taiHEN will not wait for input during boot.

General / Vita Development Suite
« on: February 18, 2021, 06:10:29 PM »
Vita Development Suite provides additional features for the PlayStation®Vita SDK:

  • System applications
  • Background applications
  • Hosted EMD model PRX
  • Freestanding EMD model PRX
  • SELF parameters
  • CMake integration
  • GCC and GNU assembler
  • Additional libraries

Startup guide


Development updates will be posted in this thread.

Reverse Engineering / armlibgen usage with emd file
« on: January 09, 2021, 04:46:39 PM »
armlibgen is an undocumented program in the official sdk that produces stub archives and assembly for module and library entry (also called module and library info). armlibgen accepts as input an elf containing input data in an unknown format, or a plaintext emd file. An emd file contains one or more directives, where a directive is a line containing one or more keyword value pairs. The valid directives for version 1.20.4 are

Code: [Select]
emd: <integer>
moduleinfo_output_format: <scelibent_table|emd|sn_linker_cmd>
Library: <symbol> attr: <integer|auto_export|weak_export|nolink_export|plugin_link|loose_import|syscall_export>
Library: <symbol> version: <integer>
Library: <symbol> stubfile: <string>
Library: <symbol> StubFile: <string>
Library: <symbol> nidsuffix: <string>
Library: <symbol> libnamenid: <integer>
Library: <symbol> function: <symbol> localname: <symbol|string> nidname: <symbol|string> openlevel: <integer> prototype: <string> nidvalue: <integer> bind: <global|weak|not_local>
Library: <symbol> variable: <symbol> localname: <symbol|string> nidname: <symbol|string> openlevel: <integer> prototype: <string> nidvalue: <integer> bind: <global|weak|not_local>
Library: <symbol> importer_long_data: <symbol|integer> label: <symbol> section: <string> flag: <string>
StubFile: <string> Library: <symbol>
Module: <symbol> major_version: <integer> minor_version: <integer>
module_attr: <integer|none|cant_stop|exclusive_load|exclusive_start|can_restart|can_relocate|cant_share>
module_function: <symbol> localname: <symbol> bind: <global|weak|not_local>
module_variable: <symbol> localname: <symbol> bind: <global|weak|not_local>
module_reserve_size: <symbol> size: <integer>
sceModuleInfo_type: <integer>
exporter_long_data: <symbol|integer> label: <symbol> section: <string> flag: <string>

The valid keywords are

Code: [Select]

Not all keywords are used. Some keyword value pairs after the first one in a directive are optional.

PS 5 / First look at PS5 digital content distribution system
« on: October 23, 2020, 03:19:23 AM »
I was able to obtain the pkg url for Share Factory Studio, a free application for PS5 available on the Playstation new webstore.

The UUID in the URL is identical on two different accounts. We can infer several things from this:

1. Digital content is distributed without authentication, same as previous platforms.
2. Application and patch distribution are merged. It is no longer possible to obtain the base version application after a patch has been released.
3. It will no longer be possible to compute the update url from the title ID, instead a random UUID is used.

The json manifest in the xml contains two split files. However they are not the same file split along 4GiB boundaries. The first file has magic {0x7F, 'F', 'I', 'H'}, previously not seen. The second file has magic {0x7F, 'C', 'N', 'T'}, same as PS4 pkgs.

Reverse Engineering / CXML format
« on: September 04, 2020, 04:51:07 AM »
CXML decompiler ( gives incorrect output for many of the numbers, including integers, floats, and style IDs. Integers and floats are fucked for reasons unknown. Style IDs, correctly called hashes (see below), have the wrong endian and also the wrong offset.

Contary to the name and as stated on,_QRC,_Theme_Files,_RAF,_CXML) hashes are not just for styletable.

I wasn't about to setup a build environment for C# so I found an older program written in C++. rco-dump at least gives the correct integers and floats, and have the correct endian for hashes (on a little endian host), but the hash offsets are still wrong. Either Silica copy pasted from this program, or they both copy pasted from a common source, which incidentally resulted in the hashes having the wrong endian in CXML decompiler.

There is another benefit of rco-dump which is that the localised string files are recursively created at the same time, but it will not convert GIMs and VAGs like CXML decompiler.

The fix is simple, hash offsets are element offsets rather than byte offsets, so the offsets have to multiplied by 4. See It has some problems with constructing output pathes. Place the RCO file in the same directory when invoking the program, otherwise it will segfault.

These are the correct names for the CXML tables. (from PSM sdk

Code: [Select]
attr_type_int = 1         # 32bit整数
attr_type_float = 2       # 32bit浮動小数
attr_type_string = 3      # 文字列
attr_type_wstring = 4     # ワイド文字列
attr_type_hash = 5        # ハッシュ
attr_type_intarray = 6    # 32bit整数配列
attr_type_floatarray = 7  # 32bit浮動小数配列
attr_type_filename = 8    # ファイル
attr_type_id = 9          # ID
attr_type_idref = 10       # IDへの参照
attr_type_idhash = 11     # IDハッシュ
attr_type_idhashref = 12  # IDハッシュへの参照

Reverse Engineering / right.suprx and custom implementation
« on: August 28, 2020, 11:21:34 PM »
The module SceGameRightPlugin can be found at sce_sys/about/right.suprx in every retail title, containing a PlayStation Vita logo and Sony license information. To view this information, open the bubble context menu from the home screen, select "Information", then press in sequence triangle, square, select, and start.

This module can be decrypted with sceutils. The data segment contains a ARZL compressed GIM and a ARZL compressed UTF-8 text file. Normally this module is started by SceShell, which passes a struct pointer into module_start, containing memory allocation functions (ScePafHeap). module_start then returns a callback through the struct for SceShell to obtain the GIM and text files.

In the custom implementation, by using a detail of SceShell, we are able to find the module UID, obtain the module file path, and load the GIM and text from file using relative paths. This has the advantage of not needing to rebuild the module for different logos and texts. The custom implementation is distributed as part of Dolcesdk:

Tutorials / Building GCC cross-toolchain for Toshiba MeP
« on: July 28, 2020, 11:59:34 PM »
The steps were performed on a Ubuntu 18 machine with gcc 7.5.0. If your host environment differs you may have to adjust a few steps. This comes with no libraries, not even libgcc.


Get these from your distro repo

gcc, binutils, make, gmp, mpfr, mpc



Create the directory where you want to install it. Create build directories outside of the source directories. PREFIX is the installation directory.


Code: [Select]
"$BINUTILS_SRC_DIR/configure" --prefix="$PREFIX" --target=mep-elf --disable-shared --disable-nls --disable-werror
make -j$(nproc)
make install


Code: [Select]
"$GCC_SRC_DIR/configure" --prefix="$PREFIX" --enable-languages=c --target=mep-elf --disable-libgcc --disable-libquadmath --disable-libssp --disable-multilib --disable-nls --disable-shared MAKEINFO="$GCC_SRC_DIR/missing"
make -j$(nproc)
make install

PS Vita / [Release] LCD Colour Space Changer
« on: June 15, 2020, 04:55:39 PM »
Change the LCD colour space with one click and force colour space settings in PSPEmu applications. This program is only for PlayStation Vita 2000 models with LCD screens to toggle OLED emulation mode. Vita 1000 models already have OLED screens and do not have OLED emulation mode.

Source repository


Install lcd-colour-crunch.vpk with VitaShell. To force colour space settings in PSPEmu applications, write the module file path in the *KERNEL section of your taiHEN config.

Code: [Select]


Open LCD Colour Crunch to toggle between original mode and OLED emulation mode. You can do so even when a game is open.

(image from reddit user girotin)

This patch changes the 3D render and framebuffer resolutions of Persona 4 Golden on the Vita and PSTV to 1920x1080 or 1280x720. 1920x1080 can be output to HDMI, 1280x720 can be output to HDMI or USB (udcd-uvc), or Vita users can enjoy a supersampled image directly on the screen.


1. Install Persona 4 Golden and install the latest update, if available.
2. Install the latest version of Sharpscale and the configuration app.
3. Turn on "Unlock framebuffer size" in the Sharpscale configuration app.
4. Install p4goldenhd.suprx under the appropriate title ID in your taiHEN config.

PCSG00004 Japan
PCSG00563 Japan (reprint)
PCSE00120 North America
PCSB00245 Europe
PCSH00021 Asia

For example,

Code: [Select]

If you are experiencing problems:

1. Disable Vitagrafix for this game.
2. If the plugin is loaded, a message will appear in the top left corner when the game starts. If you do not see a message, then the plugin is not loaded. Verify your config file.


Overclocking is required for good performance. With 1920x1080, framerate ranges between 20-30 FPS, with 25-30 FPS in all but the most graphically intensive areas. With 1280x720, framerate is 30 FPS.


2020-06-10 v1.0.1

- Fixed a bug where pre-rendered videos are black when using the undub patch in 1920x1080 mode

Source code
Report bugs

Preview (open for full size)

PS Vita / [Release] Catherine Full Body HD 1280x720 Patch
« on: May 06, 2020, 02:20:32 AM »
For the first time ever, we are able to run a retail game for the Playstation Vita/TV rendered at 1280x720. This patch changes the 3D render and framebuffer resolutions of Catherine Full Body on the Vita and PSTV to 1280x720. 1280x720 can be output to HDMI or USB (udcd-uvc), or Vita users can enjoy a supersampled image directly on the screen.

Source code
Bug tracker

Video analysis by InquisitionImplied


1. Install Catherine Full Body and the latest patch 1.03
2. (optional) Install froidsan's English patch
3. Install the latest version of Sharpscale
4. Turn on "Unlock framebuffer size" in the sharpscale config app
5. Install catherinefbhd.suprx under PCSG01179

Code: [Select]

Performance summary:

Make sure you use LOLIcon or lolita444/500. PSVShell will crash if you open the menu while the game is open. Recommend "game def" profile in LOLIcon. Overclocking from 444 to 500 made no difference in performance.

Framerate ranges from 20-30fps with overclocking, with 25-30 in gameplay.

InquisitionImplied has made a detailed spreadsheet comparing performance at different rendering resolutions:

I want to thank InquisitionImplied for the excellent video and all the supportive people at CBPS.


2020-08-22 v1.2.0

- Fixed a crash when OSD is removed
- Updated OSD message

2020-06-13 v1.1.0

- File name changed to catherinefbhd.suprx
- OSD indicating patch success or failure
- Scale title logos

Preview images (open for full size)

Pages: [1] 2 3