Talk:PlayStation 3 Theme (P3T): Difference between revisions

From PS3 Developer wiki
Jump to navigation Jump to search
m (Sandungas moved page Talk:Themes (.p3t) to Talk:PlayStation 3 Theme (P3T) without leaving a redirect: renamed to match the same style than the other container pages)
mNo edit summary
 
(23 intermediate revisions by the same user not shown)
Line 2: Line 2:


===Standarizing "theme format" names===
===Standarizing "theme format" names===
The standarization of theme names used in the front page can be polemic and initially confusing, but after some brainstorming i realized we need to "keep the sony standards naming" and at the same time think in another way to name the different methods used with animated themes, and here is where the confussion starts because "the scene" has been using names that are limited in long term for his possible derivations e.g: "slideshow" "pro slideshow" "dynamic pro slideshow", etc... (big mention here to glowball for his experiments, cheers)
The standarization of theme names used in the front page can be polemic and initially confusing, but after some brainstorming i realized we need to keep the sony standards naming and at the same time think in another way to name the different methods used with animated themes, and here is where the confussion starts because "the scene" has been using names that are limited in long term for his possible derivations e.g: "slideshow" "pro slideshow" "dynamic pro slideshow", etc... (big mention here to glowball for his experiments, cheers)


The point is if you take a "dynamic pro slideshow" as base and add to it a new 3d sphere + more semitransparent layers + etc + etc this is a "dynamic pro slideshow multilayer with a 3d object, etc..." ?... well, it sounds supercool (ironic) for a resume, but not even this long name defines how has been created, to make a list we need the "method" or "technique" used, so i propose something like this:
The point is if you take a "dynamic pro slideshow" as base and add to it a new 3d sphere + more semitransparent layers + etc + etc this is a "dynamic pro slideshow multilayer with a 3d object, etc..." ?... well, it sounds supercool (ironic) for a resume, but not even this long name defines how has been created, to make a list we need the "method" or "technique" used.


The big difference (that keeps the standard naming) is static doesnt use an script.js, and dynamic does... we will have problems to give a name to the "methods" but i think this way to focus is better, any idea or suggestion is welcome --[[User:Sandungas|Sandungas]] 11:01, 14 February 2013 (MSK)
The big difference (that keeps the standard naming) is static doesnt use an script.js, and dynamic does... we will have problems to give a name to the "methods" but i think this way to focus is better, any idea or suggestion is welcome --[[User:Sandungas|Sandungas]] 11:01, 14 February 2013 (MSK)
*Dynamic background (.RAF)
**Method 1 (3d model.dae covering all the background, several .dds textuers applyed over the model, the script changes the texture every 10 seconds)
**Method 2 (no 3d model, several .dds textuers in the background, the script changes the the transparency of textures every 10 seconds)
**Method 3 (no 3d model, several .dds textuers in the background, the script moves the textures from right to left with a fadeout every 10 seconds)
**Method 4 etc... (note all this methods in the examples are "slideshows")
*Notes about Dynamic background (.RAF)
Some themes using this script might not work under some aspect ratios. Instead, directly or after the first "slideshows" image, classic theme with the color selection from your theme will be loaded.


===Backgrounds linked to clock time===
===Backgrounds linked to clock time===
*[http://www.multiupload.nl/BH6PD8YO4D PS3 Themes background testkit v1.zip]
*[http://rghost.net/59623568 PS3 Themes background testkit v1.zip]
A collection of themes using the background examples explained in front page, the zip contains several example themes xml's and 24 numbered backgrounds + 2 special backgrounds with the text "win" and "failsafe" in both 4:3 and 16:9 aspect ratios for a total of 52 backgrounds, this background are intented to create special events and collisions (feel free to add more examples to the .zip, upload again, and replace the link by "testkit v2", v3, etc...)
A collection of themes using the background examples explained in front page, the zip contains several example themes xml's and 24 numbered backgrounds + 2 special backgrounds with the text "win" and "failsafe" in both 4:3 and 16:9 aspect ratios for a total of 52 backgrounds, this background are intented to create special events and collisions (feel free to add more examples to the .zip, upload again, and replace the link by "testkit v2", v3, etc...)


*Notes
*Notes
To see an interesting example of how backgrounds are linked to the clock time compile "Test 15bg to seconds.xml" theme, then install and "apply", and... press "x" button again over "apply" repeatedly as faster as possible (lol), you will see how the background numbers increases 1 by 1. Now wait 3 seconds and press "apply" again and the number in screen has increased in +3
To see an interesting example of how backgrounds are linked to the system clock, compile "Test 15bg to seconds.xml" theme, then install and "apply", and... press "x" button again over "apply" repeatedly as faster as possible (lol), you will see how the background numbers increases 1 by 1. Now wait 3 seconds and press "apply" again and the number in screen has increased in +3. This means every time the theme is applyed (or everytime the PS3 boots) is readed the system clock, and a background is choosen based in the seconds of the clock. This is also a way to make a theme with (semi) random backgrounds that will be selected based in the time when the PS3 was turned on.


===p3t format, p3tcompiler, and p3textractor notes===
===p3t format, p3tcompiler, and p3textractor notes===
Line 47: Line 38:
}}
}}


