diff --git a/CMakeLists.txt b/CMakeLists.txt index 874aaaa8..cadde791 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -98,7 +98,7 @@ set(SOURCES src/LevelTable.cc src/Lobby.cc src/Loggers.cc - src/MagEvolutionTable.cc + src/MagMetadataTable.cc src/Main.cc src/Map.cc src/Menu.cc diff --git a/README.md b/README.md index db0bfc30..85a28a7b 100644 --- a/README.md +++ b/README.md @@ -87,7 +87,7 @@ Some of the more likely useful files are: * **src/ItemCreator.hh/cc**: Reverse-engineered item generator from Episodes 1&2 (used for all versions) * **src/ItemParameterTable.cc**: Format of many structures in ItemPMT.prs (see BinaryItemParameterTableT) * **src/Map.hh/cc**: Map file (.dat/.evt) structure, listing of object/enemy types and parameters, and reverse-engineered Challenge Mode random enemy generation algorithm -* **src/MagEvolutionTable.cc**: Format of ItemMagEdit.prs +* **src/MagMetadataTable.cc**: Format of ItemMagEdit.prs * **src/QuestScript.cc**: Complete listing of all quest opcodes on all versions, along with their arguments and behavior * **src/RareItemSet.hh/cc**: Format of ItemRT files (rare item drop tables) * **src/SaveFileFormats.hh**: Definitions of save file structures for all versions diff --git a/notes/ar-codes.txt b/notes/ar-codes.txt index 02042bcc..c5dc71f7 100644 --- a/notes/ar-codes.txt +++ b/notes/ar-codes.txt @@ -1130,3 +1130,7 @@ Rappy size modifier Disable HP reduction warning sound in Challenge mode 3OE1 => 04076A28 4E800020 + +Mag invincibility effect sparkliness modifier +(Default 003C; smaller values are more sparkly) +3OE1 => 801131C4 3860XXXX diff --git a/src/ItemParameterTable.hh b/src/ItemParameterTable.hh index 355e3eae..6f4c7f72 100644 --- a/src/ItemParameterTable.hh +++ b/src/ItemParameterTable.hh @@ -142,6 +142,26 @@ public: uint16_t feed_table = 0; uint8_t photon_blast = 0; uint8_t activation = 0; + // Internally, when a mag effect is about to activate, the game computes a byte with the following flags: + // 01 = HP low (causes effect in mag's on_low_hp if eligible, priority 2) + // 02 = died (causes effect in mag's on_death if eligible, priority 3) + // 04 = synchro < 30 (causes effect 5, priority 7) + // 08 = synchro > 100 (causes effect 4, priority 8) + // 10 = TODO (3OE1:80112B24) (causes effect 3, priority 6) + // 20 = player leveled up (causes effect 2, priority 5) + // 40 = PB meter filled (causes effect in mag's on_pb_full if eligible, priority 1) + // 80 = entered boss arena (causes effect in mag's on_boss if eligible, priority 4) + // Values for on_* trigger fields: + // 0 = no effect + // 1 = TODO (used internally; not synced via 6x61; possibly just cancel previous effect?) + // 2 = TODO (used internally; seems to be effect 1, but delayed by 45 frames?) + // 3 = TODO (used internally; seems to be effect 1, but delayed by 90 frames?) + // 4 = Shifta + Deband (level = (IQ / 40) + 1; delayed by 90 frames) + // 5 = TODO (used internally; seems to be effect 1, but delayed by 90 frames?) + // 6 = Resta (not synced via 6x61; level = (IQ / 40) + 1; delayed by 90 frames) + // 7 = Reverser (not synced via 6x61; delayed by 90 frames) + // 8 = invincibility (duration = (((IQ + synchro) / 3) + 40) * 30 frames, but this is capped at 30 seconds, so in + // practice it's always just 30 seconds regardless of IQ and synchro) uint8_t on_pb_full = 0; uint8_t on_low_hp = 0; uint8_t on_death = 0; diff --git a/src/Items.cc b/src/Items.cc index 26230c6b..c037421c 100644 --- a/src/Items.cc +++ b/src/Items.cc @@ -131,7 +131,7 @@ void player_use_item(std::shared_ptr c, size_t item_index, std::shared_p } else if ((primary_identifier & 0xFFFF0000) == 0x030C0000) { // Non-combo mag cells auto& mag = player->inventory.items[player->inventory.find_equipped_item(EquipSlot::MAG)]; - uint8_t evolution_number = s->mag_evolution_table(c->version())->get_evolution_number(mag.data.data1[1]); + uint8_t evolution_number = s->mag_metadata_table(c->version())->get_evolution_number(mag.data.data1[1]); if (evolution_number < 4) { switch (item.data.data1[2]) { case 0x00: // Cell of MAG 502 @@ -268,7 +268,7 @@ void apply_mag_feed_result( ItemData& mag_item, const ItemData& fed_item, std::shared_ptr item_parameter_table, - std::shared_ptr mag_evolution_table, + std::shared_ptr mag_metadata_table, uint8_t char_class, uint8_t section_id, bool version_has_rare_mags) { @@ -314,7 +314,7 @@ void apply_mag_feed_result( uint8_t mag_level = mag_item.compute_mag_level(); mag_item.data1[2] = mag_level; - uint8_t evolution_number = mag_evolution_table->get_evolution_number(mag_item.data1[1]); + uint8_t evolution_number = mag_metadata_table->get_evolution_number(mag_item.data1[1]); uint8_t mag_number = mag_item.data1[1]; // Note: Sega really did just hardcode all these rules into the client. There is no data file describing these @@ -489,7 +489,7 @@ void player_feed_mag(std::shared_ptr c, size_t mag_item_index, size_t fe player->inventory.items[mag_item_index].data, player->inventory.items[fed_item_index].data, s->item_parameter_table(c->version()), - s->mag_evolution_table(c->version()), + s->mag_metadata_table(c->version()), player->disp.visual.sh.char_class, player->disp.visual.sh.section_id, !is_v1_or_v2(c->version())); diff --git a/src/Items.hh b/src/Items.hh index 308dda02..ddc06695 100644 --- a/src/Items.hh +++ b/src/Items.hh @@ -19,7 +19,7 @@ void apply_mag_feed_result( ItemData& mag_item, const ItemData& fed_item, std::shared_ptr item_parameter_table, - std::shared_ptr mag_evolution_table, + std::shared_ptr mag_metadata_table, uint8_t char_class, uint8_t section_id, bool version_has_rare_mags); diff --git a/src/MagEvolutionTable.cc b/src/MagEvolutionTable.cc deleted file mode 100644 index b007a6d6..00000000 --- a/src/MagEvolutionTable.cc +++ /dev/null @@ -1,306 +0,0 @@ -#include "MagEvolutionTable.hh" - -#include "CommonFileFormats.hh" - -template -struct MotionReferenceTables { - // It seems that there are two definition tables, but only the first is used on any version of PSO. On v3 and later, - // the two offsets point to the same table, but on v2 they don't and the second table contains different data. - // TODO: Figure out what the deal is with the different v2 tables. - U32T ref_table; - U32T unused_ref_table; -} __packed_ws_be__(MotionReferenceTables, 0x08); - -template -struct ColorEntry { - // Colors are specified as 4 floats, each in the range [0, 1], for each color channel. The default colors are: - // alpha red green blue color (see StaticGameData.cc) - // 00 => 1.0 1.0 0.2 0.1 red - // 01 => 1.0 0.2 0.2 1.0 blue - // 02 => 1.0 1.0 0.9 0.1 yellow - // 03 => 1.0 0.1 1.0 0.1 green - // 04 => 1.0 0.8 0.1 1.0 purple - // 05 => 1.0 0.1 0.1 0.2 black - // 06 => 1.0 0.9 1.0 1.0 white - // 07 => 1.0 0.1 0.9 1.0 cyan - // 08 => 1.0 0.5 0.3 0.2 brown - // 09 => 1.0 1.0 0.4 0.0 orange (v3+) - // 0A => 1.0 0.502 0.545 0.977 light-blue (v3+) - // 0B => 1.0 0.502 0.502 0.0 olive (v3+) - // 0C => 1.0 0.0 0.941 0.714 turquoise (v3+) - // 0D => 1.0 0.8 0.098 0.392 fuchsia (v3+) - // 0E => 1.0 0.498 0.498 0.498 grey (v3+) - // 0F => 1.0 0.996 0.996 0.832 cream (v3+) - // 10 => 1.0 0.996 0.498 0.784 pink (v3+) - // 11 => 1.0 0.0 0.498 0.322 dark-green (v3+) - // If a mag's color index is invalid (>= 0x12), it is reassigned at equip time using the following logic: - // - Set base_index to player->visual.skin if player is an android, or player->visual.costume otherwise - // - If (base_index % 9) < 7 (that is, if their costume or body color is one of the colored slots on the character - // creation screen), then set the mag color to either (base_index % 9) or (base_index % 9) + 9, with equal - // probability. - // - If (base_index % 9) >= 7 (that is, if their costume or body color is one of the last two blank-colored slots - // on the character creation screen), then set the mag color to any of the available colors, chosen at random. - F32T alpha; - F32T red; - F32T green; - F32T blue; - ColorEntry(const VectorXYZTF& c) : alpha(c.t), red(c.x), green(c.y), blue(c.z) {} - operator VectorXYZTF() const { - return VectorXYZTF{this->red.load(), this->green.load(), this->blue.load(), this->alpha.load()}; - } -} __packed_ws_be__(ColorEntry, 0x10); - -template -struct UnknownA3EntryT { - uint8_t flags; - uint8_t unknown_a2; - U16T unknown_a3; - U16T unknown_a4; - U16T unknown_a5; - UnknownA3EntryT(const MagEvolutionTable::UnknownA3Entry& e) - : flags(e.flags), - unknown_a2(e.unknown_a2), - unknown_a3(e.unknown_a3), - unknown_a4(e.unknown_a4), - unknown_a5(e.unknown_a5) {} - operator MagEvolutionTable::UnknownA3Entry() const { - return MagEvolutionTable::UnknownA3Entry{ - this->flags, this->unknown_a2, this->unknown_a3, this->unknown_a4, this->unknown_a5}; - } -} __packed_ws_be__(UnknownA3EntryT, 0x08); - -struct HeaderV1 { - parray unknown_a1 = {0x0F, 0xF0, 0x00, 0x00}; - le_uint32_t unknown_a2 = 0x00000003; - le_uint16_t unknown_a3 = 0x00C8; - le_uint16_t unknown_a4 = 0x0078; - // unknown_a5 added in V2 - le_float unknown_a6 = 0.25; - le_float unknown_a7 = 0.1; - le_uint32_t unknown_a8 = 0x00000C00; -} __packed_ws__(HeaderV1, 0x18); - -template -struct HeaderV2V3V4 { - parray unknown_a1 = {0x0F, 0xF0, 0x00, 0x00}; - U32T unknown_a2 = 0x00000003; - U16T unknown_a3 = 0x00C8; - U16T unknown_a4 = 0x0078; - parray unknown_a5 = {0xC8, 0x00, 0x00, 0x00}; - F32T unknown_a6 = 0.25; - F32T unknown_a7 = 0.1; - U32T unknown_a8 = 0x00000C00; -} __packed_ws_be__(HeaderV2V3V4, 0x1C); - -// Fields: -// 112K / V1 / V2 / V3 / BB R -// 0018 / 0018 / 001C / 001C / 001C motion_tables.ref_table // -> MotionReference[NumMags] -// 0228 / 0228 / 02D4 / 001C / 001C motion_tables.unused_ref_table // -> MotionReference[NumMags] -// 0438 / 0438 / 05BC / 0340 / 0400 * motion_tables; // -> MotionReferenceTables -// 0440 / 0440 / 0594 / 0348 / 0408 * unknown_a2; // -> (uint8_t[2])[NumMags] (references into unknown_a3) -// 0498 / 0498 / 0608 / 03CE / 04AE * unknown_a3; // -> UnknownA3Entry[max(unknown_a2) + 1] -// 0510 / 0520 / 06B0 / 0476 / 0556 * unknown_a4; // -> uint8_t[NumMags] -// 053C / 054C / 06EC / 04BC / 05AC * color_table; // -> ColorEntry[NumColors] -// ---- / ---- / 077C / 05DC / 06CC * evolution_number_table; // -> uint8_t[NumMags] - -template -struct RootV1 { - U32T motion_tables; - U32T unknown_a2; - U32T unknown_a3; - U32T unknown_a4; - U32T color_table; -} __packed_ws_be__(RootV1, 0x14); - -template -struct RootV2V3V4 : RootV1 { - U32T evolution_number_table; -} __packed_ws_be__(RootV2V3V4, 0x18); - -static uint8_t get_v1_mag_evolution_number(uint8_t data1_1) { - static const std::array v1_evolution_number_table{ - /* 00 */ 0, 1, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 2, - /* 10 */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 2, 3, 4, 3, 3, - /* 20 */ 3, 4, 4, 3, 3, 3, 3, 4, 4, 4, 4, 4}; - if (data1_1 >= v1_evolution_number_table.size()) { - throw std::runtime_error("invalid mag number"); - } - return v1_evolution_number_table[data1_1]; -} - -template -class BinaryMagEvolutionTableT : public MagEvolutionTable { -public: - explicit BinaryMagEvolutionTableT(std::shared_ptr data) - : data(data), r(*data), root(&r.pget(this->r.pget_u32l(this->data->size() - 0x10))) {} - virtual ~BinaryMagEvolutionTableT() = default; - - template - const ParsedT& add_to_vector_cache(std::vector& cache, size_t base_offset, size_t index) const { - while (cache.size() <= index) { - cache.emplace_back(this->r.pget(base_offset + sizeof(RawT) * cache.size())); - } - return cache[index]; - } - - virtual size_t num_mags() const { - return NumMags; - } - - virtual size_t num_motion_entries(bool use_second_table) const { - const auto& tables = this->r.pget>(this->root->motion_tables); - return get_rel_array_count( - this->all_start_offsets(), use_second_table ? tables.unused_ref_table : tables.ref_table); - } - - virtual const MotionReference& get_motion_reference(bool use_second_table, size_t index) const { - if (index >= this->num_motion_entries(use_second_table)) { - throw std::logic_error("Invalid motion reference index"); - } - const auto& tables = this->r.pget>(this->root->motion_tables); - uint32_t array_offset = use_second_table ? tables.unused_ref_table : tables.ref_table; - return this->r.pget(array_offset + sizeof(MotionReference) * index); - } - - virtual std::pair get_unknown_a2(size_t index) const { - if (index >= this->num_mags()) { - throw std::logic_error("Invalid unknown_a2 index"); - } - uint32_t base_offset = this->root->unknown_a2 + (index * 2); - return std::make_pair(this->r.pget_u8(base_offset), this->r.pget_u8(base_offset + 1)); - } - - virtual size_t num_unknown_a3_entries() const { - return get_rel_array_count>(this->all_start_offsets(), this->root->unknown_a3); - } - - virtual const UnknownA3Entry& get_unknown_a3(size_t index) const { - if (index >= this->num_unknown_a3_entries()) { - throw std::logic_error("Invalid unknown_a2 index"); - } - return this->add_to_vector_cache>(this->unknown_a3_entries, this->root->unknown_a3, index); - } - - virtual uint8_t get_unknown_a4(size_t index) const { - if (index >= this->num_mags()) { - throw std::logic_error("Invalid unknown_a4 index"); - } - return this->r.pget_u8(this->root->unknown_a2 + index); - } - - virtual size_t num_colors() const { - return NumColors; - } - - virtual const VectorXYZTF& get_color_rgba(size_t index) const { - if (index >= NumColors) { - throw std::runtime_error("invalid mag color index"); - } - return this->add_to_vector_cache>(this->colors, this->root->color_table, index); - } - - virtual uint8_t get_evolution_number(uint8_t data1_1) const { - if (data1_1 >= this->num_mags()) { - throw std::logic_error("Invalid unknown_a4 index"); - } - if constexpr (requires { this->root->evolution_number_table; }) { - return this->r.pget_u8(this->root->evolution_number_table + data1_1); - } else { - return get_v1_mag_evolution_number(data1_1); - } - } - - const std::set& all_start_offsets() const { - if (this->start_offsets.empty()) { - this->start_offsets = all_relocation_offsets_for_rel_file(r.pgetv(0, r.size()), r.size()); - } - return this->start_offsets; - } - -protected: - std::shared_ptr data; - phosg::StringReader r; - const RootT* root; - mutable std::set start_offsets; - mutable std::vector unknown_a3_entries; - mutable std::vector colors; -}; - -class MagEvolutionTableDCNTE : public MagEvolutionTable { -public: - MagEvolutionTableDCNTE() = default; - virtual ~MagEvolutionTableDCNTE() = default; - - virtual size_t num_mags() const { - return 0x2C; - } - - virtual size_t num_motion_entries(bool) const { - return 0; - } - virtual const MotionReference& get_motion_reference(bool, size_t) const { - throw std::runtime_error("Mag tables not available on DC NTE"); - } - - virtual std::pair get_unknown_a2(size_t) const { - throw std::runtime_error("Mag tables not available on DC NTE"); - } - - virtual size_t num_unknown_a3_entries() const { - return 0; - } - virtual const UnknownA3Entry& get_unknown_a3(size_t) const { - throw std::runtime_error("Mag tables not available on DC NTE"); - } - - virtual uint8_t get_unknown_a4(size_t) const { - throw std::runtime_error("Mag tables not available on DC NTE"); - } - - virtual size_t num_colors() const { - return 0; - } - virtual const VectorXYZTF& get_color_rgba(size_t) const { - throw std::runtime_error("Mag tables not available on DC NTE"); - } - - virtual uint8_t get_evolution_number(uint8_t data1_1) const { - return get_v1_mag_evolution_number(data1_1); - } -}; - -using MagEvolutionTableDC112000 = BinaryMagEvolutionTableT, 0x28, 0x09, false>; -using MagEvolutionTableV1 = BinaryMagEvolutionTableT, 0x28, 0x09, false>; -using MagEvolutionTableV2 = BinaryMagEvolutionTableT, RootV2V3V4, 0x3A, 0x09, false>; -using MagEvolutionTableGCNTE = BinaryMagEvolutionTableT, RootV2V3V4, 0x3A, 0x09, true>; -using MagEvolutionTableGC = BinaryMagEvolutionTableT, RootV2V3V4, 0x43, 0x12, true>; -using MagEvolutionTableXB = BinaryMagEvolutionTableT, RootV2V3V4, 0x43, 0x12, false>; -using MagEvolutionTableV4 = BinaryMagEvolutionTableT, RootV2V3V4, 0x53, 0x12, false>; - -std::shared_ptr MagEvolutionTable::create( - std::shared_ptr data, Version version) { - switch (version) { - case Version::DC_NTE: - return std::make_shared(); - case Version::DC_11_2000: - return std::make_shared(data); - case Version::DC_V1: - return std::make_shared(data); - case Version::DC_V2: - case Version::PC_NTE: - case Version::PC_V2: - return std::make_shared(data); - case Version::GC_NTE: - return std::make_shared(data); - case Version::GC_V3: - case Version::GC_EP3: - case Version::GC_EP3_NTE: - return std::make_shared(data); - case Version::XB_V3: - return std::make_shared(data); - case Version::BB_V4: - return std::make_shared(data); - default: - throw std::logic_error("Cannot create mag evolution table for this version"); - } -} diff --git a/src/MagEvolutionTable.hh b/src/MagEvolutionTable.hh deleted file mode 100644 index 8a8a454c..00000000 --- a/src/MagEvolutionTable.hh +++ /dev/null @@ -1,58 +0,0 @@ -#pragma once - -#include "WindowsPlatform.hh" - -#include - -#include -#include - -#include "CommonFileFormats.hh" -#include "Text.hh" -#include "Types.hh" -#include "Version.hh" - -class MagEvolutionTable { -public: - struct MotionReference { - struct Side { - // This specifies which entry in ItemMagMotion.dat is used. The file is just a list of 0x64-byte structures. - // 0xFF = no TItemMagSub is created - uint8_t motion_table_entry = 0xFF; - parray unknown_a1 = 0; - } __packed_ws__(Side, 0x06); - parray sides; // [0] = right side, [1] = left side - } __packed_ws__(MotionReference, 0x0C); - - struct UnknownA3Entry { - uint8_t flags; - uint8_t unknown_a2; - uint16_t unknown_a3; - uint16_t unknown_a4; - uint16_t unknown_a5; - }; - - virtual ~MagEvolutionTable() = default; - - static std::shared_ptr create(std::shared_ptr data, Version version); - - virtual size_t num_mags() const = 0; - - virtual size_t num_motion_entries(bool use_second_table) const = 0; - virtual const MotionReference& get_motion_reference(bool use_second_table, size_t index) const = 0; - - virtual std::pair get_unknown_a2(size_t index) const = 0; - - virtual size_t num_unknown_a3_entries() const = 0; - virtual const UnknownA3Entry& get_unknown_a3(size_t index) const = 0; - - virtual uint8_t get_unknown_a4(size_t index) const = 0; - - virtual size_t num_colors() const = 0; - virtual const VectorXYZTF& get_color_rgba(size_t index) const = 0; - - virtual uint8_t get_evolution_number(uint8_t data1_1) const = 0; - -protected: - MagEvolutionTable() = default; -}; diff --git a/src/MagMetadataTable.cc b/src/MagMetadataTable.cc new file mode 100644 index 00000000..5236d954 --- /dev/null +++ b/src/MagMetadataTable.cc @@ -0,0 +1,580 @@ +#include "MagMetadataTable.hh" + +#include "CommonFileFormats.hh" + +MagMetadataTable::MotionReferences MagMetadataTable::MotionReferences::from_json(const phosg::JSON& json) { + auto parse_side = [](Side& side, const phosg::JSON& side_json) -> void { + side.eff_1 = side_json.at("Eff1").as_int(); + side.eff_2 = side_json.at("Eff2").as_int(); + side.eff_3 = side_json.at("Eff3").as_int(); + side.eff_4_8 = side_json.at("Eff48").as_int(); + side.eff_5 = side_json.at("Eff5").as_int(); + side.eff_6_7 = side_json.at("Eff67").as_int(); + }; + MagMetadataTable::MotionReferences ret; + parse_side(ret.sides[0], json.at("Left")); + parse_side(ret.sides[1], json.at("Right")); + return ret; +} + +phosg::JSON MagMetadataTable::MotionReferences::json() const { + auto serialize_side = [](const Side& side) -> phosg::JSON { + return phosg::JSON::dict({ + {"Eff1", side.eff_1}, + {"Eff2", side.eff_2}, + {"Eff3", side.eff_3}, + {"Eff48", side.eff_4_8}, + {"Eff5", side.eff_5}, + {"Eff67", side.eff_6_7}, + }); + }; + return phosg::JSON::dict({{"Left", serialize_side(this->sides[0])}, {"Right", serialize_side(this->sides[1])}}); +} + +MagMetadataTable::UnknownA3Entry MagMetadataTable::UnknownA3Entry::from_json(const phosg::JSON& json) { + return UnknownA3Entry{ + .flags = static_cast(json.get_int("Flags")), + .unknown_a2 = static_cast(json.get_int("UnknownA2")), + .unknown_a3 = static_cast(json.get_int("UnknownA3")), + .unknown_a4 = static_cast(json.get_int("UnknownA4")), + .unknown_a5 = static_cast(json.get_int("UnknownA5")), + }; +} + +phosg::JSON MagMetadataTable::UnknownA3Entry::json() const { + return phosg::JSON::dict({ + {"Flags", this->flags}, + {"UnknownA2", this->unknown_a2}, + {"UnknownA3", this->unknown_a3}, + {"UnknownA4", this->unknown_a4}, + {"UnknownA5", this->unknown_a5}, + }); +} + +static VectorXYZTF color_for_json(const phosg::JSON& json) { + return VectorXYZTF{ + .x = json.get_float(0), + .y = json.get_float(1), + .z = json.get_float(2), + .t = json.get_float(3), + }; +} + +static phosg::JSON json_for_color(const VectorXYZTF& color) { + return phosg::JSON::list({color.x.load(), color.y.load(), color.z.load(), color.t.load()}); +} + +template +struct MotionReferenceTables { + // It seems that there are two definition tables, but only the first is used on any version of PSO. On v3 and later, + // the two offsets point to the same table, but on v2 they don't and the second table contains different data. + // TODO: Figure out what the deal is with the different v2 tables. + U32T first_ref_table; + U32T second_ref_table; +} __packed_ws_be__(MotionReferenceTables, 0x08); + +template +struct ColorEntry { + // Colors are specified as 4 floats, each in the range [0, 1], for each color channel. The default colors are: + // alpha red green blue color (see StaticGameData.cc) + // 00 => 1.0 1.0 0.2 0.1 red + // 01 => 1.0 0.2 0.2 1.0 blue + // 02 => 1.0 1.0 0.9 0.1 yellow + // 03 => 1.0 0.1 1.0 0.1 green + // 04 => 1.0 0.8 0.1 1.0 purple + // 05 => 1.0 0.1 0.1 0.2 black + // 06 => 1.0 0.9 1.0 1.0 white + // 07 => 1.0 0.1 0.9 1.0 cyan + // 08 => 1.0 0.5 0.3 0.2 brown + // 09 => 1.0 1.0 0.4 0.0 orange (v3+) + // 0A => 1.0 0.502 0.545 0.977 light-blue (v3+) + // 0B => 1.0 0.502 0.502 0.0 olive (v3+) + // 0C => 1.0 0.0 0.941 0.714 turquoise (v3+) + // 0D => 1.0 0.8 0.098 0.392 fuchsia (v3+) + // 0E => 1.0 0.498 0.498 0.498 grey (v3+) + // 0F => 1.0 0.996 0.996 0.832 cream (v3+) + // 10 => 1.0 0.996 0.498 0.784 pink (v3+) + // 11 => 1.0 0.0 0.498 0.322 dark-green (v3+) + // If a mag's color index is invalid (>= 0x12), it is reassigned at equip time using the following logic: + // - Set base_index to player->visual.sh.skin if player is an android, or player->visual.costume otherwise + // - If (base_index % 9) < 7 (that is, if their costume or body color is one of the colored slots on the character + // creation screen), then set the mag color to either (base_index % 9) or (base_index % 9) + 9, with equal + // probability. + // - If (base_index % 9) >= 7 (that is, if their costume or body color is one of the last two blank-colored slots + // on the character creation screen), then set the mag color to any of the available colors, chosen at random. + F32T alpha; + F32T red; + F32T green; + F32T blue; + ColorEntry(const VectorXYZTF& c) : alpha(c.t), red(c.x), green(c.y), blue(c.z) {} + operator VectorXYZTF() const { + return VectorXYZTF{this->red.load(), this->green.load(), this->blue.load(), this->alpha.load()}; + } +} __packed_ws_be__(ColorEntry, 0x10); + +template +struct UnknownA3EntryT { + uint8_t flags; + uint8_t unknown_a2; + S16T unknown_a3; + S16T unknown_a4; + S16T unknown_a5; + UnknownA3EntryT(const MagMetadataTable::UnknownA3Entry& e) + : flags(e.flags), + unknown_a2(e.unknown_a2), + unknown_a3(e.unknown_a3), + unknown_a4(e.unknown_a4), + unknown_a5(e.unknown_a5) {} + operator MagMetadataTable::UnknownA3Entry() const { + return MagMetadataTable::UnknownA3Entry{ + this->flags, this->unknown_a2, this->unknown_a3, this->unknown_a4, this->unknown_a5}; + } +} __packed_ws_be__(UnknownA3EntryT, 0x08); + +class JSONMagMetadataTable : public MagMetadataTable { +public: + explicit JSONMagMetadataTable(const phosg::JSON& json) { + for (const auto& mag_json : json.at("Mags").as_list()) { + const auto& unknown_a2_json = mag_json->at("UnknownA2").as_list(); + auto& mag = this->mags.emplace_back(); + mag.first_motion_refs = MotionReferences::from_json(mag_json->at("MotionRefs1")); + mag.second_motion_refs = MotionReferences::from_json(mag_json->at("MotionRefs2")); + mag.unknown_a2 = std::make_pair(unknown_a2_json.at(0)->as_int(), unknown_a2_json.at(1)->as_int()); + mag.render_flags = mag_json->at("RenderFlags").as_int(); + mag.evolution_number = mag_json->at("EvolutionNumber").as_int(); + } + for (const auto& a3_json : json.at("UnknownA3").as_list()) { + this->unknown_a3.emplace_back(UnknownA3Entry::from_json(*a3_json)); + } + for (const auto& color_json : json.at("Colors").as_list()) { + this->colors.emplace_back(color_for_json(*color_json)); + } + } + + virtual ~JSONMagMetadataTable() = default; + + virtual size_t num_mags() const { + return this->mags.size(); + } + + virtual size_t num_motion_entries(bool) const { + return this->mags.size(); + } + virtual const MotionReferences& get_motion_references(bool use_second_table, size_t data1_1) const { + const auto& mag = this->mags.at(data1_1); + return use_second_table ? mag.second_motion_refs : mag.first_motion_refs; + } + + virtual std::pair get_unknown_a2(size_t data1_1) const { + return this->mags.at(data1_1).unknown_a2; + } + + virtual size_t num_unknown_a3_entries() const { + return this->unknown_a3.size(); + } + virtual const UnknownA3Entry& get_unknown_a3(size_t index) const { + return this->unknown_a3.at(index); + } + + virtual uint8_t get_render_flags(size_t data1_1) const { + return this->mags.at(data1_1).render_flags; + } + + virtual size_t num_colors() const { + return this->colors.size(); + } + virtual const VectorXYZTF& get_color_rgba(size_t index) const { + return this->colors.at(index); + } + + virtual uint8_t get_evolution_number(uint8_t data1_1) const { + return this->mags.at(data1_1).evolution_number; + } + +protected: + struct Mag { + MotionReferences first_motion_refs; + MotionReferences second_motion_refs; + std::pair unknown_a2 = std::make_pair(0, 0); + uint8_t render_flags = 0; + uint8_t evolution_number = 0; + }; + std::vector mags; + std::vector unknown_a3; + std::vector colors; +}; + +struct HeaderV1 { + parray unknown_a1 = {0x0F, 0xF0, 0x00, 0x00}; + le_uint32_t unknown_a2 = 0x00000003; + le_uint16_t unknown_a3 = 0x00C8; + le_uint16_t unknown_a4 = 0x0078; + // unknown_a5 added in V2 + le_float unknown_a6 = 0.25; // 3E800000 + le_float unknown_a7 = 0.099999994; // 3DCCCCCC + le_uint32_t unknown_a8 = 0x00000C00; +} __packed_ws__(HeaderV1, 0x18); + +template +struct HeaderV2V3V4 { + parray unknown_a1 = {0x0F, 0xF0, 0x00, 0x00}; + U32T unknown_a2 = 0x00000003; + U16T unknown_a3 = 0x00C8; + U16T unknown_a4 = 0x0078; + parray unknown_a5 = {0xC8, 0x00, 0x00, 0x00}; + F32T unknown_a6 = 0.25; // 3E800000 + F32T unknown_a7 = 0.099999994; // 3DCCCCCC + U32T unknown_a8 = 0x00000C00; +} __packed_ws_be__(HeaderV2V3V4, 0x1C); + +// Fields: +// 112K / V1 / V2 / V3 / BB R +// 0018 / 0018 / 001C / 001C / 001C motion_tables.first_ref_table // -> MotionReferences[NumMags] +// 0228 / 0228 / 02D4 / 001C / 001C motion_tables.second_ref_table // -> MotionReferences[NumMags] +// 0438 / 0438 / 05BC / 0340 / 0400 * motion_tables; // -> MotionReferenceTables +// 0440 / 0440 / 0594 / 0348 / 0408 * unknown_a2; // -> (uint8_t[2])[NumMags] (references into unknown_a3) +// 0498 / 0498 / 0608 / 03CE / 04AE * unknown_a3; // -> UnknownA3Entry[max(unknown_a2) + 1] +// 0510 / 0520 / 06B0 / 0476 / 0556 * render_flags; // -> uint8_t[NumMags] +// 053C / 054C / 06EC / 04BC / 05AC * color_table; // -> ColorEntry[NumColors] +// ---- / ---- / 077C / 05DC / 06CC * evolution_number_table; // -> uint8_t[NumMags] + +template +struct RootV1 { + U32T motion_tables; + U32T unknown_a2; + U32T unknown_a3; + U32T render_flags; + U32T color_table; +} __packed_ws_be__(RootV1, 0x14); + +template +struct RootV2V3V4 : RootV1 { + U32T evolution_number_table; +} __packed_ws_be__(RootV2V3V4, 0x18); + +static uint8_t get_v1_mag_evolution_number(uint8_t data1_1) { + static const std::array v1_evolution_number_table{ + /* 00 */ 0, 1, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 2, + /* 10 */ 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 2, 3, 4, 3, 3, + /* 20 */ 3, 4, 4, 3, 3, 3, 3, 4, 4, 4, 4, 4}; + if (data1_1 >= v1_evolution_number_table.size()) { + throw std::runtime_error("invalid mag number"); + } + return v1_evolution_number_table[data1_1]; +} + +template +class BinaryMagMetadataTableT : public MagMetadataTable { +public: + explicit BinaryMagMetadataTableT(std::shared_ptr data) + : data(data), r(*data), root(&r.pget(this->r.pget>(this->data->size() - 0x10))) {} + virtual ~BinaryMagMetadataTableT() = default; + + template + const ParsedT& add_to_vector_cache(std::vector& cache, size_t base_offset, size_t index) const { + while (cache.size() <= index) { + cache.emplace_back(this->r.pget(base_offset + sizeof(RawT) * cache.size())); + } + return cache[index]; + } + + virtual size_t num_mags() const { + return NumMags; + } + + virtual size_t num_motion_entries(bool use_second_table) const { + const auto& tables = this->r.pget>(this->root->motion_tables); + return get_rel_array_count( + this->all_start_offsets(), use_second_table ? tables.second_ref_table : tables.first_ref_table); + } + + virtual const MotionReferences& get_motion_references(bool use_second_table, size_t index) const { + if (index >= this->num_motion_entries(use_second_table)) { + throw std::logic_error("Invalid motion reference index"); + } + const auto& tables = this->r.pget>(this->root->motion_tables); + uint32_t array_offset = use_second_table ? tables.second_ref_table : tables.first_ref_table; + return this->r.pget(array_offset + sizeof(MotionReferences) * index); + } + + virtual std::pair get_unknown_a2(size_t index) const { + if (index >= this->num_mags()) { + throw std::logic_error("Invalid unknown_a2 index"); + } + uint32_t base_offset = this->root->unknown_a2 + (index * 2); + return std::make_pair(this->r.pget_u8(base_offset), this->r.pget_u8(base_offset + 1)); + } + + virtual size_t num_unknown_a3_entries() const { + return get_rel_array_count>(this->all_start_offsets(), this->root->unknown_a3); + } + + virtual const UnknownA3Entry& get_unknown_a3(size_t index) const { + if (index >= this->num_unknown_a3_entries()) { + throw std::logic_error("Invalid unknown_a2 index"); + } + return this->add_to_vector_cache>(this->unknown_a3_entries, this->root->unknown_a3, index); + } + + virtual uint8_t get_render_flags(size_t index) const { + if (index >= this->num_mags()) { + throw std::logic_error("Invalid render_flags index"); + } + return this->r.pget_u8(this->root->render_flags + index); + } + + virtual size_t num_colors() const { + return NumColors; + } + + virtual const VectorXYZTF& get_color_rgba(size_t index) const { + if (index >= NumColors) { + throw std::runtime_error("invalid mag color index"); + } + return this->add_to_vector_cache>(this->colors, this->root->color_table, index); + } + + virtual uint8_t get_evolution_number(uint8_t data1_1) const { + if (data1_1 >= this->num_mags()) { + throw std::logic_error("Invalid evolution_number index"); + } + if constexpr (requires { this->root->evolution_number_table; }) { + return this->r.pget_u8(this->root->evolution_number_table + data1_1); + } else { + return get_v1_mag_evolution_number(data1_1); + } + } + + const std::set& all_start_offsets() const { + if (this->start_offsets.empty()) { + this->start_offsets = all_relocation_offsets_for_rel_file(r.pgetv(0, r.size()), r.size()); + } + return this->start_offsets; + } + + static std::string serialize(const MagMetadataTable& table) { + RELFileWriter rel; + RootT root; + + rel.template put(HeaderT()); + + MotionReferenceTables motion_ref_tables; + motion_ref_tables.first_ref_table = rel.w.size(); + bool alias_motion_ref_tables = true; + for (size_t z = 0; z < table.num_motion_entries(false); z++) { + const auto& refs = table.get_motion_references(false, z); + rel.template put(refs); + if (refs != table.get_motion_references(true, z)) { + alias_motion_ref_tables = false; + } + } + + if (alias_motion_ref_tables) { + motion_ref_tables.second_ref_table = motion_ref_tables.first_ref_table; + } else { + motion_ref_tables.second_ref_table = rel.w.size(); + for (size_t z = 0; z < table.num_motion_entries(true); z++) { + rel.template put(table.get_motion_references(true, z)); + } + } + + root.motion_tables = rel.w.size(); + rel.template put>(motion_ref_tables); + rel.relocations.emplace(root.motion_tables); + rel.relocations.emplace(root.motion_tables + 4); + + root.unknown_a2 = rel.w.size(); + for (size_t z = 0; z < table.num_mags(); z++) { + auto [left, right] = table.get_unknown_a2(z); + rel.template put(left); + rel.template put(right); + } + + root.unknown_a3 = rel.w.size(); + for (size_t z = 0; z < table.num_unknown_a3_entries(); z++) { + rel.template put>(table.get_unknown_a3(z)); + } + + root.render_flags = rel.w.size(); + for (size_t z = 0; z < table.num_mags(); z++) { + rel.template put(table.get_render_flags(z)); + } + + rel.align(4); + root.color_table = rel.w.size(); + for (size_t z = 0; z < table.num_colors(); z++) { + rel.template put>(table.get_color_rgba(z)); + } + + if constexpr (requires { root.evolution_number_table; }) { + root.evolution_number_table = rel.w.size(); + for (size_t z = 0; z < table.num_mags(); z++) { + rel.template put(table.get_evolution_number(z)); + } + } + + rel.align(4); + uint32_t root_offset = rel.template put(root); + for (size_t z = 1; z <= sizeof(RootT) / 4; z++) { + rel.relocations.emplace(rel.w.size() - (z * 4)); + } + + return rel.finalize(root_offset); + } + +protected: + std::shared_ptr data; + phosg::StringReader r; + const RootT* root; + mutable std::set start_offsets; + mutable std::vector unknown_a3_entries; + mutable std::vector colors; +}; + +class MagMetadataTableDCNTE : public MagMetadataTable { +public: + MagMetadataTableDCNTE() = default; + virtual ~MagMetadataTableDCNTE() = default; + + virtual size_t num_mags() const { + return 0x2C; + } + + virtual size_t num_motion_entries(bool) const { + return 0; + } + virtual const MotionReferences& get_motion_references(bool, size_t) const { + throw std::runtime_error("Mag tables not available on DC NTE"); + } + + virtual std::pair get_unknown_a2(size_t) const { + throw std::runtime_error("Mag tables not available on DC NTE"); + } + + virtual size_t num_unknown_a3_entries() const { + return 0; + } + virtual const UnknownA3Entry& get_unknown_a3(size_t) const { + throw std::runtime_error("Mag tables not available on DC NTE"); + } + + virtual uint8_t get_render_flags(size_t) const { + throw std::runtime_error("Mag tables not available on DC NTE"); + } + + virtual size_t num_colors() const { + return 0; + } + virtual const VectorXYZTF& get_color_rgba(size_t) const { + throw std::runtime_error("Mag tables not available on DC NTE"); + } + + virtual uint8_t get_evolution_number(uint8_t data1_1) const { + return get_v1_mag_evolution_number(data1_1); + } +}; + +using MagMetadataTableDC112000 = BinaryMagMetadataTableT, 0x2C, 0x09, false>; +using MagMetadataTableV1 = BinaryMagMetadataTableT, 0x2C, 0x09, false>; +using MagMetadataTableV2 = BinaryMagMetadataTableT, RootV2V3V4, 0x3A, 0x09, false>; +using MagMetadataTableGCNTE = BinaryMagMetadataTableT, RootV2V3V4, 0x3A, 0x09, true>; +using MagMetadataTableGC = BinaryMagMetadataTableT, RootV2V3V4, 0x43, 0x12, true>; +using MagMetadataTableXB = BinaryMagMetadataTableT, RootV2V3V4, 0x43, 0x12, false>; +using MagMetadataTableV4 = BinaryMagMetadataTableT, RootV2V3V4, 0x53, 0x12, false>; + +std::shared_ptr MagMetadataTable::from_binary( + std::shared_ptr data, Version version) { + switch (version) { + case Version::DC_NTE: + return std::make_shared(); + case Version::DC_11_2000: + return std::make_shared(data); + case Version::DC_V1: + return std::make_shared(data); + case Version::DC_V2: + case Version::PC_NTE: + case Version::PC_V2: + return std::make_shared(data); + case Version::GC_NTE: + return std::make_shared(data); + case Version::GC_V3: + case Version::GC_EP3: + case Version::GC_EP3_NTE: + return std::make_shared(data); + case Version::XB_V3: + return std::make_shared(data); + case Version::BB_V4: + return std::make_shared(data); + default: + throw std::logic_error("Cannot create mag metadata table for this version"); + } +} + +std::shared_ptr MagMetadataTable::from_json(const phosg::JSON& json) { + return std::make_shared(json); +} + +phosg::JSON MagMetadataTable::json() const { + if (this->num_motion_entries(true) != this->num_motion_entries(false)) { + throw std::runtime_error("Motion entry counts differ across tables"); + } + if (this->num_motion_entries(false) != this->num_mags()) { + throw std::runtime_error(std::format("Motion entry count {} does not match mag count {}", + this->num_motion_entries(false), this->num_mags())); + } + + auto mags_json = phosg::JSON::list(); + for (size_t z = 0; z < this->num_mags(); z++) { + auto mag_json = phosg::JSON::dict(); + mag_json.emplace("MotionRefs1", this->get_motion_references(false, z).json()); + mag_json.emplace("MotionRefs2", this->get_motion_references(true, z).json()); + auto unknown_a2 = this->get_unknown_a2(z); + mag_json.emplace("UnknownA2", phosg::JSON::list({unknown_a2.first, unknown_a2.second})); + mag_json.emplace("RenderFlags", this->get_render_flags(z)); + mag_json.emplace("EvolutionNumber", this->get_evolution_number(z)); + mags_json.emplace_back(std::move(mag_json)); + } + + auto unknown_a3_json = phosg::JSON::list(); + for (size_t z = 0; z < this->num_unknown_a3_entries(); z++) { + unknown_a3_json.emplace_back(this->get_unknown_a3(z).json()); + } + + auto colors_json = phosg::JSON::list(); + for (size_t z = 0; z < this->num_colors(); z++) { + colors_json.emplace_back(json_for_color(this->get_color_rgba(z))); + } + + return phosg::JSON::dict({ + {"Mags", std::move(mags_json)}, + {"UnknownA3", std::move(unknown_a3_json)}, + {"Colors", std::move(colors_json)}, + }); +} + +std::string MagMetadataTable::serialize_binary(Version version) const { + switch (version) { + case Version::DC_NTE: + throw std::runtime_error("DC NTE does not have a an ItemMagEdit format"); + case Version::DC_11_2000: + return MagMetadataTableDC112000::serialize(*this); + case Version::DC_V1: + return MagMetadataTableV1::serialize(*this); + case Version::DC_V2: + case Version::PC_NTE: + case Version::PC_V2: + return MagMetadataTableV2::serialize(*this); + case Version::GC_NTE: + return MagMetadataTableGCNTE::serialize(*this); + case Version::GC_V3: + case Version::GC_EP3: + case Version::GC_EP3_NTE: + return MagMetadataTableGC::serialize(*this); + case Version::XB_V3: + return MagMetadataTableXB::serialize(*this); + case Version::BB_V4: + return MagMetadataTableV4::serialize(*this); + default: + throw std::logic_error("Cannot create item parameter table for this version"); + } +} diff --git a/src/MagMetadataTable.hh b/src/MagMetadataTable.hh new file mode 100644 index 00000000..44b1f358 --- /dev/null +++ b/src/MagMetadataTable.hh @@ -0,0 +1,78 @@ +#pragma once + +#include "WindowsPlatform.hh" + +#include + +#include +#include + +#include "CommonFileFormats.hh" +#include "Text.hh" +#include "Types.hh" +#include "Version.hh" + +class MagMetadataTable { +public: + struct MotionReferences { + // These entries specify which entry in ItemMagMotion.dat is used. The file is just a list of 0x64-byte structures. + // 0xFF = no TItemMagSub is created + struct Side { + uint8_t eff_1; + uint8_t eff_2; + uint8_t eff_3; + uint8_t eff_4_8; + uint8_t eff_5; + uint8_t eff_6_7; + + bool operator==(const Side&) const = default; + bool operator!=(const Side&) const = default; + } __packed_ws__(Side, 6); + parray sides; // [0] = right side, [1] = left side + + bool operator==(const MotionReferences&) const = default; + bool operator!=(const MotionReferences&) const = default; + + static MotionReferences from_json(const phosg::JSON& json); + phosg::JSON json() const; + } __packed_ws__(MotionReferences, 0x0C); + + struct UnknownA3Entry { + uint8_t flags; + uint8_t unknown_a2; + int16_t unknown_a3; + int16_t unknown_a4; + int16_t unknown_a5; + + static UnknownA3Entry from_json(const phosg::JSON& json); + phosg::JSON json() const; + }; + + virtual ~MagMetadataTable() = default; + + virtual size_t num_mags() const = 0; + + virtual size_t num_motion_entries(bool use_second_table) const = 0; + virtual const MotionReferences& get_motion_references(bool use_second_table, size_t index) const = 0; + + virtual std::pair get_unknown_a2(size_t index) const = 0; + + virtual size_t num_unknown_a3_entries() const = 0; + virtual const UnknownA3Entry& get_unknown_a3(size_t index) const = 0; + + virtual uint8_t get_render_flags(size_t index) const = 0; + + virtual size_t num_colors() const = 0; + virtual const VectorXYZTF& get_color_rgba(size_t index) const = 0; + + virtual uint8_t get_evolution_number(uint8_t data1_1) const = 0; + + static std::shared_ptr from_binary(std::shared_ptr data, Version version); + static std::shared_ptr from_json(const phosg::JSON& json); + + phosg::JSON json() const; + std::string serialize_binary(Version version) const; + +protected: + MagMetadataTable() = default; +}; diff --git a/src/Main.cc b/src/Main.cc index 8416c5cd..de8b13bc 100644 --- a/src/Main.cc +++ b/src/Main.cc @@ -2396,6 +2396,41 @@ Action a_encode_item_parameter_table( write_output_data(args, data, nullptr); }); +Action a_decode_mag_metadata_table( + "decode-mag-metadata-table", "\ + decode-mag-metadata-table [INPUT-FILENAME [OUTPUT-FILENAME]] [OPTIONS...]\n\ + Converts an ItemMagEdit file into a JSON mag metadata file. A version\n\ + option is required. Expects compressed input (a .prs file) by default; use\n\ + --decompressed if the input is not compressed.\n", + +[](phosg::Arguments& args) { + auto input_data = read_input_data(args); + if (!args.get("decompressed")) { + input_data = prs_decompress(input_data); + } + auto data = std::make_shared(std::move(input_data)); + auto table = MagMetadataTable::from_binary(data, get_cli_version(args, Version::BB_V4)); + auto json = table->json(); + auto serialized = json.serialize(phosg::JSON::SerializeOption::FORMAT | phosg::JSON::SerializeOption::SORT_DICT_KEYS); + write_output_data(args, serialized, nullptr); + }); + +Action a_encode_mag_metadata_table( + "encode-mag-metadata-table", "\ + encode-mag-metadata-table [INPUT-FILENAME [OUTPUT-FILENAME]] [OPTIONS...]\n\ + Converts a JSON mag metadata file into an ItemMagEdit file compatible with\n\ + the game client. A version option is required. By default the output will\n\ + be compressed, as the client expects; use --decompressed to get\n\ + uncompressed output.\n", + +[](phosg::Arguments& args) { + auto json = phosg::JSON::parse(read_input_data(args)); + auto table = MagMetadataTable::from_json(json); + std::string data = table->serialize_binary(get_cli_version(args, Version::BB_V4)); + if (!args.get("decompressed")) { + data = prs_compress_optimal(data); + } + write_output_data(args, data, nullptr); + }); + Action a_decode_level_table( "decode-level-table", nullptr, +[](phosg::Arguments& args) { diff --git a/src/ServerState.cc b/src/ServerState.cc index 74c97c6f..c9e03e29 100644 --- a/src/ServerState.cc +++ b/src/ServerState.cc @@ -489,15 +489,19 @@ std::shared_ptr ServerState::item_parameter_table_for_ return this->item_parameter_table(is_v1(version) ? Version::PC_V2 : version); } -std::shared_ptr ServerState::mag_evolution_table(Version version) const { - if (is_v1(version)) { - return this->mag_evolution_table_v1; +std::shared_ptr ServerState::mag_metadata_table(Version version) const { + if (version == Version::DC_NTE) { + return this->mag_metadata_table_dc_nte; + } else if (version == Version::DC_11_2000) { + return this->mag_metadata_table_dc_11_2000; + } else if (is_v1(version)) { + return this->mag_metadata_table_v1; } else if (is_v2(version)) { - return this->mag_evolution_table_v2; + return this->mag_metadata_table_v2; } else if (!is_v4(version)) { - return this->mag_evolution_table_v3; + return this->mag_metadata_table_v3; } else { - return this->mag_evolution_table_v4; + return this->mag_metadata_table_v4; } } @@ -2156,25 +2160,32 @@ void ServerState::load_item_definitions() { auto json = phosg::JSON::parse(phosg::load_file("system/tables/translation-table.json")); auto new_item_translation_table = std::make_shared(json, new_item_parameter_tables); - config_log.info_f("Loading v1 mag evolution table"); - auto mag_data_v1 = std::make_shared(prs_decompress(phosg::load_file("system/tables/ItemMagEdit-dc-v1.prs"))); - auto new_table_v1 = MagEvolutionTable::create(mag_data_v1, Version::DC_V1); - config_log.info_f("Loading v2 mag evolution table"); - auto mag_data_v2 = std::make_shared(prs_decompress(phosg::load_file("system/tables/ItemMagEdit-dc-v2.prs"))); - auto new_table_v2 = MagEvolutionTable::create(mag_data_v2, Version::DC_V2); - config_log.info_f("Loading v3 mag evolution table"); - auto mag_data_v3 = std::make_shared(prs_decompress(phosg::load_file("system/tables/ItemMagEdit-xb-v3.prs"))); - auto new_table_v3 = MagEvolutionTable::create(mag_data_v3, Version::XB_V3); - config_log.info_f("Loading v4 mag evolution table"); - auto mag_data_v4 = std::make_shared(prs_decompress(phosg::load_file("system/tables/ItemMagEdit-bb-v4.prs"))); - auto new_table_v4 = MagEvolutionTable::create(mag_data_v4, Version::BB_V4); + config_log.info_f("Creating DC NTE mag metadata table"); + auto new_table_dc_nte = MagMetadataTable::from_binary(nullptr, Version::DC_NTE); + config_log.info_f("Loading DC 11/2000 mag metadata table"); + auto new_table_11_2000 = MagMetadataTable::from_json(phosg::JSON::parse(phosg::load_file( + "system/tables/mag-metadata-table-dc-11-2000.json"))); + config_log.info_f("Loading v1 mag metadata table"); + auto new_table_v1 = MagMetadataTable::from_json(phosg::JSON::parse(phosg::load_file( + "system/tables/mag-metadata-table-v1.json"))); + config_log.info_f("Loading v2 mag metadata table"); + auto new_table_v2 = MagMetadataTable::from_json(phosg::JSON::parse(phosg::load_file( + "system/tables/mag-metadata-table-v2.json"))); + config_log.info_f("Loading v3 mag metadata table"); + auto new_table_v3 = MagMetadataTable::from_json(phosg::JSON::parse(phosg::load_file( + "system/tables/mag-metadata-table-v3.json"))); + config_log.info_f("Loading v4 mag metadata table"); + auto new_table_v4 = MagMetadataTable::from_json(phosg::JSON::parse(phosg::load_file( + "system/tables/mag-metadata-table-v4.json"))); this->item_parameter_tables = std::move(new_item_parameter_tables); this->item_translation_table = std::move(new_item_translation_table); - this->mag_evolution_table_v1 = std::move(new_table_v1); - this->mag_evolution_table_v2 = std::move(new_table_v2); - this->mag_evolution_table_v3 = std::move(new_table_v3); - this->mag_evolution_table_v4 = std::move(new_table_v4); + this->mag_metadata_table_dc_nte = std::move(new_table_dc_nte); + this->mag_metadata_table_dc_11_2000 = std::move(new_table_11_2000); + this->mag_metadata_table_v1 = std::move(new_table_v1); + this->mag_metadata_table_v2 = std::move(new_table_v2); + this->mag_metadata_table_v3 = std::move(new_table_v3); + this->mag_metadata_table_v4 = std::move(new_table_v4); } void ServerState::load_ep3_cards() { @@ -2230,20 +2241,13 @@ void ServerState::generate_bb_stream_file() { config_log.info_f("Generating BB stream file"); auto sf = std::make_shared(); - auto add_file = [&](const std::string& filename, const void* data = nullptr, size_t size = 0) -> void { + auto add_file = [&](const std::string& filename, const void* data, size_t size) -> void { auto& e = sf->entries.emplace_back(); e.offset = sf->data.size(); e.filename = filename; - if (!data) { - std::string file_data = phosg::load_file("system/blueburst/" + filename); - e.size = file_data.size(); - e.checksum = phosg::crc32(file_data.data(), file_data.size()); - sf->data += file_data; - } else { - e.size = size; - e.checksum = phosg::crc32(data, size); - sf->data.append(reinterpret_cast(data), size); - } + e.size = size; + e.checksum = phosg::crc32(data, size); + sf->data.append(reinterpret_cast(data), size); config_log.debug_f( "[BBStreamFile] Added file {} at offset {:08X} ({:08X} bytes) with checksum {:08X}; total size is now {:08X}", filename, e.offset, e.size, e.checksum, sf->data.size()); @@ -2251,6 +2255,7 @@ void ServerState::generate_bb_stream_file() { auto level_table_data = prs_compress_optimal(this->level_table_v4->serialize_binary_v4()); auto pmt_data = prs_compress_optimal(this->item_parameter_table(Version::BB_V4)->serialize_binary(Version::BB_V4)); + auto mag_data = prs_compress_optimal(this->mag_metadata_table(Version::BB_V4)->serialize_binary(Version::BB_V4)); const auto& bps = *this->battle_params; add_file("BattleParamEntry.dat", &bps.get_table(true, Episode::EP1), sizeof(BattleParamsIndex::Table)); @@ -2260,7 +2265,7 @@ void ServerState::generate_bb_stream_file() { add_file("BattleParamEntry_lab_on.dat", &bps.get_table(false, Episode::EP2), sizeof(BattleParamsIndex::Table)); add_file("BattleParamEntry_ep4_on.dat", &bps.get_table(false, Episode::EP4), sizeof(BattleParamsIndex::Table)); add_file("PlyLevelTbl.prs", level_table_data.data(), level_table_data.size()); - add_file("ItemMagEdit.prs"); + add_file("ItemMagEdit.prs", mag_data.data(), mag_data.size()); add_file("ItemPMT.prs", pmt_data.data(), pmt_data.size()); this->bb_stream_file = sf; diff --git a/src/ServerState.hh b/src/ServerState.hh index 6df13a72..3dabb2e1 100644 --- a/src/ServerState.hh +++ b/src/ServerState.hh @@ -24,7 +24,7 @@ #include "ItemTranslationTable.hh" #include "LevelTable.hh" #include "Lobby.hh" -#include "MagEvolutionTable.hh" +#include "MagMetadataTable.hh" #include "Menu.hh" #include "Quest.hh" #include "TeamIndex.hh" @@ -221,10 +221,12 @@ struct ServerState : public std::enable_shared_from_this { std::array, NUM_VERSIONS> item_stack_limits_tables; size_t bb_max_bank_items = 200; size_t bb_max_bank_meseta = 999999; - std::shared_ptr mag_evolution_table_v1; - std::shared_ptr mag_evolution_table_v2; - std::shared_ptr mag_evolution_table_v3; - std::shared_ptr mag_evolution_table_v4; + std::shared_ptr mag_metadata_table_dc_nte; + std::shared_ptr mag_metadata_table_dc_11_2000; + std::shared_ptr mag_metadata_table_v1; + std::shared_ptr mag_metadata_table_v2; + std::shared_ptr mag_metadata_table_v3; + std::shared_ptr mag_metadata_table_v4; std::shared_ptr text_index; std::array, NUM_VERSIONS> item_name_indexes; std::shared_ptr word_select_table; @@ -371,7 +373,7 @@ struct ServerState : public std::enable_shared_from_this { std::shared_ptr level_table(Version version) const; std::shared_ptr item_parameter_table(Version version) const; std::shared_ptr item_parameter_table_for_encode(Version version) const; - std::shared_ptr mag_evolution_table(Version version) const; + std::shared_ptr mag_metadata_table(Version version) const; std::shared_ptr item_stack_limits(Version version) const; std::shared_ptr item_name_index_opt(Version version) const; // Returns null if missing std::shared_ptr item_name_index(Version version) const; // Throws if missing diff --git a/system/blueburst/ItemMagEdit.prs b/system/blueburst/ItemMagEdit.prs deleted file mode 120000 index cd864f3d..00000000 --- a/system/blueburst/ItemMagEdit.prs +++ /dev/null @@ -1 +0,0 @@ -../tables/ItemMagEdit-bb-v4.prs \ No newline at end of file diff --git a/system/tables/ItemMagEdit-bb-v4.prs b/system/tables/ItemMagEdit-bb-v4.prs deleted file mode 100644 index fb63980a..00000000 Binary files a/system/tables/ItemMagEdit-bb-v4.prs and /dev/null differ diff --git a/system/tables/ItemMagEdit-dc-11-2000.prs b/system/tables/ItemMagEdit-dc-11-2000.prs deleted file mode 100644 index 71995612..00000000 Binary files a/system/tables/ItemMagEdit-dc-11-2000.prs and /dev/null differ diff --git a/system/tables/ItemMagEdit-dc-v1.prs b/system/tables/ItemMagEdit-dc-v1.prs deleted file mode 100644 index b94de46e..00000000 Binary files a/system/tables/ItemMagEdit-dc-v1.prs and /dev/null differ diff --git a/system/tables/ItemMagEdit-dc-v2.prs b/system/tables/ItemMagEdit-dc-v2.prs deleted file mode 120000 index 84d5c062..00000000 --- a/system/tables/ItemMagEdit-dc-v2.prs +++ /dev/null @@ -1 +0,0 @@ -ItemMagEdit-pc-v2.prs \ No newline at end of file diff --git a/system/tables/ItemMagEdit-gc-ep3-nte.prs b/system/tables/ItemMagEdit-gc-ep3-nte.prs deleted file mode 120000 index 80054eb8..00000000 --- a/system/tables/ItemMagEdit-gc-ep3-nte.prs +++ /dev/null @@ -1 +0,0 @@ -ItemMagEdit-gc-v3.prs \ No newline at end of file diff --git a/system/tables/ItemMagEdit-gc-ep3.prs b/system/tables/ItemMagEdit-gc-ep3.prs deleted file mode 120000 index 80054eb8..00000000 --- a/system/tables/ItemMagEdit-gc-ep3.prs +++ /dev/null @@ -1 +0,0 @@ -ItemMagEdit-gc-v3.prs \ No newline at end of file diff --git a/system/tables/ItemMagEdit-gc-nte.prs b/system/tables/ItemMagEdit-gc-nte.prs deleted file mode 100644 index fbeb4c75..00000000 Binary files a/system/tables/ItemMagEdit-gc-nte.prs and /dev/null differ diff --git a/system/tables/ItemMagEdit-gc-v3.prs b/system/tables/ItemMagEdit-gc-v3.prs deleted file mode 100644 index b71efbe8..00000000 Binary files a/system/tables/ItemMagEdit-gc-v3.prs and /dev/null differ diff --git a/system/tables/ItemMagEdit-pc-nte.prs b/system/tables/ItemMagEdit-pc-nte.prs deleted file mode 120000 index 84d5c062..00000000 --- a/system/tables/ItemMagEdit-pc-nte.prs +++ /dev/null @@ -1 +0,0 @@ -ItemMagEdit-pc-v2.prs \ No newline at end of file diff --git a/system/tables/ItemMagEdit-pc-v2.prs b/system/tables/ItemMagEdit-pc-v2.prs deleted file mode 100644 index 24a28fd1..00000000 Binary files a/system/tables/ItemMagEdit-pc-v2.prs and /dev/null differ diff --git a/system/tables/ItemMagEdit-xb-v3.prs b/system/tables/ItemMagEdit-xb-v3.prs deleted file mode 100644 index 13e844d2..00000000 Binary files a/system/tables/ItemMagEdit-xb-v3.prs and /dev/null differ diff --git a/system/tables/mag-metadata-table-dc-11-2000.json b/system/tables/mag-metadata-table-dc-11-2000.json new file mode 100644 index 00000000..c6c5d75f --- /dev/null +++ b/system/tables/mag-metadata-table-dc-11-2000.json @@ -0,0 +1,604 @@ +{ + "Colors": [ + [1.0, 0.19999998807907104, 0.099999994039535522, 1.0], + [0.19999998807907104, 0.19999998807907104, 1.0, 1.0], + [1.0, 0.89999997615814209, 0.099999994039535522, 1.0], + [0.099999994039535522, 1.0, 0.099999994039535522, 1.0], + [0.79999995231628418, 0.099999994039535522, 1.0, 1.0], + [0.099999994039535522, 0.099999994039535522, 0.19999998807907104, 1.0], + [0.89999997615814209, 1.0, 1.0, 1.0], + [0.099999994039535522, 0.89999997615814209, 1.0, 1.0], + [0.5, 0.29999998211860657, 0.19999998807907104, 1.0] + ], + "Mags": [ + { + "EvolutionNumber": 0, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 10, "Eff2": 10, "Eff3": 10, "Eff48": 10, "Eff5": 10, "Eff67": 10} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 10, "Eff2": 10, "Eff3": 10, "Eff48": 10, "Eff5": 10, "Eff67": 10} + }, + "RenderFlags": 0, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 1, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 4, "Eff48": 4, "Eff5": 4, "Eff67": 4} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 4, "Eff48": 4, "Eff5": 4, "Eff67": 4} + }, + "RenderFlags": 2, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 2, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 2, "Eff2": 2, "Eff3": 2, "Eff48": 2, "Eff5": 2, "Eff67": 2} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 2, "Eff2": 2, "Eff3": 2, "Eff48": 2, "Eff5": 2, "Eff67": 2} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 2, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 14, "Eff2": 14, "Eff3": 14, "Eff48": 14, "Eff5": 14, "Eff67": 14} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 14, "Eff2": 14, "Eff3": 14, "Eff48": 14, "Eff5": 14, "Eff67": 14} + }, + "RenderFlags": 2, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 7, "Eff2": 7, "Eff3": 7, "Eff48": 42, "Eff5": 7, "Eff67": 42}, + "Right": {"Eff1": 6, "Eff2": 6, "Eff3": 6, "Eff48": 41, "Eff5": 6, "Eff67": 41} + }, + "MotionRefs2": { + "Left": {"Eff1": 7, "Eff2": 7, "Eff3": 7, "Eff48": 7, "Eff5": 7, "Eff67": 7}, + "Right": {"Eff1": 6, "Eff2": 6, "Eff3": 6, "Eff48": 6, "Eff5": 6, "Eff67": 6} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 0, "Eff2": 0, "Eff3": 0, "Eff48": 43, "Eff5": 0, "Eff67": 43}, + "Right": {"Eff1": 1, "Eff2": 1, "Eff3": 1, "Eff48": 44, "Eff5": 1, "Eff67": 44} + }, + "MotionRefs2": { + "Left": {"Eff1": 0, "Eff2": 0, "Eff3": 0, "Eff48": 0, "Eff5": 0, "Eff67": 0}, + "Right": {"Eff1": 1, "Eff2": 1, "Eff3": 1, "Eff48": 1, "Eff5": 1, "Eff67": 1} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 30, "Eff2": 30, "Eff3": 30, "Eff48": 49, "Eff5": 30, "Eff67": 49}, + "Right": {"Eff1": 29, "Eff2": 29, "Eff3": 29, "Eff48": 48, "Eff5": 29, "Eff67": 48} + }, + "MotionRefs2": { + "Left": {"Eff1": 30, "Eff2": 30, "Eff3": 30, "Eff48": 49, "Eff5": 30, "Eff67": 49}, + "Right": {"Eff1": 29, "Eff2": 29, "Eff3": 29, "Eff48": 48, "Eff5": 29, "Eff67": 48} + }, + "RenderFlags": 2, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 32, "Eff2": 32, "Eff3": 32, "Eff48": 32, "Eff5": 32, "Eff67": 32}, + "Right": {"Eff1": 31, "Eff2": 31, "Eff3": 31, "Eff48": 31, "Eff5": 31, "Eff67": 31} + }, + "MotionRefs2": { + "Left": {"Eff1": 32, "Eff2": 32, "Eff3": 32, "Eff48": 32, "Eff5": 32, "Eff67": 32}, + "Right": {"Eff1": 31, "Eff2": 31, "Eff3": 31, "Eff48": 31, "Eff5": 31, "Eff67": 31} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 3, "Eff5": 3, "Eff67": 3} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 3, "Eff5": 3, "Eff67": 3} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 26, "Eff2": 26, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 26, "Eff2": 11, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [6, 7] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 28, "Eff2": 28, "Eff3": 28, "Eff48": 51, "Eff5": 28, "Eff67": 51}, + "Right": {"Eff1": 27, "Eff2": 27, "Eff3": 27, "Eff48": 50, "Eff5": 27, "Eff67": 50} + }, + "MotionRefs2": { + "Left": {"Eff1": 28, "Eff2": 28, "Eff3": 28, "Eff48": 51, "Eff5": 28, "Eff67": 51}, + "Right": {"Eff1": 27, "Eff2": 27, "Eff3": 27, "Eff48": 50, "Eff5": 27, "Eff67": 50} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 16, "Eff2": 16, "Eff3": 16, "Eff48": 16, "Eff5": 16, "Eff67": 16}, + "Right": {"Eff1": 15, "Eff2": 15, "Eff3": 15, "Eff48": 15, "Eff5": 15, "Eff67": 15} + }, + "MotionRefs2": { + "Left": {"Eff1": 16, "Eff2": 16, "Eff3": 16, "Eff48": 16, "Eff5": 16, "Eff67": 16}, + "Right": {"Eff1": 15, "Eff2": 15, "Eff3": 15, "Eff48": 15, "Eff5": 15, "Eff67": 15} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 18, "Eff2": 18, "Eff3": 18, "Eff48": 18, "Eff5": 18, "Eff67": 18}, + "Right": {"Eff1": 17, "Eff2": 17, "Eff3": 17, "Eff48": 17, "Eff5": 17, "Eff67": 17} + }, + "MotionRefs2": { + "Left": {"Eff1": 18, "Eff2": 18, "Eff3": 18, "Eff48": 18, "Eff5": 18, "Eff67": 18}, + "Right": {"Eff1": 17, "Eff2": 17, "Eff3": 17, "Eff48": 17, "Eff5": 17, "Eff67": 17} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 1, + "MotionRefs1": { + "Left": {"Eff1": 35, "Eff2": 35, "Eff3": 35, "Eff48": 35, "Eff5": 35, "Eff67": 35}, + "Right": {"Eff1": 36, "Eff2": 36, "Eff3": 36, "Eff48": 36, "Eff5": 36, "Eff67": 36} + }, + "MotionRefs2": { + "Left": {"Eff1": 35, "Eff2": 35, "Eff3": 35, "Eff48": 35, "Eff5": 35, "Eff67": 35}, + "Right": {"Eff1": 36, "Eff2": 36, "Eff3": 36, "Eff48": 36, "Eff5": 36, "Eff67": 36} + }, + "RenderFlags": 0, + "UnknownA2": [0, 255] + }, + { + "EvolutionNumber": 2, + "MotionRefs1": { + "Left": {"Eff1": 34, "Eff2": 34, "Eff3": 34, "Eff48": 34, "Eff5": 34, "Eff67": 34}, + "Right": {"Eff1": 33, "Eff2": 33, "Eff3": 33, "Eff48": 33, "Eff5": 33, "Eff67": 33} + }, + "MotionRefs2": { + "Left": {"Eff1": 34, "Eff2": 34, "Eff3": 34, "Eff48": 34, "Eff5": 34, "Eff67": 34}, + "Right": {"Eff1": 33, "Eff2": 33, "Eff3": 33, "Eff48": 33, "Eff5": 33, "Eff67": 33} + }, + "RenderFlags": 0, + "UnknownA2": [0, 255] + }, + { + "EvolutionNumber": 2, + "MotionRefs1": { + "Left": {"Eff1": 34, "Eff2": 34, "Eff3": 34, "Eff48": 34, "Eff5": 34, "Eff67": 34}, + "Right": {"Eff1": 33, "Eff2": 33, "Eff3": 33, "Eff48": 33, "Eff5": 33, "Eff67": 33} + }, + "MotionRefs2": { + "Left": {"Eff1": 34, "Eff2": 34, "Eff3": 34, "Eff48": 34, "Eff5": 34, "Eff67": 34}, + "Right": {"Eff1": 33, "Eff2": 33, "Eff3": 33, "Eff48": 33, "Eff5": 33, "Eff67": 33} + }, + "RenderFlags": 1, + "UnknownA2": [0, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 7, "Eff2": 7, "Eff3": 7, "Eff48": 42, "Eff5": 7, "Eff67": 42}, + "Right": {"Eff1": 6, "Eff2": 6, "Eff3": 6, "Eff48": 41, "Eff5": 6, "Eff67": 41} + }, + "MotionRefs2": { + "Left": {"Eff1": 7, "Eff2": 7, "Eff3": 7, "Eff48": 7, "Eff5": 7, "Eff67": 7}, + "Right": {"Eff1": 6, "Eff2": 6, "Eff3": 6, "Eff48": 6, "Eff5": 6, "Eff67": 6} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 9, "Eff2": 9, "Eff3": 9, "Eff48": 9, "Eff5": 9, "Eff67": 9}, + "Right": {"Eff1": 8, "Eff2": 8, "Eff3": 8, "Eff48": 8, "Eff5": 8, "Eff67": 8} + }, + "MotionRefs2": { + "Left": {"Eff1": 9, "Eff2": 9, "Eff3": 9, "Eff48": 9, "Eff5": 9, "Eff67": 9}, + "Right": {"Eff1": 8, "Eff2": 8, "Eff3": 8, "Eff48": 8, "Eff5": 8, "Eff67": 8} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 40, "Eff2": 40, "Eff3": 40, "Eff48": 46, "Eff5": 40, "Eff67": 46}, + "Right": {"Eff1": 39, "Eff2": 39, "Eff3": 39, "Eff48": 45, "Eff5": 39, "Eff67": 45} + }, + "MotionRefs2": { + "Left": {"Eff1": 0, "Eff2": 0, "Eff3": 0, "Eff48": 0, "Eff5": 0, "Eff67": 0}, + "Right": {"Eff1": 1, "Eff2": 1, "Eff3": 1, "Eff48": 1, "Eff5": 1, "Eff67": 1} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 20, "Eff2": 20, "Eff3": 20, "Eff48": 20, "Eff5": 20, "Eff67": 20}, + "Right": {"Eff1": 19, "Eff2": 19, "Eff3": 19, "Eff48": 19, "Eff5": 19, "Eff67": 19} + }, + "MotionRefs2": { + "Left": {"Eff1": 20, "Eff2": 20, "Eff3": 20, "Eff48": 20, "Eff5": 20, "Eff67": 20}, + "Right": {"Eff1": 19, "Eff2": 19, "Eff3": 19, "Eff48": 19, "Eff5": 19, "Eff67": 19} + }, + "RenderFlags": 0, + "UnknownA2": [1, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 23, "Eff2": 23, "Eff3": 23, "Eff48": 53, "Eff5": 23, "Eff67": 53}, + "Right": {"Eff1": 22, "Eff2": 22, "Eff3": 22, "Eff48": 52, "Eff5": 22, "Eff67": 52} + }, + "MotionRefs2": { + "Left": {"Eff1": 23, "Eff2": 23, "Eff3": 23, "Eff48": 53, "Eff5": 23, "Eff67": 53}, + "Right": {"Eff1": 22, "Eff2": 22, "Eff3": 22, "Eff48": 52, "Eff5": 22, "Eff67": 52} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 23, "Eff2": 23, "Eff3": 23, "Eff48": 53, "Eff5": 23, "Eff67": 53}, + "Right": {"Eff1": 22, "Eff2": 22, "Eff3": 22, "Eff48": 52, "Eff5": 22, "Eff67": 52} + }, + "MotionRefs2": { + "Left": {"Eff1": 23, "Eff2": 23, "Eff3": 23, "Eff48": 53, "Eff5": 23, "Eff67": 53}, + "Right": {"Eff1": 22, "Eff2": 22, "Eff3": 22, "Eff48": 52, "Eff5": 22, "Eff67": 52} + }, + "RenderFlags": 2, + "UnknownA2": [2, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 25, "Eff2": 25, "Eff3": 25, "Eff48": 56, "Eff5": 25, "Eff67": 56}, + "Right": {"Eff1": 24, "Eff2": 24, "Eff3": 24, "Eff48": 55, "Eff5": 24, "Eff67": 55} + }, + "MotionRefs2": { + "Left": {"Eff1": 25, "Eff2": 25, "Eff3": 25, "Eff48": 56, "Eff5": 25, "Eff67": 56}, + "Right": {"Eff1": 24, "Eff2": 24, "Eff3": 24, "Eff48": 55, "Eff5": 24, "Eff67": 55} + }, + "RenderFlags": 2, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 20, "Eff2": 20, "Eff3": 20, "Eff48": 58, "Eff5": 20, "Eff67": 58}, + "Right": {"Eff1": 19, "Eff2": 19, "Eff3": 19, "Eff48": 57, "Eff5": 19, "Eff67": 57} + }, + "MotionRefs2": { + "Left": {"Eff1": 20, "Eff2": 20, "Eff3": 20, "Eff48": 58, "Eff5": 20, "Eff67": 58}, + "Right": {"Eff1": 19, "Eff2": 19, "Eff3": 19, "Eff48": 57, "Eff5": 19, "Eff67": 57} + }, + "RenderFlags": 2, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 21, "Eff2": 21, "Eff3": 21, "Eff48": 54, "Eff5": 21, "Eff67": 54} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 21, "Eff2": 21, "Eff3": 21, "Eff48": 21, "Eff5": 21, "Eff67": 21} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 1, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 2, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 2, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 2, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47} + }, + "RenderFlags": 6, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 2, + "UnknownA2": [8, 9] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 2, + "UnknownA2": [10, 11] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 38, "Eff2": 38, "Eff3": 38, "Eff48": 38, "Eff5": 38, "Eff67": 38} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 38, "Eff2": 38, "Eff3": 38, "Eff48": 38, "Eff5": 38, "Eff67": 38} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47} + }, + "RenderFlags": 3, + "UnknownA2": [3, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [12, 13] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 2, + "UnknownA2": [14, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [12, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 2, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + } + ], + "UnknownA3": [ + {"Flags": 33, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 20}, + {"Flags": 130, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 20}, + {"Flags": 129, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 24}, + {"Flags": 34, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 20}, + {"Flags": 67, "UnknownA2": 255, "UnknownA3": 0, "UnknownA4": -45, "UnknownA5": -15}, + {"Flags": 131, "UnknownA2": 255, "UnknownA3": 0, "UnknownA4": -45, "UnknownA5": -15}, + {"Flags": 34, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": -20, "UnknownA5": 0}, + {"Flags": 35, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": -20, "UnknownA5": 0}, + {"Flags": 65, "UnknownA2": 15, "UnknownA3": 0, "UnknownA4": -60, "UnknownA5": 0}, + {"Flags": 68, "UnknownA2": 15, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 60}, + {"Flags": 65, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": -40, "UnknownA5": 0}, + {"Flags": 68, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 40}, + {"Flags": 34, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 16}, + {"Flags": 35, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 30}, + {"Flags": 33, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 16} + ] +} \ No newline at end of file diff --git a/system/tables/mag-metadata-table-v1.json b/system/tables/mag-metadata-table-v1.json new file mode 100644 index 00000000..f2b59bfd --- /dev/null +++ b/system/tables/mag-metadata-table-v1.json @@ -0,0 +1,606 @@ +{ + "Colors": [ + [1.0, 0.19999998807907104, 0.099999994039535522, 1.0], + [0.19999998807907104, 0.19999998807907104, 1.0, 1.0], + [1.0, 0.89999997615814209, 0.099999994039535522, 1.0], + [0.099999994039535522, 1.0, 0.099999994039535522, 1.0], + [0.79999995231628418, 0.099999994039535522, 1.0, 1.0], + [0.099999994039535522, 0.099999994039535522, 0.19999998807907104, 1.0], + [0.89999997615814209, 1.0, 1.0, 1.0], + [0.099999994039535522, 0.89999997615814209, 1.0, 1.0], + [0.5, 0.29999998211860657, 0.19999998807907104, 1.0] + ], + "Mags": [ + { + "EvolutionNumber": 0, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 10, "Eff2": 10, "Eff3": 10, "Eff48": 10, "Eff5": 10, "Eff67": 10} + }, + "RenderFlags": 0, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 1, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 13, "Eff48": 13, "Eff5": 4, "Eff67": 13} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 4, "Eff48": 4, "Eff5": 4, "Eff67": 4} + }, + "RenderFlags": 2, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 2, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 2, "Eff2": 2, "Eff3": 2, "Eff48": 72, "Eff5": 2, "Eff67": 72} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 2, "Eff2": 2, "Eff3": 2, "Eff48": 2, "Eff5": 2, "Eff67": 2} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 2, + "MotionRefs1": { + "Left": {"Eff1": 67, "Eff2": 67, "Eff3": 67, "Eff48": 71, "Eff5": 67, "Eff67": 71}, + "Right": {"Eff1": 14, "Eff2": 14, "Eff3": 14, "Eff48": 70, "Eff5": 14, "Eff67": 70} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 14, "Eff2": 14, "Eff3": 14, "Eff48": 14, "Eff5": 14, "Eff67": 14} + }, + "RenderFlags": 2, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 7, "Eff2": 7, "Eff3": 7, "Eff48": 42, "Eff5": 7, "Eff67": 42}, + "Right": {"Eff1": 6, "Eff2": 6, "Eff3": 6, "Eff48": 41, "Eff5": 6, "Eff67": 41} + }, + "MotionRefs2": { + "Left": {"Eff1": 7, "Eff2": 7, "Eff3": 7, "Eff48": 7, "Eff5": 7, "Eff67": 7}, + "Right": {"Eff1": 6, "Eff2": 6, "Eff3": 6, "Eff48": 6, "Eff5": 6, "Eff67": 6} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 0, "Eff2": 0, "Eff3": 0, "Eff48": 43, "Eff5": 0, "Eff67": 43}, + "Right": {"Eff1": 1, "Eff2": 1, "Eff3": 1, "Eff48": 44, "Eff5": 1, "Eff67": 44} + }, + "MotionRefs2": { + "Left": {"Eff1": 0, "Eff2": 0, "Eff3": 0, "Eff48": 0, "Eff5": 0, "Eff67": 0}, + "Right": {"Eff1": 1, "Eff2": 1, "Eff3": 1, "Eff48": 1, "Eff5": 1, "Eff67": 1} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 30, "Eff2": 30, "Eff3": 30, "Eff48": 49, "Eff5": 30, "Eff67": 49}, + "Right": {"Eff1": 29, "Eff2": 29, "Eff3": 29, "Eff48": 48, "Eff5": 29, "Eff67": 48} + }, + "MotionRefs2": { + "Left": {"Eff1": 30, "Eff2": 30, "Eff3": 30, "Eff48": 49, "Eff5": 30, "Eff67": 49}, + "Right": {"Eff1": 29, "Eff2": 29, "Eff3": 29, "Eff48": 48, "Eff5": 29, "Eff67": 48} + }, + "RenderFlags": 2, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 32, "Eff2": 32, "Eff3": 32, "Eff48": 61, "Eff5": 32, "Eff67": 61}, + "Right": {"Eff1": 31, "Eff2": 31, "Eff3": 31, "Eff48": 60, "Eff5": 31, "Eff67": 60} + }, + "MotionRefs2": { + "Left": {"Eff1": 32, "Eff2": 32, "Eff3": 32, "Eff48": 61, "Eff5": 32, "Eff67": 61}, + "Right": {"Eff1": 31, "Eff2": 31, "Eff3": 31, "Eff48": 60, "Eff5": 31, "Eff67": 60} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 26, "Eff2": 26, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 26, "Eff2": 11, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [6, 7] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 28, "Eff2": 28, "Eff3": 28, "Eff48": 51, "Eff5": 28, "Eff67": 51}, + "Right": {"Eff1": 27, "Eff2": 27, "Eff3": 27, "Eff48": 50, "Eff5": 27, "Eff67": 50} + }, + "MotionRefs2": { + "Left": {"Eff1": 28, "Eff2": 28, "Eff3": 28, "Eff48": 51, "Eff5": 28, "Eff67": 51}, + "Right": {"Eff1": 27, "Eff2": 27, "Eff3": 27, "Eff48": 50, "Eff5": 27, "Eff67": 50} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 16, "Eff2": 16, "Eff3": 16, "Eff48": 64, "Eff5": 16, "Eff67": 64}, + "Right": {"Eff1": 15, "Eff2": 15, "Eff3": 15, "Eff48": 63, "Eff5": 15, "Eff67": 63} + }, + "MotionRefs2": { + "Left": {"Eff1": 16, "Eff2": 16, "Eff3": 16, "Eff48": 64, "Eff5": 16, "Eff67": 64}, + "Right": {"Eff1": 15, "Eff2": 15, "Eff3": 15, "Eff48": 63, "Eff5": 15, "Eff67": 63} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 18, "Eff2": 18, "Eff3": 18, "Eff48": 66, "Eff5": 18, "Eff67": 66}, + "Right": {"Eff1": 17, "Eff2": 17, "Eff3": 17, "Eff48": 65, "Eff5": 17, "Eff67": 65} + }, + "MotionRefs2": { + "Left": {"Eff1": 18, "Eff2": 18, "Eff3": 18, "Eff48": 66, "Eff5": 18, "Eff67": 66}, + "Right": {"Eff1": 17, "Eff2": 17, "Eff3": 17, "Eff48": 65, "Eff5": 17, "Eff67": 65} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 1, + "MotionRefs1": { + "Left": {"Eff1": 35, "Eff2": 35, "Eff3": 35, "Eff48": 74, "Eff5": 35, "Eff67": 74}, + "Right": {"Eff1": 36, "Eff2": 36, "Eff3": 36, "Eff48": 73, "Eff5": 36, "Eff67": 73} + }, + "MotionRefs2": { + "Left": {"Eff1": 35, "Eff2": 35, "Eff3": 35, "Eff48": 35, "Eff5": 35, "Eff67": 35}, + "Right": {"Eff1": 36, "Eff2": 36, "Eff3": 36, "Eff48": 36, "Eff5": 36, "Eff67": 36} + }, + "RenderFlags": 0, + "UnknownA2": [0, 255] + }, + { + "EvolutionNumber": 2, + "MotionRefs1": { + "Left": {"Eff1": 34, "Eff2": 34, "Eff3": 34, "Eff48": 69, "Eff5": 34, "Eff67": 69}, + "Right": {"Eff1": 33, "Eff2": 33, "Eff3": 33, "Eff48": 68, "Eff5": 33, "Eff67": 68} + }, + "MotionRefs2": { + "Left": {"Eff1": 34, "Eff2": 34, "Eff3": 34, "Eff48": 34, "Eff5": 34, "Eff67": 34}, + "Right": {"Eff1": 33, "Eff2": 33, "Eff3": 33, "Eff48": 33, "Eff5": 33, "Eff67": 33} + }, + "RenderFlags": 0, + "UnknownA2": [0, 255] + }, + { + "EvolutionNumber": 2, + "MotionRefs1": { + "Left": {"Eff1": 34, "Eff2": 34, "Eff3": 34, "Eff48": 69, "Eff5": 34, "Eff67": 69}, + "Right": {"Eff1": 33, "Eff2": 33, "Eff3": 33, "Eff48": 68, "Eff5": 33, "Eff67": 68} + }, + "MotionRefs2": { + "Left": {"Eff1": 34, "Eff2": 34, "Eff3": 34, "Eff48": 34, "Eff5": 34, "Eff67": 34}, + "Right": {"Eff1": 33, "Eff2": 33, "Eff3": 33, "Eff48": 33, "Eff5": 33, "Eff67": 33} + }, + "RenderFlags": 1, + "UnknownA2": [0, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 7, "Eff2": 7, "Eff3": 7, "Eff48": 42, "Eff5": 7, "Eff67": 42}, + "Right": {"Eff1": 6, "Eff2": 6, "Eff3": 6, "Eff48": 41, "Eff5": 6, "Eff67": 41} + }, + "MotionRefs2": { + "Left": {"Eff1": 7, "Eff2": 7, "Eff3": 7, "Eff48": 7, "Eff5": 7, "Eff67": 7}, + "Right": {"Eff1": 6, "Eff2": 6, "Eff3": 6, "Eff48": 6, "Eff5": 6, "Eff67": 6} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 9, "Eff2": 9, "Eff3": 9, "Eff48": 76, "Eff5": 9, "Eff67": 76}, + "Right": {"Eff1": 8, "Eff2": 8, "Eff3": 8, "Eff48": 75, "Eff5": 8, "Eff67": 75} + }, + "MotionRefs2": { + "Left": {"Eff1": 9, "Eff2": 9, "Eff3": 9, "Eff48": 9, "Eff5": 9, "Eff67": 9}, + "Right": {"Eff1": 8, "Eff2": 8, "Eff3": 8, "Eff48": 8, "Eff5": 8, "Eff67": 8} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 40, "Eff2": 40, "Eff3": 40, "Eff48": 46, "Eff5": 40, "Eff67": 46}, + "Right": {"Eff1": 39, "Eff2": 39, "Eff3": 39, "Eff48": 45, "Eff5": 39, "Eff67": 45} + }, + "MotionRefs2": { + "Left": {"Eff1": 0, "Eff2": 0, "Eff3": 0, "Eff48": 0, "Eff5": 0, "Eff67": 0}, + "Right": {"Eff1": 1, "Eff2": 1, "Eff3": 1, "Eff48": 1, "Eff5": 1, "Eff67": 1} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 20, "Eff2": 20, "Eff3": 20, "Eff48": 53, "Eff5": 20, "Eff67": 53}, + "Right": {"Eff1": 19, "Eff2": 19, "Eff3": 19, "Eff48": 52, "Eff5": 19, "Eff67": 52} + }, + "MotionRefs2": { + "Left": {"Eff1": 20, "Eff2": 20, "Eff3": 20, "Eff48": 53, "Eff5": 20, "Eff67": 53}, + "Right": {"Eff1": 19, "Eff2": 19, "Eff3": 19, "Eff48": 52, "Eff5": 19, "Eff67": 52} + }, + "RenderFlags": 0, + "UnknownA2": [1, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 23, "Eff2": 23, "Eff3": 23, "Eff48": 53, "Eff5": 23, "Eff67": 53}, + "Right": {"Eff1": 22, "Eff2": 22, "Eff3": 22, "Eff48": 52, "Eff5": 22, "Eff67": 52} + }, + "MotionRefs2": { + "Left": {"Eff1": 23, "Eff2": 23, "Eff3": 23, "Eff48": 53, "Eff5": 23, "Eff67": 53}, + "Right": {"Eff1": 22, "Eff2": 22, "Eff3": 22, "Eff48": 52, "Eff5": 22, "Eff67": 52} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 23, "Eff2": 23, "Eff3": 23, "Eff48": 53, "Eff5": 23, "Eff67": 53}, + "Right": {"Eff1": 22, "Eff2": 22, "Eff3": 22, "Eff48": 52, "Eff5": 22, "Eff67": 52} + }, + "MotionRefs2": { + "Left": {"Eff1": 23, "Eff2": 23, "Eff3": 23, "Eff48": 53, "Eff5": 23, "Eff67": 53}, + "Right": {"Eff1": 22, "Eff2": 22, "Eff3": 22, "Eff48": 52, "Eff5": 22, "Eff67": 52} + }, + "RenderFlags": 2, + "UnknownA2": [2, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 25, "Eff2": 25, "Eff3": 25, "Eff48": 56, "Eff5": 25, "Eff67": 56}, + "Right": {"Eff1": 24, "Eff2": 24, "Eff3": 24, "Eff48": 55, "Eff5": 24, "Eff67": 55} + }, + "MotionRefs2": { + "Left": {"Eff1": 25, "Eff2": 25, "Eff3": 25, "Eff48": 56, "Eff5": 25, "Eff67": 56}, + "Right": {"Eff1": 24, "Eff2": 24, "Eff3": 24, "Eff48": 55, "Eff5": 24, "Eff67": 55} + }, + "RenderFlags": 2, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 20, "Eff2": 20, "Eff3": 20, "Eff48": 58, "Eff5": 20, "Eff67": 58}, + "Right": {"Eff1": 19, "Eff2": 19, "Eff3": 19, "Eff48": 57, "Eff5": 19, "Eff67": 57} + }, + "MotionRefs2": { + "Left": {"Eff1": 20, "Eff2": 20, "Eff3": 20, "Eff48": 58, "Eff5": 20, "Eff67": 58}, + "Right": {"Eff1": 19, "Eff2": 19, "Eff3": 19, "Eff48": 57, "Eff5": 19, "Eff67": 57} + }, + "RenderFlags": 2, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 78, "Eff2": 78, "Eff3": 78, "Eff48": 54, "Eff5": 78, "Eff67": 54} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 54, "Eff5": 3, "Eff67": 54} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 1, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 13, "Eff48": 13, "Eff5": 12, "Eff67": 13} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 2, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 2, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 2, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47} + }, + "RenderFlags": 6, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 2, + "UnknownA2": [8, 9] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 77, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 2, + "UnknownA2": [10, 11] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 38, "Eff2": 38, "Eff3": 59, "Eff48": 59, "Eff5": 38, "Eff67": 59} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 38, "Eff2": 38, "Eff3": 59, "Eff48": 59, "Eff5": 38, "Eff67": 59} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47} + }, + "RenderFlags": 3, + "UnknownA2": [3, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [12, 13] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 2, + "UnknownA2": [14, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [12, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 2, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 255, + "UnknownA2": [15, 16] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 255, + "UnknownA2": [2, 4] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 255, + "UnknownA2": [2, 4] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 255, + "UnknownA2": [5, 8] + } + ], + "UnknownA3": [ + {"Flags": 33, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 20}, + {"Flags": 130, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 20}, + {"Flags": 129, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 24}, + {"Flags": 34, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 20}, + {"Flags": 130, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": -24, "UnknownA5": 0}, + {"Flags": 66, "UnknownA2": 15, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 60}, + {"Flags": 34, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": -20, "UnknownA5": 0}, + {"Flags": 35, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": -20, "UnknownA5": 0}, + {"Flags": 65, "UnknownA2": 15, "UnknownA3": 0, "UnknownA4": -60, "UnknownA5": 0}, + {"Flags": 68, "UnknownA2": 15, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 60}, + {"Flags": 65, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": -40, "UnknownA5": 0}, + {"Flags": 68, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 40}, + {"Flags": 34, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 16}, + {"Flags": 35, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 30}, + {"Flags": 33, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 16}, + {"Flags": 129, "UnknownA2": 246, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 40}, + {"Flags": 66, "UnknownA2": 216, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 40} + ] +} \ No newline at end of file diff --git a/system/tables/mag-metadata-table-v2.json b/system/tables/mag-metadata-table-v2.json new file mode 100644 index 00000000..a4571ab0 --- /dev/null +++ b/system/tables/mag-metadata-table-v2.json @@ -0,0 +1,792 @@ +{ + "Colors": [ + [1.0, 0.19999998807907104, 0.099999994039535522, 1.0], + [0.19999998807907104, 0.19999998807907104, 1.0, 1.0], + [1.0, 0.89999997615814209, 0.099999994039535522, 1.0], + [0.099999994039535522, 1.0, 0.099999994039535522, 1.0], + [0.79999995231628418, 0.099999994039535522, 1.0, 1.0], + [0.099999994039535522, 0.099999994039535522, 0.19999998807907104, 1.0], + [0.89999997615814209, 1.0, 1.0, 1.0], + [0.099999994039535522, 0.89999997615814209, 1.0, 1.0], + [0.5, 0.29999998211860657, 0.19999998807907104, 1.0] + ], + "Mags": [ + { + "EvolutionNumber": 0, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 10, "Eff2": 10, "Eff3": 10, "Eff48": 10, "Eff5": 10, "Eff67": 10} + }, + "RenderFlags": 0, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 1, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 13, "Eff48": 13, "Eff5": 4, "Eff67": 13} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 4, "Eff48": 4, "Eff5": 4, "Eff67": 4} + }, + "RenderFlags": 2, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 2, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 2, "Eff2": 2, "Eff3": 2, "Eff48": 72, "Eff5": 2, "Eff67": 72} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 2, "Eff2": 2, "Eff3": 2, "Eff48": 2, "Eff5": 2, "Eff67": 2} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 2, + "MotionRefs1": { + "Left": {"Eff1": 67, "Eff2": 67, "Eff3": 67, "Eff48": 71, "Eff5": 67, "Eff67": 71}, + "Right": {"Eff1": 14, "Eff2": 14, "Eff3": 14, "Eff48": 70, "Eff5": 14, "Eff67": 70} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 14, "Eff2": 14, "Eff3": 14, "Eff48": 14, "Eff5": 14, "Eff67": 14} + }, + "RenderFlags": 2, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 7, "Eff2": 7, "Eff3": 7, "Eff48": 42, "Eff5": 7, "Eff67": 42}, + "Right": {"Eff1": 6, "Eff2": 6, "Eff3": 6, "Eff48": 41, "Eff5": 6, "Eff67": 41} + }, + "MotionRefs2": { + "Left": {"Eff1": 7, "Eff2": 7, "Eff3": 7, "Eff48": 7, "Eff5": 7, "Eff67": 7}, + "Right": {"Eff1": 6, "Eff2": 6, "Eff3": 6, "Eff48": 6, "Eff5": 6, "Eff67": 6} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 0, "Eff2": 0, "Eff3": 0, "Eff48": 43, "Eff5": 0, "Eff67": 43}, + "Right": {"Eff1": 1, "Eff2": 1, "Eff3": 1, "Eff48": 44, "Eff5": 1, "Eff67": 44} + }, + "MotionRefs2": { + "Left": {"Eff1": 0, "Eff2": 0, "Eff3": 0, "Eff48": 0, "Eff5": 0, "Eff67": 0}, + "Right": {"Eff1": 1, "Eff2": 1, "Eff3": 1, "Eff48": 1, "Eff5": 1, "Eff67": 1} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 30, "Eff2": 30, "Eff3": 30, "Eff48": 49, "Eff5": 30, "Eff67": 49}, + "Right": {"Eff1": 29, "Eff2": 29, "Eff3": 29, "Eff48": 48, "Eff5": 29, "Eff67": 48} + }, + "MotionRefs2": { + "Left": {"Eff1": 30, "Eff2": 30, "Eff3": 30, "Eff48": 49, "Eff5": 30, "Eff67": 49}, + "Right": {"Eff1": 29, "Eff2": 29, "Eff3": 29, "Eff48": 48, "Eff5": 29, "Eff67": 48} + }, + "RenderFlags": 2, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 32, "Eff2": 32, "Eff3": 32, "Eff48": 61, "Eff5": 32, "Eff67": 61}, + "Right": {"Eff1": 31, "Eff2": 31, "Eff3": 31, "Eff48": 60, "Eff5": 31, "Eff67": 60} + }, + "MotionRefs2": { + "Left": {"Eff1": 32, "Eff2": 32, "Eff3": 32, "Eff48": 61, "Eff5": 32, "Eff67": 61}, + "Right": {"Eff1": 31, "Eff2": 31, "Eff3": 31, "Eff48": 60, "Eff5": 31, "Eff67": 60} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 26, "Eff2": 26, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 26, "Eff2": 11, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [6, 7] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 28, "Eff2": 28, "Eff3": 28, "Eff48": 51, "Eff5": 28, "Eff67": 51}, + "Right": {"Eff1": 27, "Eff2": 27, "Eff3": 27, "Eff48": 50, "Eff5": 27, "Eff67": 50} + }, + "MotionRefs2": { + "Left": {"Eff1": 28, "Eff2": 28, "Eff3": 28, "Eff48": 51, "Eff5": 28, "Eff67": 51}, + "Right": {"Eff1": 27, "Eff2": 27, "Eff3": 27, "Eff48": 50, "Eff5": 27, "Eff67": 50} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 16, "Eff2": 16, "Eff3": 16, "Eff48": 64, "Eff5": 16, "Eff67": 64}, + "Right": {"Eff1": 15, "Eff2": 15, "Eff3": 15, "Eff48": 63, "Eff5": 15, "Eff67": 63} + }, + "MotionRefs2": { + "Left": {"Eff1": 16, "Eff2": 16, "Eff3": 16, "Eff48": 64, "Eff5": 16, "Eff67": 64}, + "Right": {"Eff1": 15, "Eff2": 15, "Eff3": 15, "Eff48": 63, "Eff5": 15, "Eff67": 63} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 18, "Eff2": 18, "Eff3": 18, "Eff48": 66, "Eff5": 18, "Eff67": 66}, + "Right": {"Eff1": 17, "Eff2": 17, "Eff3": 17, "Eff48": 65, "Eff5": 17, "Eff67": 65} + }, + "MotionRefs2": { + "Left": {"Eff1": 18, "Eff2": 18, "Eff3": 18, "Eff48": 66, "Eff5": 18, "Eff67": 66}, + "Right": {"Eff1": 17, "Eff2": 17, "Eff3": 17, "Eff48": 65, "Eff5": 17, "Eff67": 65} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 1, + "MotionRefs1": { + "Left": {"Eff1": 35, "Eff2": 35, "Eff3": 35, "Eff48": 74, "Eff5": 35, "Eff67": 74}, + "Right": {"Eff1": 36, "Eff2": 36, "Eff3": 36, "Eff48": 73, "Eff5": 36, "Eff67": 73} + }, + "MotionRefs2": { + "Left": {"Eff1": 35, "Eff2": 35, "Eff3": 35, "Eff48": 35, "Eff5": 35, "Eff67": 35}, + "Right": {"Eff1": 36, "Eff2": 36, "Eff3": 36, "Eff48": 36, "Eff5": 36, "Eff67": 36} + }, + "RenderFlags": 0, + "UnknownA2": [0, 255] + }, + { + "EvolutionNumber": 2, + "MotionRefs1": { + "Left": {"Eff1": 34, "Eff2": 34, "Eff3": 34, "Eff48": 69, "Eff5": 34, "Eff67": 69}, + "Right": {"Eff1": 33, "Eff2": 33, "Eff3": 33, "Eff48": 68, "Eff5": 33, "Eff67": 68} + }, + "MotionRefs2": { + "Left": {"Eff1": 34, "Eff2": 34, "Eff3": 34, "Eff48": 34, "Eff5": 34, "Eff67": 34}, + "Right": {"Eff1": 33, "Eff2": 33, "Eff3": 33, "Eff48": 33, "Eff5": 33, "Eff67": 33} + }, + "RenderFlags": 0, + "UnknownA2": [0, 255] + }, + { + "EvolutionNumber": 2, + "MotionRefs1": { + "Left": {"Eff1": 34, "Eff2": 34, "Eff3": 34, "Eff48": 69, "Eff5": 34, "Eff67": 69}, + "Right": {"Eff1": 33, "Eff2": 33, "Eff3": 33, "Eff48": 68, "Eff5": 33, "Eff67": 68} + }, + "MotionRefs2": { + "Left": {"Eff1": 34, "Eff2": 34, "Eff3": 34, "Eff48": 34, "Eff5": 34, "Eff67": 34}, + "Right": {"Eff1": 33, "Eff2": 33, "Eff3": 33, "Eff48": 33, "Eff5": 33, "Eff67": 33} + }, + "RenderFlags": 1, + "UnknownA2": [0, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 7, "Eff2": 7, "Eff3": 7, "Eff48": 42, "Eff5": 7, "Eff67": 42}, + "Right": {"Eff1": 6, "Eff2": 6, "Eff3": 6, "Eff48": 41, "Eff5": 6, "Eff67": 41} + }, + "MotionRefs2": { + "Left": {"Eff1": 7, "Eff2": 7, "Eff3": 7, "Eff48": 7, "Eff5": 7, "Eff67": 7}, + "Right": {"Eff1": 6, "Eff2": 6, "Eff3": 6, "Eff48": 6, "Eff5": 6, "Eff67": 6} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 9, "Eff2": 9, "Eff3": 9, "Eff48": 76, "Eff5": 9, "Eff67": 76}, + "Right": {"Eff1": 8, "Eff2": 8, "Eff3": 8, "Eff48": 75, "Eff5": 8, "Eff67": 75} + }, + "MotionRefs2": { + "Left": {"Eff1": 9, "Eff2": 9, "Eff3": 9, "Eff48": 9, "Eff5": 9, "Eff67": 9}, + "Right": {"Eff1": 8, "Eff2": 8, "Eff3": 8, "Eff48": 8, "Eff5": 8, "Eff67": 8} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 40, "Eff2": 40, "Eff3": 40, "Eff48": 46, "Eff5": 40, "Eff67": 46}, + "Right": {"Eff1": 39, "Eff2": 39, "Eff3": 39, "Eff48": 45, "Eff5": 39, "Eff67": 45} + }, + "MotionRefs2": { + "Left": {"Eff1": 0, "Eff2": 0, "Eff3": 0, "Eff48": 0, "Eff5": 0, "Eff67": 0}, + "Right": {"Eff1": 1, "Eff2": 1, "Eff3": 1, "Eff48": 1, "Eff5": 1, "Eff67": 1} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 20, "Eff2": 20, "Eff3": 20, "Eff48": 53, "Eff5": 20, "Eff67": 53}, + "Right": {"Eff1": 19, "Eff2": 19, "Eff3": 19, "Eff48": 52, "Eff5": 19, "Eff67": 52} + }, + "MotionRefs2": { + "Left": {"Eff1": 20, "Eff2": 20, "Eff3": 20, "Eff48": 53, "Eff5": 20, "Eff67": 53}, + "Right": {"Eff1": 19, "Eff2": 19, "Eff3": 19, "Eff48": 52, "Eff5": 19, "Eff67": 52} + }, + "RenderFlags": 0, + "UnknownA2": [1, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 23, "Eff2": 23, "Eff3": 23, "Eff48": 53, "Eff5": 23, "Eff67": 53}, + "Right": {"Eff1": 22, "Eff2": 22, "Eff3": 22, "Eff48": 52, "Eff5": 22, "Eff67": 52} + }, + "MotionRefs2": { + "Left": {"Eff1": 23, "Eff2": 23, "Eff3": 23, "Eff48": 53, "Eff5": 23, "Eff67": 53}, + "Right": {"Eff1": 22, "Eff2": 22, "Eff3": 22, "Eff48": 52, "Eff5": 22, "Eff67": 52} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 23, "Eff2": 23, "Eff3": 23, "Eff48": 53, "Eff5": 23, "Eff67": 53}, + "Right": {"Eff1": 22, "Eff2": 22, "Eff3": 22, "Eff48": 52, "Eff5": 22, "Eff67": 52} + }, + "MotionRefs2": { + "Left": {"Eff1": 23, "Eff2": 23, "Eff3": 23, "Eff48": 53, "Eff5": 23, "Eff67": 53}, + "Right": {"Eff1": 22, "Eff2": 22, "Eff3": 22, "Eff48": 52, "Eff5": 22, "Eff67": 52} + }, + "RenderFlags": 2, + "UnknownA2": [2, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 25, "Eff2": 25, "Eff3": 25, "Eff48": 56, "Eff5": 25, "Eff67": 56}, + "Right": {"Eff1": 24, "Eff2": 24, "Eff3": 24, "Eff48": 55, "Eff5": 24, "Eff67": 55} + }, + "MotionRefs2": { + "Left": {"Eff1": 25, "Eff2": 25, "Eff3": 25, "Eff48": 56, "Eff5": 25, "Eff67": 56}, + "Right": {"Eff1": 24, "Eff2": 24, "Eff3": 24, "Eff48": 55, "Eff5": 24, "Eff67": 55} + }, + "RenderFlags": 2, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 20, "Eff2": 20, "Eff3": 20, "Eff48": 58, "Eff5": 20, "Eff67": 58}, + "Right": {"Eff1": 19, "Eff2": 19, "Eff3": 19, "Eff48": 57, "Eff5": 19, "Eff67": 57} + }, + "MotionRefs2": { + "Left": {"Eff1": 20, "Eff2": 20, "Eff3": 20, "Eff48": 58, "Eff5": 20, "Eff67": 58}, + "Right": {"Eff1": 19, "Eff2": 19, "Eff3": 19, "Eff48": 57, "Eff5": 19, "Eff67": 57} + }, + "RenderFlags": 2, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 78, "Eff2": 78, "Eff3": 78, "Eff48": 54, "Eff5": 78, "Eff67": 54} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 54, "Eff5": 3, "Eff67": 54} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 1, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 13, "Eff48": 13, "Eff5": 12, "Eff67": 13} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 2, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 2, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 2, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47} + }, + "RenderFlags": 6, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 2, + "UnknownA2": [8, 9] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 77, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 2, + "UnknownA2": [10, 11] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 38, "Eff2": 38, "Eff3": 59, "Eff48": 59, "Eff5": 38, "Eff67": 59} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 38, "Eff2": 38, "Eff3": 59, "Eff48": 59, "Eff5": 38, "Eff67": 59} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47} + }, + "RenderFlags": 3, + "UnknownA2": [3, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [12, 13] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 2, + "UnknownA2": [14, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [12, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 2, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 255, + "UnknownA2": [15, 16] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 255, + "UnknownA2": [2, 4] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 255, + "UnknownA2": [2, 4] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 255, + "UnknownA2": [5, 8] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 81, "Eff2": 81, "Eff3": 81, "Eff48": 81, "Eff5": 81, "Eff67": 81}, + "Right": {"Eff1": 80, "Eff2": 80, "Eff3": 80, "Eff48": 80, "Eff5": 80, "Eff67": 80} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 255, + "UnknownA2": [17, 18] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 81, "Eff2": 81, "Eff3": 81, "Eff48": 81, "Eff5": 81, "Eff67": 81}, + "Right": {"Eff1": 80, "Eff2": 80, "Eff3": 80, "Eff48": 80, "Eff5": 80, "Eff67": 80} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 255, + "UnknownA2": [19, 20] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 0, "Eff2": 0, "Eff3": 0, "Eff48": 43, "Eff5": 0, "Eff67": 43}, + "Right": {"Eff1": 1, "Eff2": 1, "Eff3": 1, "Eff48": 44, "Eff5": 1, "Eff67": 44} + }, + "MotionRefs2": { + "Left": {"Eff1": 0, "Eff2": 0, "Eff3": 0, "Eff48": 43, "Eff5": 0, "Eff67": 43}, + "Right": {"Eff1": 1, "Eff2": 1, "Eff3": 1, "Eff48": 44, "Eff5": 1, "Eff67": 44} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 26, "Eff2": 26, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 26, "Eff2": 26, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [6, 7] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 82, "Eff2": 82, "Eff3": 82, "Eff48": 82, "Eff5": 82, "Eff67": 82} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 82, "Eff2": 82, "Eff3": 82, "Eff48": 82, "Eff5": 82, "Eff67": 82} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 82, "Eff2": 82, "Eff3": 82, "Eff48": 82, "Eff5": 82, "Eff67": 82} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 82, "Eff2": 82, "Eff3": 82, "Eff48": 82, "Eff5": 82, "Eff67": 82} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13} + }, + "RenderFlags": 0, + "UnknownA2": [255, 255] + } + ], + "UnknownA3": [ + {"Flags": 33, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 20}, + {"Flags": 130, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 20}, + {"Flags": 129, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 24}, + {"Flags": 34, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 20}, + {"Flags": 130, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": -24, "UnknownA5": 0}, + {"Flags": 66, "UnknownA2": 15, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 60}, + {"Flags": 34, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": -20, "UnknownA5": 0}, + {"Flags": 35, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": -20, "UnknownA5": 0}, + {"Flags": 65, "UnknownA2": 15, "UnknownA3": 0, "UnknownA4": -60, "UnknownA5": 0}, + {"Flags": 68, "UnknownA2": 15, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 60}, + {"Flags": 65, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": -40, "UnknownA5": 0}, + {"Flags": 68, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 40}, + {"Flags": 34, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 16}, + {"Flags": 35, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 30}, + {"Flags": 33, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 16}, + {"Flags": 129, "UnknownA2": 246, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 40}, + {"Flags": 66, "UnknownA2": 216, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 40}, + {"Flags": 64, "UnknownA2": 6, "UnknownA3": 0, "UnknownA4": 10, "UnknownA5": 50}, + {"Flags": 64, "UnknownA2": 6, "UnknownA3": 0, "UnknownA4": -50, "UnknownA5": -10}, + {"Flags": 64, "UnknownA2": 15, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 80}, + {"Flags": 64, "UnknownA2": 15, "UnknownA3": 0, "UnknownA4": -80, "UnknownA5": 0} + ] +} \ No newline at end of file diff --git a/system/tables/mag-metadata-table-v3.json b/system/tables/mag-metadata-table-v3.json new file mode 100644 index 00000000..4e4a3782 --- /dev/null +++ b/system/tables/mag-metadata-table-v3.json @@ -0,0 +1,918 @@ +{ + "Colors": [ + [1.0, 0.19999998807907104, 0.099999994039535522, 1.0], + [0.19999998807907104, 0.19999998807907104, 1.0, 1.0], + [1.0, 0.89999997615814209, 0.099999994039535522, 1.0], + [0.099999994039535522, 1.0, 0.099999994039535522, 1.0], + [0.79999995231628418, 0.099999994039535522, 1.0, 1.0], + [0.099999994039535522, 0.099999994039535522, 0.19999998807907104, 1.0], + [0.89999997615814209, 1.0, 1.0, 1.0], + [0.099999994039535522, 0.89999997615814209, 1.0, 1.0], + [0.5, 0.29999998211860657, 0.19999998807907104, 1.0], + [1.0, 0.39999997615814209, 0.0, 1.0], + [0.50196075439453125, 0.54509800672531128, 0.97647053003311157, 1.0], + [0.50196075439453125, 0.50196075439453125, 0.0, 1.0], + [0.0, 0.94117641448974609, 0.71372544765472412, 1.0], + [0.79999995231628418, 0.098039209842681885, 0.39215683937072754, 1.0], + [0.49803918600082397, 0.49803918600082397, 0.49803918600082397, 1.0], + [0.99607837200164795, 0.99607837200164795, 0.83529406785964966, 1.0], + [0.99607837200164795, 0.49803918600082397, 0.78431367874145508, 1.0], + [0.0, 0.49803918600082397, 0.32156860828399658, 1.0] + ], + "Mags": [ + { + "EvolutionNumber": 0, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13} + }, + "RenderFlags": 0, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 1, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 13, "Eff48": 13, "Eff5": 4, "Eff67": 13} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 13, "Eff48": 13, "Eff5": 4, "Eff67": 13} + }, + "RenderFlags": 2, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 2, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 2, "Eff2": 2, "Eff3": 2, "Eff48": 72, "Eff5": 2, "Eff67": 72} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 2, "Eff2": 2, "Eff3": 2, "Eff48": 72, "Eff5": 2, "Eff67": 72} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 2, + "MotionRefs1": { + "Left": {"Eff1": 67, "Eff2": 67, "Eff3": 67, "Eff48": 71, "Eff5": 67, "Eff67": 71}, + "Right": {"Eff1": 14, "Eff2": 14, "Eff3": 14, "Eff48": 70, "Eff5": 14, "Eff67": 70} + }, + "MotionRefs2": { + "Left": {"Eff1": 67, "Eff2": 67, "Eff3": 67, "Eff48": 71, "Eff5": 67, "Eff67": 71}, + "Right": {"Eff1": 14, "Eff2": 14, "Eff3": 14, "Eff48": 70, "Eff5": 14, "Eff67": 70} + }, + "RenderFlags": 2, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 7, "Eff2": 7, "Eff3": 7, "Eff48": 42, "Eff5": 7, "Eff67": 42}, + "Right": {"Eff1": 6, "Eff2": 6, "Eff3": 6, "Eff48": 41, "Eff5": 6, "Eff67": 41} + }, + "MotionRefs2": { + "Left": {"Eff1": 7, "Eff2": 7, "Eff3": 7, "Eff48": 42, "Eff5": 7, "Eff67": 42}, + "Right": {"Eff1": 6, "Eff2": 6, "Eff3": 6, "Eff48": 41, "Eff5": 6, "Eff67": 41} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 0, "Eff2": 0, "Eff3": 0, "Eff48": 43, "Eff5": 0, "Eff67": 43}, + "Right": {"Eff1": 1, "Eff2": 1, "Eff3": 1, "Eff48": 44, "Eff5": 1, "Eff67": 44} + }, + "MotionRefs2": { + "Left": {"Eff1": 0, "Eff2": 0, "Eff3": 0, "Eff48": 43, "Eff5": 0, "Eff67": 43}, + "Right": {"Eff1": 1, "Eff2": 1, "Eff3": 1, "Eff48": 44, "Eff5": 1, "Eff67": 44} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 30, "Eff2": 30, "Eff3": 30, "Eff48": 49, "Eff5": 30, "Eff67": 49}, + "Right": {"Eff1": 29, "Eff2": 29, "Eff3": 29, "Eff48": 48, "Eff5": 29, "Eff67": 48} + }, + "MotionRefs2": { + "Left": {"Eff1": 30, "Eff2": 30, "Eff3": 30, "Eff48": 49, "Eff5": 30, "Eff67": 49}, + "Right": {"Eff1": 29, "Eff2": 29, "Eff3": 29, "Eff48": 48, "Eff5": 29, "Eff67": 48} + }, + "RenderFlags": 2, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 32, "Eff2": 32, "Eff3": 32, "Eff48": 61, "Eff5": 32, "Eff67": 61}, + "Right": {"Eff1": 31, "Eff2": 31, "Eff3": 31, "Eff48": 60, "Eff5": 31, "Eff67": 60} + }, + "MotionRefs2": { + "Left": {"Eff1": 32, "Eff2": 32, "Eff3": 32, "Eff48": 61, "Eff5": 32, "Eff67": 61}, + "Right": {"Eff1": 31, "Eff2": 31, "Eff3": 31, "Eff48": 60, "Eff5": 31, "Eff67": 60} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 26, "Eff2": 26, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 26, "Eff2": 26, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [6, 7] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 28, "Eff2": 28, "Eff3": 28, "Eff48": 51, "Eff5": 28, "Eff67": 51}, + "Right": {"Eff1": 27, "Eff2": 27, "Eff3": 27, "Eff48": 50, "Eff5": 27, "Eff67": 50} + }, + "MotionRefs2": { + "Left": {"Eff1": 28, "Eff2": 28, "Eff3": 28, "Eff48": 51, "Eff5": 28, "Eff67": 51}, + "Right": {"Eff1": 27, "Eff2": 27, "Eff3": 27, "Eff48": 50, "Eff5": 27, "Eff67": 50} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 16, "Eff2": 16, "Eff3": 16, "Eff48": 64, "Eff5": 16, "Eff67": 64}, + "Right": {"Eff1": 15, "Eff2": 15, "Eff3": 15, "Eff48": 63, "Eff5": 15, "Eff67": 63} + }, + "MotionRefs2": { + "Left": {"Eff1": 16, "Eff2": 16, "Eff3": 16, "Eff48": 64, "Eff5": 16, "Eff67": 64}, + "Right": {"Eff1": 15, "Eff2": 15, "Eff3": 15, "Eff48": 63, "Eff5": 15, "Eff67": 63} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 18, "Eff2": 18, "Eff3": 18, "Eff48": 66, "Eff5": 18, "Eff67": 66}, + "Right": {"Eff1": 17, "Eff2": 17, "Eff3": 17, "Eff48": 65, "Eff5": 17, "Eff67": 65} + }, + "MotionRefs2": { + "Left": {"Eff1": 18, "Eff2": 18, "Eff3": 18, "Eff48": 66, "Eff5": 18, "Eff67": 66}, + "Right": {"Eff1": 17, "Eff2": 17, "Eff3": 17, "Eff48": 65, "Eff5": 17, "Eff67": 65} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 1, + "MotionRefs1": { + "Left": {"Eff1": 35, "Eff2": 35, "Eff3": 35, "Eff48": 74, "Eff5": 35, "Eff67": 74}, + "Right": {"Eff1": 36, "Eff2": 36, "Eff3": 36, "Eff48": 73, "Eff5": 36, "Eff67": 73} + }, + "MotionRefs2": { + "Left": {"Eff1": 35, "Eff2": 35, "Eff3": 35, "Eff48": 74, "Eff5": 35, "Eff67": 74}, + "Right": {"Eff1": 36, "Eff2": 36, "Eff3": 36, "Eff48": 73, "Eff5": 36, "Eff67": 73} + }, + "RenderFlags": 0, + "UnknownA2": [0, 255] + }, + { + "EvolutionNumber": 2, + "MotionRefs1": { + "Left": {"Eff1": 34, "Eff2": 34, "Eff3": 34, "Eff48": 69, "Eff5": 34, "Eff67": 69}, + "Right": {"Eff1": 33, "Eff2": 33, "Eff3": 33, "Eff48": 68, "Eff5": 33, "Eff67": 68} + }, + "MotionRefs2": { + "Left": {"Eff1": 34, "Eff2": 34, "Eff3": 34, "Eff48": 69, "Eff5": 34, "Eff67": 69}, + "Right": {"Eff1": 33, "Eff2": 33, "Eff3": 33, "Eff48": 68, "Eff5": 33, "Eff67": 68} + }, + "RenderFlags": 0, + "UnknownA2": [0, 255] + }, + { + "EvolutionNumber": 2, + "MotionRefs1": { + "Left": {"Eff1": 34, "Eff2": 34, "Eff3": 34, "Eff48": 69, "Eff5": 34, "Eff67": 69}, + "Right": {"Eff1": 33, "Eff2": 33, "Eff3": 33, "Eff48": 68, "Eff5": 33, "Eff67": 68} + }, + "MotionRefs2": { + "Left": {"Eff1": 34, "Eff2": 34, "Eff3": 34, "Eff48": 69, "Eff5": 34, "Eff67": 69}, + "Right": {"Eff1": 33, "Eff2": 33, "Eff3": 33, "Eff48": 68, "Eff5": 33, "Eff67": 68} + }, + "RenderFlags": 1, + "UnknownA2": [0, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 7, "Eff2": 7, "Eff3": 7, "Eff48": 42, "Eff5": 7, "Eff67": 42}, + "Right": {"Eff1": 6, "Eff2": 6, "Eff3": 6, "Eff48": 41, "Eff5": 6, "Eff67": 41} + }, + "MotionRefs2": { + "Left": {"Eff1": 7, "Eff2": 7, "Eff3": 7, "Eff48": 42, "Eff5": 7, "Eff67": 42}, + "Right": {"Eff1": 6, "Eff2": 6, "Eff3": 6, "Eff48": 41, "Eff5": 6, "Eff67": 41} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 9, "Eff2": 9, "Eff3": 9, "Eff48": 76, "Eff5": 9, "Eff67": 76}, + "Right": {"Eff1": 8, "Eff2": 8, "Eff3": 8, "Eff48": 75, "Eff5": 8, "Eff67": 75} + }, + "MotionRefs2": { + "Left": {"Eff1": 9, "Eff2": 9, "Eff3": 9, "Eff48": 76, "Eff5": 9, "Eff67": 76}, + "Right": {"Eff1": 8, "Eff2": 8, "Eff3": 8, "Eff48": 75, "Eff5": 8, "Eff67": 75} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 40, "Eff2": 40, "Eff3": 40, "Eff48": 46, "Eff5": 40, "Eff67": 46}, + "Right": {"Eff1": 39, "Eff2": 39, "Eff3": 39, "Eff48": 45, "Eff5": 39, "Eff67": 45} + }, + "MotionRefs2": { + "Left": {"Eff1": 40, "Eff2": 40, "Eff3": 40, "Eff48": 46, "Eff5": 40, "Eff67": 46}, + "Right": {"Eff1": 39, "Eff2": 39, "Eff3": 39, "Eff48": 45, "Eff5": 39, "Eff67": 45} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 20, "Eff2": 20, "Eff3": 20, "Eff48": 53, "Eff5": 20, "Eff67": 53}, + "Right": {"Eff1": 19, "Eff2": 19, "Eff3": 19, "Eff48": 52, "Eff5": 19, "Eff67": 52} + }, + "MotionRefs2": { + "Left": {"Eff1": 20, "Eff2": 20, "Eff3": 20, "Eff48": 53, "Eff5": 20, "Eff67": 53}, + "Right": {"Eff1": 19, "Eff2": 19, "Eff3": 19, "Eff48": 52, "Eff5": 19, "Eff67": 52} + }, + "RenderFlags": 0, + "UnknownA2": [1, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 23, "Eff2": 23, "Eff3": 23, "Eff48": 53, "Eff5": 23, "Eff67": 53}, + "Right": {"Eff1": 22, "Eff2": 22, "Eff3": 22, "Eff48": 52, "Eff5": 22, "Eff67": 52} + }, + "MotionRefs2": { + "Left": {"Eff1": 23, "Eff2": 23, "Eff3": 23, "Eff48": 53, "Eff5": 23, "Eff67": 53}, + "Right": {"Eff1": 22, "Eff2": 22, "Eff3": 22, "Eff48": 52, "Eff5": 22, "Eff67": 52} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 23, "Eff2": 23, "Eff3": 23, "Eff48": 53, "Eff5": 23, "Eff67": 53}, + "Right": {"Eff1": 22, "Eff2": 22, "Eff3": 22, "Eff48": 52, "Eff5": 22, "Eff67": 52} + }, + "MotionRefs2": { + "Left": {"Eff1": 23, "Eff2": 23, "Eff3": 23, "Eff48": 53, "Eff5": 23, "Eff67": 53}, + "Right": {"Eff1": 22, "Eff2": 22, "Eff3": 22, "Eff48": 52, "Eff5": 22, "Eff67": 52} + }, + "RenderFlags": 2, + "UnknownA2": [2, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 25, "Eff2": 25, "Eff3": 25, "Eff48": 56, "Eff5": 25, "Eff67": 56}, + "Right": {"Eff1": 24, "Eff2": 24, "Eff3": 24, "Eff48": 55, "Eff5": 24, "Eff67": 55} + }, + "MotionRefs2": { + "Left": {"Eff1": 25, "Eff2": 25, "Eff3": 25, "Eff48": 56, "Eff5": 25, "Eff67": 56}, + "Right": {"Eff1": 24, "Eff2": 24, "Eff3": 24, "Eff48": 55, "Eff5": 24, "Eff67": 55} + }, + "RenderFlags": 2, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 20, "Eff2": 20, "Eff3": 20, "Eff48": 58, "Eff5": 20, "Eff67": 58}, + "Right": {"Eff1": 19, "Eff2": 19, "Eff3": 19, "Eff48": 57, "Eff5": 19, "Eff67": 57} + }, + "MotionRefs2": { + "Left": {"Eff1": 20, "Eff2": 20, "Eff3": 20, "Eff48": 58, "Eff5": 20, "Eff67": 58}, + "Right": {"Eff1": 19, "Eff2": 19, "Eff3": 19, "Eff48": 57, "Eff5": 19, "Eff67": 57} + }, + "RenderFlags": 2, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 78, "Eff2": 78, "Eff3": 78, "Eff48": 54, "Eff5": 78, "Eff67": 54} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 78, "Eff2": 78, "Eff3": 78, "Eff48": 54, "Eff5": 78, "Eff67": 54} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 1, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 13, "Eff48": 13, "Eff5": 12, "Eff67": 13} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 13, "Eff48": 13, "Eff5": 12, "Eff67": 13} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 2, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 2, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 2, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47} + }, + "RenderFlags": 6, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 2, + "UnknownA2": [8, 9] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 77, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 77, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 2, + "UnknownA2": [10, 11] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 38, "Eff2": 38, "Eff3": 59, "Eff48": 59, "Eff5": 38, "Eff67": 59} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 38, "Eff2": 38, "Eff3": 59, "Eff48": 59, "Eff5": 38, "Eff67": 59} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47} + }, + "RenderFlags": 3, + "UnknownA2": [3, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [12, 13] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 2, + "UnknownA2": [14, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [12, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 2, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 255, + "UnknownA2": [15, 16] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 255, + "UnknownA2": [2, 4] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 255, + "UnknownA2": [2, 4] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 255, + "UnknownA2": [5, 8] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 81, "Eff2": 81, "Eff3": 81, "Eff48": 81, "Eff5": 81, "Eff67": 81}, + "Right": {"Eff1": 80, "Eff2": 80, "Eff3": 80, "Eff48": 80, "Eff5": 80, "Eff67": 80} + }, + "MotionRefs2": { + "Left": {"Eff1": 81, "Eff2": 81, "Eff3": 81, "Eff48": 81, "Eff5": 81, "Eff67": 81}, + "Right": {"Eff1": 80, "Eff2": 80, "Eff3": 80, "Eff48": 80, "Eff5": 80, "Eff67": 80} + }, + "RenderFlags": 255, + "UnknownA2": [17, 18] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 81, "Eff2": 81, "Eff3": 81, "Eff48": 81, "Eff5": 81, "Eff67": 81}, + "Right": {"Eff1": 80, "Eff2": 80, "Eff3": 80, "Eff48": 80, "Eff5": 80, "Eff67": 80} + }, + "MotionRefs2": { + "Left": {"Eff1": 81, "Eff2": 81, "Eff3": 81, "Eff48": 81, "Eff5": 81, "Eff67": 81}, + "Right": {"Eff1": 80, "Eff2": 80, "Eff3": 80, "Eff48": 80, "Eff5": 80, "Eff67": 80} + }, + "RenderFlags": 255, + "UnknownA2": [19, 20] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 0, "Eff2": 0, "Eff3": 0, "Eff48": 43, "Eff5": 0, "Eff67": 43}, + "Right": {"Eff1": 1, "Eff2": 1, "Eff3": 1, "Eff48": 44, "Eff5": 1, "Eff67": 44} + }, + "MotionRefs2": { + "Left": {"Eff1": 0, "Eff2": 0, "Eff3": 0, "Eff48": 43, "Eff5": 0, "Eff67": 43}, + "Right": {"Eff1": 1, "Eff2": 1, "Eff3": 1, "Eff48": 44, "Eff5": 1, "Eff67": 44} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 26, "Eff2": 26, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 26, "Eff2": 26, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [6, 7] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 82, "Eff2": 82, "Eff3": 82, "Eff48": 82, "Eff5": 82, "Eff67": 82} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 82, "Eff2": 82, "Eff3": 82, "Eff48": 82, "Eff5": 82, "Eff67": 82} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 82, "Eff2": 82, "Eff3": 82, "Eff48": 82, "Eff5": 82, "Eff67": 82} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 82, "Eff2": 82, "Eff3": 82, "Eff48": 82, "Eff5": 82, "Eff67": 82} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 16, "Eff2": 16, "Eff3": 16, "Eff48": 64, "Eff5": 16, "Eff67": 64}, + "Right": {"Eff1": 15, "Eff2": 15, "Eff3": 15, "Eff48": 63, "Eff5": 15, "Eff67": 63} + }, + "MotionRefs2": { + "Left": {"Eff1": 16, "Eff2": 16, "Eff3": 16, "Eff48": 64, "Eff5": 16, "Eff67": 64}, + "Right": {"Eff1": 15, "Eff2": 15, "Eff3": 15, "Eff48": 63, "Eff5": 15, "Eff67": 63} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [12, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [12, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [12, 13] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47} + }, + "RenderFlags": 10, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 77, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 77, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 3, + "UnknownA2": [10, 11] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 2, + "UnknownA2": [14, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13} + }, + "RenderFlags": 0, + "UnknownA2": [255, 255] + } + ], + "UnknownA3": [ + {"Flags": 33, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 20}, + {"Flags": 130, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 20}, + {"Flags": 129, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 24}, + {"Flags": 34, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 20}, + {"Flags": 130, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": -24, "UnknownA5": 0}, + {"Flags": 66, "UnknownA2": 15, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 60}, + {"Flags": 34, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": -20, "UnknownA5": 0}, + {"Flags": 35, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": -20, "UnknownA5": 0}, + {"Flags": 65, "UnknownA2": 15, "UnknownA3": 0, "UnknownA4": -60, "UnknownA5": 0}, + {"Flags": 68, "UnknownA2": 15, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 60}, + {"Flags": 65, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": -40, "UnknownA5": 0}, + {"Flags": 68, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 40}, + {"Flags": 34, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 16}, + {"Flags": 35, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 30}, + {"Flags": 33, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 16}, + {"Flags": 129, "UnknownA2": 246, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 40}, + {"Flags": 66, "UnknownA2": 216, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 40}, + {"Flags": 64, "UnknownA2": 6, "UnknownA3": 0, "UnknownA4": 10, "UnknownA5": 50}, + {"Flags": 64, "UnknownA2": 6, "UnknownA3": 0, "UnknownA4": -50, "UnknownA5": -10}, + {"Flags": 64, "UnknownA2": 15, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 80}, + {"Flags": 64, "UnknownA2": 15, "UnknownA3": 0, "UnknownA4": -80, "UnknownA5": 0} + ] +} \ No newline at end of file diff --git a/system/tables/mag-metadata-table-v4.json b/system/tables/mag-metadata-table-v4.json new file mode 100644 index 00000000..dc3ae627 --- /dev/null +++ b/system/tables/mag-metadata-table-v4.json @@ -0,0 +1,1126 @@ +{ + "Colors": [ + [1.0, 0.19999998807907104, 0.099999994039535522, 1.0], + [0.19999998807907104, 0.19999998807907104, 1.0, 1.0], + [1.0, 0.89999997615814209, 0.099999994039535522, 1.0], + [0.099999994039535522, 1.0, 0.099999994039535522, 1.0], + [0.79999995231628418, 0.099999994039535522, 1.0, 1.0], + [0.099999994039535522, 0.099999994039535522, 0.19999998807907104, 1.0], + [0.89999997615814209, 1.0, 1.0, 1.0], + [0.099999994039535522, 0.89999997615814209, 1.0, 1.0], + [0.5, 0.29999998211860657, 0.19999998807907104, 1.0], + [1.0, 0.39999997615814209, 0.0, 1.0], + [0.50196075439453125, 0.54509800672531128, 0.97647053003311157, 1.0], + [0.50196075439453125, 0.50196075439453125, 0.0, 1.0], + [0.0, 0.94117641448974609, 0.71372544765472412, 1.0], + [0.79999995231628418, 0.098039209842681885, 0.39215683937072754, 1.0], + [0.49803918600082397, 0.49803918600082397, 0.49803918600082397, 1.0], + [0.99607837200164795, 0.99607837200164795, 0.83529406785964966, 1.0], + [0.99607837200164795, 0.49803918600082397, 0.78431367874145508, 1.0], + [0.0, 0.49803918600082397, 0.32156860828399658, 1.0] + ], + "Mags": [ + { + "EvolutionNumber": 0, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13} + }, + "RenderFlags": 0, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 1, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 13, "Eff48": 13, "Eff5": 4, "Eff67": 13} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 13, "Eff48": 13, "Eff5": 4, "Eff67": 13} + }, + "RenderFlags": 2, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 2, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 2, "Eff2": 2, "Eff3": 2, "Eff48": 72, "Eff5": 2, "Eff67": 72} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 2, "Eff2": 2, "Eff3": 2, "Eff48": 72, "Eff5": 2, "Eff67": 72} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 2, + "MotionRefs1": { + "Left": {"Eff1": 67, "Eff2": 67, "Eff3": 67, "Eff48": 71, "Eff5": 67, "Eff67": 71}, + "Right": {"Eff1": 14, "Eff2": 14, "Eff3": 14, "Eff48": 70, "Eff5": 14, "Eff67": 70} + }, + "MotionRefs2": { + "Left": {"Eff1": 67, "Eff2": 67, "Eff3": 67, "Eff48": 71, "Eff5": 67, "Eff67": 71}, + "Right": {"Eff1": 14, "Eff2": 14, "Eff3": 14, "Eff48": 70, "Eff5": 14, "Eff67": 70} + }, + "RenderFlags": 2, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 7, "Eff2": 7, "Eff3": 7, "Eff48": 42, "Eff5": 7, "Eff67": 42}, + "Right": {"Eff1": 6, "Eff2": 6, "Eff3": 6, "Eff48": 41, "Eff5": 6, "Eff67": 41} + }, + "MotionRefs2": { + "Left": {"Eff1": 7, "Eff2": 7, "Eff3": 7, "Eff48": 42, "Eff5": 7, "Eff67": 42}, + "Right": {"Eff1": 6, "Eff2": 6, "Eff3": 6, "Eff48": 41, "Eff5": 6, "Eff67": 41} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 0, "Eff2": 0, "Eff3": 0, "Eff48": 43, "Eff5": 0, "Eff67": 43}, + "Right": {"Eff1": 1, "Eff2": 1, "Eff3": 1, "Eff48": 44, "Eff5": 1, "Eff67": 44} + }, + "MotionRefs2": { + "Left": {"Eff1": 0, "Eff2": 0, "Eff3": 0, "Eff48": 43, "Eff5": 0, "Eff67": 43}, + "Right": {"Eff1": 1, "Eff2": 1, "Eff3": 1, "Eff48": 44, "Eff5": 1, "Eff67": 44} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 30, "Eff2": 30, "Eff3": 30, "Eff48": 49, "Eff5": 30, "Eff67": 49}, + "Right": {"Eff1": 29, "Eff2": 29, "Eff3": 29, "Eff48": 48, "Eff5": 29, "Eff67": 48} + }, + "MotionRefs2": { + "Left": {"Eff1": 30, "Eff2": 30, "Eff3": 30, "Eff48": 49, "Eff5": 30, "Eff67": 49}, + "Right": {"Eff1": 29, "Eff2": 29, "Eff3": 29, "Eff48": 48, "Eff5": 29, "Eff67": 48} + }, + "RenderFlags": 2, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 32, "Eff2": 32, "Eff3": 32, "Eff48": 61, "Eff5": 32, "Eff67": 61}, + "Right": {"Eff1": 31, "Eff2": 31, "Eff3": 31, "Eff48": 60, "Eff5": 31, "Eff67": 60} + }, + "MotionRefs2": { + "Left": {"Eff1": 32, "Eff2": 32, "Eff3": 32, "Eff48": 61, "Eff5": 32, "Eff67": 61}, + "Right": {"Eff1": 31, "Eff2": 31, "Eff3": 31, "Eff48": 60, "Eff5": 31, "Eff67": 60} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 26, "Eff2": 26, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 26, "Eff2": 26, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [6, 7] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 28, "Eff2": 28, "Eff3": 28, "Eff48": 51, "Eff5": 28, "Eff67": 51}, + "Right": {"Eff1": 27, "Eff2": 27, "Eff3": 27, "Eff48": 50, "Eff5": 27, "Eff67": 50} + }, + "MotionRefs2": { + "Left": {"Eff1": 28, "Eff2": 28, "Eff3": 28, "Eff48": 51, "Eff5": 28, "Eff67": 51}, + "Right": {"Eff1": 27, "Eff2": 27, "Eff3": 27, "Eff48": 50, "Eff5": 27, "Eff67": 50} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 16, "Eff2": 16, "Eff3": 16, "Eff48": 64, "Eff5": 16, "Eff67": 64}, + "Right": {"Eff1": 15, "Eff2": 15, "Eff3": 15, "Eff48": 63, "Eff5": 15, "Eff67": 63} + }, + "MotionRefs2": { + "Left": {"Eff1": 16, "Eff2": 16, "Eff3": 16, "Eff48": 64, "Eff5": 16, "Eff67": 64}, + "Right": {"Eff1": 15, "Eff2": 15, "Eff3": 15, "Eff48": 63, "Eff5": 15, "Eff67": 63} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 18, "Eff2": 18, "Eff3": 18, "Eff48": 66, "Eff5": 18, "Eff67": 66}, + "Right": {"Eff1": 17, "Eff2": 17, "Eff3": 17, "Eff48": 65, "Eff5": 17, "Eff67": 65} + }, + "MotionRefs2": { + "Left": {"Eff1": 18, "Eff2": 18, "Eff3": 18, "Eff48": 66, "Eff5": 18, "Eff67": 66}, + "Right": {"Eff1": 17, "Eff2": 17, "Eff3": 17, "Eff48": 65, "Eff5": 17, "Eff67": 65} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 1, + "MotionRefs1": { + "Left": {"Eff1": 35, "Eff2": 35, "Eff3": 35, "Eff48": 74, "Eff5": 35, "Eff67": 74}, + "Right": {"Eff1": 36, "Eff2": 36, "Eff3": 36, "Eff48": 73, "Eff5": 36, "Eff67": 73} + }, + "MotionRefs2": { + "Left": {"Eff1": 35, "Eff2": 35, "Eff3": 35, "Eff48": 74, "Eff5": 35, "Eff67": 74}, + "Right": {"Eff1": 36, "Eff2": 36, "Eff3": 36, "Eff48": 73, "Eff5": 36, "Eff67": 73} + }, + "RenderFlags": 0, + "UnknownA2": [0, 255] + }, + { + "EvolutionNumber": 2, + "MotionRefs1": { + "Left": {"Eff1": 34, "Eff2": 34, "Eff3": 34, "Eff48": 69, "Eff5": 34, "Eff67": 69}, + "Right": {"Eff1": 33, "Eff2": 33, "Eff3": 33, "Eff48": 68, "Eff5": 33, "Eff67": 68} + }, + "MotionRefs2": { + "Left": {"Eff1": 34, "Eff2": 34, "Eff3": 34, "Eff48": 69, "Eff5": 34, "Eff67": 69}, + "Right": {"Eff1": 33, "Eff2": 33, "Eff3": 33, "Eff48": 68, "Eff5": 33, "Eff67": 68} + }, + "RenderFlags": 0, + "UnknownA2": [0, 255] + }, + { + "EvolutionNumber": 2, + "MotionRefs1": { + "Left": {"Eff1": 34, "Eff2": 34, "Eff3": 34, "Eff48": 69, "Eff5": 34, "Eff67": 69}, + "Right": {"Eff1": 33, "Eff2": 33, "Eff3": 33, "Eff48": 68, "Eff5": 33, "Eff67": 68} + }, + "MotionRefs2": { + "Left": {"Eff1": 34, "Eff2": 34, "Eff3": 34, "Eff48": 69, "Eff5": 34, "Eff67": 69}, + "Right": {"Eff1": 33, "Eff2": 33, "Eff3": 33, "Eff48": 68, "Eff5": 33, "Eff67": 68} + }, + "RenderFlags": 1, + "UnknownA2": [0, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 7, "Eff2": 7, "Eff3": 7, "Eff48": 42, "Eff5": 7, "Eff67": 42}, + "Right": {"Eff1": 6, "Eff2": 6, "Eff3": 6, "Eff48": 41, "Eff5": 6, "Eff67": 41} + }, + "MotionRefs2": { + "Left": {"Eff1": 7, "Eff2": 7, "Eff3": 7, "Eff48": 42, "Eff5": 7, "Eff67": 42}, + "Right": {"Eff1": 6, "Eff2": 6, "Eff3": 6, "Eff48": 41, "Eff5": 6, "Eff67": 41} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 9, "Eff2": 9, "Eff3": 9, "Eff48": 76, "Eff5": 9, "Eff67": 76}, + "Right": {"Eff1": 8, "Eff2": 8, "Eff3": 8, "Eff48": 75, "Eff5": 8, "Eff67": 75} + }, + "MotionRefs2": { + "Left": {"Eff1": 9, "Eff2": 9, "Eff3": 9, "Eff48": 76, "Eff5": 9, "Eff67": 76}, + "Right": {"Eff1": 8, "Eff2": 8, "Eff3": 8, "Eff48": 75, "Eff5": 8, "Eff67": 75} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 40, "Eff2": 40, "Eff3": 40, "Eff48": 46, "Eff5": 40, "Eff67": 46}, + "Right": {"Eff1": 39, "Eff2": 39, "Eff3": 39, "Eff48": 45, "Eff5": 39, "Eff67": 45} + }, + "MotionRefs2": { + "Left": {"Eff1": 40, "Eff2": 40, "Eff3": 40, "Eff48": 46, "Eff5": 40, "Eff67": 46}, + "Right": {"Eff1": 39, "Eff2": 39, "Eff3": 39, "Eff48": 45, "Eff5": 39, "Eff67": 45} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 20, "Eff2": 20, "Eff3": 20, "Eff48": 53, "Eff5": 20, "Eff67": 53}, + "Right": {"Eff1": 19, "Eff2": 19, "Eff3": 19, "Eff48": 52, "Eff5": 19, "Eff67": 52} + }, + "MotionRefs2": { + "Left": {"Eff1": 20, "Eff2": 20, "Eff3": 20, "Eff48": 53, "Eff5": 20, "Eff67": 53}, + "Right": {"Eff1": 19, "Eff2": 19, "Eff3": 19, "Eff48": 52, "Eff5": 19, "Eff67": 52} + }, + "RenderFlags": 0, + "UnknownA2": [1, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 23, "Eff2": 23, "Eff3": 23, "Eff48": 53, "Eff5": 23, "Eff67": 53}, + "Right": {"Eff1": 22, "Eff2": 22, "Eff3": 22, "Eff48": 52, "Eff5": 22, "Eff67": 52} + }, + "MotionRefs2": { + "Left": {"Eff1": 23, "Eff2": 23, "Eff3": 23, "Eff48": 53, "Eff5": 23, "Eff67": 53}, + "Right": {"Eff1": 22, "Eff2": 22, "Eff3": 22, "Eff48": 52, "Eff5": 22, "Eff67": 52} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 23, "Eff2": 23, "Eff3": 23, "Eff48": 53, "Eff5": 23, "Eff67": 53}, + "Right": {"Eff1": 22, "Eff2": 22, "Eff3": 22, "Eff48": 52, "Eff5": 22, "Eff67": 52} + }, + "MotionRefs2": { + "Left": {"Eff1": 23, "Eff2": 23, "Eff3": 23, "Eff48": 53, "Eff5": 23, "Eff67": 53}, + "Right": {"Eff1": 22, "Eff2": 22, "Eff3": 22, "Eff48": 52, "Eff5": 22, "Eff67": 52} + }, + "RenderFlags": 2, + "UnknownA2": [2, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 25, "Eff2": 25, "Eff3": 25, "Eff48": 56, "Eff5": 25, "Eff67": 56}, + "Right": {"Eff1": 24, "Eff2": 24, "Eff3": 24, "Eff48": 55, "Eff5": 24, "Eff67": 55} + }, + "MotionRefs2": { + "Left": {"Eff1": 25, "Eff2": 25, "Eff3": 25, "Eff48": 56, "Eff5": 25, "Eff67": 56}, + "Right": {"Eff1": 24, "Eff2": 24, "Eff3": 24, "Eff48": 55, "Eff5": 24, "Eff67": 55} + }, + "RenderFlags": 2, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 20, "Eff2": 20, "Eff3": 20, "Eff48": 58, "Eff5": 20, "Eff67": 58}, + "Right": {"Eff1": 19, "Eff2": 19, "Eff3": 19, "Eff48": 57, "Eff5": 19, "Eff67": 57} + }, + "MotionRefs2": { + "Left": {"Eff1": 20, "Eff2": 20, "Eff3": 20, "Eff48": 58, "Eff5": 20, "Eff67": 58}, + "Right": {"Eff1": 19, "Eff2": 19, "Eff3": 19, "Eff48": 57, "Eff5": 19, "Eff67": 57} + }, + "RenderFlags": 2, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 78, "Eff2": 78, "Eff3": 78, "Eff48": 54, "Eff5": 78, "Eff67": 54} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 78, "Eff2": 78, "Eff3": 78, "Eff48": 54, "Eff5": 78, "Eff67": 54} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 1, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 13, "Eff48": 13, "Eff5": 12, "Eff67": 13} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 13, "Eff48": 13, "Eff5": 12, "Eff67": 13} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 2, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 2, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 2, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47} + }, + "RenderFlags": 6, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 2, + "UnknownA2": [8, 9] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 77, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 77, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 2, + "UnknownA2": [10, 11] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 38, "Eff2": 38, "Eff3": 59, "Eff48": 59, "Eff5": 38, "Eff67": 59} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 38, "Eff2": 38, "Eff3": 59, "Eff48": 59, "Eff5": 38, "Eff67": 59} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47} + }, + "RenderFlags": 3, + "UnknownA2": [3, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [12, 13] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 2, + "UnknownA2": [14, 255] + }, + { + "EvolutionNumber": 3, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [12, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 2, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 255, + "UnknownA2": [15, 16] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 255, + "UnknownA2": [2, 4] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 255, + "UnknownA2": [2, 4] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 255, + "UnknownA2": [5, 8] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 81, "Eff2": 81, "Eff3": 81, "Eff48": 81, "Eff5": 81, "Eff67": 81}, + "Right": {"Eff1": 80, "Eff2": 80, "Eff3": 80, "Eff48": 80, "Eff5": 80, "Eff67": 80} + }, + "MotionRefs2": { + "Left": {"Eff1": 81, "Eff2": 81, "Eff3": 81, "Eff48": 81, "Eff5": 81, "Eff67": 81}, + "Right": {"Eff1": 80, "Eff2": 80, "Eff3": 80, "Eff48": 80, "Eff5": 80, "Eff67": 80} + }, + "RenderFlags": 255, + "UnknownA2": [17, 18] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 81, "Eff2": 81, "Eff3": 81, "Eff48": 81, "Eff5": 81, "Eff67": 81}, + "Right": {"Eff1": 80, "Eff2": 80, "Eff3": 80, "Eff48": 80, "Eff5": 80, "Eff67": 80} + }, + "MotionRefs2": { + "Left": {"Eff1": 81, "Eff2": 81, "Eff3": 81, "Eff48": 81, "Eff5": 81, "Eff67": 81}, + "Right": {"Eff1": 80, "Eff2": 80, "Eff3": 80, "Eff48": 80, "Eff5": 80, "Eff67": 80} + }, + "RenderFlags": 255, + "UnknownA2": [19, 20] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 0, "Eff2": 0, "Eff3": 0, "Eff48": 43, "Eff5": 0, "Eff67": 43}, + "Right": {"Eff1": 1, "Eff2": 1, "Eff3": 1, "Eff48": 44, "Eff5": 1, "Eff67": 44} + }, + "MotionRefs2": { + "Left": {"Eff1": 0, "Eff2": 0, "Eff3": 0, "Eff48": 43, "Eff5": 0, "Eff67": 43}, + "Right": {"Eff1": 1, "Eff2": 1, "Eff3": 1, "Eff48": 44, "Eff5": 1, "Eff67": 44} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 26, "Eff2": 26, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 26, "Eff2": 26, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [6, 7] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 82, "Eff2": 82, "Eff3": 82, "Eff48": 82, "Eff5": 82, "Eff67": 82} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 82, "Eff2": 82, "Eff3": 82, "Eff48": 82, "Eff5": 82, "Eff67": 82} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 82, "Eff2": 82, "Eff3": 82, "Eff48": 82, "Eff5": 82, "Eff67": 82} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 82, "Eff2": 82, "Eff3": 82, "Eff48": 82, "Eff5": 82, "Eff67": 82} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 16, "Eff2": 16, "Eff3": 16, "Eff48": 64, "Eff5": 16, "Eff67": 64}, + "Right": {"Eff1": 15, "Eff2": 15, "Eff3": 15, "Eff48": 63, "Eff5": 15, "Eff67": 63} + }, + "MotionRefs2": { + "Left": {"Eff1": 16, "Eff2": 16, "Eff3": 16, "Eff48": 64, "Eff5": 16, "Eff67": 64}, + "Right": {"Eff1": 15, "Eff2": 15, "Eff3": 15, "Eff48": 63, "Eff5": 15, "Eff67": 63} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [12, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [12, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 4, "Eff3": 11, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 1, + "UnknownA2": [12, 13] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 37, "Eff2": 37, "Eff3": 37, "Eff48": 47, "Eff5": 37, "Eff67": 47} + }, + "RenderFlags": 10, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 77, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 4, "Eff2": 77, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 3, + "UnknownA2": [10, 11] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 5, "Eff2": 5, "Eff3": 77, "Eff48": 13, "Eff5": 12, "Eff67": 11} + }, + "RenderFlags": 2, + "UnknownA2": [14, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 16, "Eff2": 16, "Eff3": 16, "Eff48": 64, "Eff5": 16, "Eff67": 64}, + "Right": {"Eff1": 15, "Eff2": 15, "Eff3": 15, "Eff48": 63, "Eff5": 15, "Eff67": 63} + }, + "MotionRefs2": { + "Left": {"Eff1": 16, "Eff2": 16, "Eff3": 16, "Eff48": 64, "Eff5": 16, "Eff67": 64}, + "Right": {"Eff1": 15, "Eff2": 15, "Eff3": 15, "Eff48": 63, "Eff5": 15, "Eff67": 63} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 3, "Eff2": 3, "Eff3": 3, "Eff48": 62, "Eff5": 3, "Eff67": 62} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13} + }, + "RenderFlags": 0, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13} + }, + "RenderFlags": 0, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 78, "Eff2": 78, "Eff3": 78, "Eff48": 54, "Eff5": 78, "Eff67": 54} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 78, "Eff2": 78, "Eff3": 78, "Eff48": 54, "Eff5": 78, "Eff67": 54} + }, + "RenderFlags": 1, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 84, "Eff2": 84, "Eff3": 84, "Eff48": 86, "Eff5": 84, "Eff67": 86}, + "Right": {"Eff1": 83, "Eff2": 83, "Eff3": 83, "Eff48": 85, "Eff5": 83, "Eff67": 85} + }, + "MotionRefs2": { + "Left": {"Eff1": 84, "Eff2": 84, "Eff3": 84, "Eff48": 86, "Eff5": 84, "Eff67": 86}, + "Right": {"Eff1": 83, "Eff2": 83, "Eff3": 83, "Eff48": 85, "Eff5": 83, "Eff67": 85} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 21, "Eff2": 21, "Eff3": 21, "Eff48": 21, "Eff5": 21, "Eff67": 21} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 21, "Eff2": 21, "Eff3": 21, "Eff48": 21, "Eff5": 21, "Eff67": 21} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13} + }, + "RenderFlags": 255, + "UnknownA2": [255, 255] + }, + { + "EvolutionNumber": 4, + "MotionRefs1": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13} + }, + "MotionRefs2": { + "Left": {"Eff1": 255, "Eff2": 255, "Eff3": 255, "Eff48": 255, "Eff5": 255, "Eff67": 255}, + "Right": {"Eff1": 10, "Eff2": 13, "Eff3": 10, "Eff48": 13, "Eff5": 10, "Eff67": 13} + }, + "RenderFlags": 0, + "UnknownA2": [255, 255] + } + ], + "UnknownA3": [ + {"Flags": 33, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 20}, + {"Flags": 130, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 20}, + {"Flags": 129, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 24}, + {"Flags": 34, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 20}, + {"Flags": 130, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": -24, "UnknownA5": 0}, + {"Flags": 66, "UnknownA2": 15, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 60}, + {"Flags": 34, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": -20, "UnknownA5": 0}, + {"Flags": 35, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": -20, "UnknownA5": 0}, + {"Flags": 65, "UnknownA2": 15, "UnknownA3": 0, "UnknownA4": -60, "UnknownA5": 0}, + {"Flags": 68, "UnknownA2": 15, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 60}, + {"Flags": 65, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": -40, "UnknownA5": 0}, + {"Flags": 68, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 40}, + {"Flags": 34, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 16}, + {"Flags": 35, "UnknownA2": 1, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 30}, + {"Flags": 33, "UnknownA2": 2, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 16}, + {"Flags": 129, "UnknownA2": 246, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 40}, + {"Flags": 66, "UnknownA2": 216, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 40}, + {"Flags": 64, "UnknownA2": 6, "UnknownA3": 0, "UnknownA4": 10, "UnknownA5": 50}, + {"Flags": 64, "UnknownA2": 6, "UnknownA3": 0, "UnknownA4": -50, "UnknownA5": -10}, + {"Flags": 64, "UnknownA2": 15, "UnknownA3": 0, "UnknownA4": 0, "UnknownA5": 80}, + {"Flags": 64, "UnknownA2": 15, "UnknownA3": 0, "UnknownA4": -80, "UnknownA5": 0} + ] +} \ No newline at end of file diff --git a/tests/game-tables.test.sh b/tests/game-tables.test.sh index 3a2faa66..f630c250 100755 --- a/tests/game-tables.test.sh +++ b/tests/game-tables.test.sh @@ -9,6 +9,7 @@ fi DIR=tests/game-tables PMT_PREFIX=$DIR/item-parameter-table +MMT_PREFIX=$DIR/mag-metadata-table echo "... (battle-params)" $EXECUTABLE decode-battle-params tests/game-tables/battle-params-ep1-on.dat tests/game-tables/battle-params-ep2-on.dat tests/game-tables/battle-params-ep4-on.dat tests/game-tables/battle-params-ep1-off.dat tests/game-tables/battle-params-ep2-off.dat tests/game-tables/battle-params-ep4-off.dat tests/game-tables/battle-params.json @@ -85,5 +86,60 @@ $EXECUTABLE decode-item-parameter-table --bb-v4 $PMT_PREFIX-bb-v4.expected.bin - $EXECUTABLE encode-item-parameter-table --bb-v4 $PMT_PREFIX-bb-v4.json $PMT_PREFIX-bb-v4.encoded.bin --decompressed bindiff $PMT_PREFIX-bb-v4.expected.bin $PMT_PREFIX-bb-v4.encoded.bin +echo "... (mag-metadata-table) DC 11/2000" +$EXECUTABLE decode-mag-metadata-table --dc-11-2000 $MMT_PREFIX-dc-11-2000.expected.bin --decompressed $MMT_PREFIX-dc-11-2000.json --hex +$EXECUTABLE encode-mag-metadata-table --dc-11-2000 $MMT_PREFIX-dc-11-2000.json $MMT_PREFIX-dc-11-2000.encoded.bin --decompressed +bindiff $MMT_PREFIX-dc-11-2000.expected.bin $MMT_PREFIX-dc-11-2000.encoded.bin + +echo "... (mag-metadata-table) DC V1" +$EXECUTABLE decode-mag-metadata-table --dc-v1 $MMT_PREFIX-dc-v1.expected.bin --decompressed $MMT_PREFIX-dc-v1.json --hex +$EXECUTABLE encode-mag-metadata-table --dc-v1 $MMT_PREFIX-dc-v1.json $MMT_PREFIX-dc-v1.encoded.bin --decompressed +bindiff $MMT_PREFIX-dc-v1.expected.bin $MMT_PREFIX-dc-v1.encoded.bin + +echo "... (mag-metadata-table) DC V2" +$EXECUTABLE decode-mag-metadata-table --dc-v2 $MMT_PREFIX-dc-v2.expected.bin --decompressed $MMT_PREFIX-dc-v2.json --hex +$EXECUTABLE encode-mag-metadata-table --dc-v2 $MMT_PREFIX-dc-v2.json $MMT_PREFIX-dc-v2.encoded.bin --decompressed +bindiff $MMT_PREFIX-dc-v2.expected.bin $MMT_PREFIX-dc-v2.encoded.bin + +echo "... (mag-metadata-table) PC NTE" +$EXECUTABLE decode-mag-metadata-table --pc-nte $MMT_PREFIX-pc-nte.expected.bin --decompressed $MMT_PREFIX-pc-nte.json --hex +$EXECUTABLE encode-mag-metadata-table --pc-nte $MMT_PREFIX-pc-nte.json $MMT_PREFIX-pc-nte.encoded.bin --decompressed +bindiff $MMT_PREFIX-pc-nte.expected.bin $MMT_PREFIX-pc-nte.encoded.bin + +echo "... (mag-metadata-table) PC V2" +$EXECUTABLE decode-mag-metadata-table --pc-v2 $MMT_PREFIX-pc-v2.expected.bin --decompressed $MMT_PREFIX-pc-v2.json --hex +$EXECUTABLE encode-mag-metadata-table --pc-v2 $MMT_PREFIX-pc-v2.json $MMT_PREFIX-pc-v2.encoded.bin --decompressed +bindiff $MMT_PREFIX-pc-v2.expected.bin $MMT_PREFIX-pc-v2.encoded.bin + +echo "... (mag-metadata-table) GC NTE" +$EXECUTABLE decode-mag-metadata-table --gc-nte $MMT_PREFIX-gc-nte.expected.bin --decompressed $MMT_PREFIX-gc-nte.json --hex +$EXECUTABLE encode-mag-metadata-table --gc-nte $MMT_PREFIX-gc-nte.json $MMT_PREFIX-gc-nte.encoded.bin --decompressed +bindiff $MMT_PREFIX-gc-nte.expected.bin $MMT_PREFIX-gc-nte.encoded.bin + +echo "... (mag-metadata-table) GC V3" +$EXECUTABLE decode-mag-metadata-table --gc-v3 $MMT_PREFIX-gc-v3.expected.bin --decompressed $MMT_PREFIX-gc-v3.json --hex +$EXECUTABLE encode-mag-metadata-table --gc-v3 $MMT_PREFIX-gc-v3.json $MMT_PREFIX-gc-v3.encoded.bin --decompressed +bindiff $MMT_PREFIX-gc-v3.expected.bin $MMT_PREFIX-gc-v3.encoded.bin + +echo "... (mag-metadata-table) GC Ep3 NTE" +$EXECUTABLE decode-mag-metadata-table --gc-ep3-nte $MMT_PREFIX-gc-ep3-nte.expected.bin --decompressed $MMT_PREFIX-gc-ep3-nte.json --hex +$EXECUTABLE encode-mag-metadata-table --gc-ep3-nte $MMT_PREFIX-gc-ep3-nte.json $MMT_PREFIX-gc-ep3-nte.encoded.bin --decompressed +bindiff $MMT_PREFIX-gc-ep3-nte.expected.bin $MMT_PREFIX-gc-ep3-nte.encoded.bin + +echo "... (mag-metadata-table) GC Ep3" +$EXECUTABLE decode-mag-metadata-table --gc-ep3 $MMT_PREFIX-gc-ep3.expected.bin --decompressed $MMT_PREFIX-gc-ep3.json --hex +$EXECUTABLE encode-mag-metadata-table --gc-ep3 $MMT_PREFIX-gc-ep3.json $MMT_PREFIX-gc-ep3.encoded.bin --decompressed +bindiff $MMT_PREFIX-gc-ep3.expected.bin $MMT_PREFIX-gc-ep3.encoded.bin + +echo "... (mag-metadata-table) XB" +$EXECUTABLE decode-mag-metadata-table --xb-v3 $MMT_PREFIX-xb-v3.expected.bin --decompressed $MMT_PREFIX-xb-v3.json --hex +$EXECUTABLE encode-mag-metadata-table --xb-v3 $MMT_PREFIX-xb-v3.json $MMT_PREFIX-xb-v3.encoded.bin --decompressed +bindiff $MMT_PREFIX-xb-v3.expected.bin $MMT_PREFIX-xb-v3.encoded.bin + +echo "... (mag-metadata-table) BB" +$EXECUTABLE decode-mag-metadata-table --bb-v4 $MMT_PREFIX-bb-v4.expected.bin --decompressed $MMT_PREFIX-bb-v4.json --hex +$EXECUTABLE encode-mag-metadata-table --bb-v4 $MMT_PREFIX-bb-v4.json $MMT_PREFIX-bb-v4.encoded.bin --decompressed +bindiff $MMT_PREFIX-bb-v4.expected.bin $MMT_PREFIX-bb-v4.encoded.bin + echo "... clean up" rm -f $DIR/*.encoded.bin $DIR/*.json $DIR/battle-params.json.enc* $DIR/battle-params-encoded* diff --git a/tests/game-tables/mag-metadata-table-bb-v4.expected.bin b/tests/game-tables/mag-metadata-table-bb-v4.expected.bin new file mode 100644 index 00000000..901bf13f Binary files /dev/null and b/tests/game-tables/mag-metadata-table-bb-v4.expected.bin differ diff --git a/tests/game-tables/mag-metadata-table-dc-11-2000.expected.bin b/tests/game-tables/mag-metadata-table-dc-11-2000.expected.bin new file mode 100644 index 00000000..d05da4af Binary files /dev/null and b/tests/game-tables/mag-metadata-table-dc-11-2000.expected.bin differ diff --git a/tests/game-tables/mag-metadata-table-dc-v1.expected.bin b/tests/game-tables/mag-metadata-table-dc-v1.expected.bin new file mode 100644 index 00000000..9de0928b Binary files /dev/null and b/tests/game-tables/mag-metadata-table-dc-v1.expected.bin differ diff --git a/tests/game-tables/mag-metadata-table-dc-v2.expected.bin b/tests/game-tables/mag-metadata-table-dc-v2.expected.bin new file mode 100644 index 00000000..57dbb072 Binary files /dev/null and b/tests/game-tables/mag-metadata-table-dc-v2.expected.bin differ diff --git a/tests/game-tables/mag-metadata-table-gc-ep3-nte.expected.bin b/tests/game-tables/mag-metadata-table-gc-ep3-nte.expected.bin new file mode 100644 index 00000000..9ee14b84 Binary files /dev/null and b/tests/game-tables/mag-metadata-table-gc-ep3-nte.expected.bin differ diff --git a/tests/game-tables/mag-metadata-table-gc-ep3.expected.bin b/tests/game-tables/mag-metadata-table-gc-ep3.expected.bin new file mode 100644 index 00000000..9ee14b84 Binary files /dev/null and b/tests/game-tables/mag-metadata-table-gc-ep3.expected.bin differ diff --git a/tests/game-tables/mag-metadata-table-gc-nte.expected.bin b/tests/game-tables/mag-metadata-table-gc-nte.expected.bin new file mode 100644 index 00000000..a74c0b3d Binary files /dev/null and b/tests/game-tables/mag-metadata-table-gc-nte.expected.bin differ diff --git a/tests/game-tables/mag-metadata-table-gc-v3.expected.bin b/tests/game-tables/mag-metadata-table-gc-v3.expected.bin new file mode 100644 index 00000000..9ee14b84 Binary files /dev/null and b/tests/game-tables/mag-metadata-table-gc-v3.expected.bin differ diff --git a/tests/game-tables/mag-metadata-table-pc-nte.expected.bin b/tests/game-tables/mag-metadata-table-pc-nte.expected.bin new file mode 100644 index 00000000..57dbb072 Binary files /dev/null and b/tests/game-tables/mag-metadata-table-pc-nte.expected.bin differ diff --git a/tests/game-tables/mag-metadata-table-pc-v2.expected.bin b/tests/game-tables/mag-metadata-table-pc-v2.expected.bin new file mode 100644 index 00000000..57dbb072 Binary files /dev/null and b/tests/game-tables/mag-metadata-table-pc-v2.expected.bin differ diff --git a/tests/game-tables/mag-metadata-table-xb-v3.expected.bin b/tests/game-tables/mag-metadata-table-xb-v3.expected.bin new file mode 100644 index 00000000..eb2992db Binary files /dev/null and b/tests/game-tables/mag-metadata-table-xb-v3.expected.bin differ