System plugin
1 Identifier:
- 1
1 Interface
contains 36 subs:
0: 2 Parameter: char * , int flags - dev_hdd0/theme related, loads theme? 1: 2 Parameter: float, int 2: 1 Parameter: out: void * float[4] 3: 1 Parameter: in: void * float[4] 4: 1 Parameter: uint8_t [0x100?]- collects Progress Base/bar textures (tex_default_progress_base, tex_default_progress_base_shadow, and tex_default_progress_slider?) 5: 1 Parameter: uint8_t [0x148] - collects sounds (snd_decide, snd_cancel, snd_cursor and snd_category_decide) 6: 7: 2 Parameter: uint8 , float - page_default_theme / page_wallpaper_theme 8: 2 Parameter: uint8 , float (500.00) - page_default_theme / page_wallpaper_theme 9: 2 Parameter: float, float - wallpaper_theme_plane 10: 2 Parameter: int (1), float (100.0) 11: 5 Parameter: int * tex_dialog (ex. infoicon), int* tex_dialog_shadow (infoicon_shadow) , wchar * infotext1, char * infotext2, int type - create page_infobar /infoicon /infotext1/infotext2 12: 1 Parameter: uint8 ( 0 = _vshcommon_8D173737, else -> PageClose )- page_infobar 13: 0 Parameter: return uint8 (infobar activated (1)/closed (0)?) 14: 1 Parameter: Set, uint8_t [ ] - infoicon 15: 1 Parameter: Set, uint8_t [0x1C] {wchar * } - infotext1 16: 1 Parameter: Set, uint8_t [0x1C] {wchar * } - infotext2 17: 0 Parameter: - busy_increase (tex_busy_l.gim "long" and tex_busy_s.gim "short" clock hands textures rotates in clockwise direction at fast speed) 18: 0 Parameter: - busy_decrease (tex_busy_l.gim "long" and tex_busy_s.gim "short" clock hands textures rotates in counterclockwise direction at fast speed) 19: 1 Parameter: uint8_t 0=False/1=True - show page_busy 20: 1 Parameter: uint8_t - busy_long / busy_short 21: 1 Parameter: uint8_t - anim_cross_circle_show_hide <-- typo? anim_cross_show_hide --> 22: 1 Parameter: uint8_t - anim_cross_circle_show_hide <-- typo? anim_circle_show_hide --> 23: 1 Parameter: uint8_t - anim_triangle_show_hide 24: 1 Parameter: uint8_t - anim_rectangle_show_hide 25: 2 Parameter: uint8_t [0x1C], wchar * - cross_text 26: 2 Parameter: uint8_t [0x1C], wchar * - circle_text 27: 2 Parameter: uint8_t [0x1C], wchar * - triangle_text 28: 2 Parameter: uint8_t [0x1C], wchar * - rectangle_text 29: 8 Parameter: float, int, char *, int, int *, int *, char *, char * - notification 30: 1 Parameter: char * (Example: "msg_press_ps_button") 31: 1 Parameter: char * bmp_path ("%s/screen%03d.bmp") - "saveBMP", takes a XMB screendump (make sure you set a dynamic theme, else console freezes after dump) 32: 0 Parameter: - Set up page_notification 33: 0 Parameter: - Dummy XMB start ( DEX ) 34: 0 Parameter: - Dummy XMB stop ( DEX ) 35: 0 Parameter: - Dummy XMB start/stop ( DEX )
RCO notes
Busy animation
It seems all the versions of system_plugin.rco (not checked fully) contains a page named "page_busy" which purpose is to display an animated icon at top-right corner of the XMB screen
In old firmwares (around 2.17) the "page_busy" animation was made with 2 images composed by an stripe of 30 frames each, "tex_busy.gim" are the main frames displayed on top (29x25 pixels each frame), and "tex_busy_shadow.gim" are the frames of his shadows (32x32 pixels each frame). The sprx crops the frames on runtime and displays them sequentially to create the animation. This animation is commonly knows as the waterdrop animation
There is a second version of the waterdrop animation (around firmwares 2.50 up to 2.80 or so) that works a bit different, the image "tex_busy" have a bigger frame size (32x32 pixels) and his frame order seems to be inverted, also the GIM settings of both images was modifyed from rgba8888 (lossless) to dxt5 (lossy) so are a bit more pixelated
In modern firmwares the waterdrop animation was removed, but the codenames and filenames inside the RCO was repurposed. The XMB represents the busy state with a visual effect generated by rotating the clock hands textures (tex_busy_l.gim and tex_busy_s.gim) at fast speed, and scaling up and down the clock sphere named "tex_busy.gim" (an icon of 36x36 pixels) together with his shadow named "tex_busy_shadow.gim" (an icon of 46x46 pixels)
The way how this 3 different styles used in the busy animation works internally are very different, the sprx had some changes related with this. It doesnt seems to be posible to "port" the old waterdrop animation to the modern firmwares
Code Sample
Code Sample