VSH

From PS3 Developer wiki
Jump to: navigation, search

VSH is the internal name used by Sony for the VShell aka VirtualShell. It then loads up the XMB you know. XrossMediaBar (XMB). This, is a userspace executable (vsh.self), loaded by lv2_kernel/sys_init_osd.

from here several other functions/syscalls to other modules are made, e.g. lv2 (SELF decryption), lv1 (Secure_RTC, Storage_Manager, Gelic_Device, BD_Drive) etc.

not much is documented (yet) about this module. Please fill in where possible.

Modes[edit]

possible arguments to pass when executing vsh.self:

  • --mode=gametool
  • --mode=gametool2
  • --arcade=true

Offsets[edit]

Function 3.55 3.41 3.15 Notes
- - - - -
sub_308EE4 check_Is_Act_Dat_for_This_Acc_ID

Exports[edit]

VSH Exports

Imports[edit]

VSH Imports

Memory Containers[edit]

Type/Id Name Size Usage
0 game dex: 426.770.432 / cex: 223.346.688 Bytes
1 app 223.346.688 Bytes
Spurs (Tiff, Png, Jpg)
autodownload_plugin
custom_render_plugin
dlna_plugin
fchk (libfs_utility2)
game_ext_plugin 
impose_plugin
libfs_utility_init 
vshmain_util 
mms
libsre libadec
libac3dec
paf_ext
qglbase
vshmain_ext
msgdialog_plugin
msmw1
msmw2
podl_plugin
premo_plugin
software_update_plugin
soundvisualizer_plugin
system_plugin
vshmain_util
xmb_plugin (XMB normal)
ycon_manual_plugin
2 debug 203.423.744 Bytes
3 fg (foreground) 3.145.728 Bytes
User Information
auth_plugin
avc2_text_plugin
comboplay_plugin
ps3_savedata_plugin
game_plugin
deviceconf_plugin
fchk (libfs_utility2)
friendim_plugin
friendlm_plugin 
friendtrophy_plugin
game_plugin
gameupdate_plugin
libfs_utility_init
vshmain_util 
mms
np_eula_plugin
np_sns_plugin
np_multisignin_plugin
npsignin_plugin
osk_plugin
photoUtil
photoUtil2
photo_network_sharing_plugin
print_plugin
profile_plugin
screenshot_plugin
upload_util
xmb_ingame
4 bg (background) 3.145.728 Bytes
avc_plugin
avc2_game_plugin
audioplayer_plugin
audioplayer_plugin_mini
music playback/decode
rec_plugin
imejp (service type=1)
ime_atok_module

Loaded Views[edit]

These Views and prx files are loaded by default and are accessable without further loading, all others need to be loaded.

Regular XMB[edit]

system_plugin
xmb_plugin
explore_plugin
category_setting_plugin
impose_plugin

InGame XMB[edit]

system_plugin
xmb_plugin
explore_plugin
game_plugin
impose_plugin

InGame[edit]

game_plugin
impose_plugin

VSH Service Communication (CXML Header Magic)[edit]

CMND - 
PARA - System Parameters Utility
MSGD - Message Dialog Utility
NTCL - netcl Utility
SAVE - Save Data Utility (surf autosave) 
USRI - User Information Utility
GAME - Game Utility
GDAT - Game Data Utility
GDTL - (uses DGAM)
DGAM - Disc Game-Mode Utility
GEXE - Game Execution Utility
GPS1 - Game PS1 Rumble
OSKD - On Screen Keyboard Utility
NPMG - NP Manager Utility
NPMT - NP Matching Utility
NMT2 - NP Matching 2 Utility
NPSN - NP Signaling Utility
NPBA - NP Basic Utility
NPTR - NP Trophy
NPFL - NP Friendlist Utility
NPCU - NP Commerce Registration?
NPDR - NP DRM Utility
NPCM - NP Commerce Utility
NPC2 - NP (Ingame) Commerce 2 Utility
NPIN - NP Install (Commerce)
WBRW - WebBrowser Utility
SYSC - System (Device/Pad) Configuration
NPRA - NP Score/Ranking Utility
NPLU - NP LookUp
NPUS - NP User Storage
STDT - Storage Data Copy Utility
PHEX - Photo Export
PHE2 - Photo Export (Utility 2)
PHIM - Photo Import
PHDE - Photo Decode
BGDL - Background Download Service
IMEJ - Input Method Engine Japanese
MUSC - Music Playback
MUDE - Music Decode
VDPL - Video Player
DTCP - DTCP IP Service
DPSN - Decrypt PSN Video Service
SRCH - Search
PNSU - Photo Network Sharing
PRIN - Printer Utility
AVCH - Audio-Voice/Video Chat Utility
AVC2 - Audio-Voice/Video Chat Utility 2
RMTP - Remote Play
SUBD - SubDisplay Utility
RECO - Recording Utility
APNT - Access Point Utility
VDUP - Video Upload
GUPD - Game Upate Check
RTCA - RTC Alarm
SSHT - ScreenShot
ATHD - (Password) Authentication Dialog
EULA - 
COMB - Combo Playing(Cross Controller)
PESM -
CHAT - System Chat
NSNS - NP Social Networking Services (Facebook Api)