---
{{Boxcode|width=auto|float=left|title=p3t format, standard order of tags after compilation''' (based in the tags stored in the xml table inside the .p3t file)|code=<syntaxhighlight lang="xml">
 
{{Boxframe5|content=
'''p3t format, standard order of tags after compilation''' (based in the tags stored in the xml table inside the .p3t file)
{{Boxcode|content=<syntaxhighlight lang="xml">
<infotable>
<infotable>
<info>
<info>
Line 76: Line 63:
<color>
<color>
</syntaxhighlight>}}
</syntaxhighlight>}}
}}
 
{{clear}}


==Maximum number of installed themes==
==Maximum number of installed themes==
Line 82: Line 70:
  <Text name="msg_error_install_theme_over_delete_other_theme">The maximum number of themes that can be installed has been reached.
  <Text name="msg_error_install_theme_over_delete_other_theme">The maximum number of themes that can be installed has been reached.
  To install this theme, you must delete an existing theme.</Text>
  To install this theme, you must delete an existing theme.</Text>
==Preinstalled themes resources==
<Mugi> the ones in the RCO's are used by the classic theme
<Mugi> the default theme uses the DDS icons from icontex.qrc
<Mugi> looks like i was wrong, the classic theme doesnt' use the icosn from the RCO either
<Mugi> maybe sony changed it since the last time i toyed with this, no clue
<Mugi> im sure it did at some point
==Firmware resources overrided by themes==
===[[system_plugin]].rco===
{{Boxcode|code=<syntaxhighlight lang="xml">
<!-- This XML representation of an RCO structure was generated by Rcomage v1.1.2 -->
<RcoFile UMDFlag="0" rcomageXmlVer="1.1" type="ps3" minFirmwareVer="unknownId0x130">
<MainTree name="system_plugin">
<ImageTree>
...
<Image name="tex_pointer_arrow" src="tex_pointer_arrow.gim" format="gim" compression="zlib" unknownByte="0" />
<Image name="tex_pointer_finger" src="tex_pointer_finger.gim" format="gim" compression="zlib" unknownByte="0" />
<Image name="tex_pointer_pen" src="tex_pointer_pen.gim" format="gim" compression="zlib" unknownByte="0" />
<Image name="tex_pointer_hand" src="tex_pointer_hand.gim" format="gim" compression="zlib" unknownByte="0" />
<Image name="tex_pointer_grab" src="tex_pointer_grab.gim" format="gim" compression="zlib" unknownByte="0" />
<Image name="tex_pointer_click" src="tex_pointer_click.gim" format="gim" compression="zlib" unknownByte="0" />
...
<Image name="tex_notification" src="tex_notification.gim" format="gim" compression="zlib" unknownByte="0" />
...
</ImageTree>
<SoundTree>
<Sound name="snd_cursor" src="snd_cursor.ch*.vag" format="vag" channels="2" /> <!-- Cursor movements: left, right, up, down -->
<Sound name="snd_decide" src="snd_decide.ch*.vag" format="vag" channels="2" /> <!-- Question -->
<Sound name="snd_cancel" src="snd_cancel.ch*.vag" format="vag" channels="2" /> <!-- Close/exit a options menu -->
<Sound name="snd_category_decide" src="snd_category_decide.ch*.vag" format="vag" channels="2" /> <!-- ??? (not remapeable from theme) -->
<Sound name="snd_option" src="snd_option.ch*.vag" format="vag" channels="2" /> <!-- Open/enter a options menu -->
<Sound name="snd_error" src="snd_error.ch*.vag" format="vag" channels="2" /> <!-- Error (not remapeable from theme) -->
<Sound name="snd_system_ok" src="snd_system_ok.ch*.vag" format="vag" channels="2" /> <!-- Accept -->
<Sound name="snd_system_ng" src="snd_system_ng.ch*.vag" format="vag" channels="2" /> <!-- ??? (not remapeable from theme) -->
<Sound name="snd_trophy" src="snd_trophy.ch*.vag" format="vag" channels="1" /> <!-- Trophy unlocked (not remapeable from theme) -->
</SoundTree>
<TextTree>
...
</TextTree>
<ObjectTree>
...
</ObjectTree>
<AnimTree>
...
</AnimTree>
</MainTree>
</RcoFile>
</syntaxhighlight>}}
====Navigation sounds====
All the sounds are 2 channels stereo (except trophy sound that is 1 channel mono), every channel is a separated file with its name ending in 0 or 1... (for mono 0 is both channels... and for stereo 0 is left and 1 right ?), the complete list of files extracted raw without conversion from [[system_plugin]].rco are:
snd_cancel.ch0.vag
snd_cancel.ch1.vag
snd_category_decide.ch0.vag
snd_category_decide.ch1.vag
snd_cursor.ch0.vag
snd_cursor.ch1.vag
snd_decide.ch0.vag
snd_decide.ch1.vag
snd_error.ch0.vag
snd_error.ch1.vag
snd_option.ch0.vag
snd_option.ch1.vag
snd_system_ng.ch0.vag
snd_system_ng.ch1.vag
snd_system_ok.ch0.vag
snd_system_ok.ch1.vag
snd_trophy.ch0.vag
Only 5 of them can be remapped from an official .p3t theme
{{Boxcode|code=<syntaxhighlight lang="xml">
<theme>
<!-- Navigation sounds ------------------------------------------------------------------------------->
<setable>
<se id="se_cursor" src="se_cursor.vag"/> <!-- Cursor movements: left, right, up, down -->
<se id="se_optionmenu" src="se_optionmenu.vag"/> <!-- Open/enter a options menu -->
<se id="se_cancel" src="se_cancel.vag"/> <!-- Close/exit a options menu -->
<se id="se_decide" src="se_decide.vag"/> <!-- Question -->
<se id="se_system_ok" src="se_system_ok.vag"/> <!-- Accept -->
</setable>
</theme>
</syntaxhighlight>}}
====Mouse pointers====
All them can be remapped from an official .p3t theme
{{Boxcode|code=<syntaxhighlight lang="xml">
<theme>
<!-- Mouse pointers ---------------------------------------------------------------------------------->
<pointertable>
<pointer id="pointer_arrow" src="pointer_arrow.png" base_x="20" base_y="5"/> <!-- Arrow (default) -->
<pointer id="pointer_pen" src="pointer_pen.png" base_x="5" base_y="40"/> <!-- Pen (text input) -->
<pointer id="pointer_finger" src="pointer_finger.png" base_x="15" base_y="10"/> <!-- Hand Over Clickable Object -->
<pointer id="pointer_click" src="pointer_click.png" base_x="15" base_y="10"/> <!-- Hand Clicking Object -->
<pointer id="pointer_hand" src="pointer_hand.png" base_x="25" base_y="20"/> <!-- Hand Over Draggable Object -->
<pointer id="pointer_grab" src="pointer_grab.png" base_x="25" base_y="20"/> <!-- Hand Dragging Object -->
</pointertable>
</theme>
</syntaxhighlight>}}
====Notification window frame====
{{Boxcode|code=<syntaxhighlight lang="xml">
<theme>
<!-- Notification window ----------------------------------------------------------------------------->
<notification src="notification.png"/>
</theme>
</syntaxhighlight>}}
===[[lines.qrc]]===
====Background====
{{Boxcode|code=<syntaxhighlight lang="xml">
<theme>
<!-- Background -------------------------------------------------------------------------------------->
<bgimagetable>
<bgimage hd="hd_1.jpg" sd="sd_1.jpg"/>
</bgimagetable>
</theme>
</syntaxhighlight>}}
===[[icons.qrc]]===
====Color====
{{Boxcode|code=<syntaxhighlight lang="xml">
<theme>
<!-- Color ------------------------------------------------------------------------------------------->
<color selection="10"/> <!-- 1 to 12: color of a month, 0: changes with the month  -->
</theme>
</syntaxhighlight>}}
===[[icontex.qrc]]===
====Icons textures====
{{Boxcode|code=<syntaxhighlight lang="xml">
<theme>
<!-- Icons -------------------------------------------------------------------------------------------->
<icontable>
<!----------------------- horizontal row ------------------->
<icon id="icon_user" src="icon_user.png"/>
<icon id="icon_setting" src="icon_setting.png"/>
<icon id="icon_photo" src="icon_photo.png"/>
<icon id="icon_music" src="icon_music.png"/>
<icon id="icon_video" src="icon_video.png"/>
<icon id="icon_game" src="icon_game.png"/>
<icon id="icon_network" src="icon_network.png"/>
<icon id="icon_friend" src="icon_friend.png"/>
<icon id="icon_tv" src="icon_tv.png"/>
<!-------------------------- user column ----------------------->
<icon id="icon_poweroff" src="icon_poweroff.png"/>
<icon id="icon_newuser" src="icon_newuser.png"/>
<!---------------------- settings column --------------------->
<icon id="icon_update" src="icon_update.png"/>
<icon id="icon_game_setting" src="icon_game_setting.png"/>
<icon id="icon_bdvd_setting" src="icon_bdvd_setting.png"/>
<icon id="icon_music_setting" src="icon_music_setting.png"/>
<icon id="icon_chat_setting" src="icon_chat_setting.png"/>
<icon id="icon_system_setting" src="icon_system_setting.png"/>
<icon id="icon_theme_setting" src="icon_theme_setting.png"/>
<icon id="icon_datetime_setting" src="icon_datetime_setting.png"/>
<icon id="icon_powersave_setting" src="icon_powersave_setting.png"/>
<icon id="icon_accessory" src="icon_accessory.png"/>
<icon id="icon_printer_setting" src="icon_printer_setting.png"/>
<icon id="icon_display_setting" src="icon_display_setting.png"/>
<icon id="icon_sound_setting" src="icon_sound_setting.png"/>
<icon id="icon_security_setting" src="icon_security_setting.png"/>
<icon id="icon_remoteplay_setting" src="icon_remoteplay_setting.png"/>
<icon id="icon_network_setting" src="icon_network_setting.png"/>
<icon id="icon_setting_item" src="icon_setting_item.png"/>
<!------------ photo/music/video columns ---------------------------->
<icon id="icon_photo_default" src="icon_photo_default.png"/>
<icon id="icon_photo_album_default" src="icon_photo_album_default.png"/>
<icon id="icon_music_default" src="icon_music_default.png"/>
<icon id="icon_music_album_default" src="icon_music_album_default.png"/>
<icon id="icon_video_default" src="icon_video_default.png"/>
<icon id="icon_video_album_default" src="icon_video_album_default.png"/>
<!-------------------------- game column ----------------------->
<icon id="icon_gamedata" src="icon_gamedata.png"/>
<icon id="icon_savedata" src="icon_savedata.png"/>
<icon id="icon_savedata_minis" src="icon_savedata_minis.png"/>
<icon id="icon_vmc" src="icon_vmc.png"/>
<icon id="icon_newvmc" src="icon_newvmc.png"/>
<icon id="icon_trophy" src="icon_trophy.png"/>
<!----------------------- network column --------------------------->
<icon id="icon_onlinemanual" src="icon_onlinemanual.png"/>
<icon id="icon_remoteplay" src="icon_remoteplay.png"/>
<icon id="icon_inet_search" src="icon_inet_search.png"/>
<icon id="icon_browser" src="icon_browser.png"/>
<icon id="icon_download" src="icon_download.png"/>
<!--------------------------- psn column ---------------------------->
<icon id="icon_accountmanage" src="icon_accountmanage.png"/>
<!----------------------- friends column ------------------------>
<icon id="icon_blocklist" src="icon_blocklist.png"/>
<icon id="icon_addfriend" src="icon_addfriend.png"/>
<icon id="icon_playermet" src="icon_playermet.png"/>
<icon id="icon_chat" src="icon_chat.png"/>
<icon id="icon_chatroom" src="icon_chatroom.png"/>
<icon id="icon_chatroom_text" src="icon_chatroom_text.png"/>
<icon id="icon_mbox" src="icon_mbox.png"/>
<icon id="icon_mbox_received" src="icon_mbox_received.png"/>
<icon id="icon_mbox_sent" src="icon_mbox_sent.png"/>
<icon id="icon_mbox_create" src="icon_mbox_create.png"/>
<!------------------------------ devices ----------------->
<icon id="icon_ms" src="icon_ms.png"/>
<icon id="icon_sd" src="icon_sd.png"/>
<icon id="icon_cf" src="icon_cf.png"/>
<icon id="icon_usb" src="icon_usb.png"/>
<icon id="icon_psp" src="icon_psp.png"/>
<icon id="icon_pspms" src="icon_pspms.png"/>
<icon id="icon_usbcamera" src="icon_usbcamera.png"/>
<icon id="icon_usbaad" src="icon_usbaad.png"/>
<!------------------------- media player ---------------------->
<icon id="icon_playing" src="icon_playing.png"/>
<icon id="icon_mediaserver_search" src="icon_mediaserver_search.png"/>
<icon id="icon_playlist" src="icon_playlist.png"/>
<icon id="icon_playlist_add" src="icon_playlist_add.png"/>
<icon id="icon_video_upload" src="icon_video_upload.png"/>
<!------------------------ default icons ------------------------>
<icon id="icon_default_h" src="icon_default_h.png"/>
<icon id="icon_default_v" src="icon_default_v.png"/>
</icontable>
</theme>
</syntaxhighlight>}}
===Fonts ?===
====Font====
{{Boxcode|code=<syntaxhighlight lang="xml">
<theme>
<!-- Font -------------------------------------------------------------------------------------------->
<font selection="1"/> <!-- 0: original, 1: rounded, 2: pop -->
</theme>
</syntaxhighlight>}}
==Firmware theme settings==
===[[sysconf_plugin]].rco===
{{Boxcode|code=<syntaxhighlight lang="xml">
<RcoFile UMDFlag="0" rcomageXmlVer="1.1" type="ps3" minFirmwareVer="unknownId0x120">
<MainTree name="sysconf_plugin">
<ImageTree>
...
</ImageTree>
<FontTree>
...
<FontStyle name="fontstyle_sanserif" unknownShort1="0x1" unknownShort2="0x0" unknownInt3="0x0" unknownInt4="0x41600000" />
...
</FontTree>
<TextTree>
...
</TextTree>
<ObjectTree>
...
<Page name="page_theme_config" unknownInt0="0x1110000" onInit="event:native:/OnInitMenuThemeConfig" onCancel="event:native:/OnCancelMenuThemeConfig" onContextMenu="nothing" onActivate="event:native:/OnActivateMenuThemeConfig">
<XList name="xlist_theme_config" posX="0" posY="0" objectScale="0" redScale="1" greenScale="1" blueScale="1" alphaScale="1" width="0" height="0" posUnknown="0" scaleWidth="1" scaleHeight="1" elementScale="1" iconOffset="0x0" onLoad="event:native:/OnInitXmListThemeConfig" unknown17="0x0" unknown18="0x0" unknown19="0x0" unknownInt20="0x0" unknownInt21="0x0" unknown22="0x0" unknownInt23="0x0" onMove="event:native:/OnCursorMoveXmListThemeConfig" onScrollIn="event:native:/OnScrollInXmListThemeConfig" onScrollOut="nothing" onPush="event:native:/OnPushXmListThemeConfig" onContext="nothing" onCancel="event:native:/OnCancelMenuThemeConfig" unknownEvent36="nothing"></XList>
</Page>
<Page name="page_theme_config_theme" unknownInt0="0x1110000" onInit="nothing" onCancel="event:native:/OnCancelThemeConfig" onContextMenu="nothing" onActivate="nothing"></Page>
<Page name="page_theme_config_color" unknownInt0="0x1110000" onInit="nothing" onCancel="event:native:/OnCancelThemeConfig" onContextMenu="nothing" onActivate="nothing"></Page>
<Page name="page_theme_config_background" unknownInt0="0x1110000" onInit="nothing" onCancel="event:native:/OnCancelThemeConfig" onContextMenu="nothing" onActivate="nothing"></Page>
<Page name="page_theme_config_font" unknownInt0="0x1110000" onInit="nothing" onCancel="event:native:/OnCancelThemeConfig" onContextMenu="nothing" onActivate="nothing"></Page>
<Page name="page_theme_info" unknownInt0="0x1110000" onInit="event:native:/OnInitPageThemeInfo" onCancel="event:native:/OnCancelPageThemeInfo" onContextMenu="nothing" onActivate="event:native:/OnActivatePageThemeInfo">
<Plane name="plane_theme_info" posX="0" posY="0" objectScale="0" redScale="1" greenScale="1" blueScale="1" alphaScale="1" width="0" height="0" posUnknown="0" scaleWidth="1" scaleHeight="1" elementScale="1" iconOffset="0x0" onLoad="nothing" unknown17="0x0" unknown18="0x0" unknown19="0x0" unknownInt20="0x0" unknownInt21="0x0" unknown22="0x0" image="nothing" unknownInt24="0x0">
<Plane name="plane_preview" posX="0" posY="0" objectScale="0" redScale="1" greenScale="1" blueScale="1" alphaScale="1" width="0" height="0" posUnknown="0" scaleWidth="1" scaleHeight="1" elementScale="1" iconOffset="0x200000" onLoad="nothing" unknown17="0x59040100" unknown18="0x5a040100" unknown19="0x100" unknownInt20="0x1045b" unknownInt21="0x1045c" unknown22="0x0" image="nothing" unknownInt24="0x0"></Plane>
<IList name="list_theme_info" posX="0" posY="0" objectScale="0" redScale="1" greenScale="1" blueScale="1" alphaScale="1" width="0" height="0" posUnknown="0" scaleWidth="1" scaleHeight="1" elementScale="1" iconOffset="0x110000" onLoad="event:native:/OnInitIlistThemeInfo" unknown17="0x61040100" unknown18="0x62040100" unknown19="0x100" unknownInt20="0x0" unknownInt21="0x10463" unknown22="0x0" unknown23="0x0" unknown24="0x0" unknownRef25="nothing" unknownRef27="nothing" unknownEvent29="nothing" unknownRef31="nothing" unknownRef33="nothing" unknownRef35="nothing" unknownRef37="nothing">
<Scroll name="scroll_theme_info" posX="0" posY="0" objectScale="0" redScale="1" greenScale="1" blueScale="1" alphaScale="1" width="8" height="172" posUnknown="1" scaleWidth="1" scaleHeight="1" elementScale="1" iconOffset="0x0" onLoad="nothing" unknown17="0x0" unknown18="0x0" unknown19="0x0" unknownInt20="0x0" unknownInt21="0x0" unknown22="0x0" unknownFloat23="100" unknownFloat24="100" unknown25="0x0" unknownRef26="nothing" unknownRef28="nothing" unknownRef30="nothing" unknownRef32="nothing" unknownRef34="nothing"></Scroll>
</IList>
</Plane>
</Page>
...
</ObjectTree>
</MainTree>
</RcoFile>
</syntaxhighlight>}}

Latest revision as of 04:01, 30 August 2021


Standarizing "theme format" names[edit source]

The standarization of theme names used in the front page can be polemic and initially confusing, but after some brainstorming i realized we need to keep the sony standards naming and at the same time think in another way to name the different methods used with animated themes, and here is where the confussion starts because "the scene" has been using names that are limited in long term for his possible derivations e.g: "slideshow" "pro slideshow" "dynamic pro slideshow", etc... (big mention here to glowball for his experiments, cheers)

The point is if you take a "dynamic pro slideshow" as base and add to it a new 3d sphere + more semitransparent layers + etc + etc this is a "dynamic pro slideshow multilayer with a 3d object, etc..." ?... well, it sounds supercool (ironic) for a resume, but not even this long name defines how has been created, to make a list we need the "method" or "technique" used.

The big difference (that keeps the standard naming) is static doesnt use an script.js, and dynamic does... we will have problems to give a name to the "methods" but i think this way to focus is better, any idea or suggestion is welcome --Sandungas 11:01, 14 February 2013 (MSK)

Backgrounds linked to clock time[edit source]

A collection of themes using the background examples explained in front page, the zip contains several example themes xml's and 24 numbered backgrounds + 2 special backgrounds with the text "win" and "failsafe" in both 4:3 and 16:9 aspect ratios for a total of 52 backgrounds, this background are intented to create special events and collisions (feel free to add more examples to the .zip, upload again, and replace the link by "testkit v2", v3, etc...)

  • Notes

To see an interesting example of how backgrounds are linked to the system clock, compile "Test 15bg to seconds.xml" theme, then install and "apply", and... press "x" button again over "apply" repeatedly as faster as possible (lol), you will see how the background numbers increases 1 by 1. Now wait 3 seconds and press "apply" again and the number in screen has increased in +3. This means every time the theme is applyed (or everytime the PS3 boots) is readed the system clock, and a background is choosen based in the seconds of the clock. This is also a way to make a theme with (semi) random backgrounds that will be selected based in the time when the PS3 was turned on.

p3t format, p3tcompiler, and p3textractor notes[edit source]

p3tcompiler
  • p3t format uses several tables to store the "standard names of the files" without file extension (original names and file extensions of the files used to build the theme are lost)
  • backgrounds lost his file names,, instead of the original name of the file is used the "standard" name... either "hd" and "sd" for static themes... or "anim" for dynamic themes
  • backgrounds are stored in a table in the same order that are placed in the original "Theme Name.xml". There is no conversion to this .jpg files, the start position of static backgrounds can be found by looking for "FF D8 FF E0 00 10 4A 46 49 46 00 01 02 01 00 48 00 48 00 00" in the .p3t file in a hexeditor
  • The original name of the .xml is lost (there is no place to store it, just his tags in a table)
  • The order of items and tables in the p3t file is fixed and always the same (with a few exceptions). The compiler reorders the items to his convenience
  • Items in the p3t file that respect the original order of the xml are all contents of: <icontable>, <bgimagetable>, <pointertable> ?
  • Compiler version 2.00 with dynamic background ouput unrecognized attribut name "anim" for dynamic background and fail to make the p3t, when the 1.80 compile it.

p3textractor

  • rename problems
    • "notification" image is renamed to "src"
    • if the theme contains multiple backgrounds, extracted backgrounds are not renamed in the correct order using "hd_1", "sd_2" etc... (but are correctly ordered in the p3t)
    • png filextensions are duplicated (in the extraction process is needed to convert images to .gim then to png, the resulting files are renamed to "file.gim.png")
    • png and .gim filenames are numbered by adding a "_1" at the end, but is not needed (is only needed in the backgrounds when there are several of the same type)
    • "Theme Name.p3t.xml" instead of "Theme Name.xml"
  • xml problems
    • the order or items inside <info> and <icontable> in the extracted xml is different than the one contained in the .p3t
p3t format, standard order of tags after compilation (based in the tags stored in the xml table inside the .p3t file)
Edit-copy purple.svg.png
<infotable>
	<info>
		comment
		previewsize	<!-- added by the compiler -->
		name
		author
		url
		authoriconsize	<!-- added by the compiler -->
		authoricon
		iconsize	<!-- added by the compiler -->
		version
		mtime		<!-- added by the compiler -->
		genre
		preview
		icon
	<localizedinfo>
<icontable>
<pointertable>
<notification>
<setable>
<bgimagetable>
<font>
<color>

Maximum number of installed themes[edit source]

Inside game_ext_plugin.rco/english.xml
<Text name="msg_error_install_theme_over_delete_other_theme">The maximum number of themes that can be installed has been reached.
To install this theme, you must delete an existing theme.</Text>

Preinstalled themes resources[edit source]

<Mugi> the ones in the RCO's are used by the classic theme

<Mugi> the default theme uses the DDS icons from icontex.qrc

<Mugi> looks like i was wrong, the classic theme doesnt' use the icosn from the RCO either

<Mugi> maybe sony changed it since the last time i toyed with this, no clue

<Mugi> im sure it did at some point

Firmware resources overrided by themes[edit source]

system_plugin.rco[edit source]

<!-- This XML representation of an RCO structure was generated by Rcomage v1.1.2 -->
<RcoFile UMDFlag="0" rcomageXmlVer="1.1" type="ps3" minFirmwareVer="unknownId0x130">
	<MainTree name="system_plugin">
		<ImageTree>
			...
			<Image name="tex_pointer_arrow" src="tex_pointer_arrow.gim" format="gim" compression="zlib" unknownByte="0" />
			<Image name="tex_pointer_finger" src="tex_pointer_finger.gim" format="gim" compression="zlib" unknownByte="0" />
			<Image name="tex_pointer_pen" src="tex_pointer_pen.gim" format="gim" compression="zlib" unknownByte="0" />
			<Image name="tex_pointer_hand" src="tex_pointer_hand.gim" format="gim" compression="zlib" unknownByte="0" />
			<Image name="tex_pointer_grab" src="tex_pointer_grab.gim" format="gim" compression="zlib" unknownByte="0" />
			<Image name="tex_pointer_click" src="tex_pointer_click.gim" format="gim" compression="zlib" unknownByte="0" />
			...
			<Image name="tex_notification" src="tex_notification.gim" format="gim" compression="zlib" unknownByte="0" />
			...
		</ImageTree>
		<SoundTree>
			<Sound name="snd_cursor" src="snd_cursor.ch*.vag" format="vag" channels="2" />				<!-- Cursor movements: left, right, up, down -->
			<Sound name="snd_decide" src="snd_decide.ch*.vag" format="vag" channels="2" />				<!-- Question -->
			<Sound name="snd_cancel" src="snd_cancel.ch*.vag" format="vag" channels="2" />				<!-- Close/exit a options menu -->
			<Sound name="snd_category_decide" src="snd_category_decide.ch*.vag" format="vag" channels="2" />		<!-- ??? (not remapeable from theme) -->
			<Sound name="snd_option" src="snd_option.ch*.vag" format="vag" channels="2" />				<!-- Open/enter a options menu -->
			<Sound name="snd_error" src="snd_error.ch*.vag" format="vag" channels="2" />					<!-- Error (not remapeable from theme) -->
			<Sound name="snd_system_ok" src="snd_system_ok.ch*.vag" format="vag" channels="2" />			<!-- Accept -->
			<Sound name="snd_system_ng" src="snd_system_ng.ch*.vag" format="vag" channels="2" />				<!-- ??? (not remapeable from theme) -->
			<Sound name="snd_trophy" src="snd_trophy.ch*.vag" format="vag" channels="1" />					<!-- Trophy unlocked (not remapeable from theme) -->
		</SoundTree>
		<TextTree>
			...
		</TextTree>
		<ObjectTree>
			...
		</ObjectTree>
		<AnimTree>
			...
		</AnimTree>
	</MainTree>
</RcoFile>

Navigation sounds[edit source]

All the sounds are 2 channels stereo (except trophy sound that is 1 channel mono), every channel is a separated file with its name ending in 0 or 1... (for mono 0 is both channels... and for stereo 0 is left and 1 right ?), the complete list of files extracted raw without conversion from system_plugin.rco are:

snd_cancel.ch0.vag
snd_cancel.ch1.vag
snd_category_decide.ch0.vag
snd_category_decide.ch1.vag
snd_cursor.ch0.vag
snd_cursor.ch1.vag
snd_decide.ch0.vag
snd_decide.ch1.vag
snd_error.ch0.vag
snd_error.ch1.vag
snd_option.ch0.vag
snd_option.ch1.vag
snd_system_ng.ch0.vag
snd_system_ng.ch1.vag
snd_system_ok.ch0.vag
snd_system_ok.ch1.vag
snd_trophy.ch0.vag

Only 5 of them can be remapped from an official .p3t theme

<theme>
<!-- Navigation sounds ------------------------------------------------------------------------------->
	<setable>
		<se id="se_cursor" 			src="se_cursor.vag"/>		<!-- Cursor movements: left, right, up, down -->
		<se id="se_optionmenu" 			src="se_optionmenu.vag"/>	<!-- Open/enter a options menu -->
		<se id="se_cancel" 			src="se_cancel.vag"/>		<!-- Close/exit a options menu -->
		<se id="se_decide" 			src="se_decide.vag"/>		<!-- Question -->
		<se id="se_system_ok" 			src="se_system_ok.vag"/>	<!-- Accept -->
	</setable>
</theme>

Mouse pointers[edit source]

All them can be remapped from an official .p3t theme

<theme>
<!-- Mouse pointers ---------------------------------------------------------------------------------->
	<pointertable>
		<pointer id="pointer_arrow" 		src="pointer_arrow.png" 	base_x="20" 	base_y="5"/>	<!-- Arrow (default) -->
		<pointer id="pointer_pen" 		src="pointer_pen.png" 		base_x="5" 	base_y="40"/>	<!-- Pen (text input) -->
		<pointer id="pointer_finger" 		src="pointer_finger.png" 	base_x="15" 	base_y="10"/>	<!-- Hand Over Clickable Object -->
		<pointer id="pointer_click" 		src="pointer_click.png" 	base_x="15" 	base_y="10"/>	<!-- Hand Clicking Object -->
		<pointer id="pointer_hand" 		src="pointer_hand.png" 		base_x="25" 	base_y="20"/>	<!-- Hand Over Draggable Object -->
		<pointer id="pointer_grab" 		src="pointer_grab.png" 		base_x="25" 	base_y="20"/>	<!-- Hand Dragging Object -->
	</pointertable>
</theme>

Notification window frame[edit source]

<theme>
<!-- Notification window ----------------------------------------------------------------------------->
	<notification 					src="notification.png"/>
</theme>

lines.qrc[edit source]

Background[edit source]

<theme>
<!-- Background -------------------------------------------------------------------------------------->
	<bgimagetable>
		<bgimage 				hd="hd_1.jpg" 			sd="sd_1.jpg"/>
	</bgimagetable>
</theme>

icons.qrc[edit source]

Color[edit source]

<theme>
<!-- Color ------------------------------------------------------------------------------------------->
	<color selection="10"/>				<!-- 1 to 12: color of a month, 0: changes with the month  -->
</theme>

icontex.qrc[edit source]

Icons textures[edit source]

<theme>
<!-- Icons -------------------------------------------------------------------------------------------->
	<icontable>
		<!----------------------- horizontal row ------------------->
		<icon id="icon_user"			src="icon_user.png"/>
		<icon id="icon_setting"			src="icon_setting.png"/>
		<icon id="icon_photo"			src="icon_photo.png"/>
		<icon id="icon_music"			src="icon_music.png"/>
		<icon id="icon_video"			src="icon_video.png"/>
		<icon id="icon_game"			src="icon_game.png"/>
		<icon id="icon_network"			src="icon_network.png"/>
		<icon id="icon_friend"			src="icon_friend.png"/>
		<icon id="icon_tv"			src="icon_tv.png"/>
		<!-------------------------- user column ----------------------->
		<icon id="icon_poweroff" 		src="icon_poweroff.png"/>
		<icon id="icon_newuser" 		src="icon_newuser.png"/>
		<!---------------------- settings column --------------------->
		<icon id="icon_update"			src="icon_update.png"/>
		<icon id="icon_game_setting" 		src="icon_game_setting.png"/>
		<icon id="icon_bdvd_setting" 		src="icon_bdvd_setting.png"/>
		<icon id="icon_music_setting" 		src="icon_music_setting.png"/>
		<icon id="icon_chat_setting" 		src="icon_chat_setting.png"/>
		<icon id="icon_system_setting" 		src="icon_system_setting.png"/>
		<icon id="icon_theme_setting"		src="icon_theme_setting.png"/>
		<icon id="icon_datetime_setting" 	src="icon_datetime_setting.png"/>
		<icon id="icon_powersave_setting" 	src="icon_powersave_setting.png"/>
		<icon id="icon_accessory" 		src="icon_accessory.png"/>
		<icon id="icon_printer_setting" 	src="icon_printer_setting.png"/>
		<icon id="icon_display_setting" 	src="icon_display_setting.png"/>
		<icon id="icon_sound_setting" 		src="icon_sound_setting.png"/>
		<icon id="icon_security_setting" 	src="icon_security_setting.png"/>
		<icon id="icon_remoteplay_setting" 	src="icon_remoteplay_setting.png"/>
		<icon id="icon_network_setting"		src="icon_network_setting.png"/>
		<icon id="icon_setting_item" 		src="icon_setting_item.png"/>
		<!------------ photo/music/video columns ---------------------------->
		<icon id="icon_photo_default" 		src="icon_photo_default.png"/>
		<icon id="icon_photo_album_default" 	src="icon_photo_album_default.png"/>
		<icon id="icon_music_default" 		src="icon_music_default.png"/>
		<icon id="icon_music_album_default" 	src="icon_music_album_default.png"/>
		<icon id="icon_video_default" 		src="icon_video_default.png"/>
		<icon id="icon_video_album_default" 	src="icon_video_album_default.png"/>
		<!-------------------------- game column ----------------------->
		<icon id="icon_gamedata" 		src="icon_gamedata.png"/>
		<icon id="icon_savedata" 		src="icon_savedata.png"/>
		<icon id="icon_savedata_minis"		src="icon_savedata_minis.png"/>
		<icon id="icon_vmc" 			src="icon_vmc.png"/>
		<icon id="icon_newvmc" 			src="icon_newvmc.png"/>
		<icon id="icon_trophy" 			src="icon_trophy.png"/>
		<!----------------------- network column --------------------------->
		<icon id="icon_onlinemanual"		src="icon_onlinemanual.png"/>
		<icon id="icon_remoteplay" 		src="icon_remoteplay.png"/>
		<icon id="icon_inet_search" 		src="icon_inet_search.png"/>
		<icon id="icon_browser" 		src="icon_browser.png"/>
		<icon id="icon_download" 		src="icon_download.png"/>
		<!--------------------------- psn column ---------------------------->
		<icon id="icon_accountmanage"		src="icon_accountmanage.png"/>
		<!----------------------- friends column ------------------------>
		<icon id="icon_blocklist" 		src="icon_blocklist.png"/>
		<icon id="icon_addfriend" 		src="icon_addfriend.png"/>
		<icon id="icon_playermet" 		src="icon_playermet.png"/>
		<icon id="icon_chat" 			src="icon_chat.png"/>
		<icon id="icon_chatroom" 		src="icon_chatroom.png"/>
		<icon id="icon_chatroom_text" 		src="icon_chatroom_text.png"/>
		<icon id="icon_mbox" 			src="icon_mbox.png"/>
		<icon id="icon_mbox_received" 		src="icon_mbox_received.png"/>
		<icon id="icon_mbox_sent" 		src="icon_mbox_sent.png"/>
		<icon id="icon_mbox_create" 		src="icon_mbox_create.png"/>
		<!------------------------------ devices ----------------->
		<icon id="icon_ms" 			src="icon_ms.png"/>
		<icon id="icon_sd" 			src="icon_sd.png"/>
		<icon id="icon_cf" 			src="icon_cf.png"/>
		<icon id="icon_usb" 			src="icon_usb.png"/>
		<icon id="icon_psp" 			src="icon_psp.png"/>
		<icon id="icon_pspms" 			src="icon_pspms.png"/>
		<icon id="icon_usbcamera" 		src="icon_usbcamera.png"/>
		<icon id="icon_usbaad" 			src="icon_usbaad.png"/>
		<!------------------------- media player ---------------------->
		<icon id="icon_playing" 		src="icon_playing.png"/>
		<icon id="icon_mediaserver_search" 	src="icon_mediaserver_search.png"/>
		<icon id="icon_playlist" 		src="icon_playlist.png"/>
		<icon id="icon_playlist_add" 		src="icon_playlist_add.png"/>
		<icon id="icon_video_upload" 		src="icon_video_upload.png"/>
		<!------------------------ default icons ------------------------>
		<icon id="icon_default_h" 		src="icon_default_h.png"/>
		<icon id="icon_default_v" 		src="icon_default_v.png"/>
	</icontable>
</theme>

Fonts ?[edit source]

Font[edit source]

<theme>
<!-- Font -------------------------------------------------------------------------------------------->
	<font selection="1"/>				<!-- 0: original, 1: rounded, 2: pop -->
</theme>


Firmware theme settings[edit source]

sysconf_plugin.rco[edit source]

<RcoFile UMDFlag="0" rcomageXmlVer="1.1" type="ps3" minFirmwareVer="unknownId0x120">
	<MainTree name="sysconf_plugin">
		<ImageTree>
		...
		</ImageTree>
		<FontTree>
			...
			<FontStyle name="fontstyle_sanserif" unknownShort1="0x1" unknownShort2="0x0" unknownInt3="0x0" unknownInt4="0x41600000" />
			...
		</FontTree>
		<TextTree>
		...
		</TextTree>
		<ObjectTree>
			...
			<Page name="page_theme_config" unknownInt0="0x1110000" onInit="event:native:/OnInitMenuThemeConfig" onCancel="event:native:/OnCancelMenuThemeConfig" onContextMenu="nothing" onActivate="event:native:/OnActivateMenuThemeConfig">
				<XList name="xlist_theme_config" posX="0" posY="0" objectScale="0" redScale="1" greenScale="1" blueScale="1" alphaScale="1" width="0" height="0" posUnknown="0" scaleWidth="1" scaleHeight="1" elementScale="1" iconOffset="0x0" onLoad="event:native:/OnInitXmListThemeConfig" unknown17="0x0" unknown18="0x0" unknown19="0x0" unknownInt20="0x0" unknownInt21="0x0" unknown22="0x0" unknownInt23="0x0" onMove="event:native:/OnCursorMoveXmListThemeConfig" onScrollIn="event:native:/OnScrollInXmListThemeConfig" onScrollOut="nothing" onPush="event:native:/OnPushXmListThemeConfig" onContext="nothing" onCancel="event:native:/OnCancelMenuThemeConfig" unknownEvent36="nothing"></XList>
			</Page>
			<Page name="page_theme_config_theme" unknownInt0="0x1110000" onInit="nothing" onCancel="event:native:/OnCancelThemeConfig" onContextMenu="nothing" onActivate="nothing"></Page>
			<Page name="page_theme_config_color" unknownInt0="0x1110000" onInit="nothing" onCancel="event:native:/OnCancelThemeConfig" onContextMenu="nothing" onActivate="nothing"></Page>
			<Page name="page_theme_config_background" unknownInt0="0x1110000" onInit="nothing" onCancel="event:native:/OnCancelThemeConfig" onContextMenu="nothing" onActivate="nothing"></Page>
			<Page name="page_theme_config_font" unknownInt0="0x1110000" onInit="nothing" onCancel="event:native:/OnCancelThemeConfig" onContextMenu="nothing" onActivate="nothing"></Page>
			<Page name="page_theme_info" unknownInt0="0x1110000" onInit="event:native:/OnInitPageThemeInfo" onCancel="event:native:/OnCancelPageThemeInfo" onContextMenu="nothing" onActivate="event:native:/OnActivatePageThemeInfo">
				<Plane name="plane_theme_info" posX="0" posY="0" objectScale="0" redScale="1" greenScale="1" blueScale="1" alphaScale="1" width="0" height="0" posUnknown="0" scaleWidth="1" scaleHeight="1" elementScale="1" iconOffset="0x0" onLoad="nothing" unknown17="0x0" unknown18="0x0" unknown19="0x0" unknownInt20="0x0" unknownInt21="0x0" unknown22="0x0" image="nothing" unknownInt24="0x0">
					<Plane name="plane_preview" posX="0" posY="0" objectScale="0" redScale="1" greenScale="1" blueScale="1" alphaScale="1" width="0" height="0" posUnknown="0" scaleWidth="1" scaleHeight="1" elementScale="1" iconOffset="0x200000" onLoad="nothing" unknown17="0x59040100" unknown18="0x5a040100" unknown19="0x100" unknownInt20="0x1045b" unknownInt21="0x1045c" unknown22="0x0" image="nothing" unknownInt24="0x0"></Plane>
					<IList name="list_theme_info" posX="0" posY="0" objectScale="0" redScale="1" greenScale="1" blueScale="1" alphaScale="1" width="0" height="0" posUnknown="0" scaleWidth="1" scaleHeight="1" elementScale="1" iconOffset="0x110000" onLoad="event:native:/OnInitIlistThemeInfo" unknown17="0x61040100" unknown18="0x62040100" unknown19="0x100" unknownInt20="0x0" unknownInt21="0x10463" unknown22="0x0" unknown23="0x0" unknown24="0x0" unknownRef25="nothing" unknownRef27="nothing" unknownEvent29="nothing" unknownRef31="nothing" unknownRef33="nothing" unknownRef35="nothing" unknownRef37="nothing">
						<Scroll name="scroll_theme_info" posX="0" posY="0" objectScale="0" redScale="1" greenScale="1" blueScale="1" alphaScale="1" width="8" height="172" posUnknown="1" scaleWidth="1" scaleHeight="1" elementScale="1" iconOffset="0x0" onLoad="nothing" unknown17="0x0" unknown18="0x0" unknown19="0x0" unknownInt20="0x0" unknownInt21="0x0" unknown22="0x0" unknownFloat23="100" unknownFloat24="100" unknown25="0x0" unknownRef26="nothing" unknownRef28="nothing" unknownRef30="nothing" unknownRef32="nothing" unknownRef34="nothing"></Scroll>
					</IList>
				</Plane>
			</Page>
			...
		</ObjectTree>
	</MainTree>
</RcoFile>