VSMX: Difference between revisions
m (→Description) |
|||
(56 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
=Description= | = Description = | ||
Virtual Script Machine Instructions (VSMX) file | Virtual Script Machine Instructions (VSMX) compiled file. The file extension is '''.jsx''' after compiled, and '''.js''' before compiled) | ||
*http://endlessparadigm.com/forum/showthread.php?tid=21485 (History) | |||
* | *http://playstationhax.it/forums/topic/1060-jsxviewer/ (discussion, tool) http://tizzyt-archive.blogspot.co.uk/2015/05/release-jsxviewer-05b-source.html (source) | ||
[[Rcomage]] has partial support to compile/decompile VSMX files for PS3 (is needed to change the VSMX version at header offset 0x04... from 2.0 to 1.0 because rcomage was originally intended for PSP only). Also the official VSMX format 2.0 (intended for PS3) has some additional opcodes that didnt existed in PSP. '''it's very buggy and usually doesn't work right''' | |||
*VSMX files are used on: | |||
**PSP - Inside '''[[Resource_Container_(RCO)|.rco]]''' file-format (used on video/music UMDs, and the two firmware files: '''lftv_tuner_jp_jp.rco''' and '''lftv_tuner_us_en.rco''' in path flash0/vsh/resource/) | |||
**PS3 - Inside '''[[Rich_Appearance_Format_(RAF)|.raf]]''' file-format (used on [[coldboot.raf]], and the background scene for [[Themes (.p3t)|PS3 dynamic themes]]<!-- and some PS3 Games?-->) | |||
**PSVita & PS4 (unknown yet, but probable) | |||
= VSMX Structure = | |||
Some compiler/decompiler code samples can be seen: [https://github.com/Zarh/ManaGunZ/blob/master/MGZ/source/jsx.c managunz], [https://github.com/zingaburga/RCOMage/blob/master/src/vsmx.c rcomage] | |||
= | == Header == | ||
( | {| class="wikitable" style="text-align: center;" | ||
< | |+VSMX Header | ||
VSMX header | ! Offset !! Size !! Example (hex)<BR />from coldboot.jsx !! Value !! Notes | ||
|-{{cellcolors|black|lime}} | |||
| 0x00 || 0x04 || 0x56534D58 || VSMX || Magic | |||
( | |-{{cellcolors|black|lime}} | ||
| 0x04 || 0x04 || 0x00000200 || 2.0 || Mayor version.Minor version (PSP=1.0) (PS3=2.0) | |||
|-{{cellcolors|#ffffdd}} | |||
| 0x08 || 0x04 || 0x34000000 || 0x34 || absolute offset of OPCODE table (also, header length) | |||
|-{{cellcolors|#ffffdd}} | |||
| 0x0C || 0x04 || 0x30100000 || 0x1030 || length of OPCODE table (also, number of entries = length / 8) | |||
|-{{cellcolors|#ffdddd}} | |||
| 0x10 || 0x04 || 0x64100000 || 0x1064 || absolute offset of STRING table | |||
|-{{cellcolors|#ffdddd}} | |||
| 0x14 || 0x04 || 0x7A000000 || 0x7A || length of STRING table | |||
|-{{cellcolors|#ffdddd}} | |||
| 0x18 || 0x04 || 0x08000000 || 0x8 || number of entries inside STRING table | |||
|-{{cellcolors|#ddddff}} | |||
| 0x1C || 0x04 || 0xDE100000 || 0x10DE || absolute offset of ATTR table | |||
|-{{cellcolors|#ddddff}} | |||
| 0x20 || 0x04 || 0xA2000000 || 0xA2 || length of ATTR table | |||
|-{{cellcolors|#ddddff}} | |||
| 0x24 || 0x04 || 0x09000000 || 0x9 || number of entries inside ATTR table | |||
|-{{cellcolors|#ddffdd}} | |||
| 0x28 || 0x04 || 0x80110000 || 0x1180 || absolute offset of GLOBAL table | |||
|-{{cellcolors|#ddffdd}} | |||
| 0x2C || 0x04 || 0x70010000 || 0x170 || length of GLOBAL table | |||
|-{{cellcolors|#ddffdd}} | |||
| 0x30 || 0x04 || 0x23000000 || 0x23 || number of entries inside GLOBAL table | |||
|- | |||
|} | |||
*Table access related opcodes: (this is here by now just as an argument of why to choose this names for the tables, if there are better names please suggest/discuss or change them) | |||
**0x28 PUSH_STRING | |||
**0x2F GETATTR, 0x30 GETATTR_KEEPOBJ | |||
**0x2E PUSH_GLOBAL | |||
== OPCODE Table == | |||
The table is composed by several entries, and every entry is composed by 8 bytes: | |||
1byte(opcode)+1byte(arguments)+1byte(unknown)+1byte(variables)+4bytes(value) | |||
See [http://pastebin.com/vRCDzXt1 Pastebin] (without the header) of the coldboot. | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |||
! OpCode<BR />(1 byte) !! Args<BR />(1 byte) !! Unkown<BR />(1 byte) !! Vars<BR />(1 byte) !! Value<BR />(4 bytes) !! Mnemonics<BR />(official) !! Mnemonics<BR />(rcomage) !! Syntax<BR />([[PlayStation JavaScript|PSJS]]) !! Notes | |||
|- | |||
! colspan="9" {{cellcolors|grey|white}} Assignment Operators ? | |||
|- | |||
| 0x00 || {{no}} || {{no}} || {{no}} || {{no}} || NOP || UNKNOWN_0 || || | |||
|- | |||
| 0x01 || {{no}} || {{no}} || {{no}} || {{no}} || ASSGN || ASSIGN || = || | |||
|- | |||
! colspan="9" {{cellcolors|grey|white}} Arithmetic Operators | |||
|- | |||
| 0x02 || {{no}} || {{no}} || {{no}} || {{no}} || ADD || ADD || + || | |||
|- | |||
| 0x03 || {{no}} || {{no}} || {{no}} || {{no}} || SUB || SUBTRACT || - || | |||
|- | |||
| 0x04 || {{no}} || {{no}} || {{no}} || {{no}} || MUL || MULTIPLY || * || | |||
|- | |||
| 0x05 || {{no}} || {{no}} || {{no}} || {{no}} || DIV || DIVIDE || / || | |||
|- | |||
| 0x06 || {{no}} || {{no}} || {{no}} || {{no}} || MOD || MODULUS || % || | |||
|- | |||
| 0x07 || {{no}} || {{no}} || {{no}} || {{no}} || TO_NUMBER || POSITIVE || || | |||
|- | |||
| 0x08 || {{no}} || {{no}} || {{no}} || {{no}} || CSIGN || NEGATE || -i || | |||
|- | |- | ||
| | | 0x09 || {{no}} || {{no}} || {{no}} || {{no}} || NOT || NOT || || | ||
| | |||
| | |||
| | |||
| | |||
|- | |- | ||
| | | 0x0A || {{no}} || {{no}} || {{no}} || {{no}} || INC || PRE_INCREMENT || ++i || | ||
|- | |- | ||
| | | 0x0B || {{no}} || {{no}} || {{no}} || {{no}} || DEC || PRE_DECREMENT || --i || | ||
|- | |- | ||
| | | 0x0C || {{no}} || {{no}} || {{no}} || {{no}} || POST_INC || INCREMENT ||i++ || | ||
|- | |- | ||
| | | 0x0D || {{no}} || {{no}} || {{no}} || {{no}} || POST_DEC || DECREMENT || i-- || | ||
|- | |- | ||
| | ! colspan="9" {{cellcolors|grey|white}} Compare Operators | ||
|- | |- | ||
| | | 0x0E || {{no}} || {{no}} || {{no}} || {{no}} || CMPEQ || TEST_EQUAL || == || | ||
|- | |- | ||
| | | 0x0F || {{no}} || {{no}} || {{no}} || {{no}} || CMPNEQ || TEST_NOT_EQUAL || != || | ||
|- | |- | ||
| | | 0x10 || {{no}} || {{no}} || {{no}} || {{no}} || CMPSEQ || TEST_IDENTITY || === || | ||
|- | |- | ||
| | | 0x11 || {{no}} || {{no}} || {{no}} || {{no}} || CMPSNEQ || TEST_NON_IDENTITY || !== || | ||
|- | |- | ||
| | | 0x12 || {{no}} || {{no}} || {{no}} || {{no}} || CMPLT || TEST_LESS_THAN || < || | ||
|- | |- | ||
| | | 0x13 || {{no}} || {{no}} || {{no}} || {{no}} || CMPLE || TEST_LESS_EQUAL_THAN || <= || | ||
|- | |- | ||
| | | 0x14 || {{no}} || {{no}} || {{no}} || {{no}} || CMPGE || TEST_MORE_EQUAL_THAN || >= || | ||
|- | |- | ||
| | | 0x15 || {{no}} || {{no}} || {{no}} || {{no}} || CMPGT || TEST_MORE_THAN || > || | ||
|- | |- | ||
! colspan="9" {{cellcolors|grey|white}} Bitwise Operators ? | |||
= | |||
{| | |||
|- | |- | ||
| 0x16 || {{no}} || {{no}} || {{no}} || {{no}} || INSTANCEOF || UNKNOWN_16 || || | |||
|- | |- | ||
| | | 0x17 || {{no}} || {{no}} || {{no}} || {{no}} || IN || UNKNOWN_17 || || | ||
|- | |- | ||
| | | 0x18 || {{no}} || {{no}} || {{no}} || {{no}} || TYPEOF || TYPEOF || || | ||
|- | |- | ||
| | | 0x19 || {{no}} || {{no}} || {{no}} || {{no}} || BIT_AND || BINARY_AND || & || | ||
|- | |- | ||
| | | 0x1A || {{no}} || {{no}} || {{no}} || {{no}} || BIT_XOR || BINARY_XOR || ^ || | ||
|- | |- | ||
| | | 0x1B || {{no}} || {{no}} || {{no}} || {{no}} || BIT_OR || BINARY_OR || <nowiki>|</nowiki> || | ||
|- | |- | ||
| | | 0x1C || {{no}} || {{no}} || {{no}} || {{no}} || BIT_NOT || BINARY_NOT || ~ || | ||
|- | |- | ||
| | | 0x1D || {{no}} || {{no}} || {{no}} || {{no}} || LSHIFT || LSHIFT || << || | ||
|- | |- | ||
| | | 0x1E || {{no}} || {{no}} || {{no}} || {{no}} || S_RSHIFT || RSHIFT || >> || | ||
|- | |- | ||
| | | 0x1F || {{no}} || {{no}} || {{no}} || {{no}} || U_RSHIFT || UNSIGNED_RSHIFT || || | ||
|- | |- | ||
| | ! colspan="9" {{cellcolors|grey|white}} ? | ||
|- | |- | ||
| | | 0x20 || {{no}} || {{no}} || {{no}} || {{no}} || COPY || STACK_PUSH || || | ||
|- | |- | ||
| | | 0x21 || {{no}} || {{no}} || {{no}} || {{no}} || SWAP || UNKNOWN_21 || || | ||
|- | |- | ||
| | | 0x22 || {{no}} || {{no}} || {{no}} || {{no}} || REMOVE || END_STATEMENT || ; || | ||
|- | |- | ||
| | ! colspan="9" {{cellcolors|grey|white}} Data Types | ||
|- | |- | ||
| | | 0x23 || {{no}} || {{no}} || {{no}} || {{yes}} || PUSH_UNDEFINED || CONST_NULL || || | ||
|- | |- | ||
| | | 0x24 || {{no}} || {{no}} || {{no}} || {{yes}} || PUSH_NULL || CONST_EMPTY_ARRAY || || | ||
|- | |- | ||
| | | 0x25 || {{no}} || {{no}} || {{no}} || {{yes}} || PUSH_BOOL || CONST_BOOL || ''true'' / '' false'' || | ||
|- | |- | ||
| | | 0x26 || {{no}} || {{no}} || {{no}} || {{yes}} || PUSH_INT || CONST_INT || 1 || | ||
|- | |- | ||
| | | 0x27 || {{no}} || {{no}} || {{no}} || {{yes}} || PUSH_FLOAT || CONST_FLOAT || 0.1 || | ||
|- | |- | ||
| | | 0x28 || {{no}} || {{no}} || {{no}} || {{yes}} || PUSH_STRING || CONST_STRING || ''("string")'' || | ||
|- | |- | ||
| | ! colspan="9" {{cellcolors|grey|white}} Complex Data Types | ||
|- | |- | ||
| | | 0x29 || {{no}} || {{no}} || {{no}} || {{yes}} || PUSH_OBJECT || CONST_OBJECT || ''object'' || | ||
|- | |- | ||
| | | 0x2A || {{yes}} || {{no}} || {{yes}} || {{yes}} || PUSH_FUNC || FUNCTION || ''function'' || | ||
|- | |- | ||
| | | 0x2B || {{no}} || {{no}} || {{no}} || {{yes}} || PUSH_ARRAY || CONST_ARRAY || ''array'' || | ||
|- | |- | ||
| | | 0x2C || {{no}} || {{no}} || {{no}} || {{yes}} || PUSH_THIS || THIS_OBJECT || || | ||
|- | |- | ||
| | | 0x2D || {{no}} || {{no}} || {{no}} || {{yes}} || PUSH_LOCAL || UNNAMED_VARIABLE || ''var'' || variable declared inside a function,object, etc... (local scope) | ||
|- | |- | ||
| | | 0x2E || {{no}} || {{no}} || {{no}} || {{yes}} || PUSH_GLOBAL || NAME || ''var'' || variable declared at top of the script (global scope) | ||
|- | |- | ||
| | ! colspan="9" {{cellcolors|grey|white}} Attributes related | ||
|- | |- | ||
| | | 0x2F || {{no}} || {{no}} || {{no}} || {{yes}} || GETATTR || PROPERTY || || | ||
|- | |- | ||
| | | 0x30 || {{no}} || {{no}} || {{no}} || {{yes}} || GETATTR_KEEPOBJ || METHOD || || | ||
|- | |- | ||
| | | 0x31 || {{no}} || {{no}} || {{no}} || {{yes}} || SETATTR || SET || || | ||
|- | |- | ||
| | | 0x32 || {{no}} || {{no}} || {{no}} || {{yes}} || DELATTR || UNSET || || | ||
|- | |- | ||
| | | 0x33 || {{no}} || {{no}} || {{no}} || {{yes}} || APPEND_ATTR || OBJECT_ADD_ATTRIBUTE || || | ||
|- | |- | ||
| | ! colspan="9" {{cellcolors|grey|white}} Items related | ||
|- | |- | ||
| | | 0x34 || {{no}} || {{no}} || {{no}} || {{yes}} || GETITEM || ARRAY_INDEX || || | ||
|- | |- | ||
| | | 0x35 || {{no}} || {{no}} || {{no}} || {{yes}} || GETITEM_KEEPOBJ || UNKNOWN_35 || || | ||
|- | |- | ||
| | | 0x36 || {{no}} || {{no}} || {{no}} || {{yes}} || SETITEM || ARRAY_INDEX_ASSIGN || || | ||
|- | |- | ||
| | | 0x37 || {{no}} || {{no}} || {{no}} || {{yes}} || DELITEM || UNKNOWN_37 || || | ||
|- | |- | ||
| | | 0x38 || {{no}} || {{no}} || {{no}} || {{yes}} || APPEND_ITEM || ARRAY_PUSH || || | ||
|- | |- | ||
| | ! colspan="9" {{cellcolors|grey|white}} if/else/for (opcode jumps) | ||
|- | |- | ||
| | | 0x39 || {{no}} || {{no}} || {{no}} || {{yes}} || JUMP || JUMP || || | ||
|- | |- | ||
| | | 0x3A || {{no}} || {{no}} || {{no}} || {{yes}} || JUMPT || JUMP_IF_TRUE || || | ||
|- | |- | ||
| | | 0x3B || {{no}} || {{no}} || {{no}} || {{yes}} || JUMPF || JUMP_IF_FALSE || || | ||
|- | |- | ||
| | ! colspan="9" {{cellcolors|grey|white}} Code structure builders | ||
|- | |- | ||
| | | 0x3C || {{no}} || {{no}} || {{no}} || {{no}} || CALL_FUNC || CALL_FUNCTION || function() || | ||
|- | |- | ||
| | | 0x3D || {{no}} || {{no}} || {{no}} || {{no}} || CALL_METHOD || CALL_METHOD || || | ||
|- | |- | ||
| | | 0x3E || {{no}} || {{no}} || {{no}} || {{yes}} || CALL_CONSTRUCTOR || CALL_INBUILT / CALL_NEW <!-- different versions of rcomage --> || (i) || | ||
|- | |- | ||
| | ! colspan="9" {{cellcolors|grey|white}} | ||
|- | |- | ||
| | | 0x3F || {{no}} || {{no}} || {{no}} || {{no}} || RET || RETURN || ''return'' || | ||
|- | |- | ||
| | | 0x40 || {{no}} || {{no}} || {{no}} || {{no}} || THROW || UNKNOWN_40 || || | ||
|- | |- | ||
| | ! colspan="9" {{cellcolors|grey|white}} | ||
|- | |- | ||
| | | 0x41 || {{no}} || {{no}} || {{no}} || {{no}} || TRYBLK_IN || UNKNOWN_41 || || | ||
|- | |- | ||
| | | 0x42 || {{no}} || {{no}} || {{no}} || {{no}} || TRYBLK_OUT || UNKNOWN_42 || || | ||
|- | |- | ||
| | | 0x43 || {{no}} || {{no}} || {{no}} || {{no}} || CATCH_FINALLYBLK_IN || UNKNOWN_43 || || | ||
|- | |- | ||
| | | 0x44 || {{no}} || {{no}} || {{no}} || {{no}} || CATCH_FINALLYBLK_OUT || UNKNOWN_44 || || | ||
|- | |- | ||
| | ! colspan="9" {{cellcolors|grey|white}} | ||
|- | |- | ||
| | | 0x45 || {{no}} || {{no}} || {{no}} || {{no}} || HALT || END_SCRIPT || || | ||
|- | |- | ||
| | ! colspan="9" {{cellcolors|grey|white}} Debug | ||
|- | |- | ||
| | | 0x46 || {{no}} || {{no}} || {{no}} || {{no}} || DEBUG_FILE || DEBUG_FILE || || | ||
|- | |- | ||
| | | 0x47 || {{no}} || {{no}} || {{no}} || {{no}} || DEBUG_LINE || DEBUG_LINE || || | ||
|- | |- | ||
| | ! colspan="9" {{cellcolors|grey|white}} VSMX v2 (new opcodes for PS3) ? | ||
|- | |- | ||
| | | 0x48 || {{no}} || {{no}} || {{no}} || {{yes}} || GETITEM_KEEPOBJNAME || UNKNOWN_48 || || | ||
|- | |- | ||
| | | 0x49 || {{no}} || {{no}} || {{no}} || {{yes}} || PUSH_VECTOR || UNKNOWN_49 / MAKE_FLOAT_ARRAY <!-- different versions of rcomage --> || <nowiki><i></nowiki> || | ||
|- | |- | ||
| | | 0x4A || {{no}} || {{no}} || {{no}} || {{yes}} || GET_VECTOR_ELEMENT || UNKNOWN_4a || || | ||
|- | |- | ||
| | | 0x4B || {{no}} || {{no}} || {{no}} || {{yes}} || GET_VECTOR_ELEMENT_KEEPVECTOR || UNKNOWN_4b || || | ||
|- | |- | ||
| | | 0x4C || {{no}} || {{no}} || {{no}} || {{yes}} || ASSGN_VECTOR_ELEMENT || UNKNOWN_4c || || | ||
|- | |- | ||
| | | 0x4D || {{no}} || {{no}} || {{yes}} || {{yes}} || SETATTR_VECTOR_ELEMENT || UNKNOWN_4d || -> || byte 4 is an identifyer from a vector (x,y,z) (r,g,b,a) etc... | ||
|- | |- | ||
| | | 0x4E || {{no}} || {{no}} || {{no}} || {{yes}} || SETITEM_VECTOR_ELEMENT || UNKNOWN_4e || || <!--byte 4 uses a vector identifyer--> | ||
|- | |- | ||
| | |} | ||
* cells marked with yes/no are speculative, based in how the opcodes are grouped and how other known opcodes works | |||
=== Arithmetic Operators === | |||
May be move later to [[PlayStation JavaScript]] or make it as template | |||
Arithmetic operators are used to perform arithmetic between variables and/or values. | |||
*http://www.w3schools.com/js/js_operators.asp | |||
{| class="wikitable sortable" | |||
|- | |- | ||
| | ! OpCode ([[VSMX|VSMX]]) | ||
! Mnemonics ([[VSMX|VSMX]]) | |||
! Syntax ([[PlayStation JavaScript|PSJS]]) | |||
! Description: | |||
|- | |- | ||
| | | 0x02 || ADD || + || Addition | ||
|- | |- | ||
| | | 0x03 || SUB || - || Subtraction | ||
|- | |- | ||
| | | 0x04 || MUL || * || Multiplication | ||
|- | |- | ||
| | | 0x05 || DIV || / || Division | ||
|- | |- | ||
| | | 0x06 || MOD || % || Modulus (division remainder) | ||
|- | |- | ||
| | | 0x0A || INC || ++ || Increment | ||
|- | |- | ||
| | | 0x0B || DEC || -- || Decrement | ||
|- | |- | ||
| | | 0x0C || POST_INC || ++ || Increment | ||
|- | |- | ||
| | | 0x0D || POST_DEC || -- || Decrement | ||
|- | |- | ||
|} | |} | ||
== | === Bitwise Operators === | ||
Bit operators work on 32 bits numbers. | |||
Any numeric operand in the operation is converted into a 32 bit number. | |||
*http://www.w3schools.com/js/js_operators.asp | |||
{| class="wikitable sortable" | |||
|- | |||
! OpCode ([[VSMX|VSMX]]) | |||
! Mnemonics ([[VSMX|VSMX]]) | |||
! Syntax ([[PlayStation JavaScript|PSJS]]) | |||
! Description: | |||
|- | |||
| 0x19 || BIT_AND || & || AND | |||
|- | |||
| 0x1A || BIT_XOR || ^ || XOR | |||
|- | |||
| 0x1B || BIT_OR || <nowiki>|</nowiki> || OR | |||
|- | |||
| 0x1C || BIT_NOT || ~ || NOT | |||
|- | |||
| 0x1D || LSHIFT || << || Left Shift | |||
|- | |||
| 0x1E || S_RSHIFT || >> || Right Shift | |||
|- | |||
|} | |||
=== Compare Operators === | |||
Comparison and Logical operators are used to test for true or false. | Comparison and Logical operators are used to test for true or false. | ||
Comparison operators are used in logical statements to determine equality or difference between variables or values. | |||
*http://www.w3schools.com/js/js_comparisons.asp | *http://www.w3schools.com/js/js_comparisons.asp | ||
Line 248: | Line 329: | ||
{| class="wikitable sortable" | {| class="wikitable sortable" | ||
|- | |- | ||
! | ! OpCode ([[VSMX|VSMX]]) | ||
! | ! Mnemonics ([[VSMX|VSMX]]) | ||
! | ! Syntax ([[PlayStation JavaScript|PSJS]]) | ||
! | ! Description: | ||
|- | |- | ||
| | | 0x0E || CMPEQ || == || Equality | ||
|- | |- | ||
| | | 0x0F || CMPNEQ || != || Inequality | ||
|- | |- | ||
| | | 0x10 || CMPSEQ || === || Strict Equal value and equal type | ||
|- | |- | ||
| Strict not equal value or not equal type | | 0x11 || CMPSNEQ || !== || Strict not equal value or not equal type | ||
|- | |- | ||
| | | 0x12 || CMPLT || < || Less Than | ||
|- | |- | ||
| | | 0x13 || CMPLE || <= || Less Than or Equal To | ||
|- | |- | ||
| | | 0x14 || CMPGE || >= || Greater Than or Equal To | ||
|- | |- | ||
| | | 0x15 || CMPGT || > || Greater Than | ||
|- | |- | ||
|} | |} | ||
Line 274: | Line 355: | ||
*http://es5.github.io/#x11.9.6 The Strict Equality Comparison Algorithm | *http://es5.github.io/#x11.9.6 The Strict Equality Comparison Algorithm | ||
=== Logical Operators === | |||
Comparison and Logical operators are used to test for true or false. | |||
Logical operators are used to determine the logic between variables or values. | |||
*http://www.w3schools.com/js/js_comparisons.asp | |||
{| class="wikitable sortable" | |||
|- | |||
! OpCode ([[VSMX|VSMX]]) | |||
! Mnemonics ([[VSMX|VSMX]]) | |||
! Syntax ([[PlayStation JavaScript|PSJS]]) | |||
! Description: | |||
|- | |||
| - || || <nowiki>||</nowiki> || or | |||
|- | |||
| - || || && || and | |||
|- | |||
|} | |||
== STRING table == | |||
== ATTR Table == | |||
== GLOBAL Table == | |||
= VSMX Decompilation sample = | |||
This is an example of the decodification and decompilation made with the VSMX script contained inside [[coldboot.raf]]. The decompilation has been made by hand because the vsmx decompiler by ZiNgA BuRgA doesnt supports vectors and crashes, the purpose is to serve as an explain of how the opcodes works, the features that was added to VSMX v2 format for PS3, and as an overall explain of how to decompile other VSMX files | |||
The file can be saved as .js and compiled directlly (there is no need to remove the comments), for a better overview of the decompiled code of this sample in [[PlayStation JavaScript]] format see [[Coldboot.raf#Script]] page | |||
*Form left to right: | |||
**'''NUM''' - Is the opcode number (important because the JUMPS are pointers to other opcodes identifyed by his number) | |||
**'''OPCODE''' - The hex value that identifyes the opcode (first byte)... second byte reserved?... third byte unknown... fourth byte argument | |||
**'''VALUE''' - Any value, or pointer to internal VSMX tables (4 bytes) | |||
**'''OPCODE NAME''' - Self explanatory, is a direct conversion from the hex value to the name | |||
**'''VALUES CONVERSION''' - For pointers are text strings extracted from internal VSMX tables, Data types are the conversion from hex, JUMPS and FUNCTS contains also identifyers for other opcodes and arguments | |||
**'''DECOMPILED PSJS CODE''' - The source code in [[PlayStation JavaScript]] format ready to compile, it will generate a coldboot.jsx exactly like the one extracted from coldboot.raf by the [[CXML Containers|CXML decompiler tool]] | |||
{{Boxcode|title=coldboot.js (decompiled from coldboot.jsx)|code=<syntaxhighlight lang="javascript"> | |||
//--------------------------------------------------------------------------------------------------------------------- | |||
// VSMX v2 Decompilation Sample (coldboot.raf PS3). Decompiled step by step from VSMX opcodes to PSJS code by sandungas | |||
// Comments can be deleted in notepad++ by replacing (with nothing) the regular expressions /\*.*\*/ and then //.*\r\n | |||
// The file generated after compilation in VSMX format should have MD5: 5461466B242D81B57D872BBA95EED753 | |||
// | |||
// Thanks to ;) | |||
// Flatz for the experimental CXML decompiler, ZiNgA BuRgA for the experimental VSMX v1 decoder/decompiler, | |||
// AdaLoveLace for the OPCODE names, and TizzyT for the help with PSJS | |||
//--------------------------------------------------------------------------------------------------------------------- | |||
// NUM - OPCODE VALUES - OPCODE NAME VALUES CONVERSION */DECOMPILED PSJS CODE | |||
//--------------------------------------------------------------------------------------------------------------------- | |||
/* 000 - 2E000000 00000000 - PUSH_GLOBAL logo_hd *///logo_hd | |||
/* 001 - 2E000000 1E000000 - PUSH_GLOBAL Actor *///Actor | |||
/* 002 - 28000000 00000000 - PUSH_STRING "logo" *///"logo" | |||
/* 003 - 3E000000 01000000 - CALL_CONSTRUCTOR 1 *///new Actor("logo") | |||
/* 004 - 01000000 00000000 - ASSGN *///logo_hd = new Actor("logo") | |||
/* 005 - 22000000 00000000 - REMOVE */var logo_hd = new Actor("logo"); | |||
/* 006 - 2E000000 01000000 - PUSH_GLOBAL blur_hd *///blur_hd | |||
/* 007 - 2E000000 1E000000 - PUSH_GLOBAL Actor *///Actor | |||
/* 008 - 28000000 01000000 - PUSH_STRING "blur" *///"blur" | |||
/* 009 - 3E000000 01000000 - CALL_CONSTRUCTOR 1 *///new Actor("blur") | |||
/* 010 - 01000000 00000000 - ASSGN *///blur_hd = new Actor("blur") | |||
/* 011 - 22000000 00000000 - REMOVE */var blur_hd = new Actor("blur"); | |||
/* 012 - 2E000000 02000000 - PUSH_GLOBAL footer_hd *///footer_hd | |||
/* 013 - 2E000000 1E000000 - PUSH_GLOBAL Actor *///Actor | |||
/* 014 - 28000000 02000000 - PUSH_STRING "footer" *///"footer" | |||
/* 015 - 3E000000 01000000 - CALL_CONSTRUCTOR 1 *///new Actor("footer") | |||
/* 016 - 01000000 00000000 - ASSGN *///footer_hd = new Actor("footer") | |||
/* 017 - 22000000 00000000 - REMOVE */var footer_hd = new Actor("footer"); | |||
/* 018 - 2E000000 03000000 - PUSH_GLOBAL logo_sd *///logo_sd | |||
/* 019 - 2E000000 1E000000 - PUSH_GLOBAL Actor *///Actor | |||
/* 020 - 28000000 03000000 - PUSH_STRING "logo_sd" *///"logo_sd" | |||
/* 021 - 3E000000 01000000 - CALL_CONSTRUCTOR 1 *///new Actor("logo_sd") | |||
/* 022 - 01000000 00000000 - ASSGN *///logo_sd = new Actor("logo_sd") | |||
/* 023 - 22000000 00000000 - REMOVE */var logo_sd = new Actor("logo_sd"); | |||
/* 024 - 2E000000 04000000 - PUSH_GLOBAL blur_sd *///blur_sd | |||
/* 025 - 2E000000 1E000000 - PUSH_GLOBAL Actor *///Actor | |||
/* 026 - 28000000 04000000 - PUSH_STRING "blur_sd" *///"blur_sd" | |||
/* 027 - 3E000000 01000000 - CALL_CONSTRUCTOR 1 *///new Actor("blur_sd") | |||
/* 028 - 01000000 00000000 - ASSGN *///blur_sd = new Actor("blur_sd") | |||
/* 029 - 22000000 00000000 - REMOVE */var blur_sd = new Actor("blur_sd"); | |||
/* 030 - 2E000000 05000000 - PUSH_GLOBAL footer_sd *///footer_sd | |||
/* 031 - 2E000000 1E000000 - PUSH_GLOBAL Actor *///Actor | |||
/* 032 - 28000000 05000000 - PUSH_STRING "footer_sd" *///"footer_sd" | |||
/* 033 - 3E000000 01000000 - CALL_CONSTRUCTOR 1 *///new Actor("footer_sd") | |||
/* 034 - 01000000 00000000 - ASSGN *///footer_sd = new Actor("footer_sd") | |||
/* 035 - 22000000 00000000 - REMOVE */var footer_sd = new Actor("footer_sd"); | |||
/* 036 - 2E000000 06000000 - PUSH_GLOBAL camera *///camera | |||
/* 037 - 2E000000 1F000000 - PUSH_GLOBAL Camera *///Camera | |||
/* 038 - 28000000 06000000 - PUSH_STRING "camera" *///"camera" | |||
/* 039 - 3E000000 01000000 - CALL_CONSTRUCTOR 1 *///new Camera("camera") | |||
/* 040 - 01000000 00000000 - ASSGN *///camera = new Camera("camera") | |||
/* 041 - 22000000 00000000 - REMOVE */var camera = new Camera("camera"); | |||
/* 042 - 2E000000 07000000 - PUSH_GLOBAL light *///light | |||
/* 043 - 2E000000 20000000 - PUSH_GLOBAL Light *///Light | |||
/* 044 - 28000000 07000000 - PUSH_STRING "pointlight" *///"pointlight" | |||
/* 045 - 3E000000 01000000 - CALL_CONSTRUCTOR 1 *///new Light("pointlight") | |||
/* 046 - 01000000 00000000 - ASSGN *///light = new Light("pointlight") | |||
/* 047 - 22000000 00000000 - REMOVE */var light = new Light("pointlight"); | |||
/* 048 - 2E000000 08000000 - PUSH_GLOBAL first_wait *///first_wait | |||
/* 049 - 27000000 0000C03F - PUSH_FLOAT 1.5 *///1.5 | |||
/* 050 - 01000000 00000000 - ASSGN *///first_wait = 1.5 | |||
/* 051 - 22000000 00000000 - REMOVE */var first_wait = 1.5; | |||
/* 052 - 2E000000 09000000 - PUSH_GLOBAL appear_duration *///appear_duration | |||
/* 053 - 27000000 6666A63F - PUSH_FLOAT 1.3 *///1.3 | |||
/* 054 - 01000000 00000000 - ASSGN *///appear_duration = 1.3 | |||
/* 055 - 22000000 00000000 - REMOVE */var appear_duration = 1.3; | |||
/* 056 - 2E000000 0A000000 - PUSH_GLOBAL appear_wait *///appear_wait | |||
/* 057 - 27000000 0000803E - PUSH_FLOAT 0.25 *///0.25 | |||
/* 058 - 08000000 00000000 - CSIGN *///-0.25 | |||
/* 059 - 01000000 00000000 - ASSGN *///appear_wait = -0.25 | |||
/* 060 - 22000000 00000000 - REMOVE */var appear_wait = -0.25; | |||
/* 061 - 2E000000 0B000000 - PUSH_GLOBAL blur_duration *///blur_duration | |||
/* 062 - 27000000 0000003F - PUSH_FLOAT 0.5 *///0.5 | |||
/* 063 - 01000000 00000000 - ASSGN *///blur_duration = 0.5 | |||
/* 064 - 22000000 00000000 - REMOVE */var blur_duration = 0.5; | |||
/* 065 - 2E000000 0C000000 - PUSH_GLOBAL blur_wait *///blur_wait | |||
/* 066 - 27000000 0000803E - PUSH_FLOAT 0.25 *///0.25 | |||
/* 067 - 01000000 00000000 - ASSGN *///blur_wait = 0.25 | |||
/* 068 - 22000000 00000000 - REMOVE */var blur_wait = 0.25; | |||
/* 069 - 2E000000 0D000000 - PUSH_GLOBAL whole_duration *///whole_duration | |||
/* 070 - 27000000 0000003F - PUSH_FLOAT 0.5 *///0.5 | |||
/* 071 - 01000000 00000000 - ASSGN *///whole_duration = 0.5 | |||
/* 072 - 22000000 00000000 - REMOVE */var whole_duration = 0.5; | |||
/* 073 - 2E000000 0E000000 - PUSH_GLOBAL whole_wait *///whole_wait | |||
/* 074 - 27000000 0000003F - PUSH_FLOAT 0.5 *///0.5 | |||
/* 075 - 01000000 00000000 - ASSGN *///whole_wait = 0.5 | |||
/* 076 - 22000000 00000000 - REMOVE */var whole_wait = 0.5; | |||
/* 077 - 2E000000 0F000000 - PUSH_GLOBAL fade_duration *///fade_duration | |||
/* 078 - 27000000 9A99993F - PUSH_FLOAT 1.2 *///1.2 | |||
/* 079 - 01000000 00000000 - ASSGN *///fade_duration = 1.2 | |||
/* 080 - 22000000 00000000 - REMOVE */var fade_duration = 1.2; | |||
/* 081 - 2E000000 10000000 - PUSH_GLOBAL appear_start_time *///appear_start_time | |||
/* 082 - 2E000000 08000000 - PUSH_GLOBAL first_wait *///first_wait | |||
/* 083 - 01000000 00000000 - ASSGN *///appear_start_time = first_wait | |||
/* 084 - 22000000 00000000 - REMOVE */var appear_start_time = first_wait; | |||
/* 085 - 2E000000 11000000 - PUSH_GLOBAL blur_start_time *///blur_start_time | |||
/* 086 - 2E000000 10000000 - PUSH_GLOBAL appear_start_time *///appear_start_time | |||
/* 087 - 2E000000 09000000 - PUSH_GLOBAL appear_duration *///appear_duration | |||
/* 088 - 02000000 00000000 - ADD *///appear_start_time + appear_duration | |||
/* 089 - 2E000000 0A000000 - PUSH_GLOBAL appear_wait *///appear_wait | |||
/* 090 - 02000000 00000000 - ADD *///appear_start_time + appear_duration + appear_wait | |||
/* 091 - 01000000 00000000 - ASSGN *///blur_start_time = appear_start_time + appear_duration + appear_wait | |||
/* 092 - 22000000 00000000 - REMOVE */var blur_start_time = appear_start_time + appear_duration + appear_wait; | |||
/* 093 - 2E000000 12000000 - PUSH_GLOBAL whole_start_time *///whole_start_time | |||
/* 094 - 2E000000 11000000 - PUSH_GLOBAL blur_start_time *///blur_start_time | |||
/* 095 - 2E000000 0B000000 - PUSH_GLOBAL blur_duration *///blur_duration | |||
/* 096 - 02000000 00000000 - ADD *///blur_start_time + blur_duration | |||
/* 097 - 2E000000 0C000000 - PUSH_GLOBAL blur_wait *///blur_wait | |||
/* 098 - 02000000 00000000 - ADD *///blur_start_time + blur_duration + blur_wait | |||
/* 099 - 01000000 00000000 - ASSGN *///whole_start_time = blur_start_time + blur_duration + blur_wait | |||
/* 100 - 22000000 00000000 - REMOVE */var whole_start_time = blur_start_time + blur_duration + blur_wait; | |||
/* 101 - 2E000000 13000000 - PUSH_GLOBAL fade_start_time *///fade_start_time | |||
/* 102 - 2E000000 12000000 - PUSH_GLOBAL whole_start_time *///whole_start_time | |||
/* 103 - 2E000000 0D000000 - PUSH_GLOBAL whole_duration *///whole_duration | |||
/* 104 - 02000000 00000000 - ADD *///whole_start_time + whole_duration | |||
/* 105 - 2E000000 0E000000 - PUSH_GLOBAL whole_wait *///whole_wait | |||
/* 106 - 02000000 00000000 - ADD *///whole_start_time + whole_duration + whole_wait | |||
/* 107 - 01000000 00000000 - ASSGN *///fade_start_time = whole_start_time + whole_duration + whole_wait | |||
/* 108 - 22000000 00000000 - REMOVE */var fade_start_time = whole_start_time + whole_duration + whole_wait; | |||
/* 109 - 2E000000 14000000 - PUSH_GLOBAL logo *///logo | |||
/* 110 - 2E000000 00000000 - PUSH_GLOBAL logo_hd *///logo_hd | |||
/* 111 - 01000000 00000000 - ASSGN *///logo = logo_hd | |||
/* 112 - 22000000 00000000 - REMOVE */var logo = logo_hd; | |||
/* 113 - 2E000000 15000000 - PUSH_GLOBAL blur *///blur | |||
/* 114 - 2E000000 01000000 - PUSH_GLOBAL blur_hd *///blur_hd | |||
/* 115 - 01000000 00000000 - ASSGN *///blur = blur_hd | |||
/* 116 - 22000000 00000000 - REMOVE */var blur = blur_hd; | |||
/* 117 - 2E000000 16000000 - PUSH_GLOBAL footer *///footer | |||
/* 118 - 2E000000 02000000 - PUSH_GLOBAL footer_hd *///footer_hd | |||
/* 119 - 01000000 00000000 - ASSGN *///footer = footer_hd | |||
/* 120 - 22000000 00000000 - REMOVE */var footer = footer_hd; | |||
/* 121 - 2E000000 17000000 - PUSH_GLOBAL logo_hide *///logo_hide | |||
/* 122 - 2E000000 03000000 - PUSH_GLOBAL logo_sd *///logo_sd | |||
/* 123 - 01000000 00000000 - ASSGN *///logo_hide = logo_sd | |||
/* 124 - 22000000 00000000 - REMOVE */var logo_hide = logo_sd; | |||
/* 125 - 2E000000 18000000 - PUSH_GLOBAL blur_hide *///blur_hide | |||
/* 126 - 2E000000 04000000 - PUSH_GLOBAL blur_sd *///blur_sd | |||
/* 127 - 01000000 00000000 - ASSGN *///blur_hide = blur_sd | |||
/* 128 - 22000000 00000000 - REMOVE */var blur_hide = blur_sd; | |||
/* 129 - 2E000000 19000000 - PUSH_GLOBAL footer_hide *///footer_hide | |||
/* 130 - 2E000000 05000000 - PUSH_GLOBAL footer_sd *///footer_sd | |||
/* 131 - 01000000 00000000 - ASSGN *///footer_hide = footer_sd | |||
/* 132 - 22000000 00000000 - REMOVE */var footer_hide = footer_sd; | |||
/* 133 - 2E000000 1A000000 - PUSH_GLOBAL br *///br | |||
/* 134 - 27000000 0000803F - PUSH_FLOAT 1.0 *///1.0 | |||
/* 135 - 01000000 00000000 - ASSGN *///br = 1.0 | |||
/* 136 - 22000000 00000000 - REMOVE */var br = 1.0; | |||
/* 137 - 2E000000 21000000 - PUSH_GLOBAL System *///System | |||
/* 138 - 2F000000 00000000 - GETATTR resolution *///System.resolution | |||
/* 139 - 4A000000 00000000 - GET_VECTOR_ELEMENT 0 *///System.resolution->0 | |||
/* 140 - 26000000 D0020000 - PUSH_INT 720 *///720 | |||
/* 141 - 0E000000 00000000 - CMPEQ *///System.resolution->0 == 720 | |||
/* 142 - 3B000000 F9000000 - JUMPF 249 */if (System.resolution->0 == 720){ | |||
/* 143 - 2E000000 1A000000 - PUSH_GLOBAL br *///br | |||
/* 144 - 27000000 CDCC4C3F - PUSH_FLOAT 0.8 *///0.8 | |||
/* 145 - 01000000 00000000 - ASSGN *///br = 0.8 | |||
/* 146 - 22000000 00000000 - REMOVE */ br = 0.8; | |||
/* 147 - 2E000000 14000000 - PUSH_GLOBAL logo *///logo | |||
/* 148 - 2E000000 03000000 - PUSH_GLOBAL logo_sd *///logo_sd | |||
/* 149 - 01000000 00000000 - ASSGN *///logo = logo_sd | |||
/* 150 - 22000000 00000000 - REMOVE */ logo = logo_sd; | |||
/* 151 - 2E000000 15000000 - PUSH_GLOBAL blur *///blur | |||
/* 152 - 2E000000 04000000 - PUSH_GLOBAL blur_sd *///blur_sd | |||
/* 153 - 01000000 00000000 - ASSGN *///blur = blur_sd | |||
/* 154 - 22000000 00000000 - REMOVE */ blur = blur_sd; | |||
/* 155 - 2E000000 16000000 - PUSH_GLOBAL footer *///footer | |||
/* 156 - 2E000000 05000000 - PUSH_GLOBAL footer_sd *///footer_sd | |||
/* 157 - 01000000 00000000 - ASSGN *///footer = footer_sd | |||
/* 158 - 22000000 00000000 - REMOVE */ footer = footer_sd; | |||
/* 159 - 2E000000 17000000 - PUSH_GLOBAL logo_hide *///logo_hide | |||
/* 160 - 2E000000 00000000 - PUSH_GLOBAL logo_hd *///logo_hd | |||
/* 161 - 01000000 00000000 - ASSGN *///logo_hide = logo_hd | |||
/* 162 - 22000000 00000000 - REMOVE */ logo_hide = logo_hd; | |||
/* 163 - 2E000000 18000000 - PUSH_GLOBAL blur_hide *///blur_hide | |||
/* 164 - 2E000000 01000000 - PUSH_GLOBAL blur_hd *///blur_hd | |||
/* 165 - 01000000 00000000 - ASSGN *///blur_hide = blur_hd | |||
/* 166 - 22000000 00000000 - REMOVE */ blur_hide = blur_hd; | |||
/* 167 - 2E000000 19000000 - PUSH_GLOBAL footer_hide *///footer_hide | |||
/* 168 - 2E000000 02000000 - PUSH_GLOBAL footer_hd *///footer_hd | |||
/* 169 - 01000000 00000000 - ASSGN *///footer_hide = footer_hd | |||
/* 170 - 22000000 00000000 - REMOVE */ footer_hide = footer_hd; | |||
/* 171 - 2E000000 06000000 - PUSH_GLOBAL camera *///camera | |||
/* 172 - 2F000000 01000000 - GETATTR aspect *///camera.aspect | |||
/* 173 - 27000000 00008040 - PUSH_FLOAT 4.0 *///4.0 | |||
/* 174 - 27000000 00004040 - PUSH_FLOAT 3.0 *///3.0 | |||
/* 175 - 05000000 00000000 - DIV */// 4.0 / 3.0 | |||
/* 176 - 0E000000 00000000 - CMPEQ *///camera.aspect == 4.0 / 3.0 | |||
/* 177 - 3B000000 D6000000 - JUMPF 214 */ if (camera.aspect == 4.0 / 3.0){ | |||
/* 178 - 2E000000 1B000000 - PUSH_GLOBAL sd_offset_x *///sd_offset_x | |||
/* 179 - 27000000 0000A03F - PUSH_FLOAT 1.25 *///1.25 | |||
/* 180 - 01000000 00000000 - ASSGN *///sd_offset_x = 1.25 | |||
/* 181 - 22000000 00000000 - REMOVE */ var sd_offset_x = 1.25; | |||
/* 182 - 2E000000 14000000 - PUSH_GLOBAL logo *///logo | |||
/* 183 - 2E000000 1B000000 - PUSH_GLOBAL sd_offset_x *///sd_offset_x | |||
/* 184 - 4D000000 02000000 - SETATTR_VECTOR_ELEMENT 0 position *///logo.position->0 = sd_offset_x | |||
/* 185 - 22000000 00000000 - REMOVE */ logo.position->0 = sd_offset_x; | |||
/* 186 - 2E000000 15000000 - PUSH_GLOBAL blur *///blur | |||
/* 187 - 2E000000 1B000000 - PUSH_GLOBAL sd_offset_x *///sd_offset_x | |||
/* 188 - 4D000000 02000000 - SETATTR_VECTOR_ELEMENT 0 position *///blur.position->0 = sd_offset_x | |||
/* 189 - 22000000 00000000 - REMOVE */ blur.position->0 = sd_offset_x; | |||
/* 190 - 2E000000 16000000 - PUSH_GLOBAL footer *///footer | |||
/* 191 - 2E000000 1B000000 - PUSH_GLOBAL sd_offset_x *///sd_offset_x | |||
/* 192 - 4D000000 02000000 - SETATTR_VECTOR_ELEMENT 0 position *///footer.position->0 = sd_offset_x | |||
/* 193 - 22000000 00000000 - REMOVE */ footer.position->0 = sd_offset_x; | |||
/* 194 - 2E000000 1C000000 - PUSH_GLOBAL sd_scale *///sd_scale | |||
/* 195 - 27000000 0000803F - PUSH_FLOAT 1.0 *///1.0 | |||
/* 196 - 27000000 0000003F - PUSH_FLOAT 0.5 *///0.5 | |||
/* 197 - 27000000 0000003F - PUSH_FLOAT 0.5 *///0.5 | |||
/* 198 - 49000000 03000000 - PUSH_VECTOR 3 *///<1.0, 0.5, 0.5> | |||
/* 199 - 01000000 00000000 - ASSGN *///sd_scale = <1.0, 0.5, 0.5> | |||
/* 200 - 22000000 00000000 - REMOVE */ var sd_scale = <1.0, 0.5, 0.5>; | |||
/* 201 - 2E000000 14000000 - PUSH_GLOBAL logo *///logo | |||
/* 202 - 2E000000 1C000000 - PUSH_GLOBAL sd_scale *///sd_scale | |||
/* 203 - 31000000 03000000 - SETATTR scale *///logo.scale = sd_scale | |||
/* 204 - 22000000 00000000 - REMOVE */ logo.scale = sd_scale; | |||
/* 205 - 2E000000 15000000 - PUSH_GLOBAL blur *///blur | |||
/* 206 - 2E000000 1C000000 - PUSH_GLOBAL sd_scale *///sd_scale | |||
/* 207 - 31000000 03000000 - SETATTR scale *///blur.scale = sd_scale | |||
/* 208 - 22000000 00000000 - REMOVE */ blur.scale = sd_scale; | |||
/* 209 - 2E000000 16000000 - PUSH_GLOBAL footer *///footer | |||
/* 210 - 2E000000 1C000000 - PUSH_GLOBAL sd_scale *///sd_scale | |||
/* 211 - 31000000 03000000 - SETATTR scale *///footer.scale = sd_scale | |||
/* 212 - 22000000 00000000 - REMOVE */ footer.scale = sd_scale; | |||
/* 213 - 39000000 F9000000 - JUMP 249 */ } else { | |||
/* 214 - 2E000000 1B000000 - PUSH_GLOBAL sd_offset_x *///sd_offset_x | |||
/* 215 - 27000000 00000040 - PUSH_FLOAT 2.0 *///2.0 | |||
/* 216 - 01000000 00000000 - ASSGN *///sd_offset_x = 2.0 | |||
/* 217 - 22000000 00000000 - REMOVE */ var sd_offset_x = 2.0; | |||
/* 218 - 2E000000 14000000 - PUSH_GLOBAL logo *///logo | |||
/* 219 - 2E000000 1B000000 - PUSH_GLOBAL sd_offset_x *///sd_offset_x | |||
/* 220 - 4D000000 02000000 - SETATTR_VECTOR_ELEMENT 0 position *///logo.position->0 = sd_offset_x | |||
/* 221 - 22000000 00000000 - REMOVE */ logo.position->0 = sd_offset_x; | |||
/* 222 - 2E000000 15000000 - PUSH_GLOBAL blur *///blur | |||
/* 223 - 2E000000 1B000000 - PUSH_GLOBAL sd_offset_x *///sd_offset_x | |||
/* 224 - 4D000000 02000000 - SETATTR_VECTOR_ELEMENT 0 position *///blur.position->0 = sd_offset_x | |||
/* 225 - 22000000 00000000 - REMOVE */ blur.position->0 = sd_offset_x; | |||
/* 226 - 2E000000 16000000 - PUSH_GLOBAL footer *///footer | |||
/* 227 - 2E000000 1B000000 - PUSH_GLOBAL sd_offset_x *///sd_offset_x | |||
/* 228 - 4D000000 02000000 - SETATTR_VECTOR_ELEMENT 0 position *///footer.position->0 = sd_offset_x | |||
/* 229 - 22000000 00000000 - REMOVE */ footer.position->0 = sd_offset_x; | |||
/* 230 - 2E000000 1C000000 - PUSH_GLOBAL sd_scale *///sd_scale | |||
/* 231 - 27000000 0000803F - PUSH_FLOAT 1.0 *///1.0 | |||
/* 232 - 27000000 0000003F - PUSH_FLOAT 0.5 *///0.5 | |||
/* 233 - 27000000 0000003F - PUSH_FLOAT 0.5 *///0.5 | |||
/* 234 - 49000000 03000000 - PUSH_VECTOR 3 *///<1.0, 0.5, 0.5> | |||
/* 235 - 01000000 00000000 - ASSGN *///sd_scale = <1.0, 0.5, 0.5> | |||
/* 236 - 22000000 00000000 - REMOVE */ var sd_scale = <1.0, 0.5, 0.5>; | |||
/* 237 - 2E000000 14000000 - PUSH_GLOBAL logo *///logo | |||
/* 238 - 2E000000 1C000000 - PUSH_GLOBAL sd_scale *///sd_scale | |||
/* 239 - 31000000 03000000 - SETATTR scale *///scale | |||
/* 240 - 22000000 00000000 - REMOVE */ logo.scale = sd_scale; | |||
/* 241 - 2E000000 15000000 - PUSH_GLOBAL blur *///blur | |||
/* 242 - 2E000000 1C000000 - PUSH_GLOBAL sd_scale *///sd_scale | |||
/* 243 - 31000000 03000000 - SETATTR scale *///scale | |||
/* 244 - 22000000 00000000 - REMOVE */ blur.scale = sd_scale; | |||
/* 245 - 2E000000 16000000 - PUSH_GLOBAL footer *///footer | |||
/* 246 - 2E000000 1C000000 - PUSH_GLOBAL sd_scale *///sd_scale | |||
/* 247 - 31000000 03000000 - SETATTR scale *///scale | |||
/* 248 - 22000000 00000000 - REMOVE */ footer.scale = sd_scale;}} | |||
/* 249 - 2E000000 17000000 - PUSH_GLOBAL logo_hide *///logo_hide | |||
/* 250 - 26000000 00000000 - PUSH_INT 0 *///0 | |||
/* 251 - 26000000 00000000 - PUSH_INT 0 *///0 | |||
/* 252 - 26000000 00000000 - PUSH_INT 0 *///0 | |||
/* 253 - 26000000 00000000 - PUSH_INT 0 *///0 | |||
/* 254 - 49000000 04000000 - PUSH_VECTOR 4 *///<0,0,0,0> | |||
/* 255 - 31000000 04000000 - SETATTR color *///logo_hide.color = <0,0,0,0> | |||
/* 256 - 22000000 00000000 - REMOVE */logo_hide.color = <0,0,0,0>; | |||
/* 257 - 2E000000 18000000 - PUSH_GLOBAL blur_hide *///blur_hide | |||
/* 258 - 26000000 00000000 - PUSH_INT 0 *///0 | |||
/* 259 - 26000000 00000000 - PUSH_INT 0 *///0 | |||
/* 260 - 26000000 00000000 - PUSH_INT 0 *///0 | |||
/* 261 - 26000000 00000000 - PUSH_INT 0 *///0 | |||
/* 262 - 49000000 04000000 - PUSH_VECTOR 4 *///<0,0,0,0> | |||
/* 263 - 31000000 04000000 - SETATTR color *///blur_hide.color = <0,0,0,0> | |||
/* 264 - 22000000 00000000 - REMOVE */blur_hide.color = <0,0,0,0>; | |||
/* 265 - 2E000000 19000000 - PUSH_GLOBAL footer_hide *///footer_hide | |||
/* 266 - 26000000 00000000 - PUSH_INT 0 *///0 | |||
/* 267 - 26000000 00000000 - PUSH_INT 0 *///0 | |||
/* 268 - 26000000 00000000 - PUSH_INT 0 *///0 | |||
/* 269 - 26000000 00000000 - PUSH_INT 0 *///0 | |||
/* 270 - 49000000 04000000 - PUSH_VECTOR 4 *///<0,0,0,0> | |||
/* 271 - 31000000 04000000 - SETATTR color *///footer_hide.color = <0,0,0,0> | |||
/* 272 - 22000000 00000000 - REMOVE */footer_hide.color = <0,0,0,0>; | |||
/* 273 - 2E000000 14000000 - PUSH_GLOBAL logo *///logo | |||
/* 274 - 2E000000 1A000000 - PUSH_GLOBAL br *///br | |||
/* 275 - 2E000000 1A000000 - PUSH_GLOBAL br *///br | |||
/* 276 - 2E000000 1A000000 - PUSH_GLOBAL br *///br | |||
/* 277 - 26000000 00000000 - PUSH_INT 0 *///0 | |||
/* 278 - 49000000 04000000 - PUSH_VECTOR 4 *///<br, br, br, 0> | |||
/* 279 - 31000000 04000000 - SETATTR color *///logo.color = <br, br, br, 0> | |||
/* 280 - 22000000 00000000 - REMOVE */logo.color = <br, br, br, 0>; | |||
/* 281 - 2E000000 14000000 - PUSH_GLOBAL logo *///logo | |||
/* 282 - 30000000 05000000 - GETATTR_KEEPOBJ setColor *///logo.setColor | |||
/* 283 - 2E000000 1A000000 - PUSH_GLOBAL br *///br | |||
/* 284 - 2E000000 1A000000 - PUSH_GLOBAL br *///br | |||
/* 285 - 2E000000 1A000000 - PUSH_GLOBAL br *///br | |||
/* 286 - 26000000 01000000 - PUSH_INT 1 *///1 | |||
/* 287 - 49000000 04000000 - PUSH_VECTOR 4 *///<br, br, br, 1> | |||
/* 288 - 2E000000 10000000 - PUSH_GLOBAL appear_start_time *///appear_start_time | |||
/* 289 - 3D000000 02000000 - CALL_METHOD 2 *///logo.setColor (<br, br, br, 1>, appear_start_time) | |||
/* 290 - 22000000 00000000 - REMOVE */logo.setColor (<br, br, br, 1>, appear_start_time); | |||
/* 291 - 2E000000 15000000 - PUSH_GLOBAL blur *///blur | |||
/* 292 - 2E000000 1A000000 - PUSH_GLOBAL br *///br | |||
/* 293 - 2E000000 1A000000 - PUSH_GLOBAL br *///br | |||
/* 294 - 2E000000 1A000000 - PUSH_GLOBAL br *///br | |||
/* 295 - 26000000 00000000 - PUSH_INT 0 *///0 | |||
/* 296 - 49000000 04000000 - PUSH_VECTOR 4 *///<br, br, br, 0> | |||
/* 297 - 31000000 04000000 - SETATTR color *///blur.color = <br, br, br, 0> | |||
/* 298 - 22000000 00000000 - REMOVE */blur.color = <br, br, br, 0>; | |||
/* 299 - 2E000000 16000000 - PUSH_GLOBAL footer *///footer | |||
/* 300 - 2E000000 1A000000 - PUSH_GLOBAL br *///br | |||
/* 301 - 2E000000 1A000000 - PUSH_GLOBAL br *///br | |||
/* 302 - 2E000000 1A000000 - PUSH_GLOBAL br *///br | |||
/* 303 - 26000000 00000000 - PUSH_INT 0 *///0 | |||
/* 304 - 49000000 04000000 - PUSH_VECTOR 4 *///<br, br, br, 0> | |||
/* 305 - 31000000 04000000 - SETATTR color *///footer.color = <br, br, br, 0> | |||
/* 306 - 22000000 00000000 - REMOVE */footer.color = <br, br, br, 0>; | |||
/* 307 - 2E000000 07000000 - PUSH_GLOBAL light *///light | |||
/* 308 - 2E000000 14000000 - PUSH_GLOBAL logo *///logo | |||
/* 309 - 2F000000 02000000 - GETATTR position *///logo.position | |||
/* 310 - 26000000 03000000 - PUSH_INT 3 *///3 | |||
/* 311 - 08000000 00000000 - CSIGN *///-3 | |||
/* 312 - 27000000 0000003F - PUSH_FLOAT 0.5 *///0.5 | |||
/* 313 - 26000000 00000000 - PUSH_INT 0 *///0 | |||
/* 314 - 49000000 03000000 - PUSH_VECTOR 3 *///<-3, 0.500000, 0> | |||
/* 315 - 02000000 00000000 - ADD *///logo.position + <-3, 0.500000, 0> | |||
/* 316 - 31000000 02000000 - SETATTR position *///light.position = logo.position + <-3, 0.500000, 0> | |||
/* 317 - 22000000 00000000 - REMOVE */light.position = logo.position + <-3, 0.5, 0>; | |||
/* 318 - 2E000000 07000000 - PUSH_GLOBAL light *///light | |||
/* 319 - 26000000 00000000 - PUSH_INT 0 *///0 | |||
/* 320 - 26000000 00000000 - PUSH_INT 0 *///0 | |||
/* 321 - 26000000 00000000 - PUSH_INT 0 *///0 | |||
/* 322 - 49000000 03000000 - PUSH_VECTOR 3 *///<0, 0, 0> | |||
/* 323 - 31000000 04000000 - SETATTR color *///light.color = <0, 0, 0> | |||
/* 324 - 22000000 00000000 - REMOVE */light.color = <0, 0, 0>; | |||
/* 325 - 2E000000 21000000 - PUSH_GLOBAL System *///System | |||
/* 326 - 2F000000 06000000 - GETATTR timer *///System.timer | |||
/* 327 - 26000000 00000000 - PUSH_INT 0 *///0 | |||
/* 328 - 2E000000 22000000 - PUSH_GLOBAL OneShotTimer *///OneShotTimer | |||
/* 329 - 2E000000 10000000 - PUSH_GLOBAL appear_start_time *///appear_start_time | |||
/* 330 - 2A000001 4C010000 - PUSH_FUNC 0 1 332 */System.timer[0] = new OneShotTimer(appear_start_time, function() | |||
/* 331 - 39000000 6C010000 - JUMP 364 */{ | |||
/* 332 - 2E000000 07000000 - PUSH_GLOBAL light *///light | |||
/* 333 - 30000000 07000000 - GETATTR_KEEPOBJ setPosition *///light.setPosition | |||
/* 334 - 2E000000 14000000 - PUSH_GLOBAL logo *///logo | |||
/* 335 - 2F000000 02000000 - GETATTR position *///logo.position | |||
/* 336 - 27000000 00000000 - PUSH_FLOAT 0.0 *///0.0 | |||
/* 337 - 27000000 0000003F - PUSH_FLOAT 0.5 *///0.5 | |||
/* 338 - 26000000 00000000 - PUSH_INT 0 *///0 | |||
/* 339 - 49000000 03000000 - PUSH_VECTOR 3 *///<0.0, 0.5, 0> | |||
/* 340 - 02000000 00000000 - ADD *///logo.position + <0.0, 0.5, 0> | |||
/* 341 - 2E000000 09000000 - PUSH_GLOBAL appear_duration *///appear_duration | |||
/* 342 - 3D000000 02000000 - CALL_METHOD 2 *///light.setPosition ((logo.position + <0.0, 0.5, 0>), appear_duration) | |||
/* 343 - 22000000 00000000 - REMOVE */ light.setPosition ((logo.position + <0.0, 0.5, 0>), appear_duration); | |||
/* 344 - 2E000000 07000000 - PUSH_GLOBAL light *///light | |||
/* 345 - 30000000 08000000 - GETATTR_KEEPOBJ setAttenuation *///light.setAttenuation | |||
/* 346 - 27000000 CDCCCC3D - PUSH_FLOAT 0.1 *///0.1 | |||
/* 347 - 27000000 CDCCCC3D - PUSH_FLOAT 0.1 *///0.1 | |||
/* 348 - 27000000 CDCCCC3D - PUSH_FLOAT 0.1 *///0.1 | |||
/* 349 - 49000000 03000000 - PUSH_VECTOR 3 *///<0.1, 0.1, 0.1> | |||
/* 350 - 2E000000 09000000 - PUSH_GLOBAL appear_duration *///appear_duration | |||
/* 351 - 3D000000 02000000 - CALL_METHOD 2 *///light.setAttenuation (<0.1, 0.1, 0.1>, appear_duration) | |||
/* 352 - 22000000 00000000 - REMOVE */ light.setAttenuation (<0.1, 0.1, 0.1>, appear_duration); | |||
/* 353 - 2E000000 07000000 - PUSH_GLOBAL light *///light | |||
/* 354 - 30000000 05000000 - GETATTR_KEEPOBJ setColor *///light.setColor | |||
/* 355 - 26000000 01000000 - PUSH_INT 1 *///1 | |||
/* 356 - 26000000 01000000 - PUSH_INT 1 *///1 | |||
/* 357 - 26000000 01000000 - PUSH_INT 1 *///1 | |||
/* 358 - 49000000 03000000 - PUSH_VECTOR 3 *///<1, 1, 1> | |||
/* 359 - 2E000000 09000000 - PUSH_GLOBAL appear_duration *///appear_duration | |||
/* 360 - 3D000000 02000000 - CALL_METHOD 2 *///light.setColor (<1, 1, 1>, appear_duration) | |||
/* 361 - 22000000 00000000 - REMOVE */ light.setColor (<1, 1, 1>, appear_duration); | |||
/* 362 - 23000000 00000000 - PUSH_UNDEFINED */ | |||
/* 363 - 3F000000 00000000 - RET */} | |||
/* 364 - 3E000000 02000000 - CALL_CONSTRUCTOR 2 *///) | |||
/* 365 - 36000000 00000000 - SETITEM */ | |||
/* 366 - 22000000 00000000 - REMOVE */); | |||
/* 367 - 2E000000 21000000 - PUSH_GLOBAL System *///System | |||
/* 368 - 2F000000 06000000 - GETATTR timer *///System.timer | |||
/* 369 - 26000000 01000000 - PUSH_INT 1 *///1 | |||
/* 370 - 2E000000 22000000 - PUSH_GLOBAL OneShotTimer *///OneShotTimer | |||
/* 371 - 2E000000 11000000 - PUSH_GLOBAL blur_start_time *///blur_start_time | |||
/* 372 - 2A000001 76010000 - PUSH_FUNC 0 1 374 */System.timer[1] = new OneShotTimer(blur_start_time, function() | |||
/* 373 - 39000000 88010000 - JUMP 392 */{ | |||
/* 374 - 2E000000 15000000 - PUSH_GLOBAL blur *///blur | |||
/* 375 - 30000000 05000000 - GETATTR_KEEPOBJ setColor *///blur.setColor | |||
/* 376 - 2E000000 1A000000 - PUSH_GLOBAL br *///br | |||
/* 377 - 2E000000 1A000000 - PUSH_GLOBAL br *///br | |||
/* 378 - 2E000000 1A000000 - PUSH_GLOBAL br *///br | |||
/* 379 - 26000000 01000000 - PUSH_INT 1 *///1 | |||
/* 380 - 49000000 04000000 - PUSH_VECTOR 4 *///<br, br, br, 1> | |||
/* 381 - 2E000000 0B000000 - PUSH_GLOBAL blur_duration *///blur_duration | |||
/* 382 - 2E000000 1D000000 - PUSH_GLOBAL INTERPOLATION_BEZIER *///INTERPOLATION_BEZIER | |||
/* 383 - 27000000 CDCCCC3D - PUSH_FLOAT 0.1 *///0.1 | |||
/* 384 - 27000000 00000000 - PUSH_FLOAT 0.0 *///0.0 | |||
/* 385 - 27000000 CDCCCC3D - PUSH_FLOAT 0.1 *///0.1 | |||
/* 386 - 27000000 0000803F - PUSH_FLOAT 1.0 *///1.0 | |||
/* 387 - 49000000 04000000 - PUSH_VECTOR 4 *///<0.1, 0.0, 0.1, 1.0> | |||
/* 388 - 3D000000 04000000 - CALL_METHOD 4 *///blur.setColor (<br, br, br, 1>, blur_duration, INTERPOLATION_BEZIER, <0.1, 0.0, 0.1, 1.0>) | |||
/* 389 - 22000000 00000000 - REMOVE */ blur.setColor (<br, br, br, 1>, blur_duration, INTERPOLATION_BEZIER, <0.1, 0.0, 0.1, 1.0>); | |||
/* 390 - 23000000 00000000 - PUSH_UNDEFINED */ | |||
/* 391 - 3F000000 00000000 - RET */} | |||
/* 392 - 3E000000 02000000 - CALL_CONSTRUCTOR 2 *///) | |||
/* 393 - 36000000 00000000 - SETITEM */ | |||
/* 394 - 22000000 00000000 - REMOVE */); | |||
/* 395 - 2E000000 21000000 - PUSH_GLOBAL System *///System | |||
/* 396 - 2F000000 06000000 - GETATTR timer *///System.timer | |||
/* 397 - 26000000 02000000 - PUSH_INT 2 *///2 | |||
/* 398 - 2E000000 22000000 - PUSH_GLOBAL OneShotTimer *///OneShotTimer | |||
/* 399 - 2E000000 12000000 - PUSH_GLOBAL whole_start_time *///whole_start_time | |||
/* 400 - 2A000001 92010000 - PUSH_FUNC 0 1 402 */System.timer[2] = new OneShotTimer(whole_start_time, function() | |||
/* 401 - 39000000 AE010000 - JUMP 430 */{ | |||
/* 402 - 2E000000 15000000 - PUSH_GLOBAL blur *///blur | |||
/* 403 - 30000000 05000000 - GETATTR_KEEPOBJ setColor *///blur.setColor | |||
/* 404 - 2E000000 1A000000 - PUSH_GLOBAL br *///br | |||
/* 405 - 2E000000 1A000000 - PUSH_GLOBAL br *///br | |||
/* 406 - 2E000000 1A000000 - PUSH_GLOBAL br *///br | |||
/* 407 - 26000000 00000000 - PUSH_INT 0 *///0 | |||
/* 408 - 49000000 04000000 - PUSH_VECTOR 4 *///4 | |||
/* 409 - 2E000000 0D000000 - PUSH_GLOBAL whole_duration *///whole_duration | |||
/* 410 - 2E000000 1D000000 - PUSH_GLOBAL INTERPOLATION_BEZIER *///INTERPOLATION_BEZIER | |||
/* 411 - 27000000 CDCCCC3D - PUSH_FLOAT 0.1 *///0.1 | |||
/* 412 - 27000000 00000000 - PUSH_FLOAT 0.0 *///0.0 | |||
/* 413 - 27000000 CDCCCC3D - PUSH_FLOAT 0.1 *///0.1 | |||
/* 414 - 27000000 0000803F - PUSH_FLOAT 1.0 *///1.0 | |||
/* 415 - 49000000 04000000 - PUSH_VECTOR 4 *///<0.1, 0.0, 0.1, 1.0> | |||
/* 416 - 3D000000 04000000 - CALL_METHOD 4 *///blur.setColor (<br, br, br, 0>, whole_duration, INTERPOLATION_BEZIER, <0.1, 0.0, 0.1, 1.0>) | |||
/* 417 - 22000000 00000000 - REMOVE */ blur.setColor (<br, br, br, 0>, whole_duration, INTERPOLATION_BEZIER, <0.1, 0.0, 0.1, 1.0>); | |||
/* 418 - 2E000000 16000000 - PUSH_GLOBAL footer *///footer | |||
/* 419 - 30000000 05000000 - GETATTR_KEEPOBJ setColor *///footer.setColor | |||
/* 420 - 2E000000 1A000000 - PUSH_GLOBAL br *///br | |||
/* 421 - 2E000000 1A000000 - PUSH_GLOBAL br *///br | |||
/* 422 - 2E000000 1A000000 - PUSH_GLOBAL br *///br | |||
/* 423 - 26000000 01000000 - PUSH_INT 1 *///1 | |||
/* 424 - 49000000 04000000 - PUSH_VECTOR 4 *///<br, br, br, 1> | |||
/* 425 - 2E000000 0D000000 - PUSH_GLOBAL whole_duration *///whole_duration | |||
/* 426 - 3D000000 02000000 - CALL_METHOD 2 *///footer.setColor (<br, br, br, 1>, whole_duration) | |||
/* 427 - 22000000 00000000 - REMOVE */ footer.setColor (<br, br, br, 1>, whole_duration); | |||
/* 428 - 23000000 00000000 - PUSH_UNDEFINED */ | |||
/* 429 - 3F000000 00000000 - RET */} | |||
/* 430 - 3E000000 02000000 - CALL_CONSTRUCTOR 2 *///) | |||
/* 431 - 36000000 00000000 - SETITEM */ | |||
/* 432 - 22000000 00000000 - REMOVE */); | |||
/* 433 - 2E000000 21000000 - PUSH_GLOBAL System *///System | |||
/* 434 - 2F000000 06000000 - GETATTR timer *///System.timer | |||
/* 435 - 26000000 03000000 - PUSH_INT 3 *///3 | |||
/* 436 - 2E000000 22000000 - PUSH_GLOBAL OneShotTimer *///OneShotTimer | |||
/* 437 - 2E000000 13000000 - PUSH_GLOBAL fade_start_time *///fade_start_time | |||
/* 438 - 2A000002 B8010000 - PUSH_FUNC 0 2 440 */System.timer[3] = new OneShotTimer(fade_start_time, function() | |||
/* 439 - 39000000 02020000 - JUMP 514 */{ | |||
/* 440 - 2D000000 01000000 - PUSH_LOCAL 1 *///Unamed_Variable | |||
/* 441 - 27000000 CDCC4C3F - PUSH_FLOAT 0.8 *///0.8 | |||
/* 442 - 27000000 00000000 - PUSH_FLOAT 0.0 *///0.0 | |||
/* 443 - 27000000 CDCC4C3F - PUSH_FLOAT 0.8 *///0.8 | |||
/* 444 - 27000000 0000803F - PUSH_FLOAT 1.0 *///1.0 | |||
/* 445 - 49000000 04000000 - PUSH_VECTOR 4 *///<0.8, 0.0, 0.8, 1.0> | |||
/* 446 - 01000000 00000000 - ASSGN *///Unamed_Variable = <0.8, 0.0, 0.8, 1.0> | |||
/* 447 - 22000000 00000000 - REMOVE */ var Unamed_Variable = <0.8, 0.0, 0.8, 1.0>; | |||
/* 448 - 2E000000 16000000 - PUSH_GLOBAL footer *///footer | |||
/* 449 - 30000000 05000000 - GETATTR_KEEPOBJ setColor *///footer.setColor | |||
/* 450 - 2E000000 1A000000 - PUSH_GLOBAL br *///br | |||
/* 451 - 2E000000 1A000000 - PUSH_GLOBAL br *///br | |||
/* 452 - 2E000000 1A000000 - PUSH_GLOBAL br *///br | |||
/* 453 - 26000000 00000000 - PUSH_INT 0 *///0 | |||
/* 454 - 49000000 04000000 - PUSH_VECTOR 4 *///<br, br, br, 0> | |||
/* 455 - 2E000000 0F000000 - PUSH_GLOBAL fade_duration *///fade_duration | |||
/* 456 - 2E000000 1D000000 - PUSH_GLOBAL INTERPOLATION_BEZIER *///INTERPOLATION_BEZIER | |||
/* 457 - 2D000000 01000000 - PUSH_LOCAL 1 *///Unamed_Variable | |||
/* 458 - 3D000000 04000000 - CALL_METHOD 4 *///footer.setColor (<br, br, br, 0>, fade_duration, INTERPOLATION_BEZIER, Unamed_Variable) | |||
/* 459 - 22000000 00000000 - REMOVE */ footer.setColor (<br, br, br, 0>, fade_duration, INTERPOLATION_BEZIER, Unamed_Variable); | |||
/* 460 - 2E000000 14000000 - PUSH_GLOBAL logo *///logo | |||
/* 461 - 30000000 05000000 - GETATTR_KEEPOBJ setColor *///logo.setColor | |||
/* 462 - 2E000000 1A000000 - PUSH_GLOBAL br *///br | |||
/* 463 - 2E000000 1A000000 - PUSH_GLOBAL br *///br | |||
/* 464 - 2E000000 1A000000 - PUSH_GLOBAL br *///br | |||
/* 465 - 26000000 00000000 - PUSH_INT 0 *///0 | |||
/* 466 - 49000000 04000000 - PUSH_VECTOR 4 *///<br, br, br, 0> | |||
/* 467 - 2E000000 0F000000 - PUSH_GLOBAL fade_duration *///fade_duration | |||
/* 468 - 2E000000 1D000000 - PUSH_GLOBAL INTERPOLATION_BEZIER *///INTERPOLATION_BEZIER | |||
/* 469 - 2D000000 01000000 - PUSH_LOCAL 1 *///Unamed_Variable | |||
/* 470 - 3D000000 04000000 - CALL_METHOD 4 *///logo.setColor (<br, br, br, 0>, fade_duration, INTERPOLATION_BEZIER, Unamed_Variable) | |||
/* 471 - 22000000 00000000 - REMOVE */ logo.setColor (<br, br, br, 0>, fade_duration, INTERPOLATION_BEZIER, Unamed_Variable); | |||
/* 472 - 2E000000 07000000 - PUSH_GLOBAL light *///light | |||
/* 473 - 30000000 07000000 - GETATTR_KEEPOBJ setPosition *///light.setPosition | |||
/* 474 - 2E000000 07000000 - PUSH_GLOBAL light *///light | |||
/* 475 - 2F000000 02000000 - GETATTR position *///light.position | |||
/* 476 - 27000000 0000C03F - PUSH_FLOAT 1.5 *///1.5 | |||
/* 477 - 27000000 0000C03F - PUSH_FLOAT 1.5 *///1.5 | |||
/* 478 - 04000000 00000000 - MUL *///1.5 * 1.5 | |||
/* 479 - 26000000 01000000 - PUSH_INT 1 *///1 | |||
/* 480 - 27000000 0000C03F - PUSH_FLOAT 1.5 *///1.5 | |||
/* 481 - 04000000 00000000 - MUL *///1 * 1.5 | |||
/* 482 - 26000000 00000000 - PUSH_INT 0 *///0 | |||
/* 483 - 49000000 03000000 - PUSH_VECTOR 3 *///<1.5 * 1.5, 1 * 1.5, 0> | |||
/* 484 - 02000000 00000000 - ADD *///light.position + <1.5 * 1.5, 1 * 1.5, 0> | |||
/* 485 - 2E000000 0F000000 - PUSH_GLOBAL fade_duration *///fade_duration | |||
/* 486 - 2E000000 1D000000 - PUSH_GLOBAL INTERPOLATION_BEZIER *///INTERPOLATION_BEZIER | |||
/* 487 - 2D000000 01000000 - PUSH_LOCAL 1 *///Unamed_Variable | |||
/* 488 - 3D000000 04000000 - CALL_METHOD 4 *///light.setPosition (light.position + <1.5 * 1.5, 1 * 1.5, 0>, fade_duration, INTERPOLATION_BEZIER, Unamed_Variable) | |||
/* 489 - 22000000 00000000 - REMOVE */ light.setPosition (light.position + <1.5 * 1.5, 1 * 1.5, 0>, fade_duration, INTERPOLATION_BEZIER, Unamed_Variable); | |||
/* 490 - 2E000000 07000000 - PUSH_GLOBAL light *///light | |||
/* 491 - 30000000 05000000 - GETATTR_KEEPOBJ setColor *///light.setColor | |||
/* 492 - 26000000 00000000 - PUSH_INT 0 *///0 | |||
/* 493 - 26000000 00000000 - PUSH_INT 0 *///0 | |||
/* 494 - 26000000 00000000 - PUSH_INT 0 *///0 | |||
/* 495 - 49000000 03000000 - PUSH_VECTOR 3 *///<0, 0, 0> | |||
/* 496 - 2E000000 0F000000 - PUSH_GLOBAL fade_duration *///fade_duration | |||
/* 497 - 2E000000 1D000000 - PUSH_GLOBAL INTERPOLATION_BEZIER *///INTERPOLATION_BEZIER | |||
/* 498 - 2D000000 01000000 - PUSH_LOCAL 1 *///Unamed_Variable | |||
/* 499 - 3D000000 04000000 - CALL_METHOD 4 *///light.setColor (<0, 0, 0>, fade_duration, INTERPOLATION_BEZIER, Unamed_Variable) | |||
/* 500 - 22000000 00000000 - REMOVE */ light.setColor (<0, 0, 0>, fade_duration, INTERPOLATION_BEZIER, Unamed_Variable); | |||
/* 501 - 2E000000 07000000 - PUSH_GLOBAL light *///light | |||
/* 502 - 30000000 08000000 - GETATTR_KEEPOBJ setAttenuation *///light.setAttenuation | |||
/* 503 - 26000000 00000000 - PUSH_INT 0 *///0 | |||
/* 504 - 26000000 01000000 - PUSH_INT 1 *///1 | |||
/* 505 - 26000000 04000000 - PUSH_INT 4 *///4 | |||
/* 506 - 49000000 03000000 - PUSH_VECTOR 3 *///<0, 1, 4> | |||
/* 507 - 2E000000 0F000000 - PUSH_GLOBAL fade_duration *///fade_duration | |||
/* 508 - 2E000000 1D000000 - PUSH_GLOBAL INTERPOLATION_BEZIER *///INTERPOLATION_BEZIER | |||
/* 509 - 2D000000 01000000 - PUSH_LOCAL 1 *///Unamed_Variable | |||
/* 510 - 3D000000 04000000 - CALL_METHOD 4 *///light.setAttenuation (<0, 1, 4>, fade_duration, INTERPOLATION_BEZIER, Unamed_Variable) | |||
/* 511 - 22000000 00000000 - REMOVE */ light.setAttenuation (<0, 1, 4>, fade_duration, INTERPOLATION_BEZIER, Unamed_Variable); | |||
/* 512 - 23000000 00000000 - PUSH_UNDEFINED */ | |||
/* 513 - 3F000000 00000000 - RET */} | |||
/* 514 - 3E000000 02000000 - CALL_CONSTRUCTOR 2 *///) | |||
/* 515 - 36000000 00000000 - SETITEM */ | |||
/* 516 - 22000000 00000000 - REMOVE */); | |||
/* 517 - 45000000 00000000 - HALT */ | |||
</syntaxhighlight>}} | |||
{{File Formats}}<noinclude>[[Category:Main]]</noinclude> | {{File Formats}}<noinclude>[[Category:Main]]</noinclude> |
Latest revision as of 17:40, 11 March 2023
Description[edit | edit source]
Virtual Script Machine Instructions (VSMX) compiled file. The file extension is .jsx after compiled, and .js before compiled)
- http://endlessparadigm.com/forum/showthread.php?tid=21485 (History)
- http://playstationhax.it/forums/topic/1060-jsxviewer/ (discussion, tool) http://tizzyt-archive.blogspot.co.uk/2015/05/release-jsxviewer-05b-source.html (source)
Rcomage has partial support to compile/decompile VSMX files for PS3 (is needed to change the VSMX version at header offset 0x04... from 2.0 to 1.0 because rcomage was originally intended for PSP only). Also the official VSMX format 2.0 (intended for PS3) has some additional opcodes that didnt existed in PSP. it's very buggy and usually doesn't work right
- VSMX files are used on:
- PSP - Inside .rco file-format (used on video/music UMDs, and the two firmware files: lftv_tuner_jp_jp.rco and lftv_tuner_us_en.rco in path flash0/vsh/resource/)
- PS3 - Inside .raf file-format (used on coldboot.raf, and the background scene for PS3 dynamic themes)
- PSVita & PS4 (unknown yet, but probable)
VSMX Structure[edit | edit source]
Some compiler/decompiler code samples can be seen: managunz, rcomage
Header[edit | edit source]
Offset | Size | Example (hex) from coldboot.jsx |
Value | Notes |
---|---|---|---|---|
0x00 | 0x04 | 0x56534D58 | VSMX | Magic |
0x04 | 0x04 | 0x00000200 | 2.0 | Mayor version.Minor version (PSP=1.0) (PS3=2.0) |
0x08 | 0x04 | 0x34000000 | 0x34 | absolute offset of OPCODE table (also, header length) |
0x0C | 0x04 | 0x30100000 | 0x1030 | length of OPCODE table (also, number of entries = length / 8) |
0x10 | 0x04 | 0x64100000 | 0x1064 | absolute offset of STRING table |
0x14 | 0x04 | 0x7A000000 | 0x7A | length of STRING table |
0x18 | 0x04 | 0x08000000 | 0x8 | number of entries inside STRING table |
0x1C | 0x04 | 0xDE100000 | 0x10DE | absolute offset of ATTR table |
0x20 | 0x04 | 0xA2000000 | 0xA2 | length of ATTR table |
0x24 | 0x04 | 0x09000000 | 0x9 | number of entries inside ATTR table |
0x28 | 0x04 | 0x80110000 | 0x1180 | absolute offset of GLOBAL table |
0x2C | 0x04 | 0x70010000 | 0x170 | length of GLOBAL table |
0x30 | 0x04 | 0x23000000 | 0x23 | number of entries inside GLOBAL table |
- Table access related opcodes: (this is here by now just as an argument of why to choose this names for the tables, if there are better names please suggest/discuss or change them)
- 0x28 PUSH_STRING
- 0x2F GETATTR, 0x30 GETATTR_KEEPOBJ
- 0x2E PUSH_GLOBAL
OPCODE Table[edit | edit source]
The table is composed by several entries, and every entry is composed by 8 bytes:
1byte(opcode)+1byte(arguments)+1byte(unknown)+1byte(variables)+4bytes(value)
See Pastebin (without the header) of the coldboot.
OpCode (1 byte) |
Args (1 byte) |
Unkown (1 byte) |
Vars (1 byte) |
Value (4 bytes) |
Mnemonics (official) |
Mnemonics (rcomage) |
Syntax (PSJS) |
Notes |
---|---|---|---|---|---|---|---|---|
Assignment Operators ? | ||||||||
0x00 | No | No | No | No | NOP | UNKNOWN_0 | ||
0x01 | No | No | No | No | ASSGN | ASSIGN | = | |
Arithmetic Operators | ||||||||
0x02 | No | No | No | No | ADD | ADD | + | |
0x03 | No | No | No | No | SUB | SUBTRACT | - | |
0x04 | No | No | No | No | MUL | MULTIPLY | * | |
0x05 | No | No | No | No | DIV | DIVIDE | / | |
0x06 | No | No | No | No | MOD | MODULUS | % | |
0x07 | No | No | No | No | TO_NUMBER | POSITIVE | ||
0x08 | No | No | No | No | CSIGN | NEGATE | -i | |
0x09 | No | No | No | No | NOT | NOT | ||
0x0A | No | No | No | No | INC | PRE_INCREMENT | ++i | |
0x0B | No | No | No | No | DEC | PRE_DECREMENT | --i | |
0x0C | No | No | No | No | POST_INC | INCREMENT | i++ | |
0x0D | No | No | No | No | POST_DEC | DECREMENT | i-- | |
Compare Operators | ||||||||
0x0E | No | No | No | No | CMPEQ | TEST_EQUAL | == | |
0x0F | No | No | No | No | CMPNEQ | TEST_NOT_EQUAL | != | |
0x10 | No | No | No | No | CMPSEQ | TEST_IDENTITY | === | |
0x11 | No | No | No | No | CMPSNEQ | TEST_NON_IDENTITY | !== | |
0x12 | No | No | No | No | CMPLT | TEST_LESS_THAN | < | |
0x13 | No | No | No | No | CMPLE | TEST_LESS_EQUAL_THAN | <= | |
0x14 | No | No | No | No | CMPGE | TEST_MORE_EQUAL_THAN | >= | |
0x15 | No | No | No | No | CMPGT | TEST_MORE_THAN | > | |
Bitwise Operators ? | ||||||||
0x16 | No | No | No | No | INSTANCEOF | UNKNOWN_16 | ||
0x17 | No | No | No | No | IN | UNKNOWN_17 | ||
0x18 | No | No | No | No | TYPEOF | TYPEOF | ||
0x19 | No | No | No | No | BIT_AND | BINARY_AND | & | |
0x1A | No | No | No | No | BIT_XOR | BINARY_XOR | ^ | |
0x1B | No | No | No | No | BIT_OR | BINARY_OR | | | |
0x1C | No | No | No | No | BIT_NOT | BINARY_NOT | ~ | |
0x1D | No | No | No | No | LSHIFT | LSHIFT | << | |
0x1E | No | No | No | No | S_RSHIFT | RSHIFT | >> | |
0x1F | No | No | No | No | U_RSHIFT | UNSIGNED_RSHIFT | ||
? | ||||||||
0x20 | No | No | No | No | COPY | STACK_PUSH | ||
0x21 | No | No | No | No | SWAP | UNKNOWN_21 | ||
0x22 | No | No | No | No | REMOVE | END_STATEMENT | ; | |
Data Types | ||||||||
0x23 | No | No | No | Yes | PUSH_UNDEFINED | CONST_NULL | ||
0x24 | No | No | No | Yes | PUSH_NULL | CONST_EMPTY_ARRAY | ||
0x25 | No | No | No | Yes | PUSH_BOOL | CONST_BOOL | true / false | |
0x26 | No | No | No | Yes | PUSH_INT | CONST_INT | 1 | |
0x27 | No | No | No | Yes | PUSH_FLOAT | CONST_FLOAT | 0.1 | |
0x28 | No | No | No | Yes | PUSH_STRING | CONST_STRING | ("string") | |
Complex Data Types | ||||||||
0x29 | No | No | No | Yes | PUSH_OBJECT | CONST_OBJECT | object | |
0x2A | Yes | No | Yes | Yes | PUSH_FUNC | FUNCTION | function | |
0x2B | No | No | No | Yes | PUSH_ARRAY | CONST_ARRAY | array | |
0x2C | No | No | No | Yes | PUSH_THIS | THIS_OBJECT | ||
0x2D | No | No | No | Yes | PUSH_LOCAL | UNNAMED_VARIABLE | var | variable declared inside a function,object, etc... (local scope) |
0x2E | No | No | No | Yes | PUSH_GLOBAL | NAME | var | variable declared at top of the script (global scope) |
Attributes related | ||||||||
0x2F | No | No | No | Yes | GETATTR | PROPERTY | ||
0x30 | No | No | No | Yes | GETATTR_KEEPOBJ | METHOD | ||
0x31 | No | No | No | Yes | SETATTR | SET | ||
0x32 | No | No | No | Yes | DELATTR | UNSET | ||
0x33 | No | No | No | Yes | APPEND_ATTR | OBJECT_ADD_ATTRIBUTE | ||
Items related | ||||||||
0x34 | No | No | No | Yes | GETITEM | ARRAY_INDEX | ||
0x35 | No | No | No | Yes | GETITEM_KEEPOBJ | UNKNOWN_35 | ||
0x36 | No | No | No | Yes | SETITEM | ARRAY_INDEX_ASSIGN | ||
0x37 | No | No | No | Yes | DELITEM | UNKNOWN_37 | ||
0x38 | No | No | No | Yes | APPEND_ITEM | ARRAY_PUSH | ||
if/else/for (opcode jumps) | ||||||||
0x39 | No | No | No | Yes | JUMP | JUMP | ||
0x3A | No | No | No | Yes | JUMPT | JUMP_IF_TRUE | ||
0x3B | No | No | No | Yes | JUMPF | JUMP_IF_FALSE | ||
Code structure builders | ||||||||
0x3C | No | No | No | No | CALL_FUNC | CALL_FUNCTION | function() | |
0x3D | No | No | No | No | CALL_METHOD | CALL_METHOD | ||
0x3E | No | No | No | Yes | CALL_CONSTRUCTOR | CALL_INBUILT / CALL_NEW | (i) | |
0x3F | No | No | No | No | RET | RETURN | return | |
0x40 | No | No | No | No | THROW | UNKNOWN_40 | ||
0x41 | No | No | No | No | TRYBLK_IN | UNKNOWN_41 | ||
0x42 | No | No | No | No | TRYBLK_OUT | UNKNOWN_42 | ||
0x43 | No | No | No | No | CATCH_FINALLYBLK_IN | UNKNOWN_43 | ||
0x44 | No | No | No | No | CATCH_FINALLYBLK_OUT | UNKNOWN_44 | ||
0x45 | No | No | No | No | HALT | END_SCRIPT | ||
Debug | ||||||||
0x46 | No | No | No | No | DEBUG_FILE | DEBUG_FILE | ||
0x47 | No | No | No | No | DEBUG_LINE | DEBUG_LINE | ||
VSMX v2 (new opcodes for PS3) ? | ||||||||
0x48 | No | No | No | Yes | GETITEM_KEEPOBJNAME | UNKNOWN_48 | ||
0x49 | No | No | No | Yes | PUSH_VECTOR | UNKNOWN_49 / MAKE_FLOAT_ARRAY | <i> | |
0x4A | No | No | No | Yes | GET_VECTOR_ELEMENT | UNKNOWN_4a | ||
0x4B | No | No | No | Yes | GET_VECTOR_ELEMENT_KEEPVECTOR | UNKNOWN_4b | ||
0x4C | No | No | No | Yes | ASSGN_VECTOR_ELEMENT | UNKNOWN_4c | ||
0x4D | No | No | Yes | Yes | SETATTR_VECTOR_ELEMENT | UNKNOWN_4d | -> | byte 4 is an identifyer from a vector (x,y,z) (r,g,b,a) etc... |
0x4E | No | No | No | Yes | SETITEM_VECTOR_ELEMENT | UNKNOWN_4e |
- cells marked with yes/no are speculative, based in how the opcodes are grouped and how other known opcodes works
Arithmetic Operators[edit | edit source]
May be move later to PlayStation JavaScript or make it as template
Arithmetic operators are used to perform arithmetic between variables and/or values.
OpCode (VSMX) | Mnemonics (VSMX) | Syntax (PSJS) | Description: |
---|---|---|---|
0x02 | ADD | + | Addition |
0x03 | SUB | - | Subtraction |
0x04 | MUL | * | Multiplication |
0x05 | DIV | / | Division |
0x06 | MOD | % | Modulus (division remainder) |
0x0A | INC | ++ | Increment |
0x0B | DEC | -- | Decrement |
0x0C | POST_INC | ++ | Increment |
0x0D | POST_DEC | -- | Decrement |
Bitwise Operators[edit | edit source]
Bit operators work on 32 bits numbers.
Any numeric operand in the operation is converted into a 32 bit number.
OpCode (VSMX) | Mnemonics (VSMX) | Syntax (PSJS) | Description: |
---|---|---|---|
0x19 | BIT_AND | & | AND |
0x1A | BIT_XOR | ^ | XOR |
0x1B | BIT_OR | | | OR |
0x1C | BIT_NOT | ~ | NOT |
0x1D | LSHIFT | << | Left Shift |
0x1E | S_RSHIFT | >> | Right Shift |
Compare Operators[edit | edit source]
Comparison and Logical operators are used to test for true or false.
Comparison operators are used in logical statements to determine equality or difference between variables or values.
OpCode (VSMX) | Mnemonics (VSMX) | Syntax (PSJS) | Description: |
---|---|---|---|
0x0E | CMPEQ | == | Equality |
0x0F | CMPNEQ | != | Inequality |
0x10 | CMPSEQ | === | Strict Equal value and equal type |
0x11 | CMPSNEQ | !== | Strict not equal value or not equal type |
0x12 | CMPLT | < | Less Than |
0x13 | CMPLE | <= | Less Than or Equal To |
0x14 | CMPGE | >= | Greater Than or Equal To |
0x15 | CMPGT | > | Greater Than |
- http://es5.github.io/#x11.9.3 The Abstract Equality Comparison Algorithm
- http://es5.github.io/#x11.9.6 The Strict Equality Comparison Algorithm
Logical Operators[edit | edit source]
Comparison and Logical operators are used to test for true or false.
Logical operators are used to determine the logic between variables or values.
OpCode (VSMX) | Mnemonics (VSMX) | Syntax (PSJS) | Description: |
---|---|---|---|
- | || | or | |
- | && | and |
STRING table[edit | edit source]
ATTR Table[edit | edit source]
GLOBAL Table[edit | edit source]
VSMX Decompilation sample[edit | edit source]
This is an example of the decodification and decompilation made with the VSMX script contained inside coldboot.raf. The decompilation has been made by hand because the vsmx decompiler by ZiNgA BuRgA doesnt supports vectors and crashes, the purpose is to serve as an explain of how the opcodes works, the features that was added to VSMX v2 format for PS3, and as an overall explain of how to decompile other VSMX files
The file can be saved as .js and compiled directlly (there is no need to remove the comments), for a better overview of the decompiled code of this sample in PlayStation JavaScript format see Coldboot.raf#Script page
- Form left to right:
- NUM - Is the opcode number (important because the JUMPS are pointers to other opcodes identifyed by his number)
- OPCODE - The hex value that identifyes the opcode (first byte)... second byte reserved?... third byte unknown... fourth byte argument
- VALUE - Any value, or pointer to internal VSMX tables (4 bytes)
- OPCODE NAME - Self explanatory, is a direct conversion from the hex value to the name
- VALUES CONVERSION - For pointers are text strings extracted from internal VSMX tables, Data types are the conversion from hex, JUMPS and FUNCTS contains also identifyers for other opcodes and arguments
- DECOMPILED PSJS CODE - The source code in PlayStation JavaScript format ready to compile, it will generate a coldboot.jsx exactly like the one extracted from coldboot.raf by the CXML decompiler tool
//--------------------------------------------------------------------------------------------------------------------- // VSMX v2 Decompilation Sample (coldboot.raf PS3). Decompiled step by step from VSMX opcodes to PSJS code by sandungas // Comments can be deleted in notepad++ by replacing (with nothing) the regular expressions /\*.*\*/ and then //.*\r\n // The file generated after compilation in VSMX format should have MD5: 5461466B242D81B57D872BBA95EED753 // // Thanks to ;) // Flatz for the experimental CXML decompiler, ZiNgA BuRgA for the experimental VSMX v1 decoder/decompiler, // AdaLoveLace for the OPCODE names, and TizzyT for the help with PSJS //--------------------------------------------------------------------------------------------------------------------- // NUM - OPCODE VALUES - OPCODE NAME VALUES CONVERSION */DECOMPILED PSJS CODE //--------------------------------------------------------------------------------------------------------------------- /* 000 - 2E000000 00000000 - PUSH_GLOBAL logo_hd *///logo_hd /* 001 - 2E000000 1E000000 - PUSH_GLOBAL Actor *///Actor /* 002 - 28000000 00000000 - PUSH_STRING "logo" *///"logo" /* 003 - 3E000000 01000000 - CALL_CONSTRUCTOR 1 *///new Actor("logo") /* 004 - 01000000 00000000 - ASSGN *///logo_hd = new Actor("logo") /* 005 - 22000000 00000000 - REMOVE */var logo_hd = new Actor("logo"); /* 006 - 2E000000 01000000 - PUSH_GLOBAL blur_hd *///blur_hd /* 007 - 2E000000 1E000000 - PUSH_GLOBAL Actor *///Actor /* 008 - 28000000 01000000 - PUSH_STRING "blur" *///"blur" /* 009 - 3E000000 01000000 - CALL_CONSTRUCTOR 1 *///new Actor("blur") /* 010 - 01000000 00000000 - ASSGN *///blur_hd = new Actor("blur") /* 011 - 22000000 00000000 - REMOVE */var blur_hd = new Actor("blur"); /* 012 - 2E000000 02000000 - PUSH_GLOBAL footer_hd *///footer_hd /* 013 - 2E000000 1E000000 - PUSH_GLOBAL Actor *///Actor /* 014 - 28000000 02000000 - PUSH_STRING "footer" *///"footer" /* 015 - 3E000000 01000000 - CALL_CONSTRUCTOR 1 *///new Actor("footer") /* 016 - 01000000 00000000 - ASSGN *///footer_hd = new Actor("footer") /* 017 - 22000000 00000000 - REMOVE */var footer_hd = new Actor("footer"); /* 018 - 2E000000 03000000 - PUSH_GLOBAL logo_sd *///logo_sd /* 019 - 2E000000 1E000000 - PUSH_GLOBAL Actor *///Actor /* 020 - 28000000 03000000 - PUSH_STRING "logo_sd" *///"logo_sd" /* 021 - 3E000000 01000000 - CALL_CONSTRUCTOR 1 *///new Actor("logo_sd") /* 022 - 01000000 00000000 - ASSGN *///logo_sd = new Actor("logo_sd") /* 023 - 22000000 00000000 - REMOVE */var logo_sd = new Actor("logo_sd"); /* 024 - 2E000000 04000000 - PUSH_GLOBAL blur_sd *///blur_sd /* 025 - 2E000000 1E000000 - PUSH_GLOBAL Actor *///Actor /* 026 - 28000000 04000000 - PUSH_STRING "blur_sd" *///"blur_sd" /* 027 - 3E000000 01000000 - CALL_CONSTRUCTOR 1 *///new Actor("blur_sd") /* 028 - 01000000 00000000 - ASSGN *///blur_sd = new Actor("blur_sd") /* 029 - 22000000 00000000 - REMOVE */var blur_sd = new Actor("blur_sd"); /* 030 - 2E000000 05000000 - PUSH_GLOBAL footer_sd *///footer_sd /* 031 - 2E000000 1E000000 - PUSH_GLOBAL Actor *///Actor /* 032 - 28000000 05000000 - PUSH_STRING "footer_sd" *///"footer_sd" /* 033 - 3E000000 01000000 - CALL_CONSTRUCTOR 1 *///new Actor("footer_sd") /* 034 - 01000000 00000000 - ASSGN *///footer_sd = new Actor("footer_sd") /* 035 - 22000000 00000000 - REMOVE */var footer_sd = new Actor("footer_sd"); /* 036 - 2E000000 06000000 - PUSH_GLOBAL camera *///camera /* 037 - 2E000000 1F000000 - PUSH_GLOBAL Camera *///Camera /* 038 - 28000000 06000000 - PUSH_STRING "camera" *///"camera" /* 039 - 3E000000 01000000 - CALL_CONSTRUCTOR 1 *///new Camera("camera") /* 040 - 01000000 00000000 - ASSGN *///camera = new Camera("camera") /* 041 - 22000000 00000000 - REMOVE */var camera = new Camera("camera"); /* 042 - 2E000000 07000000 - PUSH_GLOBAL light *///light /* 043 - 2E000000 20000000 - PUSH_GLOBAL Light *///Light /* 044 - 28000000 07000000 - PUSH_STRING "pointlight" *///"pointlight" /* 045 - 3E000000 01000000 - CALL_CONSTRUCTOR 1 *///new Light("pointlight") /* 046 - 01000000 00000000 - ASSGN *///light = new Light("pointlight") /* 047 - 22000000 00000000 - REMOVE */var light = new Light("pointlight"); /* 048 - 2E000000 08000000 - PUSH_GLOBAL first_wait *///first_wait /* 049 - 27000000 0000C03F - PUSH_FLOAT 1.5 *///1.5 /* 050 - 01000000 00000000 - ASSGN *///first_wait = 1.5 /* 051 - 22000000 00000000 - REMOVE */var first_wait = 1.5; /* 052 - 2E000000 09000000 - PUSH_GLOBAL appear_duration *///appear_duration /* 053 - 27000000 6666A63F - PUSH_FLOAT 1.3 *///1.3 /* 054 - 01000000 00000000 - ASSGN *///appear_duration = 1.3 /* 055 - 22000000 00000000 - REMOVE */var appear_duration = 1.3; /* 056 - 2E000000 0A000000 - PUSH_GLOBAL appear_wait *///appear_wait /* 057 - 27000000 0000803E - PUSH_FLOAT 0.25 *///0.25 /* 058 - 08000000 00000000 - CSIGN *///-0.25 /* 059 - 01000000 00000000 - ASSGN *///appear_wait = -0.25 /* 060 - 22000000 00000000 - REMOVE */var appear_wait = -0.25; /* 061 - 2E000000 0B000000 - PUSH_GLOBAL blur_duration *///blur_duration /* 062 - 27000000 0000003F - PUSH_FLOAT 0.5 *///0.5 /* 063 - 01000000 00000000 - ASSGN *///blur_duration = 0.5 /* 064 - 22000000 00000000 - REMOVE */var blur_duration = 0.5; /* 065 - 2E000000 0C000000 - PUSH_GLOBAL blur_wait *///blur_wait /* 066 - 27000000 0000803E - PUSH_FLOAT 0.25 *///0.25 /* 067 - 01000000 00000000 - ASSGN *///blur_wait = 0.25 /* 068 - 22000000 00000000 - REMOVE */var blur_wait = 0.25; /* 069 - 2E000000 0D000000 - PUSH_GLOBAL whole_duration *///whole_duration /* 070 - 27000000 0000003F - PUSH_FLOAT 0.5 *///0.5 /* 071 - 01000000 00000000 - ASSGN *///whole_duration = 0.5 /* 072 - 22000000 00000000 - REMOVE */var whole_duration = 0.5; /* 073 - 2E000000 0E000000 - PUSH_GLOBAL whole_wait *///whole_wait /* 074 - 27000000 0000003F - PUSH_FLOAT 0.5 *///0.5 /* 075 - 01000000 00000000 - ASSGN *///whole_wait = 0.5 /* 076 - 22000000 00000000 - REMOVE */var whole_wait = 0.5; /* 077 - 2E000000 0F000000 - PUSH_GLOBAL fade_duration *///fade_duration /* 078 - 27000000 9A99993F - PUSH_FLOAT 1.2 *///1.2 /* 079 - 01000000 00000000 - ASSGN *///fade_duration = 1.2 /* 080 - 22000000 00000000 - REMOVE */var fade_duration = 1.2; /* 081 - 2E000000 10000000 - PUSH_GLOBAL appear_start_time *///appear_start_time /* 082 - 2E000000 08000000 - PUSH_GLOBAL first_wait *///first_wait /* 083 - 01000000 00000000 - ASSGN *///appear_start_time = first_wait /* 084 - 22000000 00000000 - REMOVE */var appear_start_time = first_wait; /* 085 - 2E000000 11000000 - PUSH_GLOBAL blur_start_time *///blur_start_time /* 086 - 2E000000 10000000 - PUSH_GLOBAL appear_start_time *///appear_start_time /* 087 - 2E000000 09000000 - PUSH_GLOBAL appear_duration *///appear_duration /* 088 - 02000000 00000000 - ADD *///appear_start_time + appear_duration /* 089 - 2E000000 0A000000 - PUSH_GLOBAL appear_wait *///appear_wait /* 090 - 02000000 00000000 - ADD *///appear_start_time + appear_duration + appear_wait /* 091 - 01000000 00000000 - ASSGN *///blur_start_time = appear_start_time + appear_duration + appear_wait /* 092 - 22000000 00000000 - REMOVE */var blur_start_time = appear_start_time + appear_duration + appear_wait; /* 093 - 2E000000 12000000 - PUSH_GLOBAL whole_start_time *///whole_start_time /* 094 - 2E000000 11000000 - PUSH_GLOBAL blur_start_time *///blur_start_time /* 095 - 2E000000 0B000000 - PUSH_GLOBAL blur_duration *///blur_duration /* 096 - 02000000 00000000 - ADD *///blur_start_time + blur_duration /* 097 - 2E000000 0C000000 - PUSH_GLOBAL blur_wait *///blur_wait /* 098 - 02000000 00000000 - ADD *///blur_start_time + blur_duration + blur_wait /* 099 - 01000000 00000000 - ASSGN *///whole_start_time = blur_start_time + blur_duration + blur_wait /* 100 - 22000000 00000000 - REMOVE */var whole_start_time = blur_start_time + blur_duration + blur_wait; /* 101 - 2E000000 13000000 - PUSH_GLOBAL fade_start_time *///fade_start_time /* 102 - 2E000000 12000000 - PUSH_GLOBAL whole_start_time *///whole_start_time /* 103 - 2E000000 0D000000 - PUSH_GLOBAL whole_duration *///whole_duration /* 104 - 02000000 00000000 - ADD *///whole_start_time + whole_duration /* 105 - 2E000000 0E000000 - PUSH_GLOBAL whole_wait *///whole_wait /* 106 - 02000000 00000000 - ADD *///whole_start_time + whole_duration + whole_wait /* 107 - 01000000 00000000 - ASSGN *///fade_start_time = whole_start_time + whole_duration + whole_wait /* 108 - 22000000 00000000 - REMOVE */var fade_start_time = whole_start_time + whole_duration + whole_wait; /* 109 - 2E000000 14000000 - PUSH_GLOBAL logo *///logo /* 110 - 2E000000 00000000 - PUSH_GLOBAL logo_hd *///logo_hd /* 111 - 01000000 00000000 - ASSGN *///logo = logo_hd /* 112 - 22000000 00000000 - REMOVE */var logo = logo_hd; /* 113 - 2E000000 15000000 - PUSH_GLOBAL blur *///blur /* 114 - 2E000000 01000000 - PUSH_GLOBAL blur_hd *///blur_hd /* 115 - 01000000 00000000 - ASSGN *///blur = blur_hd /* 116 - 22000000 00000000 - REMOVE */var blur = blur_hd; /* 117 - 2E000000 16000000 - PUSH_GLOBAL footer *///footer /* 118 - 2E000000 02000000 - PUSH_GLOBAL footer_hd *///footer_hd /* 119 - 01000000 00000000 - ASSGN *///footer = footer_hd /* 120 - 22000000 00000000 - REMOVE */var footer = footer_hd; /* 121 - 2E000000 17000000 - PUSH_GLOBAL logo_hide *///logo_hide /* 122 - 2E000000 03000000 - PUSH_GLOBAL logo_sd *///logo_sd /* 123 - 01000000 00000000 - ASSGN *///logo_hide = logo_sd /* 124 - 22000000 00000000 - REMOVE */var logo_hide = logo_sd; /* 125 - 2E000000 18000000 - PUSH_GLOBAL blur_hide *///blur_hide /* 126 - 2E000000 04000000 - PUSH_GLOBAL blur_sd *///blur_sd /* 127 - 01000000 00000000 - ASSGN *///blur_hide = blur_sd /* 128 - 22000000 00000000 - REMOVE */var blur_hide = blur_sd; /* 129 - 2E000000 19000000 - PUSH_GLOBAL footer_hide *///footer_hide /* 130 - 2E000000 05000000 - PUSH_GLOBAL footer_sd *///footer_sd /* 131 - 01000000 00000000 - ASSGN *///footer_hide = footer_sd /* 132 - 22000000 00000000 - REMOVE */var footer_hide = footer_sd; /* 133 - 2E000000 1A000000 - PUSH_GLOBAL br *///br /* 134 - 27000000 0000803F - PUSH_FLOAT 1.0 *///1.0 /* 135 - 01000000 00000000 - ASSGN *///br = 1.0 /* 136 - 22000000 00000000 - REMOVE */var br = 1.0; /* 137 - 2E000000 21000000 - PUSH_GLOBAL System *///System /* 138 - 2F000000 00000000 - GETATTR resolution *///System.resolution /* 139 - 4A000000 00000000 - GET_VECTOR_ELEMENT 0 *///System.resolution->0 /* 140 - 26000000 D0020000 - PUSH_INT 720 *///720 /* 141 - 0E000000 00000000 - CMPEQ *///System.resolution->0 == 720 /* 142 - 3B000000 F9000000 - JUMPF 249 */if (System.resolution->0 == 720){ /* 143 - 2E000000 1A000000 - PUSH_GLOBAL br *///br /* 144 - 27000000 CDCC4C3F - PUSH_FLOAT 0.8 *///0.8 /* 145 - 01000000 00000000 - ASSGN *///br = 0.8 /* 146 - 22000000 00000000 - REMOVE */ br = 0.8; /* 147 - 2E000000 14000000 - PUSH_GLOBAL logo *///logo /* 148 - 2E000000 03000000 - PUSH_GLOBAL logo_sd *///logo_sd /* 149 - 01000000 00000000 - ASSGN *///logo = logo_sd /* 150 - 22000000 00000000 - REMOVE */ logo = logo_sd; /* 151 - 2E000000 15000000 - PUSH_GLOBAL blur *///blur /* 152 - 2E000000 04000000 - PUSH_GLOBAL blur_sd *///blur_sd /* 153 - 01000000 00000000 - ASSGN *///blur = blur_sd /* 154 - 22000000 00000000 - REMOVE */ blur = blur_sd; /* 155 - 2E000000 16000000 - PUSH_GLOBAL footer *///footer /* 156 - 2E000000 05000000 - PUSH_GLOBAL footer_sd *///footer_sd /* 157 - 01000000 00000000 - ASSGN *///footer = footer_sd /* 158 - 22000000 00000000 - REMOVE */ footer = footer_sd; /* 159 - 2E000000 17000000 - PUSH_GLOBAL logo_hide *///logo_hide /* 160 - 2E000000 00000000 - PUSH_GLOBAL logo_hd *///logo_hd /* 161 - 01000000 00000000 - ASSGN *///logo_hide = logo_hd /* 162 - 22000000 00000000 - REMOVE */ logo_hide = logo_hd; /* 163 - 2E000000 18000000 - PUSH_GLOBAL blur_hide *///blur_hide /* 164 - 2E000000 01000000 - PUSH_GLOBAL blur_hd *///blur_hd /* 165 - 01000000 00000000 - ASSGN *///blur_hide = blur_hd /* 166 - 22000000 00000000 - REMOVE */ blur_hide = blur_hd; /* 167 - 2E000000 19000000 - PUSH_GLOBAL footer_hide *///footer_hide /* 168 - 2E000000 02000000 - PUSH_GLOBAL footer_hd *///footer_hd /* 169 - 01000000 00000000 - ASSGN *///footer_hide = footer_hd /* 170 - 22000000 00000000 - REMOVE */ footer_hide = footer_hd; /* 171 - 2E000000 06000000 - PUSH_GLOBAL camera *///camera /* 172 - 2F000000 01000000 - GETATTR aspect *///camera.aspect /* 173 - 27000000 00008040 - PUSH_FLOAT 4.0 *///4.0 /* 174 - 27000000 00004040 - PUSH_FLOAT 3.0 *///3.0 /* 175 - 05000000 00000000 - DIV */// 4.0 / 3.0 /* 176 - 0E000000 00000000 - CMPEQ *///camera.aspect == 4.0 / 3.0 /* 177 - 3B000000 D6000000 - JUMPF 214 */ if (camera.aspect == 4.0 / 3.0){ /* 178 - 2E000000 1B000000 - PUSH_GLOBAL sd_offset_x *///sd_offset_x /* 179 - 27000000 0000A03F - PUSH_FLOAT 1.25 *///1.25 /* 180 - 01000000 00000000 - ASSGN *///sd_offset_x = 1.25 /* 181 - 22000000 00000000 - REMOVE */ var sd_offset_x = 1.25; /* 182 - 2E000000 14000000 - PUSH_GLOBAL logo *///logo /* 183 - 2E000000 1B000000 - PUSH_GLOBAL sd_offset_x *///sd_offset_x /* 184 - 4D000000 02000000 - SETATTR_VECTOR_ELEMENT 0 position *///logo.position->0 = sd_offset_x /* 185 - 22000000 00000000 - REMOVE */ logo.position->0 = sd_offset_x; /* 186 - 2E000000 15000000 - PUSH_GLOBAL blur *///blur /* 187 - 2E000000 1B000000 - PUSH_GLOBAL sd_offset_x *///sd_offset_x /* 188 - 4D000000 02000000 - SETATTR_VECTOR_ELEMENT 0 position *///blur.position->0 = sd_offset_x /* 189 - 22000000 00000000 - REMOVE */ blur.position->0 = sd_offset_x; /* 190 - 2E000000 16000000 - PUSH_GLOBAL footer *///footer /* 191 - 2E000000 1B000000 - PUSH_GLOBAL sd_offset_x *///sd_offset_x /* 192 - 4D000000 02000000 - SETATTR_VECTOR_ELEMENT 0 position *///footer.position->0 = sd_offset_x /* 193 - 22000000 00000000 - REMOVE */ footer.position->0 = sd_offset_x; /* 194 - 2E000000 1C000000 - PUSH_GLOBAL sd_scale *///sd_scale /* 195 - 27000000 0000803F - PUSH_FLOAT 1.0 *///1.0 /* 196 - 27000000 0000003F - PUSH_FLOAT 0.5 *///0.5 /* 197 - 27000000 0000003F - PUSH_FLOAT 0.5 *///0.5 /* 198 - 49000000 03000000 - PUSH_VECTOR 3 *///<1.0, 0.5, 0.5> /* 199 - 01000000 00000000 - ASSGN *///sd_scale = <1.0, 0.5, 0.5> /* 200 - 22000000 00000000 - REMOVE */ var sd_scale = <1.0, 0.5, 0.5>; /* 201 - 2E000000 14000000 - PUSH_GLOBAL logo *///logo /* 202 - 2E000000 1C000000 - PUSH_GLOBAL sd_scale *///sd_scale /* 203 - 31000000 03000000 - SETATTR scale *///logo.scale = sd_scale /* 204 - 22000000 00000000 - REMOVE */ logo.scale = sd_scale; /* 205 - 2E000000 15000000 - PUSH_GLOBAL blur *///blur /* 206 - 2E000000 1C000000 - PUSH_GLOBAL sd_scale *///sd_scale /* 207 - 31000000 03000000 - SETATTR scale *///blur.scale = sd_scale /* 208 - 22000000 00000000 - REMOVE */ blur.scale = sd_scale; /* 209 - 2E000000 16000000 - PUSH_GLOBAL footer *///footer /* 210 - 2E000000 1C000000 - PUSH_GLOBAL sd_scale *///sd_scale /* 211 - 31000000 03000000 - SETATTR scale *///footer.scale = sd_scale /* 212 - 22000000 00000000 - REMOVE */ footer.scale = sd_scale; /* 213 - 39000000 F9000000 - JUMP 249 */ } else { /* 214 - 2E000000 1B000000 - PUSH_GLOBAL sd_offset_x *///sd_offset_x /* 215 - 27000000 00000040 - PUSH_FLOAT 2.0 *///2.0 /* 216 - 01000000 00000000 - ASSGN *///sd_offset_x = 2.0 /* 217 - 22000000 00000000 - REMOVE */ var sd_offset_x = 2.0; /* 218 - 2E000000 14000000 - PUSH_GLOBAL logo *///logo /* 219 - 2E000000 1B000000 - PUSH_GLOBAL sd_offset_x *///sd_offset_x /* 220 - 4D000000 02000000 - SETATTR_VECTOR_ELEMENT 0 position *///logo.position->0 = sd_offset_x /* 221 - 22000000 00000000 - REMOVE */ logo.position->0 = sd_offset_x; /* 222 - 2E000000 15000000 - PUSH_GLOBAL blur *///blur /* 223 - 2E000000 1B000000 - PUSH_GLOBAL sd_offset_x *///sd_offset_x /* 224 - 4D000000 02000000 - SETATTR_VECTOR_ELEMENT 0 position *///blur.position->0 = sd_offset_x /* 225 - 22000000 00000000 - REMOVE */ blur.position->0 = sd_offset_x; /* 226 - 2E000000 16000000 - PUSH_GLOBAL footer *///footer /* 227 - 2E000000 1B000000 - PUSH_GLOBAL sd_offset_x *///sd_offset_x /* 228 - 4D000000 02000000 - SETATTR_VECTOR_ELEMENT 0 position *///footer.position->0 = sd_offset_x /* 229 - 22000000 00000000 - REMOVE */ footer.position->0 = sd_offset_x; /* 230 - 2E000000 1C000000 - PUSH_GLOBAL sd_scale *///sd_scale /* 231 - 27000000 0000803F - PUSH_FLOAT 1.0 *///1.0 /* 232 - 27000000 0000003F - PUSH_FLOAT 0.5 *///0.5 /* 233 - 27000000 0000003F - PUSH_FLOAT 0.5 *///0.5 /* 234 - 49000000 03000000 - PUSH_VECTOR 3 *///<1.0, 0.5, 0.5> /* 235 - 01000000 00000000 - ASSGN *///sd_scale = <1.0, 0.5, 0.5> /* 236 - 22000000 00000000 - REMOVE */ var sd_scale = <1.0, 0.5, 0.5>; /* 237 - 2E000000 14000000 - PUSH_GLOBAL logo *///logo /* 238 - 2E000000 1C000000 - PUSH_GLOBAL sd_scale *///sd_scale /* 239 - 31000000 03000000 - SETATTR scale *///scale /* 240 - 22000000 00000000 - REMOVE */ logo.scale = sd_scale; /* 241 - 2E000000 15000000 - PUSH_GLOBAL blur *///blur /* 242 - 2E000000 1C000000 - PUSH_GLOBAL sd_scale *///sd_scale /* 243 - 31000000 03000000 - SETATTR scale *///scale /* 244 - 22000000 00000000 - REMOVE */ blur.scale = sd_scale; /* 245 - 2E000000 16000000 - PUSH_GLOBAL footer *///footer /* 246 - 2E000000 1C000000 - PUSH_GLOBAL sd_scale *///sd_scale /* 247 - 31000000 03000000 - SETATTR scale *///scale /* 248 - 22000000 00000000 - REMOVE */ footer.scale = sd_scale;}} /* 249 - 2E000000 17000000 - PUSH_GLOBAL logo_hide *///logo_hide /* 250 - 26000000 00000000 - PUSH_INT 0 *///0 /* 251 - 26000000 00000000 - PUSH_INT 0 *///0 /* 252 - 26000000 00000000 - PUSH_INT 0 *///0 /* 253 - 26000000 00000000 - PUSH_INT 0 *///0 /* 254 - 49000000 04000000 - PUSH_VECTOR 4 *///<0,0,0,0> /* 255 - 31000000 04000000 - SETATTR color *///logo_hide.color = <0,0,0,0> /* 256 - 22000000 00000000 - REMOVE */logo_hide.color = <0,0,0,0>; /* 257 - 2E000000 18000000 - PUSH_GLOBAL blur_hide *///blur_hide /* 258 - 26000000 00000000 - PUSH_INT 0 *///0 /* 259 - 26000000 00000000 - PUSH_INT 0 *///0 /* 260 - 26000000 00000000 - PUSH_INT 0 *///0 /* 261 - 26000000 00000000 - PUSH_INT 0 *///0 /* 262 - 49000000 04000000 - PUSH_VECTOR 4 *///<0,0,0,0> /* 263 - 31000000 04000000 - SETATTR color *///blur_hide.color = <0,0,0,0> /* 264 - 22000000 00000000 - REMOVE */blur_hide.color = <0,0,0,0>; /* 265 - 2E000000 19000000 - PUSH_GLOBAL footer_hide *///footer_hide /* 266 - 26000000 00000000 - PUSH_INT 0 *///0 /* 267 - 26000000 00000000 - PUSH_INT 0 *///0 /* 268 - 26000000 00000000 - PUSH_INT 0 *///0 /* 269 - 26000000 00000000 - PUSH_INT 0 *///0 /* 270 - 49000000 04000000 - PUSH_VECTOR 4 *///<0,0,0,0> /* 271 - 31000000 04000000 - SETATTR color *///footer_hide.color = <0,0,0,0> /* 272 - 22000000 00000000 - REMOVE */footer_hide.color = <0,0,0,0>; /* 273 - 2E000000 14000000 - PUSH_GLOBAL logo *///logo /* 274 - 2E000000 1A000000 - PUSH_GLOBAL br *///br /* 275 - 2E000000 1A000000 - PUSH_GLOBAL br *///br /* 276 - 2E000000 1A000000 - PUSH_GLOBAL br *///br /* 277 - 26000000 00000000 - PUSH_INT 0 *///0 /* 278 - 49000000 04000000 - PUSH_VECTOR 4 *///<br, br, br, 0> /* 279 - 31000000 04000000 - SETATTR color *///logo.color = <br, br, br, 0> /* 280 - 22000000 00000000 - REMOVE */logo.color = <br, br, br, 0>; /* 281 - 2E000000 14000000 - PUSH_GLOBAL logo *///logo /* 282 - 30000000 05000000 - GETATTR_KEEPOBJ setColor *///logo.setColor /* 283 - 2E000000 1A000000 - PUSH_GLOBAL br *///br /* 284 - 2E000000 1A000000 - PUSH_GLOBAL br *///br /* 285 - 2E000000 1A000000 - PUSH_GLOBAL br *///br /* 286 - 26000000 01000000 - PUSH_INT 1 *///1 /* 287 - 49000000 04000000 - PUSH_VECTOR 4 *///<br, br, br, 1> /* 288 - 2E000000 10000000 - PUSH_GLOBAL appear_start_time *///appear_start_time /* 289 - 3D000000 02000000 - CALL_METHOD 2 *///logo.setColor (<br, br, br, 1>, appear_start_time) /* 290 - 22000000 00000000 - REMOVE */logo.setColor (<br, br, br, 1>, appear_start_time); /* 291 - 2E000000 15000000 - PUSH_GLOBAL blur *///blur /* 292 - 2E000000 1A000000 - PUSH_GLOBAL br *///br /* 293 - 2E000000 1A000000 - PUSH_GLOBAL br *///br /* 294 - 2E000000 1A000000 - PUSH_GLOBAL br *///br /* 295 - 26000000 00000000 - PUSH_INT 0 *///0 /* 296 - 49000000 04000000 - PUSH_VECTOR 4 *///<br, br, br, 0> /* 297 - 31000000 04000000 - SETATTR color *///blur.color = <br, br, br, 0> /* 298 - 22000000 00000000 - REMOVE */blur.color = <br, br, br, 0>; /* 299 - 2E000000 16000000 - PUSH_GLOBAL footer *///footer /* 300 - 2E000000 1A000000 - PUSH_GLOBAL br *///br /* 301 - 2E000000 1A000000 - PUSH_GLOBAL br *///br /* 302 - 2E000000 1A000000 - PUSH_GLOBAL br *///br /* 303 - 26000000 00000000 - PUSH_INT 0 *///0 /* 304 - 49000000 04000000 - PUSH_VECTOR 4 *///<br, br, br, 0> /* 305 - 31000000 04000000 - SETATTR color *///footer.color = <br, br, br, 0> /* 306 - 22000000 00000000 - REMOVE */footer.color = <br, br, br, 0>; /* 307 - 2E000000 07000000 - PUSH_GLOBAL light *///light /* 308 - 2E000000 14000000 - PUSH_GLOBAL logo *///logo /* 309 - 2F000000 02000000 - GETATTR position *///logo.position /* 310 - 26000000 03000000 - PUSH_INT 3 *///3 /* 311 - 08000000 00000000 - CSIGN *///-3 /* 312 - 27000000 0000003F - PUSH_FLOAT 0.5 *///0.5 /* 313 - 26000000 00000000 - PUSH_INT 0 *///0 /* 314 - 49000000 03000000 - PUSH_VECTOR 3 *///<-3, 0.500000, 0> /* 315 - 02000000 00000000 - ADD *///logo.position + <-3, 0.500000, 0> /* 316 - 31000000 02000000 - SETATTR position *///light.position = logo.position + <-3, 0.500000, 0> /* 317 - 22000000 00000000 - REMOVE */light.position = logo.position + <-3, 0.5, 0>; /* 318 - 2E000000 07000000 - PUSH_GLOBAL light *///light /* 319 - 26000000 00000000 - PUSH_INT 0 *///0 /* 320 - 26000000 00000000 - PUSH_INT 0 *///0 /* 321 - 26000000 00000000 - PUSH_INT 0 *///0 /* 322 - 49000000 03000000 - PUSH_VECTOR 3 *///<0, 0, 0> /* 323 - 31000000 04000000 - SETATTR color *///light.color = <0, 0, 0> /* 324 - 22000000 00000000 - REMOVE */light.color = <0, 0, 0>; /* 325 - 2E000000 21000000 - PUSH_GLOBAL System *///System /* 326 - 2F000000 06000000 - GETATTR timer *///System.timer /* 327 - 26000000 00000000 - PUSH_INT 0 *///0 /* 328 - 2E000000 22000000 - PUSH_GLOBAL OneShotTimer *///OneShotTimer /* 329 - 2E000000 10000000 - PUSH_GLOBAL appear_start_time *///appear_start_time /* 330 - 2A000001 4C010000 - PUSH_FUNC 0 1 332 */System.timer[0] = new OneShotTimer(appear_start_time, function() /* 331 - 39000000 6C010000 - JUMP 364 */{ /* 332 - 2E000000 07000000 - PUSH_GLOBAL light *///light /* 333 - 30000000 07000000 - GETATTR_KEEPOBJ setPosition *///light.setPosition /* 334 - 2E000000 14000000 - PUSH_GLOBAL logo *///logo /* 335 - 2F000000 02000000 - GETATTR position *///logo.position /* 336 - 27000000 00000000 - PUSH_FLOAT 0.0 *///0.0 /* 337 - 27000000 0000003F - PUSH_FLOAT 0.5 *///0.5 /* 338 - 26000000 00000000 - PUSH_INT 0 *///0 /* 339 - 49000000 03000000 - PUSH_VECTOR 3 *///<0.0, 0.5, 0> /* 340 - 02000000 00000000 - ADD *///logo.position + <0.0, 0.5, 0> /* 341 - 2E000000 09000000 - PUSH_GLOBAL appear_duration *///appear_duration /* 342 - 3D000000 02000000 - CALL_METHOD 2 *///light.setPosition ((logo.position + <0.0, 0.5, 0>), appear_duration) /* 343 - 22000000 00000000 - REMOVE */ light.setPosition ((logo.position + <0.0, 0.5, 0>), appear_duration); /* 344 - 2E000000 07000000 - PUSH_GLOBAL light *///light /* 345 - 30000000 08000000 - GETATTR_KEEPOBJ setAttenuation *///light.setAttenuation /* 346 - 27000000 CDCCCC3D - PUSH_FLOAT 0.1 *///0.1 /* 347 - 27000000 CDCCCC3D - PUSH_FLOAT 0.1 *///0.1 /* 348 - 27000000 CDCCCC3D - PUSH_FLOAT 0.1 *///0.1 /* 349 - 49000000 03000000 - PUSH_VECTOR 3 *///<0.1, 0.1, 0.1> /* 350 - 2E000000 09000000 - PUSH_GLOBAL appear_duration *///appear_duration /* 351 - 3D000000 02000000 - CALL_METHOD 2 *///light.setAttenuation (<0.1, 0.1, 0.1>, appear_duration) /* 352 - 22000000 00000000 - REMOVE */ light.setAttenuation (<0.1, 0.1, 0.1>, appear_duration); /* 353 - 2E000000 07000000 - PUSH_GLOBAL light *///light /* 354 - 30000000 05000000 - GETATTR_KEEPOBJ setColor *///light.setColor /* 355 - 26000000 01000000 - PUSH_INT 1 *///1 /* 356 - 26000000 01000000 - PUSH_INT 1 *///1 /* 357 - 26000000 01000000 - PUSH_INT 1 *///1 /* 358 - 49000000 03000000 - PUSH_VECTOR 3 *///<1, 1, 1> /* 359 - 2E000000 09000000 - PUSH_GLOBAL appear_duration *///appear_duration /* 360 - 3D000000 02000000 - CALL_METHOD 2 *///light.setColor (<1, 1, 1>, appear_duration) /* 361 - 22000000 00000000 - REMOVE */ light.setColor (<1, 1, 1>, appear_duration); /* 362 - 23000000 00000000 - PUSH_UNDEFINED */ /* 363 - 3F000000 00000000 - RET */} /* 364 - 3E000000 02000000 - CALL_CONSTRUCTOR 2 *///) /* 365 - 36000000 00000000 - SETITEM */ /* 366 - 22000000 00000000 - REMOVE */); /* 367 - 2E000000 21000000 - PUSH_GLOBAL System *///System /* 368 - 2F000000 06000000 - GETATTR timer *///System.timer /* 369 - 26000000 01000000 - PUSH_INT 1 *///1 /* 370 - 2E000000 22000000 - PUSH_GLOBAL OneShotTimer *///OneShotTimer /* 371 - 2E000000 11000000 - PUSH_GLOBAL blur_start_time *///blur_start_time /* 372 - 2A000001 76010000 - PUSH_FUNC 0 1 374 */System.timer[1] = new OneShotTimer(blur_start_time, function() /* 373 - 39000000 88010000 - JUMP 392 */{ /* 374 - 2E000000 15000000 - PUSH_GLOBAL blur *///blur /* 375 - 30000000 05000000 - GETATTR_KEEPOBJ setColor *///blur.setColor /* 376 - 2E000000 1A000000 - PUSH_GLOBAL br *///br /* 377 - 2E000000 1A000000 - PUSH_GLOBAL br *///br /* 378 - 2E000000 1A000000 - PUSH_GLOBAL br *///br /* 379 - 26000000 01000000 - PUSH_INT 1 *///1 /* 380 - 49000000 04000000 - PUSH_VECTOR 4 *///<br, br, br, 1> /* 381 - 2E000000 0B000000 - PUSH_GLOBAL blur_duration *///blur_duration /* 382 - 2E000000 1D000000 - PUSH_GLOBAL INTERPOLATION_BEZIER *///INTERPOLATION_BEZIER /* 383 - 27000000 CDCCCC3D - PUSH_FLOAT 0.1 *///0.1 /* 384 - 27000000 00000000 - PUSH_FLOAT 0.0 *///0.0 /* 385 - 27000000 CDCCCC3D - PUSH_FLOAT 0.1 *///0.1 /* 386 - 27000000 0000803F - PUSH_FLOAT 1.0 *///1.0 /* 387 - 49000000 04000000 - PUSH_VECTOR 4 *///<0.1, 0.0, 0.1, 1.0> /* 388 - 3D000000 04000000 - CALL_METHOD 4 *///blur.setColor (<br, br, br, 1>, blur_duration, INTERPOLATION_BEZIER, <0.1, 0.0, 0.1, 1.0>) /* 389 - 22000000 00000000 - REMOVE */ blur.setColor (<br, br, br, 1>, blur_duration, INTERPOLATION_BEZIER, <0.1, 0.0, 0.1, 1.0>); /* 390 - 23000000 00000000 - PUSH_UNDEFINED */ /* 391 - 3F000000 00000000 - RET */} /* 392 - 3E000000 02000000 - CALL_CONSTRUCTOR 2 *///) /* 393 - 36000000 00000000 - SETITEM */ /* 394 - 22000000 00000000 - REMOVE */); /* 395 - 2E000000 21000000 - PUSH_GLOBAL System *///System /* 396 - 2F000000 06000000 - GETATTR timer *///System.timer /* 397 - 26000000 02000000 - PUSH_INT 2 *///2 /* 398 - 2E000000 22000000 - PUSH_GLOBAL OneShotTimer *///OneShotTimer /* 399 - 2E000000 12000000 - PUSH_GLOBAL whole_start_time *///whole_start_time /* 400 - 2A000001 92010000 - PUSH_FUNC 0 1 402 */System.timer[2] = new OneShotTimer(whole_start_time, function() /* 401 - 39000000 AE010000 - JUMP 430 */{ /* 402 - 2E000000 15000000 - PUSH_GLOBAL blur *///blur /* 403 - 30000000 05000000 - GETATTR_KEEPOBJ setColor *///blur.setColor /* 404 - 2E000000 1A000000 - PUSH_GLOBAL br *///br /* 405 - 2E000000 1A000000 - PUSH_GLOBAL br *///br /* 406 - 2E000000 1A000000 - PUSH_GLOBAL br *///br /* 407 - 26000000 00000000 - PUSH_INT 0 *///0 /* 408 - 49000000 04000000 - PUSH_VECTOR 4 *///4 /* 409 - 2E000000 0D000000 - PUSH_GLOBAL whole_duration *///whole_duration /* 410 - 2E000000 1D000000 - PUSH_GLOBAL INTERPOLATION_BEZIER *///INTERPOLATION_BEZIER /* 411 - 27000000 CDCCCC3D - PUSH_FLOAT 0.1 *///0.1 /* 412 - 27000000 00000000 - PUSH_FLOAT 0.0 *///0.0 /* 413 - 27000000 CDCCCC3D - PUSH_FLOAT 0.1 *///0.1 /* 414 - 27000000 0000803F - PUSH_FLOAT 1.0 *///1.0 /* 415 - 49000000 04000000 - PUSH_VECTOR 4 *///<0.1, 0.0, 0.1, 1.0> /* 416 - 3D000000 04000000 - CALL_METHOD 4 *///blur.setColor (<br, br, br, 0>, whole_duration, INTERPOLATION_BEZIER, <0.1, 0.0, 0.1, 1.0>) /* 417 - 22000000 00000000 - REMOVE */ blur.setColor (<br, br, br, 0>, whole_duration, INTERPOLATION_BEZIER, <0.1, 0.0, 0.1, 1.0>); /* 418 - 2E000000 16000000 - PUSH_GLOBAL footer *///footer /* 419 - 30000000 05000000 - GETATTR_KEEPOBJ setColor *///footer.setColor /* 420 - 2E000000 1A000000 - PUSH_GLOBAL br *///br /* 421 - 2E000000 1A000000 - PUSH_GLOBAL br *///br /* 422 - 2E000000 1A000000 - PUSH_GLOBAL br *///br /* 423 - 26000000 01000000 - PUSH_INT 1 *///1 /* 424 - 49000000 04000000 - PUSH_VECTOR 4 *///<br, br, br, 1> /* 425 - 2E000000 0D000000 - PUSH_GLOBAL whole_duration *///whole_duration /* 426 - 3D000000 02000000 - CALL_METHOD 2 *///footer.setColor (<br, br, br, 1>, whole_duration) /* 427 - 22000000 00000000 - REMOVE */ footer.setColor (<br, br, br, 1>, whole_duration); /* 428 - 23000000 00000000 - PUSH_UNDEFINED */ /* 429 - 3F000000 00000000 - RET */} /* 430 - 3E000000 02000000 - CALL_CONSTRUCTOR 2 *///) /* 431 - 36000000 00000000 - SETITEM */ /* 432 - 22000000 00000000 - REMOVE */); /* 433 - 2E000000 21000000 - PUSH_GLOBAL System *///System /* 434 - 2F000000 06000000 - GETATTR timer *///System.timer /* 435 - 26000000 03000000 - PUSH_INT 3 *///3 /* 436 - 2E000000 22000000 - PUSH_GLOBAL OneShotTimer *///OneShotTimer /* 437 - 2E000000 13000000 - PUSH_GLOBAL fade_start_time *///fade_start_time /* 438 - 2A000002 B8010000 - PUSH_FUNC 0 2 440 */System.timer[3] = new OneShotTimer(fade_start_time, function() /* 439 - 39000000 02020000 - JUMP 514 */{ /* 440 - 2D000000 01000000 - PUSH_LOCAL 1 *///Unamed_Variable /* 441 - 27000000 CDCC4C3F - PUSH_FLOAT 0.8 *///0.8 /* 442 - 27000000 00000000 - PUSH_FLOAT 0.0 *///0.0 /* 443 - 27000000 CDCC4C3F - PUSH_FLOAT 0.8 *///0.8 /* 444 - 27000000 0000803F - PUSH_FLOAT 1.0 *///1.0 /* 445 - 49000000 04000000 - PUSH_VECTOR 4 *///<0.8, 0.0, 0.8, 1.0> /* 446 - 01000000 00000000 - ASSGN *///Unamed_Variable = <0.8, 0.0, 0.8, 1.0> /* 447 - 22000000 00000000 - REMOVE */ var Unamed_Variable = <0.8, 0.0, 0.8, 1.0>; /* 448 - 2E000000 16000000 - PUSH_GLOBAL footer *///footer /* 449 - 30000000 05000000 - GETATTR_KEEPOBJ setColor *///footer.setColor /* 450 - 2E000000 1A000000 - PUSH_GLOBAL br *///br /* 451 - 2E000000 1A000000 - PUSH_GLOBAL br *///br /* 452 - 2E000000 1A000000 - PUSH_GLOBAL br *///br /* 453 - 26000000 00000000 - PUSH_INT 0 *///0 /* 454 - 49000000 04000000 - PUSH_VECTOR 4 *///<br, br, br, 0> /* 455 - 2E000000 0F000000 - PUSH_GLOBAL fade_duration *///fade_duration /* 456 - 2E000000 1D000000 - PUSH_GLOBAL INTERPOLATION_BEZIER *///INTERPOLATION_BEZIER /* 457 - 2D000000 01000000 - PUSH_LOCAL 1 *///Unamed_Variable /* 458 - 3D000000 04000000 - CALL_METHOD 4 *///footer.setColor (<br, br, br, 0>, fade_duration, INTERPOLATION_BEZIER, Unamed_Variable) /* 459 - 22000000 00000000 - REMOVE */ footer.setColor (<br, br, br, 0>, fade_duration, INTERPOLATION_BEZIER, Unamed_Variable); /* 460 - 2E000000 14000000 - PUSH_GLOBAL logo *///logo /* 461 - 30000000 05000000 - GETATTR_KEEPOBJ setColor *///logo.setColor /* 462 - 2E000000 1A000000 - PUSH_GLOBAL br *///br /* 463 - 2E000000 1A000000 - PUSH_GLOBAL br *///br /* 464 - 2E000000 1A000000 - PUSH_GLOBAL br *///br /* 465 - 26000000 00000000 - PUSH_INT 0 *///0 /* 466 - 49000000 04000000 - PUSH_VECTOR 4 *///<br, br, br, 0> /* 467 - 2E000000 0F000000 - PUSH_GLOBAL fade_duration *///fade_duration /* 468 - 2E000000 1D000000 - PUSH_GLOBAL INTERPOLATION_BEZIER *///INTERPOLATION_BEZIER /* 469 - 2D000000 01000000 - PUSH_LOCAL 1 *///Unamed_Variable /* 470 - 3D000000 04000000 - CALL_METHOD 4 *///logo.setColor (<br, br, br, 0>, fade_duration, INTERPOLATION_BEZIER, Unamed_Variable) /* 471 - 22000000 00000000 - REMOVE */ logo.setColor (<br, br, br, 0>, fade_duration, INTERPOLATION_BEZIER, Unamed_Variable); /* 472 - 2E000000 07000000 - PUSH_GLOBAL light *///light /* 473 - 30000000 07000000 - GETATTR_KEEPOBJ setPosition *///light.setPosition /* 474 - 2E000000 07000000 - PUSH_GLOBAL light *///light /* 475 - 2F000000 02000000 - GETATTR position *///light.position /* 476 - 27000000 0000C03F - PUSH_FLOAT 1.5 *///1.5 /* 477 - 27000000 0000C03F - PUSH_FLOAT 1.5 *///1.5 /* 478 - 04000000 00000000 - MUL *///1.5 * 1.5 /* 479 - 26000000 01000000 - PUSH_INT 1 *///1 /* 480 - 27000000 0000C03F - PUSH_FLOAT 1.5 *///1.5 /* 481 - 04000000 00000000 - MUL *///1 * 1.5 /* 482 - 26000000 00000000 - PUSH_INT 0 *///0 /* 483 - 49000000 03000000 - PUSH_VECTOR 3 *///<1.5 * 1.5, 1 * 1.5, 0> /* 484 - 02000000 00000000 - ADD *///light.position + <1.5 * 1.5, 1 * 1.5, 0> /* 485 - 2E000000 0F000000 - PUSH_GLOBAL fade_duration *///fade_duration /* 486 - 2E000000 1D000000 - PUSH_GLOBAL INTERPOLATION_BEZIER *///INTERPOLATION_BEZIER /* 487 - 2D000000 01000000 - PUSH_LOCAL 1 *///Unamed_Variable /* 488 - 3D000000 04000000 - CALL_METHOD 4 *///light.setPosition (light.position + <1.5 * 1.5, 1 * 1.5, 0>, fade_duration, INTERPOLATION_BEZIER, Unamed_Variable) /* 489 - 22000000 00000000 - REMOVE */ light.setPosition (light.position + <1.5 * 1.5, 1 * 1.5, 0>, fade_duration, INTERPOLATION_BEZIER, Unamed_Variable); /* 490 - 2E000000 07000000 - PUSH_GLOBAL light *///light /* 491 - 30000000 05000000 - GETATTR_KEEPOBJ setColor *///light.setColor /* 492 - 26000000 00000000 - PUSH_INT 0 *///0 /* 493 - 26000000 00000000 - PUSH_INT 0 *///0 /* 494 - 26000000 00000000 - PUSH_INT 0 *///0 /* 495 - 49000000 03000000 - PUSH_VECTOR 3 *///<0, 0, 0> /* 496 - 2E000000 0F000000 - PUSH_GLOBAL fade_duration *///fade_duration /* 497 - 2E000000 1D000000 - PUSH_GLOBAL INTERPOLATION_BEZIER *///INTERPOLATION_BEZIER /* 498 - 2D000000 01000000 - PUSH_LOCAL 1 *///Unamed_Variable /* 499 - 3D000000 04000000 - CALL_METHOD 4 *///light.setColor (<0, 0, 0>, fade_duration, INTERPOLATION_BEZIER, Unamed_Variable) /* 500 - 22000000 00000000 - REMOVE */ light.setColor (<0, 0, 0>, fade_duration, INTERPOLATION_BEZIER, Unamed_Variable); /* 501 - 2E000000 07000000 - PUSH_GLOBAL light *///light /* 502 - 30000000 08000000 - GETATTR_KEEPOBJ setAttenuation *///light.setAttenuation /* 503 - 26000000 00000000 - PUSH_INT 0 *///0 /* 504 - 26000000 01000000 - PUSH_INT 1 *///1 /* 505 - 26000000 04000000 - PUSH_INT 4 *///4 /* 506 - 49000000 03000000 - PUSH_VECTOR 3 *///<0, 1, 4> /* 507 - 2E000000 0F000000 - PUSH_GLOBAL fade_duration *///fade_duration /* 508 - 2E000000 1D000000 - PUSH_GLOBAL INTERPOLATION_BEZIER *///INTERPOLATION_BEZIER /* 509 - 2D000000 01000000 - PUSH_LOCAL 1 *///Unamed_Variable /* 510 - 3D000000 04000000 - CALL_METHOD 4 *///light.setAttenuation (<0, 1, 4>, fade_duration, INTERPOLATION_BEZIER, Unamed_Variable) /* 511 - 22000000 00000000 - REMOVE */ light.setAttenuation (<0, 1, 4>, fade_duration, INTERPOLATION_BEZIER, Unamed_Variable); /* 512 - 23000000 00000000 - PUSH_UNDEFINED */ /* 513 - 3F000000 00000000 - RET */} /* 514 - 3E000000 02000000 - CALL_CONSTRUCTOR 2 *///) /* 515 - 36000000 00000000 - SETITEM */ /* 516 - 22000000 00000000 - REMOVE */); /* 517 - 45000000 00000000 - HALT */
|