Qt Resource Container (QRC)
location: /dev_flash/vsh/resource/qgl
General format
ZLIB Compressing level 9.
QRCC
Compressed (QRCC) file (example from 3.55 lines.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 08 7A 60 QRCC..z`
51 52 43 43 magic header 'QRCC' 00 divisor 08 7A 60 size of ZLIB unpacked (QRCF) file
QRCF
unpacked (QRCF) file (example from 3.55 lines.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 25 7C QRCF.......@..%| 00000010 00 00 25 C0 00 00 14 02 00 00 39 D0 00 00 00 1B ..%À......9Ð.... 00000020 00 00 39 F0 00 00 00 00 00 00 39 F0 00 00 00 00 ..9ð......9ð.... 00000030 00 00 39 F0 00 08 40 70 00 00 00 00 00 00 00 00 ..9ð..@p........
51 52 43 46 magic header 'QRCF' 00 divisor //typo? xx xx xx xx size of file sections //typo?
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 25 7C | |
Offset file list | 0x10 | 0x04 | 00 00 25 C0 | |
Size file list | 0x14 | 0x04 | 00 00 14 02 | |
Offset Header embedded files | 0x18 | 0x04 | 00 00 39 D0 | |
Size Header embedded files | 0x1C | 0x04 | 00 00 00 1B | |
Offset embedded files | 0x20 | 0x04 | 00 00 39 F0 | |
Not used | 0x24 | 0x04 | 00 00 00 00 | |
Offset embedded files | 0x28 | 0x04 | 00 00 39 F0 | |
Not used | 0x2C | 0x04 | 00 00 00 00 | |
Offset embedded files | 0x30 | 0x04 | 00 00 39 F0 | |
Size embedded files | 0x34 | 0x04 | 00 08 40 70 | |
Not used | 0x38 | 0x04 | 00 00 00 00 | |
Not used | 0x3C | 0x04 | 00 00 00 00 |
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
- XMB wave modding: http://www.ps3hax.net/showthread.php?t=25618 and http://www.ps3hax.net/showthread.php?t=58673
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
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)
DDS
- This tiny tool can extract embedded .dds, heavily based on an MPO splitter by Christian Steinruecken.
http://rghost.net/47483926 (include Code-Compile-Credit. Drag and drop your file with embedded .dds)