Join Us and become a Member for a Verified Badge to access private areas with the latest PS4 / PS5 PKGs.
Not open for further replies.
Recently I (@Persona4Golden aka FLRIZBACK) shared a Changing All System Sounds on PS4 Tutorial, and today I've added to my FlorinsDistortedVision Github repository a guide on How to Make a Custom PS4 Dynamic Theme for a PlayStation 4 Console.

Download: / GIT (Direct Reupload by Persona4Golden)

Spoiler: Depreciated

This comes following the PS4 Theme Editor with Sample Custom Theme, PS4 Theme Creator Tool, Dumping PS4 Themes Tutorial, Making / Installing Permanent PS4 Themes Guide (Permanent PS4 Theme PKG Spreadsheet), PS4 Retail Theme Unlocker Windows GUI Front-End and DirectDraw Surface (DDS) Converter for Dynamic PS4 Themes.

:note: Making Custom Dynamic Themes on PS4

Requirements / Tools needed:

1. Converting source video to frames usable by PS4

Note!: Keep in mind that dynamic themes have a limit of 16MB of video/frames files, so to insure the theme can be applied, video must be 1280x720, otherwise the theme will give a error when trying to apply!
  • Open Free Video to JPG Converter and add your source, in Extract section select Total of 34 frames from video (Note! You can select more, as long as you also modify the .xml file with the new frames).
  • Your source will now be in 34 .jpg files. It is advised that you rename them now from 00.jpg to 33.jpg.
  • The PS4 theme system uses a sequence of .dds pictures that are controlled by a .xml file, so we need to convert our .jpg files to .dds. Open TGA-PNG-JPG-TO DDS, add all your frames, leave default dxt1a, and click start.
  • We should now have files from to, ready for PS4 to read.
  • Replace all the .dds files with the ones included in the sample archive in scene/background.raf/.
2. Customizing the speed of frames
  • A crucial step is figuring out the right speed of the frames, unfortunately this will most likely be needed as I noticed.
  • Open scene/background.raf/index.xml and look for lines that contain : <case wait="2">. The default value is 2, tinker with the values until your frames are played correctly. Note!: You must change all of them!
  • At this point, if you had more frames converted in step 1, you can add the additional lines, following the same structure as the other ones.
  • Save the file.
3. Other modifications - Here are all the other things you can change:
  • sce_sys/icon0.png. Dimensions must be : 512x512, file must be png! This is the icon of the theme seen in Settings-Theme.
  • sound/bgm_home.at9 and all the .vag files. bgm_home is the background music, a .wav can be converted via at9tool. The .vag files are the sound effects, .wav can be easily converted via MFAudiov11. Note!: Files must be at 48000Hz.
  • texture/content_icon and texture/function_icon is where all the icons are. Content_Icon files must be .png at 512x512. Function_Icon files must be .png at 128x128.
  • texture/preview.png is the preview file for the theme (just before applying the theme in Settings). Must be .png at 1920x1080.
  • /theme.xml. Here you can change the colors of the font and what color the theme will use for menus like Settings, etc.
Example of things you can change:
"<themecolor>0</themecolor>" holds the color for the menus. A description is present inside the .xml file telling which color is which number (ex: 1=pink, 2=red, etc)
"<fontcolor>#FF4F7ECE</fontcolor>" holds the text color. Value is hexadecimal.
"<fontshadowcolor>#00000000</fontshadowcolor>" holds the shadow font color. Value is hexadecimal.
"<focuscolor>#FF00BAFF</focuscolor>" holds the focus color of the font. Value is hexadecimal.
"<homebgm-enable>True</homebgm-enable>" specifies whether the theme should use your custom background music or the default one. True=custom, False=default.
4. Editing Param.sfo
  • Open sce_sys/param.sfo using orbis-pub-sfo.
  • Make sure Category is PS4 System SoftwareTheme, input your Content-ID using Random-Content-ID by Backporter.
  • In Title Text section, you can input the Theme Title and the Theme Provider (your name). These will be seen in Settings-Theme in Theme Information settings.
  • Optionally you can input a Theme Version such as 01.12 in Theme Settings section and add other languages in Add/Delete Languages section.
  • Save the file.
5. Building the theme as an FPKG
  • Open orbis-pub-gen
  • File - New Project - System Software Theme Package
  • Double click Image0
  • Drag and drop all the folders and files into the File Name section. Note!: Do not drag a single folder containing all the files, the structure should be: sce_sys folder, scene folder, sound folder, texture folder and theme.xml (no other folders)!
  • Close the window
  • Command - Project Settings - Package tab
  • Input the same Content-ID as made in the param.sfo file. Passcode can be all 0's. Select Ok.
  • Select Build. Select your output path. Select Build!
  • Install the pkg theme via debug settings or your preferred method and apply the theme!
  • Done!
Congrats! You now have a fully customized dynamic theme! šŸ„³

End Notes!:
  • As this is a FPKG theme, this cannot be made permanent / persistent after reboot!
  • If the source files are playing too fast/slow, you must edit the <case wait="2"> file again.
Note!: If any edits are made, you have to also make a new Content-ID in param.sfo and the project settings when building PKG, otherwise it will cause issues such as the theme not applying!
How to Make a Custom PS4 Dynamic Theme for a PlayStation 4 Console Guide.jpg


Thanks, updated it again moving the old stuff to the depreciated spoiler and linking your most recent in the OP now. :tup:
Hey! Is it possible to maybe get a video tutorial if you have the time? I've followed every step to a tee but when I install the theme I am not allowed to apply it but instead, my ps4 gives an error.

When I go to edit the XML should I use notepad? I'm unsure if I'm supposed to edit with a different program.

Also, when i look at the XML file instead of it being <case wait="2"> i have <case wait="0.041667">. I don't know if that's an issue. Thank you for the help!
@kaikai1424 , the <case wait="value"> will dictate how fast or slow the frames will show, the default value is usually 2 but as I said you have to find a value that will move accordingly to your source material (ex: could be 0.2 or 1 or 2 or 10, you gotta find it yourself).

As for applying error that is usually if scene/background.raf folder goes over 16MB total file size. That's why I suggested your source vid/gif to be 1280x720 or very very very short if you want to go over that resolution.

Edit: oh and yeah you can use regular notepad, I use notepad++ cuz it shows everything better when dealing with code
Just started to get into the PS4 cfw with the release of 9.00 ofw so I'm still learning most of the homebrew apps, but this sounds really cool and will be a lot better then a simple image as a background, thanks for this info.
Not open for further replies.