Difference between revisions of "Rich Appearance Format (RAF)"

From PS3 Developer wiki
Jump to: navigation, search
m (.JSX)
m (.JSX)
Line 86: Line 86:
 
*http://endlessparadigm.com/forum/showthread.php?tid=21485: VSMX file format
 
*http://endlessparadigm.com/forum/showthread.php?tid=21485: VSMX file format
  
Virtual Script Machine Instructions (VSMX) file layout:
+
Virtual Script Machine Instructions (VSMX) file layout (naming sould be wikifyed):
 
<pre>
 
<pre>
 
VSMX header
 
VSMX header
Compiled instructions
+
Compiled code/instructions
String constants
+
Data/String constants
Object property/method names?
+
(method) name table/Object property
Variable/function names
+
global symbols/Variable/function names
 
</pre>
 
</pre>
  
Line 113: Line 113:
 
| 0x08 || 0x04 || 0x34000000 || 34 (52) || header length  
 
| 0x08 || 0x04 || 0x34000000 || 34 (52) || header length  
 
|-
 
|-
| 0x0C || 0x04 || - ||  || length of compiled instructions section
+
| 0x0C || 0x04 || - ||  || length of compiled code/instructions section
 
|-
 
|-
| 0x10 || 0x04 || - ||  || offset of string constants section
+
| 0x10 || 0x04 || - ||  || offset of data section
 
|-
 
|-
| 0x14 || 0x04 || - ||  || length of string constants section
+
| 0x14 || 0x04 || - ||  || length of data
 
|-
 
|-
| 0x18 || 0x04 || - ||  || number of string constants (seen: 1 or 2)
+
| 0x18 || 0x04 || - ||  || number of data(seen: 1 or 2)
 
|-
 
|-
| 0x1C || 0x04 || - ||  || offset of property/method section
+
| 0x1C || 0x04 || - ||  || offset of name table
 
|-
 
|-
| 0x20 || 0x04 || - ||  || length of property/method section
+
| 0x20 || 0x04 || - ||  || length of name
 
|-
 
|-
| 0x24 || 0x04 || - ||  || number of property/method names
+
| 0x24 || 0x04 || - ||  || number of name
 
|-
 
|-
| 0x28 || 0x04 || - ||  || offset of variable/function names section
+
| 0x28 || 0x04 || - ||  || offset of global symbols
 
|-
 
|-
| 0x2C || 0x04 || - ||  || length of variable/function names section
+
| 0x2C || 0x04 || - ||  || length of global symbols
 
|-
 
|-
| 0x30 || 0x04 || - ||  || number of variable/function names section
+
| 0x30 || 0x04 || - ||  || number of global symbols
 +
|-
 +
|}
 +
 
 +
==== Compiled instructions ====
 +
 
 +
HEX code format should be wikifyed, may be table moved to (later).
 +
 
 +
{| class="wikitable sortable"
 +
|-
 +
! '''Hex Code (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_INT || - || -
 +
|-
 +
| 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 || - || -
 
|-
 
|-
 
|}
 
|}

Revision as of 19:07, 20 October 2014

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 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 script.jsx
0x08 0x04 0x34000000 34 (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

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

Hex Code (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_INT - -
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