====== Type 0x3: Savegame ====== ==== File Format Description ==== === File Structure === * Format Type: Data * Endian Order: Little Endian * File Extension: .m4s == FILE == ^ Header ^^^^ | CHAR8 | 0x8 | Identifier | "ubi/b0-l" | | INT+32 | 0x1 | Internal file type | 0x3 | | INT+32 | 0x1 | Savegame title length | = aa | | CHAR16 | [aa] | Savegame title | | | [[en:fileformats:myst4:type3#TIMESTAMP*]] | 0x1 | Time of creation | | | INT+32 | 0x1 | Thumbnail image size | = ab | | [[wp>jfif|JFIF*]] | 0x1 | Thumbnail image | [ab] represents byte-size | ^ Position data ^^^^ | INT+32 | 0x1 | Current [[en:fileformats:myst4:type3#world_ids|world ID]] | | | INT+32 | 0x1 | Current [[en:fileformats:myst4:type3#zone_ids|zone ID]] | | | INT+32 | 0x1 | Current node ID | | | FLOAT32 | 0x1 | Left border of the viewport relative to the screen size | **0.0** to 1.0 | | FLOAT32 | 0x1 | Bottom border of the viewport relative to the screen size | 0.0 to 1.0; **0.175** | | FLOAT32 | 0x1 | Width of the viewport relative to the screen size | 0.0 to **1.0** | | FLOAT32 | 0x1 | Height of the viewport relative to the screen size | 0.0 to 1.0; **0.75** | | FLOAT32 | 0x10 | 4x4 Matrix for the camera position and direction | | | MISC32 | 0x2 | //unknown// | | ^ State data ^^^^ | INT+32 | 0x1 | Overall size of state data | | | INT+32 | 0x1 | Reserved | 0x0 | | INT+32 | 0x1 | Classes count | = ba | | [[en:fileformats:myst4:type3#CLASS*]] | [ba] | Class information | | ^ Zip data ^^^^ | INT+32 | 0x1 | Worlds count | = ca | | [[en:fileformats:myst4:type3#WORLDZIPS*]] | [ca] | World zip points | | | INT+32 | 0x1 | Current [[en:fileformats:myst4:type3#world_ids|world ID]] | | | INT+32 | 0x1 | Reserved | 0x0 | ^ Necklace data ^^^^ | INT+32 | 0x1 | Found necklace hints count | = da | | [[en:fileformats:myst4:type3#NECKLACE*]] | [da] | Found necklace hints positions | | ^ Journal data ^^^^ | [[en:fileformats:myst4:type3#JOURNAL*]] | 0x3e7 | Journal information | | ^ Trailer ^^^^ | INT+32 | 0x1 | Checksum | [[wp>List_of_checksum_algorithms#Checksums|Sum32]] | === User-defined structures === == CLASS* == ^ Class ^^^^ | INT+32 | 0x1 | Class name length | = ea | | CHAR8 | [ea] | [[en:fileformats:myst4:type3#classes_and_variables_in_state_area|Class name]] | //remark: characters are [[en:fileformats:myst4:type3#string_encryption|encrypted]]// | | INT+32 | 0x1 | Variables count | = eb | | [[en:fileformats:myst4:type3#VAR*]] | [eb] | Variable information | | | INT+32 | 0x1 | Reserved | 0x0 | == NECKLACE* == ^ Necklace ^^^^ | INT+32 | 0x1 | [[en:fileformats:myst4:type3#world_ids|World ID]] | | | INT+32 | 0x1 | [[en:fileformats:myst4:type3#zone_ids|zone ID]] | | | INT+32 | 0x1 | Node ID | | == JOURNAL* == ^ Journal ^^^^ | INT+32 | 0x1 | Journal text length | = ha | | CHAR16 | [ha] | Jorunal text | | | INT+8 | 0x1 | Jorunal image existence | = hb | | **if (hb == 0x1) {** |||| | INT+32 | 0x1 | Journal image size | = hc | | [[wp>jfif|JFIF*]] | 0x1 | Journal image | [hc] represents byte-size | | **}** |||| | INT+8 | 0x1 | Next journal page existence | | == TIMESTAMP* == ^ Timestamp ^^^^ | INT+32 | 0x1 | Day | | | INT+32 | 0x1 | DST | | | INT+32 | 0x1 | Hour | | | INT+32 | 0x1 | Milliseconds | | | INT+32 | 0x1 | Minute | | | INT+32 | 0x1 | Month | | | INT+32 | 0x1 | Second | | | INT+32 | 0x1 | Year | | == VAR* == ^ Var ^^^^ | INT+32 | 0x1 | Variable name length | = fa | | CHAR8 | [fa] | [[en:fileformats:myst4:type3#classes_and_variables_in_state_area|Variable name]] | //remark: characters are [[en:fileformats:myst4:type3#string_encryption|encrypted]]// | | INT+8 | 0x1 | Variable type | = fb | | **if (fb == 1) {** |||| | INT+8 | 0x1 | Variable value | | | **} else if (fb == 3) {** |||| | INT+32 | 0x1 | Variable value | | | **} else if (fb == 4) {** |||| | INT8 | 0x1 | Variable value | | | **} else if (fb == 6) {** |||| | INT32 | 0x1 | Variable value | | | **} else if (fb == 7) {** |||| | FLOAT32 | 0x1 | Variable value | | | **} else if (fb == 9) {** |||| | INT+8 | 0x1 | Variable value | 0x0 or 0x1 | | **} else if (fb == 11) {** |||| | MISC96 | 0x1 | Variable value | | | **} else if (fb == 13) {** |||| | INT+32 | 0x1 | Variable value length | = fc | | CHAR8 | [fc] | Variable value | | | **}** |||| == WORLDZIPS* == ^ WorldZips ^^^^ | INT+32 | 0x1 | [[en:fileformats:myst4:type3#world_ids|World ID]] | | | INT+32 | 0x1 | Zip points count | = ga | | [[en:fileformats:myst4:type3#ZIPPOINT*]] | [ga] | Zip point description | | == ZIPPOINT* == ^ ZipPoint ^^^^ | INT+32 | 0x1 | [[en:fileformats:myst4:type3#zone_ids|Zone ID]] | | | INT+32 | 0x1 | Node ID | | | INT32 | 0x1 | Zip order position | 0xFFFFFFFF = not visited | | INT+8 | 0x1 | Zip point enabled | 0x0 or 0x1 | ==== Appendix ==== == String Encryption == Names of classes and variables in the state area are encrypted. The encryption is based on a simple scrambling of the bits. The correct order of the bits in every byte is 1, 0, 3, 2, 5, 4, 7, 6. == World IDs == ^ ID ^ World name ^ | 1 | Tomahna (at night) | | 2 | Haven | | 3 | Spire | | 4 | Serenia | | 5 | Tomahna (at day) | | 6 | Menu | == Zone IDs == ^ w1 (Tomahna at night) ^^ | 1 | Exterior\\ //Zones: 20, 21, 40, 41, 50, 90, 160, 190, 200, 210, 230, 240, 241, 250, 260, 270, 290, 310// | | 2 | Observatory\\ //Zones: 10, 20, 21, 30, 31, 32, 40, 41, 50, 60, 70, 71, 90, 130, 131, 140, 141, 142, 143, 150, 160, 170// | | 3 | Atrus' study room (-> Exile)\\ //Zones: 10, 30, 50, 51, 60, 70, 80, 90, 91, 93, 94, 100, 101, 103// | | 4 | Conservatory\\ //Zones: 10, 20, 40, 50, 60, 70, 80, 90, 91, 100, 101, 102, 103, 104, 110, 111, 112, 113, 114, 115, 120, 121, 122, 130, 131, 140// | | 5 | Kitchen\\ //Zones: 10, 11, 20, 21, 22, 30, 31, 32, 40, 50, 51, 52, 53, 60, 70, 71// | | 6 | Linking book sphere\\ //Zones: 10, 11, 20, 30, 40, 50// | | 7 | Yeesha's bed room\\ //Zones: 10, 11, 20, 21, 22, 30, 31, 32, 33, 34, 40, 41// | | 9 | Atrus' bed room\\ //Zones: 10, 20, 21, 30, 40, 41, 50, 60, 61, 62, 63, 70// | ^ w2 (Haven) ^^ | 1 | Shipwreck\\ //Zones: 10, 30, 40, 50, 60, 61, 62, 70, 80, 90, 100, 110, 120, 130, 131, 132, 140, 141, 150, 160, 170, 171, 180, 181, 190, 191// | | 2 | Linking book chamber\\ //Zones: 10, 11, 12, 13, 15, 20, 21, 30, 50, 51, 70, 71, 100, 130, 150, 160, 170, 180, 190, 230// | | 3 | Jungle 2\\ //Zones: 10, 20, 30, 40, 50, 70, 71, 72, 73, 100// | | 4 | Bog\\ //Zones: 10, 20, 30, 31, 40, 50, 60, 61, 62, 70, 80, 81// | | 5 | Treehouse\\ //Zones: 20, 30, 40, 50, 60, 80, 81, 82, 83, 84, 85, 86, 90, 110, 120, 130, 131, 132, 133, 140, 150, 160, 170, 171// | | 6 | Lakehouse\\ //Zones: 10, 11, 12, 20, 40, 50, 60, 70, 80, 90, 91, 92, 93, 94, 120, 121, 130, 140, 143, 150, 152, 153, 154, 170, 171, 180// | | 7 | Comodile attack\\ //Zones: 10, 20, 21, 22, 30, 40, 50, 51, 60, 61// | | 12 | Jungle 1\\ //Zones: 10, 30, 31, 50, 60, 70, 71, 72, 80, 81, 82, 100, 110, 120, 130, 140, 150, 151, 160, 170, 190, 191, 192, 193, 200, 210// | ^ w3 (Spire) ^^ | 1 | Upper level\\ //Zones: 10, 20, 21, 30, 31, 32, 40, 50, 60, 70, 80, 81, 90, 100, 110, 120, 121, 122, 130, 131, 132, 140, 180, 190, 200, 250, 251, 252, 270, 271// | | 2 | Middle level 1\\ //Zones: 10, 20, 30, 50, 51, 60, 70, 71, 90, 100, 101, 102, 103, 104, 110, 120, 130, 150, 151, 152, 160, 190, 200, 201, 202, 210, 211, 220, 230, 231, 250, 500// | | 3 | Middle level 2\\ //Zones: 10, 11, 30, 31, 50, 51, 52, 53, 54, 60, 61, 62, 70, 71, 72, 73// | | 4 | Rock island\\ //Zones: 100, 110, 120, 130, 131, 150, 151, 160, 161, 170, 180, 190, 200// | | 5 | Spider chair\\ //Zones: 10, 20, 21, 30, 50, 60, 61, 70, 80, 81, 90, 91, 92, 93, 94, 100, 110, 111// | | 6 | Bomb factory\\ //Zones: 30, 40, 50, 51, 52, 60, 61, 62, 70, 71// | ^ w4 (Serenia) ^^ | 1 | Linking book area\\ //Zones: 10, 11, 30, 40, 50, 60, 70// | | 2 | Upper waterstreams\\ //Zones: 10, 20, 30, 40, 50, 60, 70, 80, 90, 110, 120, 130, 140, 160, 161, 170, 180, 181, 190, 200, 201, 210, 220, 230, 240, 241, 250, 260, 270, 270, 290, 300// | | 3 | Lower waterstreams\\ //Zones: 10, 20, 21, 30, 40, 50, 51, 60, 61, 70, 71, 80, 81, 90, 91, 92, 140// | | 4 | New memorization chamber\\ //Zones: 10, 20, 21, 30, 31, 50, 51, 90, 91, 92, 100, 150, 160, 190, 200, 201, 220, 221, 230, 240, 250// | | 5 | Life stone chamber\\ //Zones: 10, 20, 30, 31, 40, 50, 51, 60, 70, 71, 72, 80, 90, 91, 92, 100, 120, 121, 130, 131// | | 6 | Old memorization chamber\\ //Zones: 10, 20, 30, 40, 50, 60, 61, 62, 70, 80, 100, 110, 120, 130, 131, 140, 150, 160, 161, 170, 180, 181, 190, 200, 210, 220, 230, 231, 232, 240, 250, 260, 290, 300, 310, 320, 330, 700// | ^ w5 (Tomahna at day) ^^ | 1 | Exterior\\ //Zones: 10, 20, 21, 40, 41, 50, 110, 130, 140, 160, 190, 200, 240, 241, 290// | | 2 | Observatory\\ //Zones: 10, 20, 21, 30, 31, 40, 41, 50, 60, 70, 71, 90, 130, 131, 140, 141, 142, 143, 160// | | 4 | Conservatory\\ //Zones: 10, 20, 40, 50, 60, 70, 80, 90, 91, 100, 101, 102, 110, 111, 112, 113, 114, 115, 120, 122, 130, 131, 140// | | 9 | Atrus' bed room\\ //Zones: 10, 20, 21, 30, 40, 41, 50, 60, 61, 70// | ^ w6 (Menu) ^^ | 1 | Intro\\ //Zones: 21// | | 6 | Menus\\ //Zones: 11, 21, 31, 41, 51, 61, 71, 81, 82, 83, 84, 91, 111, 112// | == Classes and variables in "state area" == ^ 3guides_puzzle ^^^ | 3guidesPuzzle_won | boolean | 0 | | FireGuidePosition | INT8 | -1 | | HandlingParticle_node | INT+8 | 0 | | HandlingParticle_node_max | INT+8 | 4 | | HandlingParticle_time | INT+8 | 0 | | HandlingParticle_time_max | INT+8 | 12 | | HandlingParticle_type | INT8 | -1 | | WaterGuidePosition | INT8 | -1 | | WindGuidePosition | INT8 | -1 | | gamerType_type | INT8 | -1 | ^ DataRate ^^^ | critical | INT+32 | 2621440 | | high | INT+32 | 2306867 | ^ FrameRate ^^^ | critical | FLOAT32 | 15.0 | | low | FLOAT32 | 25.0 | ^ VideoTotalResolution ^^^ | critical | INT+32 | 524288 | | high | INT+32 | 470000 | ^ achenar_general ^^^ | final_joyride_done | boolean | 0 | | firstTime_w2_z01_n150 | boolean | 1 | | firstTime_w2_z02_n030 | boolean | 1 | | firstTime_w2_z02_n140 | boolean | 1 | | firstTime_w2_z04_n030 | boolean | 1 | | firstTime_w2_z04_n040 | boolean | 1 | | firstTime_w2_z04_n050 | boolean | 1 | | firstTime_w2_z04_n140 | boolean | 1 | | firstTime_w2_z05_n090 | boolean | 1 | | firstTime_w2_z05_n120 | boolean | 1 | | firstTime_w2_z05_n140 | boolean | 1 | | firstTime_w2_z05_n150 | boolean | 1 | | firstTime_w2_z12_n060 | boolean | 1 | | firstTime_w2_z12_n100 | boolean | 1 | | firstTime_w2_z12_n120 | boolean | 1 | | firstTime_w2_z12_n130 | boolean | 1 | | firstTime_w2_z12_n190 | boolean | 1 | | linking_chamber_mailbox_open | boolean | 0 | | linking_chamber_podium_up | boolean | 0 | | linking_chamber_wall_broken | boolean | 0 | | parasail_joyride_done | boolean | 0 | | roche_pushed | boolean | 0 | | shipwreck_piege_ouvert | boolean | 1 | | supply_depot_plan_open | boolean | 0 | | w2_z01_poison_active | boolean | 0 | | w2_z01_scav1 | INT+32 | 0 | | w2_z01_scav2 | INT+32 | 0 | | w2_z01_scav3 | INT+32 | 0 | | w2_z02_n070_crab_state | INT+32 | 0 | | w2_z03_n050_plantepushed | boolean | 0 | | w2_z06_n090_toileopened | boolean | 0 | | w2_z06_n171_carnetopened | boolean | 0 | | w2_z06_scav02_down | INT+32 | 0 | | zip_helper_w2_z01_n010 | boolean | 0 | ^ amulet ^^^ | is_found | boolean | 0 | | //remark: this class is terminated by 0x1 instead of 0x0// ||| ^ visited ^^^ | //remark: this class contains no variables// ||| ^ antenna_puzzle ^^^ | is_activated | boolean | 0 | ^ bathysphere_puzzle ^^^ | bathydoor | boolean | 1 | | bathysphere | boolean | 0 | | drain | boolean | 0 | | irrigation | boolean | 1 | | water_filled | boolean | 0 | | water_level | INT+8 | 0 | ^ comm1_puzzle ^^^ | isOmni3Far | boolean | 0 | | isPlanDeroule | boolean | 0 | | isPlayerSendWarning | boolean | 0 | | n20Omni3Far | boolean | 0 | | posWheel1 | FLOAT32 | 0.0 | | posWheel2 | FLOAT32 | 0.0 | | posWheel3 | FLOAT32 | 0.0 | ^ comm2_puzzle ^^^ | isBackSubNode | boolean | 0 | | isComm2PuzzleFinish | boolean | 0 | | isPredArriveN40 | boolean | 0 | | isPredIntroPlayed | boolean | 0 | | lastPosOmniShow | INT+32 | 0 | | posNoOmni | INT+32 | 2 | | posOmniA | INT+32 | 0 | | posOmniB | INT+32 | 1 | | posOmniC | INT+32 | 3 | | posOmniD | INT+32 | 4 | | posPred | INT+32 | 0 | | posWheel1 | FLOAT32 | 0.0 | | posWheel2 | FLOAT32 | 0.0 | | posWheel3 | FLOAT32 | 0.0 | ^ crystal_viewer ^^^ | current_crytal_color | INT+32 | 0 | | current_crytal_shape | INT+32 | 0 | | current_door0_color | INT+32 | 0 | | current_door0_shape | INT+32 | 0 | | current_door1_color | INT+32 | 0 | | current_door1_shape | INT+32 | 0 | | current_door2_color | INT+32 | 0 | | current_door2_shape | INT+32 | 0 | | current_door3_color | INT+32 | 0 | | current_door3_shape | INT+32 | 0 | | current_door4_color | INT+32 | 0 | | current_door4_shape | INT+32 | 0 | ^ demo ^^^ | demo_mode | INT+32 | 0 | | first_in | boolean | 1 | ^ dream_world_puzzle ^^^ | isDreamworldPuzzleFinish | boolean | 0 | | isDreamworldPuzzleFirstTime | boolean | 1 | | isEnteringTheDreamWorld | boolean | 1 | | isLiveActionFinishStartDream | boolean | 0 | ^ family_tree ^^^ | lamp_is_on | boolean | 0 | | lamp_pitch | FLOAT32 | 90.0 | | lamp_position | FLOAT32 | 0.5 | | lamp_yaw | FLOAT32 | 308.0 | | puzzle_solved | boolean | 0 | ^ final_puzzle ^^^ | final_puzzle_state | INT+32 | 0 | ^ final_puzzle_w4_z06_n310 ^^^ | icon01_object | INT+32 | 1 | | icon01_position | INT+32 | 0 | | icon02_object | INT+32 | 3 | | icon02_position | INT+32 | 0 | | icon03_object | INT+32 | 0 | | icon03_position | INT+32 | 2 | | icon04_object | INT+32 | 0 | | icon04_position | INT+32 | 1 | | icon05_object | INT+32 | 3 | | icon05_position | INT+32 | 1 | | icon06_object | INT+32 | 4 | | icon06_position | INT+32 | 0 | | icon07_object | INT+32 | 2 | | icon07_position | INT+32 | 0 | | icon08_object | INT+32 | 0 | | icon08_position | INT+32 | 0 | | icon09_object | INT+32 | 2 | | icon09_position | INT+32 | 1 | | icon10_object | INT+32 | 3 | | icon10_position | INT+32 | 2 | ^ final_puzzle_w4_z06_n320 ^^^ | icon01_object | INT+32 | 3 | | icon01_position | INT+32 | 3 | | icon02_object | INT+32 | 3 | | icon02_position | INT+32 | 0 | | icon03_object | INT+32 | 1 | | icon03_position | INT+32 | 1 | | icon04_object | INT+32 | 0 | | icon04_position | INT+32 | 1 | | icon05_object | INT+32 | 3 | | icon05_position | INT+32 | 1 | | icon06_object | INT+32 | 1 | | icon06_position | INT+32 | 0 | | icon07_object | INT+32 | 2 | | icon07_position | INT+32 | 0 | | icon08_object | INT+32 | 1 | | icon08_position | INT+32 | 2 | | icon09_object | INT+32 | 0 | | icon09_position | INT+32 | 0 | | icon10_object | INT+32 | 3 | | icon10_position | INT+32 | 2 | ^ fireplace_puzzle ^^^ | elevatorUp | boolean | 1 | | puzzle_solved | boolean | 0 | | square_pressed_X | INT32 | 1 | | square_pressed_Y | INT32 | 1 | ^ footstep ^^^ | dbSoundMin | FLOAT32 | -30.0 | | footstepFrequency | INT+32 | 30 | | rotationPivotAngleMax | FLOAT | 40.0 | | rotationPivotAngleMin | FLOAT | 30.0 | | rotationSpeedMaxSound | FLOAT | 100.0 | ^ game ^^^ | anim_factor1 | 11 | 0 | | anim_factor2 | 11 | 0 | | animspark_factor | FLOAT32 | 0.5 | | been_to_haven | boolean | 0 | | been_to_have_and_spire | INT+32 | 0 | | been_to_spire | boolean | 0 | | can_open_to_subnode | boolean | 1 | | can_orient_after_subnode | boolean | 1 | | can_transit | boolean | 1 | | game_finished | boolean | 0 | | has_intro_played | boolean | 0 | | last_node | CHAR8* | "none" | | last_pitch | FLOAT32 | 0.0 | | last_yaw | FLOAT32 | 0.0 | | sequenceFamilly | CHAR8* | "NULL" | | sequenceNode | INT+32 | 99999 | | sequencePlaying | CHAR8* | "NULL" | | sequencePos | INT+32 | 99999 | | sequenceVar | INT+32 | 99999 | | subtitle_time_before_fadeout | INT+32 | 8000 | | time_in_haven | INT+32 | 0 | | time_in_spire | INT+32 | 0 | ^ gate_puzzle ^^^ | gates_illusion_on | boolean | 1 | | gates_open_0 | boolean | 0 | | gates_open_1 | boolean | 0 | | gates_open_10 | boolean | 0 | | gates_open_11 | boolean | 0 | | gates_open_2 | boolean | 0 | | gates_open_3 | boolean | 0 | | gates_open_4 | boolean | 0 | | gates_open_5 | boolean | 0 | | gates_open_6 | boolean | 0 | | gates_open_7 | boolean | 0 | | gates_open_8 | boolean | 0 | | gates_open_9 | boolean | 0 | | gates_puzzle_finished | boolean | 0 | ^ hankerchief ^^^ | clicked_hand | boolean | 0 | ^ haven_puzzle_state ^^^ | m_achenar_key_done | boolean | 0 | | m_com1_done | boolean | 0 | | m_com2_done | boolean | 0 | | m_scavenger_done | boolean | 0 | | m_shipwreck_done | boolean | 0 | | m_totem_done | boolean | 0 | ^ haven_puzzle_visited ^^^ | m_achenar_key_visited | boolean | 0 | | m_com1_visited | boolean | 0 | | m_com2_visited | boolean | 0 | | m_scavenger_visited | boolean | 0 | | m_shipwreck_visited | boolean | 0 | | m_totem_visited | boolean | 0 | ^ irrigation_puzzle ^^^ | IrrigationDevice1State_var | INT+8 | 0 | | IrrigationDevice2BlockState_var | INT+8 | 1 | | IrrigationDevice2State_var | INT+8 | 4 | | IrrigationDevice3State_var | INT+8 | 1 | | IrrigationDevice4State_var | INT+8 | 1 | | irrigation_device3_chariot_state | boolean | 0 | | m_Ruisseau1State_var | boolean | 1 | | m_Ruisseau2State_var | boolean | 1 | | m_Ruisseau3State_var | boolean | 1 | | m_Ruisseau4State_var | boolean | 1 | | m_Ruisseau5State_var | boolean | 1 | | m_Ruisseau6State_var | boolean | 1 | | m_Ruisseau7State_var | boolean | 1 | | m_Ruisseau8State_var | boolean | 1 | | m_Ruisseau9State_var | boolean | 1 | ^ lightset_test ^^^ | factor1 | 11 | ? | | factor2 | 11 | ? | | factor3 | 11 | ? | ^ live_action_main_age ^^^ | cinematic_w4_z03_n020_has_played | boolean | 0 | | cinematic_w4_z03_n050_cloth_given | boolean | 0 | | cinematic_w4_z03_n050_cloth_has_played | boolean | 0 | | cinematic_w4_z03_n090_has_played | boolean | 0 | | cinematic_w4_z04_n030_has_played | boolean | 0 | | cinematic_w4_z04_n050_has_played | boolean | 0 | | cinematic_w4_z04_n090_has_played | boolean | 0 | | cinematic_w4_z05_n030_has_played | boolean | 0 | | cinematic_w4_z06_n161_has_played | boolean | 0 | | firstTimeInNode_w4_z02_n010 | boolean | 1 | | firstTimeInNode_w4_z02_n090 | boolean | 1 | | firstTimeInNode_w4_z03_n010 | boolean | 1 | | firstTimeInNode_w4_z03_n020 | boolean | 1 | | firstTimeInNode_w4_z03_n030 | boolean | 1 | | firstTimeInNode_w4_z03_n090 | boolean | 1 | | firstTimeInNode_w4_z04_n010 | boolean | 1 | | firstTimeInNode_w4_z04_n020 | boolean | 1 | | firstTimeInNode_w4_z04_n030 | boolean | 1 | | firstTimeInNode_w4_z04_n050 | boolean | 1 | | firstTimeInNode_w4_z04_n090 | boolean | 1 | | firstTimeInNode_w4_z04_n160 | boolean | 1 | | firstTimeInNode_w4_z04_n200 | boolean | 1 | | firstTimeInNode_w4_z05_n010 | boolean | 1 | | firstTimeInNode_w4_z05_n030 | boolean | 1 | | firstTimeInNode_w4_z05_n050 | boolean | 1 | | firstTimeInNode_w4_z06_n020 | boolean | 1 | | firstTimeInNode_w4_z06_n161 | boolean | 1 | | firstTimeInNode_w4_z06_n200 | boolean | 1 | | firstTimeInNode_w4_z06_n210 | boolean | 1 | | firstTimeInNode_w4_z06_n230 | boolean | 1 | | number_visits_w4_z06_n200 | INT+8 | 0 | | w4_z06_n210_manette_pulled | INT8 | -1 | | yeesha_dead | boolean | 0 | ^ live_action_tomahna ^^^ | Atrus_AsLeaveLab | boolean | 0 | | firstTime_w1_z06_n010 | boolean | 1 | | firstTime_w5_z01_n020 | boolean | 1 | | firstTime_w5_z01_n130 | boolean | 1 | | firstTime_w5_z02_n030 | boolean | 1 | | firstTime_w5_z02_n140 | boolean | 1 | | firstTime_w5_z04_n040 | boolean | 1 | | firstTime_w5_z04_n050 | boolean | 1 | | firstTime_w5_z04_n090 | boolean | 1 | | firstTime_w5_z04_n130 | boolean | 1 | | firstTime_w5_z04_n140 | boolean | 1 | | yeesha_at_vivarium | boolean | 0 | | yeesha_happy_w5_z04_n050 | boolean | 1 | | yeesha_in_garden | boolean | 0 | | yeesha_in_garden2 | boolean | 0 | | yeesha_in_study | boolean | 0 | ^ mainage_general ^^^ | is_achenar_n50 | boolean | 1 | | is_bathisphere_broken | boolean | 0 | | is_caradell_first_time_n130 | boolean | 1 | | is_caradell_130 | boolean | 0 | | is_shaman_first_time_n20 | boolean | 1 | | is_shaman_first_time_n90 | boolean | 1 | | is_shaman_first_time_z04_n020 | boolean | 1 | | is_shaman_first_time_z04_n050 | boolean | 1 | | is_shaman_first_time_z04_n090 | boolean | 1 | | is_shaman_first_time_z04_n200 | boolean | 1 | | is_shaman_hotel_n50 | boolean | 0 | | is_shaman_n10 | boolean | 1 | | is_shaman_n20 | boolean | 0 | | is_shaman_n90 | boolean | 0 | | is_shaman_z04_n020 | boolean | 0 | | is_shaman_z04_n090 | boolean | 0 | | is_test_personality_begin_n50 | boolean | 0 | | is_z04_door_open | boolean | 1 | | nextVision | INT+8 | 0 | | stenope_pos | FLOAT32 | 0.0 | | w4_z05_n040_n060_trappe_ouverte_variable | boolean | 0 | | w4_z06_n140_bridgeUp | boolean | 1 | ^ personality_test ^^^ | player_personalityLB_w1_z03_n090_Serenia | boolean | 0 | | player_personalityLB_w1_z06_n010_Haven | boolean | 0 | | player_personalityLB_w1_z06_n010_Spyre | boolean | 0 | | player_personalityLB_w2_z02_n012_Tomahna | boolean | 0 | | player_personalityLB_w3_z01_n271_Tomahna | boolean | 0 | | player_personalityLB_w4_z01_n010_Tomahna | boolean | 0 | | player_personality_Amulet | INT+32 | 0 | | player_personality_BookPage | INT+32 | 0 | | player_personality_FateLine | INT+8 | 0 | | player_personality_HeadLine | INT+8 | 0 | | player_personality_HealthLine | INT+8 | 0 | | player_personality_HeartLine | INT+8 | 0 | | player_personality_HelpMapHint | INT+32 | 0 | | player_personality_LifeLine | INT+8 | 0 | | player_personality_LinkingBook | INT+32 | 0 | | player_personality_OffspringLine | INT+8 | 0 | | player_personality_PageInJournal | INT+32 | 0 | | player_personality_PictureTaken | INT+32 | 0 | | player_personality_SaveGame | INT+32 | 0 | | player_personality_TimeInGame | INT+32 | 0 | | player_personality_ZipUsage | INT+32 | 0 | | player_personality_testDone | boolean | 0 | | player_personality_var | INT8 | 0 | | player_personality_w1_z02_n041_SeeAtrusCrystalViewer | boolean | 0 | | player_personality_w5_z01_n010_TookPhotoYeesha | boolean | 0 | | player_personality_w5_z02_n030_DoneSoundPuzzle | boolean | 0 | | player_personality_w5_z04_n050_SeeYeeshaGecko | boolean | 0 | | player_personality_w5_z04_n130_SeeYeeshaFlute | boolean | 0 | ^ power_puzzle ^^^ | clap1_open | boolean | 1 | | clap2_open | boolean | 1 | | row1_on | boolean | 1 | | row1_powerlevel | INT+8 | 9 | | row2_on | boolean | 0 | | row2_powerlevel | INT+8 | 0 | | row3_on | boolean | 0 | | row3_powerlevel | INT+8 | 0 | | row4_on | boolean | 0 | | row4_powerlevel | INT+8 | 0 | | row5_on | boolean | 1 | | row5_powerlevel | INT+8 | 6 | | row6_on | boolean | 0 | | row6_powerlevel | INT+8 | 0 | | waterwheel_button_on | boolean | 0 | | waterwheel_lever_down | boolean | 0 | ^ predator_scene ^^^ | first_time_in10 | boolean | 1 | | first_time_in60 | boolean | 1 | | leave_zone | boolean | 0 | | predator_states | INT+32 | 0 | | quit_predator | boolean | 1 | | scavenger2_states | INT+32 | 0 | | scavenger_states | INT+32 | 0 | ^ rockship_puzzle ^^^ | n070_console_is_on | boolean | 0 | | n070_firsttime | boolean | 1 | | n070_instant_power | INT8 | 0 | | n070_lever_state | INT+8 | 1 | | n070_power | INT8 | 0 | | n070_shift_counter | INT+8 | 0 | | n230_console_is_on | boolean | 0 | | n230_firsttime | boolean | 1 | | n230_instant_power | INT8 | 0 | | n230_lever_state | INT+8 | 1 | | n230_power | INT8 | 0 | | n230_shift_counter | INT+8 | 0 | | rockship_level | INT8 | 7 | | rockship_zone | INT+8 | 2 | | z04_n130_console_is_on | boolean | 0 | | z04_n130_firsttime | boolean | 1 | | z04_n130_instant_power | INT8 | 0 | | z04_n130_lever_state | INT+8 | 1 | | z04_n130_power | INT8 | 0 | | z04_n130_shift_counter | INT+8 | 0 | ^ scavenger ^^^ | is_puzzle_finish | boolean | 0 | ^ scavenger_part1 ^^^ | firstTimepuzzleGateFinish | boolean | 1 | | hammerCPPos1 | FLOAT32 | 1.0 | | hammerCPPos2 | FLOAT32 | 0.0 | | hammerKeyEnter1 | boolean | 0 | | hammerKeyEnter2 | boolean | 0 | | hammerPos1 | INT+8 | 4 | | hammerPos2 | INT+8 | 0 | | puzzleGateFinish | boolean | 0 | | sliderPos1 | INT+8 | 0 | | sliderPos2 | INT+8 | 2 | | sliderPos3 | INT+8 | 3 | ^ scavenger_part2 ^^^ | isPuzzleScavengerPart2Finish | boolean | 0 | ^ serenia_puzzle_state ^^^ | m_achenar_key_done | boolean | 0 | | m_batysphere_done | boolean | 0 | | m_dreamworld_done | boolean | 0 | | m_final1_game_done | boolean | 0 | | m_final2_game_done | boolean | 0 | | m_guides_done | boolean | 0 | | m_irrigation1_done | boolean | 0 | | m_irrigation2_done | boolean | 0 | | m_irrigation3_done | boolean | 0 | ^ serenia_puzzle_visited ^^^ | m_achenar_key_visited | boolean | 0 | | m_batysphere_visited | boolean | 0 | | m_dreamworld_visited | boolean | 0 | | m_final1_game_visited | boolean | 0 | | m_final2_game_visited | boolean | 0 | | m_guides_visited | boolean | 0 | | m_irrigation1_visited | boolean | 0 | | m_irrigation2_visited | boolean | 0 | | m_irrigation3_visited | boolean | 0 | ^ shipwreck_puzzle ^^^ | ballsbox_state | INT32 | 0 | | boxposition_state | INT32 | 0 | | bridge_state | INT32 | 0 | | elevator_ballsbox_state | INT32 | 0 | ^ sirrus_general ^^^ | elevator_state | INT+8 | 0 | | elevatorblockedUp | boolean | 0 | | linking_chamber_podium_up | boolean | 0 | | mailbox_open_in_270 | boolean | 0 | | prisondoor_opened | boolean | 0 | | w3_z03_boulon_position | FLOAT32 | 0.0 | | z02_n060_traplock | boolean | 1 | | z04_n110_blockingrock_free | boolean | 0 | ^ sirruskey_puzzle ^^^ | good_sol_ball_color_at_11 | INT+8 | 0 | | good_sol_ball_color_at_15 | INT+8 | 0 | | good_sol_ball_color_at_19 | INT+8 | 0 | | good_sol_ball_color_at_23 | INT+8 | 0 | | good_sol_ball_color_at_3 | INT+8 | 0 | | good_sol_ball_color_at_7 | INT+8 | 0 | | is_puzzle_solved | boolean | 0 | | is_sirrus_key_visited | boolean | 0 | | number_good_solutions_by_player | INT+8 | 0 | | sol0_ball_color_at_11 | INT+8 | 0 | | sol0_ball_color_at_15 | INT+8 | 0 | | sol0_ball_color_at_19 | INT+8 | 0 | | sol0_ball_color_at_23 | INT+8 | 0 | | sol0_ball_color_at_3 | INT+8 | 0 | | sol0_ball_color_at_7 | INT+8 | 0 | | sol1_ball_color_at_11 | INT+8 | 0 | | sol1_ball_color_at_15 | INT+8 | 0 | | sol1_ball_color_at_19 | INT+8 | 0 | | sol1_ball_color_at_23 | INT+8 | 0 | | sol1_ball_color_at_3 | INT+8 | 0 | | sol1_ball_color_at_7 | INT+8 | 0 | | sol2_ball_color_at_11 | INT+8 | 0 | | sol2_ball_color_at_15 | INT+8 | 0 | | sol2_ball_color_at_19 | INT+8 | 0 | | sol2_ball_color_at_23 | INT+8 | 0 | | sol2_ball_color_at_3 | INT+8 | 0 | | sol2_ball_color_at_7 | INT+8 | 0 | | sol3_ball_color_at_11 | INT+8 | 0 | | sol3_ball_color_at_15 | INT+8 | 0 | | sol3_ball_color_at_19 | INT+8 | 0 | | sol3_ball_color_at_23 | INT+8 | 0 | | sol3_ball_color_at_3 | INT+8 | 0 | | sol3_ball_color_at_7 | INT+8 | 0 | | sol4_ball_color_at_11 | INT+8 | 0 | | sol4_ball_color_at_15 | INT+8 | 0 | | sol4_ball_color_at_19 | INT+8 | 0 | | sol4_ball_color_at_23 | INT+8 | 0 | | sol4_ball_color_at_3 | INT+8 | 0 | | sol4_ball_color_at_7 | INT+8 | 0 | | sol5_ball_color_at_11 | INT+8 | 0 | | sol5_ball_color_at_15 | INT+8 | 0 | | sol5_ball_color_at_19 | INT+8 | 0 | | sol5_ball_color_at_23 | INT+8 | 0 | | sol5_ball_color_at_3 | INT+8 | 0 | | sol5_ball_color_at_7 | INT+8 | 0 | | sol6_ball_color_at_11 | INT+8 | 0 | | sol6_ball_color_at_15 | INT+8 | 0 | | sol6_ball_color_at_19 | INT+8 | 0 | | sol6_ball_color_at_23 | INT+8 | 0 | | sol6_ball_color_at_3 | INT+8 | 0 | | sol6_ball_color_at_7 | INT+8 | 0 | | sol7_ball_color_at_11 | INT+8 | 0 | | sol7_ball_color_at_15 | INT+8 | 0 | | sol7_ball_color_at_19 | INT+8 | 0 | | sol7_ball_color_at_23 | INT+8 | 0 | | sol7_ball_color_at_3 | INT+8 | 0 | | sol7_ball_color_at_7 | INT+8 | 0 | | sol8_ball_color_at_11 | INT+8 | 0 | | sol8_ball_color_at_15 | INT+8 | 0 | | sol8_ball_color_at_19 | INT+8 | 0 | | sol8_ball_color_at_23 | INT+8 | 0 | | sol8_ball_color_at_3 | INT+8 | 0 | | sol8_ball_color_at_7 | INT+8 | 0 | | sol9_ball_color_at_11 | INT+8 | 0 | | sol9_ball_color_at_15 | INT+8 | 0 | | sol9_ball_color_at_19 | INT+8 | 0 | | sol9_ball_color_at_23 | INT+8 | 0 | | sol9_ball_color_at_3 | INT+8 | 0 | | sol9_ball_color_at_7 | INT+8 | 0 | ^ sound ^^^ | air_filled | boolean | 0 | | been_to_water | boolean | 0 | | comm2_puzzle | boolean | 0 | | fly_by | boolean | 0 | | indream1 | boolean | 0 | | joyride_achenar | boolean | 0 | | joyride_sirrus | boolean | 0 | | lake1 | boolean | 1 | | lake2 | boolean | 1 | | lake3 | boolean | 1 | | lake_all_play | boolean | 0 | | music_should_play | boolean | 0 | | object_changed_state | boolean | 0 | | object_changed_state2 | boolean | 0 | | object_changed_state3 | boolean | 0 | | parasail | boolean | 0 | | personality_done | boolean | 0 | | personality_start | boolean | 0 | | rockship_firsttime | boolean | 1 | | rockship_island | boolean | 0 | | savane_away | boolean | 0 | | seen_achenar | boolean | 0 | | sirrus_done | boolean | 0 | | sirrus_on_chair | boolean | 0 | | start_jungle | boolean | 0 | | startdream | boolean | 0 | | totem_hand_up | boolean | 0 | | update_music | boolean | 0 | ^ sound_puzzle ^^^ | atrus_status | INT+32 | 0 | | first_time_amplitude | boolean | 1 | | first_time_frequency | boolean | 1 | | first_time_phase | boolean | 1 | | is_enable | boolean | 1 | | is_solved | boolean | 0 | | puzzle_status | INT+32 | 0 | | signal1_amplitude | FLOAT32 | 0.0 | | signal1_frequency | FLOAT32 | 0.0 | | signal1_phase | FLOAT32 | 0.0 | | signal2_amplitude | FLOAT32 | 0.0 | | signal2_frequency | FLOAT32 | 0.0 | | signal2_phase | FLOAT32 | 0.0 | | slider_position | FLOAT32 | 0.5 | | sound_device_force_flatlines | boolean | 1 | | sound_device_remove_power | boolean | 1 | ^ soundrail ^^^ | m_beforePlayOver | INT+32 | 45 | | m_fadeInValue | FLOAT32 | 0.05 | | m_fadeOutValue | FLOAT32 | 0.40 | | m_timeCheckDistance | INT+32 | 75 | ^ spire_puzzle_state ^^^ | m_l_conductor_done | boolean | 0 | | m_rockship_done | boolean | 0 | | m_splinter_cell_done | boolean | 0 | | m_tuning_done | boolean | 0 | ^ spire_puzzle_visited ^^^ | m_l_conductor_visited | boolean | 0 | | m_rockship_visited | boolean | 0 | | m_splinter_cell_visited | boolean | 0 | | m_tuning_visited | boolean | 0 | ^ splinter_cell_puzzle ^^^ | bac_statuette_position | boolean | 1 | | breaker_ok | boolean | 1 | | control_panel_position | boolean | 0 | | currentVertex0 | INT+8 | 0 | | currentVertex1 | INT+8 | 0 | | currentVertex2 | INT+8 | 0 | | current_frame_nara | INT+32 | 0 | | current_frame_quartz | INT+32 | 0 | | current_frame_rock | INT+32 | 0 | | current_frame_ruby | INT+32 | 0 | | elevator_w3_z06_n070_position | boolean | 1 | | last_affected_lock | INT+8 | 4 | | lock_nara_state | INT+8 | 0 | | lock_quartz_state | INT+8 | 0 | | lock_roc_state | INT+8 | 0 | | lock_ruby_state | INT+8 | 0 | | nara_state | boolean | 0 | | puzzleOver | boolean | 0 | | selecteur_position | boolean | 0 | | statue_in_nara_container | boolean | 0 | | statue_in_roc_container | boolean | 0 | ^ test ^^^ | v1 | boolean | 1 | | v2 | boolean | 0 | ^ tomahna_general ^^^ | atrus_desk_lamp_position | FLOAT32 | 0.0 | | bridge_at200 | boolean | 0 | | butterflys_out | boolean | 0 | | dome_door_open | boolean | 0 | | electricity_on | boolean | 1 | | elevator_bridge | boolean | 0 | | elevator_observatory | boolean | 1 | | elecator_state | INT+32 | 0 | | microscope_lens_state | INT+8 | 0 | | necklace_on_ground | boolean | 1 | | z01_n020_bird | boolean | 1 | | z01_n020_door_open | boolean | 0 | | z01_n020_timer_value | INT+32 | 0 | | z01_n040_door_open | boolean | 0 | | z01_n040_elevator | boolean | 0 | | z01_n040_timer_value | INT+32 | 0 | | z01_n090_book_open | boolean | 0 | | z01_n090_gecko_left | boolean | 0 | | z01_n160_gecko_left | boolean | 0 | | z01_n190_elevator | boolean | 0 | | z02_n041_atrus_played | boolean | 0 | | z02_n130_door_open | boolean | 1 | | z02_n130_timer_value | INT+32 | 0 | | z04_n120_door_open | boolean | 0 | | z04_n140_bird | boolean | 1 | | z05_n020_fire_started | boolean | 0 | | z05_n050_drawer1_open | boolean | 0 | | z05_n050_drawer2_open | boolean | 0 | | z05_n051_cur_time_start1 | INT+32 | 0 | | z05_n051_cur_time_start2 | INT+32 | 0 | | z05_n051_cur_time_stop1 | INT+32 | 0 | | z05_n051_cur_time_stop2 | INT+32 | 0 | | z05_n051_dial1_pos | FLOAT32 | 0.0 | | z05_n051_dial2_pos | FLOAT32 | 0.0 | | z05_n051_dial3_pos | FLOAT32 | 0.0 | | z05_n051_emitter_max_speed | INT+32 | 10 | | z05_n051_max_part_num | INT+32 | 100 | | z05_n060_fawcet_started | boolean | 0 | | z06_n010_sphere_pivoted | boolean | 0 | | z06_n020_door_opened | boolean | 0 | | z07_desordre | boolean | 0 | | z07_fish | INT+32 | 4 | | z07_n020_pillow_moved | boolean | 0 | | z07_n020_pillow_moved_mess | boolean | 1 | | z07_n030_boulier_up | boolean | 0 | | z09_n040_lamp_open | boolean | 0 | | z09_n060_door_open | boolean | 0 | | z09_n060_drawer_open | boolean | 0 | | z09_n060_lamp_open | boolean | 0 | | z2_ascenceur_open | boolean | 0 | | z2_n141_open | boolean | 0 | | z2_n142_open | boolean | 0 | | z2_n143_open | boolean | 0 | ^ tomahna_puzzle_state ^^^ | m_family_done | boolean | 0 | | m_fire_place_done | boolean | 0 | | m_power_done | boolean | 0 | | m_sound_done | boolean | 0 | | m_telescope_done | boolean | 0 | | m_waterwheel_done | boolean | 0 | ^ tomahna_puzzle_visited ^^^ | m_family_visited | boolean | 0 | | m_fire_place_visited | boolean | 0 | | m_power_visited | boolean | 0 | | m_sound_visited | boolean | 0 | | m_telescope_visited | boolean | 0 | | m_waterwheel_visited | boolean | 0 | ^ totem_puzzle ^^^ | is_bridge_down | boolean | 0 | | pos_bone_0 | INT+32 | 1 | | pos_bone_1 | INT+32 | 1 | | pos_bone_2 | INT+32 | 1 | | pos_bone_3 | INT+32 | 1 | | pos_bone_4 | INT+32 | 1 | ^ tuning_puzzle ^^^ | instrument_tuned | boolean | 0 | | roulette1State | INT+8 | 0 | | roulette2State | INT+8 | 0 | | roulette3State | INT+8 | 0 | ^ tutorial_device_synch ^^^ | n052_last_timer_id | INT+32 | 0 | | n052_pierre_charged | boolean | 0 | | n052_reset_delay1 | INT+32 | 0 | | n052_reset_delay2 | INT+32 | 0 | | n052_reset_delay3 | INT+32 | 0 | | n052_reset_delay4 | INT+32 | 0 | | n052_statuette_charged | INT+32 | 0 | ^ w2_z05_171 ^^^ | is_age_key_gone | boolean | 0 | | is_age_key_success | boolean | 0 | ^ w3_tutorial_device ^^^ | n104_crystal_power | FLOAT32 | 0.0 | | n104_lever_pos | INT8 | 0 | ^ w4_z05_121 ^^^ | is_age_key_gone | boolean | 0 | | is_age_key_success | boolean | 0 | ^ workshop ^^^ | lights_on | boolean | 1 | | n200_scream | boolean | 1 | | trappe_open | boolean | 0 | ^ z12 ^^^ | N200PosFruit | FLOAT32 | 0.0 | | isFruitOnFloor | boolean | 0 | | isN200ActionStart | boolean | 0 | | isN200FruitOmni | boolean | 0 | | isN200FuitOnGround | boolean | 0 | | isN200OmniLeave | boolean | 0 | | isPredFirstTime | boolean | 1 | | isScavEatingFish | boolean | 1 | | isScavFirstTime | boolean | 1 | ^ zip ^^^ | from_zip | boolean | 0 | | has_use_zip | boolean | 0 | ==== Reference ==== http://wiki.cobbs.ca/index.php/Revelation_Type_Reference