summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorinspectredc <inspectredc@gmail.com>2024-04-23 14:38:15 +0100
committerLywx <kiritodev01@gmail.com>2024-04-23 10:31:55 -0600
commitbcd2450b26457f4adaa639463d42ae973e12e6e8 (patch)
treea43d3114f2d2f48cdcd31d5c5f727f4e23b87208
parentfc5e60f05edf16ae5e8b6e5e51c410ea236b259e (diff)
MacroObject Factory
-rw-r--r--src/Companion.cpp2
-rw-r--r--src/factories/ResourceType.h1
-rw-r--r--src/factories/sm64/MacroFactory.cpp102
-rw-r--r--src/factories/sm64/MacroFactory.h49
-rw-r--r--src/factories/sm64/MovtexFactory.cpp2
-rw-r--r--src/factories/sm64/MovtexQuadFactory.cpp2
-rw-r--r--src/factories/sm64/macro/MacroPresets.h1479
7 files changed, 1635 insertions, 2 deletions
diff --git a/src/Companion.cpp b/src/Companion.cpp
index b9177f3..91ae918 100644
--- a/src/Companion.cpp
+++ b/src/Companion.cpp
@@ -34,6 +34,7 @@
#include "factories/sm64/DictionaryFactory.h"
#include "factories/sm64/TextFactory.h"
#include "factories/sm64/GeoLayoutFactory.h"
+#include "factories/sm64/MacroFactory.h"
#include "factories/sm64/MovtexFactory.h"
#include "factories/sm64/MovtexQuadFactory.h"
@@ -93,6 +94,7 @@ void Companion::Init(const ExportType type) {
this->RegisterFactory("SM64:ANIM", std::make_shared<SM64::AnimationFactory>());
this->RegisterFactory("SM64:COLLISION", std::make_shared<SM64::CollisionFactory>());
this->RegisterFactory("SM64:GEO_LAYOUT", std::make_shared<SM64::GeoLayoutFactory>());
+ this->RegisterFactory("SM64:MACRO", std::make_shared<SM64::MacroFactory>());
this->RegisterFactory("SM64:MOVTEX_QUAD", std::make_shared<SM64::MovtexQuadFactory>());
this->RegisterFactory("SM64:MOVTEX", std::make_shared<SM64::MovtexFactory>());
diff --git a/src/factories/ResourceType.h b/src/factories/ResourceType.h
index 4cc2ee4..10da465 100644
--- a/src/factories/ResourceType.h
+++ b/src/factories/ResourceType.h
@@ -29,6 +29,7 @@ enum class ResourceType {
Dictionary = 0x44494354, // DICT
GeoLayout = 0x47454F20, // GEO
Collision = 0x434F4C20, // COL
+ MacroObject = 0x4D41434F, // MACO
Movtex = 0x4D4F5654, // MOVT
MovtexQuad = 0x4D4F5651, // MOVQ
diff --git a/src/factories/sm64/MacroFactory.cpp b/src/factories/sm64/MacroFactory.cpp
new file mode 100644
index 0000000..382a909
--- /dev/null
+++ b/src/factories/sm64/MacroFactory.cpp
@@ -0,0 +1,102 @@
+#include "MacroFactory.h"
+#include "spdlog/spdlog.h"
+
+#include "Companion.h"
+#include "utils/Decompressor.h"
+#include "utils/TorchUtils.h"
+#include <regex>
+
+ExportResult SM64::MacroHeaderExporter::Export(std::ostream &write, std::shared_ptr<IParsedData> raw, std::string& entryName, YAML::Node &node, std::string* replacement) {
+ const auto symbol = GetSafeNode(node, "symbol", entryName);
+
+ if(Companion::Instance->IsOTRMode()){
+ write << "static const char " << symbol << "[] = \"__OTR__" << (*replacement) << "\";\n\n";
+ return std::nullopt;
+ }
+
+ write << "extern MacroObject " << symbol << "[];\n";
+ return std::nullopt;
+}
+
+ExportResult SM64::MacroCodeExporter::Export(std::ostream &write, std::shared_ptr<IParsedData> raw, std::string& entryName, YAML::Node &node, std::string* replacement ) {
+ const auto symbol = GetSafeNode(node, "symbol", entryName);
+ const auto offset = GetSafeNode<uint32_t>(node, "offset");
+
+ auto macro = std::static_pointer_cast<SM64::MacroData>(raw);
+
+ write << "const MacroObject " << symbol << "[] = {\n";
+
+ for (auto &object : macro->mMacroData) {
+ write << fourSpaceTab;
+
+ if (object.behParam == 0) {
+ write << "MACRO_OBJECT(";
+ } else {
+ write << "MACRO_OBJECT_WITH_BEH_PARAM(";
+ }
+
+ write << object.preset << ", ";
+ write << object.yaw << ", ";
+ write << object.posX << ", ";
+ write << object.posY << ", ";
+ write << object.posZ;
+
+ if (object.behParam != 0) {
+ write << ", " << object.behParam;
+ }
+ write << "),\n";
+ }
+
+ write << fourSpaceTab << "MACRO_OBJECT_END(),";
+
+ write << "\n};\n";
+
+ size_t size = (macro->mMacroData.size()) * sizeof(MacroObject) + 1;
+
+ return offset + size;
+}
+
+ExportResult SM64::MacroBinaryExporter::Export(std::ostream &write, std::shared_ptr<IParsedData> raw, std::string& entryName, YAML::Node &node, std::string* replacement ) {
+ auto writer = LUS::BinaryWriter();
+ auto macro = std::static_pointer_cast<SM64::MacroData>(raw);
+
+ WriteHeader(writer, LUS::ResourceType::MacroObject, 0);
+
+ writer.Write((uint32_t)macro->mMacroData.size());
+
+ for (auto &object : macro->mMacroData) {
+ writer.Write(static_cast<int16_t>(object.preset));
+ writer.Write(object.yaw);
+ writer.Write(object.posX);
+ writer.Write(object.posY);
+ writer.Write(object.posZ);
+ writer.Write(object.behParam);
+ }
+
+ writer.Finish(write);
+ return std::nullopt;
+}
+
+std::optional<std::shared_ptr<IParsedData>> SM64::MacroFactory::parse(std::vector<uint8_t>& buffer, YAML::Node& node) {
+ std::vector<MacroObject> macroData;
+ auto [_, segment] = Decompressor::AutoDecode(node, buffer);
+ LUS::BinaryReader reader(segment.data, segment.size);
+ reader.SetEndianness(LUS::Endianness::Big);
+
+ while (true) {
+ auto presetYaw = reader.ReadInt16();
+ if (presetYaw == 0x1E) {
+ break;
+ }
+
+ int16_t yaw = ((presetYaw >> 9) * 45) / 0x10;
+ int16_t preset = (presetYaw - ((yaw * 0x10 / 45) << 9)) - 0x1F;
+ auto posX = reader.ReadInt16();
+ auto posY = reader.ReadInt16();
+ auto posZ = reader.ReadInt16();
+ auto behParam = reader.ReadInt16();
+ macroData.emplace_back(static_cast<MacroPresets>(preset), yaw, posX, posY, posZ, behParam);
+ }
+
+ return std::make_shared<SM64::MacroData>(macroData);
+}
diff --git a/src/factories/sm64/MacroFactory.h b/src/factories/sm64/MacroFactory.h
new file mode 100644
index 0000000..4881e98
--- /dev/null
+++ b/src/factories/sm64/MacroFactory.h
@@ -0,0 +1,49 @@
+#pragma once
+
+#include "factories/BaseFactory.h"
+#include "types/Vec3D.h"
+#include "macro/MacroPresets.h"
+
+namespace SM64 {
+
+struct MacroObject {
+ MacroPresets preset;
+ int16_t yaw;
+ int16_t posX;
+ int16_t posY;
+ int16_t posZ;
+ int16_t behParam;
+ MacroObject(MacroPresets preset, int16_t yaw, int16_t posX, int16_t posY, int16_t posZ, int16_t behParam) : preset(preset), yaw(yaw), posX(posX), posY(posY), posZ(posZ), behParam(behParam) {}
+};
+
+class MacroData : public IParsedData {
+public:
+ std::vector<MacroObject> mMacroData;
+
+ MacroData(std::vector<MacroObject> macroData) : mMacroData(std::move(macroData)) {}
+};
+
+class MacroHeaderExporter : public BaseExporter {
+ ExportResult Export(std::ostream& write, std::shared_ptr<IParsedData> data, std::string& entryName, YAML::Node& node, std::string* replacement) override;
+};
+
+class MacroBinaryExporter : public BaseExporter {
+ ExportResult Export(std::ostream& write, std::shared_ptr<IParsedData> data, std::string& entryName, YAML::Node& node, std::string* replacement) override;
+};
+
+class MacroCodeExporter : public BaseExporter {
+ ExportResult Export(std::ostream& write, std::shared_ptr<IParsedData> data, std::string& entryName, YAML::Node& node, std::string* replacement) override;
+};
+
+class MacroFactory : public BaseFactory {
+public:
+ std::optional<std::shared_ptr<IParsedData>> parse(std::vector<uint8_t>& buffer, YAML::Node& data) override;
+ inline std::unordered_map<ExportType, std::shared_ptr<BaseExporter>> GetExporters() override {
+ return {
+ REGISTER(Code, MacroCodeExporter)
+ REGISTER(Header, MacroHeaderExporter)
+ REGISTER(Binary, MacroBinaryExporter)
+ };
+ }
+};
+}
diff --git a/src/factories/sm64/MovtexFactory.cpp b/src/factories/sm64/MovtexFactory.cpp
index c0babe6..75c83b6 100644
--- a/src/factories/sm64/MovtexFactory.cpp
+++ b/src/factories/sm64/MovtexFactory.cpp
@@ -24,7 +24,7 @@ ExportResult SM64::MovtexCodeExporter::Export(std::ostream &write, std::shared_p
auto movtex = std::static_pointer_cast<SM64::MovtexData>(raw);
- write << "static Movtex " << symbol << "[] = {";
+ write << "static Movtex " << symbol << "[] = {\n";
if (movtex->mIsQuad) {
auto numLists = movtex->mMovtexData.at(0);
diff --git a/src/factories/sm64/MovtexQuadFactory.cpp b/src/factories/sm64/MovtexQuadFactory.cpp
index 3b8a2dd..7f8500e 100644
--- a/src/factories/sm64/MovtexQuadFactory.cpp
+++ b/src/factories/sm64/MovtexQuadFactory.cpp
@@ -24,7 +24,7 @@ ExportResult SM64::MovtexQuadCodeExporter::Export(std::ostream &write, std::shar
auto quadData = std::static_pointer_cast<SM64::MovtexQuadData>(raw);
- write << "const struct MovtexQuadCollection " << symbol << "[] = {";
+ write << "const struct MovtexQuadCollection " << symbol << "[] = {\n";
for (auto &quad: quadData->mMovtexQuads) {
write << "{" << quad.first << ", ";
diff --git a/src/factories/sm64/macro/MacroPresets.h b/src/factories/sm64/macro/MacroPresets.h
new file mode 100644
index 0000000..964e0cc
--- /dev/null
+++ b/src/factories/sm64/macro/MacroPresets.h
@@ -0,0 +1,1479 @@
+#pragma once
+
+#include <string>
+#include <spdlog/spdlog.h>
+#include <spdlog/fmt/ostr.h>
+
+enum class MacroPresets {
+ macro_yellow_coin,
+ macro_yellow_coin_2,
+ macro_moving_blue_coin,
+ macro_sliding_blue_coin,
+ macro_red_coin,
+ macro_empty_5,
+ macro_coin_line_horizontal,
+ macro_coin_ring_horizontal,
+ macro_coin_arrow,
+ macro_coin_line_horizontal_flying,
+ macro_coin_line_vertical,
+ macro_coin_ring_horizontal_flying,
+ macro_coin_ring_vertical,
+ macro_coin_arrow_flying,
+ macro_hidden_star_trigger,
+ macro_empty_15,
+ macro_empty_16,
+ macro_empty_17,
+ macro_empty_18,
+ macro_empty_19,
+ macro_fake_star,
+ macro_wooden_signpost,
+ macro_cannon_closed,
+ macro_bobomb_buddy_opens_cannon,
+ macro_butterfly,
+ macro_bouncing_fireball_copy,
+ macro_fish_group_3,
+ macro_fish_group,
+ macro_unknown_28,
+ macro_hidden_1up_in_pole,
+ macro_huge_goomba,
+ macro_tiny_goomba,
+ macro_goomba_triplet_spawner,
+ macro_goomba_quintuplet_spawner,
+ macro_sign_on_wall,
+ macro_chuckya,
+ macro_cannon_open,
+ macro_goomba,
+ macro_homing_amp,
+ macro_circling_amp,
+ macro_unknown_40,
+ macro_unknown_41,
+ macro_free_bowling_ball,
+ macro_snufit,
+ macro_recovery_heart,
+ macro_1up_sliding,
+ macro_1up,
+ macro_1up_jump_on_approach,
+ macro_hidden_1up,
+ macro_hidden_1up_trigger,
+ macro_1up_2,
+ macro_1up_3,
+ macro_empty_52,
+ macro_blue_coin_switch,
+ macro_hidden_blue_coin,
+ macro_wing_cap_switch,
+ macro_metal_cap_switch,
+ macro_vanish_cap_switch,
+ macro_yellow_cap_switch,
+ macro_unknown_59,
+ macro_box_wing_cap,
+ macro_box_metal_cap,
+ macro_box_vanish_cap,
+ macro_box_koopa_shell,
+ macro_box_one_coin,
+ macro_box_three_coins,
+ macro_box_ten_coins,
+ macro_box_1up,
+ macro_box_star_1,
+ macro_breakable_box_no_coins,
+ macro_breakable_box_three_coins,
+ macro_pushable_metal_box,
+ macro_breakable_box_small,
+ macro_floor_switch_hidden_objects,
+ macro_hidden_box,
+ macro_hidden_object_2,
+ macro_hidden_object_3,
+ macro_breakable_box_giant,
+ macro_koopa_shell_underwater,
+ macro_box_1up_running_away,
+ macro_empty_80,
+ macro_bullet_bill_cannon,
+ macro_heave_ho,
+ macro_empty_83,
+ macro_thwomp,
+ macro_fire_spitter,
+ macro_fire_fly_guy,
+ macro_jumping_box,
+ macro_butterfly_triplet,
+ macro_butterfly_triplet_2,
+ macro_empty_90,
+ macro_empty_91,
+ macro_empty_92,
+ macro_bully,
+ macro_bully_2,
+ macro_empty_95,
+ macro_unknown_96,
+ macro_bouncing_fireball,
+ macro_flamethrower,
+ macro_empty_99,
+ macro_empty_100,
+ macro_empty_101,
+ macro_empty_102,
+ macro_empty_103,
+ macro_empty_104,
+ macro_empty_105,
+ macro_wooden_post,
+ macro_water_bomb_spawner,
+ macro_enemy_lakitu,
+ macro_bob_koopa_the_quick,
+ macro_koopa_race_endpoint,
+ macro_bobomb,
+ macro_water_bomb_cannon_copy,
+ macro_bobomb_buddy_opens_cannon_copy,
+ macro_water_bomb_cannon,
+ macro_bobomb_still,
+ macro_empty_116,
+ macro_empty_117,
+ macro_empty_118,
+ macro_empty_119,
+ macro_empty_120,
+ macro_empty_121,
+ macro_empty_122,
+ macro_unknown_123,
+ macro_empty_124,
+ macro_unagi,
+ macro_sushi,
+ macro_empty_127,
+ macro_empty_128,
+ macro_empty_129,
+ macro_empty_130,
+ macro_empty_131,
+ macro_empty_132,
+ macro_empty_133,
+ macro_empty_134,
+ macro_empty_135,
+ macro_empty_136,
+ macro_unknown_137,
+ macro_tornado,
+ macro_pokey,
+ macro_pokey_copy,
+ macro_tox_box,
+ macro_empty_142,
+ macro_empty_143,
+ macro_empty_144,
+ macro_empty_145,
+ macro_empty_146,
+ macro_empty_147,
+ macro_empty_148,
+ macro_empty_149,
+ macro_empty_150,
+ macro_monty_mole_2,
+ macro_monty_mole,
+ macro_monty_mole_hole,
+ macro_fly_guy,
+ macro_empty_155,
+ macro_wiggler,
+ macro_empty_157,
+ macro_empty_158,
+ macro_empty_159,
+ macro_empty_160,
+ macro_empty_161,
+ macro_empty_162,
+ macro_empty_163,
+ macro_empty_164,
+ macro_spindrift,
+ macro_mr_blizzard,
+ macro_mr_blizzard_copy,
+ macro_empty_168,
+ macro_small_penguin,
+ macro_tuxies_mother,
+ macro_tuxies_mother_copy,
+ macro_mr_blizzard_2,
+ macro_empty_173,
+ macro_empty_174,
+ macro_empty_175,
+ macro_empty_176,
+ macro_empty_177,
+ macro_empty_178,
+ macro_empty_179,
+ macro_empty_180,
+ macro_empty_181,
+ macro_empty_182,
+ macro_empty_183,
+ macro_empty_184,
+ macro_empty_185,
+ macro_empty_186,
+ macro_empty_187,
+ macro_empty_188,
+ macro_haunted_chair_copy,
+ macro_haunted_chair,
+ macro_haunted_chair_copy2,
+ macro_boo,
+ macro_boo_copy,
+ macro_boo_group,
+ macro_boo_with_cage,
+ macro_beta_key,
+ macro_empty_197,
+ macro_empty_198,
+ macro_empty_199,
+ macro_empty_200,
+ macro_empty_201,
+ macro_empty_202,
+ macro_empty_203,
+ macro_empty_204,
+ macro_empty_205,
+ macro_empty_206,
+ macro_empty_207,
+ macro_empty_208,
+ macro_empty_209,
+ macro_empty_210,
+ macro_empty_211,
+ macro_empty_212,
+ macro_empty_213,
+ macro_empty_214,
+ macro_empty_215,
+ macro_empty_216,
+ macro_empty_217,
+ macro_empty_218,
+ macro_empty_219,
+ macro_empty_220,
+ macro_empty_221,
+ macro_empty_222,
+ macro_empty_223,
+ macro_empty_224,
+ macro_empty_225,
+ macro_empty_226,
+ macro_empty_227,
+ macro_empty_228,
+ macro_empty_229,
+ macro_empty_230,
+ macro_empty_231,
+ macro_empty_232,
+ macro_empty_233,
+ macro_chirp_chirp,
+ macro_seaweed_bundle,
+ macro_beta_chest,
+ macro_water_mine,
+ macro_fish_group_4,
+ macro_fish_group_2,
+ macro_jet_stream_ring_spawner,
+ macro_jet_stream_ring_spawner_copy,
+ macro_skeeter,
+ macro_clam_shell,
+ macro_empty_244,
+ macro_empty_245,
+ macro_empty_246,
+ macro_empty_247,
+ macro_empty_248,
+ macro_empty_249,
+ macro_empty_250,
+ macro_ukiki,
+ macro_ukiki_2,
+ macro_piranha_plant,
+ macro_empty_254,
+ macro_whomp,
+ macro_chain_chomp,
+ macro_empty_257,
+ macro_koopa,
+ macro_koopa_shellless,
+ macro_wooden_post_copy,
+ macro_fire_piranha_plant,
+ macro_fire_piranha_plant_2,
+ macro_thi_koopa_the_quick,
+ macro_empty_264,
+ macro_empty_265,
+ macro_empty_266,
+ macro_empty_267,
+ macro_empty_268,
+ macro_empty_269,
+ macro_empty_270,
+ macro_empty_271,
+ macro_empty_272,
+ macro_empty_273,
+ macro_empty_274,
+ macro_empty_275,
+ macro_empty_276,
+ macro_empty_277,
+ macro_empty_278,
+ macro_empty_279,
+ macro_empty_280,
+ macro_moneybag,
+ macro_empty_282,
+ macro_empty_283,
+ macro_empty_284,
+ macro_empty_285,
+ macro_empty_286,
+ macro_empty_287,
+ macro_empty_288,
+ macro_swoop,
+ macro_swoop_2,
+ macro_mr_i,
+ macro_scuttlebug_spawner,
+ macro_scuttlebug,
+ macro_empty_294,
+ macro_empty_295,
+ macro_empty_296,
+ macro_empty_297,
+ macro_empty_298,
+ macro_empty_299,
+ macro_empty_300,
+ macro_empty_301,
+ macro_empty_302,
+ macro_unknown_303,
+ macro_empty_304,
+ macro_empty_305,
+ macro_empty_306,
+ macro_empty_307,
+ macro_empty_308,
+ macro_empty_309,
+ macro_empty_310,
+ macro_empty_311,
+ macro_empty_312,
+ macro_ttc_rotating_cube,
+ macro_ttc_rotating_prism,
+ macro_ttc_pendulum,
+ macro_ttc_large_treadmill,
+ macro_ttc_small_treadmill,
+ macro_ttc_push_block,
+ macro_ttc_rotating_hexagon,
+ macro_ttc_rotating_triangle,
+ macro_ttc_pit_block,
+ macro_ttc_pit_block_2,
+ macro_ttc_elevator_platform,
+ macro_ttc_clock_hand,
+ macro_ttc_spinner,
+ macro_ttc_small_gear,
+ macro_ttc_large_gear,
+ macro_ttc_large_treadmill_2,
+ macro_ttc_small_treadmill_2,
+ macro_empty_330,
+ macro_empty_331,
+ macro_empty_332,
+ macro_empty_333,
+ macro_empty_334,
+ macro_empty_335,
+ macro_empty_336,
+ macro_empty_337,
+ macro_empty_338,
+ macro_box_star_2,
+ macro_box_star_3,
+ macro_box_star_4,
+ macro_box_star_5,
+ macro_box_star_6,
+ macro_empty_344,
+ macro_empty_345,
+ macro_empty_346,
+ macro_empty_347,
+ macro_empty_348,
+ macro_empty_349,
+ macro_bits_sliding_platform,
+ macro_bits_twin_sliding_platforms,
+ macro_bits_unknown_352,
+ macro_bits_octagonal_platform,
+ macro_bits_staircase,
+ macro_empty_355,
+ macro_empty_356,
+ macro_bits_ferris_wheel_axle,
+ macro_bits_arrow_platform,
+ macro_bits_seesaw_platform,
+ macro_bits_tilting_w_platform,
+ macro_empty_361,
+ macro_empty_362,
+ macro_empty_363,
+ macro_empty_364,
+ macro_empty_365
+};
+
+inline std::ostream& operator<<(std::ostream& out, const MacroPresets& preset) {
+ std::string output;
+ switch (preset) {
+ case MacroPresets::macro_yellow_coin:
+ output = "macro_yellow_coin";
+ break;
+ case MacroPresets::macro_yellow_coin_2:
+ output = "macro_yellow_coin_2";
+ break;
+ case MacroPresets::macro_moving_blue_coin:
+ output = "macro_moving_blue_coin";
+ break;
+ case MacroPresets::macro_sliding_blue_coin:
+ output = "macro_sliding_blue_coin";
+ break;
+ case MacroPresets::macro_red_coin:
+ output = "macro_red_coin";
+ break;
+ case MacroPresets::macro_empty_5:
+ output = "macro_empty_5";
+ break;
+ case MacroPresets::macro_coin_line_horizontal:
+ output = "macro_coin_line_horizontal";
+ break;
+ case MacroPresets::macro_coin_ring_horizontal:
+ output = "macro_coin_ring_horizontal";
+ break;
+ case MacroPresets::macro_coin_arrow:
+ output = "macro_coin_arrow";
+ break;
+ case MacroPresets::macro_coin_line_horizontal_flying:
+ output = "macro_coin_line_horizontal_flying";
+ break;
+ case MacroPresets::macro_coin_line_vertical:
+ output = "macro_coin_line_vertical";
+ break;
+ case MacroPresets::macro_coin_ring_horizontal_flying:
+ output = "macro_coin_ring_horizontal_flying";
+ break;
+ case MacroPresets::macro_coin_ring_vertical:
+ output = "macro_coin_ring_vertical";
+ break;
+ case MacroPresets::macro_coin_arrow_flying:
+ output = "macro_coin_arrow_flying";
+ break;
+ case MacroPresets::macro_hidden_star_trigger:
+ output = "macro_hidden_star_trigger";
+ break;
+ case MacroPresets::macro_empty_15:
+ output = "macro_empty_15";
+ break;
+ case MacroPresets::macro_empty_16:
+ output = "macro_empty_16";
+ break;
+ case MacroPresets::macro_empty_17:
+ output = "macro_empty_17";
+ break;
+ case MacroPresets::macro_empty_18:
+ output = "macro_empty_18";
+ break;
+ case MacroPresets::macro_empty_19:
+ output = "macro_empty_19";
+ break;
+ case MacroPresets::macro_fake_star:
+ output = "macro_fake_star";
+ break;
+ case MacroPresets::macro_wooden_signpost:
+ output = "macro_wooden_signpost";
+ break;
+ case MacroPresets::macro_cannon_closed:
+ output = "macro_cannon_closed";
+ break;
+ case MacroPresets::macro_bobomb_buddy_opens_cannon:
+ output = "macro_bobomb_buddy_opens_cannon";
+ break;
+ case MacroPresets::macro_butterfly:
+ output = "macro_butterfly";
+ break;
+ case MacroPresets::macro_bouncing_fireball_copy:
+ output = "macro_bouncing_fireball_copy";
+ break;
+ case MacroPresets::macro_fish_group_3:
+ output = "macro_fish_group_3";
+ break;
+ case MacroPresets::macro_fish_group:
+ output = "macro_fish_group";
+ break;
+ case MacroPresets::macro_unknown_28:
+ output = "macro_unknown_28";
+ break;
+ case MacroPresets::macro_hidden_1up_in_pole:
+ output = "macro_hidden_1up_in_pole";
+ break;
+ case MacroPresets::macro_huge_goomba:
+ output = "macro_huge_goomba";
+ break;
+ case MacroPresets::macro_tiny_goomba:
+ output = "macro_tiny_goomba";
+ break;
+ case MacroPresets::macro_goomba_triplet_spawner:
+ output = "macro_goomba_triplet_spawner";
+ break;
+ case MacroPresets::macro_goomba_quintuplet_spawner:
+ output = "macro_goomba_quintuplet_spawner";
+ break;
+ case MacroPresets::macro_sign_on_wall:
+ output = "macro_sign_on_wall";
+ break;
+ case MacroPresets::macro_chuckya:
+ output = "macro_chuckya";
+ break;
+ case MacroPresets::macro_cannon_open:
+ output = "macro_cannon_open";
+ break;
+ case MacroPresets::macro_goomba:
+ output = "macro_goomba";
+ break;
+ case MacroPresets::macro_homing_amp:
+ output = "macro_homing_amp";
+ break;
+ case MacroPresets::macro_circling_amp:
+ output = "macro_circling_amp";
+ break;
+ case MacroPresets::macro_unknown_40:
+ output = "macro_unknown_40";
+ break;
+ case MacroPresets::macro_unknown_41:
+ output = "macro_unknown_41";
+ break;
+ case MacroPresets::macro_free_bowling_ball:
+ output = "macro_free_bowling_ball";
+ break;
+ case MacroPresets::macro_snufit:
+ output = "macro_snufit";
+ break;
+ case MacroPresets::macro_recovery_heart:
+ output = "macro_recovery_heart";
+ break;
+ case MacroPresets::macro_1up_sliding:
+ output = "macro_1up_sliding";
+ break;
+ case MacroPresets::macro_1up:
+ output = "macro_1up";
+ break;
+ case MacroPresets::macro_1up_jump_on_approach:
+ output = "macro_1up_jump_on_approach";
+ break;
+ case MacroPresets::macro_hidden_1up:
+ output = "macro_hidden_1up";
+ break;
+ case MacroPresets::macro_hidden_1up_trigger:
+ output = "macro_hidden_1up_trigger";
+ break;
+ case MacroPresets::macro_1up_2:
+ output = "macro_1up_2";
+ break;
+ case MacroPresets::macro_1up_3:
+ output = "macro_1up_3";
+ break;
+ case MacroPresets::macro_empty_52:
+ output = "macro_empty_52";
+ break;
+ case MacroPresets::macro_blue_coin_switch:
+ output = "macro_blue_coin_switch";
+ break;
+ case MacroPresets::macro_hidden_blue_coin:
+ output = "macro_hidden_blue_coin";
+ break;
+ case MacroPresets::macro_wing_cap_switch:
+ output = "macro_wing_cap_switch";
+ break;
+ case MacroPresets::macro_metal_cap_switch:
+ output = "macro_metal_cap_switch";
+ break;
+ case MacroPresets::macro_vanish_cap_switch:
+ output = "macro_vanish_cap_switch";
+ break;
+ case MacroPresets::macro_yellow_cap_switch:
+ output = "macro_yellow_cap_switch";
+ break;
+ case MacroPresets::macro_unknown_59:
+ output = "macro_unknown_59";
+ break;
+ case MacroPresets::macro_box_wing_cap:
+ output = "macro_box_wing_cap";
+ break;
+ case MacroPresets::macro_box_metal_cap:
+ output = "macro_box_metal_cap";
+ break;
+ case MacroPresets::macro_box_vanish_cap:
+ output = "macro_box_vanish_cap";
+ break;
+ case MacroPresets::macro_box_koopa_shell:
+ output = "macro_box_koopa_shell";
+ break;
+ case MacroPresets::macro_box_one_coin:
+ output = "macro_box_one_coin";
+ break;
+ case MacroPresets::macro_box_three_coins:
+ output = "macro_box_three_coins";
+ break;
+ case MacroPresets::macro_box_ten_coins:
+ output = "macro_box_ten_coins";
+ break;
+ case MacroPresets::macro_box_1up:
+ output = "macro_box_1up";
+ break;
+ case MacroPresets::macro_box_star_1:
+ output = "macro_box_star_1";
+ break;
+ case MacroPresets::macro_breakable_box_no_coins:
+ output = "macro_breakable_box_no_coins";
+ break;
+ case MacroPresets::macro_breakable_box_three_coins:
+ output = "macro_breakable_box_three_coins";
+ break;
+ case MacroPresets::macro_pushable_metal_box:
+ output = "macro_pushable_metal_box";
+ break;
+ case MacroPresets::macro_breakable_box_small:
+ output = "macro_breakable_box_small";
+ break;
+ case MacroPresets::macro_floor_switch_hidden_objects:
+ output = "macro_floor_switch_hidden_objects";
+ break;
+ case MacroPresets::macro_hidden_box:
+ output = "macro_hidden_box";
+ break;
+ case MacroPresets::macro_hidden_object_2:
+ output = "macro_hidden_object_2";
+ break;
+ case MacroPresets::macro_hidden_object_3:
+ output = "macro_hidden_object_3";
+ break;
+ case MacroPresets::macro_breakable_box_giant:
+ output = "macro_breakable_box_giant";
+ break;
+ case MacroPresets::macro_koopa_shell_underwater:
+ output = "macro_koopa_shell_underwater";
+ break;
+ case MacroPresets::macro_box_1up_running_away:
+ output = "macro_box_1up_running_away";
+ break;
+ case MacroPresets::macro_empty_80:
+ output = "macro_empty_80";
+ break;
+ case MacroPresets::macro_bullet_bill_cannon:
+ output = "macro_bullet_bill_cannon";
+ break;
+ case MacroPresets::macro_heave_ho:
+ output = "macro_heave_ho";
+ break;
+ case MacroPresets::macro_empty_83:
+ output = "macro_empty_83";
+ break;
+ case MacroPresets::macro_thwomp:
+ output = "macro_thwomp";
+ break;
+ case MacroPresets::macro_fire_spitter:
+ output = "macro_fire_spitter";
+ break;
+ case MacroPresets::macro_fire_fly_guy:
+ output = "macro_fire_fly_guy";
+ break;
+ case MacroPresets::macro_jumping_box:
+ output = "macro_jumping_box";
+ break;
+ case MacroPresets::macro_butterfly_triplet:
+ output = "macro_butterfly_triplet";
+ break;
+ case MacroPresets::macro_butterfly_triplet_2:
+ output = "macro_butterfly_triplet_2";
+ break;
+ case MacroPresets::macro_empty_90:
+ output = "macro_empty_90";
+ break;
+ case MacroPresets::macro_empty_91:
+ output = "macro_empty_91";
+ break;
+ case MacroPresets::macro_empty_92:
+ output = "macro_empty_92";
+ break;
+ case MacroPresets::macro_bully:
+ output = "macro_bully";
+ break;
+ case MacroPresets::macro_bully_2:
+ output = "macro_bully_2";
+ break;
+ case MacroPresets::macro_empty_95:
+ output = "macro_empty_95";
+ break;
+ case MacroPresets::macro_unknown_96:
+ output = "macro_unknown_96";
+ break;
+ case MacroPresets::macro_bouncing_fireball:
+ output = "macro_bouncing_fireball";
+ break;
+ case MacroPresets::macro_flamethrower:
+ output = "macro_flamethrower";
+ break;
+ case MacroPresets::macro_empty_99:
+ output = "macro_empty_99";
+ break;
+ case MacroPresets::macro_empty_100:
+ output = "macro_empty_100";
+ break;
+ case MacroPresets::macro_empty_101:
+ output = "macro_empty_101";
+ break;
+ case MacroPresets::macro_empty_102:
+ output = "macro_empty_102";
+ break;
+ case MacroPresets::macro_empty_103:
+ output = "macro_empty_103";
+ break;
+ case MacroPresets::macro_empty_104:
+ output = "macro_empty_104";
+ break;
+ case MacroPresets::macro_empty_105:
+ output = "macro_empty_105";
+ break;
+ case MacroPresets::macro_wooden_post:
+ output = "macro_wooden_post";
+ break;
+ case MacroPresets::macro_water_bomb_spawner:
+ output = "macro_water_bomb_spawner";
+ break;
+ case MacroPresets::macro_enemy_lakitu:
+ output = "macro_enemy_lakitu";
+ break;
+ case MacroPresets::macro_bob_koopa_the_quick:
+ output = "macro_bob_koopa_the_quick";
+ break;
+ case MacroPresets::macro_koopa_race_endpoint:
+ output = "macro_koopa_race_endpoint";
+ break;
+ case MacroPresets::macro_bobomb:
+ output = "macro_bobomb";
+ break;
+ case MacroPresets::macro_water_bomb_cannon_copy:
+ output = "macro_water_bomb_cannon_copy";
+ break;
+ case MacroPresets::macro_bobomb_buddy_opens_cannon_copy:
+ output = "macro_bobomb_buddy_opens_cannon_copy";
+ break;
+ case MacroPresets::macro_water_bomb_cannon:
+ output = "macro_water_bomb_cannon";
+ break;
+ case MacroPresets::macro_bobomb_still:
+ output = "macro_bobomb_still";
+ break;
+ case MacroPresets::macro_empty_116:
+ output = "macro_empty_116";
+ break;
+ case MacroPresets::macro_empty_117:
+ output = "macro_empty_117";
+ break;
+ case MacroPresets::macro_empty_118:
+ output = "macro_empty_118";
+ break;
+ case MacroPresets::macro_empty_119:
+ output = "macro_empty_119";
+ break;
+ case MacroPresets::macro_empty_120:
+ output = "macro_empty_120";
+ break;
+ case MacroPresets::macro_empty_121:
+ output = "macro_empty_121";
+ break;
+ case MacroPresets::macro_empty_122:
+ output = "macro_empty_122";
+ break;
+ case MacroPresets::macro_unknown_123:
+ output = "macro_unknown_123";
+ break;
+ case MacroPresets::macro_empty_124:
+ output = "macro_empty_124";
+ break;
+ case MacroPresets::macro_unagi:
+ output = "macro_unagi";
+ break;
+ case MacroPresets::macro_sushi:
+ output = "macro_sushi";
+ break;
+ case MacroPresets::macro_empty_127:
+ output = "macro_empty_127";
+ break;
+ case MacroPresets::macro_empty_128:
+ output = "macro_empty_128";
+ break;
+ case MacroPresets::macro_empty_129:
+ output = "macro_empty_129";
+ break;
+ case MacroPresets::macro_empty_130:
+ output = "macro_empty_130";
+ break;
+ case MacroPresets::macro_empty_131:
+ output = "macro_empty_131";
+ break;
+ case MacroPresets::macro_empty_132:
+ output = "macro_empty_132";
+ break;
+ case MacroPresets::macro_empty_133:
+ output = "macro_empty_133";
+ break;
+ case MacroPresets::macro_empty_134:
+ output = "macro_empty_134";
+ break;
+ case MacroPresets::macro_empty_135:
+ output = "macro_empty_135";
+ break;
+ case MacroPresets::macro_empty_136:
+ output = "macro_empty_136";
+ break;
+ case MacroPresets::macro_unknown_137:
+ output = "macro_unknown_137";
+ break;
+ case MacroPresets::macro_tornado:
+ output = "macro_tornado";
+ break;
+ case MacroPresets::macro_pokey:
+ output = "macro_pokey";
+ break;
+ case MacroPresets::macro_pokey_copy:
+ output = "macro_pokey_copy";
+ break;
+ case MacroPresets::macro_tox_box:
+ output = "macro_tox_box";
+ break;
+ case MacroPresets::macro_empty_142:
+ output = "macro_empty_142";
+ break;
+ case MacroPresets::macro_empty_143:
+ output = "macro_empty_143";
+ break;
+ case MacroPresets::macro_empty_144:
+ output = "macro_empty_144";
+ break;
+ case MacroPresets::macro_empty_145:
+ output = "macro_empty_145";
+ break;
+ case MacroPresets::macro_empty_146:
+ output = "macro_empty_146";
+ break;
+ case MacroPresets::macro_empty_147:
+ output = "macro_empty_147";
+ break;
+ case MacroPresets::macro_empty_148:
+ output = "macro_empty_148";
+ break;
+ case MacroPresets::macro_empty_149:
+ output = "macro_empty_149";
+ break;
+ case MacroPresets::macro_empty_150:
+ output = "macro_empty_150";
+ break;
+ case MacroPresets::macro_monty_mole_2:
+ output = "macro_monty_mole_2";
+ break;
+ case MacroPresets::macro_monty_mole:
+ output = "macro_monty_mole";
+ break;
+ case MacroPresets::macro_monty_mole_hole:
+ output = "macro_monty_mole_hole";
+ break;
+ case MacroPresets::macro_fly_guy:
+ output = "macro_fly_guy";
+ break;
+ case MacroPresets::macro_empty_155:
+ output = "macro_empty_155";
+ break;
+ case MacroPresets::macro_wiggler:
+ output = "macro_wiggler";
+ break;
+ case MacroPresets::macro_empty_157:
+ output = "macro_empty_157";
+ break;
+ case MacroPresets::macro_empty_158:
+ output = "macro_empty_158";
+ break;
+ case MacroPresets::macro_empty_159:
+ output = "macro_empty_159";
+ break;
+ case MacroPresets::macro_empty_160:
+ output = "macro_empty_160";
+ break;
+ case MacroPresets::macro_empty_161:
+ output = "macro_empty_161";
+ break;
+ case MacroPresets::macro_empty_162:
+ output = "macro_empty_162";
+ break;
+ case MacroPresets::macro_empty_163:
+ output = "macro_empty_163";
+ break;
+ case MacroPresets::macro_empty_164:
+ output = "macro_empty_164";
+ break;
+ case MacroPresets::macro_spindrift:
+ output = "macro_spindrift";
+ break;
+ case MacroPresets::macro_mr_blizzard:
+ output = "macro_mr_blizzard";
+ break;
+ case MacroPresets::macro_mr_blizzard_copy:
+ output = "macro_mr_blizzard_copy";
+ break;
+ case MacroPresets::macro_empty_168:
+ output = "macro_empty_168";
+ break;
+ case MacroPresets::macro_small_penguin:
+ output = "macro_small_penguin";
+ break;
+ case MacroPresets::macro_tuxies_mother:
+ output = "macro_tuxies_mother";
+ break;
+ case MacroPresets::macro_tuxies_mother_copy:
+ output = "macro_tuxies_mother_copy";
+ break;
+ case MacroPresets::macro_mr_blizzard_2:
+ output = "macro_mr_blizzard_2";
+ break;
+ case MacroPresets::macro_empty_173:
+ output = "macro_empty_173";
+ break;
+ case MacroPresets::macro_empty_174:
+ output = "macro_empty_174";
+ break;
+ case MacroPresets::macro_empty_175:
+ output = "macro_empty_175";
+ break;
+ case MacroPresets::macro_empty_176:
+ output = "macro_empty_176";
+ break;
+ case MacroPresets::macro_empty_177:
+ output = "macro_empty_177";
+ break;
+ case MacroPresets::macro_empty_178:
+ output = "macro_empty_178";
+ break;
+ case MacroPresets::macro_empty_179:
+ output = "macro_empty_179";
+ break;
+ case MacroPresets::macro_empty_180:
+ output = "macro_empty_180";
+ break;
+ case MacroPresets::macro_empty_181:
+ output = "macro_empty_181";
+ break;
+ case MacroPresets::macro_empty_182:
+ output = "macro_empty_182";
+ break;
+ case MacroPresets::macro_empty_183:
+ output = "macro_empty_183";
+ break;
+ case MacroPresets::macro_empty_184:
+ output = "macro_empty_184";
+ break;
+ case MacroPresets::macro_empty_185:
+ output = "macro_empty_185";
+ break;
+ case MacroPresets::macro_empty_186:
+ output = "macro_empty_186";
+ break;
+ case MacroPresets::macro_empty_187:
+ output = "macro_empty_187";
+ break;
+ case MacroPresets::macro_empty_188:
+ output = "macro_empty_188";
+ break;
+ case MacroPresets::macro_haunted_chair_copy:
+ output = "macro_haunted_chair_copy";
+ break;
+ case MacroPresets::macro_haunted_chair:
+ output = "macro_haunted_chair";
+ break;
+ case MacroPresets::macro_haunted_chair_copy2:
+ output = "macro_haunted_chair_copy2";
+ break;
+ case MacroPresets::macro_boo:
+ output = "macro_boo";
+ break;
+ case MacroPresets::macro_boo_copy:
+ output = "macro_boo_copy";
+ break;
+ case MacroPresets::macro_boo_group:
+ output = "macro_boo_group";
+ break;
+ case MacroPresets::macro_boo_with_cage:
+ output = "macro_boo_with_cage";
+ break;
+ case MacroPresets::macro_beta_key:
+ output = "macro_beta_key";
+ break;
+ case MacroPresets::macro_empty_197:
+ output = "macro_empty_197";
+ break;
+ case MacroPresets::macro_empty_198:
+ output = "macro_empty_198";
+ break;
+ case MacroPresets::macro_empty_199:
+ output = "macro_empty_199";
+ break;
+ case MacroPresets::macro_empty_200:
+ output = "macro_empty_200";
+ break;
+ case MacroPresets::macro_empty_201:
+ output = "macro_empty_201";
+ break;
+ case MacroPresets::macro_empty_202:
+ output = "macro_empty_202";
+ break;
+ case MacroPresets::macro_empty_203:
+ output = "macro_empty_203";
+ break;
+ case MacroPresets::macro_empty_204:
+ output = "macro_empty_204";
+ break;
+ case MacroPresets::macro_empty_205:
+ output = "macro_empty_205";
+ break;
+ case MacroPresets::macro_empty_206:
+ output = "macro_empty_206";
+ break;
+ case MacroPresets::macro_empty_207:
+ output = "macro_empty_207";
+ break;
+ case MacroPresets::macro_empty_208:
+ output = "macro_empty_208";
+ break;
+ case MacroPresets::macro_empty_209:
+ output = "macro_empty_209";
+ break;
+ case MacroPresets::macro_empty_210:
+ output = "macro_empty_210";
+ break;
+ case MacroPresets::macro_empty_211:
+ output = "macro_empty_211";
+ break;
+ case MacroPresets::macro_empty_212:
+ output = "macro_empty_212";
+ break;
+ case MacroPresets::macro_empty_213:
+ output = "macro_empty_213";
+ break;
+ case MacroPresets::macro_empty_214:
+ output = "macro_empty_214";
+ break;
+ case MacroPresets::macro_empty_215:
+ output = "macro_empty_215";
+ break;
+ case MacroPresets::macro_empty_216:
+ output = "macro_empty_216";
+ break;
+ case MacroPresets::macro_empty_217:
+ output = "macro_empty_217";
+ break;
+ case MacroPresets::macro_empty_218:
+ output = "macro_empty_218";
+ break;
+ case MacroPresets::macro_empty_219:
+ output = "macro_empty_219";
+ break;
+ case MacroPresets::macro_empty_220:
+ output = "macro_empty_220";
+ break;
+ case MacroPresets::macro_empty_221:
+ output = "macro_empty_221";
+ break;
+ case MacroPresets::macro_empty_222:
+ output = "macro_empty_222";
+ break;
+ case MacroPresets::macro_empty_223:
+ output = "macro_empty_223";
+ break;
+ case MacroPresets::macro_empty_224:
+ output = "macro_empty_224";
+ break;
+ case MacroPresets::macro_empty_225:
+ output = "macro_empty_225";
+ break;
+ case MacroPresets::macro_empty_226:
+ output = "macro_empty_226";
+ break;
+ case MacroPresets::macro_empty_227:
+ output = "macro_empty_227";
+ break;
+ case MacroPresets::macro_empty_228:
+ output = "macro_empty_228";
+ break;
+ case MacroPresets::macro_empty_229:
+ output = "macro_empty_229";
+ break;
+ case MacroPresets::macro_empty_230:
+ output = "macro_empty_230";
+ break;
+ case MacroPresets::macro_empty_231:
+ output = "macro_empty_231";
+ break;
+ case MacroPresets::macro_empty_232:
+ output = "macro_empty_232";
+ break;
+ case MacroPresets::macro_empty_233:
+ output = "macro_empty_233";
+ break;
+ case MacroPresets::macro_chirp_chirp:
+ output = "macro_chirp_chirp";
+ break;
+ case MacroPresets::macro_seaweed_bundle:
+ output = "macro_seaweed_bundle";
+ break;
+ case MacroPresets::macro_beta_chest:
+ output = "macro_beta_chest";
+ break;
+ case MacroPresets::macro_water_mine:
+ output = "macro_water_mine";
+ break;
+ case MacroPresets::macro_fish_group_4:
+ output = "macro_fish_group_4";
+ break;
+ case MacroPresets::macro_fish_group_2:
+ output = "macro_fish_group_2";
+ break;
+ case MacroPresets::macro_jet_stream_ring_spawner:
+ output = "macro_jet_stream_ring_spawner";
+ break;
+ case MacroPresets::macro_jet_stream_ring_spawner_copy:
+ output = "macro_jet_stream_ring_spawner_copy";
+ break;
+ case MacroPresets::macro_skeeter:
+ output = "macro_skeeter";
+ break;
+ case MacroPresets::macro_clam_shell:
+ output = "macro_clam_shell";
+ break;
+ case MacroPresets::macro_empty_244:
+ output = "macro_empty_244";
+ break;
+ case MacroPresets::macro_empty_245:
+ output = "macro_empty_245";
+ break;
+ case MacroPresets::macro_empty_246:
+ output = "macro_empty_246";
+ break;
+ case MacroPresets::macro_empty_247:
+ output = "macro_empty_247";
+ break;
+ case MacroPresets::macro_empty_248:
+ output = "macro_empty_248";
+ break;
+ case MacroPresets::macro_empty_249:
+ output = "macro_empty_249";
+ break;
+ case MacroPresets::macro_empty_250:
+ output = "macro_empty_250";
+ break;
+ case MacroPresets::macro_ukiki:
+ output = "macro_ukiki";
+ break;
+ case MacroPresets::macro_ukiki_2:
+ output = "macro_ukiki_2";
+ break;
+ case MacroPresets::macro_piranha_plant:
+ output = "macro_piranha_plant";
+ break;
+ case MacroPresets::macro_empty_254:
+ output = "macro_empty_254";
+ break;
+ case MacroPresets::macro_whomp:
+ output = "macro_whomp";
+ break;
+ case MacroPresets::macro_chain_chomp:
+ output = "macro_chain_chomp";
+ break;
+ case MacroPresets::macro_empty_257:
+ output = "macro_empty_257";
+ break;
+ case MacroPresets::macro_koopa:
+ output = "macro_koopa";
+ break;
+ case MacroPresets::macro_koopa_shellless:
+ output = "macro_koopa_shellless";
+ break;
+ case MacroPresets::macro_wooden_post_copy:
+ output = "macro_wooden_post_copy";
+ break;
+ case MacroPresets::macro_fire_piranha_plant:
+ output = "macro_fire_piranha_plant";
+ break;
+ case MacroPresets::macro_fire_piranha_plant_2:
+ output = "macro_fire_piranha_plant_2";
+ break;
+ case MacroPresets::macro_thi_koopa_the_quick:
+ output = "macro_thi_koopa_the_quick";
+ break;
+ case MacroPresets::macro_empty_264:
+ output = "macro_empty_264";
+ break;
+ case MacroPresets::macro_empty_265:
+ output = "macro_empty_265";
+ break;
+ case MacroPresets::macro_empty_266:
+ output = "macro_empty_266";
+ break;
+ case MacroPresets::macro_empty_267:
+ output = "macro_empty_267";
+ break;
+ case MacroPresets::macro_empty_268:
+ output = "macro_empty_268";
+ break;
+ case MacroPresets::macro_empty_269:
+ output = "macro_empty_269";
+ break;
+ case MacroPresets::macro_empty_270:
+ output = "macro_empty_270";
+ break;
+ case MacroPresets::macro_empty_271:
+ output = "macro_empty_271";
+ break;
+ case MacroPresets::macro_empty_272:
+ output = "macro_empty_272";
+ break;
+ case MacroPresets::macro_empty_273:
+ output = "macro_empty_273";
+ break;
+ case MacroPresets::macro_empty_274:
+ output = "macro_empty_274";
+ break;
+ case MacroPresets::macro_empty_275:
+ output = "macro_empty_275";
+ break;
+ case MacroPresets::macro_empty_276:
+ output = "macro_empty_276";
+ break;
+ case MacroPresets::macro_empty_277:
+ output = "macro_empty_277";
+ break;
+ case MacroPresets::macro_empty_278:
+ output = "macro_empty_278";
+ break;
+ case MacroPresets::macro_empty_279:
+ output = "macro_empty_279";
+ break;
+ case MacroPresets::macro_empty_280:
+ output = "macro_empty_280";
+ break;
+ case MacroPresets::macro_moneybag:
+ output = "macro_moneybag";
+ break;
+ case MacroPresets::macro_empty_282:
+ output = "macro_empty_282";
+ break;
+ case MacroPresets::macro_empty_283:
+ output = "macro_empty_283";
+ break;
+ case MacroPresets::macro_empty_284:
+ output = "macro_empty_284";
+ break;
+ case MacroPresets::macro_empty_285:
+ output = "macro_empty_285";
+ break;
+ case MacroPresets::macro_empty_286:
+ output = "macro_empty_286";
+ break;
+ case MacroPresets::macro_empty_287:
+ output = "macro_empty_287";
+ break;
+ case MacroPresets::macro_empty_288:
+ output = "macro_empty_288";
+ break;
+ case MacroPresets::macro_swoop:
+ output = "macro_swoop";
+ break;
+ case MacroPresets::macro_swoop_2:
+ output = "macro_swoop_2";
+ break;
+ case MacroPresets::macro_mr_i:
+ output = "macro_mr_i";
+ break;
+ case MacroPresets::macro_scuttlebug_spawner:
+ output = "macro_scuttlebug_spawner";
+ break;
+ case MacroPresets::macro_scuttlebug:
+ output = "macro_scuttlebug";
+ break;
+ case MacroPresets::macro_empty_294:
+ output = "macro_empty_294";
+ break;
+ case MacroPresets::macro_empty_295:
+ output = "macro_empty_295";
+ break;
+ case MacroPresets::macro_empty_296:
+ output = "macro_empty_296";
+ break;
+ case MacroPresets::macro_empty_297:
+ output = "macro_empty_297";
+ break;
+ case MacroPresets::macro_empty_298:
+ output = "macro_empty_298";
+ break;
+ case MacroPresets::macro_empty_299:
+ output = "macro_empty_299";
+ break;
+ case MacroPresets::macro_empty_300:
+ output = "macro_empty_300";
+ break;
+ case MacroPresets::macro_empty_301:
+ output = "macro_empty_301";
+ break;
+ case MacroPresets::macro_empty_302:
+ output = "macro_empty_302";
+ break;
+ case MacroPresets::macro_unknown_303:
+ output = "macro_unknown_303";
+ break;
+ case MacroPresets::macro_empty_304:
+ output = "macro_empty_304";
+ break;
+ case MacroPresets::macro_empty_305:
+ output = "macro_empty_305";
+ break;
+ case MacroPresets::macro_empty_306:
+ output = "macro_empty_306";
+ break;
+ case MacroPresets::macro_empty_307:
+ output = "macro_empty_307";
+ break;
+ case MacroPresets::macro_empty_308:
+ output = "macro_empty_308";
+ break;
+ case MacroPresets::macro_empty_309:
+ output = "macro_empty_309";
+ break;
+ case MacroPresets::macro_empty_310:
+ output = "macro_empty_310";
+ break;
+ case MacroPresets::macro_empty_311:
+ output = "macro_empty_311";
+ break;
+ case MacroPresets::macro_empty_312:
+ output = "macro_empty_312";
+ break;
+ case MacroPresets::macro_ttc_rotating_cube:
+ output = "macro_ttc_rotating_cube";
+ break;
+ case MacroPresets::macro_ttc_rotating_prism:
+ output = "macro_ttc_rotating_prism";
+ break;
+ case MacroPresets::macro_ttc_pendulum:
+ output = "macro_ttc_pendulum";
+ break;
+ case MacroPresets::macro_ttc_large_treadmill:
+ output = "macro_ttc_large_treadmill";
+ break;
+ case MacroPresets::macro_ttc_small_treadmill:
+ output = "macro_ttc_small_treadmill";
+ break;
+ case MacroPresets::macro_ttc_push_block:
+ output = "macro_ttc_push_block";
+ break;
+ case MacroPresets::macro_ttc_rotating_hexagon:
+ output = "macro_ttc_rotating_hexagon";
+ break;
+ case MacroPresets::macro_ttc_rotating_triangle:
+ output = "macro_ttc_rotating_triangle";
+ break;
+ case MacroPresets::macro_ttc_pit_block:
+ output = "macro_ttc_pit_block";
+ break;
+ case MacroPresets::macro_ttc_pit_block_2:
+ output = "macro_ttc_pit_block_2";
+ break;
+ case MacroPresets::macro_ttc_elevator_platform:
+ output = "macro_ttc_elevator_platform";
+ break;
+ case MacroPresets::macro_ttc_clock_hand:
+ output = "macro_ttc_clock_hand";
+ break;
+ case MacroPresets::macro_ttc_spinner:
+ output = "macro_ttc_spinner";
+ break;
+ case MacroPresets::macro_ttc_small_gear:
+ output = "macro_ttc_small_gear";
+ break;
+ case MacroPresets::macro_ttc_large_gear:
+ output = "macro_ttc_large_gear";
+ break;
+ case MacroPresets::macro_ttc_large_treadmill_2:
+ output = "macro_ttc_large_treadmill_2";
+ break;
+ case MacroPresets::macro_ttc_small_treadmill_2:
+ output = "macro_ttc_small_treadmill_2";
+ break;
+ case MacroPresets::macro_empty_330:
+ output = "macro_empty_330";
+ break;
+ case MacroPresets::macro_empty_331:
+ output = "macro_empty_331";
+ break;
+ case MacroPresets::macro_empty_332:
+ output = "macro_empty_332";
+ break;
+ case MacroPresets::macro_empty_333:
+ output = "macro_empty_333";
+ break;
+ case MacroPresets::macro_empty_334:
+ output = "macro_empty_334";
+ break;
+ case MacroPresets::macro_empty_335:
+ output = "macro_empty_335";
+ break;
+ case MacroPresets::macro_empty_336:
+ output = "macro_empty_336";
+ break;
+ case MacroPresets::macro_empty_337:
+ output = "macro_empty_337";
+ break;
+ case MacroPresets::macro_empty_338:
+ output = "macro_empty_338";
+ break;
+ case MacroPresets::macro_box_star_2:
+ output = "macro_box_star_2";
+ break;
+ case MacroPresets::macro_box_star_3:
+ output = "macro_box_star_3";
+ break;
+ case MacroPresets::macro_box_star_4:
+ output = "macro_box_star_4";
+ break;
+ case MacroPresets::macro_box_star_5:
+ output = "macro_box_star_5";
+ break;
+ case MacroPresets::macro_box_star_6:
+ output = "macro_box_star_6";
+ break;
+ case MacroPresets::macro_empty_344:
+ output = "macro_empty_344";
+ break;
+ case MacroPresets::macro_empty_345:
+ output = "macro_empty_345";
+ break;
+ case MacroPresets::macro_empty_346:
+ output = "macro_empty_346";
+ break;
+ case MacroPresets::macro_empty_347:
+ output = "macro_empty_347";
+ break;
+ case MacroPresets::macro_empty_348:
+ output = "macro_empty_348";
+ break;
+ case MacroPresets::macro_empty_349:
+ output = "macro_empty_349";
+ break;
+ case MacroPresets::macro_bits_sliding_platform:
+ output = "macro_bits_sliding_platform";
+ break;
+ case MacroPresets::macro_bits_twin_sliding_platforms:
+ output = "macro_bits_twin_sliding_platforms";
+ break;
+ case MacroPresets::macro_bits_unknown_352:
+ output = "macro_bits_unknown_352";
+ break;
+ case MacroPresets::macro_bits_octagonal_platform:
+ output = "macro_bits_octagonal_platform";
+ break;
+ case MacroPresets::macro_bits_staircase:
+ output = "macro_bits_staircase";
+ break;
+ case MacroPresets::macro_empty_355:
+ output = "macro_empty_355";
+ break;
+ case MacroPresets::macro_empty_356:
+ output = "macro_empty_356";
+ break;
+ case MacroPresets::macro_bits_ferris_wheel_axle:
+ output = "macro_bits_ferris_wheel_axle";
+ break;
+ case MacroPresets::macro_bits_arrow_platform:
+ output = "macro_bits_arrow_platform";
+ break;
+ case MacroPresets::macro_bits_seesaw_platform:
+ output = "macro_bits_seesaw_platform";
+ break;
+ case MacroPresets::macro_bits_tilting_w_platform:
+ output = "macro_bits_tilting_w_platform";
+ break;
+ case MacroPresets::macro_empty_361:
+ output = "macro_empty_361";
+ break;
+ case MacroPresets::macro_empty_362:
+ output = "macro_empty_362";
+ break;
+ case MacroPresets::macro_empty_363:
+ output = "macro_empty_363";
+ break;
+ case MacroPresets::macro_empty_364:
+ output = "macro_empty_364";
+ break;
+ case MacroPresets::macro_empty_365:
+ output = "macro_empty_365";
+ break;
+ }
+ return out << output;
+} \ No newline at end of file