Notification Window Textures[edit]

Notification Window Textures (inside dev_flash/vsh/resource/system_plugin.rco)

All the icons are 100x100 pixels size

  • tex_notification_caution
  • tex_notification_friend
  • tex_notification_headset
  • tex_notification_info
  • tex_notification_keypad
  • tex_notification_mediaserver
  • tex_notification_music
  • tex_notification_psbutton_insensitive
  • tex_notification_settings
  • tex_notification_trophy_bronze
  • tex_notification_trophy_gold
  • tex_notification_trophy_platinum
  • tex_notification_trophy_silver

The other texture used by notification window is the frame of the notification window itself (called "tex_notification" with a size of 64x64 pixels), this frame is scalated in width automatically by XMB (to make the frame fit the width of the text that is displayed inside the window), and is posible to reskin the frame using a Theme

  • Any texture from any plugin can be used actually. i.e.: tex_common_dialog. Would it be possible to create our own textures?
    • Sure, there is no security check over .RCO's (resource containers), what is not clear is if is posible to load a texture with a custom name from a .RCO with a custom name (e.g: tex_myicon from a file named: myresources.rco)... Initially .SPRX needs to be "indexed" by VSH to be available, and .RCO's are dependant of .SPRX... but in case of the resources is posible all are available --Sandungas (talk) 19:22, 20 May 2014 (EDT)

Display Buffers[edit]

VSH uses 2 of 8 available display buffers. Information about them can be aquired by vsh plugins using this code snippet: [[1]]
In FW 4.46 DEX the buffer info looks like this (for 1920x1080):

Type This
GCMBUFINFO 0
address: 0xdc80000
pitch: 0x2000
width: 0x780
height: 0x438
 
GCMBUFINFO 1
address: 0xe500000
pitch: 0x2000
width: 0x780
height: 0x438

Settings[edit]

VSH contains an array of structs which describes the xRegistry.sys. (More Information about its access Talk:VSH )

struct Setting_s
{
  int32_t index;
  const char* name;
  int32_t unk0;
  int8_t unk1;
  union
  {
     int32_t integer;
     const char* string;
  }default;
  int32_t type;
  int32_t unk2;
};

The first element of this array describes the password setting. Use this script to label all of the settings. link

.long 1                 # index
.long aSettingParen_4   # name # "/setting/parental/passwordNumber"
.long 1                 # unk0
.byte 1                 # unk1
.byte 0, 0, 0
.long a0000_1           # default # "0000"
.long 4                 # type
.long 0x28              # unk2

Events[edit]

Global Event Queue Id's:

Polling Service
0x8006020000000030
0x8006020000000010
0x8006020000000002
0x8006020000000000
CMND Service (Connect)
0x8006010000000100
0x8006010000000101
0x8006010000000102
0x8006010000000103
SceNpTusVsh
0x0800604000000902 

Title IDs[edit]

Clears a Memory Container in relation of this game and a camera (disables video chat etc.?)
BLUS20001 Ridge Racer 7
BCAS20001 Ridge Racer 7
BLJS10001 Ridge Racer 7
BCES00009 Ridge Racer 7
BCKS10001 Ridge Racer 7
Circumvents an AudioOut Setting that made the game freeze/black screen
BLUS30264 Afro Samurai 
BLES00516 Afro Samurai
NPUB90215 Afro Samurai (Demo)
BLJM60130 Street Fighter IV
BLUS30265 Street Fighter IV
BLES00481 Street Fighter IV
BCJB95006 Torne
NPIA00005 PlayStation Home
NPIA00009 
NPIA00010 PlayStation Home
NPIA00011
NPEA00013 PlayStation Home
WebBrowser finalize executed without mutex/lock syncs
NPJB00001 Tekken 5: Dark Resurrection
NPUB30009 Tekken 5: Dark Resurrection
NPJB00023 Crystal Defenders 
NPUB30092 Crystal Defenders