Rich Appearance Format (RAF)

From PS3 Developer wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Description

RAF (Rich Appearance Format) is a container, used by the animation when PS3 boots (coldboot.raf), and inside dynamic Themes (as the animated scene displayed at the background of the theme)

  • RAF related firmware modules in dev_flashvsh/modules/:
    • raf.sprx <--- generic animations

RAF structure

See: CXML Containers page

RAF tools

Rich Apparence Maker

http://r.a.m.games-hack.fr/index.php

guide http://r.a.m.games-hack.fr/doc/Rich%20Appearance%20Maker%20-%20Quick%20Start%20Guide.pdf

R.A.M on PS3 News: http://www.ps3news.com/ps3-hacks-jailbreak/video-ps3-rich-appearance-maker-r-a-m-beta-is-now-open/

R.A.M on PSX Scene: http://psx-scene.com/forums/content/rich-appearance-maker-r-m-free-beta-now-open-dynamic-theme-maker-2161/

PS3 Color Logo Creator V2.511

PCLC Source: http://tizzyt-archive.blogspot.co.uk/2012/04/playstation-color-logo-creator-v2511.html

PCLC on PS3 News: http://www.ps3news.com/ps3-hacks-jailbreak/ps3-color-logo-creator-v2-50-v2-51-updates-now-available/

PCLC V2.511 Download: http://www.mediafire.com/download/zbb3e07wdx22jub

RAF contents

It must comply with these restrictions :

-Textures size max: 15 mb ( 15728640 Bytes ) ( on RSX local memory at run time )
-Geometry & script size max: 1 mb ( 1048576 Bytes ) ( on main memory at run time ) 
-Actor size max: 1.25mb ( 1310720 Bytes ) ( in the intermediate buffer ) 
-Actor number max: 128
-Cameras: 1
-Lights: 2 (ambient + point)
-Scripts: 1
-Models: 64 (with 8 animations each model)

RAF Scene (.XML)

Models and Lights (.DAE)

Models can be geometric 3D objects, or 3D light points

  • Typical objects and names used:
    • bg.dae
    • ambient_light.dae
    • point_light.dae

Models files contains references to the libraries that were used by the 3D app that build the object

  • Typical entries found in models (3d objects)
    • <asset>
    • <library_physics_scenes>
    • <library_images>
    • <library_materials>
    • <library_effects>
    • <library_geometries>
    • <library_visual_scenes>
    • <scene>
  • Typical entries found in models (3d lights)
    • <asset>
    • <library_physics_scenes>
    • <library_lights>
    • <library_visual_scenes>
    • <scene>

Textures

See Multimedia Formats and Tools page

Before compiling, only .dds and jpeg are supported.

After compiling, Graphics Texture Format (GTF) (is a container for storing one or multiple textures, "pack GTF", data in a layout that can be used as is by RSX).

Script

.JS

script.js (an PlayStation JavaScript, known as PSJS, based on ECMA-262)

ECMA-262: several well-known implementations such as JavaScript, JScript and ActionScript.

Some examples of PS3 theme using PSJS:

.JSX

The script.js is later on compiled into an intermediate code (.jsx) with a magic header "VSMX".

Virtual Script Machine Instructions (VSMX) file layout (naming sould be wikifyed):

VSMX header
Compiled code/instructions
Data/String constants
(method) name table/Object property
global symbols/Variable/function names

Header

Offset Size Example (h) Value (conversion) Notes
0x00 0x04 0x56534D58 "VSMX" Magic
0x04 0x04 0x00000200 0002.0000 Version?
  • v1.0 on PSP RCO RCOs (from video/music UMDs and two lftv RCOs in the PSP's flash0/vsh/ressource/.)?
  • V2.0 on PS3 PSJS (.jsx)
0x08 0x04 0x34000000 0x34 (52) header length
0x0C 0x04 - length of compiled code/instructions section
0x10 0x04 - offset of data section
0x14 0x04 - length of data
0x18 0x04 - number of data(seen: 1 or 2)
0x1C 0x04 - offset of name table
0x20 0x04 - length of name
0x24 0x04 - number of name
0x28 0x04 - offset of global symbols
0x2C 0x04 - length of global symbols
0x30 0x04 - number of global symbols

Compiled instructions

  • Instructions length: 8 bytes

HEX code format should be wikifyed, may be table moved to (later).

ByteCode (short) Instruction Name Note1 Note2
0x00 NOP - -
0x01 ASSGN - -
0x02 ADD - -
0x03 SUB - -
0x04 MUL - -
0x05 DIV - -
0x06 MOD - -
0x07 TO_NUMBER - -
0x08 CSIGN - -
0x09 NOT - -
0x0A INC - -
0x0B DEC - -
0x0C POST_INC - -
0x0D POST_DEC - -
0x0E CMPEQ - -
0x0F CMPNEQ - -
0x10 CMPSEQ - -
0x11 CMPSNEQ - -
0x12 CMPLT - -
0x13 CMPLE - -
0x14 CMPGE - -
0x15 CMPGT - -
0x16 INSTANCEOF - -
0x17 IN - -
0x18 TYPEOF - -
0x19 BIT_AND - -
0x1A BIT_XOR - -
0x1B BIT_OR - -
0x1C BIT_NOT - -
0x1D LSHIFT - -
0x1E S_RSHIFT - -
0x1F U_RSHIFT - -
0x20 COPY - -
0x21 SWAP - -
0x22 REMOVE - -
0x23 PUSH_UNDEFINED - -
0x24 PUSH_NULL - -
0x25 PUSH_BOOL - -
0x26 PUSH_INT - -
0x27 PUSH_FLOAT - -
0x28 PUSH_STRING - -
0x29 PUSH_OBJECT - -
0x2A PUSH_FUNC - -
0x2B PUSH_ARRAY - -
0x2C PUSH_THIS - -
0x2D PUSH_LOCAL - -
0x2E PUSH_GLOBAL - -
0x2F GETATTR - -
0x30 GETATTR_KEEPOBJ - -
0x31 SETATTR - -
0x32 DELATTR - -
0x33 APPEND_ATTR - -
0x34 GETITEM - -
0x35 GETITEM_KEEPOBJ - -
0x36 SETITEM - -
0x37 DELITEM - -
0x38 APPEND_ITEM - -
0x39 JUMP - -
0x3A JUMPT - -
0x3B JUMPF - -
0x3C CALL_FUNC - -
0x3D CALL_METHOD - -
0x3E CALL_CONSTRUCTOR - -
0x3F RET - -
0x40 THROW - -
0x41 TRYBLK_IN - -
0x42 TRYBLK_OUT - -
0x43 CATCH_FINALLYBLK_IN - -
0x44 CATCH_FINALLYBLK_OUT - -
0x45 HALT - -
0x46 DEBUG_FILE - -
0x47 DEBUG_LINE - -
0x48 GETITEM_KEEPOBJNAME - -
0x49 PUSH_VECTOR - -
0x4A GET_VECTOR_ELEMENT - -
0x4B GET_VECTOR_ELEMENT_KEEPVECTOR - -
0x4C ASSGN_VECTOR_ELEMENT - -
0x4D SETATTR_VECTOR_ELEMENT - -
0x4E SETITEM_VECTOR_ELEMENT - -

Links