Qt Resource Container (QRC): Difference between revisions
m (→Data Table) |
|||
Line 83: | Line 83: | ||
====Data Table==== | ====Data Table==== | ||
Default entry size is 60 bytes ( | Default entry size is 60 bytes (0x3C) but the first and last entries has a different size | ||
http://666kb.com/i/cib5c7q4y7rpcx9x1.gif | http://666kb.com/i/cib5c7q4y7rpcx9x1.gif |
Revision as of 23:09, 12 October 2013
location: /dev_flash/vsh/resource/qgl
General format
QGL (Qt Graphics Library) based in Qt framework and OpenGL
QRCC
QRCC (Qt Resources Container Compressed)
QRC file ZLIB Compressed level 9.
- Example from 3.55 rhm.qrc:
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00000000 51 52 43 43 00 00 28 00 QRCC..z`
Name | Offset | Size | Example | Remark |
Magic header | 0x00 | 0x04 | 51 52 43 43 | 'QRCC' |
size of ZLIB unpacked (QRCF) file | 0x04 | 0x04 | 00 00 28 00 |
QRCF
QRCF (Qt Resources Container F?)
QRC "container" with an structure similar than themes .p3t
Main Header
- Example from fw 3.55 rhm.qrc:
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00000000 51 52 43 46 00 00 01 10 00 00 00 40 00 00 02 CC QRCF.......@..%| 00000010 00 00 03 10 00 00 01 2B 00 00 04 40 00 00 00 1B ..%À......9Ð.... 00000020 00 00 04 60 00 00 00 00 00 00 04 60 00 00 00 00 ..9ð......9ð.... 00000030 00 00 04 60 00 00 23 A0 00 00 00 00 00 00 00 00..9ð..@p........
Name | Offset | Size | Example | Remark |
Magic header | 0x00 | 0x04 | 51 52 43 46 | 'QRCF' |
Version | 0x04 | 0x04 | 00 00 01 10 | |
Size header | 0x08 | 0x04 | 00 00 00 40 | |
Size extended header | 0x0C | 0x04 | 00 00 02 CC | |
Offset file list | 0x10 | 0x04 | 00 00 03 10 | |
Size file list | 0x14 | 0x04 | 00 00 01 2B | |
Offset Header embedded files | 0x18 | 0x04 | 00 00 04 40 | |
Size Header embedded files | 0x1C | 0x04 | 00 00 00 1B | without zeroed padding alignment |
Offset embedded files | 0x20 | 0x04 | 00 00 04 60 | |
Not used | 0x24 | 0x04 | 00 00 00 00 | |
Offset embedded files | 0x28 | 0x04 | 00 00 04 60 | |
Not used | 0x2C | 0x04 | 00 00 00 00 | |
Offset embedded files | 0x30 | 0x04 | 00 00 04 60 | |
Size embedded files | 0x34 | 0x04 | 00 00 23 A0 | |
Not used | 0x38 | 0x04 | 00 00 00 00 | |
Not used | 0x3C | 0x04 | 00 00 00 00 |
Data Table
Default entry size is 60 bytes (0x3C) but the first and last entries has a different size
http://666kb.com/i/cib5c7q4y7rpcx9x1.gif
Filename Table
Each entry is composed by:
Offset | Length | Example | Name | Notes |
---|---|---|---|---|
0x0 | 0x4 | 00000038 | Data Table entry offset | Same value than in the Data Table |
0x4 | variable | lib/rhm/Clear.fpo | File name | |
variable | 0x1 | 00 | NULL byte |
- The end of the table has a padding to align to 0x10 bytes
File Table
The table starts with 0x20 bytes, are always present in all the .qrc files
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00000440 71 72 63 00 66 69 6C 65 2D 74 61 62 6C 65 00 66 qrc.file-table.f 00000450 69 6C 65 00 73 72 63 00 69 64 00 00 00 00 00 00 ile.src.id......
After this, the files are concatenated in the same order than in the Filename Table
Mods
canyon.qrc
location: /dev_flash/vsh/resource/qgl
earth.qrc
location: /dev_flash/vsh/resource/qgl
icons.qrc
location: /dev_flash/vsh/resource/qgl
icontex.qrc
location: /dev_flash/vsh/resource/qgl
lines.qrc
location: /dev_flash/vsh/resource/qgl
- 159 Contents (by file extensions):
- 02 .ELF (wave and sparks animations)
- 47 .FPO (fragment program objects)
- 11 .VPO (vertex program objects)
- 69 .MNU (openGL settings)
- 24 .DDS (wallpapers)
- 06 .TGA (sparks texture + unknown)
File list (fw 4.46) :
Name | Type | Remark |
---|---|---|
BACKGROUND.mnu | .mnu | |
HDR.mnu | .mnu | |
LINE1.mnu | .mnu | |
override/black/BACKGROUND.mnu | .mnu | |
override/black/HDR.mnu | .mnu | |
override/black/LINE1.mnu | .mnu | |
override/black/PARTICLES.mnu | .mnu | |
override/bright/BACKGROUND.mnu | .mnu | |
override/bright/HDR.mnu | .mnu | |
override/bright/LINE1.mnu | .mnu | |
override/coldboot1/BACKGROUND.mnu | .mnu | |
override/coldboot1/HDR.mnu | .mnu | |
override/coldboot1/LINE1.mnu | .mnu | |
override/coldboot1/PARTICLES.mnu | .mnu | |
override/coldboot2/BACKGROUND.mnu | .mnu | |
override/coldboot2/HDR.mnu | .mnu | |
override/coldboot2/LINE1.mnu | .mnu | |
override/coldboot2/PARTICLES.mnu | .mnu | |
override/day/BACKGROUND.mnu | .mnu | |
override/day/HDR.mnu | .mnu | |
override/day/LINE1.mnu | .mnu | |
override/day/PARTICLES.mnu | .mnu | |
override/gameboot1/BACKGROUND.mnu | .mnu | |
override/gameboot1/HDR.mnu | .mnu | |
override/gameboot1/LINE1.mnu | .mnu | |
override/gameboot2/BACKGROUND.mnu | .mnu | |
override/gameboot2/HDR.mnu | .mnu | |
override/gameboot2/LINE1.mnu | .mnu | |
override/gameboot3/BACKGROUND.mnu | .mnu | |
override/gameboot3/HDR.mnu | .mnu | |
override/gameboot3/LINE1.mnu | .mnu | |
override/gameboot3/PARTICLES.mnu | .mnu | |
override/gameboot4/BACKGROUND.mnu | .mnu | |
override/gameboot4/HDR.mnu | .mnu | |
override/gameboot4/LINE1.mnu | .mnu | |
override/gameboot4/PARTICLES.mnu | .mnu | |
override/gameboot5/BACKGROUND.mnu | .mnu | |
override/gameboot5/HDR.mnu | .mnu | |
override/gameboot5/LINE1.mnu | .mnu | |
override/higure/BACKGROUND.mnu | .mnu | |
override/higure/HDR.mnu | .mnu | |
override/higure/LINE1.mnu | .mnu | |
override/higure/PARTICLES.mnu | .mnu | |
override/initial_setting/BACKGROUND.mnu | .mnu | |
override/initial_setting/HDR.mnu | .mnu | |
override/initial_setting/LINE1.mnu | .mnu | |
override/music_1/BACKGROUND.mnu | .mnu | |
override/music_1/HDR.mnu | .mnu | |
override/music_1/LINE1.mnu | .mnu | |
override/music_1/PARTICLES.mnu | .mnu | |
override/night/BACKGROUND.mnu | .mnu | |
override/night/HDR.mnu | .mnu | |
override/night/LINE1.mnu | .mnu | |
override/night/PARTICLES.mnu | .mnu | |
override/yoake/BACKGROUND.mnu | .mnu | |
override/yoake/HDR.mnu | .mnu | |
override/yoake/LINE1.mnu | .mnu | |
override/yoake/PARTICLES.mnu | .mnu | |
override/welcome_1/BACKGROUND.mnu | .mnu | |
override/welcome_1/HDR.mnu | .mnu | |
override/welcome_1/LINE1.mnu | .mnu | |
override/welcome_1/PARTICLES.mnu | .mnu | |
override/welcome_2/BACKGROUND.mnu | .mnu | |
override/welcome_2/HDR.mnu | .mnu | |
override/welcome_2/LINE1.mnu | .mnu | |
override/welcome_2/PARTICLES.mnu | .mnu | |
textures/TGA/Noise.tga | .tga | |
textures/TGA/freslut0.tga | .tga | |
textures/TGA/freslut1.tga | .tga | |
textures/TGA/freslut2.tga | .tga | |
textures/TGA/freslut.tga | .tga | |
textures/month_bg/rgb/01.dds | .dds | |
textures/month_bg/rgb/02.dds | .dds | |
textures/month_bg/rgb/03.dds | .dds | |
textures/month_bg/rgb/04.dds | .dds | |
textures/month_bg/rgb/05.dds | .dds | |
textures/month_bg/rgb/06.dds | .dds | |
textures/month_bg/rgb/07.dds | .dds | |
textures/month_bg/rgb/08.dds | .dds | |
textures/month_bg/rgb/09.dds | .dds | |
textures/month_bg/rgb/10.dds | .dds | |
textures/month_bg/rgb/11.dds | .dds | |
textures/month_bg/rgb/12.dds | .dds | |
textures/month_bg/night/01.dds | .dds | |
textures/month_bg/night/02.dds | .dds | |
textures/month_bg/night/03.dds | .dds | |
textures/month_bg/night/04.dds | .dds | |
textures/month_bg/night/05.dds | .dds | |
textures/month_bg/night/06.dds | .dds | |
textures/month_bg/night/07.dds | .dds | |
textures/month_bg/night/08.dds | .dds | |
textures/month_bg/night/09.dds | .dds | |
textures/month_bg/night/10.dds | .dds | |
textures/month_bg/night/11.dds | .dds | |
textures/month_bg/night/12.dds | .dds | |
spurs/moyou/spline/spline.elf | .elf | |
lib/glutils/AccGlare.fpo | .fpo | |
lib/gutils/ApplyDisplay.fpo | .fpo | |
lib/glutils/ApplyGlare.fpo | .fpo | |
lib/glutils/BloomCone.fpo | .fpo | |
lib/glutils/BloomDecay.fpo | .fpo | |
lib/glutils/BlurAcc.fpo | .fpo | |
lib/glutils/BlurOutput.fpo | .fpo | |
lib/glutils/BlurOutputFG.fpo | .fpo | |
lib/glutils/ConeFilter.fpo | .fpo | |
lib/glutils/CookieCutter.fpo | .fpo | |
lib/glutils/CookieCutter.vpo | .vpo | |
lib/glutils/Copy.fpo | .fpo | |
lib/glutils/CopyMRT.fpo | .fpo | |
lib/glutils/CopyVarAlpha.fpo | .fpo | |
lib/glutils/DoubleGaussian.fpo | .fpo | |
lib/glutils/GaussBloomAndBlur.fpo | .fpo | |
lib/glutils/Gaussian.fpo | .fpo | |
lib/glutils/Gaussian.vpo | .vpo | |
lib/glutils/GlareSource.fpo | .fpo | |
lib/glutils/GlareSourceMRT.fpo | .fpo | |
lib/glutils/GlareSourceNoTone.fpo | .fpo | |
lib/glutils/GlareSourcePre.fpo | .fpo | |
lib/glutils/ScreenCopy.fpo | .fpo | |
lib/glutils/ToneApplyDisplay.fpo | .fpo | |
lib/glutils/ToneApplyDisplayMRT.fpo | .fpo | |
lib/glutils/ToneMap.fpo | .fpo | |
lib/glutils/ToneMerge.fpo | .fpo | |
lib/glutils/ToneSplit.fpo | .fpo | |
lib/moyou/background.fpo | .fpo | |
lib/moyou/background.vpo | .vpo | |
lib/moyou/back_colours0.fpo | .fpo | |
lib/moyou/back_colours1.fpo | .fpo | |
lib/moyou/back_colours2.fpo | .fpo | |
lib/moyou/back_colours_cpy.fpo | .fpo | |
lib/moyou/ffd_alpha_blend.fpo | .fpo | |
lib/moyou/ffd_shader0.fpo | .fpo | |
lib/moyou/ffd_shader1.fpo | .fpo | |
lib/moyou/ffd_shader2.fpo | .fpo | |
lib/moyou/ffd_shader3.fpo | .fpo | |
lib/moyou/lines0.fpo | .fpo | |
lib/moyou/lines0.vpo | .vpo | |
lib/moyou/lines1.fpo | .fpo | |
lib/moyou/lines1.vpo | .vpo | |
lib/moyou/lines2.fpo | .fpo | |
lib/moyou/lines2.vpo | .vpo | |
lib/moyou/LinesController.fpo | .fpo | |
lib/moyou/LinesController.vpo | .vpo | |
lib/moyou/LinesControllerQuin.fpo | .fpo | |
lib/moyou/LinesEdge.fpo | .fpo | |
lib/moyou/bg_copy.fpo | .fpo | |
particles/proc_iridescent.tga | .tga | Iridescence |
spurs/particles/particles/particles.elf | .elf | |
lib/particles/particles_quads.fpo | .fpo | |
lib/particles/particles_quads_debug.fpo | .fpo | |
lib/particles/particles_second.fpo | .fpo | |
lib/particles/particles_quads.vpo | .vpo | |
lib/particles/particles_quads_debug.vpo | .vpo | |
lib/particles/particles_second.vpo | .vpo | |
PARTICLES.mnu | .mnu | |
PARTICLES_SPE.mnu | .mnu | |
PARTICLES_UI.mnu | .mnu | |
lib/devgui/DebugGui.vpo | .vpo | |
lib/devgui/DebugGui.fpo | .fpo |
- Notes
- The size of lines.qrc is different between 3.55 and 4.46 (there are changes in some of the contained files)
- XMB wave modding: http://www.ps3hax.net/showthread.php?t=25618 and http://www.ps3hax.net/showthread.php?t=58673
- Thread corrections: The wave is common for all PS3 models, resolutions, aspect ratios, and regions. The concept of PAL/NTSC wave is wrong
Notes (this section is speculative until someone finds where the values are stored, feel free to improve it)
Sparks dynamic animation (sparks movement affected by cursor position and "fluid density")
The sparks movement is affected by the displacement of the cursor when moving along XMB columns and rows (left-right, or up-down directions). When the cursor moves fast to a new position the sparks "tends" to move in the opposite direction trying to mimic a real fluid like air or water
To see this effect is good to configure a black wallpaper and enable all the options iside "theme settings" to "original" (this will make the sparks very visibles). Then start moving the cursor from left column (user) <---> to right column (friends)... or from top item <---> to bottom item in any colums (more visible in a column with several items, like game)... and note how the sparks directions are affected :)
This proves the sparks is a dynamic animation, is constantly "reading" the position of the cursor to adjust particle directions
wallpapers After extraction, the 24 .dds images used as wallpapers shares the same header (0x80 bytes), after the header starts the pixel info (each pixel is 4 bytes length in RGBA format). Is posible to change the pixel info without changing the header
00 00 00 FF = black pixel
raf.qrc
location: /dev_flash/vsh/resource/qgl
rhm.qrc
location: /dev_flash/vsh/resource/qgl
- 11 Contents (by file extensions):
- 08 .FPO (fragment program objects)
- 03 .VPO (vertex program objects)
Name | Type | Remark |
---|---|---|
lib/rhm/Clear.fpo | .fpo | |
lib/rhm/Clear.vpo | .vpo | |
lib/rhm/Copy.fpo | .fpo | |
lib/rhm/default.fpo | .fpo | |
lib/rhm/default.vpo | .vpo | |
lib/glutils/ConeFilter.fpo | .fpo | |
lib/glutils/ConeFilter.vpo | .vpo | |
lib/glutils/ConeFilterSimple.fpo | .fpo | |
lib/glutils/ScreenCopy.fpo | .fpo | |
lib/glutils/Blur2.fpo | .fpo | |
lib/glutils/Blur2Mask.fpo | .fpo |
store.qrc
location: /dev_flash/vsh/resource/qgl
Tools
QGL
- this tool can decompress a QRCC to QRCF and compress a QRCF to QRCC
https://raw.github.com/wargio/ps3tools/master/QGL.c (just run make to compile it)
Tiny little extractor embedded DDS/MNU/JPG
- Theses tiny little tools extract blindly & only embedded files and are means to be tiny and independent. Heavily based on an MPO splitter by Christian Steinruecken, they
http://rghost.net/49331859 (include Code-Compile-Credit. Drag and drop your file with embedded .dds/mnu/jpg) & mirror links: http://mir.cr/6N9JRFRD