From 7b4533667d023d45c73f929b2869b42adefc546f Mon Sep 17 00:00:00 2001 From: TheLX5 Date: Sun, 5 Nov 2023 17:23:24 -0700 Subject: [PATCH] Initial v2 files they work on AP 0.4.3 --- worlds/smw/Aesthetics.py | 874 +++++++- worlds/smw/Client.py | 151 +- worlds/smw/Items.py | 7 +- worlds/smw/Levels.py | 789 ++++++- worlds/smw/Locations.py | 831 +++++++- worlds/smw/Names/ItemName.py | 7 + worlds/smw/Names/LocationName.py | 685 ++++++ worlds/smw/Options.py | 103 +- worlds/smw/Regions.py | 1217 ++++++++++- worlds/smw/Rom.py | 1895 ++++++++++++++++- worlds/smw/Rules.py | 4 +- worlds/smw/__init__.py | 68 +- worlds/smw/data/blocksanity_data.bin | Bin 0 -> 4268 bytes worlds/smw/data/graphics/ability_icons.bin | Bin 0 -> 1024 bytes worlds/smw/data/graphics/indicators.bin | Bin 0 -> 384 bytes .../level/castle_pillars/agnus_castle.mw3 | Bin 0 -> 514 bytes .../palettes/level/castle_pillars/cheese.mw3 | Bin 0 -> 514 bytes .../level/castle_pillars/chocolate_blue.mw3 | Bin 0 -> 514 bytes .../level/castle_pillars/dark_aqua_marine.mw3 | Bin 0 -> 514 bytes .../level/castle_pillars/dollhouse.mw3 | Bin 0 -> 514 bytes .../level/castle_pillars/gold_caslte.mw3 | Bin 0 -> 514 bytes .../level/castle_pillars/keves_castle.mw3 | Bin 0 -> 514 bytes .../level/castle_pillars/original_gray.mw3 | Bin 0 -> 514 bytes .../level/castle_pillars/original_green.mw3 | Bin 0 -> 514 bytes .../level/castle_pillars/original_mustard.mw3 | Bin 0 -> 514 bytes .../level/castle_pillars/original_white.mw3 | Bin 0 -> 514 bytes .../level/castle_pillars/pink_purple.mw3 | Bin 0 -> 514 bytes .../level/castle_pillars/purple_pink.mw3 | Bin 0 -> 514 bytes .../level/castle_pillars/sand_gray.mw3 | Bin 0 -> 514 bytes .../level/castle_pillars/sand_green.mw3 | Bin 0 -> 514 bytes .../palettes/level/castle_pillars/shenhe.mw3 | Bin 0 -> 514 bytes .../level/castle_pillars/whatsapp.mw3 | Bin 0 -> 514 bytes .../level/castle_small_windows/dark_lava.mw3 | Bin 0 -> 514 bytes .../castle_small_windows/dark_purple.mw3 | Bin 0 -> 514 bytes .../level/castle_small_windows/dollhouse.mw3 | Bin 0 -> 514 bytes .../castle_small_windows/forgotten_temple.mw3 | Bin 0 -> 514 bytes .../castle_small_windows/original_gray.mw3 | Bin 0 -> 514 bytes .../original_volcanic.mw3 | Bin 0 -> 514 bytes .../castle_small_windows/original_water.mw3 | Bin 0 -> 514 bytes .../level/castle_small_windows/sand_gray.mw3 | Bin 0 -> 514 bytes .../level/castle_small_windows/sand_green.mw3 | Bin 0 -> 514 bytes .../level/castle_small_windows/shenhe.mw3 | Bin 0 -> 514 bytes .../level/castle_small_windows/water.mw3 | Bin 0 -> 514 bytes .../level/castle_small_windows/whatsapp.mw3 | Bin 0 -> 514 bytes .../palettes/level/castle_wall/cheese.mw3 | Bin 0 -> 514 bytes .../palettes/level/castle_wall/dollhouse.mw3 | Bin 0 -> 514 bytes .../level/castle_wall/grand_marshall.mw3 | Bin 0 -> 514 bytes .../palettes/level/castle_wall/hot_wall.mw3 | Bin 0 -> 514 bytes .../palettes/level/castle_wall/original.mw3 | Bin 0 -> 514 bytes .../palettes/level/castle_wall/sand_green.mw3 | Bin 0 -> 514 bytes .../palettes/level/castle_wall/shenhe.mw3 | Bin 0 -> 514 bytes .../data/palettes/level/castle_wall/water.mw3 | Bin 0 -> 514 bytes .../level/castle_windows/brawler_pink.mw3 | Bin 0 -> 514 bytes .../palettes/level/castle_windows/cheese.mw3 | Bin 0 -> 514 bytes .../level/castle_windows/dark_aqua_marine.mw3 | Bin 0 -> 514 bytes .../level/castle_windows/dollhouse.mw3 | Bin 0 -> 514 bytes .../level/castle_windows/original_brown.mw3 | Bin 0 -> 514 bytes .../level/castle_windows/original_gray.mw3 | Bin 0 -> 514 bytes .../level/castle_windows/original_water.mw3 | Bin 0 -> 514 bytes .../level/castle_windows/red_castle.mw3 | Bin 0 -> 514 bytes .../palettes/level/castle_windows/shenhe.mw3 | Bin 0 -> 514 bytes .../level/castle_windows/underwater.mw3 | Bin 0 -> 514 bytes .../palettes/level/castle_windows/water.mw3 | Bin 0 -> 514 bytes .../level/castle_windows/whatsapp.mw3 | Bin 0 -> 514 bytes .../data/palettes/level/cave/brawler_dark.mw3 | Bin 0 -> 514 bytes .../palettes/level/cave/brawler_purple.mw3 | Bin 0 -> 514 bytes .../data/palettes/level/cave/brawler_red.mw3 | Bin 0 -> 514 bytes .../data/palettes/level/cave/brawler_teal.mw3 | Bin 0 -> 514 bytes .../data/palettes/level/cave/bright_magma.mw3 | Bin 0 -> 514 bytes .../smw/data/palettes/level/cave/dark_red.mw3 | Bin 0 -> 514 bytes .../palettes/level/cave/glowing_mushroom.mw3 | Bin 0 -> 514 bytes .../data/palettes/level/cave/green_depths.mw3 | Bin 0 -> 514 bytes worlds/smw/data/palettes/level/cave/ice.mw3 | Bin 0 -> 514 bytes .../data/palettes/level/cave/magma_cave.mw3 | Bin 0 -> 514 bytes .../level/cave/original_chocolate.mw3 | Bin 0 -> 514 bytes .../palettes/level/cave/original_gray.mw3 | Bin 0 -> 514 bytes .../data/palettes/level/cave/original_ice.mw3 | Bin 0 -> 514 bytes .../palettes/level/cave/original_mustard.mw3 | Bin 0 -> 514 bytes .../palettes/level/cave/original_volcanic.mw3 | Bin 0 -> 514 bytes worlds/smw/data/palettes/level/cave/snow.mw3 | Bin 0 -> 514 bytes worlds/smw/data/palettes/level/cave/toxic.mw3 | Bin 0 -> 514 bytes .../data/palettes/level/cave/toxic_moss.mw3 | Bin 0 -> 514 bytes .../bocchi_rock_hair_cube_things.mw3 | Bin 0 -> 514 bytes .../level/cave_rocks/brawler_volcanic.mw3 | Bin 0 -> 514 bytes .../data/palettes/level/cave_rocks/ice.mw3 | Bin 0 -> 514 bytes .../palettes/level/cave_rocks/layer_2.mw3 | Bin 0 -> 514 bytes .../level/cave_rocks/original_gray.mw3 | Bin 0 -> 514 bytes .../level/cave_rocks/original_mustard.mw3 | Bin 0 -> 514 bytes .../cave_rocks/pyra_mythra_ft_pneuma.mw3 | Bin 0 -> 514 bytes .../data/palettes/level/cave_rocks/snow.mw3 | Bin 0 -> 514 bytes .../data/palettes/level/cave_rocks/toxic.mw3 | Bin 0 -> 514 bytes .../data/palettes/level/clouds/atardecer.mw3 | Bin 0 -> 514 bytes .../data/palettes/level/clouds/charcoal.mw3 | Bin 0 -> 514 bytes .../smw/data/palettes/level/clouds/cloudy.mw3 | Bin 0 -> 514 bytes .../palettes/level/clouds/cotton_candy.mw3 | Bin 0 -> 514 bytes .../palettes/level/clouds/original_green.mw3 | Bin 0 -> 514 bytes .../palettes/level/clouds/original_orange.mw3 | Bin 0 -> 514 bytes .../palettes/level/forest/agnian_queen.mw3 | Bin 0 -> 514 bytes .../data/palettes/level/forest/atardecer.mw3 | Bin 0 -> 514 bytes .../smw/data/palettes/level/forest/frozen.mw3 | Bin 0 -> 514 bytes .../data/palettes/level/forest/halloween.mw3 | Bin 0 -> 514 bytes .../palettes/level/forest/kevesi_queen.mw3 | Bin 0 -> 514 bytes .../palettes/level/forest/original_dark.mw3 | Bin 0 -> 514 bytes .../palettes/level/forest/original_fall.mw3 | Bin 0 -> 514 bytes .../palettes/level/forest/original_green.mw3 | Bin 0 -> 514 bytes .../smw/data/palettes/level/forest/sakura.mw3 | Bin 0 -> 514 bytes .../level/forest/snow_dark_leaves.mw3 | Bin 0 -> 514 bytes .../level/forest/snow_green_leaves.mw3 | Bin 0 -> 514 bytes .../level/ghost_house/brawler_cyan.mw3 | Bin 0 -> 514 bytes .../level/ghost_house/brawler_orange.mw3 | Bin 0 -> 514 bytes .../level/ghost_house/brawler_purple.mw3 | Bin 0 -> 514 bytes .../level/ghost_house/creepypasta.mw3 | Bin 0 -> 514 bytes .../level/ghost_house/crimson_house.mw3 | Bin 0 -> 514 bytes .../level/ghost_house/golden_house.mw3 | Bin 0 -> 514 bytes .../level/ghost_house/halloween_pallet.mw3 | Bin 0 -> 514 bytes .../level/ghost_house/orange_lights.mw3 | Bin 0 -> 514 bytes .../level/ghost_house/original_aqua.mw3 | Bin 0 -> 514 bytes .../level/ghost_house/original_blue.mw3 | Bin 0 -> 514 bytes .../level/ghost_house/original_dark.mw3 | Bin 0 -> 514 bytes .../level/ghost_house/original_white.mw3 | Bin 0 -> 514 bytes .../level/ghost_house_exit/evening_exit.mw3 | Bin 0 -> 514 bytes .../level/ghost_house_exit/golden_house.mw3 | Bin 0 -> 514 bytes .../level/ghost_house_exit/original.mw3 | Bin 0 -> 514 bytes .../ghost_house_exit/original_blue_door.mw3 | Bin 0 -> 514 bytes .../level/ghost_house_exit/underwater.mw3 | Bin 0 -> 514 bytes .../palettes/level/grass_clouds/atardecer.mw3 | Bin 0 -> 514 bytes .../palettes/level/grass_clouds/crimson.mw3 | Bin 0 -> 514 bytes .../palettes/level/grass_clouds/electro.mw3 | Bin 0 -> 514 bytes .../data/palettes/level/grass_clouds/geo.mw3 | Bin 0 -> 514 bytes .../data/palettes/level/grass_clouds/miku.mw3 | Bin 0 -> 514 bytes .../level/grass_clouds/original_blue.mw3 | Bin 0 -> 514 bytes .../level/grass_clouds/original_green.mw3 | Bin 0 -> 514 bytes .../palettes/level/grass_clouds/pizza.mw3 | Bin 0 -> 514 bytes .../palettes/level/grass_clouds/sakura.mw3 | Bin 0 -> 514 bytes .../palettes/level/grass_clouds/shukfr.mw3 | Bin 0 -> 514 bytes .../palettes/level/grass_clouds/snow_day.mw3 | Bin 0 -> 514 bytes .../level/grass_clouds/volcanic_rock.mw3 | Bin 0 -> 514 bytes .../palettes/level/grass_forest/atardecer.mw3 | Bin 0 -> 514 bytes .../palettes/level/grass_forest/autumn.mw3 | Bin 0 -> 514 bytes .../palettes/level/grass_forest/brawler.mw3 | Bin 0 -> 514 bytes .../level/grass_forest/brawler_atardecer.mw3 | Bin 0 -> 514 bytes .../level/grass_forest/brawler_green.mw3 | Bin 0 -> 514 bytes .../palettes/level/grass_forest/crimson.mw3 | Bin 0 -> 514 bytes .../level/grass_forest/deep_forest.mw3 | Bin 0 -> 514 bytes .../palettes/level/grass_forest/electro.mw3 | Bin 0 -> 514 bytes .../data/palettes/level/grass_forest/geo.mw3 | Bin 0 -> 514 bytes .../data/palettes/level/grass_forest/miku.mw3 | Bin 0 -> 514 bytes .../data/palettes/level/grass_forest/myon.mw3 | Bin 0 -> 514 bytes .../level/grass_forest/original_aqua.mw3 | Bin 0 -> 514 bytes .../level/grass_forest/original_green.mw3 | Bin 0 -> 514 bytes .../palettes/level/grass_forest/pizza.mw3 | Bin 0 -> 514 bytes .../palettes/level/grass_forest/sakura.mw3 | Bin 0 -> 514 bytes .../level/grass_forest/snow_dark_leaves.mw3 | Bin 0 -> 514 bytes .../level/grass_forest/snow_green.mw3 | Bin 0 -> 514 bytes .../palettes/level/grass_forest/winter.mw3 | Bin 0 -> 514 bytes .../palettes/level/grass_hills/atardecer.mw3 | Bin 0 -> 514 bytes .../level/grass_hills/brawler_green.mw3 | Bin 0 -> 514 bytes .../palettes/level/grass_hills/crimson.mw3 | Bin 0 -> 514 bytes .../palettes/level/grass_hills/electro.mw3 | Bin 0 -> 514 bytes .../data/palettes/level/grass_hills/geo.mw3 | Bin 0 -> 514 bytes .../data/palettes/level/grass_hills/miku.mw3 | Bin 0 -> 514 bytes .../palettes/level/grass_hills/mogumogu.mw3 | Bin 0 -> 514 bytes .../palettes/level/grass_hills/nocturno.mw3 | Bin 0 -> 514 bytes .../palettes/level/grass_hills/original.mw3 | Bin 0 -> 514 bytes .../palettes/level/grass_hills/sakura.mw3 | Bin 0 -> 514 bytes .../data/palettes/level/grass_hills/snow.mw3 | Bin 0 -> 514 bytes .../grass_hills/sunsetish_grass_hills.mw3 | Bin 0 -> 514 bytes .../palettes/level/grass_hills/toothpaste.mw3 | Bin 0 -> 514 bytes .../grass_mountains/brawler_lifeless.mw3 | Bin 0 -> 514 bytes .../level/grass_mountains/classic_sm.mw3 | Bin 0 -> 514 bytes .../level/grass_mountains/crimson.mw3 | Bin 0 -> 514 bytes .../level/grass_mountains/dry_hills.mw3 | Bin 0 -> 514 bytes .../level/grass_mountains/electro.mw3 | Bin 0 -> 514 bytes .../palettes/level/grass_mountains/geo.mw3 | Bin 0 -> 514 bytes .../level/grass_mountains/late_sandish.mw3 | Bin 0 -> 514 bytes .../palettes/level/grass_mountains/miku.mw3 | Bin 0 -> 514 bytes .../level/grass_mountains/original_aqua.mw3 | Bin 0 -> 514 bytes .../level/grass_mountains/original_blue.mw3 | Bin 0 -> 514 bytes .../level/grass_mountains/original_green.mw3 | Bin 0 -> 514 bytes .../level/grass_mountains/original_white.mw3 | Bin 0 -> 514 bytes .../level/grass_mountains/recksfr.mw3 | Bin 0 -> 514 bytes .../level/grass_mountains/sakura_hills.mw3 | Bin 0 -> 514 bytes .../level/grass_mountains/snow_day.mw3 | Bin 0 -> 514 bytes .../palettes/level/grass_rocks/atardecer.mw3 | Bin 0 -> 514 bytes .../palettes/level/grass_rocks/crimson.mw3 | Bin 0 -> 514 bytes .../data/palettes/level/grass_rocks/dark.mw3 | Bin 0 -> 514 bytes .../palettes/level/grass_rocks/electro.mw3 | Bin 0 -> 514 bytes .../level/grass_rocks/flat_brown_green.mw3 | Bin 0 -> 514 bytes .../data/palettes/level/grass_rocks/geo.mw3 | Bin 0 -> 514 bytes .../data/palettes/level/grass_rocks/ice.mw3 | Bin 0 -> 514 bytes .../data/palettes/level/grass_rocks/miku.mw3 | Bin 0 -> 514 bytes .../palettes/level/grass_rocks/napolitano.mw3 | Bin 0 -> 514 bytes .../level/grass_rocks/original_aqua.mw3 | Bin 0 -> 514 bytes .../grass_rocks/original_choco_volcanic.mw3 | Bin 0 -> 514 bytes .../level/grass_rocks/original_ice.mw3 | Bin 0 -> 514 bytes .../level/grass_rocks/original_volcanic.mw3 | Bin 0 -> 514 bytes .../grass_rocks/original_volcanic_green.mw3 | Bin 0 -> 514 bytes .../level/grass_rocks/original_white.mw3 | Bin 0 -> 514 bytes .../level/grass_rocks/original_white_2.mw3 | Bin 0 -> 514 bytes .../data/palettes/level/grass_rocks/recks.mw3 | Bin 0 -> 514 bytes .../palettes/level/grass_rocks/sakura.mw3 | Bin 0 -> 514 bytes .../palettes/level/grass_rocks/thanks_doc.mw3 | Bin 0 -> 514 bytes .../smw/data/palettes/level/logs/brawler.mw3 | Bin 0 -> 514 bytes .../smw/data/palettes/level/logs/evening.mw3 | Bin 0 -> 514 bytes .../smw/data/palettes/level/logs/mahogany.mw3 | Bin 0 -> 514 bytes .../level/logs/not_quite_dawnbreak.mw3 | Bin 0 -> 514 bytes .../smw/data/palettes/level/logs/original.mw3 | Bin 0 -> 514 bytes .../level/logs/riesgo_de_chubascos.mw3 | Bin 0 -> 514 bytes .../level/mushroom_cave/argent_cave.mw3 | Bin 0 -> 514 bytes .../level/mushroom_cave/glowing_mushroom.mw3 | Bin 0 -> 514 bytes .../level/mushroom_cave/green_aqua.mw3 | Bin 0 -> 514 bytes .../data/palettes/level/mushroom_cave/ice.mw3 | Bin 0 -> 514 bytes .../palettes/level/mushroom_cave/original.mw3 | Bin 0 -> 514 bytes .../level/mushroom_cave/really_dark.mw3 | Bin 0 -> 514 bytes .../palettes/level/mushroom_cave/toxic.mw3 | Bin 0 -> 514 bytes .../level/mushroom_clouds/atardecer.mw3 | Bin 0 -> 514 bytes .../level/mushroom_clouds/greenshroom.mw3 | Bin 0 -> 514 bytes .../level/mushroom_clouds/oilshroom.mw3 | Bin 0 -> 514 bytes .../level/mushroom_clouds/original_aqua.mw3 | Bin 0 -> 514 bytes .../level/mushroom_clouds/original_blue.mw3 | Bin 0 -> 514 bytes .../level/mushroom_clouds/original_yellow.mw3 | Bin 0 -> 514 bytes .../mushroom_clouds/riesgo_de_chubascos.mw3 | Bin 0 -> 514 bytes .../level/mushroom_forest/atardecer.mw3 | Bin 0 -> 514 bytes .../palettes/level/mushroom_forest/autumn.mw3 | Bin 0 -> 514 bytes .../mushroom_forest/count_shroomcula.mw3 | Bin 0 -> 514 bytes .../level/mushroom_forest/cursed_gold.mw3 | Bin 0 -> 514 bytes .../level/mushroom_forest/dark_green.mw3 | Bin 0 -> 514 bytes .../level/mushroom_forest/lifeless_gray.mw3 | Bin 0 -> 514 bytes .../level/mushroom_forest/original.mw3 | Bin 0 -> 514 bytes .../level/mushroom_forest/snow_dark.mw3 | Bin 0 -> 514 bytes .../level/mushroom_forest/snow_green.mw3 | Bin 0 -> 514 bytes .../level/mushroom_hills/atardecer.mw3 | Bin 0 -> 514 bytes .../mushroom_hills/atardecer_naranjo.mw3 | Bin 0 -> 514 bytes .../level/mushroom_hills/atardecer_verde.mw3 | Bin 0 -> 514 bytes .../palettes/level/mushroom_hills/future.mw3 | Bin 0 -> 514 bytes .../level/mushroom_hills/original.mw3 | Bin 0 -> 514 bytes .../riesgo_de_chubascos_azul.mw3 | Bin 0 -> 514 bytes .../riesgo_de_chubascos_cafe.mw3 | Bin 0 -> 514 bytes .../riesgo_de_chubascos_negro.mw3 | Bin 0 -> 514 bytes .../level/mushroom_hills/watermelon_skies.mw3 | Bin 0 -> 514 bytes .../level/mushroom_rocks/atardecer.mw3 | Bin 0 -> 514 bytes .../level/mushroom_rocks/brightshroom.mw3 | Bin 0 -> 514 bytes .../level/mushroom_rocks/original_green.mw3 | Bin 0 -> 514 bytes .../level/mushroom_rocks/original_ice.mw3 | Bin 0 -> 514 bytes .../mushroom_rocks/original_volcanic.mw3 | Bin 0 -> 514 bytes .../level/mushroom_rocks/original_white.mw3 | Bin 0 -> 514 bytes .../riesgo_de_chubascos_cafe.mw3 | Bin 0 -> 514 bytes .../riesgo_de_chubascos_negro.mw3 | Bin 0 -> 514 bytes .../level/mushroom_rocks/shuk_ft_reyn.mw3 | Bin 0 -> 514 bytes .../level/mushroom_stars/atardecer.mw3 | Bin 0 -> 514 bytes .../palettes/level/mushroom_stars/cool.mw3 | Bin 0 -> 514 bytes .../level/mushroom_stars/dark_night.mw3 | Bin 0 -> 514 bytes .../level/mushroom_stars/halloween.mw3 | Bin 0 -> 514 bytes .../level/mushroom_stars/light_pollution.mw3 | Bin 0 -> 514 bytes .../palettes/level/mushroom_stars/midas.mw3 | Bin 0 -> 514 bytes .../level/mushroom_stars/original_green.mw3 | Bin 0 -> 514 bytes .../level/mushroom_stars/original_night.mw3 | Bin 0 -> 514 bytes .../level/mushroom_stars/purpleish_night.mw3 | Bin 0 -> 514 bytes .../mushroom_stars/riesgo_de_chubascos.mw3 | Bin 0 -> 514 bytes worlds/smw/data/palettes/level/palettes.json | 350 +++ .../level/ship_exterior/blue_purple.mw3 | Bin 0 -> 514 bytes .../palettes/level/ship_exterior/doc_ship.mw3 | Bin 0 -> 514 bytes .../level/ship_exterior/grey_ship.mw3 | Bin 0 -> 514 bytes .../palettes/level/ship_exterior/original.mw3 | Bin 0 -> 514 bytes .../palettes/level/ship_exterior/reddish.mw3 | Bin 0 -> 514 bytes .../level/ship_interior/blue_purple.mw3 | Bin 0 -> 514 bytes .../level/ship_interior/bocchi_hitori.mw3 | Bin 0 -> 514 bytes .../level/ship_interior/bocchi_rock.mw3 | Bin 0 -> 514 bytes .../palettes/level/ship_interior/brawler.mw3 | Bin 0 -> 514 bytes .../level/ship_interior/grey_ship.mw3 | Bin 0 -> 514 bytes .../palettes/level/ship_interior/original.mw3 | Bin 0 -> 514 bytes .../level/switch_palace/blue_grid.mw3 | Bin 0 -> 514 bytes .../level/switch_palace/brawler_brown.mw3 | Bin 0 -> 514 bytes .../level/switch_palace/cafe_claro.mw3 | Bin 0 -> 514 bytes .../level/switch_palace/color_de_gato.mw3 | Bin 0 -> 514 bytes .../level/switch_palace/color_del_gato_2.mw3 | Bin 0 -> 514 bytes .../level/switch_palace/green_grid.mw3 | Bin 0 -> 514 bytes .../palettes/level/switch_palace/gris.mw3 | Bin 0 -> 514 bytes .../level/switch_palace/mario_pants.mw3 | Bin 0 -> 514 bytes .../palettes/level/switch_palace/monado.mw3 | Bin 0 -> 514 bytes .../palettes/level/switch_palace/morado.mw3 | Bin 0 -> 514 bytes .../palettes/level/switch_palace/negro.mw3 | Bin 0 -> 514 bytes .../palettes/level/switch_palace/onigiria.mw3 | Bin 0 -> 514 bytes .../palettes/level/switch_palace/original.mw3 | Bin 0 -> 514 bytes .../level/switch_palace/original_bonus.mw3 | Bin 0 -> 514 bytes .../palettes/level/switch_palace/pink.mw3 | Bin 0 -> 514 bytes .../palettes/level/switch_palace/red_grid.mw3 | Bin 0 -> 514 bytes .../palettes/level/switch_palace/verde.mw3 | Bin 0 -> 514 bytes .../level/switch_palace/verde_agua.mw3 | Bin 0 -> 514 bytes .../level/switch_palace/yellow_grid.mw3 | Bin 0 -> 514 bytes .../palettes/level/switch_palace/youbonus.mw3 | Bin 0 -> 514 bytes .../data/palettes/level/water/dark_water.mw3 | Bin 0 -> 514 bytes .../data/palettes/level/water/deep_aqua.mw3 | Bin 0 -> 514 bytes .../palettes/level/water/deep_chocolate.mw3 | Bin 0 -> 514 bytes .../palettes/level/water/harmless_magma.mw3 | Bin 0 -> 514 bytes .../smw/data/palettes/level/water/murky.mw3 | Bin 0 -> 514 bytes .../data/palettes/level/water/oil_spill.mw3 | Bin 0 -> 514 bytes .../palettes/level/water/original_brown.mw3 | Bin 0 -> 514 bytes .../palettes/level/water/original_gray.mw3 | Bin 0 -> 514 bytes .../palettes/level/water/original_green.mw3 | Bin 0 -> 514 bytes .../palettes/level/water/original_mustard.mw3 | Bin 0 -> 514 bytes .../level/water/original_volcanic.mw3 | Bin 0 -> 514 bytes .../palettes/level/water/pickle_juice.mw3 | Bin 0 -> 514 bytes .../data/palettes/level/yoshi_house/choco.mw3 | Bin 0 -> 514 bytes .../palettes/level/yoshi_house/monocromo.mw3 | Bin 0 -> 514 bytes .../data/palettes/level/yoshi_house/neon.mw3 | Bin 0 -> 514 bytes .../data/palettes/level/yoshi_house/nieve.mw3 | Bin 0 -> 514 bytes .../data/palettes/level/yoshi_house/night.mw3 | Bin 0 -> 514 bytes .../palettes/level/yoshi_house/original.mw3 | Bin 0 -> 514 bytes .../palettes/level/yoshi_house/strong_sun.mw3 | Bin 0 -> 514 bytes .../data/palettes/map/forest/atardecer.mw3 | Bin 0 -> 514 bytes .../data/palettes/map/forest/burnt_forest.mw3 | Bin 0 -> 514 bytes .../data/palettes/map/forest/dark_forest.mw3 | Bin 0 -> 514 bytes .../data/palettes/map/forest/halloween.mw3 | Bin 0 -> 514 bytes .../data/palettes/map/forest/ice_forest.mw3 | Bin 0 -> 514 bytes .../data/palettes/map/forest/lost_woods.mw3 | Bin 0 -> 514 bytes worlds/smw/data/palettes/map/forest/mono.mw3 | Bin 0 -> 514 bytes .../smw/data/palettes/map/forest/original.mw3 | Bin 0 -> 514 bytes .../palettes/map/forest/original_special.mw3 | Bin 0 -> 514 bytes worlds/smw/data/palettes/map/forest/sepia.mw3 | Bin 0 -> 514 bytes .../smw/data/palettes/map/forest/snow_day.mw3 | Bin 0 -> 514 bytes .../data/palettes/map/forest/virtual_boy.mw3 | Bin 0 -> 514 bytes .../smw/data/palettes/map/main/atardecer.mw3 | Bin 0 -> 514 bytes worlds/smw/data/palettes/map/main/brawler.mw3 | Bin 0 -> 514 bytes .../data/palettes/map/main/cake_frosting.mw3 | Bin 0 -> 514 bytes .../smw/data/palettes/map/main/invertido.mw3 | Bin 0 -> 514 bytes worlds/smw/data/palettes/map/main/mono.mw3 | Bin 0 -> 514 bytes worlds/smw/data/palettes/map/main/morning.mw3 | Bin 0 -> 514 bytes worlds/smw/data/palettes/map/main/night.mw3 | Bin 0 -> 514 bytes .../smw/data/palettes/map/main/night_time.mw3 | Bin 0 -> 514 bytes .../smw/data/palettes/map/main/original.mw3 | Bin 0 -> 514 bytes .../palettes/map/main/original_special.mw3 | Bin 0 -> 514 bytes worlds/smw/data/palettes/map/main/sepia.mw3 | Bin 0 -> 514 bytes .../smw/data/palettes/map/main/snow_day.mw3 | Bin 0 -> 514 bytes .../data/palettes/map/main/virtual_boy.mw3 | Bin 0 -> 514 bytes worlds/smw/data/palettes/map/palettes.json | 99 + .../data/palettes/map/special/black_out.mw3 | Bin 0 -> 514 bytes .../data/palettes/map/special/blood_star.mw3 | Bin 0 -> 514 bytes .../smw/data/palettes/map/special/brawler.mw3 | Bin 0 -> 514 bytes .../smw/data/palettes/map/special/green.mw3 | Bin 0 -> 514 bytes .../map/special/light_pollution_map.mw3 | Bin 0 -> 514 bytes .../data/palettes/map/special/original.mw3 | Bin 0 -> 514 bytes .../smw/data/palettes/map/special/purple.mw3 | Bin 0 -> 514 bytes .../data/palettes/map/special/virtual_boy.mw3 | Bin 0 -> 514 bytes .../palettes/map/special/white_special.mw3 | Bin 0 -> 514 bytes .../smw/data/palettes/map/star/blood_moon.mw3 | Bin 0 -> 514 bytes worlds/smw/data/palettes/map/star/mono.mw3 | Bin 0 -> 514 bytes .../data/palettes/map/star/mountain_top.mw3 | Bin 0 -> 514 bytes .../smw/data/palettes/map/star/original.mw3 | Bin 0 -> 514 bytes .../palettes/map/star/original_special.mw3 | Bin 0 -> 514 bytes .../smw/data/palettes/map/star/pink_star.mw3 | Bin 0 -> 514 bytes worlds/smw/data/palettes/map/star/sepia.mw3 | Bin 0 -> 514 bytes .../data/palettes/map/star/virtual_boy.mw3 | Bin 0 -> 514 bytes .../data/palettes/map/star/yellow_star.mw3 | Bin 0 -> 514 bytes .../data/palettes/map/valley/Tamaulipas.mw3 | Bin 0 -> 514 bytes .../smw/data/palettes/map/valley/bowser.mw3 | Bin 0 -> 514 bytes .../palettes/map/valley/castle_colors.mw3 | Bin 0 -> 514 bytes .../data/palettes/map/valley/dark cave.mw3 | Bin 0 -> 514 bytes .../data/palettes/map/valley/dream_world.mw3 | Bin 0 -> 514 bytes .../data/palettes/map/valley/fire cave.mw3 | Bin 0 -> 514 bytes .../data/palettes/map/valley/invertido.mw3 | Bin 0 -> 514 bytes worlds/smw/data/palettes/map/valley/mono.mw3 | Bin 0 -> 514 bytes .../smw/data/palettes/map/valley/orange.mw3 | Bin 0 -> 514 bytes .../smw/data/palettes/map/valley/original.mw3 | Bin 0 -> 514 bytes .../palettes/map/valley/original_special.mw3 | Bin 0 -> 514 bytes .../data/palettes/map/valley/purple_blue.mw3 | Bin 0 -> 514 bytes worlds/smw/data/palettes/map/valley/sepia.mw3 | Bin 0 -> 514 bytes worlds/smw/data/palettes/map/valley/snow.mw3 | Bin 0 -> 514 bytes .../data/palettes/map/valley/virtual_boy.mw3 | Bin 0 -> 514 bytes worlds/smw/data/palettes/map/vanilla/DOMO.mw3 | Bin 0 -> 514 bytes .../data/palettes/map/vanilla/aqua_marine.mw3 | Bin 0 -> 514 bytes .../data/palettes/map/vanilla/dark cave.mw3 | Bin 0 -> 514 bytes .../data/palettes/map/vanilla/fire cave.mw3 | Bin 0 -> 514 bytes .../data/palettes/map/vanilla/gold_mine.mw3 | Bin 0 -> 514 bytes .../data/palettes/map/vanilla/invertido.mw3 | Bin 0 -> 514 bytes worlds/smw/data/palettes/map/vanilla/mono.mw3 | Bin 0 -> 514 bytes .../data/palettes/map/vanilla/original.mw3 | Bin 0 -> 514 bytes .../palettes/map/vanilla/original_special.mw3 | Bin 0 -> 514 bytes .../smw/data/palettes/map/vanilla/purple.mw3 | Bin 0 -> 514 bytes .../smw/data/palettes/map/vanilla/sepia.mw3 | Bin 0 -> 514 bytes .../data/palettes/map/vanilla/virtual_boy.mw3 | Bin 0 -> 514 bytes .../palettes/map/vanilla/witches_cauldron.mw3 | Bin 0 -> 514 bytes .../smw/data/palettes/map/yoshi/atardecer.mw3 | Bin 0 -> 514 bytes worlds/smw/data/palettes/map/yoshi/gum.mw3 | Bin 0 -> 514 bytes .../data/palettes/map/yoshi/lava_island.mw3 | Bin 0 -> 514 bytes worlds/smw/data/palettes/map/yoshi/mono.mw3 | Bin 0 -> 514 bytes .../smw/data/palettes/map/yoshi/original.mw3 | Bin 0 -> 514 bytes .../palettes/map/yoshi/original_special.mw3 | Bin 0 -> 514 bytes worlds/smw/data/palettes/map/yoshi/sepia.mw3 | Bin 0 -> 514 bytes .../smw/data/palettes/map/yoshi/snow_day.mw3 | Bin 0 -> 514 bytes worlds/smw/data/palettes/map/yoshi/sunset.mw3 | Bin 0 -> 514 bytes .../data/palettes/map/yoshi/tritanopia.mw3 | Bin 0 -> 514 bytes .../data/palettes/map/yoshi/virtual_boy.mw3 | Bin 0 -> 514 bytes .../data/palettes/map/yoshi/yochis_ailand.mw3 | Bin 0 -> 514 bytes 394 files changed, 6974 insertions(+), 106 deletions(-) create mode 100644 worlds/smw/data/blocksanity_data.bin create mode 100644 worlds/smw/data/graphics/ability_icons.bin create mode 100644 worlds/smw/data/graphics/indicators.bin create mode 100644 worlds/smw/data/palettes/level/castle_pillars/agnus_castle.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_pillars/cheese.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_pillars/chocolate_blue.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_pillars/dark_aqua_marine.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_pillars/dollhouse.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_pillars/gold_caslte.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_pillars/keves_castle.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_pillars/original_gray.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_pillars/original_green.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_pillars/original_mustard.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_pillars/original_white.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_pillars/pink_purple.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_pillars/purple_pink.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_pillars/sand_gray.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_pillars/sand_green.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_pillars/shenhe.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_pillars/whatsapp.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_small_windows/dark_lava.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_small_windows/dark_purple.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_small_windows/dollhouse.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_small_windows/forgotten_temple.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_small_windows/original_gray.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_small_windows/original_volcanic.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_small_windows/original_water.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_small_windows/sand_gray.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_small_windows/sand_green.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_small_windows/shenhe.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_small_windows/water.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_small_windows/whatsapp.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_wall/cheese.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_wall/dollhouse.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_wall/grand_marshall.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_wall/hot_wall.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_wall/original.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_wall/sand_green.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_wall/shenhe.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_wall/water.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_windows/brawler_pink.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_windows/cheese.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_windows/dark_aqua_marine.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_windows/dollhouse.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_windows/original_brown.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_windows/original_gray.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_windows/original_water.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_windows/red_castle.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_windows/shenhe.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_windows/underwater.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_windows/water.mw3 create mode 100644 worlds/smw/data/palettes/level/castle_windows/whatsapp.mw3 create mode 100644 worlds/smw/data/palettes/level/cave/brawler_dark.mw3 create mode 100644 worlds/smw/data/palettes/level/cave/brawler_purple.mw3 create mode 100644 worlds/smw/data/palettes/level/cave/brawler_red.mw3 create mode 100644 worlds/smw/data/palettes/level/cave/brawler_teal.mw3 create mode 100644 worlds/smw/data/palettes/level/cave/bright_magma.mw3 create mode 100644 worlds/smw/data/palettes/level/cave/dark_red.mw3 create mode 100644 worlds/smw/data/palettes/level/cave/glowing_mushroom.mw3 create mode 100644 worlds/smw/data/palettes/level/cave/green_depths.mw3 create mode 100644 worlds/smw/data/palettes/level/cave/ice.mw3 create mode 100644 worlds/smw/data/palettes/level/cave/magma_cave.mw3 create mode 100644 worlds/smw/data/palettes/level/cave/original_chocolate.mw3 create mode 100644 worlds/smw/data/palettes/level/cave/original_gray.mw3 create mode 100644 worlds/smw/data/palettes/level/cave/original_ice.mw3 create mode 100644 worlds/smw/data/palettes/level/cave/original_mustard.mw3 create mode 100644 worlds/smw/data/palettes/level/cave/original_volcanic.mw3 create mode 100644 worlds/smw/data/palettes/level/cave/snow.mw3 create mode 100644 worlds/smw/data/palettes/level/cave/toxic.mw3 create mode 100644 worlds/smw/data/palettes/level/cave/toxic_moss.mw3 create mode 100644 worlds/smw/data/palettes/level/cave_rocks/bocchi_rock_hair_cube_things.mw3 create mode 100644 worlds/smw/data/palettes/level/cave_rocks/brawler_volcanic.mw3 create mode 100644 worlds/smw/data/palettes/level/cave_rocks/ice.mw3 create mode 100644 worlds/smw/data/palettes/level/cave_rocks/layer_2.mw3 create mode 100644 worlds/smw/data/palettes/level/cave_rocks/original_gray.mw3 create mode 100644 worlds/smw/data/palettes/level/cave_rocks/original_mustard.mw3 create mode 100644 worlds/smw/data/palettes/level/cave_rocks/pyra_mythra_ft_pneuma.mw3 create mode 100644 worlds/smw/data/palettes/level/cave_rocks/snow.mw3 create mode 100644 worlds/smw/data/palettes/level/cave_rocks/toxic.mw3 create mode 100644 worlds/smw/data/palettes/level/clouds/atardecer.mw3 create mode 100644 worlds/smw/data/palettes/level/clouds/charcoal.mw3 create mode 100644 worlds/smw/data/palettes/level/clouds/cloudy.mw3 create mode 100644 worlds/smw/data/palettes/level/clouds/cotton_candy.mw3 create mode 100644 worlds/smw/data/palettes/level/clouds/original_green.mw3 create mode 100644 worlds/smw/data/palettes/level/clouds/original_orange.mw3 create mode 100644 worlds/smw/data/palettes/level/forest/agnian_queen.mw3 create mode 100644 worlds/smw/data/palettes/level/forest/atardecer.mw3 create mode 100644 worlds/smw/data/palettes/level/forest/frozen.mw3 create mode 100644 worlds/smw/data/palettes/level/forest/halloween.mw3 create mode 100644 worlds/smw/data/palettes/level/forest/kevesi_queen.mw3 create mode 100644 worlds/smw/data/palettes/level/forest/original_dark.mw3 create mode 100644 worlds/smw/data/palettes/level/forest/original_fall.mw3 create mode 100644 worlds/smw/data/palettes/level/forest/original_green.mw3 create mode 100644 worlds/smw/data/palettes/level/forest/sakura.mw3 create mode 100644 worlds/smw/data/palettes/level/forest/snow_dark_leaves.mw3 create mode 100644 worlds/smw/data/palettes/level/forest/snow_green_leaves.mw3 create mode 100644 worlds/smw/data/palettes/level/ghost_house/brawler_cyan.mw3 create mode 100644 worlds/smw/data/palettes/level/ghost_house/brawler_orange.mw3 create mode 100644 worlds/smw/data/palettes/level/ghost_house/brawler_purple.mw3 create mode 100644 worlds/smw/data/palettes/level/ghost_house/creepypasta.mw3 create mode 100644 worlds/smw/data/palettes/level/ghost_house/crimson_house.mw3 create mode 100644 worlds/smw/data/palettes/level/ghost_house/golden_house.mw3 create mode 100644 worlds/smw/data/palettes/level/ghost_house/halloween_pallet.mw3 create mode 100644 worlds/smw/data/palettes/level/ghost_house/orange_lights.mw3 create mode 100644 worlds/smw/data/palettes/level/ghost_house/original_aqua.mw3 create mode 100644 worlds/smw/data/palettes/level/ghost_house/original_blue.mw3 create mode 100644 worlds/smw/data/palettes/level/ghost_house/original_dark.mw3 create mode 100644 worlds/smw/data/palettes/level/ghost_house/original_white.mw3 create mode 100644 worlds/smw/data/palettes/level/ghost_house_exit/evening_exit.mw3 create mode 100644 worlds/smw/data/palettes/level/ghost_house_exit/golden_house.mw3 create mode 100644 worlds/smw/data/palettes/level/ghost_house_exit/original.mw3 create mode 100644 worlds/smw/data/palettes/level/ghost_house_exit/original_blue_door.mw3 create mode 100644 worlds/smw/data/palettes/level/ghost_house_exit/underwater.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_clouds/atardecer.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_clouds/crimson.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_clouds/electro.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_clouds/geo.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_clouds/miku.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_clouds/original_blue.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_clouds/original_green.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_clouds/pizza.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_clouds/sakura.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_clouds/shukfr.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_clouds/snow_day.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_clouds/volcanic_rock.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_forest/atardecer.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_forest/autumn.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_forest/brawler.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_forest/brawler_atardecer.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_forest/brawler_green.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_forest/crimson.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_forest/deep_forest.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_forest/electro.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_forest/geo.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_forest/miku.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_forest/myon.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_forest/original_aqua.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_forest/original_green.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_forest/pizza.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_forest/sakura.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_forest/snow_dark_leaves.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_forest/snow_green.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_forest/winter.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_hills/atardecer.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_hills/brawler_green.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_hills/crimson.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_hills/electro.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_hills/geo.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_hills/miku.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_hills/mogumogu.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_hills/nocturno.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_hills/original.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_hills/sakura.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_hills/snow.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_hills/sunsetish_grass_hills.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_hills/toothpaste.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_mountains/brawler_lifeless.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_mountains/classic_sm.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_mountains/crimson.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_mountains/dry_hills.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_mountains/electro.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_mountains/geo.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_mountains/late_sandish.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_mountains/miku.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_mountains/original_aqua.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_mountains/original_blue.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_mountains/original_green.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_mountains/original_white.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_mountains/recksfr.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_mountains/sakura_hills.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_mountains/snow_day.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_rocks/atardecer.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_rocks/crimson.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_rocks/dark.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_rocks/electro.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_rocks/flat_brown_green.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_rocks/geo.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_rocks/ice.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_rocks/miku.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_rocks/napolitano.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_rocks/original_aqua.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_rocks/original_choco_volcanic.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_rocks/original_ice.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_rocks/original_volcanic.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_rocks/original_volcanic_green.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_rocks/original_white.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_rocks/original_white_2.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_rocks/recks.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_rocks/sakura.mw3 create mode 100644 worlds/smw/data/palettes/level/grass_rocks/thanks_doc.mw3 create mode 100644 worlds/smw/data/palettes/level/logs/brawler.mw3 create mode 100644 worlds/smw/data/palettes/level/logs/evening.mw3 create mode 100644 worlds/smw/data/palettes/level/logs/mahogany.mw3 create mode 100644 worlds/smw/data/palettes/level/logs/not_quite_dawnbreak.mw3 create mode 100644 worlds/smw/data/palettes/level/logs/original.mw3 create mode 100644 worlds/smw/data/palettes/level/logs/riesgo_de_chubascos.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_cave/argent_cave.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_cave/glowing_mushroom.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_cave/green_aqua.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_cave/ice.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_cave/original.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_cave/really_dark.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_cave/toxic.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_clouds/atardecer.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_clouds/greenshroom.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_clouds/oilshroom.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_clouds/original_aqua.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_clouds/original_blue.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_clouds/original_yellow.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_clouds/riesgo_de_chubascos.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_forest/atardecer.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_forest/autumn.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_forest/count_shroomcula.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_forest/cursed_gold.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_forest/dark_green.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_forest/lifeless_gray.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_forest/original.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_forest/snow_dark.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_forest/snow_green.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_hills/atardecer.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_hills/atardecer_naranjo.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_hills/atardecer_verde.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_hills/future.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_hills/original.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_hills/riesgo_de_chubascos_azul.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_hills/riesgo_de_chubascos_cafe.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_hills/riesgo_de_chubascos_negro.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_hills/watermelon_skies.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_rocks/atardecer.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_rocks/brightshroom.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_rocks/original_green.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_rocks/original_ice.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_rocks/original_volcanic.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_rocks/original_white.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_rocks/riesgo_de_chubascos_cafe.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_rocks/riesgo_de_chubascos_negro.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_rocks/shuk_ft_reyn.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_stars/atardecer.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_stars/cool.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_stars/dark_night.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_stars/halloween.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_stars/light_pollution.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_stars/midas.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_stars/original_green.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_stars/original_night.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_stars/purpleish_night.mw3 create mode 100644 worlds/smw/data/palettes/level/mushroom_stars/riesgo_de_chubascos.mw3 create mode 100644 worlds/smw/data/palettes/level/palettes.json create mode 100644 worlds/smw/data/palettes/level/ship_exterior/blue_purple.mw3 create mode 100644 worlds/smw/data/palettes/level/ship_exterior/doc_ship.mw3 create mode 100644 worlds/smw/data/palettes/level/ship_exterior/grey_ship.mw3 create mode 100644 worlds/smw/data/palettes/level/ship_exterior/original.mw3 create mode 100644 worlds/smw/data/palettes/level/ship_exterior/reddish.mw3 create mode 100644 worlds/smw/data/palettes/level/ship_interior/blue_purple.mw3 create mode 100644 worlds/smw/data/palettes/level/ship_interior/bocchi_hitori.mw3 create mode 100644 worlds/smw/data/palettes/level/ship_interior/bocchi_rock.mw3 create mode 100644 worlds/smw/data/palettes/level/ship_interior/brawler.mw3 create mode 100644 worlds/smw/data/palettes/level/ship_interior/grey_ship.mw3 create mode 100644 worlds/smw/data/palettes/level/ship_interior/original.mw3 create mode 100644 worlds/smw/data/palettes/level/switch_palace/blue_grid.mw3 create mode 100644 worlds/smw/data/palettes/level/switch_palace/brawler_brown.mw3 create mode 100644 worlds/smw/data/palettes/level/switch_palace/cafe_claro.mw3 create mode 100644 worlds/smw/data/palettes/level/switch_palace/color_de_gato.mw3 create mode 100644 worlds/smw/data/palettes/level/switch_palace/color_del_gato_2.mw3 create mode 100644 worlds/smw/data/palettes/level/switch_palace/green_grid.mw3 create mode 100644 worlds/smw/data/palettes/level/switch_palace/gris.mw3 create mode 100644 worlds/smw/data/palettes/level/switch_palace/mario_pants.mw3 create mode 100644 worlds/smw/data/palettes/level/switch_palace/monado.mw3 create mode 100644 worlds/smw/data/palettes/level/switch_palace/morado.mw3 create mode 100644 worlds/smw/data/palettes/level/switch_palace/negro.mw3 create mode 100644 worlds/smw/data/palettes/level/switch_palace/onigiria.mw3 create mode 100644 worlds/smw/data/palettes/level/switch_palace/original.mw3 create mode 100644 worlds/smw/data/palettes/level/switch_palace/original_bonus.mw3 create mode 100644 worlds/smw/data/palettes/level/switch_palace/pink.mw3 create mode 100644 worlds/smw/data/palettes/level/switch_palace/red_grid.mw3 create mode 100644 worlds/smw/data/palettes/level/switch_palace/verde.mw3 create mode 100644 worlds/smw/data/palettes/level/switch_palace/verde_agua.mw3 create mode 100644 worlds/smw/data/palettes/level/switch_palace/yellow_grid.mw3 create mode 100644 worlds/smw/data/palettes/level/switch_palace/youbonus.mw3 create mode 100644 worlds/smw/data/palettes/level/water/dark_water.mw3 create mode 100644 worlds/smw/data/palettes/level/water/deep_aqua.mw3 create mode 100644 worlds/smw/data/palettes/level/water/deep_chocolate.mw3 create mode 100644 worlds/smw/data/palettes/level/water/harmless_magma.mw3 create mode 100644 worlds/smw/data/palettes/level/water/murky.mw3 create mode 100644 worlds/smw/data/palettes/level/water/oil_spill.mw3 create mode 100644 worlds/smw/data/palettes/level/water/original_brown.mw3 create mode 100644 worlds/smw/data/palettes/level/water/original_gray.mw3 create mode 100644 worlds/smw/data/palettes/level/water/original_green.mw3 create mode 100644 worlds/smw/data/palettes/level/water/original_mustard.mw3 create mode 100644 worlds/smw/data/palettes/level/water/original_volcanic.mw3 create mode 100644 worlds/smw/data/palettes/level/water/pickle_juice.mw3 create mode 100644 worlds/smw/data/palettes/level/yoshi_house/choco.mw3 create mode 100644 worlds/smw/data/palettes/level/yoshi_house/monocromo.mw3 create mode 100644 worlds/smw/data/palettes/level/yoshi_house/neon.mw3 create mode 100644 worlds/smw/data/palettes/level/yoshi_house/nieve.mw3 create mode 100644 worlds/smw/data/palettes/level/yoshi_house/night.mw3 create mode 100644 worlds/smw/data/palettes/level/yoshi_house/original.mw3 create mode 100644 worlds/smw/data/palettes/level/yoshi_house/strong_sun.mw3 create mode 100644 worlds/smw/data/palettes/map/forest/atardecer.mw3 create mode 100644 worlds/smw/data/palettes/map/forest/burnt_forest.mw3 create mode 100644 worlds/smw/data/palettes/map/forest/dark_forest.mw3 create mode 100644 worlds/smw/data/palettes/map/forest/halloween.mw3 create mode 100644 worlds/smw/data/palettes/map/forest/ice_forest.mw3 create mode 100644 worlds/smw/data/palettes/map/forest/lost_woods.mw3 create mode 100644 worlds/smw/data/palettes/map/forest/mono.mw3 create mode 100644 worlds/smw/data/palettes/map/forest/original.mw3 create mode 100644 worlds/smw/data/palettes/map/forest/original_special.mw3 create mode 100644 worlds/smw/data/palettes/map/forest/sepia.mw3 create mode 100644 worlds/smw/data/palettes/map/forest/snow_day.mw3 create mode 100644 worlds/smw/data/palettes/map/forest/virtual_boy.mw3 create mode 100644 worlds/smw/data/palettes/map/main/atardecer.mw3 create mode 100644 worlds/smw/data/palettes/map/main/brawler.mw3 create mode 100644 worlds/smw/data/palettes/map/main/cake_frosting.mw3 create mode 100644 worlds/smw/data/palettes/map/main/invertido.mw3 create mode 100644 worlds/smw/data/palettes/map/main/mono.mw3 create mode 100644 worlds/smw/data/palettes/map/main/morning.mw3 create mode 100644 worlds/smw/data/palettes/map/main/night.mw3 create mode 100644 worlds/smw/data/palettes/map/main/night_time.mw3 create mode 100644 worlds/smw/data/palettes/map/main/original.mw3 create mode 100644 worlds/smw/data/palettes/map/main/original_special.mw3 create mode 100644 worlds/smw/data/palettes/map/main/sepia.mw3 create mode 100644 worlds/smw/data/palettes/map/main/snow_day.mw3 create mode 100644 worlds/smw/data/palettes/map/main/virtual_boy.mw3 create mode 100644 worlds/smw/data/palettes/map/palettes.json create mode 100644 worlds/smw/data/palettes/map/special/black_out.mw3 create mode 100644 worlds/smw/data/palettes/map/special/blood_star.mw3 create mode 100644 worlds/smw/data/palettes/map/special/brawler.mw3 create mode 100644 worlds/smw/data/palettes/map/special/green.mw3 create mode 100644 worlds/smw/data/palettes/map/special/light_pollution_map.mw3 create mode 100644 worlds/smw/data/palettes/map/special/original.mw3 create mode 100644 worlds/smw/data/palettes/map/special/purple.mw3 create mode 100644 worlds/smw/data/palettes/map/special/virtual_boy.mw3 create mode 100644 worlds/smw/data/palettes/map/special/white_special.mw3 create mode 100644 worlds/smw/data/palettes/map/star/blood_moon.mw3 create mode 100644 worlds/smw/data/palettes/map/star/mono.mw3 create mode 100644 worlds/smw/data/palettes/map/star/mountain_top.mw3 create mode 100644 worlds/smw/data/palettes/map/star/original.mw3 create mode 100644 worlds/smw/data/palettes/map/star/original_special.mw3 create mode 100644 worlds/smw/data/palettes/map/star/pink_star.mw3 create mode 100644 worlds/smw/data/palettes/map/star/sepia.mw3 create mode 100644 worlds/smw/data/palettes/map/star/virtual_boy.mw3 create mode 100644 worlds/smw/data/palettes/map/star/yellow_star.mw3 create mode 100644 worlds/smw/data/palettes/map/valley/Tamaulipas.mw3 create mode 100644 worlds/smw/data/palettes/map/valley/bowser.mw3 create mode 100644 worlds/smw/data/palettes/map/valley/castle_colors.mw3 create mode 100644 worlds/smw/data/palettes/map/valley/dark cave.mw3 create mode 100644 worlds/smw/data/palettes/map/valley/dream_world.mw3 create mode 100644 worlds/smw/data/palettes/map/valley/fire cave.mw3 create mode 100644 worlds/smw/data/palettes/map/valley/invertido.mw3 create mode 100644 worlds/smw/data/palettes/map/valley/mono.mw3 create mode 100644 worlds/smw/data/palettes/map/valley/orange.mw3 create mode 100644 worlds/smw/data/palettes/map/valley/original.mw3 create mode 100644 worlds/smw/data/palettes/map/valley/original_special.mw3 create mode 100644 worlds/smw/data/palettes/map/valley/purple_blue.mw3 create mode 100644 worlds/smw/data/palettes/map/valley/sepia.mw3 create mode 100644 worlds/smw/data/palettes/map/valley/snow.mw3 create mode 100644 worlds/smw/data/palettes/map/valley/virtual_boy.mw3 create mode 100644 worlds/smw/data/palettes/map/vanilla/DOMO.mw3 create mode 100644 worlds/smw/data/palettes/map/vanilla/aqua_marine.mw3 create mode 100644 worlds/smw/data/palettes/map/vanilla/dark cave.mw3 create mode 100644 worlds/smw/data/palettes/map/vanilla/fire cave.mw3 create mode 100644 worlds/smw/data/palettes/map/vanilla/gold_mine.mw3 create mode 100644 worlds/smw/data/palettes/map/vanilla/invertido.mw3 create mode 100644 worlds/smw/data/palettes/map/vanilla/mono.mw3 create mode 100644 worlds/smw/data/palettes/map/vanilla/original.mw3 create mode 100644 worlds/smw/data/palettes/map/vanilla/original_special.mw3 create mode 100644 worlds/smw/data/palettes/map/vanilla/purple.mw3 create mode 100644 worlds/smw/data/palettes/map/vanilla/sepia.mw3 create mode 100644 worlds/smw/data/palettes/map/vanilla/virtual_boy.mw3 create mode 100644 worlds/smw/data/palettes/map/vanilla/witches_cauldron.mw3 create mode 100644 worlds/smw/data/palettes/map/yoshi/atardecer.mw3 create mode 100644 worlds/smw/data/palettes/map/yoshi/gum.mw3 create mode 100644 worlds/smw/data/palettes/map/yoshi/lava_island.mw3 create mode 100644 worlds/smw/data/palettes/map/yoshi/mono.mw3 create mode 100644 worlds/smw/data/palettes/map/yoshi/original.mw3 create mode 100644 worlds/smw/data/palettes/map/yoshi/original_special.mw3 create mode 100644 worlds/smw/data/palettes/map/yoshi/sepia.mw3 create mode 100644 worlds/smw/data/palettes/map/yoshi/snow_day.mw3 create mode 100644 worlds/smw/data/palettes/map/yoshi/sunset.mw3 create mode 100644 worlds/smw/data/palettes/map/yoshi/tritanopia.mw3 create mode 100644 worlds/smw/data/palettes/map/yoshi/virtual_boy.mw3 create mode 100644 worlds/smw/data/palettes/map/yoshi/yochis_ailand.mw3 diff --git a/worlds/smw/Aesthetics.py b/worlds/smw/Aesthetics.py index fb53295de197..f7b4691d2daf 100644 --- a/worlds/smw/Aesthetics.py +++ b/worlds/smw/Aesthetics.py @@ -1,3 +1,80 @@ +#import os +import json +import pkgutil + +tileset_names = [ + "grass_hills", + "grass_forest", + "grass_rocks", + "grass_clouds", + "grass_mountains", + "cave", + "cave_rocks", + "water", + "mushroom_rocks", + "mushroom_clouds", + "mushroom_forest", + "mushroom_hills", + "mushroom_stars", + "mushroom_cave", + "forest", + "logs", + "clouds", + "castle_pillars", + "castle_windows", + "castle_wall", + "castle_small_windows", + "ghost_house", + "ghost_house_exit", + "ship_exterior", + "ship_interior", + "switch_palace", + "yoshi_house" +] +map_names = [ + "main", + "yoshi", + "vanilla", + "forest", + "valley", + "special", + "star" +] + +level_palette_index = [ + 0xFF,0x03,0x09,0x01,0x15,0x0A,0x04,0x12,0x19,0x06,0x07,0x12,0x09,0x0F,0x13,0x09, # Levels 000-00F + 0x03,0x07,0xFF,0x15,0x19,0x04,0x04,0xFF,0x17,0xFF,0x14,0x12,0x02,0x05,0xFF,0x11, # Levels 010-01F + 0x12,0x15,0x04,0x02,0x02,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, # Levels 020-02F + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, # Levels 030-03F + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, # Levels 040-04F + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, # Levels 050-05F + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, # Levels 060-06F + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, # Levels 070-07F + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, # Levels 080-08F + 0xFF,0xFF,0xFF,0x12,0x12,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, # Levels 090-09F + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, # Levels 0A0-0AF + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x19,0x08,0x09, # Levels 0B0-0BF + 0x02,0x08,0x05,0x04,0x16,0x00,0x04,0x02,0x0C,0x19,0x19,0x09,0xFF,0x02,0x02,0x02, # Levels 0C0-0CF + 0x04,0x04,0x05,0x12,0x14,0xFF,0x12,0x10,0x05,0xFF,0x19,0x12,0x14,0x0F,0x15,0xFF, # Levels 0D0-0DF + 0x12,0x12,0xFF,0x04,0x15,0xFF,0x19,0x14,0x12,0x05,0x05,0x16,0x15,0x15,0x15,0x12, # Levels 0E0-0EF + 0x16,0x15,0x15,0x09,0x19,0x04,0x04,0x13,0x18,0x15,0x15,0x16,0x15,0x19,0x15,0x04, # Levels 0F0-0FF + 0xFF,0x11,0x08,0x02,0x1A,0x00,0x01,0x15,0xFF,0x05,0x05,0x05,0xFF,0x11,0x12,0x05, # Levels 100-10F + 0x12,0x14,0xFF,0x0D,0x15,0x06,0x05,0x05,0x05,0x0C,0x05,0x19,0x12,0x15,0x0E,0x01, # Levels 110-11F + 0x07,0x19,0x0E,0x0E,0xFF,0x04,0x0E,0x02,0x02,0xFF,0x09,0x04,0x0B,0x02,0xFF,0xFF, # Levels 120-12F + 0x07,0xFF,0x0C,0xFF,0x05,0x0C,0x0C,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, # Levels 130-13F + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, # Levels 140-14F + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, # Levels 150-15F + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, # Levels 160-16F + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, # Levels 170-17F + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, # Levels 180-18F + 0xFF,0xFF,0xFF,0x12,0x12,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, # Levels 190-19F + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, # Levels 1A0-1AF + 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x19,0x19,0x12,0x02,0x05, # Levels 1B0-1BF + 0x02,0x07,0x05,0x05,0x03,0x03,0x00,0xFF,0x0F,0x10,0x05,0x05,0x12,0x11,0x14,0x14, # Levels 1C0-1CF + 0x11,0x12,0x12,0x12,0x11,0x03,0x03,0x19,0x19,0x15,0x16,0x15,0x15,0x15,0xFF,0x05, # Levels 1D0-1DF + 0x10,0x02,0x06,0x06,0x19,0x05,0x16,0x16,0x15,0x15,0x15,0xFF,0x06,0x05,0x05,0x06, # Levels 1E0-1EF + 0x05,0x05,0x12,0x14,0x12,0x05,0xFF,0x19,0x05,0x16,0x15,0x15,0x11,0x05,0x12,0x09 # Levels 1F0-1FF +] mario_palettes = [ [0x5F, 0x63, 0x1D, 0x58, 0x0A, 0x00, 0x1F, 0x39, 0xC4, 0x44, 0x08, 0x4E, 0x70, 0x67, 0xB6, 0x30, 0xDF, 0x35, 0xFF, 0x03], # Mario @@ -145,13 +222,391 @@ 0x2D24: [0x00, 0x02, 0x03], # Star Road } +valid_sfxs = [ + [0x01, 1], # Jump + [0x01, 0], # Hit head + [0x02, 0], # Contact/Spinjump on an enemy + [0x03, 0], # Kick item + [0x04, 0], # Go in pipe, get hurt + [0x05, 0], # Midway point + [0x06, 0], # Yoshi gulp + [0x07, 0], # Dry bones collapse + [0x08, 0], # Kill enemy with a spin jump + [0x09, 0], # Fly with cape + [0x0A, 0], # Get powerup + [0x0B, 0], # ON/OFF switch + [0x0C, 0], # Carry item past the goal + [0x0D, 0], # Get cape + [0x0E, 0], # Swim + [0x0F, 0], # Hurt while flying + [0x10, 0], # Magikoopa shoot magic + [0x13, 0], # Enemy stomp #1 + [0x14, 0], # Enemy stomp #2 + [0x15, 0], # Enemy stomp #3 + [0x16, 0], # Enemy stomp #4 + [0x17, 0], # Enemy stomp #5 + [0x18, 0], # Enemy stomp #6 + [0x19, 0], # Enemy stomp #7 + [0x1C, 0], # Yoshi Coin + [0x1E, 0], # P-Balloon + [0x1F, 0], # Koopaling defeated + [0x20, 0], # Yoshi spit + [0x23, 0], # Lemmy/Wendy falling + [0x25, 0], # Blargg roar + [0x26, 0], # Firework whistle + [0x27, 0], # Firework bang + [0x2A, 0], # Peach pops up from the Clown Car + [0x04, 1], # Grinder + [0x01, 3], # Coin + [0x02, 3], # Hit a ? block + [0x03, 3], # Hit a block with a vine inside + [0x04, 3], # Spin jump + [0x05, 3], # 1up + [0x06, 3], # Shatter block + [0x07, 3], # Shoot fireball + [0x08, 3], # Springboard + [0x09, 3], # Bullet bill + [0x0A, 3], # Egg hatch + [0x0B, 3], # Item going into item box + [0x0C, 3], # Item falls from item box + [0x0E, 3], # L/R scroll + [0x0F, 3], # Door + [0x13, 3], # Lose Yoshi + [0x14, 3], # SMW2: New level available + [0x15, 3], # OW tile reveal + [0x16, 3], # OW castle collapse + [0x17, 3], # Fire spit + [0x18, 3], # Thunder + [0x19, 3], # Clap + [0x1A, 3], # Castle bomb + [0x1C, 3], # OW switch palace block ejection + [0x1E, 3], # Whistle + [0x1F, 3], # Yoshi mount + [0x20, 3], # Lemmy/Wendy going in lava + [0x21, 3], # Yoshi's tongue + [0x22, 3], # Message box hit + [0x23, 3], # Landing in a level tile + [0x24, 3], # P-Switch running out + [0x25, 3], # Yoshi defeats an enemy + [0x26, 3], # Swooper + [0x27, 3], # Podoboo + [0x28, 3], # Enemy hurt + [0x29, 3], # Correct + [0x2A, 3], # Wrong + [0x2B, 3], # Firework whistle + [0x2C, 3] # Firework bang +] + +game_sfx_calls = [ + 0x0565E, # Jump + 0x1BABD, # Spin jump + 0x06D41, # Hit head on ceiling + 0x0B4F2, # Hit head on sprite + 0x07EB5, # Shooting a fireball + 0x0507B, # Cape spin + 0x058A8, # Cape smash + 0x075F3, # Taking damage + 0x075E2, # Taking damage while flying + 0x07919, # Something during a boss fight + 0x05AA9, # Swim + 0x1BC04, # Spin jump off water + 0x05BA5, # Jump off a net + 0x05BB2, # Punching a net + 0x06C10, # Entering a door + 0x05254, # Entering a pipe #1 + 0x07439, # Entering a pipe #2 + 0x052A5, # Shot from a diagonal pipe + 0x072E8, # Hit a midway point + 0x07236, # Hit a wrong block + 0x07B7D, # Spawn a powerup during the goal tape + 0x1C342, # Invisible mushroom spawn + 0x04E3F, # Scrolling the screen with L/R + 0x0AAFD, # Pressing a P-Switch + 0x04557, # P-Switch running out + 0x0BAD7, # Climbing door turning + 0x0C109, # Break goal tape + 0x0C548, # Putting item in item box + 0x10012, # Trigger item box + 0x2B34D, # Collecting a coin + 0x07358, # Collecting a Yoshi Coin + 0x0C57A, # Collecting a powerup (generic) + 0x0C59C, # Collecting a feather + 0x0C309, # Collecting a P-Balloon + 0x0E6A9, # Bouncing off a springboard + 0x1117D, # Bouncing off a note block + 0x14DEC, # Bouncing off a wall springboard + 0x1067F, # Block shattering + 0x1081E, # Activate ON/OFF switch #1 + 0x1118C, # Activate ON/OFF switch #2 + 0x12045, # Fireballs hitting a block/sprite + 0x12124, # Fireballs converting an enemy into a coin + 0x12106, # Fireballs defeating a Chuck + 0x18D7D, # Activating a message box + 0x1C209, # Activating a red question block + 0x0A290, # Baby Yoshi swallowing an item #1 + 0x1C037, # Baby Yoshi swallowing an item #2 + 0x0F756, # Yoshi egg hatching + 0x0A2C5, # Yoshi growing #1 + 0x1C06C, # Yoshi growing #2 + 0x0ED5F, # Mounting Yoshi + 0x0F71D, # Yoshi hurt + 0x12481, # Yoshi hurt (projectiles) + 0x0EF0E, # Yoshi flying + 0x06F90, # Yoshi stomping an enemy + 0x06FB6, # Yoshi ground pound (yellow shell) + 0x07024, # Yoshi bounces off a triangle + 0x11BE9, # Yoshi stomping the ground + 0x0F0D3, # Yoshi swallowing a sprite + 0x0F0FD, # Yoshi eating a green berry + 0x1BA7D, # Yoshi sticking out tongue + 0x0F5A1, # Yoshi unable to eat + 0x0F2DF, # Yoshi spitting out an item + 0x0F28F, # Yoshi spitting out flames + 0x0F3EC, # Collecting Yoshi's wings (eaten) + 0x0F6C8, # Collecting Yoshi's wings (touched) + 0x7FE04, # Defeated sprite combo #1 (using Y index) + 0x7FE0E, # Defeated sprite combo #2 (using Y index) + 0x7FE18, # Defeated sprite combo #3 (using Y index) + 0x7FE22, # Defeated sprite combo #4 (using Y index) + 0x7FE2C, # Defeated sprite combo #5 (using Y index) + 0x7FE36, # Defeated sprite combo #6 (using Y index) + 0x7FE40, # Defeated sprite combo #7 (using Y index) + 0x7FE4B, # Defeated sprite combo #1 (using X index) + 0x7FE55, # Defeated sprite combo #2 (using X index) + 0x7FE5F, # Defeated sprite combo #3 (using X index) + 0x7FE69, # Defeated sprite combo #4 (using X index) + 0x7FE73, # Defeated sprite combo #5 (using X index) + 0x7FE7D, # Defeated sprite combo #6 (using X index) + 0x7FE87, # Defeated sprite combo #7 (using X index) + 0x0A728, # Kicking a carryable item + 0x0B12F, # Kicking a stunned and vulnerable enemy + 0x0A8D8, # Performing a spinjump on a immune enemy + 0x0A93F, # Defeating an enemy via spinjump + 0x0999E, # Thrown sprite hitting the ground from the side + 0x192B8, # Creating/Eating block moving + 0x195EC, # Rex stomped + 0x134A7, # Bullet bill blaster shooting + 0x13088, # Bullet bill generator #1 + 0x130DF, # Bullet bill generator #2 + 0x09631, # Bob-omb explosion + 0x15918, # Popping a bubble + 0x15D64, # Sumo bro stomping the ground + 0x15ECC, # Sumo bro lightning spawning flames + 0x1726B, # Bouncing off wiggler + 0x08390, # Banzai bill spawn + 0x0AF17, # Thwomp hitting the ground + 0x0AFFC, # Thwimp hitting the ground + 0x14707, # Chuck running + 0x14381, # Chuck whistling + 0x144F8, # Chuck clapping + 0x14536, # Chuck jumping + 0x145AE, # Chuck splitting + 0x147D2, # Chuck bounce + 0x147F6, # Chuck hurt + 0x147B8, # Chuck defeated + 0x19D55, # Dino torch shooting fire + 0x19FFA, # Blargg attacking + 0x188FF, # Swooper bat swooping + 0x08584, # Bowser statue flame spawn + 0x18ADA, # Bowser statue shooting a flame + 0x13043, # Bowser statue flame from generator + 0x0BF28, # Magikoopa shooting a magic spell + 0x0BC5F, # Magikoopa's magic spell hitting the ground + 0x0D745, # Line guided sprites' motor + 0x0DB70, # Grinder sound + 0x0E0A1, # Podoboo jumping + 0x0E5F2, # Dry bones/Bony beetle collapsing + 0x15474, # Giant wooden pillar hitting the ground + 0x2C9C1, # Spiked columns hitting the ground + 0x19B03, # Reznor shooting a fireball + 0x19A66, # Reznor: Hitting a platform + 0x1D752, # Reznor: Bridge collapsing + 0x19ABB, # Reznor: Defeated + 0x180E9, # Big Boo: Reappearing + 0x18233, # Big Boo: Hurt + 0x181DE, # Big Boo: Defeated + 0x1CEC1, # Wendy/Lemmy: Hitting a dummy + 0x1CECB, # Wendy/Lemmy: Hurt + 0x1CE33, # Wendy/Lemmy: Hurt (correct) + 0x1CE46, # Wendy/Lemmy: Hurt (incorrect) + 0x1CE24, # Wendy/Lemmy: Defeated + 0x1CE7E, # Wendy/Lemmy: Falling into lava + 0x0CF0A, # Ludwig: Jumping + 0x0D059, # Ludwig: Shooting a fireball + 0x10414, # Morton/Roy: Pillar drop + 0x0D299, # Morton/Roy: Ground smash + 0x0D3AB, # Morton/Roy/Ludwig: Hit by a fireball + 0x0D2FD, # Morton/Roy/Ludwig: Bouncing off + 0x0D31E, # Morton/Roy/Ludwig: Bouncing off (immune) + 0x0D334, # Morton/Roy/Ludwig: Bouncing off (immune, going up a wall) + 0x0CFD0, # Morton/Roy/Ludwig: Defeated + 0x0FCCE, # Iggy/Larry: Being hit + 0x0FD40, # Iggy/Larry: Being hit by a fireball + 0x0FB60, # Iggy/Larry: Falling in lava + 0x1A8B2, # Peach emerging from Clown Car + 0x1A8E3, # Peach throwing an item + 0x1B0B8, # Bumping into Clown Car + 0x1B129, # Bowser: Hurt + 0x1AB8C, # Bowser: Slamming the ground (third phase) + 0x1A5D0, # Bowser: Throwing a Mechakoopa + 0x1A603, # Bowser: Dropping a ball + 0x1A7F6, # Bowser: Spawning a flame + 0x1B1A3, # Bowser's ball slam #1 + 0x1B1B1, # Bowser's ball slam #2 + 0x1E016, # Bowser's arena lightning effect + 0x26CAA, # Map: Level tile reveal + 0x26763, # Map: Terrain reveal + 0x21170, # Map: Using a star + 0x2666F, # Map: Castle destruction + 0x272A4, # Map: Switch palace blocks spawning + 0x203CC, # Map: Earthquake + 0x27A78, # Map: Fish jumping + 0x27736, # Map: Valley of bowser thunder + 0x013C0, # Menu: Nintendo presents + 0x01AE3, # Menu: File menu option select + 0x01AF9, # Menu: File menu option change + 0x01BBB, # Menu: Saving game + 0x273FF, # Menu: Map misc menu appearing + 0x27567, # Menu: Something during the map + 0x1767A, # Cutscene: Castle door opening + 0x17683, # Cutscene: Castle door closing + 0x17765, # Cutscene: Ghost house door opening + 0x1776E, # Cutscene: Ghost house door closing + 0x04720, # Cutscene: Detonator fuse + 0x04732, # Cutscene: Bouncing off something + 0x0475F, # Cutscene: Tossing the castle + 0x04798, # Cutscene: Picking up the castle + 0x047AC, # Cutscene: Huff + 0x047D1, # Cutscene: Hitting a castle + 0x1C830, # Cutscene: Shooting a firework + 0x625AF, # Cutscene: Egg shattering + 0x64F2C, # Cutscene: Hitting a hill + 0x6512A, # Cutscene: Castle crashing + 0x65295, # Cutscene: Explosion + 0x652B2, # Cutscene: Castle sinking + 0x652BD, # Cutscene: Castle flying + 0x652D8, # Cutscene: Fake explosion + 0x653E7, # Cutscene: Castle being hit by a hammer + 0x657D8 # Cutscene: Castle being mopped away +] + +def generate_shuffled_sfx(rom, world, player): + # Adjust "hitting sprites in succession" codes + rom.write_bytes(0x0A60B, bytearray([0x22, 0x00, 0xFE, 0x0F, 0xEA, 0xEA])) # jsl $0FFE00 : nop #2 # Thrown sprites combo #1 + rom.write_bytes(0x0A659, bytearray([0x22, 0x47, 0xFE, 0x0F, 0xEA, 0xEA])) # jsl $0FFE47 : nop #2 # Thrown sprites combo #2 + rom.write_bytes(0x0A865, bytearray([0x22, 0x47, 0xFE, 0x0F, 0xEA, 0xEA])) # jsl $0FFE47 : nop #2 # Star combo + rom.write_bytes(0x0AB57, bytearray([0x22, 0x00, 0xFE, 0x0F, 0xEA, 0xEA])) # jsl $0FFE00 : nop #2 # Bouncing off enemies + rom.write_bytes(0x172C0, bytearray([0x22, 0x00, 0xFE, 0x0F, 0xEA, 0xEA])) # jsl $0FFE00 : nop #2 # Star combo (wigglers) + rom.write_bytes(0x1961D, bytearray([0x22, 0x00, 0xFE, 0x0F, 0xEA, 0xEA])) # jsl $0FFE00 : nop #2 # Star combo (rexes) + rom.write_bytes(0x19639, bytearray([0x22, 0x00, 0xFE, 0x0F, 0xEA, 0xEA])) # jsl $0FFE00 : nop #2 # Bouncing off rexes + + COMBO_SFX_ADDR = 0x7FE00 + rom.write_bytes(COMBO_SFX_ADDR + 0x0000, bytearray([0xC0, 0x01])) # COMBO_Y: CPY #$01 + rom.write_bytes(COMBO_SFX_ADDR + 0x0002, bytearray([0xD0, 0x06])) # BNE label_0FFE0A + rom.write_bytes(COMBO_SFX_ADDR + 0x0004, bytearray([0xA9, 0x13])) # LDA #$13 + rom.write_bytes(COMBO_SFX_ADDR + 0x0006, bytearray([0x8D, 0xF9, 0x1D])) # STA $1DF9 + rom.write_bytes(COMBO_SFX_ADDR + 0x0009, bytearray([0x6B])) # RTL + rom.write_bytes(COMBO_SFX_ADDR + 0x000A, bytearray([0xC0, 0x02])) # label_0FFE0A: CPY #$02 + rom.write_bytes(COMBO_SFX_ADDR + 0x000C, bytearray([0xD0, 0x06])) # BNE label_0FFE14 + rom.write_bytes(COMBO_SFX_ADDR + 0x000E, bytearray([0xA9, 0x14])) # LDA #$14 + rom.write_bytes(COMBO_SFX_ADDR + 0x0010, bytearray([0x8D, 0xF9, 0x1D])) # STA $1DF9 + rom.write_bytes(COMBO_SFX_ADDR + 0x0013, bytearray([0x6B])) # RTL + rom.write_bytes(COMBO_SFX_ADDR + 0x0014, bytearray([0xC0, 0x03])) # label_0FFE14: CPY #$03 + rom.write_bytes(COMBO_SFX_ADDR + 0x0016, bytearray([0xD0, 0x06])) # BNE label_0FFE1E + rom.write_bytes(COMBO_SFX_ADDR + 0x0018, bytearray([0xA9, 0x15])) # LDA #$15 + rom.write_bytes(COMBO_SFX_ADDR + 0x001A, bytearray([0x8D, 0xF9, 0x1D])) # STA $1DF9 + rom.write_bytes(COMBO_SFX_ADDR + 0x001D, bytearray([0x6B])) # RTL + rom.write_bytes(COMBO_SFX_ADDR + 0x001E, bytearray([0xC0, 0x04])) # label_0FFE1E: CPY #$04 + rom.write_bytes(COMBO_SFX_ADDR + 0x0020, bytearray([0xD0, 0x06])) # BNE label_0FFE28 + rom.write_bytes(COMBO_SFX_ADDR + 0x0022, bytearray([0xA9, 0x16])) # LDA #$16 + rom.write_bytes(COMBO_SFX_ADDR + 0x0024, bytearray([0x8D, 0xF9, 0x1D])) # STA $1DF9 + rom.write_bytes(COMBO_SFX_ADDR + 0x0027, bytearray([0x6B])) # RTL + rom.write_bytes(COMBO_SFX_ADDR + 0x0028, bytearray([0xC0, 0x05])) # label_0FFE28: CPY #$05 + rom.write_bytes(COMBO_SFX_ADDR + 0x002A, bytearray([0xD0, 0x06])) # BNE label_0FFE32 + rom.write_bytes(COMBO_SFX_ADDR + 0x002C, bytearray([0xA9, 0x17])) # LDA #$17 + rom.write_bytes(COMBO_SFX_ADDR + 0x002E, bytearray([0x8D, 0xF9, 0x1D])) # STA $1DF9 + rom.write_bytes(COMBO_SFX_ADDR + 0x0031, bytearray([0x6B])) # RTL + rom.write_bytes(COMBO_SFX_ADDR + 0x0032, bytearray([0xC0, 0x06])) # label_0FFE32: CPY #$06 + rom.write_bytes(COMBO_SFX_ADDR + 0x0034, bytearray([0xD0, 0x06])) # BNE label_0FFE3C + rom.write_bytes(COMBO_SFX_ADDR + 0x0036, bytearray([0xA9, 0x18])) # LDA #$18 + rom.write_bytes(COMBO_SFX_ADDR + 0x0038, bytearray([0x8D, 0xF9, 0x1D])) # STA $1DF9 + rom.write_bytes(COMBO_SFX_ADDR + 0x003B, bytearray([0x6B])) # RTL + rom.write_bytes(COMBO_SFX_ADDR + 0x003C, bytearray([0xC0, 0x07])) # label_0FFE3C: CPY #$07 + rom.write_bytes(COMBO_SFX_ADDR + 0x003E, bytearray([0xD0, 0x06])) # BNE label_0FFE46 + rom.write_bytes(COMBO_SFX_ADDR + 0x0040, bytearray([0xA9, 0x19])) # LDA #$19 + rom.write_bytes(COMBO_SFX_ADDR + 0x0042, bytearray([0x8D, 0xF9, 0x1D])) # STA $1DF9 + rom.write_bytes(COMBO_SFX_ADDR + 0x0045, bytearray([0x6B])) # RTL + rom.write_bytes(COMBO_SFX_ADDR + 0x0046, bytearray([0x6B])) # label_0FFE46: RTL + rom.write_bytes(COMBO_SFX_ADDR + 0x0047, bytearray([0xE0, 0x01])) # COMBO_X: CPX #$01 + rom.write_bytes(COMBO_SFX_ADDR + 0x0049, bytearray([0xD0, 0x06])) # BNE label_0FFE51 + rom.write_bytes(COMBO_SFX_ADDR + 0x004B, bytearray([0xA9, 0x13])) # LDA #$13 + rom.write_bytes(COMBO_SFX_ADDR + 0x004D, bytearray([0x8D, 0xF9, 0x1D])) # STA $1DF9 + rom.write_bytes(COMBO_SFX_ADDR + 0x0050, bytearray([0x6B])) # RTL + rom.write_bytes(COMBO_SFX_ADDR + 0x0051, bytearray([0xE0, 0x02])) # label_0FFE51: CPX #$02 + rom.write_bytes(COMBO_SFX_ADDR + 0x0053, bytearray([0xD0, 0x06])) # BNE label_0FFE5B + rom.write_bytes(COMBO_SFX_ADDR + 0x0055, bytearray([0xA9, 0x14])) # LDA #$14 + rom.write_bytes(COMBO_SFX_ADDR + 0x0057, bytearray([0x8D, 0xF9, 0x1D])) # STA $1DF9 + rom.write_bytes(COMBO_SFX_ADDR + 0x005A, bytearray([0x6B])) # RTL + rom.write_bytes(COMBO_SFX_ADDR + 0x005B, bytearray([0xE0, 0x03])) # label_0FFE5B: CPX #$03 + rom.write_bytes(COMBO_SFX_ADDR + 0x005D, bytearray([0xD0, 0x06])) # BNE label_0FFE65 + rom.write_bytes(COMBO_SFX_ADDR + 0x005F, bytearray([0xA9, 0x15])) # LDA #$15 + rom.write_bytes(COMBO_SFX_ADDR + 0x0061, bytearray([0x8D, 0xF9, 0x1D])) # STA $1DF9 + rom.write_bytes(COMBO_SFX_ADDR + 0x0064, bytearray([0x6B])) # RTL + rom.write_bytes(COMBO_SFX_ADDR + 0x0065, bytearray([0xE0, 0x04])) # label_0FFE65: CPX #$04 + rom.write_bytes(COMBO_SFX_ADDR + 0x0067, bytearray([0xD0, 0x06])) # BNE label_0FFE6F + rom.write_bytes(COMBO_SFX_ADDR + 0x0069, bytearray([0xA9, 0x16])) # LDA #$16 + rom.write_bytes(COMBO_SFX_ADDR + 0x006B, bytearray([0x8D, 0xF9, 0x1D])) # STA $1DF9 + rom.write_bytes(COMBO_SFX_ADDR + 0x006E, bytearray([0x6B])) # RTL + rom.write_bytes(COMBO_SFX_ADDR + 0x006F, bytearray([0xE0, 0x05])) # label_0FFE6F: CPX #$05 + rom.write_bytes(COMBO_SFX_ADDR + 0x0071, bytearray([0xD0, 0x06])) # BNE label_0FFE79 + rom.write_bytes(COMBO_SFX_ADDR + 0x0073, bytearray([0xA9, 0x17])) # LDA #$17 + rom.write_bytes(COMBO_SFX_ADDR + 0x0075, bytearray([0x8D, 0xF9, 0x1D])) # STA $1DF9 + rom.write_bytes(COMBO_SFX_ADDR + 0x0078, bytearray([0x6B])) # RTL + rom.write_bytes(COMBO_SFX_ADDR + 0x0079, bytearray([0xE0, 0x06])) # label_0FFE79: CPX #$06 + rom.write_bytes(COMBO_SFX_ADDR + 0x007B, bytearray([0xD0, 0x06])) # BNE label_0FFE83 + rom.write_bytes(COMBO_SFX_ADDR + 0x007D, bytearray([0xA9, 0x18])) # LDA #$18 + rom.write_bytes(COMBO_SFX_ADDR + 0x007F, bytearray([0x8D, 0xF9, 0x1D])) # STA $1DF9 + rom.write_bytes(COMBO_SFX_ADDR + 0x0082, bytearray([0x6B])) # RTL + rom.write_bytes(COMBO_SFX_ADDR + 0x0083, bytearray([0xE0, 0x07])) # label_0FFE83: CPX #$07 + rom.write_bytes(COMBO_SFX_ADDR + 0x0085, bytearray([0xD0, 0x06])) # BNE label_0FFE8D + rom.write_bytes(COMBO_SFX_ADDR + 0x0087, bytearray([0xA9, 0x19])) # LDA #$19 + rom.write_bytes(COMBO_SFX_ADDR + 0x0089, bytearray([0x8D, 0xF9, 0x1D])) # STA $1DF9 + rom.write_bytes(COMBO_SFX_ADDR + 0x008C, bytearray([0x6B])) # RTL + rom.write_bytes(COMBO_SFX_ADDR + 0x008D, bytearray([0x6B])) # label_0FFE8D: RTL + + # Adjust "Hit head on ceiling" code + rom.write_bytes(0x06D41 + 0x00, bytearray([0xA9, 0x01])) # lda #$01 + rom.write_bytes(0x06D41 + 0x02, bytearray([0x8D, 0xF9, 0x1D])) # sta $1DF9 + rom.write_bytes(0x06D41 + 0x05, bytearray([0xEA, 0xEA, 0xEA, 0xEA])) # nop #4 + + # Manually add "Map: Stepping onto a level tile" random SFX + random_sfx = world.per_slot_randoms[player].randint(0, len(valid_sfxs)-1) + selected_sfx = valid_sfxs[random_sfx] + rom.write_byte(0x2169F + 0x01, selected_sfx[0]) + rom.write_byte(0x2169F + 0x04, selected_sfx[1] + 0xF9) + + # Disable panning on Bowser's flames + rom.write_bytes(0x1A83D, bytearray([0xEA, 0xEA, 0xEA])) # nop #3 + + # Randomize SFX calls + for address in game_sfx_calls: + # Get random SFX + random_sfx = world.per_slot_randoms[player].randint(0, len(valid_sfxs)-1) + selected_sfx = valid_sfxs[random_sfx] + # Write randomized SFX num + rom.write_byte(address + 0x01, selected_sfx[0]) + # Write randomized SFX port + rom.write_byte(address + 0x03, selected_sfx[1] + 0xF9) + + + def generate_shuffled_level_music(world, player): shuffled_level_music = level_music_value_data.copy() if world.music_shuffle[player] == "consistent": - world.random.shuffle(shuffled_level_music) + world.per_slot_randoms[player].shuffle(shuffled_level_music) elif world.music_shuffle[player] == "singularity": - single_song = world.random.choice(shuffled_level_music) + single_song = world.per_slot_randoms[player].choice(shuffled_level_music) shuffled_level_music = [single_song for i in range(len(shuffled_level_music))] return shuffled_level_music @@ -160,9 +615,9 @@ def generate_shuffled_ow_music(world, player): shuffled_ow_music = ow_music_value_data.copy() if world.music_shuffle[player] == "consistent" or world.music_shuffle[player] == "full": - world.random.shuffle(shuffled_ow_music) + world.per_slot_randoms[player].shuffle(shuffled_ow_music) elif world.music_shuffle[player] == "singularity": - single_song = world.random.choice(shuffled_ow_music) + single_song = world.per_slot_randoms[player].choice(shuffled_ow_music) shuffled_ow_music = [single_song for i in range(len(shuffled_ow_music))] return shuffled_ow_music @@ -170,7 +625,7 @@ def generate_shuffled_ow_music(world, player): def generate_shuffled_ow_palettes(rom, world, player): if world.overworld_palette_shuffle[player]: for address, valid_palettes in valid_ow_palettes.items(): - chosen_palette = world.random.choice(valid_palettes) + chosen_palette = world.per_slot_randoms[player].choice(valid_palettes) rom.write_byte(address, chosen_palette) def generate_shuffled_header_data(rom, world, player): @@ -196,11 +651,11 @@ def generate_shuffled_header_data(rom, world, player): if world.music_shuffle[player] == "full": level_header[2] &= 0x8F - level_header[2] |= (world.random.randint(0, 7) << 5) + level_header[2] |= (world.per_slot_randoms[player].randint(0, 7) << 5) if (world.foreground_palette_shuffle[player] and tileset in valid_foreground_palettes): level_header[3] &= 0xF8 - level_header[3] |= world.random.choice(valid_foreground_palettes[tileset]) + level_header[3] |= world.per_slot_randoms[player].choice(valid_foreground_palettes[tileset]) if world.background_palette_shuffle[player]: layer2_ptr_list = list(rom.read_bytes(0x2E600 + level_id * 3, 3)) @@ -208,10 +663,411 @@ def generate_shuffled_header_data(rom, world, player): if layer2_ptr in valid_background_palettes: level_header[0] &= 0x1F - level_header[0] |= (world.random.choice(valid_background_palettes[layer2_ptr]) << 5) + level_header[0] |= (world.per_slot_randoms[player].choice(valid_background_palettes[layer2_ptr]) << 5) if layer2_ptr in valid_background_colors: level_header[1] &= 0x1F - level_header[1] |= (world.random.choice(valid_background_colors[layer2_ptr]) << 5) + level_header[1] |= (world.per_slot_randoms[player].choice(valid_background_colors[layer2_ptr]) << 5) rom.write_bytes(layer1_ptr, bytes(level_header)) + +def generate_curated_palette_data(rom, world, player): + if world.palette_shuffle_type[player] != "curated": + return + + PALETTE_LEVEL_CODE_ADDR = 0x88000 + PALETTE_INDEX_ADDR = 0x8F000 + PALETTE_LEVEL_TILESET_ADDR = 0x8F200 + PALETTE_LEVEL_PTR_ADDR = 0x92000 + PALETTE_LEVEL_DATA_ADDR = 0xA8000 + + addr = pc_to_snes(PALETTE_LEVEL_PTR_ADDR) + snes_level_palette_pointers_1 = bytearray([0xBF, (addr)&0xFF, (addr>>8)&0xFF, (addr>>16)&0xFF]) + snes_level_palette_pointers_2 = bytearray([0xBF, (addr+2)&0xFF, (addr>>8)&0xFF, (addr>>16)&0xFF]) + + # Enable curated palette loader + rom.write_bytes(0x02BED, bytearray([0x5C, 0x00, 0x80, 0x11])) # org $00ABED : jml custom_palettes + rom.write_bytes(0x02330, bytearray([0x5C, 0x02, 0x80, 0x11])) # org $00A318 : jml custom_palettes_original + rom.write_bytes(0x013D7, bytearray([0x20, 0x30, 0xA3])) # org $0093D7 : jmp $A330 + rom.write_bytes(0x014DA, bytearray([0x20, 0x30, 0xA3])) # org $0094DA : jmp $A330 + rom.write_bytes(0x015EC, bytearray([0x20, 0x30, 0xA3])) # org $0095EC : jmp $A330 + rom.write_bytes(0x0165B, bytearray([0x20, 0x30, 0xA3])) # org $00965B : jmp $A330 + rom.write_bytes(0x02DD9, bytearray([0x20, 0x30, 0xA3])) # org $00ADD9 : jmp $A330 + rom.write_bytes(0x02E1F, bytearray([0x20, 0x30, 0xA3])) # org $00AE1F : jmp $A330 + + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0000, bytearray([0x80, 0x09])) # bra custom_palettes + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0002, bytearray([0xC2, 0x30])) # .original rep #$30 + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0004, bytearray([0xA9, 0xDD, 0x7F])) # lda #$7FDD + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0007, bytearray([0x5C, 0xF2, 0xAB, 0x00])) # jml $00ABF2 + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x000B, bytearray([0xC2, 0x30])) # custom_palettes: rep #$30 + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x000D, bytearray([0xA9, 0x70, 0xB1])) # lda #$B170 + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0010, bytearray([0x85, 0x0A])) # sta !_ptr + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0012, bytearray([0x64, 0x0C])) # stz !_ptr+$02 + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0014, bytearray([0xA9, 0x10, 0x00])) # lda.w #$0010 + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0017, bytearray([0x85, 0x04])) # sta !_index + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0019, bytearray([0xA9, 0x07, 0x00])) # lda #$0007 + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x001C, bytearray([0x85, 0x06])) # sta !_x_span + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x001E, bytearray([0xA9, 0x01, 0x00])) # lda #$0001 + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0021, bytearray([0x85, 0x08])) # sta !_y_span + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0023, bytearray([0x20, 0xE4, 0x80])) # jsr load_colors + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0026, bytearray([0xAE, 0x0B, 0x01])) # .get_index ldx $010B + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0029, bytearray([0xBF, 0x00, 0xF2, 0x11])) # lda.l level_tilesets,x + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x002D, bytearray([0x29, 0xFF, 0x00])) # and #$00FF + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0030, bytearray([0xEB])) # xba + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0031, bytearray([0x85, 0x00])) # sta !_tileset + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0033, bytearray([0xBF, 0x00, 0xF0, 0x11])) # lda.l level_index,x + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0037, bytearray([0x29, 0xFF, 0x00])) # and #$00FF + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x003A, bytearray([0x05, 0x00])) # ora !_tileset + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x003C, bytearray([0x85, 0x0A])) # sta !_ptr + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x003E, bytearray([0x0A])) # asl + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x003F, bytearray([0x18])) # clc + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0040, bytearray([0x65, 0x0A])) # adc !_ptr + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0042, bytearray([0x85, 0x0E])) # sta !_num + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0044, bytearray([0xAA])) # tax + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0045, snes_level_palette_pointers_1) # .back_color lda.l palette_pointers,x + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0049, bytearray([0x85, 0x0A])) # sta !_ptr + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x004B, snes_level_palette_pointers_2) # lda.l palette_pointers+$02,x + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x004F, bytearray([0x85, 0x0C])) # sta !_ptr+$02 + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0051, bytearray([0xA7, 0x0A])) # lda [!_ptr] + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0053, bytearray([0x8D, 0x01, 0x07])) # sta $0701 + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0056, bytearray([0xE6, 0x0A])) # inc !_ptr + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0058, bytearray([0xE6, 0x0A])) # inc !_ptr + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x005A, bytearray([0xA9, 0x02, 0x00])) # .background lda.w #$0001*$02 + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x005D, bytearray([0x85, 0x04])) # sta !_index + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x005F, bytearray([0xA9, 0x06, 0x00])) # lda #$0006 + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0062, bytearray([0x85, 0x06])) # sta !_x_span + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0064, bytearray([0xA9, 0x01, 0x00])) # lda #$0001 + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0067, bytearray([0x85, 0x08])) # sta !_y_span + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0069, bytearray([0x20, 0xE4, 0x80])) # jsr load_colors + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x006C, bytearray([0xA9, 0x42, 0x00])) # .foreground lda.w #$0021*$02 + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x006F, bytearray([0x85, 0x04])) # sta !_index + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0071, bytearray([0xA9, 0x06, 0x00])) # lda #$0006 + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0074, bytearray([0x85, 0x06])) # sta !_x_span + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0076, bytearray([0xA9, 0x01, 0x00])) # lda #$0001 + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0079, bytearray([0x85, 0x08])) # sta !_y_span + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x007B, bytearray([0x20, 0xE4, 0x80])) # jsr load_colors + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x007E, bytearray([0xA9, 0x52, 0x00])) # .berries lda.w #$0029*$02 + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0081, bytearray([0x85, 0x04])) # sta !_index + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0083, bytearray([0xA9, 0x06, 0x00])) # lda #$0006 + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0086, bytearray([0x85, 0x06])) # sta !_x_span + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0088, bytearray([0xA9, 0x02, 0x00])) # lda #$0002 + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x008B, bytearray([0x85, 0x08])) # sta !_y_span + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x008D, bytearray([0xA5, 0x0A])) # lda !_ptr + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x008F, bytearray([0x48])) # pha + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0090, bytearray([0x20, 0xE4, 0x80])) # jsr load_colors + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0093, bytearray([0x68])) # pla + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0094, bytearray([0x85, 0x0A])) # sta !_ptr + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0096, bytearray([0xA9, 0x32, 0x01])) # lda.w #$0099*$02 + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0099, bytearray([0x85, 0x04])) # sta !_index + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x009B, bytearray([0xA9, 0x06, 0x00])) # lda #$0006 + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x009E, bytearray([0x85, 0x06])) # sta !_x_span + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00A0, bytearray([0xA9, 0x02, 0x00])) # lda #$0002 + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00A3, bytearray([0x85, 0x08])) # sta !_y_span + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00A5, bytearray([0x20, 0xE4, 0x80])) # jsr load_colors + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00A8, bytearray([0xA9, 0x82, 0x00])) # .global lda.w #$0041*$02 + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00AB, bytearray([0x85, 0x04])) # sta !_index + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00AD, bytearray([0xA9, 0x06, 0x00])) # lda #$0006 + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00B0, bytearray([0x85, 0x06])) # sta !_x_span + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00B2, bytearray([0xA9, 0x0B, 0x00])) # lda #$000B + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00B5, bytearray([0x85, 0x08])) # sta !_y_span + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00B7, bytearray([0x20, 0xE4, 0x80])) # jsr load_colors + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00BA, bytearray([0xA5, 0x00])) # .sprite_specific lda !_tileset + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00BC, bytearray([0xC9, 0x00, 0x05])) # cmp #$0500 + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00BF, bytearray([0xD0, 0x1D])) # bne .end + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00C1, bytearray([0xAD, 0x2E, 0x19])) # lda $192E + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00C4, bytearray([0x29, 0x0F, 0x00])) # and #$000F + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00C7, bytearray([0xC9, 0x02, 0x00])) # cmp #$0002 + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00CA, bytearray([0xD0, 0x12])) # bne .end + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00CC, bytearray([0xA9, 0xC2, 0x01])) # lda.w #$00E1*$02 + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00CF, bytearray([0x85, 0x04])) # sta !_index + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00D1, bytearray([0xA9, 0x06, 0x00])) # lda #$0006 + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00D4, bytearray([0x85, 0x06])) # sta !_x_span + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00D6, bytearray([0xA9, 0x01, 0x00])) # lda #$0001 + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00D9, bytearray([0x85, 0x08])) # sta !_y_span + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00DB, bytearray([0x20, 0xE4, 0x80])) # jsr load_colors + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00DE, bytearray([0xE2, 0x30])) # .end sep #$30 + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00E0, bytearray([0x5C, 0xEC, 0xAC, 0x00])) # jml $00ACEC + + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00E4, bytearray([0xA6, 0x04])) # load_colors: ldx !_index + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00E6, bytearray([0xA4, 0x06])) # ldy !_x_span + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00E8, bytearray([0xA7, 0x0A])) # .x_loop lda [!_ptr] + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00EA, bytearray([0x9D, 0x03, 0x07])) # sta $0703,x + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00ED, bytearray([0xE6, 0x0A])) # inc !_ptr + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00EF, bytearray([0xE6, 0x0A])) # inc !_ptr + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00F1, bytearray([0xE8])) # inx + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00F2, bytearray([0xE8])) # inx + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00F3, bytearray([0x88])) # dey + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00F4, bytearray([0x10, 0xF2])) # bpl .x_loop + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00F6, bytearray([0xA5, 0x04])) # lda !_index + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00F8, bytearray([0x18])) # clc + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00F9, bytearray([0x69, 0x20, 0x00])) # adc #$0020 + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00FC, bytearray([0x85, 0x04])) # sta !_index + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x00FE, bytearray([0xC6, 0x08])) # dec !_y_span + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0100, bytearray([0x10, 0xE2])) # bpl load_colors + rom.write_bytes(PALETTE_LEVEL_CODE_ADDR + 0x0102, bytearray([0x60])) # rts + + # Load palette paths + data = pkgutil.get_data(__name__, f"data/palettes/level/palettes.json").decode("utf-8") + tilesets = json.loads(data) + + # Writes the level tileset index to ROM + rom.write_bytes(PALETTE_LEVEL_TILESET_ADDR, bytearray(level_palette_index)) + + # Builds the table in ROM that holds the palette index for each level, including sublevels + #print (f"====================================================") + for level_id in range(0x200): + tileset_num = level_palette_index[level_id] + if tileset_num != 0xFF: + tileset = tileset_names[tileset_num] + else: + tileset = tileset_names[0x19] + palette = world.per_slot_randoms[player].randint(0, len(tilesets[tileset])-1) + rom.write_bytes(PALETTE_INDEX_ADDR + level_id, bytearray([palette])) + #print (f"Level: {level_id:03X}") + #print (f" Tileset: {tileset} ({level_palette_index[level_id]:02X})") + #print (f" Palette: {palette:02X} ({tilesets[tileset][palette]})") + #print (f"===========================================") + + # Writes the actual level palette data and pointer to said data to the ROM + pal_offset = 0x0000 + tileset_num = 0 + palette_count = 0 + bank_palette_count = 0 + #print (f"====================================================") + for tileset in tilesets.keys(): + tileset_palette_count = 0 + #print (f"Tileset: {tileset}") + for palette in range(len(tilesets[tileset])): + # Handle bank crossing + if bank_palette_count == 110: + pal_offset = (pal_offset & 0xF8000) + 0x8000 + bank_palette_count = 0 + # Write pointer + pointer_ptr = pc_to_snes(PALETTE_LEVEL_PTR_ADDR + ((tileset_num*3)<<8) + (palette*3)) + data_ptr = pc_to_snes(PALETTE_LEVEL_DATA_ADDR + pal_offset) + rom.write_bytes(PALETTE_LEVEL_PTR_ADDR + ((tileset_num*3)<<8) + (palette*3), bytearray([data_ptr & 0xFF, (data_ptr>>8)&0xFF, (data_ptr>>16)&0xFF])) + # Write data + rom.write_bytes(PALETTE_LEVEL_DATA_ADDR + pal_offset, read_palette_file(tileset, tilesets[tileset][palette], "level")) + #print (f" File {tileset_palette_count:02}: '{tilesets[tileset][palette]}'") + #print (f" Palette pointer = ${pointer_ptr:06X} (0x{PALETTE_LEVEL_PTR_ADDR + ((tileset_num*3)<<8) + (palette*3):05X})") + #print (f" Palette data = ${data_ptr:06X} (0x{PALETTE_LEVEL_DATA_ADDR + pal_offset:05X})") + pal_offset += 0x128 + palette_count += 1 + bank_palette_count += 1 + tileset_palette_count += 1 + tileset_num += 1 + #print (f"===========================================") + #print (f"Level palette count: {palette_count}") + + PALETTE_MAP_CODE_ADDR = 0x88200 + PALETTE_UPLOADER_EDIT = 0x88400 + PALETTE_MAP_INDEX_ADDR = 0x8F400 + PALETTE_MAP_PTR_ADDR = 0x90000 + PALETTE_MAP_DATA_ADDR = 0x98000 + + addr = pc_to_snes(PALETTE_MAP_PTR_ADDR) + snes_map_palette_pointers_1 = bytearray([0xBF, (addr)&0xFF, (addr>>8)&0xFF, (addr>>16)&0xFF]) + snes_map_palette_pointers_2 = bytearray([0xBF, (addr+2)&0xFF, (addr>>8)&0xFF, (addr>>16)&0xFF]) + + rom.write_bytes(0x02D25, bytearray([0x5C, 0x09, 0x82, 0x11])) # org $00AD25 : jml map_palettes + + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0000, bytearray([0xC2, 0x30])) # map_og_palettes: rep #$30 + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0002, bytearray([0xA0, 0xD8, 0xB3])) # ldy #$B3D8 + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0005, bytearray([0x5C, 0x2A, 0xAD, 0x00])) # jml $00AD2A + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0009, bytearray([0xC2, 0x30])) # map_palettes: rep #$30 + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x000B, bytearray([0xAD, 0x31, 0x19])) # .prepare_index lda $1931 + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x000E, bytearray([0x29, 0x0F, 0x00])) # and #$000F + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0011, bytearray([0x3A])) # dec + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0012, bytearray([0xAA])) # tax + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0013, bytearray([0xEB])) # xba + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0014, bytearray([0x85, 0x0E])) # sta !_num + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0016, bytearray([0xBF, 0x00, 0xF4, 0x11])) # lda.l map_index,x + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x001A, bytearray([0x29, 0xFF, 0x00])) # and #$00FF + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x001D, bytearray([0x05, 0x0E])) # ora !_num + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x001F, bytearray([0x85, 0x0A])) # sta !_ptr + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0021, bytearray([0x0A])) # asl + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0022, bytearray([0x18])) # clc + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0023, bytearray([0x65, 0x0A])) # adc !_ptr + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0025, bytearray([0xAA])) # tax + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0026, snes_map_palette_pointers_1) # lda.l map_palette_pointers,x + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x002A, bytearray([0x85, 0x0A])) # sta !_ptr + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x002C, snes_map_palette_pointers_2) # lda.l map_palette_pointers+$02,x + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0030, bytearray([0x85, 0x0C])) # sta !_ptr+$02 + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0032, bytearray([0xA7, 0x0A])) # .load_back_color lda [!_ptr] + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0034, bytearray([0x8D, 0x01, 0x07])) # sta $0701 + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0037, bytearray([0xE6, 0x0A])) # inc !_ptr + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0039, bytearray([0xE6, 0x0A])) # inc !_ptr + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x003B, bytearray([0xA9, 0x82, 0x00])) # .load_layer_2 lda.w #$0041*$02 + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x003E, bytearray([0x85, 0x04])) # sta !_index + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0040, bytearray([0xA9, 0x06, 0x00])) # lda #$0006 + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0043, bytearray([0x85, 0x06])) # sta !_x_span + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0045, bytearray([0xA9, 0x03, 0x00])) # lda #$0003 + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0048, bytearray([0x85, 0x08])) # sta !_y_span + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x004A, bytearray([0x20, 0xE4, 0x80])) # jsr load_colors + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x004D, bytearray([0xA9, 0x52, 0x00])) # .load_layer_1 lda.w #$0029*$02 + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0050, bytearray([0x85, 0x04])) # sta !_index + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0052, bytearray([0xA9, 0x06, 0x00])) # lda #$0006 + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0055, bytearray([0x85, 0x06])) # sta !_x_span + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0057, bytearray([0xA9, 0x05, 0x00])) # lda #$0005 + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x005A, bytearray([0x85, 0x08])) # sta !_y_span + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x005C, bytearray([0x20, 0xE4, 0x80])) # jsr load_colors + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x005F, bytearray([0xA9, 0x10, 0x00])) # .load_layer_3 lda.w #$0008*$02 + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0062, bytearray([0x85, 0x04])) # sta !_index + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0064, bytearray([0xA9, 0x07, 0x00])) # lda #$0007 + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0067, bytearray([0x85, 0x06])) # sta !_x_span + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0069, bytearray([0xA9, 0x01, 0x00])) # lda #$0001 + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x006C, bytearray([0x85, 0x08])) # sta !_y_span + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x006E, bytearray([0x20, 0xE4, 0x80])) # jsr load_colors + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0071, bytearray([0xA9, 0x02, 0x01])) # .load_sprites lda.w #$0081*$02 + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0074, bytearray([0x85, 0x04])) # sta !_index + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0076, bytearray([0xA9, 0x06, 0x00])) # lda #$0006 + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0079, bytearray([0x85, 0x06])) # sta !_x_span + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x007B, bytearray([0xA9, 0x07, 0x00])) # lda #$0007 + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x007E, bytearray([0x85, 0x08])) # sta !_y_span + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0080, bytearray([0x20, 0xE4, 0x80])) # jsr load_colors + rom.write_bytes(PALETTE_MAP_CODE_ADDR + 0x0083, bytearray([0x5C, 0xA3, 0xAD, 0x00])) # .return jml $00ADA3 + + rom.write_bytes(0x2488, bytearray([0x5C, 0x00, 0x84, 0x11])) # org $00A488 : jml palette_upload + + rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x0000, bytearray([0xAD, 0x00, 0x01])) # palette_upload: lda $0100 + rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x0003, bytearray([0xC9, 0x0E])) # cmp #$0E + rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x0005, bytearray([0xF0, 0x0A])) # beq .map + rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x0007, bytearray([0xAC, 0x80, 0x06])) # .regular ldy $0680 + rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x000A, bytearray([0xBE, 0x81, 0xA4])) # ldx.w $A47F+2,y + rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x000D, bytearray([0x5C, 0x8E, 0xA4, 0x00])) # jml $00A48E + rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x0011, bytearray([0xAD, 0xD9, 0x13])) # .map lda $13D9 + rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x0014, bytearray([0xC9, 0x0A])) # cmp #$0A + rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x0016, bytearray([0xD0, 0xEF])) # bne .regular + rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x0018, bytearray([0xAD, 0xE8, 0x1D])) # lda $1DE8 + rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x001B, bytearray([0xC9, 0x06])) # cmp #$06 + rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x001D, bytearray([0xD0, 0xE8])) # bne .regular + rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x001F, bytearray([0x9C, 0x03, 0x07])) # stz $0703 + rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x0022, bytearray([0x9C, 0x04, 0x07])) # stz $0704 + rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x0025, bytearray([0x9C, 0x21, 0x21])) # stz $2121 + rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x0028, bytearray([0xA2, 0x06])) # ldx #$06 + rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x002A, bytearray([0xBD, 0x49, 0x92])) # .loop lda.w $9249,x + rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x002D, bytearray([0x9D, 0x20, 0x43])) # sta $4320,x + rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x0030, bytearray([0xCA])) # dex + rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x0031, bytearray([0x10, 0xF7])) # bpl .loop + rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x0033, bytearray([0xA9, 0x04])) # lda #$04 + rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x0035, bytearray([0x8D, 0x0B, 0x42])) # sta $420B + rom.write_bytes(PALETTE_UPLOADER_EDIT + 0x0038, bytearray([0x5C, 0xCF, 0xA4, 0x00])) # jml $00A4CF + + # Load palette paths + data = pkgutil.get_data(__name__, f"data/palettes/map/palettes.json").decode("utf-8") + maps = json.loads(data) + + #print (f"====================================================") + for map_id in range(0x07): + current_map_name = map_names[map_id] + palette = world.per_slot_randoms[player].randint(0, len(maps[current_map_name])-1) + rom.write_bytes(PALETTE_MAP_INDEX_ADDR + map_id, bytearray([palette])) + #print (f"Map: {map_id:03X}") + #print (f" Map: {current_map_name} ({map_id:02X})") + #print (f" Palette: {palette:02X} ({maps[current_map_name][palette]})") + #print (f"===========================================") + + # Writes the actual map palette data and pointer to said data to the ROM + pal_offset = 0x0000 + map_num = 0 + palette_count = 0 + bank_palette_count = 0 + #print (f"====================================================") + for current_map in maps.keys(): + map_palette_count = 0 + #print (f"Map: {current_map}") + for palette in range(len(maps[current_map])): + # Handle bank crossing + if bank_palette_count == 113: + pal_offset = (pal_offset & 0xF8000) + 0x8000 + bank_palette_count = 0 + # Write pointer + pointer_ptr = pc_to_snes(PALETTE_MAP_PTR_ADDR + ((map_num*3)<<8) + (palette*3)) + data_ptr = pc_to_snes(PALETTE_MAP_DATA_ADDR + pal_offset) + rom.write_bytes(PALETTE_MAP_PTR_ADDR + ((map_num*3)<<8) + (palette*3), bytearray([data_ptr & 0xFF, (data_ptr>>8)&0xFF, (data_ptr>>16)&0xFF])) + # Write data + rom.write_bytes(PALETTE_MAP_DATA_ADDR + pal_offset, read_palette_file(current_map, maps[current_map][palette], "map")) + #print (f" File {map_palette_count:02}: '{maps[current_map][palette]}'") + #print (f" Palette pointer = ${pointer_ptr:06X} (0x{PALETTE_MAP_PTR_ADDR + ((map_num*3)<<8) + (palette*3):05X})") + #print (f" Palette data = ${data_ptr:06X} (0x{PALETTE_MAP_DATA_ADDR + pal_offset:05X})") + pal_offset += 0x11C + palette_count += 1 + bank_palette_count += 1 + map_palette_count += 1 + map_num += 1 + #print (f"===========================================") + #print (f"Map palette count: {palette_count}") + +def pc_to_snes(address): + return ((address << 1) & 0x7F0000) | (address & 0x7FFF) | 0x8000 + +def read_palette_file(tileset, filename, type_): + palette_file = pkgutil.get_data(__name__, f"data/palettes/{type_}/{tileset}/{filename}") + #palette_file = open(os.path.join(os.path.dirname(__file__), "data", "palettes", tileset, filename), "rb").read() + colors = bytearray([]) + + # Copy back colors + colors += bytearray([palette_file[0x200], palette_file[0x201]]) + + if type_ == "level": + # Copy background colors + colors += bytearray([palette_file[(0x01*2)+(i)] for i in range(14)]) + colors += bytearray([palette_file[(0x11*2)+(i)] for i in range(14)]) + + # Copy foreground colors + colors += bytearray([palette_file[(0x21*2)+(i)] for i in range(14)]) + colors += bytearray([palette_file[(0x31*2)+(i)] for i in range(14)]) + + # Copy berry colors + colors += bytearray([palette_file[(0x29*2)+(i)] for i in range(14)]) + colors += bytearray([palette_file[(0x39*2)+(i)] for i in range(14)]) + colors += bytearray([palette_file[(0x49*2)+(i)] for i in range(14)]) + + # Copy global colors + colors += bytearray([palette_file[(0x41*2)+(i)] for i in range(14)]) + colors += bytearray([palette_file[(0x51*2)+(i)] for i in range(14)]) + colors += bytearray([palette_file[(0x61*2)+(i)] for i in range(14)]) + colors += bytearray([palette_file[(0x71*2)+(i)] for i in range(14)]) + + # Copy sprite colors + colors += bytearray([palette_file[(0x81*2)+(i)] for i in range(14)]) + colors += bytearray([palette_file[(0x91*2)+(i)] for i in range(14)]) + colors += bytearray([palette_file[(0xA1*2)+(i)] for i in range(14)]) + colors += bytearray([palette_file[(0xB1*2)+(i)] for i in range(14)]) + colors += bytearray([palette_file[(0xC1*2)+(i)] for i in range(14)]) + colors += bytearray([palette_file[(0xD1*2)+(i)] for i in range(14)]) + colors += bytearray([palette_file[(0xE1*2)+(i)] for i in range(14)]) + colors += bytearray([palette_file[(0xF1*2)+(i)] for i in range(14)]) + colors += bytearray([palette_file[(0xE9*2)+(i)] for i in range(14)]) + colors += bytearray([palette_file[(0xF9*2)+(i)] for i in range(14)]) + + elif type_ == "map": + # Copy layer 2 colors + colors += bytearray([palette_file[(0x41*2)+(i)] for i in range(14)]) + colors += bytearray([palette_file[(0x51*2)+(i)] for i in range(14)]) + colors += bytearray([palette_file[(0x61*2)+(i)] for i in range(14)]) + colors += bytearray([palette_file[(0x71*2)+(i)] for i in range(14)]) + + # Copy layer 1 colors + colors += bytearray([palette_file[(0x29*2)+(i)] for i in range(14)]) + colors += bytearray([palette_file[(0x39*2)+(i)] for i in range(14)]) + colors += bytearray([palette_file[(0x49*2)+(i)] for i in range(14)]) + colors += bytearray([palette_file[(0x59*2)+(i)] for i in range(14)]) + colors += bytearray([palette_file[(0x69*2)+(i)] for i in range(14)]) + colors += bytearray([palette_file[(0x79*2)+(i)] for i in range(14)]) + + # Copy layer 3 colors + colors += bytearray([palette_file[(0x08*2)+(i)] for i in range(16)]) + colors += bytearray([palette_file[(0x18*2)+(i)] for i in range(16)]) + + # Copy sprite colors + colors += bytearray([palette_file[(0x81*2)+(i)] for i in range(14)]) + colors += bytearray([palette_file[(0x91*2)+(i)] for i in range(14)]) + colors += bytearray([palette_file[(0xA1*2)+(i)] for i in range(14)]) + colors += bytearray([palette_file[(0xB1*2)+(i)] for i in range(14)]) + colors += bytearray([palette_file[(0xC1*2)+(i)] for i in range(14)]) + colors += bytearray([palette_file[(0xD1*2)+(i)] for i in range(14)]) + colors += bytearray([palette_file[(0xE1*2)+(i)] for i in range(14)]) + colors += bytearray([palette_file[(0xF1*2)+(i)] for i in range(14)]) + + return colors \ No newline at end of file diff --git a/worlds/smw/Client.py b/worlds/smw/Client.py index 92aeac4d4a2b..603ae7e4c9f4 100644 --- a/worlds/smw/Client.py +++ b/worlds/smw/Client.py @@ -17,11 +17,18 @@ SMW_ROMHASH_START = 0x7FC0 ROMHASH_SIZE = 0x15 -SMW_PROGRESS_DATA = WRAM_START + 0x1F02 -SMW_DRAGON_COINS_DATA = WRAM_START + 0x1F2F -SMW_PATH_DATA = WRAM_START + 0x1EA2 -SMW_EVENT_ROM_DATA = ROM_START + 0x2D608 -SMW_ACTIVE_LEVEL_DATA = ROM_START + 0x37F70 +SMW_PROGRESS_DATA = WRAM_START + 0x1F02 +SMW_DRAGON_COINS_DATA = WRAM_START + 0x1F2F +SMW_PATH_DATA = WRAM_START + 0x1EA2 +SMW_EVENT_ROM_DATA = ROM_START + 0x2D608 +SMW_ACTIVE_LEVEL_DATA = ROM_START + 0x37F70 +SMW_MOON_DATA = WRAM_START + 0x1FEE +SMW_CHECKPOINT_DATA = WRAM_START + 0x1F3C +SMW_BONUS_BLOCK_DATA = WRAM_START + 0x1A000 +SMW_BLOCKSANITY_DATA = WRAM_START + 0x1A400 +SMW_BLOCKSANITY_FLAGS = WRAM_START + 0x1A010 +SMW_SPECIAL_WORLD_CLEAR = WRAM_START + 0x1FFF + SMW_GOAL_DATA = ROM_START + 0x01BFA0 SMW_REQUIRED_BOSSES_DATA = ROM_START + 0x01BFA1 @@ -31,6 +38,10 @@ SMW_DEATH_LINK_ACTIVE_ADDR = ROM_START + 0x01BFA5 SMW_DRAGON_COINS_ACTIVE_ADDR = ROM_START + 0x01BFA6 SMW_SWAMP_DONUT_GH_ADDR = ROM_START + 0x01BFA7 +SMW_MOON_ACTIVE_ADDR = ROM_START + 0x01BFA8 +SMW_CHECKPOINT_ACTIVE_ADDR = ROM_START + 0x01BFA9 +SMW_BONUS_BLOCK_ACTIVE_ADDR = ROM_START + 0x01BFAA +SMW_BLOCKSANITY_ACTIVE_ADDR = ROM_START + 0x01BFAB SMW_GAME_STATE_ADDR = WRAM_START + 0x100 SMW_MARIO_STATE_ADDR = WRAM_START + 0x71 @@ -46,7 +57,9 @@ SMW_PAUSE_ADDR = WRAM_START + 0x13D4 SMW_MESSAGE_QUEUE_ADDR = WRAM_START + 0xC391 -SMW_RECV_PROGRESS_ADDR = WRAM_START + 0x1F2B +SMW_RECV_PROGRESS_ADDR = WRAM_START + 0x1A00E + +SMW_BLOCKSANITY_BLOCK_COUNT = 657 SMW_GOAL_LEVELS = [0x28, 0x31, 0x32] SMW_INVALID_MARIO_STATES = [0x05, 0x06, 0x0A, 0x0C, 0x0D] @@ -303,7 +316,16 @@ async def game_watcher(self, ctx): progress_data = bytearray(await snes_read(ctx, SMW_PROGRESS_DATA, 0x0F)) dragon_coins_data = bytearray(await snes_read(ctx, SMW_DRAGON_COINS_DATA, 0x0C)) dragon_coins_active = await snes_read(ctx, SMW_DRAGON_COINS_ACTIVE_ADDR, 0x1) - from worlds.smw.Rom import item_rom_data, ability_rom_data, trap_rom_data + moon_data = bytearray(await snes_read(ctx, SMW_MOON_DATA, 0x0C)) + moon_active = await snes_read(ctx, SMW_MOON_ACTIVE_ADDR, 0x1) + checkpoint_data = bytearray(await snes_read(ctx, SMW_CHECKPOINT_DATA, 0x0C)) + checkpoint_active = await snes_read(ctx, SMW_CHECKPOINT_ACTIVE_ADDR, 0x1) + bonus_block_data = bytearray(await snes_read(ctx, SMW_BONUS_BLOCK_DATA, 0x0C)) + bonus_block_active = await snes_read(ctx, SMW_BONUS_BLOCK_ACTIVE_ADDR, 0x1) + blocksanity_data = bytearray(await snes_read(ctx, SMW_BLOCKSANITY_DATA, SMW_BLOCKSANITY_BLOCK_COUNT)) + blocksanity_flags = bytearray(await snes_read(ctx, SMW_BLOCKSANITY_FLAGS, 0xC)) + blocksanity_active = await snes_read(ctx, SMW_BLOCKSANITY_ACTIVE_ADDR, 0x1) + from worlds.smw.Rom import item_rom_data, ability_rom_data, trap_rom_data, icon_rom_data from worlds.smw.Levels import location_id_to_level_id, level_info_dict from worlds import AutoWorldRegister for loc_name, level_data in location_id_to_level_id.items(): @@ -326,6 +348,54 @@ async def game_watcher(self, ctx): if bit_set: new_checks.append(loc_id) + elif level_data[1] == 3: + # Moon Check + if not moon_active or moon_active[0] == 0: + continue + + progress_byte = (level_data[0] // 8) + progress_bit = 7 - (level_data[0] % 8) + + data = moon_data[progress_byte] + masked_data = data & (1 << progress_bit) + bit_set = (masked_data != 0) + + if bit_set: + new_checks.append(loc_id) + elif level_data[1] == 4: + # Checkpoint Check + if not checkpoint_active or checkpoint_active[0] == 0: + continue + + progress_byte = (level_data[0] // 8) + progress_bit = 7 - (level_data[0] % 8) + + data = checkpoint_data[progress_byte] + masked_data = data & (1 << progress_bit) + bit_set = (masked_data != 0) + + if bit_set: + new_checks.append(loc_id) + elif level_data[1] == 5: + # Bonus Block Check + if not bonus_block_active or bonus_block_active[0] == 0: + continue + + progress_byte = (level_data[0] // 8) + progress_bit = 7 - (level_data[0] % 8) + + data = bonus_block_data[progress_byte] + masked_data = data & (1 << progress_bit) + bit_set = (masked_data != 0) + + if bit_set: + new_checks.append(loc_id) + elif level_data[1] >= 100: + if not blocksanity_active or blocksanity_active[0] == 0: + continue + block_index = level_data[1] - 100 + if blocksanity_data[block_index] != 0: + new_checks.append(loc_id) else: event_id_value = event_id + level_data[1] @@ -363,8 +433,9 @@ async def game_watcher(self, ctx): # Don't receive items or collect locations outside of in-level mode return - recv_count = await snes_read(ctx, SMW_RECV_PROGRESS_ADDR, 1) - recv_index = recv_count[0] + recv_count = await snes_read(ctx, SMW_RECV_PROGRESS_ADDR, 2) + recv_index = recv_count[0]+(recv_count[1]<<8) + if recv_index < len(ctx.items_received): item = ctx.items_received[recv_index] @@ -383,7 +454,7 @@ async def game_watcher(self, ctx): receive_message = generate_received_text(item_name, player_name) self.add_message_to_queue(receive_message) - snes_buffered_write(ctx, SMW_RECV_PROGRESS_ADDR, bytes([recv_index])) + snes_buffered_write(ctx, SMW_RECV_PROGRESS_ADDR, bytes([recv_index&0xFF, (recv_index>>8)&0xFF])) if item.item in trap_rom_data: item_name = ctx.item_names[item.item] player_name = ctx.player_names[item.player] @@ -404,6 +475,14 @@ async def game_watcher(self, ctx): snes_buffered_write(ctx, SMW_SFX_ADDR, bytes([item_rom_data[item.item][2]])) snes_buffered_write(ctx, WRAM_START + item_rom_data[item.item][0], bytes([new_item_count])) + elif item.item in icon_rom_data: + if verify_game_state[0] == 0x14: + queue_addr = await snes_read(ctx, WRAM_START + icon_rom_data[item.item][0], 2) + queue_addr = queue_addr[0]+(queue_addr[1]<<8) + queue_addr += 1 + snes_buffered_write(ctx, WRAM_START + icon_rom_data[item.item][0], bytes([queue_addr&0xFF, (queue_addr>>8)&0xFF])) + + elif item.item in ability_rom_data: # Handle Upgrades for rom_data in ability_rom_data[item.item]: @@ -448,6 +527,11 @@ async def game_watcher(self, ctx): path_data = bytearray(await snes_read(ctx, SMW_PATH_DATA, 0x60)) donut_gh_swapped = await snes_read(ctx, SMW_SWAMP_DONUT_GH_ADDR, 0x1) new_dragon_coin = False + new_moon = False + new_checkpoint = False + new_bonus_block = False + new_blocksanity = False + i = 0 for loc_id in ctx.checked_locations: if loc_id not in ctx.locations_checked: ctx.locations_checked.add(loc_id) @@ -456,6 +540,9 @@ async def game_watcher(self, ctx): if loc_name not in location_id_to_level_id: continue + logging.info(f"Recovered checks ({i:03}): {loc_name}") + i += 1 + level_data = location_id_to_level_id[loc_name] if level_data[1] == 2: @@ -469,6 +556,42 @@ async def game_watcher(self, ctx): dragon_coins_data[progress_byte] = new_data new_dragon_coin = True + elif level_data[1] == 3: + # Moon Check + + progress_byte = (level_data[0] // 8) + progress_bit = 7 - (level_data[0] % 8) + + data = moon_data[progress_byte] + new_data = data | (1 << progress_bit) + moon_data[progress_byte] = new_data + + new_moon = True + elif level_data[1] == 4: + # Checkpoint Check + progress_byte = (level_data[0] // 8) + progress_bit = 7 - (level_data[0] % 8) + + data = checkpoint_data[progress_byte] + new_data = data | (1 << progress_bit) + checkpoint_data[progress_byte] = new_data + + new_checkpoint = True + elif level_data[1] == 5: + # Checkpoint Check + + progress_byte = (level_data[0] // 8) + progress_bit = 7 - (level_data[0] % 8) + + data = bonus_block_data[progress_byte] + new_data = data | (1 << progress_bit) + bonus_block_data[progress_byte] = new_data + + new_bonus_block = True + elif level_data[1] >= 100: + block_index = level_data[1] - 100 + blocksanity_data[block_index] = 1 + new_blocksanity = True else: if level_data[0] in SMW_UNCOLLECTABLE_LEVELS: continue @@ -513,6 +636,14 @@ async def game_watcher(self, ctx): if new_dragon_coin: snes_buffered_write(ctx, SMW_DRAGON_COINS_DATA, bytes(dragon_coins_data)) + if new_moon: + snes_buffered_write(ctx, SMW_MOON_DATA, bytes(moon_data)) + if new_checkpoint: + snes_buffered_write(ctx, SMW_CHECKPOINT_DATA, bytes(checkpoint_data)) + if new_bonus_block: + snes_buffered_write(ctx, SMW_BONUS_BLOCK_DATA, bytes(bonus_block_data)) + if new_blocksanity: + snes_buffered_write(ctx, SMW_BLOCKSANITY_DATA, bytes(blocksanity_data)) if new_events > 0: snes_buffered_write(ctx, SMW_PROGRESS_DATA, bytes(progress_data)) snes_buffered_write(ctx, SMW_PATH_DATA, bytes(path_data)) diff --git a/worlds/smw/Items.py b/worlds/smw/Items.py index 5b6cce5a7f6e..66d1e41ac9c2 100644 --- a/worlds/smw/Items.py +++ b/worlds/smw/Items.py @@ -18,7 +18,11 @@ class SMWItem(Item): # Separate tables for each type of item. junk_table = { - ItemName.one_up_mushroom: ItemData(0xBC0001, False), + ItemName.one_coin: ItemData(0xBC0017, False), + ItemName.five_coins: ItemData(0xBC0018, False), + ItemName.ten_coins: ItemData(0xBC0019, False), + ItemName.fifteen_coins: ItemData(0xBC001A, False), + ItemName.one_up_mushroom: ItemData(0xBC0001, False) } collectable_table = { @@ -36,6 +40,7 @@ class SMWItem(Item): ItemName.progressive_powerup: ItemData(0xBC000A, True), ItemName.p_balloon: ItemData(0xBC000B, True), ItemName.super_star_active: ItemData(0xBC000D, True), + ItemName.special_world_clear: ItemData(0xBC001B, True) } switch_palace_table = { diff --git a/worlds/smw/Levels.py b/worlds/smw/Levels.py index 3940a08c7c5b..0858d2b2ae48 100644 --- a/worlds/smw/Levels.py +++ b/worlds/smw/Levels.py @@ -261,7 +261,6 @@ def __init__(self, levelName: str, levelIDAddress: int, eventIDValue: int, exit1 0x3D, 0x01, 0x0C, - 0x0D, 0x46, 0x1D, ] @@ -273,6 +272,7 @@ def __init__(self, levelName: str, levelIDAddress: int, eventIDValue: int, exit1 0x10, 0x22, 0x1C, + 0x0D, 0x21, 0x3B, 0x3A, @@ -330,12 +330,15 @@ def __init__(self, levelName: str, levelIDAddress: int, eventIDValue: int, exit1 location_id_to_level_id = { LocationName.yoshis_island_1_exit_1: [0x29, 0], LocationName.yoshis_island_1_dragon: [0x29, 2], + LocationName.yoshis_island_1_moon: [0x29, 3], LocationName.yoshis_island_2_exit_1: [0x2A, 0], LocationName.yoshis_island_2_dragon: [0x2A, 2], LocationName.yoshis_island_3_exit_1: [0x27, 0], LocationName.yoshis_island_3_dragon: [0x27, 2], + LocationName.yoshis_island_3_bonus_block: [0x27, 5], LocationName.yoshis_island_4_exit_1: [0x26, 0], LocationName.yoshis_island_4_dragon: [0x26, 2], + LocationName.yoshis_island_4_checkpoint: [0x26, 4], LocationName.yoshis_island_castle: [0x25, 0], LocationName.yoshis_island_koopaling: [0x25, 0], LocationName.yellow_switch_palace: [0x14, 0], @@ -343,13 +346,17 @@ def __init__(self, levelName: str, levelIDAddress: int, eventIDValue: int, exit1 LocationName.donut_plains_1_exit_1: [0x15, 0], LocationName.donut_plains_1_exit_2: [0x15, 1], LocationName.donut_plains_1_dragon: [0x15, 2], + LocationName.donut_plains_1_checkpoint: [0x15, 4], LocationName.donut_plains_2_exit_1: [0x09, 0], LocationName.donut_plains_2_exit_2: [0x09, 1], LocationName.donut_plains_2_dragon: [0x09, 2], LocationName.donut_plains_3_exit_1: [0x05, 0], LocationName.donut_plains_3_dragon: [0x05, 2], + LocationName.donut_plains_3_bonus_block: [0x05, 5], LocationName.donut_plains_4_exit_1: [0x06, 0], LocationName.donut_plains_4_dragon: [0x06, 2], + LocationName.donut_plains_4_moon: [0x06, 3], + LocationName.donut_plains_4_checkpoint: [0x06, 4], LocationName.donut_secret_1_exit_1: [0x0A, 0], LocationName.donut_secret_1_exit_2: [0x0A, 1], LocationName.donut_secret_1_dragon: [0x0A, 2], @@ -360,6 +367,7 @@ def __init__(self, levelName: str, levelIDAddress: int, eventIDValue: int, exit1 LocationName.donut_secret_house_exit_1: [0x13, 0], LocationName.donut_secret_house_exit_2: [0x13, 1], LocationName.donut_plains_castle: [0x07, 0], + LocationName.donut_plains_castle_checkpoint: [0x07, 4], LocationName.donut_plains_koopaling: [0x07, 0], LocationName.green_switch_palace: [0x08, 0], @@ -371,8 +379,10 @@ def __init__(self, levelName: str, levelIDAddress: int, eventIDValue: int, exit1 LocationName.vanilla_dome_2_dragon: [0x3C, 2], LocationName.vanilla_dome_3_exit_1: [0x2E, 0], LocationName.vanilla_dome_3_dragon: [0x2E, 2], + LocationName.vanilla_dome_3_moon: [0x2E, 3], LocationName.vanilla_dome_4_exit_1: [0x3D, 0], LocationName.vanilla_dome_4_dragon: [0x3D, 2], + LocationName.vanilla_dome_4_checkpoint: [0x3D, 4], LocationName.vanilla_secret_1_exit_1: [0x2D, 0], LocationName.vanilla_secret_1_exit_2: [0x2D, 1], LocationName.vanilla_secret_1_dragon: [0x2D, 2], @@ -382,7 +392,9 @@ def __init__(self, levelName: str, levelIDAddress: int, eventIDValue: int, exit1 LocationName.vanilla_secret_3_dragon: [0x02, 2], LocationName.vanilla_ghost_house_exit_1: [0x2B, 0], LocationName.vanilla_ghost_house_dragon: [0x2B, 2], + LocationName.vanilla_ghost_house_checkpoint: [0x2B, 4], LocationName.vanilla_fortress: [0x0B, 0], + LocationName.vanilla_fortress_checkpoint: [0x0B, 4], LocationName.vanilla_reznor: [0x0B, 0], LocationName.vanilla_dome_castle: [0x40, 0], LocationName.vanilla_dome_koopaling: [0x40, 0], @@ -390,13 +402,16 @@ def __init__(self, levelName: str, levelIDAddress: int, eventIDValue: int, exit1 LocationName.butter_bridge_1_exit_1: [0x0C, 0], LocationName.butter_bridge_1_dragon: [0x0C, 2], + LocationName.butter_bridge_1_bonus_block: [0x0C, 5], LocationName.butter_bridge_2_exit_1: [0x0D, 0], LocationName.butter_bridge_2_dragon: [0x0D, 2], LocationName.cheese_bridge_exit_1: [0x0F, 0], LocationName.cheese_bridge_exit_2: [0x0F, 1], LocationName.cheese_bridge_dragon: [0x0F, 2], + LocationName.cheese_bridge_moon: [0x0F, 3], LocationName.cookie_mountain_exit_1: [0x10, 0], LocationName.cookie_mountain_dragon: [0x10, 2], + LocationName.cookie_mountain_checkpoint: [0x10, 4], LocationName.soda_lake_exit_1: [0x11, 0], LocationName.soda_lake_dragon: [0x11, 2], LocationName.twin_bridges_castle: [0x0E, 0], @@ -410,12 +425,14 @@ def __init__(self, levelName: str, levelIDAddress: int, eventIDValue: int, exit1 LocationName.forest_of_illusion_3_exit_1: [0x47, 0], LocationName.forest_of_illusion_3_exit_2: [0x47, 1], LocationName.forest_of_illusion_3_dragon: [0x47, 2], + LocationName.forest_of_illusion_3_checkpoint: [0x47, 4], LocationName.forest_of_illusion_4_exit_1: [0x43, 0], LocationName.forest_of_illusion_4_exit_2: [0x43, 1], LocationName.forest_of_illusion_4_dragon: [0x43, 2], LocationName.forest_ghost_house_exit_1: [0x41, 0], LocationName.forest_ghost_house_exit_2: [0x41, 1], LocationName.forest_ghost_house_dragon: [0x41, 2], + LocationName.forest_ghost_house_moon: [0x41, 3], LocationName.forest_secret_exit_1: [0x46, 0], LocationName.forest_secret_dragon: [0x46, 2], LocationName.forest_fortress: [0x1F, 0], @@ -427,12 +444,15 @@ def __init__(self, levelName: str, levelIDAddress: int, eventIDValue: int, exit1 LocationName.chocolate_island_1_exit_1: [0x22, 0], LocationName.chocolate_island_1_dragon: [0x22, 2], + LocationName.chocolate_island_1_moon: [0x22, 3], LocationName.chocolate_island_2_exit_1: [0x24, 0], LocationName.chocolate_island_2_exit_2: [0x24, 1], LocationName.chocolate_island_2_dragon: [0x24, 2], + LocationName.chocolate_island_2_checkpoint: [0x24, 4], LocationName.chocolate_island_3_exit_1: [0x23, 0], LocationName.chocolate_island_3_exit_2: [0x23, 1], LocationName.chocolate_island_3_dragon: [0x23, 2], + LocationName.chocolate_island_3_bonus_block: [0x23, 5], LocationName.chocolate_island_4_exit_1: [0x1D, 0], LocationName.chocolate_island_4_dragon: [0x1D, 2], LocationName.chocolate_island_5_exit_1: [0x1C, 0], @@ -442,6 +462,7 @@ def __init__(self, levelName: str, levelIDAddress: int, eventIDValue: int, exit1 LocationName.chocolate_fortress: [0x1B, 0], LocationName.chocolate_reznor: [0x1B, 0], LocationName.chocolate_castle: [0x1A, 0], + LocationName.chocolate_castle_checkpoint: [0x1A, 4], LocationName.chocolate_koopaling: [0x1A, 0], LocationName.sunken_ghost_ship: [0x18, 0], @@ -449,9 +470,11 @@ def __init__(self, levelName: str, levelIDAddress: int, eventIDValue: int, exit1 LocationName.valley_of_bowser_1_exit_1: [0x3A, 0], LocationName.valley_of_bowser_1_dragon: [0x3A, 2], + LocationName.valley_of_bowser_1_moon: [0x3A, 3], LocationName.valley_of_bowser_2_exit_1: [0x39, 0], LocationName.valley_of_bowser_2_exit_2: [0x39, 1], LocationName.valley_of_bowser_2_dragon: [0x39, 2], + LocationName.valley_of_bowser_2_checkpoint: [0x39, 4], LocationName.valley_of_bowser_3_exit_1: [0x37, 0], LocationName.valley_of_bowser_3_dragon: [0x37, 2], LocationName.valley_of_bowser_4_exit_1: [0x33, 0], @@ -464,6 +487,7 @@ def __init__(self, levelName: str, levelIDAddress: int, eventIDValue: int, exit1 LocationName.valley_castle: [0x34, 0], LocationName.valley_koopaling: [0x34, 0], LocationName.valley_castle_dragon: [0x34, 2], + LocationName.valley_castle_checkpoint: [0x34, 4], LocationName.star_road_1_exit_1: [0x58, 0], LocationName.star_road_1_exit_2: [0x58, 1], @@ -479,6 +503,7 @@ def __init__(self, levelName: str, levelIDAddress: int, eventIDValue: int, exit1 LocationName.special_zone_1_exit_1: [0x4E, 0], LocationName.special_zone_1_dragon: [0x4E, 2], + LocationName.special_zone_1_checkpoint: [0x4E, 4], LocationName.special_zone_2_exit_1: [0x4F, 0], LocationName.special_zone_2_dragon: [0x4F, 2], LocationName.special_zone_3_exit_1: [0x50, 0], @@ -493,6 +518,668 @@ def __init__(self, levelName: str, levelIDAddress: int, eventIDValue: int, exit1 LocationName.special_zone_7_dragon: [0x4A, 2], LocationName.special_zone_8_exit_1: [0x49, 0], LocationName.special_zone_8_dragon: [0x49, 2], + + + + + + LocationName.vanilla_secret_2_yoshi_block_1: [0x01, 100], + LocationName.vanilla_secret_2_green_block_1: [0x01, 101], + LocationName.vanilla_secret_2_powerup_block_1: [0x01, 102], + LocationName.vanilla_secret_2_powerup_block_2: [0x01, 103], + LocationName.vanilla_secret_2_multi_coin_block_1: [0x01, 104], + LocationName.vanilla_secret_2_gray_pow_block_1: [0x01, 105], + LocationName.vanilla_secret_2_coin_block_1: [0x01, 106], + LocationName.vanilla_secret_2_coin_block_2: [0x01, 107], + LocationName.vanilla_secret_2_coin_block_3: [0x01, 108], + LocationName.vanilla_secret_2_coin_block_4: [0x01, 109], + LocationName.vanilla_secret_2_coin_block_5: [0x01, 110], + LocationName.vanilla_secret_2_coin_block_6: [0x01, 111], + LocationName.vanilla_secret_3_powerup_block_1: [0x02, 112], + LocationName.vanilla_secret_3_powerup_block_2: [0x02, 113], + LocationName.donut_ghost_house_vine_block_1: [0x04, 114], + LocationName.donut_ghost_house_directional_coin_block_1: [0x04, 115], + LocationName.donut_ghost_house_life_block_1: [0x04, 116], + LocationName.donut_ghost_house_life_block_2: [0x04, 117], + LocationName.donut_ghost_house_life_block_3: [0x04, 118], + LocationName.donut_ghost_house_life_block_4: [0x04, 119], + LocationName.donut_plains_3_green_block_1: [0x05, 120], + LocationName.donut_plains_3_coin_block_1: [0x05, 121], + LocationName.donut_plains_3_coin_block_2: [0x05, 122], + LocationName.donut_plains_3_vine_block_1: [0x05, 123], + LocationName.donut_plains_3_powerup_block_1: [0x05, 124], + LocationName.donut_plains_3_bonus_block_1: [0x05, 125], + LocationName.donut_plains_4_coin_block_1: [0x06, 126], + LocationName.donut_plains_4_powerup_block_1: [0x06, 127], + LocationName.donut_plains_4_coin_block_2: [0x06, 128], + LocationName.donut_plains_4_yoshi_block_1: [0x06, 129], + LocationName.donut_plains_castle_yellow_block_1: [0x07, 130], + LocationName.donut_plains_castle_coin_block_1: [0x07, 131], + LocationName.donut_plains_castle_powerup_block_1: [0x07, 132], + LocationName.donut_plains_castle_coin_block_2: [0x07, 133], + LocationName.donut_plains_castle_vine_block_1: [0x07, 134], + LocationName.donut_plains_castle_invis_life_block_1: [0x07, 135], + LocationName.donut_plains_castle_coin_block_3: [0x07, 136], + LocationName.donut_plains_castle_coin_block_4: [0x07, 137], + LocationName.donut_plains_castle_coin_block_5: [0x07, 138], + LocationName.donut_plains_castle_green_block_1: [0x07, 139], + LocationName.donut_plains_2_coin_block_1: [0x09, 140], + LocationName.donut_plains_2_coin_block_2: [0x09, 141], + LocationName.donut_plains_2_coin_block_3: [0x09, 142], + LocationName.donut_plains_2_yellow_block_1: [0x09, 143], + LocationName.donut_plains_2_powerup_block_1: [0x09, 144], + LocationName.donut_plains_2_multi_coin_block_1: [0x09, 145], + LocationName.donut_plains_2_flying_block_1: [0x09, 146], + LocationName.donut_plains_2_green_block_1: [0x09, 147], + LocationName.donut_plains_2_yellow_block_2: [0x09, 148], + LocationName.donut_plains_2_vine_block_1: [0x09, 149], + LocationName.donut_secret_1_coin_block_1: [0x0A, 150], + LocationName.donut_secret_1_coin_block_2: [0x0A, 151], + LocationName.donut_secret_1_powerup_block_1: [0x0A, 152], + LocationName.donut_secret_1_coin_block_3: [0x0A, 153], + LocationName.donut_secret_1_powerup_block_2: [0x0A, 154], + LocationName.donut_secret_1_powerup_block_3: [0x0A, 155], + LocationName.donut_secret_1_life_block_1: [0x0A, 156], + LocationName.donut_secret_1_powerup_block_4: [0x0A, 157], + LocationName.donut_secret_1_powerup_block_5: [0x0A, 158], + LocationName.donut_secret_1_key_block_1: [0x0A, 159], + LocationName.vanilla_fortress_powerup_block_1: [0x0B, 160], + LocationName.vanilla_fortress_powerup_block_2: [0x0B, 161], + LocationName.vanilla_fortress_yellow_block_1: [0x0B, 162], + LocationName.butter_bridge_1_powerup_block_1: [0x0C, 163], + LocationName.butter_bridge_1_multi_coin_block_1: [0x0C, 164], + LocationName.butter_bridge_1_multi_coin_block_2: [0x0C, 165], + LocationName.butter_bridge_1_multi_coin_block_3: [0x0C, 166], + LocationName.butter_bridge_1_life_block_1: [0x0C, 167], + LocationName.butter_bridge_1_bonus_block_1: [0x0C, 168], + LocationName.butter_bridge_2_powerup_block_1: [0x0D, 169], + LocationName.butter_bridge_2_green_block_1: [0x0D, 170], + LocationName.butter_bridge_2_yoshi_block_1: [0x0D, 171], + LocationName.twin_bridges_castle_powerup_block_1: [0x0E, 172], + LocationName.cheese_bridge_powerup_block_1: [0x0F, 173], + LocationName.cheese_bridge_powerup_block_2: [0x0F, 174], + LocationName.cheese_bridge_wings_block_1: [0x0F, 175], + LocationName.cheese_bridge_powerup_block_3: [0x0F, 176], + LocationName.cookie_mountain_coin_block_1: [0x10, 177], + LocationName.cookie_mountain_coin_block_2: [0x10, 178], + LocationName.cookie_mountain_coin_block_3: [0x10, 179], + LocationName.cookie_mountain_coin_block_4: [0x10, 180], + LocationName.cookie_mountain_coin_block_5: [0x10, 181], + LocationName.cookie_mountain_coin_block_6: [0x10, 182], + LocationName.cookie_mountain_coin_block_7: [0x10, 183], + LocationName.cookie_mountain_coin_block_8: [0x10, 184], + LocationName.cookie_mountain_coin_block_9: [0x10, 185], + LocationName.cookie_mountain_powerup_block_1: [0x10, 186], + LocationName.cookie_mountain_life_block_1: [0x10, 187], + LocationName.cookie_mountain_vine_block_1: [0x10, 188], + LocationName.cookie_mountain_yoshi_block_1: [0x10, 189], + LocationName.cookie_mountain_coin_block_10: [0x10, 190], + LocationName.cookie_mountain_coin_block_11: [0x10, 191], + LocationName.cookie_mountain_powerup_block_2: [0x10, 192], + LocationName.cookie_mountain_coin_block_12: [0x10, 193], + LocationName.cookie_mountain_coin_block_13: [0x10, 194], + LocationName.cookie_mountain_coin_block_14: [0x10, 195], + LocationName.cookie_mountain_coin_block_15: [0x10, 196], + LocationName.cookie_mountain_coin_block_16: [0x10, 197], + LocationName.cookie_mountain_coin_block_17: [0x10, 198], + LocationName.cookie_mountain_coin_block_18: [0x10, 199], + LocationName.cookie_mountain_coin_block_19: [0x10, 200], + LocationName.cookie_mountain_coin_block_20: [0x10, 201], + LocationName.cookie_mountain_coin_block_21: [0x10, 202], + LocationName.cookie_mountain_coin_block_22: [0x10, 203], + LocationName.cookie_mountain_coin_block_23: [0x10, 204], + LocationName.cookie_mountain_coin_block_24: [0x10, 205], + LocationName.cookie_mountain_coin_block_25: [0x10, 206], + LocationName.cookie_mountain_coin_block_26: [0x10, 207], + LocationName.cookie_mountain_coin_block_27: [0x10, 208], + LocationName.cookie_mountain_coin_block_28: [0x10, 209], + LocationName.cookie_mountain_coin_block_29: [0x10, 210], + LocationName.cookie_mountain_coin_block_30: [0x10, 211], + LocationName.soda_lake_powerup_block_1: [0x11, 212], + LocationName.donut_secret_house_powerup_block_1: [0x13, 213], + LocationName.donut_secret_house_multi_coin_block_1: [0x13, 214], + LocationName.donut_secret_house_life_block_1: [0x13, 215], + LocationName.donut_secret_house_vine_block_1: [0x13, 216], + LocationName.donut_secret_house_pswitch_coin_block_1: [0x13, 217], + LocationName.donut_secret_house_pswitch_coin_block_2: [0x13, 218], + LocationName.donut_secret_house_pswitch_coin_block_3: [0x13, 219], + LocationName.donut_plains_1_coin_block_1: [0x15, 220], + LocationName.donut_plains_1_coin_block_2: [0x15, 221], + LocationName.donut_plains_1_yoshi_block_1: [0x15, 222], + LocationName.donut_plains_1_vine_block_1: [0x15, 223], + LocationName.donut_plains_1_green_block_1: [0x15, 224], + LocationName.donut_plains_1_green_block_2: [0x15, 225], + LocationName.donut_plains_1_green_block_3: [0x15, 226], + LocationName.donut_plains_1_green_block_4: [0x15, 227], + LocationName.donut_plains_1_green_block_5: [0x15, 228], + LocationName.donut_plains_1_green_block_6: [0x15, 229], + LocationName.donut_plains_1_green_block_7: [0x15, 230], + LocationName.donut_plains_1_green_block_8: [0x15, 231], + LocationName.donut_plains_1_green_block_9: [0x15, 232], + LocationName.donut_plains_1_green_block_10: [0x15, 233], + LocationName.donut_plains_1_green_block_11: [0x15, 234], + LocationName.donut_plains_1_green_block_12: [0x15, 235], + LocationName.donut_plains_1_green_block_13: [0x15, 236], + LocationName.donut_plains_1_green_block_14: [0x15, 237], + LocationName.donut_plains_1_green_block_15: [0x15, 238], + LocationName.donut_plains_1_green_block_16: [0x15, 239], + LocationName.donut_plains_1_yellow_block_1: [0x15, 240], + LocationName.donut_plains_1_yellow_block_2: [0x15, 241], + LocationName.donut_plains_1_yellow_block_3: [0x15, 242], + LocationName.sunken_ghost_ship_powerup_block_1: [0x18, 243], + LocationName.sunken_ghost_ship_star_block_1: [0x18, 244], + LocationName.chocolate_castle_yellow_block_1: [0x1A, 245], + LocationName.chocolate_castle_yellow_block_2: [0x1A, 246], + LocationName.chocolate_castle_green_block_1: [0x1A, 247], + LocationName.chocolate_fortress_powerup_block_1: [0x1B, 248], + LocationName.chocolate_fortress_powerup_block_2: [0x1B, 249], + LocationName.chocolate_fortress_coin_block_1: [0x1B, 250], + LocationName.chocolate_fortress_coin_block_2: [0x1B, 251], + LocationName.chocolate_fortress_green_block_1: [0x1B, 252], + LocationName.chocolate_island_5_yoshi_block_1: [0x1C, 253], + LocationName.chocolate_island_5_powerup_block_1: [0x1C, 254], + LocationName.chocolate_island_5_life_block_1: [0x1C, 255], + LocationName.chocolate_island_5_yellow_block_1: [0x1C, 256], + LocationName.chocolate_island_4_yellow_block_1: [0x1D, 257], + LocationName.chocolate_island_4_blue_pow_block_1: [0x1D, 258], + LocationName.chocolate_island_4_powerup_block_1: [0x1D, 259], + LocationName.forest_fortress_yellow_block_1: [0x1F, 260], + LocationName.forest_fortress_powerup_block_1: [0x1F, 261], + LocationName.forest_fortress_life_block_1: [0x1F, 262], + LocationName.forest_fortress_life_block_2: [0x1F, 263], + LocationName.forest_fortress_life_block_3: [0x1F, 264], + LocationName.forest_fortress_life_block_4: [0x1F, 265], + LocationName.forest_fortress_life_block_5: [0x1F, 266], + LocationName.forest_fortress_life_block_6: [0x1F, 267], + LocationName.forest_fortress_life_block_7: [0x1F, 268], + LocationName.forest_fortress_life_block_8: [0x1F, 269], + LocationName.forest_fortress_life_block_9: [0x1F, 270], + LocationName.forest_castle_green_block_1: [0x20, 271], + LocationName.chocolate_ghost_house_powerup_block_1: [0x21, 272], + LocationName.chocolate_ghost_house_powerup_block_2: [0x21, 273], + LocationName.chocolate_ghost_house_life_block_1: [0x21, 274], + LocationName.chocolate_island_1_flying_block_1: [0x22, 275], + LocationName.chocolate_island_1_flying_block_2: [0x22, 276], + LocationName.chocolate_island_1_yoshi_block_1: [0x22, 277], + LocationName.chocolate_island_1_green_block_1: [0x22, 278], + LocationName.chocolate_island_1_life_block_1: [0x22, 279], + LocationName.chocolate_island_3_powerup_block_1: [0x23, 280], + LocationName.chocolate_island_3_powerup_block_2: [0x23, 281], + LocationName.chocolate_island_3_powerup_block_3: [0x23, 282], + LocationName.chocolate_island_3_green_block_1: [0x23, 283], + LocationName.chocolate_island_3_bonus_block_1: [0x23, 284], + LocationName.chocolate_island_3_vine_block_1: [0x23, 285], + LocationName.chocolate_island_3_life_block_1: [0x23, 286], + LocationName.chocolate_island_3_life_block_2: [0x23, 287], + LocationName.chocolate_island_3_life_block_3: [0x23, 288], + LocationName.chocolate_island_2_multi_coin_block_1: [0x24, 289], + LocationName.chocolate_island_2_invis_coin_block_1: [0x24, 290], + LocationName.chocolate_island_2_yoshi_block_1: [0x24, 291], + LocationName.chocolate_island_2_coin_block_1: [0x24, 292], + LocationName.chocolate_island_2_coin_block_2: [0x24, 293], + LocationName.chocolate_island_2_multi_coin_block_2: [0x24, 294], + LocationName.chocolate_island_2_powerup_block_1: [0x24, 295], + LocationName.chocolate_island_2_blue_pow_block_1: [0x24, 296], + LocationName.chocolate_island_2_yellow_block_1: [0x24, 297], + LocationName.chocolate_island_2_yellow_block_2: [0x24, 298], + LocationName.chocolate_island_2_green_block_1: [0x24, 299], + LocationName.chocolate_island_2_green_block_2: [0x24, 300], + LocationName.chocolate_island_2_green_block_3: [0x24, 301], + LocationName.chocolate_island_2_green_block_4: [0x24, 302], + LocationName.chocolate_island_2_green_block_5: [0x24, 303], + LocationName.chocolate_island_2_green_block_6: [0x24, 304], + LocationName.yoshis_island_castle_coin_block_1: [0x25, 305], + LocationName.yoshis_island_castle_coin_block_2: [0x25, 306], + LocationName.yoshis_island_castle_powerup_block_1: [0x25, 307], + LocationName.yoshis_island_castle_coin_block_3: [0x25, 308], + LocationName.yoshis_island_castle_coin_block_4: [0x25, 309], + LocationName.yoshis_island_castle_flying_block_1: [0x25, 310], + LocationName.yoshis_island_4_yellow_block_1: [0x26, 311], + LocationName.yoshis_island_4_powerup_block_1: [0x26, 312], + LocationName.yoshis_island_4_multi_coin_block_1: [0x26, 313], + LocationName.yoshis_island_4_star_block_1: [0x26, 314], + LocationName.yoshis_island_3_yellow_block_1: [0x27, 315], + LocationName.yoshis_island_3_yellow_block_2: [0x27, 316], + LocationName.yoshis_island_3_yellow_block_3: [0x27, 317], + LocationName.yoshis_island_3_yellow_block_4: [0x27, 318], + LocationName.yoshis_island_3_yellow_block_5: [0x27, 319], + LocationName.yoshis_island_3_yellow_block_6: [0x27, 320], + LocationName.yoshis_island_3_yellow_block_7: [0x27, 321], + LocationName.yoshis_island_3_yellow_block_8: [0x27, 322], + LocationName.yoshis_island_3_yellow_block_9: [0x27, 323], + LocationName.yoshis_island_3_yellow_block_10: [0x27, 324], + LocationName.yoshis_island_3_yellow_block_11: [0x27, 325], + LocationName.yoshis_island_3_yellow_block_12: [0x27, 326], + LocationName.yoshis_island_3_yellow_block_13: [0x27, 327], + LocationName.yoshis_island_3_yellow_block_14: [0x27, 328], + LocationName.yoshis_island_3_yellow_block_15: [0x27, 329], + LocationName.yoshis_island_3_yellow_block_16: [0x27, 330], + LocationName.yoshis_island_3_yellow_block_17: [0x27, 331], + LocationName.yoshis_island_3_yellow_block_18: [0x27, 332], + LocationName.yoshis_island_3_yellow_block_19: [0x27, 333], + LocationName.yoshis_island_3_yellow_block_20: [0x27, 334], + LocationName.yoshis_island_3_yellow_block_21: [0x27, 335], + LocationName.yoshis_island_3_yellow_block_22: [0x27, 336], + LocationName.yoshis_island_3_yellow_block_23: [0x27, 337], + LocationName.yoshis_island_3_yellow_block_24: [0x27, 338], + LocationName.yoshis_island_3_yellow_block_25: [0x27, 339], + LocationName.yoshis_island_3_yellow_block_26: [0x27, 340], + LocationName.yoshis_island_3_yellow_block_27: [0x27, 341], + LocationName.yoshis_island_3_yellow_block_28: [0x27, 342], + LocationName.yoshis_island_3_yellow_block_29: [0x27, 343], + LocationName.yoshis_island_3_coin_block_1: [0x27, 344], + LocationName.yoshis_island_3_yoshi_block_1: [0x27, 345], + LocationName.yoshis_island_3_yellow_block_30: [0x27, 346], + LocationName.yoshis_island_3_yellow_block_31: [0x27, 347], + LocationName.yoshis_island_3_yellow_block_32: [0x27, 348], + LocationName.yoshis_island_3_yellow_block_33: [0x27, 349], + LocationName.yoshis_island_3_yellow_block_34: [0x27, 350], + LocationName.yoshis_island_3_yellow_block_35: [0x27, 351], + LocationName.yoshis_island_3_yellow_block_36: [0x27, 352], + LocationName.yoshis_island_3_yellow_block_37: [0x27, 353], + LocationName.yoshis_island_3_yellow_block_38: [0x27, 354], + LocationName.yoshis_island_3_yellow_block_39: [0x27, 355], + LocationName.yoshis_island_3_yellow_block_40: [0x27, 356], + LocationName.yoshis_island_3_yellow_block_41: [0x27, 357], + LocationName.yoshis_island_3_yellow_block_42: [0x27, 358], + LocationName.yoshis_island_3_yellow_block_43: [0x27, 359], + LocationName.yoshis_island_3_yellow_block_44: [0x27, 360], + LocationName.yoshis_island_3_yellow_block_45: [0x27, 361], + LocationName.yoshis_island_3_yellow_block_46: [0x27, 362], + LocationName.yoshis_island_3_yellow_block_47: [0x27, 363], + LocationName.yoshis_island_3_yellow_block_48: [0x27, 364], + LocationName.yoshis_island_3_yellow_block_49: [0x27, 365], + LocationName.yoshis_island_3_yellow_block_50: [0x27, 366], + LocationName.yoshis_island_3_yellow_block_51: [0x27, 367], + LocationName.yoshis_island_3_coin_block_2: [0x27, 368], + LocationName.yoshis_island_3_powerup_block_1: [0x27, 369], + LocationName.yoshis_island_3_yellow_block_52: [0x27, 370], + LocationName.yoshis_island_3_yellow_block_53: [0x27, 371], + LocationName.yoshis_island_3_yellow_block_54: [0x27, 372], + LocationName.yoshis_island_3_yellow_block_55: [0x27, 373], + LocationName.yoshis_island_3_yellow_block_56: [0x27, 374], + LocationName.yoshis_island_3_yellow_block_57: [0x27, 375], + LocationName.yoshis_island_3_yellow_block_58: [0x27, 376], + LocationName.yoshis_island_3_yellow_block_59: [0x27, 377], + LocationName.yoshis_island_3_yellow_block_60: [0x27, 378], + LocationName.yoshis_island_3_yellow_block_61: [0x27, 379], + LocationName.yoshis_island_3_yellow_block_62: [0x27, 380], + LocationName.yoshis_island_3_yellow_block_63: [0x27, 381], + LocationName.yoshis_island_3_yellow_block_64: [0x27, 382], + LocationName.yoshis_island_3_yellow_block_65: [0x27, 383], + LocationName.yoshis_island_3_yellow_block_66: [0x27, 384], + LocationName.yoshis_island_3_yellow_block_67: [0x27, 385], + LocationName.yoshis_island_3_yellow_block_68: [0x27, 386], + LocationName.yoshis_island_3_yellow_block_69: [0x27, 387], + LocationName.yoshis_island_3_yellow_block_70: [0x27, 388], + LocationName.yoshis_island_3_yellow_block_71: [0x27, 389], + LocationName.yoshis_island_3_yellow_block_72: [0x27, 390], + LocationName.yoshis_island_3_yellow_block_73: [0x27, 391], + LocationName.yoshis_island_3_yellow_block_74: [0x27, 392], + LocationName.yoshis_island_3_yellow_block_75: [0x27, 393], + LocationName.yoshis_island_3_yellow_block_76: [0x27, 394], + LocationName.yoshis_island_3_yellow_block_77: [0x27, 395], + LocationName.yoshis_island_3_yellow_block_78: [0x27, 396], + LocationName.yoshis_island_3_yellow_block_79: [0x27, 397], + LocationName.yoshis_island_3_yellow_block_80: [0x27, 398], + LocationName.yoshis_island_3_yellow_block_81: [0x27, 399], + LocationName.yoshis_island_3_yellow_block_82: [0x27, 400], + LocationName.yoshis_island_3_yellow_block_83: [0x27, 401], + LocationName.yoshis_island_3_yellow_block_84: [0x27, 402], + LocationName.yoshis_island_3_yellow_block_85: [0x27, 403], + LocationName.yoshis_island_3_yellow_block_86: [0x27, 404], + LocationName.yoshis_island_3_bonus_block_1: [0x27, 405], + LocationName.yoshis_island_1_flying_block_1: [0x29, 406], + LocationName.yoshis_island_1_yellow_block_1: [0x29, 407], + LocationName.yoshis_island_1_life_block_1: [0x29, 408], + LocationName.yoshis_island_1_powerup_block_1: [0x29, 409], + LocationName.yoshis_island_2_flying_block_1: [0x2A, 410], + LocationName.yoshis_island_2_flying_block_2: [0x2A, 411], + LocationName.yoshis_island_2_flying_block_3: [0x2A, 412], + LocationName.yoshis_island_2_flying_block_4: [0x2A, 413], + LocationName.yoshis_island_2_flying_block_5: [0x2A, 414], + LocationName.yoshis_island_2_flying_block_6: [0x2A, 415], + LocationName.yoshis_island_2_coin_block_1: [0x2A, 416], + LocationName.yoshis_island_2_yellow_block_1: [0x2A, 417], + LocationName.yoshis_island_2_coin_block_2: [0x2A, 418], + LocationName.yoshis_island_2_coin_block_3: [0x2A, 419], + LocationName.yoshis_island_2_yoshi_block_1: [0x2A, 420], + LocationName.yoshis_island_2_coin_block_4: [0x2A, 421], + LocationName.yoshis_island_2_yoshi_block_2: [0x2A, 422], + LocationName.yoshis_island_2_coin_block_5: [0x2A, 423], + LocationName.yoshis_island_2_vine_block_1: [0x2A, 424], + LocationName.yoshis_island_2_yellow_block_2: [0x2A, 425], + LocationName.vanilla_ghost_house_powerup_block_1: [0x2B, 426], + LocationName.vanilla_ghost_house_vine_block_1: [0x2B, 427], + LocationName.vanilla_ghost_house_powerup_block_2: [0x2B, 428], + LocationName.vanilla_ghost_house_multi_coin_block_1: [0x2B, 429], + LocationName.vanilla_ghost_house_blue_pow_block_1: [0x2B, 430], + LocationName.vanilla_secret_1_coin_block_1: [0x2D, 431], + LocationName.vanilla_secret_1_powerup_block_1: [0x2D, 432], + LocationName.vanilla_secret_1_multi_coin_block_1: [0x2D, 433], + LocationName.vanilla_secret_1_vine_block_1: [0x2D, 434], + LocationName.vanilla_secret_1_vine_block_2: [0x2D, 435], + LocationName.vanilla_secret_1_coin_block_2: [0x2D, 436], + LocationName.vanilla_secret_1_coin_block_3: [0x2D, 437], + LocationName.vanilla_secret_1_powerup_block_2: [0x2D, 438], + LocationName.vanilla_dome_3_coin_block_1: [0x2E, 439], + LocationName.vanilla_dome_3_flying_block_1: [0x2E, 440], + LocationName.vanilla_dome_3_flying_block_2: [0x2E, 441], + LocationName.vanilla_dome_3_powerup_block_1: [0x2E, 442], + LocationName.vanilla_dome_3_flying_block_3: [0x2E, 443], + LocationName.vanilla_dome_3_invis_coin_block_1: [0x2E, 444], + LocationName.vanilla_dome_3_powerup_block_2: [0x2E, 445], + LocationName.vanilla_dome_3_multi_coin_block_1: [0x2E, 446], + LocationName.vanilla_dome_3_powerup_block_3: [0x2E, 447], + LocationName.vanilla_dome_3_yoshi_block_1: [0x2E, 448], + LocationName.vanilla_dome_3_powerup_block_4: [0x2E, 449], + LocationName.vanilla_dome_3_pswitch_coin_block_1: [0x2E, 450], + LocationName.vanilla_dome_3_pswitch_coin_block_2: [0x2E, 451], + LocationName.vanilla_dome_3_pswitch_coin_block_3: [0x2E, 452], + LocationName.vanilla_dome_3_pswitch_coin_block_4: [0x2E, 453], + LocationName.vanilla_dome_3_pswitch_coin_block_5: [0x2E, 454], + LocationName.vanilla_dome_3_pswitch_coin_block_6: [0x2E, 455], + LocationName.donut_secret_2_directional_coin_block_1: [0x2F, 456], + LocationName.donut_secret_2_vine_block_1: [0x2F, 457], + LocationName.donut_secret_2_star_block_1: [0x2F, 458], + LocationName.donut_secret_2_powerup_block_1: [0x2F, 459], + LocationName.donut_secret_2_star_block_2: [0x2F, 460], + LocationName.valley_of_bowser_4_yellow_block_1: [0x33, 461], + LocationName.valley_of_bowser_4_powerup_block_1: [0x33, 462], + LocationName.valley_of_bowser_4_vine_block_1: [0x33, 463], + LocationName.valley_of_bowser_4_yoshi_block_1: [0x33, 464], + LocationName.valley_of_bowser_4_life_block_1: [0x33, 465], + LocationName.valley_of_bowser_4_powerup_block_2: [0x33, 466], + LocationName.valley_castle_yellow_block_1: [0x34, 467], + LocationName.valley_castle_yellow_block_2: [0x34, 468], + LocationName.valley_castle_green_block_1: [0x34, 469], + LocationName.valley_fortress_green_block_1: [0x35, 470], + LocationName.valley_fortress_yellow_block_1: [0x35, 471], + LocationName.valley_of_bowser_3_powerup_block_1: [0x37, 472], + LocationName.valley_of_bowser_3_powerup_block_2: [0x37, 473], + LocationName.valley_ghost_house_pswitch_coin_block_1: [0x38, 474], + LocationName.valley_ghost_house_multi_coin_block_1: [0x38, 475], + LocationName.valley_ghost_house_powerup_block_1: [0x38, 476], + LocationName.valley_ghost_house_directional_coin_block_1: [0x38, 477], + LocationName.valley_of_bowser_2_powerup_block_1: [0x39, 478], + LocationName.valley_of_bowser_2_yellow_block_1: [0x39, 479], + LocationName.valley_of_bowser_2_powerup_block_2: [0x39, 480], + LocationName.valley_of_bowser_2_wings_block_1: [0x39, 481], + LocationName.valley_of_bowser_1_green_block_1: [0x3A, 482], + LocationName.valley_of_bowser_1_invis_coin_block_1: [0x3A, 483], + LocationName.valley_of_bowser_1_invis_coin_block_2: [0x3A, 484], + LocationName.valley_of_bowser_1_invis_coin_block_3: [0x3A, 485], + LocationName.valley_of_bowser_1_yellow_block_1: [0x3A, 486], + LocationName.valley_of_bowser_1_yellow_block_2: [0x3A, 487], + LocationName.valley_of_bowser_1_yellow_block_3: [0x3A, 488], + LocationName.valley_of_bowser_1_yellow_block_4: [0x3A, 489], + LocationName.valley_of_bowser_1_vine_block_1: [0x3A, 490], + LocationName.chocolate_secret_powerup_block_1: [0x3B, 491], + LocationName.chocolate_secret_powerup_block_2: [0x3B, 492], + LocationName.vanilla_dome_2_coin_block_1: [0x3C, 493], + LocationName.vanilla_dome_2_powerup_block_1: [0x3C, 494], + LocationName.vanilla_dome_2_coin_block_2: [0x3C, 495], + LocationName.vanilla_dome_2_coin_block_3: [0x3C, 496], + LocationName.vanilla_dome_2_vine_block_1: [0x3C, 497], + LocationName.vanilla_dome_2_invis_life_block_1: [0x3C, 498], + LocationName.vanilla_dome_2_coin_block_4: [0x3C, 499], + LocationName.vanilla_dome_2_coin_block_5: [0x3C, 500], + LocationName.vanilla_dome_2_powerup_block_2: [0x3C, 501], + LocationName.vanilla_dome_2_powerup_block_3: [0x3C, 502], + LocationName.vanilla_dome_2_powerup_block_4: [0x3C, 503], + LocationName.vanilla_dome_2_multi_coin_block_1: [0x3C, 504], + LocationName.vanilla_dome_2_multi_coin_block_2: [0x3C, 505], + LocationName.vanilla_dome_4_powerup_block_1: [0x3D, 506], + LocationName.vanilla_dome_4_powerup_block_2: [0x3D, 507], + LocationName.vanilla_dome_4_coin_block_1: [0x3D, 508], + LocationName.vanilla_dome_4_coin_block_2: [0x3D, 509], + LocationName.vanilla_dome_4_coin_block_3: [0x3D, 510], + LocationName.vanilla_dome_4_life_block_1: [0x3D, 511], + LocationName.vanilla_dome_4_coin_block_4: [0x3D, 512], + LocationName.vanilla_dome_4_coin_block_5: [0x3D, 513], + LocationName.vanilla_dome_4_coin_block_6: [0x3D, 514], + LocationName.vanilla_dome_4_coin_block_7: [0x3D, 515], + LocationName.vanilla_dome_4_coin_block_8: [0x3D, 516], + LocationName.vanilla_dome_1_flying_block_1: [0x3E, 517], + LocationName.vanilla_dome_1_powerup_block_1: [0x3E, 518], + LocationName.vanilla_dome_1_powerup_block_2: [0x3E, 519], + LocationName.vanilla_dome_1_coin_block_1: [0x3E, 520], + LocationName.vanilla_dome_1_life_block_1: [0x3E, 521], + LocationName.vanilla_dome_1_powerup_block_3: [0x3E, 522], + LocationName.vanilla_dome_1_vine_block_1: [0x3E, 523], + LocationName.vanilla_dome_1_star_block_1: [0x3E, 524], + LocationName.vanilla_dome_1_powerup_block_4: [0x3E, 525], + LocationName.vanilla_dome_1_coin_block_2: [0x3E, 526], + LocationName.vanilla_dome_castle_life_block_1: [0x40, 527], + LocationName.vanilla_dome_castle_life_block_2: [0x40, 528], + LocationName.vanilla_dome_castle_powerup_block_1: [0x40, 529], + LocationName.vanilla_dome_castle_life_block_3: [0x40, 530], + LocationName.vanilla_dome_castle_green_block_1: [0x40, 531], + LocationName.forest_ghost_house_coin_block_1: [0x41, 532], + LocationName.forest_ghost_house_powerup_block_1: [0x41, 533], + LocationName.forest_ghost_house_flying_block_1: [0x41, 534], + LocationName.forest_ghost_house_powerup_block_2: [0x41, 535], + LocationName.forest_ghost_house_life_block_1: [0x41, 536], + LocationName.forest_of_illusion_1_powerup_block_1: [0x42, 537], + LocationName.forest_of_illusion_1_yoshi_block_1: [0x42, 538], + LocationName.forest_of_illusion_1_powerup_block_2: [0x42, 539], + LocationName.forest_of_illusion_1_key_block_1: [0x42, 540], + LocationName.forest_of_illusion_1_life_block_1: [0x42, 541], + LocationName.forest_of_illusion_4_multi_coin_block_1: [0x43, 542], + LocationName.forest_of_illusion_4_coin_block_1: [0x43, 543], + LocationName.forest_of_illusion_4_coin_block_2: [0x43, 544], + LocationName.forest_of_illusion_4_coin_block_3: [0x43, 545], + LocationName.forest_of_illusion_4_coin_block_4: [0x43, 546], + LocationName.forest_of_illusion_4_powerup_block_1: [0x43, 547], + LocationName.forest_of_illusion_4_coin_block_5: [0x43, 548], + LocationName.forest_of_illusion_4_coin_block_6: [0x43, 549], + LocationName.forest_of_illusion_4_coin_block_7: [0x43, 550], + LocationName.forest_of_illusion_4_powerup_block_2: [0x43, 551], + LocationName.forest_of_illusion_4_coin_block_8: [0x43, 552], + LocationName.forest_of_illusion_4_coin_block_9: [0x43, 553], + LocationName.forest_of_illusion_4_coin_block_10: [0x43, 554], + LocationName.forest_of_illusion_2_green_block_1: [0x44, 555], + LocationName.forest_of_illusion_2_powerup_block_1: [0x44, 556], + LocationName.forest_of_illusion_2_invis_coin_block_1: [0x44, 557], + LocationName.forest_of_illusion_2_invis_coin_block_2: [0x44, 558], + LocationName.forest_of_illusion_2_invis_life_block_1: [0x44, 559], + LocationName.forest_of_illusion_2_invis_coin_block_3: [0x44, 560], + LocationName.forest_of_illusion_2_yellow_block_1: [0x44, 561], + LocationName.forest_secret_powerup_block_1: [0x46, 562], + LocationName.forest_secret_powerup_block_2: [0x46, 563], + LocationName.forest_secret_life_block_1: [0x46, 564], + LocationName.forest_of_illusion_3_yoshi_block_1: [0x47, 565], + LocationName.forest_of_illusion_3_coin_block_1: [0x47, 566], + LocationName.forest_of_illusion_3_multi_coin_block_1: [0x47, 567], + LocationName.forest_of_illusion_3_coin_block_2: [0x47, 568], + LocationName.forest_of_illusion_3_multi_coin_block_2: [0x47, 569], + LocationName.forest_of_illusion_3_coin_block_3: [0x47, 570], + LocationName.forest_of_illusion_3_coin_block_4: [0x47, 571], + LocationName.forest_of_illusion_3_coin_block_5: [0x47, 572], + LocationName.forest_of_illusion_3_coin_block_6: [0x47, 573], + LocationName.forest_of_illusion_3_coin_block_7: [0x47, 574], + LocationName.forest_of_illusion_3_coin_block_8: [0x47, 575], + LocationName.forest_of_illusion_3_coin_block_9: [0x47, 576], + LocationName.forest_of_illusion_3_coin_block_10: [0x47, 577], + LocationName.forest_of_illusion_3_coin_block_11: [0x47, 578], + LocationName.forest_of_illusion_3_coin_block_12: [0x47, 579], + LocationName.forest_of_illusion_3_coin_block_13: [0x47, 580], + LocationName.forest_of_illusion_3_coin_block_14: [0x47, 581], + LocationName.forest_of_illusion_3_coin_block_15: [0x47, 582], + LocationName.forest_of_illusion_3_coin_block_16: [0x47, 583], + LocationName.forest_of_illusion_3_coin_block_17: [0x47, 584], + LocationName.forest_of_illusion_3_coin_block_18: [0x47, 585], + LocationName.forest_of_illusion_3_coin_block_19: [0x47, 586], + LocationName.forest_of_illusion_3_coin_block_20: [0x47, 587], + LocationName.forest_of_illusion_3_coin_block_21: [0x47, 588], + LocationName.forest_of_illusion_3_coin_block_22: [0x47, 589], + LocationName.forest_of_illusion_3_coin_block_23: [0x47, 590], + LocationName.forest_of_illusion_3_coin_block_24: [0x47, 591], + LocationName.special_zone_8_yoshi_block_1: [0x49, 592], + LocationName.special_zone_8_coin_block_1: [0x49, 593], + LocationName.special_zone_8_coin_block_2: [0x49, 594], + LocationName.special_zone_8_coin_block_3: [0x49, 595], + LocationName.special_zone_8_coin_block_4: [0x49, 596], + LocationName.special_zone_8_coin_block_5: [0x49, 597], + LocationName.special_zone_8_blue_pow_block_1: [0x49, 598], + LocationName.special_zone_8_powerup_block_1: [0x49, 599], + LocationName.special_zone_8_star_block_1: [0x49, 600], + LocationName.special_zone_8_coin_block_6: [0x49, 601], + LocationName.special_zone_8_coin_block_7: [0x49, 602], + LocationName.special_zone_8_coin_block_8: [0x49, 603], + LocationName.special_zone_8_coin_block_9: [0x49, 604], + LocationName.special_zone_8_coin_block_10: [0x49, 605], + LocationName.special_zone_8_coin_block_11: [0x49, 606], + LocationName.special_zone_8_coin_block_12: [0x49, 607], + LocationName.special_zone_8_coin_block_13: [0x49, 608], + LocationName.special_zone_8_coin_block_14: [0x49, 609], + LocationName.special_zone_8_coin_block_15: [0x49, 610], + LocationName.special_zone_8_coin_block_16: [0x49, 611], + LocationName.special_zone_8_coin_block_17: [0x49, 612], + LocationName.special_zone_8_coin_block_18: [0x49, 613], + LocationName.special_zone_8_multi_coin_block_1: [0x49, 614], + LocationName.special_zone_8_coin_block_19: [0x49, 615], + LocationName.special_zone_8_coin_block_20: [0x49, 616], + LocationName.special_zone_8_coin_block_21: [0x49, 617], + LocationName.special_zone_8_coin_block_22: [0x49, 618], + LocationName.special_zone_8_coin_block_23: [0x49, 619], + LocationName.special_zone_8_powerup_block_2: [0x49, 620], + LocationName.special_zone_8_flying_block_1: [0x49, 621], + LocationName.special_zone_7_powerup_block_1: [0x4A, 622], + LocationName.special_zone_7_yoshi_block_1: [0x4A, 623], + LocationName.special_zone_7_coin_block_1: [0x4A, 624], + LocationName.special_zone_7_powerup_block_2: [0x4A, 625], + LocationName.special_zone_7_coin_block_2: [0x4A, 626], + LocationName.special_zone_6_powerup_block_1: [0x4B, 627], + LocationName.special_zone_6_coin_block_1: [0x4B, 628], + LocationName.special_zone_6_coin_block_2: [0x4B, 629], + LocationName.special_zone_6_yoshi_block_1: [0x4B, 630], + LocationName.special_zone_6_life_block_1: [0x4B, 631], + LocationName.special_zone_6_multi_coin_block_1: [0x4B, 632], + LocationName.special_zone_6_coin_block_3: [0x4B, 633], + LocationName.special_zone_6_coin_block_4: [0x4B, 634], + LocationName.special_zone_6_coin_block_5: [0x4B, 635], + LocationName.special_zone_6_coin_block_6: [0x4B, 636], + LocationName.special_zone_6_coin_block_7: [0x4B, 637], + LocationName.special_zone_6_coin_block_8: [0x4B, 638], + LocationName.special_zone_6_coin_block_9: [0x4B, 639], + LocationName.special_zone_6_coin_block_10: [0x4B, 640], + LocationName.special_zone_6_coin_block_11: [0x4B, 641], + LocationName.special_zone_6_coin_block_12: [0x4B, 642], + LocationName.special_zone_6_coin_block_13: [0x4B, 643], + LocationName.special_zone_6_coin_block_14: [0x4B, 644], + LocationName.special_zone_6_coin_block_15: [0x4B, 645], + LocationName.special_zone_6_coin_block_16: [0x4B, 646], + LocationName.special_zone_6_coin_block_17: [0x4B, 647], + LocationName.special_zone_6_coin_block_18: [0x4B, 648], + LocationName.special_zone_6_coin_block_19: [0x4B, 649], + LocationName.special_zone_6_coin_block_20: [0x4B, 650], + LocationName.special_zone_6_coin_block_21: [0x4B, 651], + LocationName.special_zone_6_coin_block_22: [0x4B, 652], + LocationName.special_zone_6_coin_block_23: [0x4B, 653], + LocationName.special_zone_6_coin_block_24: [0x4B, 654], + LocationName.special_zone_6_coin_block_25: [0x4B, 655], + LocationName.special_zone_6_coin_block_26: [0x4B, 656], + LocationName.special_zone_6_coin_block_27: [0x4B, 657], + LocationName.special_zone_6_coin_block_28: [0x4B, 658], + LocationName.special_zone_6_powerup_block_2: [0x4B, 659], + LocationName.special_zone_6_coin_block_29: [0x4B, 660], + LocationName.special_zone_6_coin_block_30: [0x4B, 661], + LocationName.special_zone_6_coin_block_31: [0x4B, 662], + LocationName.special_zone_6_coin_block_32: [0x4B, 663], + LocationName.special_zone_6_coin_block_33: [0x4B, 664], + LocationName.special_zone_5_yoshi_block_1: [0x4C, 665], + LocationName.special_zone_1_vine_block_1: [0x4E, 666], + LocationName.special_zone_1_vine_block_2: [0x4E, 667], + LocationName.special_zone_1_vine_block_3: [0x4E, 668], + LocationName.special_zone_1_vine_block_4: [0x4E, 669], + LocationName.special_zone_1_life_block_1: [0x4E, 670], + LocationName.special_zone_1_vine_block_5: [0x4E, 671], + LocationName.special_zone_1_blue_pow_block_1: [0x4E, 672], + LocationName.special_zone_1_vine_block_6: [0x4E, 673], + LocationName.special_zone_1_powerup_block_1: [0x4E, 674], + LocationName.special_zone_1_pswitch_coin_block_1: [0x4E, 675], + LocationName.special_zone_1_pswitch_coin_block_2: [0x4E, 676], + LocationName.special_zone_1_pswitch_coin_block_3: [0x4E, 677], + LocationName.special_zone_1_pswitch_coin_block_4: [0x4E, 678], + LocationName.special_zone_1_pswitch_coin_block_5: [0x4E, 679], + LocationName.special_zone_1_pswitch_coin_block_6: [0x4E, 680], + LocationName.special_zone_1_pswitch_coin_block_7: [0x4E, 681], + LocationName.special_zone_1_pswitch_coin_block_8: [0x4E, 682], + LocationName.special_zone_1_pswitch_coin_block_9: [0x4E, 683], + LocationName.special_zone_1_pswitch_coin_block_10: [0x4E, 684], + LocationName.special_zone_1_pswitch_coin_block_11: [0x4E, 685], + LocationName.special_zone_1_pswitch_coin_block_12: [0x4E, 686], + LocationName.special_zone_1_pswitch_coin_block_13: [0x4E, 687], + LocationName.special_zone_2_powerup_block_1: [0x4F, 688], + LocationName.special_zone_2_coin_block_1: [0x4F, 689], + LocationName.special_zone_2_coin_block_2: [0x4F, 690], + LocationName.special_zone_2_powerup_block_2: [0x4F, 691], + LocationName.special_zone_2_coin_block_3: [0x4F, 692], + LocationName.special_zone_2_coin_block_4: [0x4F, 693], + LocationName.special_zone_2_powerup_block_3: [0x4F, 694], + LocationName.special_zone_2_multi_coin_block_1: [0x4F, 695], + LocationName.special_zone_2_coin_block_5: [0x4F, 696], + LocationName.special_zone_2_coin_block_6: [0x4F, 697], + LocationName.special_zone_3_powerup_block_1: [0x50, 698], + LocationName.special_zone_3_yoshi_block_1: [0x50, 699], + LocationName.special_zone_3_wings_block_1: [0x50, 700], + LocationName.special_zone_4_powerup_block_1: [0x51, 701], + LocationName.special_zone_4_star_block_1: [0x51, 702], + LocationName.star_road_2_star_block_1: [0x54, 703], + LocationName.star_road_3_key_block_1: [0x56, 704], + LocationName.star_road_4_powerup_block_1: [0x59, 705], + LocationName.star_road_4_green_block_1: [0x59, 706], + LocationName.star_road_4_green_block_2: [0x59, 707], + LocationName.star_road_4_green_block_3: [0x59, 708], + LocationName.star_road_4_green_block_4: [0x59, 709], + LocationName.star_road_4_green_block_5: [0x59, 710], + LocationName.star_road_4_green_block_6: [0x59, 711], + LocationName.star_road_4_green_block_7: [0x59, 712], + LocationName.star_road_4_key_block_1: [0x59, 713], + LocationName.star_road_5_directional_coin_block_1: [0x5A, 714], + LocationName.star_road_5_life_block_1: [0x5A, 715], + LocationName.star_road_5_vine_block_1: [0x5A, 716], + LocationName.star_road_5_yellow_block_1: [0x5A, 717], + LocationName.star_road_5_yellow_block_2: [0x5A, 718], + LocationName.star_road_5_yellow_block_3: [0x5A, 719], + LocationName.star_road_5_yellow_block_4: [0x5A, 720], + LocationName.star_road_5_yellow_block_5: [0x5A, 721], + LocationName.star_road_5_yellow_block_6: [0x5A, 722], + LocationName.star_road_5_yellow_block_7: [0x5A, 723], + LocationName.star_road_5_yellow_block_8: [0x5A, 724], + LocationName.star_road_5_yellow_block_9: [0x5A, 725], + LocationName.star_road_5_yellow_block_10: [0x5A, 726], + LocationName.star_road_5_yellow_block_11: [0x5A, 727], + LocationName.star_road_5_yellow_block_12: [0x5A, 728], + LocationName.star_road_5_yellow_block_13: [0x5A, 729], + LocationName.star_road_5_yellow_block_14: [0x5A, 730], + LocationName.star_road_5_yellow_block_15: [0x5A, 731], + LocationName.star_road_5_yellow_block_16: [0x5A, 732], + LocationName.star_road_5_yellow_block_17: [0x5A, 733], + LocationName.star_road_5_yellow_block_18: [0x5A, 734], + LocationName.star_road_5_yellow_block_19: [0x5A, 735], + LocationName.star_road_5_yellow_block_20: [0x5A, 736], + LocationName.star_road_5_green_block_1: [0x5A, 737], + LocationName.star_road_5_green_block_2: [0x5A, 738], + LocationName.star_road_5_green_block_3: [0x5A, 739], + LocationName.star_road_5_green_block_4: [0x5A, 740], + LocationName.star_road_5_green_block_5: [0x5A, 741], + LocationName.star_road_5_green_block_6: [0x5A, 742], + LocationName.star_road_5_green_block_7: [0x5A, 743], + LocationName.star_road_5_green_block_8: [0x5A, 744], + LocationName.star_road_5_green_block_9: [0x5A, 745], + LocationName.star_road_5_green_block_10: [0x5A, 746], + LocationName.star_road_5_green_block_11: [0x5A, 747], + LocationName.star_road_5_green_block_12: [0x5A, 748], + LocationName.star_road_5_green_block_13: [0x5A, 749], + LocationName.star_road_5_green_block_14: [0x5A, 750], + LocationName.star_road_5_green_block_15: [0x5A, 751], + LocationName.star_road_5_green_block_16: [0x5A, 752], + LocationName.star_road_5_green_block_17: [0x5A, 753], + LocationName.star_road_5_green_block_18: [0x5A, 754], + LocationName.star_road_5_green_block_19: [0x5A, 755], + LocationName.star_road_5_green_block_20: [0x5A, 756] } def generate_level_list(world, player): @@ -528,39 +1215,77 @@ def generate_level_list(world, player): switch_palace_levels_copy = switch_palace_levels.copy() world.random.shuffle(switch_palace_levels_copy) - # Yoshi's Island - shuffled_level_list.append(0x03) - shuffled_level_list.append(easy_single_levels_copy.pop(0)) - shuffled_level_list.append(0x14) - shuffled_level_list.append(easy_single_levels_copy.pop(0)) - shuffled_level_list.append(easy_single_levels_copy.pop(0)) - shuffled_level_list.append(easy_single_levels_copy.pop(0)) - shuffled_level_list.append(easy_castle_fortress_levels_copy.pop(0)) - - # Donut Plains - shuffled_level_list.append(easy_double_levels_copy.pop(0)) - shuffled_level_list.append(easy_double_levels_copy.pop(0)) - shuffled_level_list.append(easy_double_levels_copy.pop(0)) - shuffled_level_list.append(0x08) - shuffled_level_list.append(easy_double_levels_copy.pop(0)) - shuffled_level_list.append(easy_double_levels_copy.pop(0)) - shuffled_level_list.append(easy_single_levels_copy.pop(0)) - shuffled_level_list.append(easy_single_levels_copy.pop(0)) - shuffled_level_list.append(easy_single_levels_copy.pop(0)) - shuffled_level_list.append(easy_castle_fortress_levels_copy.pop(0)) - shuffled_level_list.append(0x28) - shuffled_level_list.append(0x16) - - single_levels_copy = (easy_single_levels_copy.copy() + hard_single_levels_copy.copy()) - if not world.exclude_special_zone[player]: - single_levels_copy.extend(special_zone_levels_copy) - world.random.shuffle(single_levels_copy) + if world.easy_early_levels[player]: + + # Yoshi's Island + shuffled_level_list.append(0x03) + shuffled_level_list.append(easy_single_levels_copy.pop(0)) + shuffled_level_list.append(0x14) + shuffled_level_list.append(easy_single_levels_copy.pop(0)) + shuffled_level_list.append(easy_single_levels_copy.pop(0)) + shuffled_level_list.append(easy_single_levels_copy.pop(0)) + shuffled_level_list.append(easy_castle_fortress_levels_copy.pop(0)) + + # Donut Plains + shuffled_level_list.append(easy_double_levels_copy.pop(0)) + shuffled_level_list.append(easy_double_levels_copy.pop(0)) + shuffled_level_list.append(easy_double_levels_copy.pop(0)) + shuffled_level_list.append(0x08) + shuffled_level_list.append(easy_double_levels_copy.pop(0)) + shuffled_level_list.append(easy_double_levels_copy.pop(0)) + shuffled_level_list.append(easy_single_levels_copy.pop(0)) + shuffled_level_list.append(easy_single_levels_copy.pop(0)) + shuffled_level_list.append(easy_single_levels_copy.pop(0)) + shuffled_level_list.append(easy_castle_fortress_levels_copy.pop(0)) + shuffled_level_list.append(0x28) + shuffled_level_list.append(0x16) + + single_levels_copy = (easy_single_levels_copy.copy() + hard_single_levels_copy.copy()) + if not world.exclude_special_zone[player]: + single_levels_copy.extend(special_zone_levels_copy) + world.random.shuffle(single_levels_copy) + + castle_fortress_levels_copy = (easy_castle_fortress_levels_copy.copy() + hard_castle_fortress_levels_copy.copy()) + world.random.shuffle(castle_fortress_levels_copy) + + double_levels_copy = (easy_double_levels_copy.copy() + hard_double_levels_copy.copy()) + world.random.shuffle(double_levels_copy) + + else: + + single_levels_copy = (easy_single_levels_copy.copy() + hard_single_levels_copy.copy()) + if not world.exclude_special_zone[player]: + single_levels_copy.extend(special_zone_levels_copy) + world.random.shuffle(single_levels_copy) + + castle_fortress_levels_copy = (easy_castle_fortress_levels_copy.copy() + hard_castle_fortress_levels_copy.copy()) + world.random.shuffle(castle_fortress_levels_copy) - castle_fortress_levels_copy = (easy_castle_fortress_levels_copy.copy() + hard_castle_fortress_levels_copy.copy()) - world.random.shuffle(castle_fortress_levels_copy) + double_levels_copy = (easy_double_levels_copy.copy() + hard_double_levels_copy.copy()) + world.random.shuffle(double_levels_copy) - double_levels_copy = (easy_double_levels_copy.copy() + hard_double_levels_copy.copy()) - world.random.shuffle(double_levels_copy) + # Yoshi's Island + shuffled_level_list.append(0x03) + shuffled_level_list.append(single_levels_copy.pop(0)) + shuffled_level_list.append(0x14) + shuffled_level_list.append(single_levels_copy.pop(0)) + shuffled_level_list.append(single_levels_copy.pop(0)) + shuffled_level_list.append(single_levels_copy.pop(0)) + shuffled_level_list.append(castle_fortress_levels_copy.pop(0)) + + # Donut Plains + shuffled_level_list.append(double_levels_copy.pop(0)) + shuffled_level_list.append(double_levels_copy.pop(0)) + shuffled_level_list.append(double_levels_copy.pop(0)) + shuffled_level_list.append(0x08) + shuffled_level_list.append(double_levels_copy.pop(0)) + shuffled_level_list.append(double_levels_copy.pop(0)) + shuffled_level_list.append(single_levels_copy.pop(0)) + shuffled_level_list.append(single_levels_copy.pop(0)) + shuffled_level_list.append(single_levels_copy.pop(0)) + shuffled_level_list.append(castle_fortress_levels_copy.pop(0)) + shuffled_level_list.append(0x28) + shuffled_level_list.append(0x16) # Vanilla Dome shuffled_level_list.append(double_levels_copy.pop(0)) diff --git a/worlds/smw/Locations.py b/worlds/smw/Locations.py index a8b7f7a4ec2c..22d4bf2fff2b 100644 --- a/worlds/smw/Locations.py +++ b/worlds/smw/Locations.py @@ -3,7 +3,6 @@ from BaseClasses import Location from .Names import LocationName - class SMWLocation(Location): game: str = "Super Mario World" @@ -197,6 +196,699 @@ def __init__(self, player: int, name: str = '', address: int = None, parent=None LocationName.special_zone_8_dragon: 0xBC0162, } +moon_location_table = { + LocationName.yoshis_island_1_moon: 0xBC0300, + LocationName.donut_plains_4_moon: 0xBC030B, + LocationName.vanilla_dome_3_moon: 0xBC0318, + LocationName.cheese_bridge_moon: 0xBC0325, + LocationName.forest_ghost_house_moon: 0xBC0332, + LocationName.chocolate_island_1_moon: 0xBC0338, + LocationName.valley_of_bowser_1_moon: 0xBC0345 +} + +checkpoints_location_table = { + LocationName.yoshis_island_4_checkpoint: 0xBC0403, + LocationName.donut_plains_1_checkpoint: 0xBC0406, + LocationName.donut_plains_4_checkpoint: 0xBC040B, + LocationName.donut_plains_castle_checkpoint: 0xBC0412, + LocationName.vanilla_dome_4_checkpoint: 0xBC0419, + LocationName.vanilla_ghost_house_checkpoint: 0xBC041E, + LocationName.vanilla_fortress_checkpoint: 0xBC0420, + LocationName.cookie_mountain_checkpoint: 0xBC0427, + LocationName.forest_of_illusion_3_checkpoint: 0xBC042E, + LocationName.chocolate_island_2_checkpoint: 0xBC0439, + LocationName.chocolate_castle_checkpoint: 0xBC0443, + LocationName.valley_of_bowser_2_checkpoint: 0xBC0446, + LocationName.valley_castle_checkpoint: 0xBC044F, + LocationName.special_zone_1_checkpoint: 0xBC045B +} +bonus_block_location_table = { + LocationName.yoshis_island_3_bonus_block: 0xBC0502, + LocationName.donut_plains_3_bonus_block: 0xBC050A, + LocationName.butter_bridge_1_bonus_block: 0xBC0523, + LocationName.chocolate_island_3_bonus_block: 0xBC053B +} + +blocksanity_location_table = { + LocationName.vanilla_secret_2_yoshi_block_1: 0xBC0600, + LocationName.vanilla_secret_2_green_block_1: 0xBC0601, + LocationName.vanilla_secret_2_powerup_block_1: 0xBC0602, + LocationName.vanilla_secret_2_powerup_block_2: 0xBC0603, + LocationName.vanilla_secret_2_multi_coin_block_1: 0xBC0604, + LocationName.vanilla_secret_2_gray_pow_block_1: 0xBC0605, + LocationName.vanilla_secret_2_coin_block_1: 0xBC0606, + LocationName.vanilla_secret_2_coin_block_2: 0xBC0607, + LocationName.vanilla_secret_2_coin_block_3: 0xBC0608, + LocationName.vanilla_secret_2_coin_block_4: 0xBC0609, + LocationName.vanilla_secret_2_coin_block_5: 0xBC060A, + LocationName.vanilla_secret_2_coin_block_6: 0xBC060B, + LocationName.vanilla_secret_3_powerup_block_1: 0xBC060C, + LocationName.vanilla_secret_3_powerup_block_2: 0xBC060D, + LocationName.donut_ghost_house_vine_block_1: 0xBC060E, + LocationName.donut_ghost_house_directional_coin_block_1: 0xBC060F, + LocationName.donut_ghost_house_life_block_1: 0xBC0610, + LocationName.donut_ghost_house_life_block_2: 0xBC0611, + LocationName.donut_ghost_house_life_block_3: 0xBC0612, + LocationName.donut_ghost_house_life_block_4: 0xBC0613, + LocationName.donut_plains_3_green_block_1: 0xBC0614, + LocationName.donut_plains_3_coin_block_1: 0xBC0615, + LocationName.donut_plains_3_coin_block_2: 0xBC0616, + LocationName.donut_plains_3_vine_block_1: 0xBC0617, + LocationName.donut_plains_3_powerup_block_1: 0xBC0618, + LocationName.donut_plains_3_bonus_block_1: 0xBC0619, + LocationName.donut_plains_4_coin_block_1: 0xBC061A, + LocationName.donut_plains_4_powerup_block_1: 0xBC061B, + LocationName.donut_plains_4_coin_block_2: 0xBC061C, + LocationName.donut_plains_4_yoshi_block_1: 0xBC061D, + LocationName.donut_plains_castle_yellow_block_1: 0xBC061E, + LocationName.donut_plains_castle_coin_block_1: 0xBC061F, + LocationName.donut_plains_castle_powerup_block_1: 0xBC0620, + LocationName.donut_plains_castle_coin_block_2: 0xBC0621, + LocationName.donut_plains_castle_vine_block_1: 0xBC0622, + LocationName.donut_plains_castle_invis_life_block_1: 0xBC0623, + LocationName.donut_plains_castle_coin_block_3: 0xBC0624, + LocationName.donut_plains_castle_coin_block_4: 0xBC0625, + LocationName.donut_plains_castle_coin_block_5: 0xBC0626, + LocationName.donut_plains_castle_green_block_1: 0xBC0627, + LocationName.donut_plains_2_coin_block_1: 0xBC0628, + LocationName.donut_plains_2_coin_block_2: 0xBC0629, + LocationName.donut_plains_2_coin_block_3: 0xBC062A, + LocationName.donut_plains_2_yellow_block_1: 0xBC062B, + LocationName.donut_plains_2_powerup_block_1: 0xBC062C, + LocationName.donut_plains_2_multi_coin_block_1: 0xBC062D, + LocationName.donut_plains_2_flying_block_1: 0xBC062E, + LocationName.donut_plains_2_green_block_1: 0xBC062F, + LocationName.donut_plains_2_yellow_block_2: 0xBC0630, + LocationName.donut_plains_2_vine_block_1: 0xBC0631, + LocationName.donut_secret_1_coin_block_1: 0xBC0632, + LocationName.donut_secret_1_coin_block_2: 0xBC0633, + LocationName.donut_secret_1_powerup_block_1: 0xBC0634, + LocationName.donut_secret_1_coin_block_3: 0xBC0635, + LocationName.donut_secret_1_powerup_block_2: 0xBC0636, + LocationName.donut_secret_1_powerup_block_3: 0xBC0637, + LocationName.donut_secret_1_life_block_1: 0xBC0638, + LocationName.donut_secret_1_powerup_block_4: 0xBC0639, + LocationName.donut_secret_1_powerup_block_5: 0xBC063A, + LocationName.donut_secret_1_key_block_1: 0xBC063B, + LocationName.vanilla_fortress_powerup_block_1: 0xBC063C, + LocationName.vanilla_fortress_powerup_block_2: 0xBC063D, + LocationName.vanilla_fortress_yellow_block_1: 0xBC063E, + LocationName.butter_bridge_1_powerup_block_1: 0xBC063F, + LocationName.butter_bridge_1_multi_coin_block_1: 0xBC0640, + LocationName.butter_bridge_1_multi_coin_block_2: 0xBC0641, + LocationName.butter_bridge_1_multi_coin_block_3: 0xBC0642, + LocationName.butter_bridge_1_life_block_1: 0xBC0643, + LocationName.butter_bridge_1_bonus_block_1: 0xBC0644, + LocationName.butter_bridge_2_powerup_block_1: 0xBC0645, + LocationName.butter_bridge_2_green_block_1: 0xBC0646, + LocationName.butter_bridge_2_yoshi_block_1: 0xBC0647, + LocationName.twin_bridges_castle_powerup_block_1: 0xBC0648, + LocationName.cheese_bridge_powerup_block_1: 0xBC0649, + LocationName.cheese_bridge_powerup_block_2: 0xBC064A, + LocationName.cheese_bridge_wings_block_1: 0xBC064B, + LocationName.cheese_bridge_powerup_block_3: 0xBC064C, + LocationName.cookie_mountain_coin_block_1: 0xBC064D, + LocationName.cookie_mountain_coin_block_2: 0xBC064E, + LocationName.cookie_mountain_coin_block_3: 0xBC064F, + LocationName.cookie_mountain_coin_block_4: 0xBC0650, + LocationName.cookie_mountain_coin_block_5: 0xBC0651, + LocationName.cookie_mountain_coin_block_6: 0xBC0652, + LocationName.cookie_mountain_coin_block_7: 0xBC0653, + LocationName.cookie_mountain_coin_block_8: 0xBC0654, + LocationName.cookie_mountain_coin_block_9: 0xBC0655, + LocationName.cookie_mountain_powerup_block_1: 0xBC0656, + LocationName.cookie_mountain_life_block_1: 0xBC0657, + LocationName.cookie_mountain_vine_block_1: 0xBC0658, + LocationName.cookie_mountain_yoshi_block_1: 0xBC0659, + LocationName.cookie_mountain_coin_block_10: 0xBC065A, + LocationName.cookie_mountain_coin_block_11: 0xBC065B, + LocationName.cookie_mountain_powerup_block_2: 0xBC065C, + LocationName.cookie_mountain_coin_block_12: 0xBC065D, + LocationName.cookie_mountain_coin_block_13: 0xBC065E, + LocationName.cookie_mountain_coin_block_14: 0xBC065F, + LocationName.cookie_mountain_coin_block_15: 0xBC0660, + LocationName.cookie_mountain_coin_block_16: 0xBC0661, + LocationName.cookie_mountain_coin_block_17: 0xBC0662, + LocationName.cookie_mountain_coin_block_18: 0xBC0663, + LocationName.cookie_mountain_coin_block_19: 0xBC0664, + LocationName.cookie_mountain_coin_block_20: 0xBC0665, + LocationName.cookie_mountain_coin_block_21: 0xBC0666, + LocationName.cookie_mountain_coin_block_22: 0xBC0667, + LocationName.cookie_mountain_coin_block_23: 0xBC0668, + LocationName.cookie_mountain_coin_block_24: 0xBC0669, + LocationName.cookie_mountain_coin_block_25: 0xBC066A, + LocationName.cookie_mountain_coin_block_26: 0xBC066B, + LocationName.cookie_mountain_coin_block_27: 0xBC066C, + LocationName.cookie_mountain_coin_block_28: 0xBC066D, + LocationName.cookie_mountain_coin_block_29: 0xBC066E, + LocationName.cookie_mountain_coin_block_30: 0xBC066F, + LocationName.soda_lake_powerup_block_1: 0xBC0670, + LocationName.donut_secret_house_powerup_block_1: 0xBC0671, + LocationName.donut_secret_house_multi_coin_block_1: 0xBC0672, + LocationName.donut_secret_house_life_block_1: 0xBC0673, + LocationName.donut_secret_house_vine_block_1: 0xBC0674, + LocationName.donut_secret_house_pswitch_coin_block_1: 0xBC0675, + LocationName.donut_secret_house_pswitch_coin_block_2: 0xBC0676, + LocationName.donut_secret_house_pswitch_coin_block_3: 0xBC0677, + LocationName.donut_plains_1_coin_block_1: 0xBC0678, + LocationName.donut_plains_1_coin_block_2: 0xBC0679, + LocationName.donut_plains_1_yoshi_block_1: 0xBC067A, + LocationName.donut_plains_1_vine_block_1: 0xBC067B, + LocationName.donut_plains_1_green_block_1: 0xBC067C, + LocationName.donut_plains_1_green_block_2: 0xBC067D, + LocationName.donut_plains_1_green_block_3: 0xBC067E, + LocationName.donut_plains_1_green_block_4: 0xBC067F, + LocationName.donut_plains_1_green_block_5: 0xBC0680, + LocationName.donut_plains_1_green_block_6: 0xBC0681, + LocationName.donut_plains_1_green_block_7: 0xBC0682, + LocationName.donut_plains_1_green_block_8: 0xBC0683, + LocationName.donut_plains_1_green_block_9: 0xBC0684, + LocationName.donut_plains_1_green_block_10: 0xBC0685, + LocationName.donut_plains_1_green_block_11: 0xBC0686, + LocationName.donut_plains_1_green_block_12: 0xBC0687, + LocationName.donut_plains_1_green_block_13: 0xBC0688, + LocationName.donut_plains_1_green_block_14: 0xBC0689, + LocationName.donut_plains_1_green_block_15: 0xBC068A, + LocationName.donut_plains_1_green_block_16: 0xBC068B, + LocationName.donut_plains_1_yellow_block_1: 0xBC068C, + LocationName.donut_plains_1_yellow_block_2: 0xBC068D, + LocationName.donut_plains_1_yellow_block_3: 0xBC068E, + LocationName.sunken_ghost_ship_powerup_block_1: 0xBC068F, + LocationName.sunken_ghost_ship_star_block_1: 0xBC0690, + LocationName.chocolate_castle_yellow_block_1: 0xBC0691, + LocationName.chocolate_castle_yellow_block_2: 0xBC0692, + LocationName.chocolate_castle_green_block_1: 0xBC0693, + LocationName.chocolate_fortress_powerup_block_1: 0xBC0694, + LocationName.chocolate_fortress_powerup_block_2: 0xBC0695, + LocationName.chocolate_fortress_coin_block_1: 0xBC0696, + LocationName.chocolate_fortress_coin_block_2: 0xBC0697, + LocationName.chocolate_fortress_green_block_1: 0xBC0698, + LocationName.chocolate_island_5_yoshi_block_1: 0xBC0699, + LocationName.chocolate_island_5_powerup_block_1: 0xBC069A, + LocationName.chocolate_island_5_life_block_1: 0xBC069B, + LocationName.chocolate_island_5_yellow_block_1: 0xBC069C, + LocationName.chocolate_island_4_yellow_block_1: 0xBC069D, + LocationName.chocolate_island_4_blue_pow_block_1: 0xBC069E, + LocationName.chocolate_island_4_powerup_block_1: 0xBC069F, + LocationName.forest_fortress_yellow_block_1: 0xBC06A0, + LocationName.forest_fortress_powerup_block_1: 0xBC06A1, + LocationName.forest_fortress_life_block_1: 0xBC06A2, + LocationName.forest_fortress_life_block_2: 0xBC06A3, + LocationName.forest_fortress_life_block_3: 0xBC06A4, + LocationName.forest_fortress_life_block_4: 0xBC06A5, + LocationName.forest_fortress_life_block_5: 0xBC06A6, + LocationName.forest_fortress_life_block_6: 0xBC06A7, + LocationName.forest_fortress_life_block_7: 0xBC06A8, + LocationName.forest_fortress_life_block_8: 0xBC06A9, + LocationName.forest_fortress_life_block_9: 0xBC06AA, + LocationName.forest_castle_green_block_1: 0xBC06AB, + LocationName.chocolate_ghost_house_powerup_block_1: 0xBC06AC, + LocationName.chocolate_ghost_house_powerup_block_2: 0xBC06AD, + LocationName.chocolate_ghost_house_life_block_1: 0xBC06AE, + LocationName.chocolate_island_1_flying_block_1: 0xBC06AF, + LocationName.chocolate_island_1_flying_block_2: 0xBC06B0, + LocationName.chocolate_island_1_yoshi_block_1: 0xBC06B1, + LocationName.chocolate_island_1_green_block_1: 0xBC06B2, + LocationName.chocolate_island_1_life_block_1: 0xBC06B3, + LocationName.chocolate_island_3_powerup_block_1: 0xBC06B4, + LocationName.chocolate_island_3_powerup_block_2: 0xBC06B5, + LocationName.chocolate_island_3_powerup_block_3: 0xBC06B6, + LocationName.chocolate_island_3_green_block_1: 0xBC06B7, + LocationName.chocolate_island_3_bonus_block_1: 0xBC06B8, + LocationName.chocolate_island_3_vine_block_1: 0xBC06B9, + LocationName.chocolate_island_3_life_block_1: 0xBC06BA, + LocationName.chocolate_island_3_life_block_2: 0xBC06BB, + LocationName.chocolate_island_3_life_block_3: 0xBC06BC, + LocationName.chocolate_island_2_multi_coin_block_1: 0xBC06BD, + LocationName.chocolate_island_2_invis_coin_block_1: 0xBC06BE, + LocationName.chocolate_island_2_yoshi_block_1: 0xBC06BF, + LocationName.chocolate_island_2_coin_block_1: 0xBC06C0, + LocationName.chocolate_island_2_coin_block_2: 0xBC06C1, + LocationName.chocolate_island_2_multi_coin_block_2: 0xBC06C2, + LocationName.chocolate_island_2_powerup_block_1: 0xBC06C3, + LocationName.chocolate_island_2_blue_pow_block_1: 0xBC06C4, + LocationName.chocolate_island_2_yellow_block_1: 0xBC06C5, + LocationName.chocolate_island_2_yellow_block_2: 0xBC06C6, + LocationName.chocolate_island_2_green_block_1: 0xBC06C7, + LocationName.chocolate_island_2_green_block_2: 0xBC06C8, + LocationName.chocolate_island_2_green_block_3: 0xBC06C9, + LocationName.chocolate_island_2_green_block_4: 0xBC06CA, + LocationName.chocolate_island_2_green_block_5: 0xBC06CB, + LocationName.chocolate_island_2_green_block_6: 0xBC06CC, + LocationName.yoshis_island_castle_coin_block_1: 0xBC06CD, + LocationName.yoshis_island_castle_coin_block_2: 0xBC06CE, + LocationName.yoshis_island_castle_powerup_block_1: 0xBC06CF, + LocationName.yoshis_island_castle_coin_block_3: 0xBC06D0, + LocationName.yoshis_island_castle_coin_block_4: 0xBC06D1, + LocationName.yoshis_island_castle_flying_block_1: 0xBC06D2, + LocationName.yoshis_island_4_yellow_block_1: 0xBC06D3, + LocationName.yoshis_island_4_powerup_block_1: 0xBC06D4, + LocationName.yoshis_island_4_multi_coin_block_1: 0xBC06D5, + LocationName.yoshis_island_4_star_block_1: 0xBC06D6, + LocationName.yoshis_island_3_yellow_block_1: 0xBC06D7, + LocationName.yoshis_island_3_yellow_block_2: 0xBC06D8, + LocationName.yoshis_island_3_yellow_block_3: 0xBC06D9, + LocationName.yoshis_island_3_yellow_block_4: 0xBC06DA, + LocationName.yoshis_island_3_yellow_block_5: 0xBC06DB, + LocationName.yoshis_island_3_yellow_block_6: 0xBC06DC, + LocationName.yoshis_island_3_yellow_block_7: 0xBC06DD, + LocationName.yoshis_island_3_yellow_block_8: 0xBC06DE, + LocationName.yoshis_island_3_yellow_block_9: 0xBC06DF, + LocationName.yoshis_island_3_yellow_block_10: 0xBC06E0, + LocationName.yoshis_island_3_yellow_block_11: 0xBC06E1, + LocationName.yoshis_island_3_yellow_block_12: 0xBC06E2, + LocationName.yoshis_island_3_yellow_block_13: 0xBC06E3, + LocationName.yoshis_island_3_yellow_block_14: 0xBC06E4, + LocationName.yoshis_island_3_yellow_block_15: 0xBC06E5, + LocationName.yoshis_island_3_yellow_block_16: 0xBC06E6, + LocationName.yoshis_island_3_yellow_block_17: 0xBC06E7, + LocationName.yoshis_island_3_yellow_block_18: 0xBC06E8, + LocationName.yoshis_island_3_yellow_block_19: 0xBC06E9, + LocationName.yoshis_island_3_yellow_block_20: 0xBC06EA, + LocationName.yoshis_island_3_yellow_block_21: 0xBC06EB, + LocationName.yoshis_island_3_yellow_block_22: 0xBC06EC, + LocationName.yoshis_island_3_yellow_block_23: 0xBC06ED, + LocationName.yoshis_island_3_yellow_block_24: 0xBC06EE, + LocationName.yoshis_island_3_yellow_block_25: 0xBC06EF, + LocationName.yoshis_island_3_yellow_block_26: 0xBC06F0, + LocationName.yoshis_island_3_yellow_block_27: 0xBC06F1, + LocationName.yoshis_island_3_yellow_block_28: 0xBC06F2, + LocationName.yoshis_island_3_yellow_block_29: 0xBC06F3, + LocationName.yoshis_island_3_coin_block_1: 0xBC06F4, + LocationName.yoshis_island_3_yoshi_block_1: 0xBC06F5, + LocationName.yoshis_island_3_yellow_block_30: 0xBC06F6, + LocationName.yoshis_island_3_yellow_block_31: 0xBC06F7, + LocationName.yoshis_island_3_yellow_block_32: 0xBC06F8, + LocationName.yoshis_island_3_yellow_block_33: 0xBC06F9, + LocationName.yoshis_island_3_yellow_block_34: 0xBC06FA, + LocationName.yoshis_island_3_yellow_block_35: 0xBC06FB, + LocationName.yoshis_island_3_yellow_block_36: 0xBC06FC, + LocationName.yoshis_island_3_yellow_block_37: 0xBC06FD, + LocationName.yoshis_island_3_yellow_block_38: 0xBC06FE, + LocationName.yoshis_island_3_yellow_block_39: 0xBC06FF, + LocationName.yoshis_island_3_yellow_block_40: 0xBC0700, + LocationName.yoshis_island_3_yellow_block_41: 0xBC0701, + LocationName.yoshis_island_3_yellow_block_42: 0xBC0702, + LocationName.yoshis_island_3_yellow_block_43: 0xBC0703, + LocationName.yoshis_island_3_yellow_block_44: 0xBC0704, + LocationName.yoshis_island_3_yellow_block_45: 0xBC0705, + LocationName.yoshis_island_3_yellow_block_46: 0xBC0706, + LocationName.yoshis_island_3_yellow_block_47: 0xBC0707, + LocationName.yoshis_island_3_yellow_block_48: 0xBC0708, + LocationName.yoshis_island_3_yellow_block_49: 0xBC0709, + LocationName.yoshis_island_3_yellow_block_50: 0xBC070A, + LocationName.yoshis_island_3_yellow_block_51: 0xBC070B, + LocationName.yoshis_island_3_coin_block_2: 0xBC070C, + LocationName.yoshis_island_3_powerup_block_1: 0xBC070D, + LocationName.yoshis_island_3_yellow_block_52: 0xBC070E, + LocationName.yoshis_island_3_yellow_block_53: 0xBC070F, + LocationName.yoshis_island_3_yellow_block_54: 0xBC0710, + LocationName.yoshis_island_3_yellow_block_55: 0xBC0711, + LocationName.yoshis_island_3_yellow_block_56: 0xBC0712, + LocationName.yoshis_island_3_yellow_block_57: 0xBC0713, + LocationName.yoshis_island_3_yellow_block_58: 0xBC0714, + LocationName.yoshis_island_3_yellow_block_59: 0xBC0715, + LocationName.yoshis_island_3_yellow_block_60: 0xBC0716, + LocationName.yoshis_island_3_yellow_block_61: 0xBC0717, + LocationName.yoshis_island_3_yellow_block_62: 0xBC0718, + LocationName.yoshis_island_3_yellow_block_63: 0xBC0719, + LocationName.yoshis_island_3_yellow_block_64: 0xBC071A, + LocationName.yoshis_island_3_yellow_block_65: 0xBC071B, + LocationName.yoshis_island_3_yellow_block_66: 0xBC071C, + LocationName.yoshis_island_3_yellow_block_67: 0xBC071D, + LocationName.yoshis_island_3_yellow_block_68: 0xBC071E, + LocationName.yoshis_island_3_yellow_block_69: 0xBC071F, + LocationName.yoshis_island_3_yellow_block_70: 0xBC0720, + LocationName.yoshis_island_3_yellow_block_71: 0xBC0721, + LocationName.yoshis_island_3_yellow_block_72: 0xBC0722, + LocationName.yoshis_island_3_yellow_block_73: 0xBC0723, + LocationName.yoshis_island_3_yellow_block_74: 0xBC0724, + LocationName.yoshis_island_3_yellow_block_75: 0xBC0725, + LocationName.yoshis_island_3_yellow_block_76: 0xBC0726, + LocationName.yoshis_island_3_yellow_block_77: 0xBC0727, + LocationName.yoshis_island_3_yellow_block_78: 0xBC0728, + LocationName.yoshis_island_3_yellow_block_79: 0xBC0729, + LocationName.yoshis_island_3_yellow_block_80: 0xBC072A, + LocationName.yoshis_island_3_yellow_block_81: 0xBC072B, + LocationName.yoshis_island_3_yellow_block_82: 0xBC072C, + LocationName.yoshis_island_3_yellow_block_83: 0xBC072D, + LocationName.yoshis_island_3_yellow_block_84: 0xBC072E, + LocationName.yoshis_island_3_yellow_block_85: 0xBC072F, + LocationName.yoshis_island_3_yellow_block_86: 0xBC0730, + LocationName.yoshis_island_3_bonus_block_1: 0xBC0731, + LocationName.yoshis_island_1_flying_block_1: 0xBC0732, + LocationName.yoshis_island_1_yellow_block_1: 0xBC0733, + LocationName.yoshis_island_1_life_block_1: 0xBC0734, + LocationName.yoshis_island_1_powerup_block_1: 0xBC0735, + LocationName.yoshis_island_2_flying_block_1: 0xBC0736, + LocationName.yoshis_island_2_flying_block_2: 0xBC0737, + LocationName.yoshis_island_2_flying_block_3: 0xBC0738, + LocationName.yoshis_island_2_flying_block_4: 0xBC0739, + LocationName.yoshis_island_2_flying_block_5: 0xBC073A, + LocationName.yoshis_island_2_flying_block_6: 0xBC073B, + LocationName.yoshis_island_2_coin_block_1: 0xBC073C, + LocationName.yoshis_island_2_yellow_block_1: 0xBC073D, + LocationName.yoshis_island_2_coin_block_2: 0xBC073E, + LocationName.yoshis_island_2_coin_block_3: 0xBC073F, + LocationName.yoshis_island_2_yoshi_block_1: 0xBC0740, + LocationName.yoshis_island_2_coin_block_4: 0xBC0741, + LocationName.yoshis_island_2_yoshi_block_2: 0xBC0742, + LocationName.yoshis_island_2_coin_block_5: 0xBC0743, + LocationName.yoshis_island_2_vine_block_1: 0xBC0744, + LocationName.yoshis_island_2_yellow_block_2: 0xBC0745, + LocationName.vanilla_ghost_house_powerup_block_1: 0xBC0746, + LocationName.vanilla_ghost_house_vine_block_1: 0xBC0747, + LocationName.vanilla_ghost_house_powerup_block_2: 0xBC0748, + LocationName.vanilla_ghost_house_multi_coin_block_1: 0xBC0749, + LocationName.vanilla_ghost_house_blue_pow_block_1: 0xBC074A, + LocationName.vanilla_secret_1_coin_block_1: 0xBC074B, + LocationName.vanilla_secret_1_powerup_block_1: 0xBC074C, + LocationName.vanilla_secret_1_multi_coin_block_1: 0xBC074D, + LocationName.vanilla_secret_1_vine_block_1: 0xBC074E, + LocationName.vanilla_secret_1_vine_block_2: 0xBC074F, + LocationName.vanilla_secret_1_coin_block_2: 0xBC0750, + LocationName.vanilla_secret_1_coin_block_3: 0xBC0751, + LocationName.vanilla_secret_1_powerup_block_2: 0xBC0752, + LocationName.vanilla_dome_3_coin_block_1: 0xBC0753, + LocationName.vanilla_dome_3_flying_block_1: 0xBC0754, + LocationName.vanilla_dome_3_flying_block_2: 0xBC0755, + LocationName.vanilla_dome_3_powerup_block_1: 0xBC0756, + LocationName.vanilla_dome_3_flying_block_3: 0xBC0757, + LocationName.vanilla_dome_3_invis_coin_block_1: 0xBC0758, + LocationName.vanilla_dome_3_powerup_block_2: 0xBC0759, + LocationName.vanilla_dome_3_multi_coin_block_1: 0xBC075A, + LocationName.vanilla_dome_3_powerup_block_3: 0xBC075B, + LocationName.vanilla_dome_3_yoshi_block_1: 0xBC075C, + LocationName.vanilla_dome_3_powerup_block_4: 0xBC075D, + LocationName.vanilla_dome_3_pswitch_coin_block_1: 0xBC075E, + LocationName.vanilla_dome_3_pswitch_coin_block_2: 0xBC075F, + LocationName.vanilla_dome_3_pswitch_coin_block_3: 0xBC0760, + LocationName.vanilla_dome_3_pswitch_coin_block_4: 0xBC0761, + LocationName.vanilla_dome_3_pswitch_coin_block_5: 0xBC0762, + LocationName.vanilla_dome_3_pswitch_coin_block_6: 0xBC0763, + LocationName.donut_secret_2_directional_coin_block_1: 0xBC0764, + LocationName.donut_secret_2_vine_block_1: 0xBC0765, + LocationName.donut_secret_2_star_block_1: 0xBC0766, + LocationName.donut_secret_2_powerup_block_1: 0xBC0767, + LocationName.donut_secret_2_star_block_2: 0xBC0768, + LocationName.valley_of_bowser_4_yellow_block_1: 0xBC0769, + LocationName.valley_of_bowser_4_powerup_block_1: 0xBC076A, + LocationName.valley_of_bowser_4_vine_block_1: 0xBC076B, + LocationName.valley_of_bowser_4_yoshi_block_1: 0xBC076C, + LocationName.valley_of_bowser_4_life_block_1: 0xBC076D, + LocationName.valley_of_bowser_4_powerup_block_2: 0xBC076E, + LocationName.valley_castle_yellow_block_1: 0xBC076F, + LocationName.valley_castle_yellow_block_2: 0xBC0770, + LocationName.valley_castle_green_block_1: 0xBC0771, + LocationName.valley_fortress_green_block_1: 0xBC0772, + LocationName.valley_fortress_yellow_block_1: 0xBC0773, + LocationName.valley_of_bowser_3_powerup_block_1: 0xBC0774, + LocationName.valley_of_bowser_3_powerup_block_2: 0xBC0775, + LocationName.valley_ghost_house_pswitch_coin_block_1: 0xBC0776, + LocationName.valley_ghost_house_multi_coin_block_1: 0xBC0777, + LocationName.valley_ghost_house_powerup_block_1: 0xBC0778, + LocationName.valley_ghost_house_directional_coin_block_1: 0xBC0779, + LocationName.valley_of_bowser_2_powerup_block_1: 0xBC077A, + LocationName.valley_of_bowser_2_yellow_block_1: 0xBC077B, + LocationName.valley_of_bowser_2_powerup_block_2: 0xBC077C, + LocationName.valley_of_bowser_2_wings_block_1: 0xBC077D, + LocationName.valley_of_bowser_1_green_block_1: 0xBC077E, + LocationName.valley_of_bowser_1_invis_coin_block_1: 0xBC077F, + LocationName.valley_of_bowser_1_invis_coin_block_2: 0xBC0780, + LocationName.valley_of_bowser_1_invis_coin_block_3: 0xBC0781, + LocationName.valley_of_bowser_1_yellow_block_1: 0xBC0782, + LocationName.valley_of_bowser_1_yellow_block_2: 0xBC0783, + LocationName.valley_of_bowser_1_yellow_block_3: 0xBC0784, + LocationName.valley_of_bowser_1_yellow_block_4: 0xBC0785, + LocationName.valley_of_bowser_1_vine_block_1: 0xBC0786, + LocationName.chocolate_secret_powerup_block_1: 0xBC0787, + LocationName.chocolate_secret_powerup_block_2: 0xBC0788, + LocationName.vanilla_dome_2_coin_block_1: 0xBC0789, + LocationName.vanilla_dome_2_powerup_block_1: 0xBC078A, + LocationName.vanilla_dome_2_coin_block_2: 0xBC078B, + LocationName.vanilla_dome_2_coin_block_3: 0xBC078C, + LocationName.vanilla_dome_2_vine_block_1: 0xBC078D, + LocationName.vanilla_dome_2_invis_life_block_1: 0xBC078E, + LocationName.vanilla_dome_2_coin_block_4: 0xBC078F, + LocationName.vanilla_dome_2_coin_block_5: 0xBC0790, + LocationName.vanilla_dome_2_powerup_block_2: 0xBC0791, + LocationName.vanilla_dome_2_powerup_block_3: 0xBC0792, + LocationName.vanilla_dome_2_powerup_block_4: 0xBC0793, + LocationName.vanilla_dome_2_multi_coin_block_1: 0xBC0794, + LocationName.vanilla_dome_2_multi_coin_block_2: 0xBC0795, + LocationName.vanilla_dome_4_powerup_block_1: 0xBC0796, + LocationName.vanilla_dome_4_powerup_block_2: 0xBC0797, + LocationName.vanilla_dome_4_coin_block_1: 0xBC0798, + LocationName.vanilla_dome_4_coin_block_2: 0xBC0799, + LocationName.vanilla_dome_4_coin_block_3: 0xBC079A, + LocationName.vanilla_dome_4_life_block_1: 0xBC079B, + LocationName.vanilla_dome_4_coin_block_4: 0xBC079C, + LocationName.vanilla_dome_4_coin_block_5: 0xBC079D, + LocationName.vanilla_dome_4_coin_block_6: 0xBC079E, + LocationName.vanilla_dome_4_coin_block_7: 0xBC079F, + LocationName.vanilla_dome_4_coin_block_8: 0xBC07A0, + LocationName.vanilla_dome_1_flying_block_1: 0xBC07A1, + LocationName.vanilla_dome_1_powerup_block_1: 0xBC07A2, + LocationName.vanilla_dome_1_powerup_block_2: 0xBC07A3, + LocationName.vanilla_dome_1_coin_block_1: 0xBC07A4, + LocationName.vanilla_dome_1_life_block_1: 0xBC07A5, + LocationName.vanilla_dome_1_powerup_block_3: 0xBC07A6, + LocationName.vanilla_dome_1_vine_block_1: 0xBC07A7, + LocationName.vanilla_dome_1_star_block_1: 0xBC07A8, + LocationName.vanilla_dome_1_powerup_block_4: 0xBC07A9, + LocationName.vanilla_dome_1_coin_block_2: 0xBC07AA, + LocationName.vanilla_dome_castle_life_block_1: 0xBC07AB, + LocationName.vanilla_dome_castle_life_block_2: 0xBC07AC, + LocationName.vanilla_dome_castle_powerup_block_1: 0xBC07AD, + LocationName.vanilla_dome_castle_life_block_3: 0xBC07AE, + LocationName.vanilla_dome_castle_green_block_1: 0xBC07AF, + LocationName.forest_ghost_house_coin_block_1: 0xBC07B0, + LocationName.forest_ghost_house_powerup_block_1: 0xBC07B1, + LocationName.forest_ghost_house_flying_block_1: 0xBC07B2, + LocationName.forest_ghost_house_powerup_block_2: 0xBC07B3, + LocationName.forest_ghost_house_life_block_1: 0xBC07B4, + LocationName.forest_of_illusion_1_powerup_block_1: 0xBC07B5, + LocationName.forest_of_illusion_1_yoshi_block_1: 0xBC07B6, + LocationName.forest_of_illusion_1_powerup_block_2: 0xBC07B7, + LocationName.forest_of_illusion_1_key_block_1: 0xBC07B8, + LocationName.forest_of_illusion_1_life_block_1: 0xBC07B9, + LocationName.forest_of_illusion_4_multi_coin_block_1: 0xBC07BA, + LocationName.forest_of_illusion_4_coin_block_1: 0xBC07BB, + LocationName.forest_of_illusion_4_coin_block_2: 0xBC07BC, + LocationName.forest_of_illusion_4_coin_block_3: 0xBC07BD, + LocationName.forest_of_illusion_4_coin_block_4: 0xBC07BE, + LocationName.forest_of_illusion_4_powerup_block_1: 0xBC07BF, + LocationName.forest_of_illusion_4_coin_block_5: 0xBC07C0, + LocationName.forest_of_illusion_4_coin_block_6: 0xBC07C1, + LocationName.forest_of_illusion_4_coin_block_7: 0xBC07C2, + LocationName.forest_of_illusion_4_powerup_block_2: 0xBC07C3, + LocationName.forest_of_illusion_4_coin_block_8: 0xBC07C4, + LocationName.forest_of_illusion_4_coin_block_9: 0xBC07C5, + LocationName.forest_of_illusion_4_coin_block_10: 0xBC07C6, + LocationName.forest_of_illusion_2_green_block_1: 0xBC07C7, + LocationName.forest_of_illusion_2_powerup_block_1: 0xBC07C8, + LocationName.forest_of_illusion_2_invis_coin_block_1: 0xBC07C9, + LocationName.forest_of_illusion_2_invis_coin_block_2: 0xBC07CA, + LocationName.forest_of_illusion_2_invis_life_block_1: 0xBC07CB, + LocationName.forest_of_illusion_2_invis_coin_block_3: 0xBC07CC, + LocationName.forest_of_illusion_2_yellow_block_1: 0xBC07CD, + LocationName.forest_secret_powerup_block_1: 0xBC07CE, + LocationName.forest_secret_powerup_block_2: 0xBC07CF, + LocationName.forest_secret_life_block_1: 0xBC07D0, + LocationName.forest_of_illusion_3_yoshi_block_1: 0xBC07D1, + LocationName.forest_of_illusion_3_coin_block_1: 0xBC07D2, + LocationName.forest_of_illusion_3_multi_coin_block_1: 0xBC07D3, + LocationName.forest_of_illusion_3_coin_block_2: 0xBC07D4, + LocationName.forest_of_illusion_3_multi_coin_block_2: 0xBC07D5, + LocationName.forest_of_illusion_3_coin_block_3: 0xBC07D6, + LocationName.forest_of_illusion_3_coin_block_4: 0xBC07D7, + LocationName.forest_of_illusion_3_coin_block_5: 0xBC07D8, + LocationName.forest_of_illusion_3_coin_block_6: 0xBC07D9, + LocationName.forest_of_illusion_3_coin_block_7: 0xBC07DA, + LocationName.forest_of_illusion_3_coin_block_8: 0xBC07DB, + LocationName.forest_of_illusion_3_coin_block_9: 0xBC07DC, + LocationName.forest_of_illusion_3_coin_block_10: 0xBC07DD, + LocationName.forest_of_illusion_3_coin_block_11: 0xBC07DE, + LocationName.forest_of_illusion_3_coin_block_12: 0xBC07DF, + LocationName.forest_of_illusion_3_coin_block_13: 0xBC07E0, + LocationName.forest_of_illusion_3_coin_block_14: 0xBC07E1, + LocationName.forest_of_illusion_3_coin_block_15: 0xBC07E2, + LocationName.forest_of_illusion_3_coin_block_16: 0xBC07E3, + LocationName.forest_of_illusion_3_coin_block_17: 0xBC07E4, + LocationName.forest_of_illusion_3_coin_block_18: 0xBC07E5, + LocationName.forest_of_illusion_3_coin_block_19: 0xBC07E6, + LocationName.forest_of_illusion_3_coin_block_20: 0xBC07E7, + LocationName.forest_of_illusion_3_coin_block_21: 0xBC07E8, + LocationName.forest_of_illusion_3_coin_block_22: 0xBC07E9, + LocationName.forest_of_illusion_3_coin_block_23: 0xBC07EA, + LocationName.forest_of_illusion_3_coin_block_24: 0xBC07EB, + LocationName.special_zone_8_yoshi_block_1: 0xBC07EC, + LocationName.special_zone_8_coin_block_1: 0xBC07ED, + LocationName.special_zone_8_coin_block_2: 0xBC07EE, + LocationName.special_zone_8_coin_block_3: 0xBC07EF, + LocationName.special_zone_8_coin_block_4: 0xBC07F0, + LocationName.special_zone_8_coin_block_5: 0xBC07F1, + LocationName.special_zone_8_blue_pow_block_1: 0xBC07F2, + LocationName.special_zone_8_powerup_block_1: 0xBC07F3, + LocationName.special_zone_8_star_block_1: 0xBC07F4, + LocationName.special_zone_8_coin_block_6: 0xBC07F5, + LocationName.special_zone_8_coin_block_7: 0xBC07F6, + LocationName.special_zone_8_coin_block_8: 0xBC07F7, + LocationName.special_zone_8_coin_block_9: 0xBC07F8, + LocationName.special_zone_8_coin_block_10: 0xBC07F9, + LocationName.special_zone_8_coin_block_11: 0xBC07FA, + LocationName.special_zone_8_coin_block_12: 0xBC07FB, + LocationName.special_zone_8_coin_block_13: 0xBC07FC, + LocationName.special_zone_8_coin_block_14: 0xBC07FD, + LocationName.special_zone_8_coin_block_15: 0xBC07FE, + LocationName.special_zone_8_coin_block_16: 0xBC07FF, + LocationName.special_zone_8_coin_block_17: 0xBC0800, + LocationName.special_zone_8_coin_block_18: 0xBC0801, + LocationName.special_zone_8_multi_coin_block_1: 0xBC0802, + LocationName.special_zone_8_coin_block_19: 0xBC0803, + LocationName.special_zone_8_coin_block_20: 0xBC0804, + LocationName.special_zone_8_coin_block_21: 0xBC0805, + LocationName.special_zone_8_coin_block_22: 0xBC0806, + LocationName.special_zone_8_coin_block_23: 0xBC0807, + LocationName.special_zone_8_powerup_block_2: 0xBC0808, + LocationName.special_zone_8_flying_block_1: 0xBC0809, + LocationName.special_zone_7_powerup_block_1: 0xBC080A, + LocationName.special_zone_7_yoshi_block_1: 0xBC080B, + LocationName.special_zone_7_coin_block_1: 0xBC080C, + LocationName.special_zone_7_powerup_block_2: 0xBC080D, + LocationName.special_zone_7_coin_block_2: 0xBC080E, + LocationName.special_zone_6_powerup_block_1: 0xBC080F, + LocationName.special_zone_6_coin_block_1: 0xBC0810, + LocationName.special_zone_6_coin_block_2: 0xBC0811, + LocationName.special_zone_6_yoshi_block_1: 0xBC0812, + LocationName.special_zone_6_life_block_1: 0xBC0813, + LocationName.special_zone_6_multi_coin_block_1: 0xBC0814, + LocationName.special_zone_6_coin_block_3: 0xBC0815, + LocationName.special_zone_6_coin_block_4: 0xBC0816, + LocationName.special_zone_6_coin_block_5: 0xBC0817, + LocationName.special_zone_6_coin_block_6: 0xBC0818, + LocationName.special_zone_6_coin_block_7: 0xBC0819, + LocationName.special_zone_6_coin_block_8: 0xBC081A, + LocationName.special_zone_6_coin_block_9: 0xBC081B, + LocationName.special_zone_6_coin_block_10: 0xBC081C, + LocationName.special_zone_6_coin_block_11: 0xBC081D, + LocationName.special_zone_6_coin_block_12: 0xBC081E, + LocationName.special_zone_6_coin_block_13: 0xBC081F, + LocationName.special_zone_6_coin_block_14: 0xBC0820, + LocationName.special_zone_6_coin_block_15: 0xBC0821, + LocationName.special_zone_6_coin_block_16: 0xBC0822, + LocationName.special_zone_6_coin_block_17: 0xBC0823, + LocationName.special_zone_6_coin_block_18: 0xBC0824, + LocationName.special_zone_6_coin_block_19: 0xBC0825, + LocationName.special_zone_6_coin_block_20: 0xBC0826, + LocationName.special_zone_6_coin_block_21: 0xBC0827, + LocationName.special_zone_6_coin_block_22: 0xBC0828, + LocationName.special_zone_6_coin_block_23: 0xBC0829, + LocationName.special_zone_6_coin_block_24: 0xBC082A, + LocationName.special_zone_6_coin_block_25: 0xBC082B, + LocationName.special_zone_6_coin_block_26: 0xBC082C, + LocationName.special_zone_6_coin_block_27: 0xBC082D, + LocationName.special_zone_6_coin_block_28: 0xBC082E, + LocationName.special_zone_6_powerup_block_2: 0xBC082F, + LocationName.special_zone_6_coin_block_29: 0xBC0830, + LocationName.special_zone_6_coin_block_30: 0xBC0831, + LocationName.special_zone_6_coin_block_31: 0xBC0832, + LocationName.special_zone_6_coin_block_32: 0xBC0833, + LocationName.special_zone_6_coin_block_33: 0xBC0834, + LocationName.special_zone_5_yoshi_block_1: 0xBC0835, + LocationName.special_zone_1_vine_block_1: 0xBC0836, + LocationName.special_zone_1_vine_block_2: 0xBC0837, + LocationName.special_zone_1_vine_block_3: 0xBC0838, + LocationName.special_zone_1_vine_block_4: 0xBC0839, + LocationName.special_zone_1_life_block_1: 0xBC083A, + LocationName.special_zone_1_vine_block_5: 0xBC083B, + LocationName.special_zone_1_blue_pow_block_1: 0xBC083C, + LocationName.special_zone_1_vine_block_6: 0xBC083D, + LocationName.special_zone_1_powerup_block_1: 0xBC083E, + LocationName.special_zone_1_pswitch_coin_block_1: 0xBC083F, + LocationName.special_zone_1_pswitch_coin_block_2: 0xBC0840, + LocationName.special_zone_1_pswitch_coin_block_3: 0xBC0841, + LocationName.special_zone_1_pswitch_coin_block_4: 0xBC0842, + LocationName.special_zone_1_pswitch_coin_block_5: 0xBC0843, + LocationName.special_zone_1_pswitch_coin_block_6: 0xBC0844, + LocationName.special_zone_1_pswitch_coin_block_7: 0xBC0845, + LocationName.special_zone_1_pswitch_coin_block_8: 0xBC0846, + LocationName.special_zone_1_pswitch_coin_block_9: 0xBC0847, + LocationName.special_zone_1_pswitch_coin_block_10: 0xBC0848, + LocationName.special_zone_1_pswitch_coin_block_11: 0xBC0849, + LocationName.special_zone_1_pswitch_coin_block_12: 0xBC084A, + LocationName.special_zone_1_pswitch_coin_block_13: 0xBC084B, + LocationName.special_zone_2_powerup_block_1: 0xBC084C, + LocationName.special_zone_2_coin_block_1: 0xBC084D, + LocationName.special_zone_2_coin_block_2: 0xBC084E, + LocationName.special_zone_2_powerup_block_2: 0xBC084F, + LocationName.special_zone_2_coin_block_3: 0xBC0850, + LocationName.special_zone_2_coin_block_4: 0xBC0851, + LocationName.special_zone_2_powerup_block_3: 0xBC0852, + LocationName.special_zone_2_multi_coin_block_1: 0xBC0853, + LocationName.special_zone_2_coin_block_5: 0xBC0854, + LocationName.special_zone_2_coin_block_6: 0xBC0855, + LocationName.special_zone_3_powerup_block_1: 0xBC0856, + LocationName.special_zone_3_yoshi_block_1: 0xBC0857, + LocationName.special_zone_3_wings_block_1: 0xBC0858, + LocationName.special_zone_4_powerup_block_1: 0xBC0859, + LocationName.special_zone_4_star_block_1: 0xBC085A, + LocationName.star_road_2_star_block_1: 0xBC085B, + LocationName.star_road_3_key_block_1: 0xBC085C, + LocationName.star_road_4_powerup_block_1: 0xBC085D, + LocationName.star_road_4_green_block_1: 0xBC085E, + LocationName.star_road_4_green_block_2: 0xBC085F, + LocationName.star_road_4_green_block_3: 0xBC0860, + LocationName.star_road_4_green_block_4: 0xBC0861, + LocationName.star_road_4_green_block_5: 0xBC0862, + LocationName.star_road_4_green_block_6: 0xBC0863, + LocationName.star_road_4_green_block_7: 0xBC0864, + LocationName.star_road_4_key_block_1: 0xBC0865, + LocationName.star_road_5_directional_coin_block_1: 0xBC0866, + LocationName.star_road_5_life_block_1: 0xBC0867, + LocationName.star_road_5_vine_block_1: 0xBC0868, + LocationName.star_road_5_yellow_block_1: 0xBC0869, + LocationName.star_road_5_yellow_block_2: 0xBC086A, + LocationName.star_road_5_yellow_block_3: 0xBC086B, + LocationName.star_road_5_yellow_block_4: 0xBC086C, + LocationName.star_road_5_yellow_block_5: 0xBC086D, + LocationName.star_road_5_yellow_block_6: 0xBC086E, + LocationName.star_road_5_yellow_block_7: 0xBC086F, + LocationName.star_road_5_yellow_block_8: 0xBC0870, + LocationName.star_road_5_yellow_block_9: 0xBC0871, + LocationName.star_road_5_yellow_block_10: 0xBC0872, + LocationName.star_road_5_yellow_block_11: 0xBC0873, + LocationName.star_road_5_yellow_block_12: 0xBC0874, + LocationName.star_road_5_yellow_block_13: 0xBC0875, + LocationName.star_road_5_yellow_block_14: 0xBC0876, + LocationName.star_road_5_yellow_block_15: 0xBC0877, + LocationName.star_road_5_yellow_block_16: 0xBC0878, + LocationName.star_road_5_yellow_block_17: 0xBC0879, + LocationName.star_road_5_yellow_block_18: 0xBC087A, + LocationName.star_road_5_yellow_block_19: 0xBC087B, + LocationName.star_road_5_yellow_block_20: 0xBC087C, + LocationName.star_road_5_green_block_1: 0xBC087D, + LocationName.star_road_5_green_block_2: 0xBC087E, + LocationName.star_road_5_green_block_3: 0xBC087F, + LocationName.star_road_5_green_block_4: 0xBC0880, + LocationName.star_road_5_green_block_5: 0xBC0881, + LocationName.star_road_5_green_block_6: 0xBC0882, + LocationName.star_road_5_green_block_7: 0xBC0883, + LocationName.star_road_5_green_block_8: 0xBC0884, + LocationName.star_road_5_green_block_9: 0xBC0885, + LocationName.star_road_5_green_block_10: 0xBC0886, + LocationName.star_road_5_green_block_11: 0xBC0887, + LocationName.star_road_5_green_block_12: 0xBC0888, + LocationName.star_road_5_green_block_13: 0xBC0889, + LocationName.star_road_5_green_block_14: 0xBC088A, + LocationName.star_road_5_green_block_15: 0xBC088B, + LocationName.star_road_5_green_block_16: 0xBC088C, + LocationName.star_road_5_green_block_17: 0xBC088D, + LocationName.star_road_5_green_block_18: 0xBC088E, + LocationName.star_road_5_green_block_19: 0xBC088F, + LocationName.star_road_5_green_block_20: 0xBC0890 +} + bowser_location_table = { LocationName.bowser: 0xBC0200, } @@ -208,6 +900,10 @@ def __init__(self, player: int, name: str = '', address: int = None, parent=None all_locations = { **level_location_table, **dragon_coin_location_table, + **moon_location_table, + **checkpoints_location_table, + **bonus_block_location_table, + **blocksanity_location_table, **bowser_location_table, **yoshi_house_location_table, } @@ -234,6 +930,123 @@ def __init__(self, player: int, name: str = '', address: int = None, parent=None LocationName.special_zone_8_dragon, ] +special_zone_checkpoint_names = [ + LocationName.special_zone_1_checkpoint +] + +special_zone_blocksanity_names = [ + LocationName.special_zone_8_yoshi_block_1, + LocationName.special_zone_8_coin_block_1, + LocationName.special_zone_8_coin_block_2, + LocationName.special_zone_8_coin_block_3, + LocationName.special_zone_8_coin_block_4, + LocationName.special_zone_8_coin_block_5, + LocationName.special_zone_8_blue_pow_block_1, + LocationName.special_zone_8_powerup_block_1, + LocationName.special_zone_8_star_block_1, + LocationName.special_zone_8_coin_block_6, + LocationName.special_zone_8_coin_block_7, + LocationName.special_zone_8_coin_block_8, + LocationName.special_zone_8_coin_block_9, + LocationName.special_zone_8_coin_block_10, + LocationName.special_zone_8_coin_block_11, + LocationName.special_zone_8_coin_block_12, + LocationName.special_zone_8_coin_block_13, + LocationName.special_zone_8_coin_block_14, + LocationName.special_zone_8_coin_block_15, + LocationName.special_zone_8_coin_block_16, + LocationName.special_zone_8_coin_block_17, + LocationName.special_zone_8_coin_block_18, + LocationName.special_zone_8_multi_coin_block_1, + LocationName.special_zone_8_coin_block_19, + LocationName.special_zone_8_coin_block_20, + LocationName.special_zone_8_coin_block_21, + LocationName.special_zone_8_coin_block_22, + LocationName.special_zone_8_coin_block_23, + LocationName.special_zone_8_powerup_block_2, + LocationName.special_zone_7_powerup_block_1, + LocationName.special_zone_7_yoshi_block_1, + LocationName.special_zone_7_coin_block_1, + LocationName.special_zone_7_powerup_block_2, + LocationName.special_zone_7_coin_block_2, + LocationName.special_zone_6_powerup_block_1, + LocationName.special_zone_6_coin_block_1, + LocationName.special_zone_6_coin_block_2, + LocationName.special_zone_6_yoshi_block_1, + LocationName.special_zone_6_life_block_1, + LocationName.special_zone_6_multi_coin_block_1, + LocationName.special_zone_6_coin_block_3, + LocationName.special_zone_6_coin_block_4, + LocationName.special_zone_6_coin_block_5, + LocationName.special_zone_6_coin_block_6, + LocationName.special_zone_6_coin_block_7, + LocationName.special_zone_6_coin_block_8, + LocationName.special_zone_6_coin_block_9, + LocationName.special_zone_6_coin_block_10, + LocationName.special_zone_6_coin_block_11, + LocationName.special_zone_6_coin_block_12, + LocationName.special_zone_6_coin_block_13, + LocationName.special_zone_6_coin_block_14, + LocationName.special_zone_6_coin_block_15, + LocationName.special_zone_6_coin_block_16, + LocationName.special_zone_6_coin_block_17, + LocationName.special_zone_6_coin_block_18, + LocationName.special_zone_6_coin_block_19, + LocationName.special_zone_6_coin_block_20, + LocationName.special_zone_6_coin_block_21, + LocationName.special_zone_6_coin_block_22, + LocationName.special_zone_6_coin_block_23, + LocationName.special_zone_6_coin_block_24, + LocationName.special_zone_6_coin_block_25, + LocationName.special_zone_6_coin_block_26, + LocationName.special_zone_6_coin_block_27, + LocationName.special_zone_6_coin_block_28, + LocationName.special_zone_6_powerup_block_2, + LocationName.special_zone_6_coin_block_29, + LocationName.special_zone_6_coin_block_30, + LocationName.special_zone_6_coin_block_31, + LocationName.special_zone_6_coin_block_32, + LocationName.special_zone_6_coin_block_33, + LocationName.special_zone_5_yoshi_block_1, + LocationName.special_zone_1_vine_block_1, + LocationName.special_zone_1_vine_block_2, + LocationName.special_zone_1_vine_block_3, + LocationName.special_zone_1_vine_block_4, + LocationName.special_zone_1_life_block_1, + LocationName.special_zone_1_vine_block_5, + LocationName.special_zone_1_blue_pow_block_1, + LocationName.special_zone_1_vine_block_6, + LocationName.special_zone_1_powerup_block_1, + LocationName.special_zone_1_pswitch_coin_block_1, + LocationName.special_zone_1_pswitch_coin_block_2, + LocationName.special_zone_1_pswitch_coin_block_3, + LocationName.special_zone_1_pswitch_coin_block_4, + LocationName.special_zone_1_pswitch_coin_block_5, + LocationName.special_zone_1_pswitch_coin_block_6, + LocationName.special_zone_1_pswitch_coin_block_7, + LocationName.special_zone_1_pswitch_coin_block_8, + LocationName.special_zone_1_pswitch_coin_block_9, + LocationName.special_zone_1_pswitch_coin_block_10, + LocationName.special_zone_1_pswitch_coin_block_11, + LocationName.special_zone_1_pswitch_coin_block_12, + LocationName.special_zone_1_pswitch_coin_block_13, + LocationName.special_zone_2_powerup_block_1, + LocationName.special_zone_2_coin_block_1, + LocationName.special_zone_2_coin_block_2, + LocationName.special_zone_2_powerup_block_2, + LocationName.special_zone_2_coin_block_3, + LocationName.special_zone_2_coin_block_4, + LocationName.special_zone_2_powerup_block_3, + LocationName.special_zone_2_multi_coin_block_1, + LocationName.special_zone_2_coin_block_5, + LocationName.special_zone_2_coin_block_6, + LocationName.special_zone_3_powerup_block_1, + LocationName.special_zone_3_yoshi_block_1, + LocationName.special_zone_3_wings_block_1, + LocationName.special_zone_4_powerup_block_1, + LocationName.special_zone_4_star_block_1 +] + location_table = {} @@ -244,6 +1057,22 @@ def setup_locations(world, player: int): if world.dragon_coin_checks[player].value: location_table.update({**dragon_coin_location_table}) + # 3up Moons here + if world.moon_checks[player].value: + location_table.update({**moon_location_table}) + + # 1up Checkpoints here + if world.checkpoint_checks[player].value: + location_table.update({**checkpoints_location_table}) + + # Green Star Blocks here + if world.bonus_block_checks[player].value: + location_table.update({**bonus_block_location_table}) + + # Blocksanity here + if world.blocksanity[player].value: + location_table.update({**blocksanity_location_table}) + if world.goal[player] == "yoshi_egg_hunt": location_table.update({**yoshi_house_location_table}) else: diff --git a/worlds/smw/Names/ItemName.py b/worlds/smw/Names/ItemName.py index fecb18685ef4..c7ae27a0b060 100644 --- a/worlds/smw/Names/ItemName.py +++ b/worlds/smw/Names/ItemName.py @@ -1,5 +1,9 @@ # Junk Definitions one_up_mushroom = "1-Up Mushroom" +one_coin = "1 coin" +five_coins = "5 coins" +ten_coins = "10 coins" +fifteen_coins = "15 coins" # Collectable Definitions yoshi_egg = "Yoshi Egg" @@ -22,6 +26,9 @@ red_switch_palace = "Red Switch Palace" blue_switch_palace = "Blue Switch Palace" +# Special world clear flag definition +special_world_clear = "Special World Clear" + # Trap Definitions ice_trap = "Ice Trap" stun_trap = "Stun Trap" diff --git a/worlds/smw/Names/LocationName.py b/worlds/smw/Names/LocationName.py index cc01b05ece59..f06fd61336f5 100644 --- a/worlds/smw/Names/LocationName.py +++ b/worlds/smw/Names/LocationName.py @@ -4,12 +4,15 @@ yoshis_island_1_exit_1 = "Yoshi's Island 1 - Normal Exit" yoshis_island_1_dragon = "Yoshi's Island 1 - Dragon Coins" +yoshis_island_1_moon = "Yoshi's Island 1 - 3up Moon" yoshis_island_2_exit_1 = "Yoshi's Island 2 - Normal Exit" yoshis_island_2_dragon = "Yoshi's Island 2 - Dragon Coins" yoshis_island_3_exit_1 = "Yoshi's Island 3 - Normal Exit" yoshis_island_3_dragon = "Yoshi's Island 3 - Dragon Coins" +yoshis_island_3_bonus_block = "Yoshi's Island 3 - 1up from Bonus Block" yoshis_island_4_exit_1 = "Yoshi's Island 4 - Normal Exit" yoshis_island_4_dragon = "Yoshi's Island 4 - Dragon Coins" +yoshis_island_4_checkpoint = "Yoshi's Island 4 - Invisible 1up Checkpoints" yoshis_island_castle = "#1 Iggy's Castle - Normal Exit" yoshis_island_koopaling = "#1 Iggy's Castle - Boss" @@ -18,13 +21,17 @@ donut_plains_1_exit_1 = "Donut Plains 1 - Normal Exit" donut_plains_1_exit_2 = "Donut Plains 1 - Secret Exit" donut_plains_1_dragon = "Donut Plains 1 - Dragon Coins" +donut_plains_1_checkpoint = "Donut Plains 1 - Invisible 1up Checkpoints" donut_plains_2_exit_1 = "Donut Plains 2 - Normal Exit" donut_plains_2_exit_2 = "Donut Plains 2 - Secret Exit" donut_plains_2_dragon = "Donut Plains 2 - Dragon Coins" donut_plains_3_exit_1 = "Donut Plains 3 - Normal Exit" donut_plains_3_dragon = "Donut Plains 3 - Dragon Coins" +donut_plains_3_bonus_block = "Donut Plains 3 - 1up from Bonus Block" donut_plains_4_exit_1 = "Donut Plains 4 - Normal Exit" donut_plains_4_dragon = "Donut Plains 4 - Dragon Coins" +donut_plains_4_moon = "Donut Plains 4 - 3up Moon" +donut_plains_4_checkpoint = "Donut Plains 4 - Invisible 1up Checkpoints" donut_secret_1_exit_1 = "Donut Secret 1 - Normal Exit" donut_secret_1_exit_2 = "Donut Secret 1 - Secret Exit" donut_secret_1_dragon = "Donut Secret 1 - Dragon Coins" @@ -35,6 +42,7 @@ donut_secret_house_exit_1 = "Donut Secret House - Normal Exit" donut_secret_house_exit_2 = "Donut Secret House - Secret Exit" donut_plains_castle = "#2 Morton's Castle - Normal Exit" +donut_plains_castle_checkpoint = "#2 Morton's Castle - Invisible 1up Checkpoints" donut_plains_koopaling = "#2 Morton's Castle - Boss" green_switch_palace = "Green Switch Palace" @@ -47,8 +55,10 @@ vanilla_dome_2_dragon = "Vanilla Dome 2 - Dragon Coins" vanilla_dome_3_exit_1 = "Vanilla Dome 3 - Normal Exit" vanilla_dome_3_dragon = "Vanilla Dome 3 - Dragon Coins" +vanilla_dome_3_moon = "Vanilla Dome 3 - 3up Moon" vanilla_dome_4_exit_1 = "Vanilla Dome 4 - Normal Exit" vanilla_dome_4_dragon = "Vanilla Dome 4 - Dragon Coins" +vanilla_dome_4_checkpoint = "Vanilla Dome 4 - Invisible 1up Checkpoints" vanilla_secret_1_exit_1 = "Vanilla Secret 1 - Normal Exit" vanilla_secret_1_exit_2 = "Vanilla Secret 1 - Secret Exit" vanilla_secret_1_dragon = "Vanilla Secret 1 - Dragon Coins" @@ -58,7 +68,9 @@ vanilla_secret_3_dragon = "Vanilla Secret 3 - Dragon Coins" vanilla_ghost_house_exit_1 = "Vanilla Ghost House - Normal Exit" vanilla_ghost_house_dragon = "Vanilla Ghost House - Dragon Coins" +vanilla_ghost_house_checkpoint = "Vanilla Ghost House - Invisible 1up Checkpoints" vanilla_fortress = "Vanilla Fortress - Normal Exit" +vanilla_fortress_checkpoint = "Vanilla Fortress - Invisible 1up Checkpoints" vanilla_reznor = "Vanilla Fortress - Boss" vanilla_dome_castle = "#3 Lemmy's Castle - Normal Exit" vanilla_dome_koopaling = "#3 Lemmy's Castle - Boss" @@ -67,13 +79,16 @@ butter_bridge_1_exit_1 = "Butter Bridge 1 - Normal Exit" butter_bridge_1_dragon = "Butter Bridge 1 - Dragon Coins" +butter_bridge_1_bonus_block = "Butter Bridge 1 - 1up from Bonus Block" butter_bridge_2_exit_1 = "Butter Bridge 2 - Normal Exit" butter_bridge_2_dragon = "Butter Bridge 2 - Dragon Coins" cheese_bridge_exit_1 = "Cheese Bridge - Normal Exit" cheese_bridge_exit_2 = "Cheese Bridge - Secret Exit" cheese_bridge_dragon = "Cheese Bridge - Dragon Coins" +cheese_bridge_moon = "Cheese Bridge - 3up Moon" cookie_mountain_exit_1 = "Cookie Mountain - Normal Exit" cookie_mountain_dragon = "Cookie Mountain - Dragon Coins" +cookie_mountain_checkpoint = "Cookie Mountain - Invisible 1up Checkpoints" soda_lake_exit_1 = "Soda Lake - Normal Exit" soda_lake_dragon = "Soda Lake - Dragon Coins" twin_bridges_castle = "#4 Ludwig's Castle - Normal Exit" @@ -87,12 +102,14 @@ forest_of_illusion_3_exit_1 = "Forest of Illusion 3 - Normal Exit" forest_of_illusion_3_exit_2 = "Forest of Illusion 3 - Secret Exit" forest_of_illusion_3_dragon = "Forest of Illusion 3 - Dragon Coins" +forest_of_illusion_3_checkpoint = "Forest of Illusion 3 - Invisible 1up Checkpoints" forest_of_illusion_4_exit_1 = "Forest of Illusion 4 - Normal Exit" forest_of_illusion_4_exit_2 = "Forest of Illusion 4 - Secret Exit" forest_of_illusion_4_dragon = "Forest of Illusion 4 - Dragon Coins" forest_ghost_house_exit_1 = "Forest Ghost House - Normal Exit" forest_ghost_house_exit_2 = "Forest Ghost House - Secret Exit" forest_ghost_house_dragon = "Forest Ghost House - Dragon Coins" +forest_ghost_house_moon = "Forest Ghost House - 3up Moon" forest_secret_exit_1 = "Forest Secret - Normal Exit" forest_secret_dragon = "Forest Secret - Dragon Coins" forest_fortress = "Forest Fortress - Normal Exit" @@ -105,12 +122,15 @@ chocolate_island_1_exit_1 = "Chocolate Island 1 - Normal Exit" chocolate_island_1_dragon = "Chocolate Island 1 - Dragon Coins" +chocolate_island_1_moon = "Chocolate Island 1 - 3up Moon" chocolate_island_2_exit_1 = "Chocolate Island 2 - Normal Exit" chocolate_island_2_exit_2 = "Chocolate Island 2 - Secret Exit" chocolate_island_2_dragon = "Chocolate Island 2 - Dragon Coins" +chocolate_island_2_checkpoint = "Chocolate Island 2 - Invisible 1up Checkpoints" chocolate_island_3_exit_1 = "Chocolate Island 3 - Normal Exit" chocolate_island_3_exit_2 = "Chocolate Island 3 - Secret Exit" chocolate_island_3_dragon = "Chocolate Island 3 - Dragon Coins" +chocolate_island_3_bonus_block = "Chocolate Island 3 - 1up from Bonus Block" chocolate_island_4_exit_1 = "Chocolate Island 4 - Normal Exit" chocolate_island_4_dragon = "Chocolate Island 4 - Dragon Coins" chocolate_island_5_exit_1 = "Chocolate Island 5 - Normal Exit" @@ -120,6 +140,7 @@ chocolate_fortress = "Chocolate Fortress - Normal Exit" chocolate_reznor = "Chocolate Fortress - Boss" chocolate_castle = "#6 Wendy's Castle - Normal Exit" +chocolate_castle_checkpoint = "#6 Wendy's Castle - Invisible 1up Checkpoints" chocolate_koopaling = "#6 Wendy's Castle - Boss" sunken_ghost_ship = "Sunken Ghost Ship - Normal Exit" @@ -127,9 +148,11 @@ valley_of_bowser_1_exit_1 = "Valley of Bowser 1 - Normal Exit" valley_of_bowser_1_dragon = "Valley of Bowser 1 - Dragon Coins" +valley_of_bowser_1_moon = "Valley of Bowser 1 - 3up Moon" valley_of_bowser_2_exit_1 = "Valley of Bowser 2 - Normal Exit" valley_of_bowser_2_exit_2 = "Valley of Bowser 2 - Secret Exit" valley_of_bowser_2_dragon = "Valley of Bowser 2 - Dragon Coins" +valley_of_bowser_2_checkpoint = "Valley of Bowser 2 - Invisible 1up Checkpoints" valley_of_bowser_3_exit_1 = "Valley of Bowser 3 - Normal Exit" valley_of_bowser_3_dragon = "Valley of Bowser 3 - Dragon Coins" valley_of_bowser_4_exit_1 = "Valley of Bowser 4 - Normal Exit" @@ -141,6 +164,7 @@ valley_reznor = "Valley Fortress - Boss" valley_castle = "#7 Larry's Castle - Normal Exit" valley_castle_dragon = "#7 Larry's Castle - Dragon Coins" +valley_castle_checkpoint = "#7 Larry's Castle - Invisible 1up Checkpoints" valley_koopaling = "#7 Larry's Castle - Boss" front_door = "Front Door" @@ -161,6 +185,7 @@ special_zone_1_exit_1 = "Gnarly - Normal Exit" special_zone_1_dragon = "Gnarly - Dragon Coins" +special_zone_1_checkpoint = "Gnarly - Invisible 1up Checkpoints" special_zone_2_exit_1 = "Tubular - Normal Exit" special_zone_2_dragon = "Tubular - Dragon Coins" special_zone_3_exit_1 = "Way Cool - Normal Exit" @@ -362,3 +387,663 @@ special_zone_8_tile = "Funky - Tile" special_zone_8_region = "Funky" special_complete = "Special Zone - Star Road - Complete" + + + +vanilla_secret_2_yoshi_block_1 = "Vanilla Secret 2 - Yoshi Block #1" +vanilla_secret_2_green_block_1 = "Vanilla Secret 2 - Green Switch Palace Block #1" +vanilla_secret_2_powerup_block_1 = "Vanilla Secret 2 - Powerup Block #1" +vanilla_secret_2_powerup_block_2 = "Vanilla Secret 2 - Powerup Block #2" +vanilla_secret_2_multi_coin_block_1 = "Vanilla Secret 2 - Multi Coin Block #1" +vanilla_secret_2_gray_pow_block_1 = "Vanilla Secret 2 - Gray P-Switch Block #1" +vanilla_secret_2_coin_block_1 = "Vanilla Secret 2 - Coin Block #1" +vanilla_secret_2_coin_block_2 = "Vanilla Secret 2 - Coin Block #2" +vanilla_secret_2_coin_block_3 = "Vanilla Secret 2 - Coin Block #3" +vanilla_secret_2_coin_block_4 = "Vanilla Secret 2 - Coin Block #4" +vanilla_secret_2_coin_block_5 = "Vanilla Secret 2 - Coin Block #5" +vanilla_secret_2_coin_block_6 = "Vanilla Secret 2 - Coin Block #6" +vanilla_secret_3_powerup_block_1 = "Vanilla Secret 3 - Powerup Block #1" +vanilla_secret_3_powerup_block_2 = "Vanilla Secret 3 - Powerup Block #2" +donut_ghost_house_vine_block_1 = "Donut Ghost House - Vine Block #1" +donut_ghost_house_directional_coin_block_1 = "Donut Ghost House - Directional Coin Block #1" +donut_ghost_house_life_block_1 = "Donut Ghost House - 1up Mushroom Block #1" +donut_ghost_house_life_block_2 = "Donut Ghost House - 1up Mushroom Block #2" +donut_ghost_house_life_block_3 = "Donut Ghost House - 1up Mushroom Block #3" +donut_ghost_house_life_block_4 = "Donut Ghost House - 1up Mushroom Block #4" +donut_plains_3_green_block_1 = "Donut Plains 3 - Green Switch Palace Block #1" +donut_plains_3_coin_block_1 = "Donut Plains 3 - Coin Block #1" +donut_plains_3_coin_block_2 = "Donut Plains 3 - Coin Block #2" +donut_plains_3_vine_block_1 = "Donut Plains 3 - Vine Block #1" +donut_plains_3_powerup_block_1 = "Donut Plains 3 - Powerup Block #1" +donut_plains_3_bonus_block_1 = "Donut Plains 3 - Bonus Block #1" +donut_plains_4_coin_block_1 = "Donut Plains 4 - Coin Block #1" +donut_plains_4_powerup_block_1 = "Donut Plains 4 - Powerup Block #1" +donut_plains_4_coin_block_2 = "Donut Plains 4 - Coin Block #2" +donut_plains_4_yoshi_block_1 = "Donut Plains 4 - Yoshi Block #1" +donut_plains_castle_yellow_block_1 = "#2 Morton's Castle - Yellow Switch Palace Block #1" +donut_plains_castle_coin_block_1 = "#2 Morton's Castle - Coin Block #1" +donut_plains_castle_powerup_block_1 = "#2 Morton's Castle - Powerup Block #1" +donut_plains_castle_coin_block_2 = "#2 Morton's Castle - Coin Block #2" +donut_plains_castle_vine_block_1 = "#2 Morton's Castle - Vine Block #1" +donut_plains_castle_invis_life_block_1 = "#2 Morton's Castle - Invisible 1up Mushroom Block #1" +donut_plains_castle_coin_block_3 = "#2 Morton's Castle - Coin Block #3" +donut_plains_castle_coin_block_4 = "#2 Morton's Castle - Coin Block #4" +donut_plains_castle_coin_block_5 = "#2 Morton's Castle - Coin Block #5" +donut_plains_castle_green_block_1 = "#2 Morton's Castle - Green Switch Palace Block #1" +donut_plains_2_coin_block_1 = "Donut Plains 2 - Coin Block #1" +donut_plains_2_coin_block_2 = "Donut Plains 2 - Coin Block #2" +donut_plains_2_coin_block_3 = "Donut Plains 2 - Coin Block #3" +donut_plains_2_yellow_block_1 = "Donut Plains 2 - Yellow Switch Palace Block #1" +donut_plains_2_powerup_block_1 = "Donut Plains 2 - Powerup Block #1" +donut_plains_2_multi_coin_block_1 = "Donut Plains 2 - Multi Coin Block #1" +donut_plains_2_flying_block_1 = "Donut Plains 2 - Flying Question Block #1" +donut_plains_2_green_block_1 = "Donut Plains 2 - Green Switch Palace Block #1" +donut_plains_2_yellow_block_2 = "Donut Plains 2 - Yellow Switch Palace Block #2" +donut_plains_2_vine_block_1 = "Donut Plains 2 - Vine Block #1" +donut_secret_1_coin_block_1 = "Donut Secret 1 - Coin Block #1" +donut_secret_1_coin_block_2 = "Donut Secret 1 - Coin Block #2" +donut_secret_1_powerup_block_1 = "Donut Secret 1 - Powerup Block #1" +donut_secret_1_coin_block_3 = "Donut Secret 1 - Coin Block #3" +donut_secret_1_powerup_block_2 = "Donut Secret 1 - Powerup Block #2" +donut_secret_1_powerup_block_3 = "Donut Secret 1 - Powerup Block #3" +donut_secret_1_life_block_1 = "Donut Secret 1 - 1up Mushroom Block #1" +donut_secret_1_powerup_block_4 = "Donut Secret 1 - Powerup Block #4" +donut_secret_1_powerup_block_5 = "Donut Secret 1 - Powerup Block #5" +donut_secret_1_key_block_1 = "Donut Secret 1 - Key Block #1" +vanilla_fortress_powerup_block_1 = "Vanilla Fortress - Powerup Block #1" +vanilla_fortress_powerup_block_2 = "Vanilla Fortress - Powerup Block #2" +vanilla_fortress_yellow_block_1 = "Vanilla Fortress - Yellow Switch Palace Block #1" +butter_bridge_1_powerup_block_1 = "Butter Bridge 1 - Powerup Block #1" +butter_bridge_1_multi_coin_block_1 = "Butter Bridge 1 - Multi Coin Block #1" +butter_bridge_1_multi_coin_block_2 = "Butter Bridge 1 - Multi Coin Block #2" +butter_bridge_1_multi_coin_block_3 = "Butter Bridge 1 - Multi Coin Block #3" +butter_bridge_1_life_block_1 = "Butter Bridge 1 - 1up Mushroom Block #1" +butter_bridge_1_bonus_block_1 = "Butter Bridge 1 - Bonus Block #1" +butter_bridge_2_powerup_block_1 = "Butter Bridge 2 - Powerup Block #1" +butter_bridge_2_green_block_1 = "Butter Bridge 2 - Green Switch Palace Block #1" +butter_bridge_2_yoshi_block_1 = "Butter Bridge 2 - Yoshi Block #1" +twin_bridges_castle_powerup_block_1 = "#4 Ludwig Castle - Powerup Block #1" +cheese_bridge_powerup_block_1 = "Cheese Bridge Area - Powerup Block #1" +cheese_bridge_powerup_block_2 = "Cheese Bridge Area - Powerup Block #2" +cheese_bridge_wings_block_1 = "Cheese Bridge Area - Wings Block #1" +cheese_bridge_powerup_block_3 = "Cheese Bridge Area - Powerup Block #3" +cookie_mountain_coin_block_1 = "Cookie Mountain - Coin Block #1" +cookie_mountain_coin_block_2 = "Cookie Mountain - Coin Block #2" +cookie_mountain_coin_block_3 = "Cookie Mountain - Coin Block #3" +cookie_mountain_coin_block_4 = "Cookie Mountain - Coin Block #4" +cookie_mountain_coin_block_5 = "Cookie Mountain - Coin Block #5" +cookie_mountain_coin_block_6 = "Cookie Mountain - Coin Block #6" +cookie_mountain_coin_block_7 = "Cookie Mountain - Coin Block #7" +cookie_mountain_coin_block_8 = "Cookie Mountain - Coin Block #8" +cookie_mountain_coin_block_9 = "Cookie Mountain - Coin Block #9" +cookie_mountain_powerup_block_1 = "Cookie Mountain - Powerup Block #1" +cookie_mountain_life_block_1 = "Cookie Mountain - 1up Mushroom Block #1" +cookie_mountain_vine_block_1 = "Cookie Mountain - Vine Block #1" +cookie_mountain_yoshi_block_1 = "Cookie Mountain - Yoshi Block #1" +cookie_mountain_coin_block_10 = "Cookie Mountain - Coin Block #10" +cookie_mountain_coin_block_11 = "Cookie Mountain - Coin Block #11" +cookie_mountain_powerup_block_2 = "Cookie Mountain - Powerup Block #2" +cookie_mountain_coin_block_12 = "Cookie Mountain - Coin Block #12" +cookie_mountain_coin_block_13 = "Cookie Mountain - Coin Block #13" +cookie_mountain_coin_block_14 = "Cookie Mountain - Coin Block #14" +cookie_mountain_coin_block_15 = "Cookie Mountain - Coin Block #15" +cookie_mountain_coin_block_16 = "Cookie Mountain - Coin Block #16" +cookie_mountain_coin_block_17 = "Cookie Mountain - Coin Block #17" +cookie_mountain_coin_block_18 = "Cookie Mountain - Coin Block #18" +cookie_mountain_coin_block_19 = "Cookie Mountain - Coin Block #19" +cookie_mountain_coin_block_20 = "Cookie Mountain - Coin Block #20" +cookie_mountain_coin_block_21 = "Cookie Mountain - Coin Block #21" +cookie_mountain_coin_block_22 = "Cookie Mountain - Coin Block #22" +cookie_mountain_coin_block_23 = "Cookie Mountain - Coin Block #23" +cookie_mountain_coin_block_24 = "Cookie Mountain - Coin Block #24" +cookie_mountain_coin_block_25 = "Cookie Mountain - Coin Block #25" +cookie_mountain_coin_block_26 = "Cookie Mountain - Coin Block #26" +cookie_mountain_coin_block_27 = "Cookie Mountain - Coin Block #27" +cookie_mountain_coin_block_28 = "Cookie Mountain - Coin Block #28" +cookie_mountain_coin_block_29 = "Cookie Mountain - Coin Block #29" +cookie_mountain_coin_block_30 = "Cookie Mountain - Coin Block #30" +soda_lake_powerup_block_1 = "Soda Lake - Powerup Block #1" +donut_secret_house_powerup_block_1 = "Donut Secret House - Powerup Block #1" +donut_secret_house_multi_coin_block_1 = "Donut Secret House - Multi Coin Block #1" +donut_secret_house_life_block_1 = "Donut Secret House - 1up Mushroom Block #1" +donut_secret_house_vine_block_1 = "Donut Secret House - Vine Block #1" +donut_secret_house_pswitch_coin_block_1 = "Donut Secret House - P-Switch Coin Block #1" +donut_secret_house_pswitch_coin_block_2 = "Donut Secret House - P-Switch Coin Block #2" +donut_secret_house_pswitch_coin_block_3 = "Donut Secret House - P-Switch Coin Block #3" +donut_plains_1_coin_block_1 = "Donut Plains 1 - Coin Block #1" +donut_plains_1_coin_block_2 = "Donut Plains 1 - Coin Block #2" +donut_plains_1_yoshi_block_1 = "Donut Plains 1 - Yoshi Block #1" +donut_plains_1_vine_block_1 = "Donut Plains 1 - Vine Block #1" +donut_plains_1_green_block_1 = "Donut Plains 1 - Green Switch Palace Block #1" +donut_plains_1_green_block_2 = "Donut Plains 1 - Green Switch Palace Block #2" +donut_plains_1_green_block_3 = "Donut Plains 1 - Green Switch Palace Block #3" +donut_plains_1_green_block_4 = "Donut Plains 1 - Green Switch Palace Block #4" +donut_plains_1_green_block_5 = "Donut Plains 1 - Green Switch Palace Block #5" +donut_plains_1_green_block_6 = "Donut Plains 1 - Green Switch Palace Block #6" +donut_plains_1_green_block_7 = "Donut Plains 1 - Green Switch Palace Block #7" +donut_plains_1_green_block_8 = "Donut Plains 1 - Green Switch Palace Block #8" +donut_plains_1_green_block_9 = "Donut Plains 1 - Green Switch Palace Block #9" +donut_plains_1_green_block_10 = "Donut Plains 1 - Green Switch Palace Block #10" +donut_plains_1_green_block_11 = "Donut Plains 1 - Green Switch Palace Block #11" +donut_plains_1_green_block_12 = "Donut Plains 1 - Green Switch Palace Block #12" +donut_plains_1_green_block_13 = "Donut Plains 1 - Green Switch Palace Block #13" +donut_plains_1_green_block_14 = "Donut Plains 1 - Green Switch Palace Block #14" +donut_plains_1_green_block_15 = "Donut Plains 1 - Green Switch Palace Block #15" +donut_plains_1_green_block_16 = "Donut Plains 1 - Green Switch Palace Block #16" +donut_plains_1_yellow_block_1 = "Donut Plains 1 - Yellow Switch Palace Block #1" +donut_plains_1_yellow_block_2 = "Donut Plains 1 - Yellow Switch Palace Block #2" +donut_plains_1_yellow_block_3 = "Donut Plains 1 - Yellow Switch Palace Block #3" +sunken_ghost_ship_powerup_block_1 = "Sunken Ghost Ship - Powerup Block #1" +sunken_ghost_ship_star_block_1 = "Sunken Ghost Ship - Star Block #1" +chocolate_castle_yellow_block_1 = "#6 Wendy's Castle - Yellow Switch Palace Block #1" +chocolate_castle_yellow_block_2 = "#6 Wendy's Castle - Yellow Switch Palace Block #2" +chocolate_castle_green_block_1 = "#6 Wendy's Castle - Green Switch Palace Block #1" +chocolate_fortress_powerup_block_1 = "Chocolate Fortress - Powerup Block #1" +chocolate_fortress_powerup_block_2 = "Chocolate Fortress - Powerup Block #2" +chocolate_fortress_coin_block_1 = "Chocolate Fortress - Coin Block #1" +chocolate_fortress_coin_block_2 = "Chocolate Fortress - Coin Block #2" +chocolate_fortress_green_block_1 = "Chocolate Fortress - Green Switch Palace Block #1" +chocolate_island_5_yoshi_block_1 = "Chocolate Island 5 - Yoshi Block #1" +chocolate_island_5_powerup_block_1 = "Chocolate Island 5 - Powerup Block #1" +chocolate_island_5_life_block_1 = "Chocolate Island 5 - 1up Mushroom Block #1" +chocolate_island_5_yellow_block_1 = "Chocolate Island 5 - Yellow Switch Palace Block #1" +chocolate_island_4_yellow_block_1 = "Chocolate Island 4 - Yellow Switch Palace Block #1" +chocolate_island_4_blue_pow_block_1 = "Chocolate Island 4 - Blue P-Switch Block #1" +chocolate_island_4_powerup_block_1 = "Chocolate Island 4 - Powerup Block #1" +forest_fortress_yellow_block_1 = "Forest Fortress - Yellow Switch Palace Block #1" +forest_fortress_powerup_block_1 = "Forest Fortress - Powerup Block #1" +forest_fortress_life_block_1 = "Forest Fortress - 1up Mushroom Block #1" +forest_fortress_life_block_2 = "Forest Fortress - 1up Mushroom Block #2" +forest_fortress_life_block_3 = "Forest Fortress - 1up Mushroom Block #3" +forest_fortress_life_block_4 = "Forest Fortress - 1up Mushroom Block #4" +forest_fortress_life_block_5 = "Forest Fortress - 1up Mushroom Block #5" +forest_fortress_life_block_6 = "Forest Fortress - 1up Mushroom Block #6" +forest_fortress_life_block_7 = "Forest Fortress - 1up Mushroom Block #7" +forest_fortress_life_block_8 = "Forest Fortress - 1up Mushroom Block #8" +forest_fortress_life_block_9 = "Forest Fortress - 1up Mushroom Block #9" +forest_castle_green_block_1 = "#5 Roy's Castle - Green Switch Palace Block #1" +chocolate_ghost_house_powerup_block_1 = "Choco Ghost House - Powerup Block #1" +chocolate_ghost_house_powerup_block_2 = "Choco Ghost House - Powerup Block #2" +chocolate_ghost_house_life_block_1 = "Choco Ghost House - 1up Mushroom Block #1" +chocolate_island_1_flying_block_1 = "Chocolate Island 1 - Flying Question Block #1" +chocolate_island_1_flying_block_2 = "Chocolate Island 1 - Flying Question Block #2" +chocolate_island_1_yoshi_block_1 = "Chocolate Island 1 - Yoshi Block #1" +chocolate_island_1_green_block_1 = "Chocolate Island 1 - Green Switch Palace Block #1" +chocolate_island_1_life_block_1 = "Chocolate Island 1 - 1up Mushroom Block #1" +chocolate_island_3_powerup_block_1 = "Chocolate Island 3 - Powerup Block #1" +chocolate_island_3_powerup_block_2 = "Chocolate Island 3 - Powerup Block #2" +chocolate_island_3_powerup_block_3 = "Chocolate Island 3 - Powerup Block #3" +chocolate_island_3_green_block_1 = "Chocolate Island 3 - Green Switch Palace Block #1" +chocolate_island_3_bonus_block_1 = "Chocolate Island 3 - Bonus Block #1" +chocolate_island_3_vine_block_1 = "Chocolate Island 3 - Vine Block #1" +chocolate_island_3_life_block_1 = "Chocolate Island 3 - 1up Mushroom Block #1" +chocolate_island_3_life_block_2 = "Chocolate Island 3 - 1up Mushroom Block #2" +chocolate_island_3_life_block_3 = "Chocolate Island 3 - 1up Mushroom Block #3" +chocolate_island_2_multi_coin_block_1 = "Chocolate Island 2 - Multi Coin Block #1" +chocolate_island_2_invis_coin_block_1 = "Chocolate Island 2 - Invisible Coin Block #1" +chocolate_island_2_yoshi_block_1 = "Chocolate Island 2 - Yoshi Block #1" +chocolate_island_2_coin_block_1 = "Chocolate Island 2 - Coin Block #1" +chocolate_island_2_coin_block_2 = "Chocolate Island 2 - Coin Block #2" +chocolate_island_2_multi_coin_block_2 = "Chocolate Island 2 - Multi Coin Block #2" +chocolate_island_2_powerup_block_1 = "Chocolate Island 2 - Powerup Block #1" +chocolate_island_2_blue_pow_block_1 = "Chocolate Island 2 - Blue P-Switch Block #1" +chocolate_island_2_yellow_block_1 = "Chocolate Island 2 - Yellow Switch Palace Block #1" +chocolate_island_2_yellow_block_2 = "Chocolate Island 2 - Yellow Switch Palace Block #2" +chocolate_island_2_green_block_1 = "Chocolate Island 2 - Green Switch Palace Block #1" +chocolate_island_2_green_block_2 = "Chocolate Island 2 - Green Switch Palace Block #2" +chocolate_island_2_green_block_3 = "Chocolate Island 2 - Green Switch Palace Block #3" +chocolate_island_2_green_block_4 = "Chocolate Island 2 - Green Switch Palace Block #4" +chocolate_island_2_green_block_5 = "Chocolate Island 2 - Green Switch Palace Block #5" +chocolate_island_2_green_block_6 = "Chocolate Island 2 - Green Switch Palace Block #6" +yoshis_island_castle_coin_block_1 = "#1 Iggy's Castle - Coin Block #1" +yoshis_island_castle_coin_block_2 = "#1 Iggy's Castle - Coin Block #2" +yoshis_island_castle_powerup_block_1 = "#1 Iggy's Castle - Powerup Block #1" +yoshis_island_castle_coin_block_3 = "#1 Iggy's Castle - Coin Block #3" +yoshis_island_castle_coin_block_4 = "#1 Iggy's Castle - Coin Block #4" +yoshis_island_castle_flying_block_1 = "#1 Iggy's Castle - Flying Question Block #1" +yoshis_island_4_yellow_block_1 = "Yoshi's Island 4 - Yellow Switch Palace Block #1" +yoshis_island_4_powerup_block_1 = "Yoshi's Island 4 - Powerup Block #1" +yoshis_island_4_multi_coin_block_1 = "Yoshi's Island 4 - Multi Coin Block #1" +yoshis_island_4_star_block_1 = "Yoshi's Island 4 - Star Block #1" +yoshis_island_3_yellow_block_1 = "Yoshi's Island 3 - Yellow Switch Palace Block #1" +yoshis_island_3_yellow_block_2 = "Yoshi's Island 3 - Yellow Switch Palace Block #2" +yoshis_island_3_yellow_block_3 = "Yoshi's Island 3 - Yellow Switch Palace Block #3" +yoshis_island_3_yellow_block_4 = "Yoshi's Island 3 - Yellow Switch Palace Block #4" +yoshis_island_3_yellow_block_5 = "Yoshi's Island 3 - Yellow Switch Palace Block #5" +yoshis_island_3_yellow_block_6 = "Yoshi's Island 3 - Yellow Switch Palace Block #6" +yoshis_island_3_yellow_block_7 = "Yoshi's Island 3 - Yellow Switch Palace Block #7" +yoshis_island_3_yellow_block_8 = "Yoshi's Island 3 - Yellow Switch Palace Block #8" +yoshis_island_3_yellow_block_9 = "Yoshi's Island 3 - Yellow Switch Palace Block #9" +yoshis_island_3_yellow_block_10 = "Yoshi's Island 3 - Yellow Switch Palace Block #10" +yoshis_island_3_yellow_block_11 = "Yoshi's Island 3 - Yellow Switch Palace Block #11" +yoshis_island_3_yellow_block_12 = "Yoshi's Island 3 - Yellow Switch Palace Block #12" +yoshis_island_3_yellow_block_13 = "Yoshi's Island 3 - Yellow Switch Palace Block #13" +yoshis_island_3_yellow_block_14 = "Yoshi's Island 3 - Yellow Switch Palace Block #14" +yoshis_island_3_yellow_block_15 = "Yoshi's Island 3 - Yellow Switch Palace Block #15" +yoshis_island_3_yellow_block_16 = "Yoshi's Island 3 - Yellow Switch Palace Block #16" +yoshis_island_3_yellow_block_17 = "Yoshi's Island 3 - Yellow Switch Palace Block #17" +yoshis_island_3_yellow_block_18 = "Yoshi's Island 3 - Yellow Switch Palace Block #18" +yoshis_island_3_yellow_block_19 = "Yoshi's Island 3 - Yellow Switch Palace Block #19" +yoshis_island_3_yellow_block_20 = "Yoshi's Island 3 - Yellow Switch Palace Block #20" +yoshis_island_3_yellow_block_21 = "Yoshi's Island 3 - Yellow Switch Palace Block #21" +yoshis_island_3_yellow_block_22 = "Yoshi's Island 3 - Yellow Switch Palace Block #22" +yoshis_island_3_yellow_block_23 = "Yoshi's Island 3 - Yellow Switch Palace Block #23" +yoshis_island_3_yellow_block_24 = "Yoshi's Island 3 - Yellow Switch Palace Block #24" +yoshis_island_3_yellow_block_25 = "Yoshi's Island 3 - Yellow Switch Palace Block #25" +yoshis_island_3_yellow_block_26 = "Yoshi's Island 3 - Yellow Switch Palace Block #26" +yoshis_island_3_yellow_block_27 = "Yoshi's Island 3 - Yellow Switch Palace Block #27" +yoshis_island_3_yellow_block_28 = "Yoshi's Island 3 - Yellow Switch Palace Block #28" +yoshis_island_3_yellow_block_29 = "Yoshi's Island 3 - Yellow Switch Palace Block #29" +yoshis_island_3_coin_block_1 = "Yoshi's Island 3 - Coin Block #1" +yoshis_island_3_yoshi_block_1 = "Yoshi's Island 3 - Yoshi Block #1" +yoshis_island_3_yellow_block_30 = "Yoshi's Island 3 - Yellow Switch Palace Block #30" +yoshis_island_3_yellow_block_31 = "Yoshi's Island 3 - Yellow Switch Palace Block #31" +yoshis_island_3_yellow_block_32 = "Yoshi's Island 3 - Yellow Switch Palace Block #32" +yoshis_island_3_yellow_block_33 = "Yoshi's Island 3 - Yellow Switch Palace Block #33" +yoshis_island_3_yellow_block_34 = "Yoshi's Island 3 - Yellow Switch Palace Block #34" +yoshis_island_3_yellow_block_35 = "Yoshi's Island 3 - Yellow Switch Palace Block #35" +yoshis_island_3_yellow_block_36 = "Yoshi's Island 3 - Yellow Switch Palace Block #36" +yoshis_island_3_yellow_block_37 = "Yoshi's Island 3 - Yellow Switch Palace Block #37" +yoshis_island_3_yellow_block_38 = "Yoshi's Island 3 - Yellow Switch Palace Block #38" +yoshis_island_3_yellow_block_39 = "Yoshi's Island 3 - Yellow Switch Palace Block #39" +yoshis_island_3_yellow_block_40 = "Yoshi's Island 3 - Yellow Switch Palace Block #40" +yoshis_island_3_yellow_block_41 = "Yoshi's Island 3 - Yellow Switch Palace Block #41" +yoshis_island_3_yellow_block_42 = "Yoshi's Island 3 - Yellow Switch Palace Block #42" +yoshis_island_3_yellow_block_43 = "Yoshi's Island 3 - Yellow Switch Palace Block #43" +yoshis_island_3_yellow_block_44 = "Yoshi's Island 3 - Yellow Switch Palace Block #44" +yoshis_island_3_yellow_block_45 = "Yoshi's Island 3 - Yellow Switch Palace Block #45" +yoshis_island_3_yellow_block_46 = "Yoshi's Island 3 - Yellow Switch Palace Block #46" +yoshis_island_3_yellow_block_47 = "Yoshi's Island 3 - Yellow Switch Palace Block #47" +yoshis_island_3_yellow_block_48 = "Yoshi's Island 3 - Yellow Switch Palace Block #48" +yoshis_island_3_yellow_block_49 = "Yoshi's Island 3 - Yellow Switch Palace Block #49" +yoshis_island_3_yellow_block_50 = "Yoshi's Island 3 - Yellow Switch Palace Block #50" +yoshis_island_3_yellow_block_51 = "Yoshi's Island 3 - Yellow Switch Palace Block #51" +yoshis_island_3_coin_block_2 = "Yoshi's Island 3 - Coin Block #2" +yoshis_island_3_powerup_block_1 = "Yoshi's Island 3 - Powerup Block #1" +yoshis_island_3_yellow_block_52 = "Yoshi's Island 3 - Yellow Switch Palace Block #52" +yoshis_island_3_yellow_block_53 = "Yoshi's Island 3 - Yellow Switch Palace Block #53" +yoshis_island_3_yellow_block_54 = "Yoshi's Island 3 - Yellow Switch Palace Block #54" +yoshis_island_3_yellow_block_55 = "Yoshi's Island 3 - Yellow Switch Palace Block #55" +yoshis_island_3_yellow_block_56 = "Yoshi's Island 3 - Yellow Switch Palace Block #56" +yoshis_island_3_yellow_block_57 = "Yoshi's Island 3 - Yellow Switch Palace Block #57" +yoshis_island_3_yellow_block_58 = "Yoshi's Island 3 - Yellow Switch Palace Block #58" +yoshis_island_3_yellow_block_59 = "Yoshi's Island 3 - Yellow Switch Palace Block #59" +yoshis_island_3_yellow_block_60 = "Yoshi's Island 3 - Yellow Switch Palace Block #60" +yoshis_island_3_yellow_block_61 = "Yoshi's Island 3 - Yellow Switch Palace Block #61" +yoshis_island_3_yellow_block_62 = "Yoshi's Island 3 - Yellow Switch Palace Block #62" +yoshis_island_3_yellow_block_63 = "Yoshi's Island 3 - Yellow Switch Palace Block #63" +yoshis_island_3_yellow_block_64 = "Yoshi's Island 3 - Yellow Switch Palace Block #64" +yoshis_island_3_yellow_block_65 = "Yoshi's Island 3 - Yellow Switch Palace Block #65" +yoshis_island_3_yellow_block_66 = "Yoshi's Island 3 - Yellow Switch Palace Block #66" +yoshis_island_3_yellow_block_67 = "Yoshi's Island 3 - Yellow Switch Palace Block #67" +yoshis_island_3_yellow_block_68 = "Yoshi's Island 3 - Yellow Switch Palace Block #68" +yoshis_island_3_yellow_block_69 = "Yoshi's Island 3 - Yellow Switch Palace Block #69" +yoshis_island_3_yellow_block_70 = "Yoshi's Island 3 - Yellow Switch Palace Block #70" +yoshis_island_3_yellow_block_71 = "Yoshi's Island 3 - Yellow Switch Palace Block #71" +yoshis_island_3_yellow_block_72 = "Yoshi's Island 3 - Yellow Switch Palace Block #72" +yoshis_island_3_yellow_block_73 = "Yoshi's Island 3 - Yellow Switch Palace Block #73" +yoshis_island_3_yellow_block_74 = "Yoshi's Island 3 - Yellow Switch Palace Block #74" +yoshis_island_3_yellow_block_75 = "Yoshi's Island 3 - Yellow Switch Palace Block #75" +yoshis_island_3_yellow_block_76 = "Yoshi's Island 3 - Yellow Switch Palace Block #76" +yoshis_island_3_yellow_block_77 = "Yoshi's Island 3 - Yellow Switch Palace Block #77" +yoshis_island_3_yellow_block_78 = "Yoshi's Island 3 - Yellow Switch Palace Block #78" +yoshis_island_3_yellow_block_79 = "Yoshi's Island 3 - Yellow Switch Palace Block #79" +yoshis_island_3_yellow_block_80 = "Yoshi's Island 3 - Yellow Switch Palace Block #80" +yoshis_island_3_yellow_block_81 = "Yoshi's Island 3 - Yellow Switch Palace Block #81" +yoshis_island_3_yellow_block_82 = "Yoshi's Island 3 - Yellow Switch Palace Block #82" +yoshis_island_3_yellow_block_83 = "Yoshi's Island 3 - Yellow Switch Palace Block #83" +yoshis_island_3_yellow_block_84 = "Yoshi's Island 3 - Yellow Switch Palace Block #84" +yoshis_island_3_yellow_block_85 = "Yoshi's Island 3 - Yellow Switch Palace Block #85" +yoshis_island_3_yellow_block_86 = "Yoshi's Island 3 - Yellow Switch Palace Block #86" +yoshis_island_3_bonus_block_1 = "Yoshi's Island 3 - Bonus Block #1" +yoshis_island_1_flying_block_1 = "Yoshi's Island 1 - Flying Question Block #1" +yoshis_island_1_yellow_block_1 = "Yoshi's Island 1 - Yellow Switch Palace Block #1" +yoshis_island_1_life_block_1 = "Yoshi's Island 1 - 1up Mushroom Block #1" +yoshis_island_1_powerup_block_1 = "Yoshi's Island 1 - Powerup Block #1" +yoshis_island_2_flying_block_1 = "Yoshi's Island 2 - Flying Question Block #1" +yoshis_island_2_flying_block_2 = "Yoshi's Island 2 - Flying Question Block #2" +yoshis_island_2_flying_block_3 = "Yoshi's Island 2 - Flying Question Block #3" +yoshis_island_2_flying_block_4 = "Yoshi's Island 2 - Flying Question Block #4" +yoshis_island_2_flying_block_5 = "Yoshi's Island 2 - Flying Question Block #5" +yoshis_island_2_flying_block_6 = "Yoshi's Island 2 - Flying Question Block #6" +yoshis_island_2_coin_block_1 = "Yoshi's Island 2 - Coin Block #1" +yoshis_island_2_yellow_block_1 = "Yoshi's Island 2 - Yellow Switch Palace Block #1" +yoshis_island_2_coin_block_2 = "Yoshi's Island 2 - Coin Block #2" +yoshis_island_2_coin_block_3 = "Yoshi's Island 2 - Coin Block #3" +yoshis_island_2_yoshi_block_1 = "Yoshi's Island 2 - Yoshi Block #1" +yoshis_island_2_coin_block_4 = "Yoshi's Island 2 - Coin Block #4" +yoshis_island_2_yoshi_block_2 = "Yoshi's Island 2 - Yoshi Block #2" +yoshis_island_2_coin_block_5 = "Yoshi's Island 2 - Coin Block #5" +yoshis_island_2_vine_block_1 = "Yoshi's Island 2 - Vine Block #1" +yoshis_island_2_yellow_block_2 = "Yoshi's Island 2 - Yellow Switch Palace Block #2" +vanilla_ghost_house_powerup_block_1 = "Vanilla Ghost House - Powerup Block #1" +vanilla_ghost_house_vine_block_1 = "Vanilla Ghost House - Vine Block #1" +vanilla_ghost_house_powerup_block_2 = "Vanilla Ghost House - Powerup Block #2" +vanilla_ghost_house_multi_coin_block_1 = "Vanilla Ghost House - Multi Coin Block #1" +vanilla_ghost_house_blue_pow_block_1 = "Vanilla Ghost House - Blue P-Switch Block #1" +vanilla_secret_1_coin_block_1 = "Vanilla Secret 1 - Coin Block #1" +vanilla_secret_1_powerup_block_1 = "Vanilla Secret 1 - Powerup Block #1" +vanilla_secret_1_multi_coin_block_1 = "Vanilla Secret 1 - Multi Coin Block #1" +vanilla_secret_1_vine_block_1 = "Vanilla Secret 1 - Vine Block #1" +vanilla_secret_1_vine_block_2 = "Vanilla Secret 1 - Vine Block #2" +vanilla_secret_1_coin_block_2 = "Vanilla Secret 1 - Coin Block #2" +vanilla_secret_1_coin_block_3 = "Vanilla Secret 1 - Coin Block #3" +vanilla_secret_1_powerup_block_2 = "Vanilla Secret 1 - Powerup Block #2" +vanilla_dome_3_coin_block_1 = "Vanilla Dome 3 - Coin Block #1" +vanilla_dome_3_flying_block_1 = "Vanilla Dome 3 - Flying Question Block #1" +vanilla_dome_3_flying_block_2 = "Vanilla Dome 3 - Flying Question Block #2" +vanilla_dome_3_powerup_block_1 = "Vanilla Dome 3 - Powerup Block #1" +vanilla_dome_3_flying_block_3 = "Vanilla Dome 3 - Flying Question Block #3" +vanilla_dome_3_invis_coin_block_1 = "Vanilla Dome 3 - Invisible Coin Block #1" +vanilla_dome_3_powerup_block_2 = "Vanilla Dome 3 - Powerup Block #2" +vanilla_dome_3_multi_coin_block_1 = "Vanilla Dome 3 - Multi Coin Block #1" +vanilla_dome_3_powerup_block_3 = "Vanilla Dome 3 - Powerup Block #3" +vanilla_dome_3_yoshi_block_1 = "Vanilla Dome 3 - Yoshi Block #1" +vanilla_dome_3_powerup_block_4 = "Vanilla Dome 3 - Powerup Block #4" +vanilla_dome_3_pswitch_coin_block_1 = "Vanilla Dome 3 - P-Switch Coin Block #1" +vanilla_dome_3_pswitch_coin_block_2 = "Vanilla Dome 3 - P-Switch Coin Block #2" +vanilla_dome_3_pswitch_coin_block_3 = "Vanilla Dome 3 - P-Switch Coin Block #3" +vanilla_dome_3_pswitch_coin_block_4 = "Vanilla Dome 3 - P-Switch Coin Block #4" +vanilla_dome_3_pswitch_coin_block_5 = "Vanilla Dome 3 - P-Switch Coin Block #5" +vanilla_dome_3_pswitch_coin_block_6 = "Vanilla Dome 3 - P-Switch Coin Block #6" +donut_secret_2_directional_coin_block_1 = "Donut Secret 2 - Directional Coin Block #1" +donut_secret_2_vine_block_1 = "Donut Secret 2 - Vine Block #1" +donut_secret_2_star_block_1 = "Donut Secret 2 - Star Block #1" +donut_secret_2_powerup_block_1 = "Donut Secret 2 - Powerup Block #1" +donut_secret_2_star_block_2 = "Donut Secret 2 - Star Block #2" +valley_of_bowser_4_yellow_block_1 = "Valley of Bowser 4 - Yellow Switch Palace Block #1" +valley_of_bowser_4_powerup_block_1 = "Valley of Bowser 4 - Powerup Block #1" +valley_of_bowser_4_vine_block_1 = "Valley of Bowser 4 - Vine Block #1" +valley_of_bowser_4_yoshi_block_1 = "Valley of Bowser 4 - Yoshi Block #1" +valley_of_bowser_4_life_block_1 = "Valley of Bowser 4 - 1up Mushroom Block #1" +valley_of_bowser_4_powerup_block_2 = "Valley of Bowser 4 - Powerup Block #2" +valley_castle_yellow_block_1 = "#7 Larry's Castle - Yellow Switch Palace Block #1" +valley_castle_yellow_block_2 = "#7 Larry's Castle - Yellow Switch Palace Block #2" +valley_castle_green_block_1 = "#7 Larry's Castle - Green Switch Palace Block #1" +valley_fortress_green_block_1 = "Valley Fortress - Green Switch Palace Block #1" +valley_fortress_yellow_block_1 = "Valley Fortress - Yellow Switch Palace Block #1" +valley_of_bowser_3_powerup_block_1 = "Valley of Bowser 3 - Powerup Block #1" +valley_of_bowser_3_powerup_block_2 = "Valley of Bowser 3 - Powerup Block #2" +valley_ghost_house_pswitch_coin_block_1 = "Valley Ghost House - P-Switch Coin Block #1" +valley_ghost_house_multi_coin_block_1 = "Valley Ghost House - Multi Coin Block #1" +valley_ghost_house_powerup_block_1 = "Valley Ghost House - Powerup Block #1" +valley_ghost_house_directional_coin_block_1 = "Valley Ghost House - Directional Coin Block #1" +valley_of_bowser_2_powerup_block_1 = "Valley of Bowser 2 - Powerup Block #1" +valley_of_bowser_2_yellow_block_1 = "Valley of Bowser 2 - Yellow Switch Palace Block #1" +valley_of_bowser_2_powerup_block_2 = "Valley of Bowser 2 - Powerup Block #2" +valley_of_bowser_2_wings_block_1 = "Valley of Bowser 2 - Wings Block #1" +valley_of_bowser_1_green_block_1 = "Valley of Bowser 1 - Green Switch Palace Block #1" +valley_of_bowser_1_invis_coin_block_1 = "Valley of Bowser 1 - Invisible Coin Block #1" +valley_of_bowser_1_invis_coin_block_2 = "Valley of Bowser 1 - Invisible Coin Block #2" +valley_of_bowser_1_invis_coin_block_3 = "Valley of Bowser 1 - Invisible Coin Block #3" +valley_of_bowser_1_yellow_block_1 = "Valley of Bowser 1 - Yellow Switch Palace Block #1" +valley_of_bowser_1_yellow_block_2 = "Valley of Bowser 1 - Yellow Switch Palace Block #2" +valley_of_bowser_1_yellow_block_3 = "Valley of Bowser 1 - Yellow Switch Palace Block #3" +valley_of_bowser_1_yellow_block_4 = "Valley of Bowser 1 - Yellow Switch Palace Block #4" +valley_of_bowser_1_vine_block_1 = "Valley of Bowser 1 - Vine Block #1" +chocolate_secret_powerup_block_1 = "Chocolate Secret - Powerup Block #1" +chocolate_secret_powerup_block_2 = "Chocolate Secret - Powerup Block #2" +vanilla_dome_2_coin_block_1 = "Vanilla Dome 2 - Coin Block #1" +vanilla_dome_2_powerup_block_1 = "Vanilla Dome 2 - Powerup Block #1" +vanilla_dome_2_coin_block_2 = "Vanilla Dome 2 - Coin Block #2" +vanilla_dome_2_coin_block_3 = "Vanilla Dome 2 - Coin Block #3" +vanilla_dome_2_vine_block_1 = "Vanilla Dome 2 - Vine Block #1" +vanilla_dome_2_invis_life_block_1 = "Vanilla Dome 2 - Invisible 1up Mushroom Block #1" +vanilla_dome_2_coin_block_4 = "Vanilla Dome 2 - Coin Block #4" +vanilla_dome_2_coin_block_5 = "Vanilla Dome 2 - Coin Block #5" +vanilla_dome_2_powerup_block_2 = "Vanilla Dome 2 - Powerup Block #2" +vanilla_dome_2_powerup_block_3 = "Vanilla Dome 2 - Powerup Block #3" +vanilla_dome_2_powerup_block_4 = "Vanilla Dome 2 - Powerup Block #4" +vanilla_dome_2_multi_coin_block_1 = "Vanilla Dome 2 - Multi Coin Block #1" +vanilla_dome_2_multi_coin_block_2 = "Vanilla Dome 2 - Multi Coin Block #2" +vanilla_dome_4_powerup_block_1 = "Vanilla Dome 4 - Powerup Block #1" +vanilla_dome_4_powerup_block_2 = "Vanilla Dome 4 - Powerup Block #2" +vanilla_dome_4_coin_block_1 = "Vanilla Dome 4 - Coin Block #1" +vanilla_dome_4_coin_block_2 = "Vanilla Dome 4 - Coin Block #2" +vanilla_dome_4_coin_block_3 = "Vanilla Dome 4 - Coin Block #3" +vanilla_dome_4_life_block_1 = "Vanilla Dome 4 - 1up Mushroom Block #1" +vanilla_dome_4_coin_block_4 = "Vanilla Dome 4 - Coin Block #4" +vanilla_dome_4_coin_block_5 = "Vanilla Dome 4 - Coin Block #5" +vanilla_dome_4_coin_block_6 = "Vanilla Dome 4 - Coin Block #6" +vanilla_dome_4_coin_block_7 = "Vanilla Dome 4 - Coin Block #7" +vanilla_dome_4_coin_block_8 = "Vanilla Dome 4 - Coin Block #8" +vanilla_dome_1_flying_block_1 = "Vanilla Dome 1 - Flying Question Block #1" +vanilla_dome_1_powerup_block_1 = "Vanilla Dome 1 - Powerup Block #1" +vanilla_dome_1_powerup_block_2 = "Vanilla Dome 1 - Powerup Block #2" +vanilla_dome_1_coin_block_1 = "Vanilla Dome 1 - Coin Block #1" +vanilla_dome_1_life_block_1 = "Vanilla Dome 1 - 1up Mushroom Block #1" +vanilla_dome_1_powerup_block_3 = "Vanilla Dome 1 - Powerup Block #3" +vanilla_dome_1_vine_block_1 = "Vanilla Dome 1 - Vine Block #1" +vanilla_dome_1_star_block_1 = "Vanilla Dome 1 - Star Block #1" +vanilla_dome_1_powerup_block_4 = "Vanilla Dome 1 - Powerup Block #4" +vanilla_dome_1_coin_block_2 = "Vanilla Dome 1 - Coin Block #2" +vanilla_dome_castle_life_block_1 = "#3 Lemmy's Castle - 1up Mushroom Block #1" +vanilla_dome_castle_life_block_2 = "#3 Lemmy's Castle - 1up Mushroom Block #2" +vanilla_dome_castle_powerup_block_1 = "#3 Lemmy's Castle - Powerup Block #1" +vanilla_dome_castle_life_block_3 = "#3 Lemmy's Castle - 1up Mushroom Block #3" +vanilla_dome_castle_green_block_1 = "#3 Lemmy's Castle - Green Switch Palace Block #1" +forest_ghost_house_coin_block_1 = "Forest Ghost House - Coin Block #1" +forest_ghost_house_powerup_block_1 = "Forest Ghost House - Powerup Block #1" +forest_ghost_house_flying_block_1 = "Forest Ghost House - Flying Question Block #1" +forest_ghost_house_powerup_block_2 = "Forest Ghost House - Powerup Block #2" +forest_ghost_house_life_block_1 = "Forest Ghost House - 1up Mushroom Block #1" +forest_of_illusion_1_powerup_block_1 = "Forest of Illusion 1 - Powerup Block #1" +forest_of_illusion_1_yoshi_block_1 = "Forest of Illusion 1 - Yoshi Block #1" +forest_of_illusion_1_powerup_block_2 = "Forest of Illusion 1 - Powerup Block #2" +forest_of_illusion_1_key_block_1 = "Forest of Illusion 1 - Key Block #1" +forest_of_illusion_1_life_block_1 = "Forest of Illusion 1 - 1up Mushroom Block #1" +forest_of_illusion_4_multi_coin_block_1 = "Forest of Illusion 4 - Multi Coin Block #1" +forest_of_illusion_4_coin_block_1 = "Forest of Illusion 4 - Coin Block #1" +forest_of_illusion_4_coin_block_2 = "Forest of Illusion 4 - Coin Block #2" +forest_of_illusion_4_coin_block_3 = "Forest of Illusion 4 - Coin Block #3" +forest_of_illusion_4_coin_block_4 = "Forest of Illusion 4 - Coin Block #4" +forest_of_illusion_4_powerup_block_1 = "Forest of Illusion 4 - Powerup Block #1" +forest_of_illusion_4_coin_block_5 = "Forest of Illusion 4 - Coin Block #5" +forest_of_illusion_4_coin_block_6 = "Forest of Illusion 4 - Coin Block #6" +forest_of_illusion_4_coin_block_7 = "Forest of Illusion 4 - Coin Block #7" +forest_of_illusion_4_powerup_block_2 = "Forest of Illusion 4 - Powerup Block #2" +forest_of_illusion_4_coin_block_8 = "Forest of Illusion 4 - Coin Block #8" +forest_of_illusion_4_coin_block_9 = "Forest of Illusion 4 - Coin Block #9" +forest_of_illusion_4_coin_block_10 = "Forest of Illusion 4 - Coin Block #10" +forest_of_illusion_2_green_block_1 = "Forest of Illusion 2 - Green Switch Palace Block #1" +forest_of_illusion_2_powerup_block_1 = "Forest of Illusion 2 - Powerup Block #1" +forest_of_illusion_2_invis_coin_block_1 = "Forest of Illusion 2 - Invisible Coin Block #1" +forest_of_illusion_2_invis_coin_block_2 = "Forest of Illusion 2 - Invisible Coin Block #2" +forest_of_illusion_2_invis_life_block_1 = "Forest of Illusion 2 - Invisible 1up Mushroom Block #1" +forest_of_illusion_2_invis_coin_block_3 = "Forest of Illusion 2 - Invisible Coin Block #3" +forest_of_illusion_2_yellow_block_1 = "Forest of Illusion 2 - Yellow Switch Palace Block #1" +forest_secret_powerup_block_1 = "Forest Secret Area - Powerup Block #1" +forest_secret_powerup_block_2 = "Forest Secret Area - Powerup Block #2" +forest_secret_life_block_1 = "Forest Secret Area - 1up Mushroom Block #1" +forest_of_illusion_3_yoshi_block_1 = "Forest of Illusion 3 - Yoshi Block #1" +forest_of_illusion_3_coin_block_1 = "Forest of Illusion 3 - Coin Block #1" +forest_of_illusion_3_multi_coin_block_1 = "Forest of Illusion 3 - Multi Coin Block #1" +forest_of_illusion_3_coin_block_2 = "Forest of Illusion 3 - Coin Block #2" +forest_of_illusion_3_multi_coin_block_2 = "Forest of Illusion 3 - Multi Coin Block #2" +forest_of_illusion_3_coin_block_3 = "Forest of Illusion 3 - Coin Block #3" +forest_of_illusion_3_coin_block_4 = "Forest of Illusion 3 - Coin Block #4" +forest_of_illusion_3_coin_block_5 = "Forest of Illusion 3 - Coin Block #5" +forest_of_illusion_3_coin_block_6 = "Forest of Illusion 3 - Coin Block #6" +forest_of_illusion_3_coin_block_7 = "Forest of Illusion 3 - Coin Block #7" +forest_of_illusion_3_coin_block_8 = "Forest of Illusion 3 - Coin Block #8" +forest_of_illusion_3_coin_block_9 = "Forest of Illusion 3 - Coin Block #9" +forest_of_illusion_3_coin_block_10 = "Forest of Illusion 3 - Coin Block #10" +forest_of_illusion_3_coin_block_11 = "Forest of Illusion 3 - Coin Block #11" +forest_of_illusion_3_coin_block_12 = "Forest of Illusion 3 - Coin Block #12" +forest_of_illusion_3_coin_block_13 = "Forest of Illusion 3 - Coin Block #13" +forest_of_illusion_3_coin_block_14 = "Forest of Illusion 3 - Coin Block #14" +forest_of_illusion_3_coin_block_15 = "Forest of Illusion 3 - Coin Block #15" +forest_of_illusion_3_coin_block_16 = "Forest of Illusion 3 - Coin Block #16" +forest_of_illusion_3_coin_block_17 = "Forest of Illusion 3 - Coin Block #17" +forest_of_illusion_3_coin_block_18 = "Forest of Illusion 3 - Coin Block #18" +forest_of_illusion_3_coin_block_19 = "Forest of Illusion 3 - Coin Block #19" +forest_of_illusion_3_coin_block_20 = "Forest of Illusion 3 - Coin Block #20" +forest_of_illusion_3_coin_block_21 = "Forest of Illusion 3 - Coin Block #21" +forest_of_illusion_3_coin_block_22 = "Forest of Illusion 3 - Coin Block #22" +forest_of_illusion_3_coin_block_23 = "Forest of Illusion 3 - Coin Block #23" +forest_of_illusion_3_coin_block_24 = "Forest of Illusion 3 - Coin Block #24" +special_zone_8_yoshi_block_1 = "Funky - Yoshi Block #1" +special_zone_8_coin_block_1 = "Funky - Coin Block #1" +special_zone_8_coin_block_2 = "Funky - Coin Block #2" +special_zone_8_coin_block_3 = "Funky - Coin Block #3" +special_zone_8_coin_block_4 = "Funky - Coin Block #4" +special_zone_8_coin_block_5 = "Funky - Coin Block #5" +special_zone_8_blue_pow_block_1 = "Funky - Blue P-Switch Block #1" +special_zone_8_powerup_block_1 = "Funky - Powerup Block #1" +special_zone_8_star_block_1 = "Funky - Star Block #1" +special_zone_8_coin_block_6 = "Funky - Coin Block #6" +special_zone_8_coin_block_7 = "Funky - Coin Block #7" +special_zone_8_coin_block_8 = "Funky - Coin Block #8" +special_zone_8_coin_block_9 = "Funky - Coin Block #9" +special_zone_8_coin_block_10 = "Funky - Coin Block #10" +special_zone_8_coin_block_11 = "Funky - Coin Block #11" +special_zone_8_coin_block_12 = "Funky - Coin Block #12" +special_zone_8_coin_block_13 = "Funky - Coin Block #13" +special_zone_8_coin_block_14 = "Funky - Coin Block #14" +special_zone_8_coin_block_15 = "Funky - Coin Block #15" +special_zone_8_coin_block_16 = "Funky - Coin Block #16" +special_zone_8_coin_block_17 = "Funky - Coin Block #17" +special_zone_8_coin_block_18 = "Funky - Coin Block #18" +special_zone_8_multi_coin_block_1 = "Funky - Multi Coin Block #1" +special_zone_8_coin_block_19 = "Funky - Coin Block #19" +special_zone_8_coin_block_20 = "Funky - Coin Block #20" +special_zone_8_coin_block_21 = "Funky - Coin Block #21" +special_zone_8_coin_block_22 = "Funky - Coin Block #22" +special_zone_8_coin_block_23 = "Funky - Coin Block #23" +special_zone_8_powerup_block_2 = "Funky - Powerup Block #2" +special_zone_8_flying_block_1 = "Funky - Flying Question Block #1" +special_zone_7_powerup_block_1 = "Outrageous - Powerup Block #1" +special_zone_7_yoshi_block_1 = "Outrageous - Yoshi Block #1" +special_zone_7_coin_block_1 = "Outrageous - Coin Block #1" +special_zone_7_powerup_block_2 = "Outrageous - Powerup Block #2" +special_zone_7_coin_block_2 = "Outrageous - Coin Block #2" +special_zone_6_powerup_block_1 = "Mondo - Powerup Block #1" +special_zone_6_coin_block_1 = "Mondo - Coin Block #1" +special_zone_6_coin_block_2 = "Mondo - Coin Block #2" +special_zone_6_yoshi_block_1 = "Mondo - Yoshi Block #1" +special_zone_6_life_block_1 = "Mondo - 1up Mushroom Block #1" +special_zone_6_multi_coin_block_1 = "Mondo - Multi Coin Block #1" +special_zone_6_coin_block_3 = "Mondo - Coin Block #3" +special_zone_6_coin_block_4 = "Mondo - Coin Block #4" +special_zone_6_coin_block_5 = "Mondo - Coin Block #5" +special_zone_6_coin_block_6 = "Mondo - Coin Block #6" +special_zone_6_coin_block_7 = "Mondo - Coin Block #7" +special_zone_6_coin_block_8 = "Mondo - Coin Block #8" +special_zone_6_coin_block_9 = "Mondo - Coin Block #9" +special_zone_6_coin_block_10 = "Mondo - Coin Block #10" +special_zone_6_coin_block_11 = "Mondo - Coin Block #11" +special_zone_6_coin_block_12 = "Mondo - Coin Block #12" +special_zone_6_coin_block_13 = "Mondo - Coin Block #13" +special_zone_6_coin_block_14 = "Mondo - Coin Block #14" +special_zone_6_coin_block_15 = "Mondo - Coin Block #15" +special_zone_6_coin_block_16 = "Mondo - Coin Block #16" +special_zone_6_coin_block_17 = "Mondo - Coin Block #17" +special_zone_6_coin_block_18 = "Mondo - Coin Block #18" +special_zone_6_coin_block_19 = "Mondo - Coin Block #19" +special_zone_6_coin_block_20 = "Mondo - Coin Block #20" +special_zone_6_coin_block_21 = "Mondo - Coin Block #21" +special_zone_6_coin_block_22 = "Mondo - Coin Block #22" +special_zone_6_coin_block_23 = "Mondo - Coin Block #23" +special_zone_6_coin_block_24 = "Mondo - Coin Block #24" +special_zone_6_coin_block_25 = "Mondo - Coin Block #25" +special_zone_6_coin_block_26 = "Mondo - Coin Block #26" +special_zone_6_coin_block_27 = "Mondo - Coin Block #27" +special_zone_6_coin_block_28 = "Mondo - Coin Block #28" +special_zone_6_powerup_block_2 = "Mondo - Powerup Block #2" +special_zone_6_coin_block_29 = "Mondo - Coin Block #29" +special_zone_6_coin_block_30 = "Mondo - Coin Block #30" +special_zone_6_coin_block_31 = "Mondo - Coin Block #31" +special_zone_6_coin_block_32 = "Mondo - Coin Block #32" +special_zone_6_coin_block_33 = "Mondo - Coin Block #33" +special_zone_5_yoshi_block_1 = "Groovy - Yoshi Block #1" +special_zone_1_vine_block_1 = "Gnarly - Vine Block #1" +special_zone_1_vine_block_2 = "Gnarly - Vine Block #2" +special_zone_1_vine_block_3 = "Gnarly - Vine Block #3" +special_zone_1_vine_block_4 = "Gnarly - Vine Block #4" +special_zone_1_life_block_1 = "Gnarly - 1up Mushroom Block #1" +special_zone_1_vine_block_5 = "Gnarly - Vine Block #5" +special_zone_1_blue_pow_block_1 = "Gnarly - Blue P-Switch Block #1" +special_zone_1_vine_block_6 = "Gnarly - Vine Block #6" +special_zone_1_powerup_block_1 = "Gnarly - Powerup Block #1" +special_zone_1_pswitch_coin_block_1 = "Gnarly - P-Switch Coin Block #1" +special_zone_1_pswitch_coin_block_2 = "Gnarly - P-Switch Coin Block #2" +special_zone_1_pswitch_coin_block_3 = "Gnarly - P-Switch Coin Block #3" +special_zone_1_pswitch_coin_block_4 = "Gnarly - P-Switch Coin Block #4" +special_zone_1_pswitch_coin_block_5 = "Gnarly - P-Switch Coin Block #5" +special_zone_1_pswitch_coin_block_6 = "Gnarly - P-Switch Coin Block #6" +special_zone_1_pswitch_coin_block_7 = "Gnarly - P-Switch Coin Block #7" +special_zone_1_pswitch_coin_block_8 = "Gnarly - P-Switch Coin Block #8" +special_zone_1_pswitch_coin_block_9 = "Gnarly - P-Switch Coin Block #9" +special_zone_1_pswitch_coin_block_10 = "Gnarly - P-Switch Coin Block #10" +special_zone_1_pswitch_coin_block_11 = "Gnarly - P-Switch Coin Block #11" +special_zone_1_pswitch_coin_block_12 = "Gnarly - P-Switch Coin Block #12" +special_zone_1_pswitch_coin_block_13 = "Gnarly - P-Switch Coin Block #13" +special_zone_2_powerup_block_1 = "Tubular - Powerup Block #1" +special_zone_2_coin_block_1 = "Tubular - Coin Block #1" +special_zone_2_coin_block_2 = "Tubular - Coin Block #2" +special_zone_2_powerup_block_2 = "Tubular - Powerup Block #2" +special_zone_2_coin_block_3 = "Tubular - Coin Block #3" +special_zone_2_coin_block_4 = "Tubular - Coin Block #4" +special_zone_2_powerup_block_3 = "Tubular - Powerup Block #3" +special_zone_2_multi_coin_block_1 = "Tubular - Multi Coin Block #1" +special_zone_2_coin_block_5 = "Tubular - Coin Block #5" +special_zone_2_coin_block_6 = "Tubular - Coin Block #6" +special_zone_3_powerup_block_1 = "Way Cool - Powerup Block #1" +special_zone_3_yoshi_block_1 = "Way Cool - Yoshi Block #1" +special_zone_3_wings_block_1 = "Way Cool - Wings Block #1" +special_zone_4_powerup_block_1 = "Awesome - Powerup Block #1" +special_zone_4_star_block_1 = "Awesome - Star Block #1" +star_road_2_star_block_1 = "Star Road 2 - Star Block #1" +star_road_3_key_block_1 = "Star Road 3 - Key Block #1" +star_road_4_powerup_block_1 = "Star Road 4 - Powerup Block #1" +star_road_4_green_block_1 = "Star Road 4 - Green Switch Palace Block #1" +star_road_4_green_block_2 = "Star Road 4 - Green Switch Palace Block #2" +star_road_4_green_block_3 = "Star Road 4 - Green Switch Palace Block #3" +star_road_4_green_block_4 = "Star Road 4 - Green Switch Palace Block #4" +star_road_4_green_block_5 = "Star Road 4 - Green Switch Palace Block #5" +star_road_4_green_block_6 = "Star Road 4 - Green Switch Palace Block #6" +star_road_4_green_block_7 = "Star Road 4 - Green Switch Palace Block #7" +star_road_4_key_block_1 = "Star Road 4 - Key Block #1" +star_road_5_directional_coin_block_1 = "Star Road 5 - Directional Coin Block #1" +star_road_5_life_block_1 = "Star Road 5 - 1up Mushroom Block #1" +star_road_5_vine_block_1 = "Star Road 5 - Vine Block #1" +star_road_5_yellow_block_1 = "Star Road 5 - Yellow Switch Palace Block #1" +star_road_5_yellow_block_2 = "Star Road 5 - Yellow Switch Palace Block #2" +star_road_5_yellow_block_3 = "Star Road 5 - Yellow Switch Palace Block #3" +star_road_5_yellow_block_4 = "Star Road 5 - Yellow Switch Palace Block #4" +star_road_5_yellow_block_5 = "Star Road 5 - Yellow Switch Palace Block #5" +star_road_5_yellow_block_6 = "Star Road 5 - Yellow Switch Palace Block #6" +star_road_5_yellow_block_7 = "Star Road 5 - Yellow Switch Palace Block #7" +star_road_5_yellow_block_8 = "Star Road 5 - Yellow Switch Palace Block #8" +star_road_5_yellow_block_9 = "Star Road 5 - Yellow Switch Palace Block #9" +star_road_5_yellow_block_10 = "Star Road 5 - Yellow Switch Palace Block #10" +star_road_5_yellow_block_11 = "Star Road 5 - Yellow Switch Palace Block #11" +star_road_5_yellow_block_12 = "Star Road 5 - Yellow Switch Palace Block #12" +star_road_5_yellow_block_13 = "Star Road 5 - Yellow Switch Palace Block #13" +star_road_5_yellow_block_14 = "Star Road 5 - Yellow Switch Palace Block #14" +star_road_5_yellow_block_15 = "Star Road 5 - Yellow Switch Palace Block #15" +star_road_5_yellow_block_16 = "Star Road 5 - Yellow Switch Palace Block #16" +star_road_5_yellow_block_17 = "Star Road 5 - Yellow Switch Palace Block #17" +star_road_5_yellow_block_18 = "Star Road 5 - Yellow Switch Palace Block #18" +star_road_5_yellow_block_19 = "Star Road 5 - Yellow Switch Palace Block #19" +star_road_5_yellow_block_20 = "Star Road 5 - Yellow Switch Palace Block #20" +star_road_5_green_block_1 = "Star Road 5 - Green Switch Palace Block #1" +star_road_5_green_block_2 = "Star Road 5 - Green Switch Palace Block #2" +star_road_5_green_block_3 = "Star Road 5 - Green Switch Palace Block #3" +star_road_5_green_block_4 = "Star Road 5 - Green Switch Palace Block #4" +star_road_5_green_block_5 = "Star Road 5 - Green Switch Palace Block #5" +star_road_5_green_block_6 = "Star Road 5 - Green Switch Palace Block #6" +star_road_5_green_block_7 = "Star Road 5 - Green Switch Palace Block #7" +star_road_5_green_block_8 = "Star Road 5 - Green Switch Palace Block #8" +star_road_5_green_block_9 = "Star Road 5 - Green Switch Palace Block #9" +star_road_5_green_block_10 = "Star Road 5 - Green Switch Palace Block #10" +star_road_5_green_block_11 = "Star Road 5 - Green Switch Palace Block #11" +star_road_5_green_block_12 = "Star Road 5 - Green Switch Palace Block #12" +star_road_5_green_block_13 = "Star Road 5 - Green Switch Palace Block #13" +star_road_5_green_block_14 = "Star Road 5 - Green Switch Palace Block #14" +star_road_5_green_block_15 = "Star Road 5 - Green Switch Palace Block #15" +star_road_5_green_block_16 = "Star Road 5 - Green Switch Palace Block #16" +star_road_5_green_block_17 = "Star Road 5 - Green Switch Palace Block #17" +star_road_5_green_block_18 = "Star Road 5 - Green Switch Palace Block #18" +star_road_5_green_block_19 = "Star Road 5 - Green Switch Palace Block #19" +star_road_5_green_block_20 = "Star Road 5 - Green Switch Palace Block #20" \ No newline at end of file diff --git a/worlds/smw/Options.py b/worlds/smw/Options.py index a9416b633dd4..9b1a78d0b66f 100644 --- a/worlds/smw/Options.py +++ b/worlds/smw/Options.py @@ -52,6 +52,37 @@ class DragonCoinChecks(Toggle): display_name = "Dragon Coin Checks" +class MoonChecks(Toggle): + """ + Whether collecting a 3up Moon in a level will grant a check + """ + display_name = "3up Moon Checks" + + +class CheckpointChecks(Toggle): + """ + Whether collecting a hidden 1up mushroom in a level will grant a check + """ + display_name = "Checkpoint Checks" + + +class BonusBlockChecks(Toggle): + """ + Whether collecting a 1up mushroom from a Bonus Block in a level will grant a check + """ + display_name = "Bonus Block Checks" + + +class Blocksanity(Toggle): + """ + Whether hitting a block (question mark block, turn block, note block or switch palace blocks) will grant a check + Note that some [?] blocks are 100% excluded due to how the option and the game works! + Exclusion list: + * Blocks in Top Secret Area & Front Door/Bowser Castle + * Blocks that are 100% unreachable unless you glitch your way in + """ + display_name = "Blocksanity" + class BowserCastleDoors(Choice): """ How the doors of Bowser's Castle behave @@ -88,7 +119,7 @@ class BowserCastleRooms(Choice): class BossShuffle(Choice): """ - How the rooms of Bowser's Castle Front Door behave + How bosses are shuffled None: Bosses are not shuffled Simple: Four Reznors and the seven Koopalings are shuffled around Full: Each boss location gets a fully random boss @@ -109,6 +140,12 @@ class LevelShuffle(Toggle): display_name = "Level Shuffle" +class EasyEarlyLevels(Toggle): + """ + If active, this option will place "easy" levels in the first two worlds for a smooth AP experience. + """ + display_name = "Easy Early Levels" + class ExcludeSpecialZone(Toggle): """ If active, this option will prevent any progression items from being placed in Special Zone levels. @@ -147,6 +184,29 @@ class DisplayReceivedItemPopups(Choice): option_progression = 2 default = 2 +class BaseJunkWeight(Choice): + """ + Base Class for Trap Weights + """ + option_none = 0 + option_low = 1 + option_medium = 2 + option_high = 4 + default = 2 + + +class JunkCoinsWeight(BaseJunkWeight): + """ + Likelihood of coins being junk items. + """ + display_name = "Junk Coins Weight" + +class JunkLivesWeight(BaseJunkWeight): + """ + Likelihood of lives being junk items. + """ + display_name = "Junk Lives Weight" + class TrapFillPercentage(Range): """ @@ -204,6 +264,13 @@ class Autosave(DefaultOnToggle): display_name = "Autosave" +class AdjustVerticalScroll(DefaultOnToggle): + """ + Adjusts the camera in certain levels to follow Mario in a more natural way. + May create some blind jumps if enabled. + """ + display_name = "Adjust Vertical Scroll" + class EarlyClimb(Toggle): """ Force Climb to appear early in the seed as a local item. @@ -239,6 +306,15 @@ class MusicShuffle(Choice): default = 0 +class SFXShuffle(Toggle): + """ + Shuffles almost every instance of sound effect playback + Archipelago elements that play sound effects aren't randomized + """ + display_name = "Sound effect shuffle" + default = 0 + + class MarioPalette(Choice): """ Mario palette color @@ -255,9 +331,22 @@ class MarioPalette(Choice): default = 0 +class PaletteShuffleType(Choice): + """ + Determines which kind of palette shuffle will be used. + Legacy: Uses only the palette sets from the original game + Curated: Uses palette combinations created by some people to have a greater amount of variety of palettes + Using this option will make both levels and maps have randomized palettes + """ + display_name = "Palette Shuffle Type" + option_legacy = 0 + option_curated = 1 + default = 1 + class ForegroundPaletteShuffle(Toggle): """ Whether to shuffle level foreground palettes + Only used when Palette Shuffle Type is set to "Legacy" """ display_name = "Foreground Palette Shuffle" @@ -265,6 +354,7 @@ class ForegroundPaletteShuffle(Toggle): class BackgroundPaletteShuffle(Toggle): """ Whether to shuffle level background palettes + Only used when Palette Shuffle Type is set to "Legacy" """ display_name = "Background Palette Shuffle" @@ -272,6 +362,7 @@ class BackgroundPaletteShuffle(Toggle): class OverworldPaletteShuffle(Toggle): """ Whether to shuffle overworld palettes + Only used when Palette Shuffle Type is set to "Legacy" """ display_name = "Overworld Palette Shuffle" @@ -294,24 +385,34 @@ class StartingLifeCount(Range): "number_of_yoshi_eggs": NumberOfYoshiEggs, "percentage_of_yoshi_eggs": PercentageOfYoshiEggs, "dragon_coin_checks": DragonCoinChecks, + "moon_checks": MoonChecks, + "checkpoint_checks": CheckpointChecks, + "bonus_block_checks": BonusBlockChecks, + "blocksanity": Blocksanity, "bowser_castle_doors": BowserCastleDoors, "bowser_castle_rooms": BowserCastleRooms, "level_shuffle": LevelShuffle, + "easy_early_levels": EasyEarlyLevels, "exclude_special_zone": ExcludeSpecialZone, "boss_shuffle": BossShuffle, "swap_donut_gh_exits": SwapDonutGhostHouseExits, #"display_sent_item_popups": DisplaySentItemPopups, "display_received_item_popups": DisplayReceivedItemPopups, + "junk_coins_weight": JunkCoinsWeight, + "junk_lives_weight": JunkLivesWeight, "trap_fill_percentage": TrapFillPercentage, "ice_trap_weight": IceTrapWeight, "stun_trap_weight": StunTrapWeight, "literature_trap_weight": LiteratureTrapWeight, "timer_trap_weight": TimerTrapWeight, "autosave": Autosave, + "vertical_scroll": AdjustVerticalScroll, "early_climb": EarlyClimb, "overworld_speed": OverworldSpeed, "music_shuffle": MusicShuffle, + "sfx_shuffle": SFXShuffle, "mario_palette": MarioPalette, + "palette_shuffle_type": PaletteShuffleType, "foreground_palette_shuffle": ForegroundPaletteShuffle, "background_palette_shuffle": BackgroundPaletteShuffle, "overworld_palette_shuffle": OverworldPaletteShuffle, diff --git a/worlds/smw/Regions.py b/worlds/smw/Regions.py index fd94e0b168e5..4b829ca034db 100644 --- a/worlds/smw/Regions.py +++ b/worlds/smw/Regions.py @@ -1,10 +1,10 @@ import typing -from BaseClasses import MultiWorld, Region, RegionType, Entrance +from BaseClasses import MultiWorld, Region, Entrance from .Locations import SMWLocation from .Levels import level_info_dict from .Names import LocationName, ItemName -from ..generic.Rules import add_rule, set_rule +from worlds.generic.Rules import add_rule, set_rule def create_regions(world, player: int, active_locations): @@ -12,7 +12,6 @@ def create_regions(world, player: int, active_locations): yoshis_island_region = create_region(world, player, active_locations, LocationName.yoshis_island_region, None) - yoshis_house_tile = create_region(world, player, active_locations, LocationName.yoshis_house_tile, None) yoshis_house_region_locations = [] @@ -844,6 +843,1197 @@ def create_regions(world, player: int, active_locations): add_location_to_region(world, player, active_locations, LocationName.special_zone_8_region, LocationName.special_zone_8_dragon, lambda state: state.has(ItemName.progressive_powerup, player, 1)) + if world.moon_checks[player]: + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_1_region, LocationName.yoshis_island_1_moon, + lambda state: (state.has(ItemName.mario_run, player) and + state.has(ItemName.progressive_powerup, player, 3))) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_4_region, LocationName.donut_plains_4_moon, + lambda state: (state.has(ItemName.mario_run, player) and + state.has(ItemName.progressive_powerup, player, 3))) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_3_region, LocationName.vanilla_dome_3_moon, + lambda state: (state.has(ItemName.mario_run, player) and + state.has(ItemName.progressive_powerup, player, 3))) + add_location_to_region(world, player, active_locations, LocationName.cheese_bridge_region, LocationName.cheese_bridge_moon, + lambda state: (state.has(ItemName.mario_run, player) and + state.has(ItemName.yoshi_activate, player) and + state.has(ItemName.progressive_powerup, player, 3))) + add_location_to_region(world, player, active_locations, LocationName.forest_ghost_house_region, LocationName.forest_ghost_house_moon) + add_location_to_region(world, player, active_locations, LocationName.chocolate_island_1_region, LocationName.chocolate_island_1_moon, + lambda state: (state.has(ItemName.mario_run, player) and + state.has(ItemName.progressive_powerup, player, 3))) + add_location_to_region(world, player, active_locations, LocationName.valley_of_bowser_1_region, LocationName.valley_of_bowser_1_moon) + + if world.checkpoint_checks[player]: + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_4_region, LocationName.yoshis_island_4_checkpoint, + lambda state: (state.has(ItemName.yoshi_activate, player) or + (state.has(ItemName.mario_run, player, player) and + state.has(ItemName.progressive_powerup, player, 3)))) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_1_region, LocationName.donut_plains_1_checkpoint) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_4_region, LocationName.donut_plains_4_checkpoint, + lambda state: (state.has(ItemName.mario_run, player) and + state.has(ItemName.progressive_powerup, player, 3))) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_castle_region, LocationName.donut_plains_castle_checkpoint) + add_location_to_region(world, player, active_locations, LocationName.vanilla_ghost_house_region, LocationName.vanilla_ghost_house_checkpoint) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_4_region, LocationName.vanilla_dome_4_checkpoint) + add_location_to_region(world, player, active_locations, LocationName.vanilla_fortress_region, LocationName.vanilla_fortress_checkpoint, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.cookie_mountain_region, LocationName.cookie_mountain_checkpoint, + lambda state: (state.has(ItemName.mario_swim, player) or + state.has(ItemName.yoshi_activate, player) or + (state.has(ItemName.mario_run, player, player) and + state.has(ItemName.progressive_powerup, player, 3)))) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_3_region, LocationName.forest_of_illusion_3_checkpoint) + add_location_to_region(world, player, active_locations, LocationName.chocolate_island_2_region, LocationName.chocolate_island_2_checkpoint) + add_location_to_region(world, player, active_locations, LocationName.chocolate_castle_region, LocationName.chocolate_castle_checkpoint) + add_location_to_region(world, player, active_locations, LocationName.valley_of_bowser_2_region, LocationName.valley_of_bowser_2_checkpoint) + add_location_to_region(world, player, active_locations, LocationName.valley_castle_region, LocationName.valley_castle_checkpoint) + add_location_to_region(world, player, active_locations, LocationName.special_zone_1_region, LocationName.special_zone_1_checkpoint, + lambda state: state.has(ItemName.mario_climb, player)) + + if world.bonus_block_checks[player]: + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_bonus_block) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_3_region, LocationName.donut_plains_3_bonus_block) + add_location_to_region(world, player, active_locations, LocationName.butter_bridge_1_region, LocationName.butter_bridge_1_bonus_block) + add_location_to_region(world, player, active_locations, LocationName.chocolate_island_3_region, LocationName.chocolate_island_3_bonus_block) + + + + + + + if world.blocksanity[player]: + add_location_to_region(world, player, active_locations, LocationName.vanilla_secret_2_region, LocationName.vanilla_secret_2_yoshi_block_1) + add_location_to_region(world, player, active_locations, LocationName.vanilla_secret_2_region, LocationName.vanilla_secret_2_green_block_1, + lambda state:( ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.mario_carry, player))) or ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.progressive_powerup, player, 3))))) + add_location_to_region(world, player, active_locations, LocationName.vanilla_secret_2_region, LocationName.vanilla_secret_2_powerup_block_1) + add_location_to_region(world, player, active_locations, LocationName.vanilla_secret_2_region, LocationName.vanilla_secret_2_powerup_block_2) + add_location_to_region(world, player, active_locations, LocationName.vanilla_secret_2_region, LocationName.vanilla_secret_2_multi_coin_block_1) + add_location_to_region(world, player, active_locations, LocationName.vanilla_secret_2_region, LocationName.vanilla_secret_2_gray_pow_block_1) + add_location_to_region(world, player, active_locations, LocationName.vanilla_secret_2_region, LocationName.vanilla_secret_2_coin_block_1) + add_location_to_region(world, player, active_locations, LocationName.vanilla_secret_2_region, LocationName.vanilla_secret_2_coin_block_2) + add_location_to_region(world, player, active_locations, LocationName.vanilla_secret_2_region, LocationName.vanilla_secret_2_coin_block_3) + add_location_to_region(world, player, active_locations, LocationName.vanilla_secret_2_region, LocationName.vanilla_secret_2_coin_block_4) + add_location_to_region(world, player, active_locations, LocationName.vanilla_secret_2_region, LocationName.vanilla_secret_2_coin_block_5) + add_location_to_region(world, player, active_locations, LocationName.vanilla_secret_2_region, LocationName.vanilla_secret_2_coin_block_6) + add_location_to_region(world, player, active_locations, LocationName.vanilla_secret_3_region, LocationName.vanilla_secret_3_powerup_block_1, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.vanilla_secret_3_region, LocationName.vanilla_secret_3_powerup_block_2, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.donut_ghost_house_region, LocationName.donut_ghost_house_vine_block_1, + lambda state: (state.has(ItemName.mario_climb, player) and state.has(ItemName.p_switch, player))) + add_location_to_region(world, player, active_locations, LocationName.donut_ghost_house_region, LocationName.donut_ghost_house_directional_coin_block_1, + lambda state: (state.has(ItemName.mario_climb, player) and state.has(ItemName.p_switch, player))) + add_location_to_region(world, player, active_locations, LocationName.donut_ghost_house_region, LocationName.donut_ghost_house_life_block_1, + lambda state: (state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))) + add_location_to_region(world, player, active_locations, LocationName.donut_ghost_house_region, LocationName.donut_ghost_house_life_block_2, + lambda state: (state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))) + add_location_to_region(world, player, active_locations, LocationName.donut_ghost_house_region, LocationName.donut_ghost_house_life_block_3, + lambda state: (state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))) + add_location_to_region(world, player, active_locations, LocationName.donut_ghost_house_region, LocationName.donut_ghost_house_life_block_4, + lambda state: (state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_3_region, LocationName.donut_plains_3_green_block_1, + lambda state: state.has(ItemName.green_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_3_region, LocationName.donut_plains_3_coin_block_1) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_3_region, LocationName.donut_plains_3_coin_block_2) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_3_region, LocationName.donut_plains_3_vine_block_1, + lambda state: (state.has(ItemName.progressive_powerup, player, 1) and state.has(ItemName.mario_spin_jump, player))) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_3_region, LocationName.donut_plains_3_powerup_block_1) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_3_region, LocationName.donut_plains_3_bonus_block_1) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_4_region, LocationName.donut_plains_4_coin_block_1) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_4_region, LocationName.donut_plains_4_powerup_block_1) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_4_region, LocationName.donut_plains_4_coin_block_2) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_4_region, LocationName.donut_plains_4_yoshi_block_1) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_castle_region, LocationName.donut_plains_castle_yellow_block_1, + lambda state: state.has(ItemName.yellow_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_castle_region, LocationName.donut_plains_castle_coin_block_1) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_castle_region, LocationName.donut_plains_castle_powerup_block_1) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_castle_region, LocationName.donut_plains_castle_coin_block_2) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_castle_region, LocationName.donut_plains_castle_vine_block_1) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_castle_region, LocationName.donut_plains_castle_invis_life_block_1, + lambda state: state.has(ItemName.mario_climb, player)) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_castle_region, LocationName.donut_plains_castle_coin_block_3) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_castle_region, LocationName.donut_plains_castle_coin_block_4) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_castle_region, LocationName.donut_plains_castle_coin_block_5) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_castle_region, LocationName.donut_plains_castle_green_block_1, + lambda state: state.has(ItemName.green_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_2_region, LocationName.donut_plains_2_coin_block_1) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_2_region, LocationName.donut_plains_2_coin_block_2) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_2_region, LocationName.donut_plains_2_coin_block_3) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_2_region, LocationName.donut_plains_2_yellow_block_1, + lambda state: state.has(ItemName.yellow_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_2_region, LocationName.donut_plains_2_powerup_block_1) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_2_region, LocationName.donut_plains_2_multi_coin_block_1) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_2_region, LocationName.donut_plains_2_flying_block_1) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_2_region, LocationName.donut_plains_2_green_block_1, + lambda state: state.has(ItemName.green_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_2_region, LocationName.donut_plains_2_yellow_block_2, + lambda state: state.has(ItemName.yellow_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_2_region, LocationName.donut_plains_2_vine_block_1, + lambda state: state.has(ItemName.mario_carry, player)) + add_location_to_region(world, player, active_locations, LocationName.donut_secret_1_region, LocationName.donut_secret_1_coin_block_1, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.donut_secret_1_region, LocationName.donut_secret_1_coin_block_2, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.donut_secret_1_region, LocationName.donut_secret_1_powerup_block_1, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.donut_secret_1_region, LocationName.donut_secret_1_coin_block_3, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.donut_secret_1_region, LocationName.donut_secret_1_powerup_block_2, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.donut_secret_1_region, LocationName.donut_secret_1_powerup_block_3, + lambda state: (state.has(ItemName.mario_swim, player) and state.has(ItemName.p_balloon, player))) + add_location_to_region(world, player, active_locations, LocationName.donut_secret_1_region, LocationName.donut_secret_1_life_block_1, + lambda state: (state.has(ItemName.mario_swim, player) and state.has(ItemName.p_balloon, player))) + add_location_to_region(world, player, active_locations, LocationName.donut_secret_1_region, LocationName.donut_secret_1_powerup_block_4, + lambda state: (state.has(ItemName.mario_swim, player) and state.has(ItemName.p_balloon, player))) + add_location_to_region(world, player, active_locations, LocationName.donut_secret_1_region, LocationName.donut_secret_1_powerup_block_5, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.donut_secret_1_region, LocationName.donut_secret_1_key_block_1, + lambda state: (state.has(ItemName.mario_swim, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.p_switch, player))) + add_location_to_region(world, player, active_locations, LocationName.vanilla_fortress_region, LocationName.vanilla_fortress_powerup_block_1, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.vanilla_fortress_region, LocationName.vanilla_fortress_powerup_block_2, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.vanilla_fortress_region, LocationName.vanilla_fortress_yellow_block_1, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.mario_swim, player))) + add_location_to_region(world, player, active_locations, LocationName.butter_bridge_1_region, LocationName.butter_bridge_1_powerup_block_1) + add_location_to_region(world, player, active_locations, LocationName.butter_bridge_1_region, LocationName.butter_bridge_1_multi_coin_block_1) + add_location_to_region(world, player, active_locations, LocationName.butter_bridge_1_region, LocationName.butter_bridge_1_multi_coin_block_2) + add_location_to_region(world, player, active_locations, LocationName.butter_bridge_1_region, LocationName.butter_bridge_1_multi_coin_block_3) + add_location_to_region(world, player, active_locations, LocationName.butter_bridge_1_region, LocationName.butter_bridge_1_life_block_1) + add_location_to_region(world, player, active_locations, LocationName.butter_bridge_1_region, LocationName.butter_bridge_1_bonus_block_1) + add_location_to_region(world, player, active_locations, LocationName.butter_bridge_2_region, LocationName.butter_bridge_2_powerup_block_1, + lambda state: state.has(ItemName.mario_carry, player)) + add_location_to_region(world, player, active_locations, LocationName.butter_bridge_2_region, LocationName.butter_bridge_2_green_block_1, + lambda state: state.has(ItemName.green_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.butter_bridge_2_region, LocationName.butter_bridge_2_yoshi_block_1, + lambda state: state.has(ItemName.mario_carry, player)) + add_location_to_region(world, player, active_locations, LocationName.twin_bridges_castle_region, LocationName.twin_bridges_castle_powerup_block_1, + lambda state: state.has(ItemName.mario_climb, player)) + add_location_to_region(world, player, active_locations, LocationName.cheese_bridge_region, LocationName.cheese_bridge_powerup_block_1) + add_location_to_region(world, player, active_locations, LocationName.cheese_bridge_region, LocationName.cheese_bridge_powerup_block_2) + add_location_to_region(world, player, active_locations, LocationName.cheese_bridge_region, LocationName.cheese_bridge_wings_block_1) + add_location_to_region(world, player, active_locations, LocationName.cheese_bridge_region, LocationName.cheese_bridge_powerup_block_3) + add_location_to_region(world, player, active_locations, LocationName.cookie_mountain_region, LocationName.cookie_mountain_coin_block_1) + add_location_to_region(world, player, active_locations, LocationName.cookie_mountain_region, LocationName.cookie_mountain_coin_block_2) + add_location_to_region(world, player, active_locations, LocationName.cookie_mountain_region, LocationName.cookie_mountain_coin_block_3) + add_location_to_region(world, player, active_locations, LocationName.cookie_mountain_region, LocationName.cookie_mountain_coin_block_4) + add_location_to_region(world, player, active_locations, LocationName.cookie_mountain_region, LocationName.cookie_mountain_coin_block_5) + add_location_to_region(world, player, active_locations, LocationName.cookie_mountain_region, LocationName.cookie_mountain_coin_block_6) + add_location_to_region(world, player, active_locations, LocationName.cookie_mountain_region, LocationName.cookie_mountain_coin_block_7) + add_location_to_region(world, player, active_locations, LocationName.cookie_mountain_region, LocationName.cookie_mountain_coin_block_8) + add_location_to_region(world, player, active_locations, LocationName.cookie_mountain_region, LocationName.cookie_mountain_coin_block_9) + add_location_to_region(world, player, active_locations, LocationName.cookie_mountain_region, LocationName.cookie_mountain_powerup_block_1) + add_location_to_region(world, player, active_locations, LocationName.cookie_mountain_region, LocationName.cookie_mountain_life_block_1, + lambda state:( (state.has(ItemName.mario_climb, player)) or (state.has(ItemName.mario_swim, player)) or ((state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))))) + add_location_to_region(world, player, active_locations, LocationName.cookie_mountain_region, LocationName.cookie_mountain_vine_block_1) + add_location_to_region(world, player, active_locations, LocationName.cookie_mountain_region, LocationName.cookie_mountain_yoshi_block_1, + lambda state: state.has(ItemName.red_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.cookie_mountain_region, LocationName.cookie_mountain_coin_block_10) + add_location_to_region(world, player, active_locations, LocationName.cookie_mountain_region, LocationName.cookie_mountain_coin_block_11) + add_location_to_region(world, player, active_locations, LocationName.cookie_mountain_region, LocationName.cookie_mountain_powerup_block_2) + add_location_to_region(world, player, active_locations, LocationName.cookie_mountain_region, LocationName.cookie_mountain_coin_block_12) + add_location_to_region(world, player, active_locations, LocationName.cookie_mountain_region, LocationName.cookie_mountain_coin_block_13) + add_location_to_region(world, player, active_locations, LocationName.cookie_mountain_region, LocationName.cookie_mountain_coin_block_14) + add_location_to_region(world, player, active_locations, LocationName.cookie_mountain_region, LocationName.cookie_mountain_coin_block_15) + add_location_to_region(world, player, active_locations, LocationName.cookie_mountain_region, LocationName.cookie_mountain_coin_block_16) + add_location_to_region(world, player, active_locations, LocationName.cookie_mountain_region, LocationName.cookie_mountain_coin_block_17) + add_location_to_region(world, player, active_locations, LocationName.cookie_mountain_region, LocationName.cookie_mountain_coin_block_18) + add_location_to_region(world, player, active_locations, LocationName.cookie_mountain_region, LocationName.cookie_mountain_coin_block_19) + add_location_to_region(world, player, active_locations, LocationName.cookie_mountain_region, LocationName.cookie_mountain_coin_block_20) + add_location_to_region(world, player, active_locations, LocationName.cookie_mountain_region, LocationName.cookie_mountain_coin_block_21) + add_location_to_region(world, player, active_locations, LocationName.cookie_mountain_region, LocationName.cookie_mountain_coin_block_22) + add_location_to_region(world, player, active_locations, LocationName.cookie_mountain_region, LocationName.cookie_mountain_coin_block_23) + add_location_to_region(world, player, active_locations, LocationName.cookie_mountain_region, LocationName.cookie_mountain_coin_block_24) + add_location_to_region(world, player, active_locations, LocationName.cookie_mountain_region, LocationName.cookie_mountain_coin_block_25) + add_location_to_region(world, player, active_locations, LocationName.cookie_mountain_region, LocationName.cookie_mountain_coin_block_26) + add_location_to_region(world, player, active_locations, LocationName.cookie_mountain_region, LocationName.cookie_mountain_coin_block_27) + add_location_to_region(world, player, active_locations, LocationName.cookie_mountain_region, LocationName.cookie_mountain_coin_block_28) + add_location_to_region(world, player, active_locations, LocationName.cookie_mountain_region, LocationName.cookie_mountain_coin_block_29) + add_location_to_region(world, player, active_locations, LocationName.cookie_mountain_region, LocationName.cookie_mountain_coin_block_30) + add_location_to_region(world, player, active_locations, LocationName.soda_lake_region, LocationName.soda_lake_powerup_block_1, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.donut_secret_house_region, LocationName.donut_secret_house_powerup_block_1) + add_location_to_region(world, player, active_locations, LocationName.donut_secret_house_region, LocationName.donut_secret_house_multi_coin_block_1) + add_location_to_region(world, player, active_locations, LocationName.donut_secret_house_region, LocationName.donut_secret_house_life_block_1, + lambda state: state.has(ItemName.p_switch, player)) + add_location_to_region(world, player, active_locations, LocationName.donut_secret_house_region, LocationName.donut_secret_house_vine_block_1, + lambda state: state.has(ItemName.p_switch, player)) + add_location_to_region(world, player, active_locations, LocationName.donut_secret_house_region, LocationName.donut_secret_house_pswitch_coin_block_1, + lambda state: (state.has(ItemName.progressive_powerup, player, 3) and state.has(ItemName.p_switch, player))) + add_location_to_region(world, player, active_locations, LocationName.donut_secret_house_region, LocationName.donut_secret_house_pswitch_coin_block_2, + lambda state: (state.has(ItemName.progressive_powerup, player, 3) and state.has(ItemName.p_switch, player))) + add_location_to_region(world, player, active_locations, LocationName.donut_secret_house_region, LocationName.donut_secret_house_pswitch_coin_block_3, + lambda state: (state.has(ItemName.progressive_powerup, player, 3) and state.has(ItemName.p_switch, player))) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_1_region, LocationName.donut_plains_1_coin_block_1) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_1_region, LocationName.donut_plains_1_coin_block_2) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_1_region, LocationName.donut_plains_1_yoshi_block_1) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_1_region, LocationName.donut_plains_1_vine_block_1) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_1_region, LocationName.donut_plains_1_green_block_1, + lambda state:( ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.progressive_powerup, player, 3))) or ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.mario_carry, player))))) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_1_region, LocationName.donut_plains_1_green_block_2, + lambda state:( ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.progressive_powerup, player, 3))) or ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.mario_carry, player))))) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_1_region, LocationName.donut_plains_1_green_block_3, + lambda state:( ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.progressive_powerup, player, 3))) or ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.mario_carry, player))))) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_1_region, LocationName.donut_plains_1_green_block_4, + lambda state:( ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.progressive_powerup, player, 3))) or ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.mario_carry, player))))) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_1_region, LocationName.donut_plains_1_green_block_5, + lambda state:( ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.progressive_powerup, player, 3))) or ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.mario_carry, player))))) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_1_region, LocationName.donut_plains_1_green_block_6, + lambda state:( ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.progressive_powerup, player, 3))) or ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.mario_carry, player))))) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_1_region, LocationName.donut_plains_1_green_block_7, + lambda state:( ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.progressive_powerup, player, 3))) or ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.mario_carry, player))))) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_1_region, LocationName.donut_plains_1_green_block_8, + lambda state:( ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.progressive_powerup, player, 3))) or ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.mario_carry, player))))) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_1_region, LocationName.donut_plains_1_green_block_9, + lambda state:( ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.progressive_powerup, player, 3))) or ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.mario_carry, player))))) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_1_region, LocationName.donut_plains_1_green_block_10, + lambda state:( ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.progressive_powerup, player, 3))) or ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.mario_carry, player))))) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_1_region, LocationName.donut_plains_1_green_block_11, + lambda state:( ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.progressive_powerup, player, 3))) or ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.mario_carry, player))))) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_1_region, LocationName.donut_plains_1_green_block_12, + lambda state:( ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.progressive_powerup, player, 3))) or ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.mario_carry, player))))) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_1_region, LocationName.donut_plains_1_green_block_13, + lambda state:( ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.progressive_powerup, player, 3))) or ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.mario_carry, player))))) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_1_region, LocationName.donut_plains_1_green_block_14, + lambda state:( ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.progressive_powerup, player, 3))) or ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.mario_carry, player))))) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_1_region, LocationName.donut_plains_1_green_block_15, + lambda state:( ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.progressive_powerup, player, 3))) or ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.mario_carry, player))))) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_1_region, LocationName.donut_plains_1_green_block_16, + lambda state:( ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.progressive_powerup, player, 3))) or ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.mario_carry, player))))) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_1_region, LocationName.donut_plains_1_yellow_block_1, + lambda state: state.has(ItemName.yellow_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_1_region, LocationName.donut_plains_1_yellow_block_2, + lambda state: state.has(ItemName.yellow_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.donut_plains_1_region, LocationName.donut_plains_1_yellow_block_3, + lambda state: state.has(ItemName.yellow_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.sunken_ghost_ship_region, LocationName.sunken_ghost_ship_powerup_block_1, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.sunken_ghost_ship_region, LocationName.sunken_ghost_ship_star_block_1, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.chocolate_castle_region, LocationName.chocolate_castle_yellow_block_1, + lambda state: state.has(ItemName.yellow_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.chocolate_castle_region, LocationName.chocolate_castle_yellow_block_2, + lambda state: state.has(ItemName.yellow_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.chocolate_castle_region, LocationName.chocolate_castle_green_block_1, + lambda state: state.has(ItemName.green_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.chocolate_fortress_region, LocationName.chocolate_fortress_powerup_block_1) + add_location_to_region(world, player, active_locations, LocationName.chocolate_fortress_region, LocationName.chocolate_fortress_powerup_block_2) + add_location_to_region(world, player, active_locations, LocationName.chocolate_fortress_region, LocationName.chocolate_fortress_coin_block_1) + add_location_to_region(world, player, active_locations, LocationName.chocolate_fortress_region, LocationName.chocolate_fortress_coin_block_2) + add_location_to_region(world, player, active_locations, LocationName.chocolate_fortress_region, LocationName.chocolate_fortress_green_block_1, + lambda state: state.has(ItemName.green_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.chocolate_island_5_region, LocationName.chocolate_island_5_yoshi_block_1) + add_location_to_region(world, player, active_locations, LocationName.chocolate_island_5_region, LocationName.chocolate_island_5_powerup_block_1) + add_location_to_region(world, player, active_locations, LocationName.chocolate_island_5_region, LocationName.chocolate_island_5_life_block_1, + lambda state:( (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.progressive_powerup, player, 3)))) + add_location_to_region(world, player, active_locations, LocationName.chocolate_island_5_region, LocationName.chocolate_island_5_yellow_block_1, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.p_switch, player))) + add_location_to_region(world, player, active_locations, LocationName.chocolate_island_4_region, LocationName.chocolate_island_4_yellow_block_1, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.blue_switch_palace, player))) + add_location_to_region(world, player, active_locations, LocationName.chocolate_island_4_region, LocationName.chocolate_island_4_blue_pow_block_1) + add_location_to_region(world, player, active_locations, LocationName.chocolate_island_4_region, LocationName.chocolate_island_4_powerup_block_1) + add_location_to_region(world, player, active_locations, LocationName.forest_fortress_region, LocationName.forest_fortress_yellow_block_1, + lambda state: state.has(ItemName.yellow_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.forest_fortress_region, LocationName.forest_fortress_powerup_block_1) + add_location_to_region(world, player, active_locations, LocationName.forest_fortress_region, LocationName.forest_fortress_life_block_1, + lambda state: (state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))) + add_location_to_region(world, player, active_locations, LocationName.forest_fortress_region, LocationName.forest_fortress_life_block_2, + lambda state: (state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))) + add_location_to_region(world, player, active_locations, LocationName.forest_fortress_region, LocationName.forest_fortress_life_block_3, + lambda state: (state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))) + add_location_to_region(world, player, active_locations, LocationName.forest_fortress_region, LocationName.forest_fortress_life_block_4, + lambda state: (state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))) + add_location_to_region(world, player, active_locations, LocationName.forest_fortress_region, LocationName.forest_fortress_life_block_5, + lambda state: (state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))) + add_location_to_region(world, player, active_locations, LocationName.forest_fortress_region, LocationName.forest_fortress_life_block_6, + lambda state: (state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))) + add_location_to_region(world, player, active_locations, LocationName.forest_fortress_region, LocationName.forest_fortress_life_block_7, + lambda state: (state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))) + add_location_to_region(world, player, active_locations, LocationName.forest_fortress_region, LocationName.forest_fortress_life_block_8, + lambda state: (state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))) + add_location_to_region(world, player, active_locations, LocationName.forest_fortress_region, LocationName.forest_fortress_life_block_9, + lambda state: (state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))) + add_location_to_region(world, player, active_locations, LocationName.forest_castle_region, LocationName.forest_castle_green_block_1, + lambda state: state.has(ItemName.green_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.chocolate_ghost_house_region, LocationName.chocolate_ghost_house_powerup_block_1) + add_location_to_region(world, player, active_locations, LocationName.chocolate_ghost_house_region, LocationName.chocolate_ghost_house_powerup_block_2) + add_location_to_region(world, player, active_locations, LocationName.chocolate_ghost_house_region, LocationName.chocolate_ghost_house_life_block_1) + add_location_to_region(world, player, active_locations, LocationName.chocolate_island_1_region, LocationName.chocolate_island_1_flying_block_1, + lambda state: state.has(ItemName.p_switch, player)) + add_location_to_region(world, player, active_locations, LocationName.chocolate_island_1_region, LocationName.chocolate_island_1_flying_block_2, + lambda state: state.has(ItemName.p_switch, player)) + add_location_to_region(world, player, active_locations, LocationName.chocolate_island_1_region, LocationName.chocolate_island_1_yoshi_block_1, + lambda state: state.has(ItemName.p_switch, player)) + add_location_to_region(world, player, active_locations, LocationName.chocolate_island_1_region, LocationName.chocolate_island_1_green_block_1, + lambda state:( ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.blue_switch_palace, player))) or ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.progressive_powerup, player, 3))))) + add_location_to_region(world, player, active_locations, LocationName.chocolate_island_1_region, LocationName.chocolate_island_1_life_block_1, + lambda state: state.has(ItemName.p_switch, player)) + add_location_to_region(world, player, active_locations, LocationName.chocolate_island_3_region, LocationName.chocolate_island_3_powerup_block_1) + add_location_to_region(world, player, active_locations, LocationName.chocolate_island_3_region, LocationName.chocolate_island_3_powerup_block_2) + add_location_to_region(world, player, active_locations, LocationName.chocolate_island_3_region, LocationName.chocolate_island_3_powerup_block_3) + add_location_to_region(world, player, active_locations, LocationName.chocolate_island_3_region, LocationName.chocolate_island_3_green_block_1, + lambda state: state.has(ItemName.green_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.chocolate_island_3_region, LocationName.chocolate_island_3_bonus_block_1) + add_location_to_region(world, player, active_locations, LocationName.chocolate_island_3_region, LocationName.chocolate_island_3_vine_block_1) + add_location_to_region(world, player, active_locations, LocationName.chocolate_island_3_region, LocationName.chocolate_island_3_life_block_1, + lambda state: (state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))) + add_location_to_region(world, player, active_locations, LocationName.chocolate_island_3_region, LocationName.chocolate_island_3_life_block_2, + lambda state: (state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))) + add_location_to_region(world, player, active_locations, LocationName.chocolate_island_3_region, LocationName.chocolate_island_3_life_block_3, + lambda state: (state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))) + add_location_to_region(world, player, active_locations, LocationName.chocolate_island_2_region, LocationName.chocolate_island_2_multi_coin_block_1) + add_location_to_region(world, player, active_locations, LocationName.chocolate_island_2_region, LocationName.chocolate_island_2_invis_coin_block_1) + add_location_to_region(world, player, active_locations, LocationName.chocolate_island_2_region, LocationName.chocolate_island_2_yoshi_block_1) + add_location_to_region(world, player, active_locations, LocationName.chocolate_island_2_region, LocationName.chocolate_island_2_coin_block_1) + add_location_to_region(world, player, active_locations, LocationName.chocolate_island_2_region, LocationName.chocolate_island_2_coin_block_2) + add_location_to_region(world, player, active_locations, LocationName.chocolate_island_2_region, LocationName.chocolate_island_2_multi_coin_block_2) + add_location_to_region(world, player, active_locations, LocationName.chocolate_island_2_region, LocationName.chocolate_island_2_powerup_block_1) + add_location_to_region(world, player, active_locations, LocationName.chocolate_island_2_region, LocationName.chocolate_island_2_blue_pow_block_1) + add_location_to_region(world, player, active_locations, LocationName.chocolate_island_2_region, LocationName.chocolate_island_2_yellow_block_1, + lambda state: state.has(ItemName.yellow_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.chocolate_island_2_region, LocationName.chocolate_island_2_yellow_block_2, + lambda state: state.has(ItemName.yellow_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.chocolate_island_2_region, LocationName.chocolate_island_2_green_block_1, + lambda state: state.has(ItemName.green_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.chocolate_island_2_region, LocationName.chocolate_island_2_green_block_2, + lambda state: state.has(ItemName.green_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.chocolate_island_2_region, LocationName.chocolate_island_2_green_block_3, + lambda state: state.has(ItemName.green_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.chocolate_island_2_region, LocationName.chocolate_island_2_green_block_4, + lambda state: state.has(ItemName.green_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.chocolate_island_2_region, LocationName.chocolate_island_2_green_block_5, + lambda state: state.has(ItemName.green_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.chocolate_island_2_region, LocationName.chocolate_island_2_green_block_6, + lambda state: state.has(ItemName.green_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_castle_region, LocationName.yoshis_island_castle_coin_block_1, + lambda state: state.has(ItemName.mario_climb, player)) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_castle_region, LocationName.yoshis_island_castle_coin_block_2, + lambda state: state.has(ItemName.mario_climb, player)) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_castle_region, LocationName.yoshis_island_castle_powerup_block_1, + lambda state: state.has(ItemName.mario_climb, player)) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_castle_region, LocationName.yoshis_island_castle_coin_block_3, + lambda state: state.has(ItemName.mario_climb, player)) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_castle_region, LocationName.yoshis_island_castle_coin_block_4, + lambda state: state.has(ItemName.mario_climb, player)) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_castle_region, LocationName.yoshis_island_castle_flying_block_1, + lambda state: state.has(ItemName.mario_climb, player)) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_4_region, LocationName.yoshis_island_4_yellow_block_1, + lambda state: state.has(ItemName.yellow_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_4_region, LocationName.yoshis_island_4_powerup_block_1) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_4_region, LocationName.yoshis_island_4_multi_coin_block_1) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_4_region, LocationName.yoshis_island_4_star_block_1) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_1, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_2, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_3, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_4, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_5, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_6, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_7, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_8, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_9, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_10, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_11, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_12, + lambda state: state.has(ItemName.yellow_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_13, + lambda state: state.has(ItemName.yellow_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_14, + lambda state:( ((state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.mario_carry, player))) or ((state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player))) or ((state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_15, + lambda state:( ((state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.mario_carry, player))) or ((state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player))) or ((state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_16, + lambda state:( ((state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.mario_carry, player))) or ((state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player))) or ((state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_17, + lambda state:( ((state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.mario_carry, player))) or ((state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player))) or ((state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_18, + lambda state:( ((state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.mario_carry, player))) or ((state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player))) or ((state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_19, + lambda state:( ((state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.mario_carry, player))) or ((state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player))) or ((state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_20, + lambda state:( ((state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.mario_carry, player))) or ((state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player))) or ((state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_21, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_22, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_23, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_24, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_25, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_26, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_27, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_28, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_29, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_coin_block_1) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yoshi_block_1) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_30, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_31, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_32, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_33, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_34, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_35, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_36, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_37, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_38, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_39, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_40, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_41, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_42, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_43, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_44, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_45, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_46, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_47, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_48, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_49, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_50, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_51, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_coin_block_2) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_powerup_block_1) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_52, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_53, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_54, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_55, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_56, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_57, + lambda state: state.has(ItemName.yellow_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_58, + lambda state: state.has(ItemName.yellow_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_59, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_60, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_61, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_62, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_63, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_64, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_65, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_66, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_67, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_68, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_69, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_70, + lambda state: state.has(ItemName.yellow_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_71, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_72, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_73, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_74, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_75, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_76, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_77, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_78, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_79, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_80, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_81, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_82, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_83, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_84, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.mario_carry, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_85, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_yellow_block_86, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_3_region, LocationName.yoshis_island_3_bonus_block_1) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_1_region, LocationName.yoshis_island_1_flying_block_1) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_1_region, LocationName.yoshis_island_1_yellow_block_1, + lambda state: state.has(ItemName.yellow_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_1_region, LocationName.yoshis_island_1_life_block_1) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_1_region, LocationName.yoshis_island_1_powerup_block_1) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_2_region, LocationName.yoshis_island_2_flying_block_1, + lambda state:( (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)) or ((state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_2_region, LocationName.yoshis_island_2_flying_block_2, + lambda state:( (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)) or ((state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_2_region, LocationName.yoshis_island_2_flying_block_3, + lambda state:( (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)) or ((state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_2_region, LocationName.yoshis_island_2_flying_block_4, + lambda state:( (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)) or ((state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_2_region, LocationName.yoshis_island_2_flying_block_5, + lambda state:( (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)) or ((state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_2_region, LocationName.yoshis_island_2_flying_block_6, + lambda state:( (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)) or ((state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))))) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_2_region, LocationName.yoshis_island_2_coin_block_1) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_2_region, LocationName.yoshis_island_2_yellow_block_1, + lambda state: state.has(ItemName.yellow_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_2_region, LocationName.yoshis_island_2_coin_block_2) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_2_region, LocationName.yoshis_island_2_coin_block_3) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_2_region, LocationName.yoshis_island_2_yoshi_block_1) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_2_region, LocationName.yoshis_island_2_coin_block_4) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_2_region, LocationName.yoshis_island_2_yoshi_block_2) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_2_region, LocationName.yoshis_island_2_coin_block_5) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_2_region, LocationName.yoshis_island_2_vine_block_1) + add_location_to_region(world, player, active_locations, LocationName.yoshis_island_2_region, LocationName.yoshis_island_2_yellow_block_2) + add_location_to_region(world, player, active_locations, LocationName.vanilla_ghost_house_region, LocationName.vanilla_ghost_house_powerup_block_1, + lambda state: state.has(ItemName.p_switch, player)) + add_location_to_region(world, player, active_locations, LocationName.vanilla_ghost_house_region, LocationName.vanilla_ghost_house_vine_block_1, + lambda state: state.has(ItemName.p_switch, player)) + add_location_to_region(world, player, active_locations, LocationName.vanilla_ghost_house_region, LocationName.vanilla_ghost_house_powerup_block_2, + lambda state: state.has(ItemName.p_switch, player)) + add_location_to_region(world, player, active_locations, LocationName.vanilla_ghost_house_region, LocationName.vanilla_ghost_house_multi_coin_block_1, + lambda state: state.has(ItemName.p_switch, player)) + add_location_to_region(world, player, active_locations, LocationName.vanilla_ghost_house_region, LocationName.vanilla_ghost_house_blue_pow_block_1, + lambda state: state.has(ItemName.p_switch, player)) + add_location_to_region(world, player, active_locations, LocationName.vanilla_secret_1_region, LocationName.vanilla_secret_1_coin_block_1, + lambda state: state.has(ItemName.mario_climb, player)) + add_location_to_region(world, player, active_locations, LocationName.vanilla_secret_1_region, LocationName.vanilla_secret_1_powerup_block_1, + lambda state: state.has(ItemName.mario_climb, player)) + add_location_to_region(world, player, active_locations, LocationName.vanilla_secret_1_region, LocationName.vanilla_secret_1_multi_coin_block_1, + lambda state: state.has(ItemName.mario_climb, player)) + add_location_to_region(world, player, active_locations, LocationName.vanilla_secret_1_region, LocationName.vanilla_secret_1_vine_block_1, + lambda state: state.has(ItemName.mario_climb, player)) + add_location_to_region(world, player, active_locations, LocationName.vanilla_secret_1_region, LocationName.vanilla_secret_1_vine_block_2, + lambda state: state.has(ItemName.mario_climb, player)) + add_location_to_region(world, player, active_locations, LocationName.vanilla_secret_1_region, LocationName.vanilla_secret_1_coin_block_2, + lambda state: state.has(ItemName.mario_climb, player)) + add_location_to_region(world, player, active_locations, LocationName.vanilla_secret_1_region, LocationName.vanilla_secret_1_coin_block_3, + lambda state: state.has(ItemName.mario_climb, player)) + add_location_to_region(world, player, active_locations, LocationName.vanilla_secret_1_region, LocationName.vanilla_secret_1_powerup_block_2, + lambda state: state.has(ItemName.mario_climb, player)) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_3_region, LocationName.vanilla_dome_3_coin_block_1) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_3_region, LocationName.vanilla_dome_3_flying_block_1) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_3_region, LocationName.vanilla_dome_3_flying_block_2) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_3_region, LocationName.vanilla_dome_3_powerup_block_1) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_3_region, LocationName.vanilla_dome_3_flying_block_3) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_3_region, LocationName.vanilla_dome_3_invis_coin_block_1) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_3_region, LocationName.vanilla_dome_3_powerup_block_2) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_3_region, LocationName.vanilla_dome_3_multi_coin_block_1) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_3_region, LocationName.vanilla_dome_3_powerup_block_3) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_3_region, LocationName.vanilla_dome_3_yoshi_block_1, + lambda state:( (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_3_region, LocationName.vanilla_dome_3_powerup_block_4) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_3_region, LocationName.vanilla_dome_3_pswitch_coin_block_1, + lambda state: (state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3) and state.has(ItemName.p_switch, player))) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_3_region, LocationName.vanilla_dome_3_pswitch_coin_block_2, + lambda state: (state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3) and state.has(ItemName.p_switch, player))) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_3_region, LocationName.vanilla_dome_3_pswitch_coin_block_3, + lambda state: (state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3) and state.has(ItemName.p_switch, player))) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_3_region, LocationName.vanilla_dome_3_pswitch_coin_block_4, + lambda state: (state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3) and state.has(ItemName.p_switch, player))) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_3_region, LocationName.vanilla_dome_3_pswitch_coin_block_5, + lambda state: (state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3) and state.has(ItemName.p_switch, player))) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_3_region, LocationName.vanilla_dome_3_pswitch_coin_block_6, + lambda state: (state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3) and state.has(ItemName.p_switch, player))) + add_location_to_region(world, player, active_locations, LocationName.donut_secret_2_region, LocationName.donut_secret_2_directional_coin_block_1) + add_location_to_region(world, player, active_locations, LocationName.donut_secret_2_region, LocationName.donut_secret_2_vine_block_1) + add_location_to_region(world, player, active_locations, LocationName.donut_secret_2_region, LocationName.donut_secret_2_star_block_1, + lambda state:( (state.has(ItemName.mario_climb, player)) or (state.has(ItemName.yoshi_activate, player)) or ((state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))))) + add_location_to_region(world, player, active_locations, LocationName.donut_secret_2_region, LocationName.donut_secret_2_powerup_block_1) + add_location_to_region(world, player, active_locations, LocationName.donut_secret_2_region, LocationName.donut_secret_2_star_block_2) + add_location_to_region(world, player, active_locations, LocationName.valley_of_bowser_4_region, LocationName.valley_of_bowser_4_yellow_block_1, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.mario_climb, player))) + add_location_to_region(world, player, active_locations, LocationName.valley_of_bowser_4_region, LocationName.valley_of_bowser_4_powerup_block_1, + lambda state: state.has(ItemName.mario_climb, player)) + add_location_to_region(world, player, active_locations, LocationName.valley_of_bowser_4_region, LocationName.valley_of_bowser_4_vine_block_1, + lambda state: state.has(ItemName.mario_climb, player)) + add_location_to_region(world, player, active_locations, LocationName.valley_of_bowser_4_region, LocationName.valley_of_bowser_4_yoshi_block_1, + lambda state: state.has(ItemName.mario_climb, player)) + add_location_to_region(world, player, active_locations, LocationName.valley_of_bowser_4_region, LocationName.valley_of_bowser_4_life_block_1, + lambda state:( ((state.has(ItemName.progressive_powerup, player, 1) and state.has(ItemName.mario_spin_jump, player) and state.has(ItemName.mario_climb, player))) or ((state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_climb, player))))) + add_location_to_region(world, player, active_locations, LocationName.valley_of_bowser_4_region, LocationName.valley_of_bowser_4_powerup_block_2, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.mario_climb, player))) + add_location_to_region(world, player, active_locations, LocationName.valley_castle_region, LocationName.valley_castle_yellow_block_1, + lambda state: state.has(ItemName.yellow_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.valley_castle_region, LocationName.valley_castle_yellow_block_2, + lambda state: state.has(ItemName.yellow_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.valley_castle_region, LocationName.valley_castle_green_block_1, + lambda state: state.has(ItemName.green_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.valley_fortress_region, LocationName.valley_fortress_green_block_1, + lambda state: state.has(ItemName.green_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.valley_fortress_region, LocationName.valley_fortress_yellow_block_1, + lambda state: state.has(ItemName.yellow_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.valley_of_bowser_3_region, LocationName.valley_of_bowser_3_powerup_block_1) + add_location_to_region(world, player, active_locations, LocationName.valley_of_bowser_3_region, LocationName.valley_of_bowser_3_powerup_block_2) + add_location_to_region(world, player, active_locations, LocationName.valley_ghost_house_region, LocationName.valley_ghost_house_pswitch_coin_block_1, + lambda state: state.has(ItemName.p_switch, player)) + add_location_to_region(world, player, active_locations, LocationName.valley_ghost_house_region, LocationName.valley_ghost_house_multi_coin_block_1, + lambda state: state.has(ItemName.p_switch, player)) + add_location_to_region(world, player, active_locations, LocationName.valley_ghost_house_region, LocationName.valley_ghost_house_powerup_block_1, + lambda state: state.has(ItemName.p_switch, player)) + add_location_to_region(world, player, active_locations, LocationName.valley_ghost_house_region, LocationName.valley_ghost_house_directional_coin_block_1, + lambda state: state.has(ItemName.p_switch, player)) + add_location_to_region(world, player, active_locations, LocationName.valley_of_bowser_2_region, LocationName.valley_of_bowser_2_powerup_block_1) + add_location_to_region(world, player, active_locations, LocationName.valley_of_bowser_2_region, LocationName.valley_of_bowser_2_yellow_block_1, + lambda state: state.has(ItemName.yellow_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.valley_of_bowser_2_region, LocationName.valley_of_bowser_2_powerup_block_2) + add_location_to_region(world, player, active_locations, LocationName.valley_of_bowser_2_region, LocationName.valley_of_bowser_2_wings_block_1) + add_location_to_region(world, player, active_locations, LocationName.valley_of_bowser_1_region, LocationName.valley_of_bowser_1_green_block_1, + lambda state: state.has(ItemName.green_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.valley_of_bowser_1_region, LocationName.valley_of_bowser_1_invis_coin_block_1) + add_location_to_region(world, player, active_locations, LocationName.valley_of_bowser_1_region, LocationName.valley_of_bowser_1_invis_coin_block_2) + add_location_to_region(world, player, active_locations, LocationName.valley_of_bowser_1_region, LocationName.valley_of_bowser_1_invis_coin_block_3) + add_location_to_region(world, player, active_locations, LocationName.valley_of_bowser_1_region, LocationName.valley_of_bowser_1_yellow_block_1, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.progressive_powerup, player, 3))) + add_location_to_region(world, player, active_locations, LocationName.valley_of_bowser_1_region, LocationName.valley_of_bowser_1_yellow_block_2, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.progressive_powerup, player, 3))) + add_location_to_region(world, player, active_locations, LocationName.valley_of_bowser_1_region, LocationName.valley_of_bowser_1_yellow_block_3, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.progressive_powerup, player, 3))) + add_location_to_region(world, player, active_locations, LocationName.valley_of_bowser_1_region, LocationName.valley_of_bowser_1_yellow_block_4, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.progressive_powerup, player, 3))) + add_location_to_region(world, player, active_locations, LocationName.valley_of_bowser_1_region, LocationName.valley_of_bowser_1_vine_block_1) + add_location_to_region(world, player, active_locations, LocationName.chocolate_secret_region, LocationName.chocolate_secret_powerup_block_1) + add_location_to_region(world, player, active_locations, LocationName.chocolate_secret_region, LocationName.chocolate_secret_powerup_block_2) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_2_region, LocationName.vanilla_dome_2_coin_block_1, + lambda state:( ((state.has(ItemName.mario_swim, player) and state.has(ItemName.mario_climb, player))) or ((state.has(ItemName.mario_swim, player) and state.has(ItemName.yoshi_activate, player))))) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_2_region, LocationName.vanilla_dome_2_powerup_block_1, + lambda state:( ((state.has(ItemName.mario_swim, player) and state.has(ItemName.mario_climb, player))) or ((state.has(ItemName.mario_swim, player) and state.has(ItemName.yoshi_activate, player))))) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_2_region, LocationName.vanilla_dome_2_coin_block_2, + lambda state:( ((state.has(ItemName.mario_swim, player) and state.has(ItemName.mario_climb, player))) or ((state.has(ItemName.mario_swim, player) and state.has(ItemName.yoshi_activate, player))))) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_2_region, LocationName.vanilla_dome_2_coin_block_3, + lambda state:( ((state.has(ItemName.mario_swim, player) and state.has(ItemName.mario_climb, player))) or ((state.has(ItemName.mario_swim, player) and state.has(ItemName.yoshi_activate, player))))) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_2_region, LocationName.vanilla_dome_2_vine_block_1, + lambda state:( ((state.has(ItemName.mario_swim, player) and state.has(ItemName.mario_climb, player))) or ((state.has(ItemName.mario_swim, player) and state.has(ItemName.yoshi_activate, player))))) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_2_region, LocationName.vanilla_dome_2_invis_life_block_1, + lambda state:( ((state.has(ItemName.mario_swim, player) and state.has(ItemName.mario_climb, player))) or ((state.has(ItemName.mario_swim, player) and state.has(ItemName.yoshi_activate, player))))) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_2_region, LocationName.vanilla_dome_2_coin_block_4, + lambda state:( ((state.has(ItemName.mario_swim, player) and state.has(ItemName.mario_climb, player))) or ((state.has(ItemName.mario_swim, player) and state.has(ItemName.yoshi_activate, player))))) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_2_region, LocationName.vanilla_dome_2_coin_block_5, + lambda state:( ((state.has(ItemName.mario_swim, player) and state.has(ItemName.mario_climb, player))) or ((state.has(ItemName.mario_swim, player) and state.has(ItemName.yoshi_activate, player))))) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_2_region, LocationName.vanilla_dome_2_powerup_block_2, + lambda state:( ((state.has(ItemName.mario_swim, player) and state.has(ItemName.mario_climb, player))) or ((state.has(ItemName.mario_swim, player) and state.has(ItemName.yoshi_activate, player))))) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_2_region, LocationName.vanilla_dome_2_powerup_block_3, + lambda state:( ((state.has(ItemName.mario_swim, player) and state.has(ItemName.mario_climb, player))) or ((state.has(ItemName.mario_swim, player) and state.has(ItemName.yoshi_activate, player))))) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_2_region, LocationName.vanilla_dome_2_powerup_block_4, + lambda state:( ((state.has(ItemName.mario_swim, player) and state.has(ItemName.mario_climb, player))) or ((state.has(ItemName.mario_swim, player) and state.has(ItemName.yoshi_activate, player))))) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_2_region, LocationName.vanilla_dome_2_multi_coin_block_1, + lambda state:( ((state.has(ItemName.mario_swim, player) and state.has(ItemName.mario_climb, player))) or ((state.has(ItemName.mario_swim, player) and state.has(ItemName.yoshi_activate, player))))) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_2_region, LocationName.vanilla_dome_2_multi_coin_block_2, + lambda state:( ((state.has(ItemName.mario_swim, player) and state.has(ItemName.mario_climb, player))) or ((state.has(ItemName.mario_swim, player) and state.has(ItemName.yoshi_activate, player))))) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_4_region, LocationName.vanilla_dome_4_powerup_block_1) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_4_region, LocationName.vanilla_dome_4_powerup_block_2) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_4_region, LocationName.vanilla_dome_4_coin_block_1) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_4_region, LocationName.vanilla_dome_4_coin_block_2) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_4_region, LocationName.vanilla_dome_4_coin_block_3) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_4_region, LocationName.vanilla_dome_4_life_block_1) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_4_region, LocationName.vanilla_dome_4_coin_block_4) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_4_region, LocationName.vanilla_dome_4_coin_block_5) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_4_region, LocationName.vanilla_dome_4_coin_block_6) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_4_region, LocationName.vanilla_dome_4_coin_block_7) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_4_region, LocationName.vanilla_dome_4_coin_block_8, + lambda state:( (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.progressive_powerup, player, 3)))) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_1_region, LocationName.vanilla_dome_1_flying_block_1, + lambda state:( ((state.has(ItemName.mario_run, player) and state.has(ItemName.super_star_active, player))) or ((state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 1))))) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_1_region, LocationName.vanilla_dome_1_powerup_block_1, + lambda state:( ((state.has(ItemName.mario_climb, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.yoshi_activate, player))) or ((state.has(ItemName.red_switch_palace, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.yoshi_activate, player))) or ((state.has(ItemName.red_switch_palace, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.mario_climb, player))) or ((state.has(ItemName.mario_run, player) and state.has(ItemName.super_star_active, player))) or ((state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 1))))) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_1_region, LocationName.vanilla_dome_1_powerup_block_2, + lambda state:( ((state.has(ItemName.mario_climb, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.yoshi_activate, player))) or ((state.has(ItemName.red_switch_palace, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.yoshi_activate, player))) or ((state.has(ItemName.red_switch_palace, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.mario_climb, player))) or ((state.has(ItemName.mario_run, player) and state.has(ItemName.super_star_active, player))) or ((state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 1))))) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_1_region, LocationName.vanilla_dome_1_coin_block_1, + lambda state:( ((state.has(ItemName.mario_climb, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.yoshi_activate, player))) or ((state.has(ItemName.red_switch_palace, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.yoshi_activate, player))) or ((state.has(ItemName.red_switch_palace, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.mario_climb, player))) or ((state.has(ItemName.mario_run, player) and state.has(ItemName.super_star_active, player))) or ((state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 1))))) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_1_region, LocationName.vanilla_dome_1_life_block_1, + lambda state:( ((state.has(ItemName.mario_climb, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.yoshi_activate, player))) or ((state.has(ItemName.red_switch_palace, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.yoshi_activate, player))) or ((state.has(ItemName.red_switch_palace, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.mario_climb, player))) or ((state.has(ItemName.mario_run, player) and state.has(ItemName.super_star_active, player))) or ((state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 1))))) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_1_region, LocationName.vanilla_dome_1_powerup_block_3, + lambda state:( ((state.has(ItemName.mario_climb, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.yoshi_activate, player))) or ((state.has(ItemName.red_switch_palace, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.yoshi_activate, player))) or ((state.has(ItemName.red_switch_palace, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.mario_climb, player))) or ((state.has(ItemName.mario_run, player) and state.has(ItemName.super_star_active, player))) or ((state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 1))))) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_1_region, LocationName.vanilla_dome_1_vine_block_1, + lambda state:( ((state.has(ItemName.mario_climb, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.yoshi_activate, player))) or ((state.has(ItemName.red_switch_palace, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.yoshi_activate, player))) or ((state.has(ItemName.red_switch_palace, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.mario_climb, player))) or ((state.has(ItemName.mario_run, player) and state.has(ItemName.super_star_active, player))) or ((state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 1))))) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_1_region, LocationName.vanilla_dome_1_star_block_1, + lambda state:( ((state.has(ItemName.mario_run, player) and state.has(ItemName.super_star_active, player))) or ((state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 1))))) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_1_region, LocationName.vanilla_dome_1_powerup_block_4, + lambda state:( ((state.has(ItemName.mario_run, player) and state.has(ItemName.super_star_active, player))) or ((state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 1))))) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_1_region, LocationName.vanilla_dome_1_coin_block_2, + lambda state:( ((state.has(ItemName.mario_run, player) and state.has(ItemName.super_star_active, player))) or ((state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 1))))) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_castle_region, LocationName.vanilla_dome_castle_life_block_1, + lambda state: state.has(ItemName.mario_carry, player)) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_castle_region, LocationName.vanilla_dome_castle_life_block_2, + lambda state: state.has(ItemName.mario_carry, player)) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_castle_region, LocationName.vanilla_dome_castle_powerup_block_1) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_castle_region, LocationName.vanilla_dome_castle_life_block_3, + lambda state: state.has(ItemName.p_switch, player)) + add_location_to_region(world, player, active_locations, LocationName.vanilla_dome_castle_region, LocationName.vanilla_dome_castle_green_block_1, + lambda state: state.has(ItemName.green_switch_palace, player)) + add_location_to_region(world, player, active_locations, LocationName.forest_ghost_house_region, LocationName.forest_ghost_house_coin_block_1, + lambda state: state.has(ItemName.p_switch, player)) + add_location_to_region(world, player, active_locations, LocationName.forest_ghost_house_region, LocationName.forest_ghost_house_powerup_block_1, + lambda state: state.has(ItemName.p_switch, player)) + add_location_to_region(world, player, active_locations, LocationName.forest_ghost_house_region, LocationName.forest_ghost_house_flying_block_1, + lambda state: state.has(ItemName.p_switch, player)) + add_location_to_region(world, player, active_locations, LocationName.forest_ghost_house_region, LocationName.forest_ghost_house_powerup_block_2, + lambda state: state.has(ItemName.p_switch, player)) + add_location_to_region(world, player, active_locations, LocationName.forest_ghost_house_region, LocationName.forest_ghost_house_life_block_1, + lambda state: state.has(ItemName.p_switch, player)) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_1_region, LocationName.forest_of_illusion_1_powerup_block_1) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_1_region, LocationName.forest_of_illusion_1_yoshi_block_1) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_1_region, LocationName.forest_of_illusion_1_powerup_block_2) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_1_region, LocationName.forest_of_illusion_1_key_block_1, + lambda state: state.has(ItemName.p_balloon, player)) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_1_region, LocationName.forest_of_illusion_1_life_block_1) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_4_region, LocationName.forest_of_illusion_4_multi_coin_block_1) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_4_region, LocationName.forest_of_illusion_4_coin_block_1) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_4_region, LocationName.forest_of_illusion_4_coin_block_2) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_4_region, LocationName.forest_of_illusion_4_coin_block_3) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_4_region, LocationName.forest_of_illusion_4_coin_block_4) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_4_region, LocationName.forest_of_illusion_4_powerup_block_1) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_4_region, LocationName.forest_of_illusion_4_coin_block_5) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_4_region, LocationName.forest_of_illusion_4_coin_block_6) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_4_region, LocationName.forest_of_illusion_4_coin_block_7) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_4_region, LocationName.forest_of_illusion_4_powerup_block_2) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_4_region, LocationName.forest_of_illusion_4_coin_block_8) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_4_region, LocationName.forest_of_illusion_4_coin_block_9) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_4_region, LocationName.forest_of_illusion_4_coin_block_10) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_2_region, LocationName.forest_of_illusion_2_green_block_1, + lambda state: (state.has(ItemName.green_switch_palace, player) and state.has(ItemName.mario_carry, player))) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_2_region, LocationName.forest_of_illusion_2_powerup_block_1, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_2_region, LocationName.forest_of_illusion_2_invis_coin_block_1, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_2_region, LocationName.forest_of_illusion_2_invis_coin_block_2, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_2_region, LocationName.forest_of_illusion_2_invis_life_block_1, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_2_region, LocationName.forest_of_illusion_2_invis_coin_block_3, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_2_region, LocationName.forest_of_illusion_2_yellow_block_1, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.forest_secret_region, LocationName.forest_secret_powerup_block_1) + add_location_to_region(world, player, active_locations, LocationName.forest_secret_region, LocationName.forest_secret_powerup_block_2) + add_location_to_region(world, player, active_locations, LocationName.forest_secret_region, LocationName.forest_secret_life_block_1, + lambda state:( (state.has(ItemName.blue_switch_palace, player)) or (state.has(ItemName.mario_carry, player)))) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_3_region, LocationName.forest_of_illusion_3_yoshi_block_1, + lambda state:( (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_3_region, LocationName.forest_of_illusion_3_coin_block_1, + lambda state:( (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_3_region, LocationName.forest_of_illusion_3_multi_coin_block_1, + lambda state:( (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_3_region, LocationName.forest_of_illusion_3_coin_block_2, + lambda state:( (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_3_region, LocationName.forest_of_illusion_3_multi_coin_block_2, + lambda state:( (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_3_region, LocationName.forest_of_illusion_3_coin_block_3, + lambda state:( (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_3_region, LocationName.forest_of_illusion_3_coin_block_4, + lambda state:( (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_3_region, LocationName.forest_of_illusion_3_coin_block_5, + lambda state:( (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_3_region, LocationName.forest_of_illusion_3_coin_block_6, + lambda state:( (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_3_region, LocationName.forest_of_illusion_3_coin_block_7, + lambda state:( (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_3_region, LocationName.forest_of_illusion_3_coin_block_8, + lambda state:( (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_3_region, LocationName.forest_of_illusion_3_coin_block_9, + lambda state:( (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_3_region, LocationName.forest_of_illusion_3_coin_block_10, + lambda state:( (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_3_region, LocationName.forest_of_illusion_3_coin_block_11, + lambda state:( (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_3_region, LocationName.forest_of_illusion_3_coin_block_12, + lambda state:( (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_3_region, LocationName.forest_of_illusion_3_coin_block_13, + lambda state:( (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_3_region, LocationName.forest_of_illusion_3_coin_block_14, + lambda state:( (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_3_region, LocationName.forest_of_illusion_3_coin_block_15, + lambda state:( (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_3_region, LocationName.forest_of_illusion_3_coin_block_16, + lambda state:( (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_3_region, LocationName.forest_of_illusion_3_coin_block_17, + lambda state:( (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_3_region, LocationName.forest_of_illusion_3_coin_block_18, + lambda state:( (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_3_region, LocationName.forest_of_illusion_3_coin_block_19, + lambda state:( (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_3_region, LocationName.forest_of_illusion_3_coin_block_20, + lambda state:( (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_3_region, LocationName.forest_of_illusion_3_coin_block_21, + lambda state:( (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_3_region, LocationName.forest_of_illusion_3_coin_block_22, + lambda state:( (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_3_region, LocationName.forest_of_illusion_3_coin_block_23, + lambda state:( (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.forest_of_illusion_3_region, LocationName.forest_of_illusion_3_coin_block_24, + lambda state:( (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_8_region, LocationName.special_zone_8_yoshi_block_1, + lambda state:( ((state.has(ItemName.progressive_powerup, player, 1) and state.has(ItemName.mario_spin_jump, player))) or (state.has(ItemName.progressive_powerup, player, 3)) or (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_8_region, LocationName.special_zone_8_coin_block_1, + lambda state:( ((state.has(ItemName.progressive_powerup, player, 1) and state.has(ItemName.mario_spin_jump, player))) or (state.has(ItemName.progressive_powerup, player, 3)) or (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_8_region, LocationName.special_zone_8_coin_block_2, + lambda state:( ((state.has(ItemName.progressive_powerup, player, 1) and state.has(ItemName.mario_spin_jump, player))) or (state.has(ItemName.progressive_powerup, player, 3)) or (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_8_region, LocationName.special_zone_8_coin_block_3, + lambda state:( ((state.has(ItemName.progressive_powerup, player, 1) and state.has(ItemName.mario_spin_jump, player))) or (state.has(ItemName.progressive_powerup, player, 3)) or (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_8_region, LocationName.special_zone_8_coin_block_4, + lambda state:( ((state.has(ItemName.progressive_powerup, player, 1) and state.has(ItemName.mario_spin_jump, player))) or (state.has(ItemName.progressive_powerup, player, 3)) or (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_8_region, LocationName.special_zone_8_coin_block_5, + lambda state:( ((state.has(ItemName.progressive_powerup, player, 1) and state.has(ItemName.mario_spin_jump, player))) or (state.has(ItemName.progressive_powerup, player, 3)) or (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_8_region, LocationName.special_zone_8_blue_pow_block_1, + lambda state:( ((state.has(ItemName.progressive_powerup, player, 1) and state.has(ItemName.mario_spin_jump, player))) or (state.has(ItemName.progressive_powerup, player, 3)) or (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_8_region, LocationName.special_zone_8_powerup_block_1, + lambda state:( ((state.has(ItemName.progressive_powerup, player, 1) and state.has(ItemName.mario_spin_jump, player))) or (state.has(ItemName.progressive_powerup, player, 3)) or (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_8_region, LocationName.special_zone_8_star_block_1, + lambda state:( ((state.has(ItemName.progressive_powerup, player, 1) and state.has(ItemName.mario_spin_jump, player))) or (state.has(ItemName.progressive_powerup, player, 3)) or (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_8_region, LocationName.special_zone_8_coin_block_6, + lambda state:( ((state.has(ItemName.progressive_powerup, player, 1) and state.has(ItemName.mario_spin_jump, player))) or (state.has(ItemName.progressive_powerup, player, 3)) or (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_8_region, LocationName.special_zone_8_coin_block_7, + lambda state:( ((state.has(ItemName.progressive_powerup, player, 1) and state.has(ItemName.mario_spin_jump, player))) or (state.has(ItemName.progressive_powerup, player, 3)) or (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_8_region, LocationName.special_zone_8_coin_block_8, + lambda state:( ((state.has(ItemName.progressive_powerup, player, 1) and state.has(ItemName.mario_spin_jump, player))) or (state.has(ItemName.progressive_powerup, player, 3)) or (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_8_region, LocationName.special_zone_8_coin_block_9, + lambda state:( ((state.has(ItemName.progressive_powerup, player, 1) and state.has(ItemName.mario_spin_jump, player))) or (state.has(ItemName.progressive_powerup, player, 3)) or (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_8_region, LocationName.special_zone_8_coin_block_10, + lambda state:( ((state.has(ItemName.progressive_powerup, player, 1) and state.has(ItemName.mario_spin_jump, player))) or (state.has(ItemName.progressive_powerup, player, 3)) or (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_8_region, LocationName.special_zone_8_coin_block_11, + lambda state:( ((state.has(ItemName.progressive_powerup, player, 1) and state.has(ItemName.mario_spin_jump, player))) or (state.has(ItemName.progressive_powerup, player, 3)) or (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_8_region, LocationName.special_zone_8_coin_block_12, + lambda state:( ((state.has(ItemName.progressive_powerup, player, 1) and state.has(ItemName.mario_spin_jump, player))) or (state.has(ItemName.progressive_powerup, player, 3)) or (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_8_region, LocationName.special_zone_8_coin_block_13, + lambda state:( ((state.has(ItemName.progressive_powerup, player, 1) and state.has(ItemName.mario_spin_jump, player))) or (state.has(ItemName.progressive_powerup, player, 3)) or (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_8_region, LocationName.special_zone_8_coin_block_14, + lambda state:( ((state.has(ItemName.progressive_powerup, player, 1) and state.has(ItemName.mario_spin_jump, player))) or (state.has(ItemName.progressive_powerup, player, 3)) or (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_8_region, LocationName.special_zone_8_coin_block_15, + lambda state:( ((state.has(ItemName.progressive_powerup, player, 1) and state.has(ItemName.mario_spin_jump, player))) or (state.has(ItemName.progressive_powerup, player, 3)) or (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_8_region, LocationName.special_zone_8_coin_block_16, + lambda state:( ((state.has(ItemName.progressive_powerup, player, 1) and state.has(ItemName.mario_spin_jump, player))) or (state.has(ItemName.progressive_powerup, player, 3)) or (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_8_region, LocationName.special_zone_8_coin_block_17, + lambda state:( ((state.has(ItemName.progressive_powerup, player, 1) and state.has(ItemName.mario_spin_jump, player))) or (state.has(ItemName.progressive_powerup, player, 3)) or (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_8_region, LocationName.special_zone_8_coin_block_18, + lambda state:( ((state.has(ItemName.progressive_powerup, player, 1) and state.has(ItemName.mario_spin_jump, player))) or (state.has(ItemName.progressive_powerup, player, 3)) or (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_8_region, LocationName.special_zone_8_multi_coin_block_1, + lambda state:( ((state.has(ItemName.progressive_powerup, player, 1) and state.has(ItemName.mario_spin_jump, player))) or (state.has(ItemName.progressive_powerup, player, 3)) or (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_8_region, LocationName.special_zone_8_coin_block_19, + lambda state:( ((state.has(ItemName.progressive_powerup, player, 1) and state.has(ItemName.mario_spin_jump, player))) or (state.has(ItemName.progressive_powerup, player, 3)) or (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_8_region, LocationName.special_zone_8_coin_block_20, + lambda state:( ((state.has(ItemName.progressive_powerup, player, 1) and state.has(ItemName.mario_spin_jump, player))) or (state.has(ItemName.progressive_powerup, player, 3)) or (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_8_region, LocationName.special_zone_8_coin_block_21, + lambda state:( ((state.has(ItemName.progressive_powerup, player, 1) and state.has(ItemName.mario_spin_jump, player))) or (state.has(ItemName.progressive_powerup, player, 3)) or (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_8_region, LocationName.special_zone_8_coin_block_22, + lambda state:( ((state.has(ItemName.progressive_powerup, player, 1) and state.has(ItemName.mario_spin_jump, player))) or (state.has(ItemName.progressive_powerup, player, 3)) or (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_8_region, LocationName.special_zone_8_coin_block_23, + lambda state:( ((state.has(ItemName.progressive_powerup, player, 1) and state.has(ItemName.mario_spin_jump, player))) or (state.has(ItemName.progressive_powerup, player, 3)) or (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_8_region, LocationName.special_zone_8_powerup_block_2, + lambda state:( ((state.has(ItemName.progressive_powerup, player, 1) and state.has(ItemName.mario_spin_jump, player))) or (state.has(ItemName.progressive_powerup, player, 3)) or (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_8_region, LocationName.special_zone_8_flying_block_1, + lambda state:( ((state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))) or (state.has(ItemName.mario_carry, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_7_region, LocationName.special_zone_7_powerup_block_1, + lambda state: state.has(ItemName.progressive_powerup, player, 1)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_7_region, LocationName.special_zone_7_yoshi_block_1, + lambda state: state.has(ItemName.progressive_powerup, player, 1)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_7_region, LocationName.special_zone_7_coin_block_1, + lambda state: state.has(ItemName.progressive_powerup, player, 1)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_7_region, LocationName.special_zone_7_powerup_block_2, + lambda state: state.has(ItemName.progressive_powerup, player, 1)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_7_region, LocationName.special_zone_7_coin_block_2, + lambda state: state.has(ItemName.progressive_powerup, player, 1)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_6_region, LocationName.special_zone_6_powerup_block_1, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_6_region, LocationName.special_zone_6_coin_block_1, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_6_region, LocationName.special_zone_6_coin_block_2, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_6_region, LocationName.special_zone_6_yoshi_block_1, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_6_region, LocationName.special_zone_6_life_block_1, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_6_region, LocationName.special_zone_6_multi_coin_block_1, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_6_region, LocationName.special_zone_6_coin_block_3, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_6_region, LocationName.special_zone_6_coin_block_4, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_6_region, LocationName.special_zone_6_coin_block_5, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_6_region, LocationName.special_zone_6_coin_block_6, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_6_region, LocationName.special_zone_6_coin_block_7, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_6_region, LocationName.special_zone_6_coin_block_8, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_6_region, LocationName.special_zone_6_coin_block_9, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_6_region, LocationName.special_zone_6_coin_block_10, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_6_region, LocationName.special_zone_6_coin_block_11, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_6_region, LocationName.special_zone_6_coin_block_12, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_6_region, LocationName.special_zone_6_coin_block_13, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_6_region, LocationName.special_zone_6_coin_block_14, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_6_region, LocationName.special_zone_6_coin_block_15, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_6_region, LocationName.special_zone_6_coin_block_16, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_6_region, LocationName.special_zone_6_coin_block_17, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_6_region, LocationName.special_zone_6_coin_block_18, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_6_region, LocationName.special_zone_6_coin_block_19, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_6_region, LocationName.special_zone_6_coin_block_20, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_6_region, LocationName.special_zone_6_coin_block_21, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_6_region, LocationName.special_zone_6_coin_block_22, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_6_region, LocationName.special_zone_6_coin_block_23, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_6_region, LocationName.special_zone_6_coin_block_24, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_6_region, LocationName.special_zone_6_coin_block_25, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_6_region, LocationName.special_zone_6_coin_block_26, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_6_region, LocationName.special_zone_6_coin_block_27, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_6_region, LocationName.special_zone_6_coin_block_28, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_6_region, LocationName.special_zone_6_powerup_block_2, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_6_region, LocationName.special_zone_6_coin_block_29, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_6_region, LocationName.special_zone_6_coin_block_30, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_6_region, LocationName.special_zone_6_coin_block_31, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_6_region, LocationName.special_zone_6_coin_block_32, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_6_region, LocationName.special_zone_6_coin_block_33, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_5_region, LocationName.special_zone_5_yoshi_block_1) + add_location_to_region(world, player, active_locations, LocationName.special_zone_1_region, LocationName.special_zone_1_vine_block_1, + lambda state:( ((state.has(ItemName.mario_climb, player) and state.has(ItemName.p_switch, player))) or ((state.has(ItemName.mario_climb, player) and state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_1_region, LocationName.special_zone_1_vine_block_2, + lambda state:( ((state.has(ItemName.mario_climb, player) and state.has(ItemName.p_switch, player))) or ((state.has(ItemName.mario_climb, player) and state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_1_region, LocationName.special_zone_1_vine_block_3, + lambda state:( ((state.has(ItemName.mario_climb, player) and state.has(ItemName.p_switch, player))) or ((state.has(ItemName.mario_climb, player) and state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_1_region, LocationName.special_zone_1_vine_block_4, + lambda state:( ((state.has(ItemName.mario_climb, player) and state.has(ItemName.p_switch, player))) or ((state.has(ItemName.mario_climb, player) and state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_1_region, LocationName.special_zone_1_life_block_1, + lambda state:( ((state.has(ItemName.mario_climb, player) and state.has(ItemName.p_switch, player))) or ((state.has(ItemName.mario_climb, player) and state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_1_region, LocationName.special_zone_1_vine_block_5, + lambda state:( ((state.has(ItemName.mario_climb, player) and state.has(ItemName.p_switch, player))) or ((state.has(ItemName.mario_climb, player) and state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_1_region, LocationName.special_zone_1_blue_pow_block_1, + lambda state:( ((state.has(ItemName.mario_climb, player) and state.has(ItemName.p_switch, player))) or ((state.has(ItemName.mario_climb, player) and state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_1_region, LocationName.special_zone_1_vine_block_6, + lambda state:( ((state.has(ItemName.mario_climb, player) and state.has(ItemName.p_switch, player))) or ((state.has(ItemName.mario_climb, player) and state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_1_region, LocationName.special_zone_1_powerup_block_1, + lambda state:( ((state.has(ItemName.mario_climb, player) and state.has(ItemName.p_switch, player))) or ((state.has(ItemName.mario_climb, player) and state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_1_region, LocationName.special_zone_1_pswitch_coin_block_1, + lambda state: (state.has(ItemName.mario_climb, player) and state.has(ItemName.p_switch, player) and state.has(ItemName.progressive_powerup, player, 3))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_1_region, LocationName.special_zone_1_pswitch_coin_block_2, + lambda state: (state.has(ItemName.mario_climb, player) and state.has(ItemName.p_switch, player) and state.has(ItemName.progressive_powerup, player, 3))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_1_region, LocationName.special_zone_1_pswitch_coin_block_3, + lambda state: (state.has(ItemName.mario_climb, player) and state.has(ItemName.p_switch, player) and state.has(ItemName.progressive_powerup, player, 3))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_1_region, LocationName.special_zone_1_pswitch_coin_block_4, + lambda state: (state.has(ItemName.mario_climb, player) and state.has(ItemName.p_switch, player) and state.has(ItemName.progressive_powerup, player, 3))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_1_region, LocationName.special_zone_1_pswitch_coin_block_5, + lambda state: (state.has(ItemName.mario_climb, player) and state.has(ItemName.p_switch, player) and state.has(ItemName.progressive_powerup, player, 3))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_1_region, LocationName.special_zone_1_pswitch_coin_block_6, + lambda state: (state.has(ItemName.mario_climb, player) and state.has(ItemName.p_switch, player) and state.has(ItemName.progressive_powerup, player, 3))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_1_region, LocationName.special_zone_1_pswitch_coin_block_7, + lambda state: (state.has(ItemName.mario_climb, player) and state.has(ItemName.p_switch, player) and state.has(ItemName.progressive_powerup, player, 3))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_1_region, LocationName.special_zone_1_pswitch_coin_block_8, + lambda state: (state.has(ItemName.mario_climb, player) and state.has(ItemName.p_switch, player) and state.has(ItemName.progressive_powerup, player, 3))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_1_region, LocationName.special_zone_1_pswitch_coin_block_9, + lambda state: (state.has(ItemName.mario_climb, player) and state.has(ItemName.p_switch, player) and state.has(ItemName.progressive_powerup, player, 3))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_1_region, LocationName.special_zone_1_pswitch_coin_block_10, + lambda state:( ((state.has(ItemName.mario_climb, player) and state.has(ItemName.p_switch, player) and state.has(ItemName.progressive_powerup, player, 3))) or ((state.has(ItemName.mario_climb, player) and state.has(ItemName.p_switch, player) and state.has(ItemName.mario_carry, player))))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_1_region, LocationName.special_zone_1_pswitch_coin_block_11, + lambda state:( ((state.has(ItemName.mario_climb, player) and state.has(ItemName.p_switch, player) and state.has(ItemName.progressive_powerup, player, 3))) or ((state.has(ItemName.mario_climb, player) and state.has(ItemName.p_switch, player) and state.has(ItemName.mario_carry, player))))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_1_region, LocationName.special_zone_1_pswitch_coin_block_12, + lambda state:( ((state.has(ItemName.mario_climb, player) and state.has(ItemName.p_switch, player) and state.has(ItemName.progressive_powerup, player, 3))) or ((state.has(ItemName.mario_climb, player) and state.has(ItemName.p_switch, player) and state.has(ItemName.mario_carry, player))))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_1_region, LocationName.special_zone_1_pswitch_coin_block_13, + lambda state:( ((state.has(ItemName.mario_climb, player) and state.has(ItemName.p_switch, player) and state.has(ItemName.progressive_powerup, player, 3))) or ((state.has(ItemName.mario_climb, player) and state.has(ItemName.p_switch, player) and state.has(ItemName.mario_carry, player))))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_2_region, LocationName.special_zone_2_powerup_block_1, + lambda state: state.has(ItemName.p_balloon, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_2_region, LocationName.special_zone_2_coin_block_1, + lambda state: state.has(ItemName.p_balloon, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_2_region, LocationName.special_zone_2_coin_block_2, + lambda state: state.has(ItemName.p_balloon, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_2_region, LocationName.special_zone_2_powerup_block_2, + lambda state: state.has(ItemName.p_balloon, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_2_region, LocationName.special_zone_2_coin_block_3, + lambda state: state.has(ItemName.p_balloon, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_2_region, LocationName.special_zone_2_coin_block_4, + lambda state: state.has(ItemName.p_balloon, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_2_region, LocationName.special_zone_2_powerup_block_3, + lambda state: state.has(ItemName.p_balloon, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_2_region, LocationName.special_zone_2_multi_coin_block_1, + lambda state: state.has(ItemName.p_balloon, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_2_region, LocationName.special_zone_2_coin_block_5, + lambda state: state.has(ItemName.p_balloon, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_2_region, LocationName.special_zone_2_coin_block_6, + lambda state: state.has(ItemName.p_balloon, player)) + add_location_to_region(world, player, active_locations, LocationName.special_zone_3_region, LocationName.special_zone_3_powerup_block_1, + lambda state:( (state.has(ItemName.mario_climb, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_3_region, LocationName.special_zone_3_yoshi_block_1, + lambda state:( (state.has(ItemName.mario_climb, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_3_region, LocationName.special_zone_3_wings_block_1, + lambda state:( (state.has(ItemName.mario_climb, player)) or (state.has(ItemName.yoshi_activate, player)))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_4_region, LocationName.special_zone_4_powerup_block_1, + lambda state:( (state.has(ItemName.progressive_powerup, player, 2)) or (state.has(ItemName.super_star_active, player)))) + add_location_to_region(world, player, active_locations, LocationName.special_zone_4_region, LocationName.special_zone_4_star_block_1, + lambda state:( (state.has(ItemName.progressive_powerup, player, 2)) or (state.has(ItemName.super_star_active, player)))) + add_location_to_region(world, player, active_locations, LocationName.star_road_2_region, LocationName.star_road_2_star_block_1, + lambda state: state.has(ItemName.mario_swim, player)) + add_location_to_region(world, player, active_locations, LocationName.star_road_3_region, LocationName.star_road_3_key_block_1, + lambda state: state.has(ItemName.mario_carry, player)) + add_location_to_region(world, player, active_locations, LocationName.star_road_4_region, LocationName.star_road_4_powerup_block_1) + add_location_to_region(world, player, active_locations, LocationName.star_road_4_region, LocationName.star_road_4_green_block_1, + lambda state:( ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) or ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))))) + add_location_to_region(world, player, active_locations, LocationName.star_road_4_region, LocationName.star_road_4_green_block_2, + lambda state:( ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) or ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))))) + add_location_to_region(world, player, active_locations, LocationName.star_road_4_region, LocationName.star_road_4_green_block_3, + lambda state:( ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) or ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))))) + add_location_to_region(world, player, active_locations, LocationName.star_road_4_region, LocationName.star_road_4_green_block_4, + lambda state:( ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) or ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))))) + add_location_to_region(world, player, active_locations, LocationName.star_road_4_region, LocationName.star_road_4_green_block_5, + lambda state:( ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) or ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))))) + add_location_to_region(world, player, active_locations, LocationName.star_road_4_region, LocationName.star_road_4_green_block_6, + lambda state:( ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) or ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))))) + add_location_to_region(world, player, active_locations, LocationName.star_road_4_region, LocationName.star_road_4_green_block_7, + lambda state:( ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) or ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3))) or ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.red_switch_palace, player))))) + add_location_to_region(world, player, active_locations, LocationName.star_road_4_region, LocationName.star_road_4_key_block_1, + lambda state:( ((state.has(ItemName.mario_climb, player) and state.has(ItemName.mario_carry, player))) or ((state.has(ItemName.green_switch_palace, player) and state.has(ItemName.red_switch_palace, player) and state.has(ItemName.mario_climb, player))))) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_directional_coin_block_1, + lambda state: state.has(ItemName.p_switch, player)) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_life_block_1, + lambda state: state.has(ItemName.p_switch, player)) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_vine_block_1, + lambda state: state.has(ItemName.p_switch, player)) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_yellow_block_1, + lambda state:( ((state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.p_switch, player) and state.has(ItemName.mario_climb, player) and state.has(ItemName.mario_carry, player))) or ((state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))))) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_yellow_block_2, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_yellow_block_3, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_yellow_block_4, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_yellow_block_5, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_yellow_block_6, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_yellow_block_7, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_yellow_block_8, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_yellow_block_9, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_yellow_block_10, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_yellow_block_11, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_yellow_block_12, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_yellow_block_13, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_yellow_block_14, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_yellow_block_15, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_yellow_block_16, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_yellow_block_17, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_yellow_block_18, + lambda state: (state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_yellow_block_19, + lambda state:( ((state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.green_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player))) or ((state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.green_switch_palace, player) and state.has(ItemName.p_switch, player) and state.has(ItemName.mario_climb, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.progressive_powerup, player, 3))))) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_yellow_block_20, + lambda state:( ((state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.green_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player))) or ((state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.green_switch_palace, player) and state.has(ItemName.p_switch, player) and state.has(ItemName.mario_climb, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.progressive_powerup, player, 3))))) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_green_block_1, + lambda state: (state.has(ItemName.green_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_green_block_2, + lambda state: (state.has(ItemName.green_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_green_block_3, + lambda state: (state.has(ItemName.green_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_green_block_4, + lambda state: (state.has(ItemName.green_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_green_block_5, + lambda state: (state.has(ItemName.green_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_green_block_6, + lambda state: (state.has(ItemName.green_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_green_block_7, + lambda state: (state.has(ItemName.green_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_green_block_8, + lambda state: (state.has(ItemName.green_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_green_block_9, + lambda state: (state.has(ItemName.green_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_green_block_10, + lambda state: (state.has(ItemName.green_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_green_block_11, + lambda state: (state.has(ItemName.green_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_green_block_12, + lambda state: (state.has(ItemName.green_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_green_block_13, + lambda state: (state.has(ItemName.green_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_green_block_14, + lambda state: (state.has(ItemName.green_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_green_block_15, + lambda state: (state.has(ItemName.green_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_green_block_16, + lambda state: (state.has(ItemName.green_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_green_block_17, + lambda state: (state.has(ItemName.green_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_green_block_18, + lambda state: (state.has(ItemName.green_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_green_block_19, + lambda state: (state.has(ItemName.green_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + add_location_to_region(world, player, active_locations, LocationName.star_road_5_region, LocationName.star_road_5_green_block_20, + lambda state: (state.has(ItemName.green_switch_palace, player) and state.has(ItemName.yoshi_activate, player) and state.has(ItemName.mario_carry, player) and state.has(ItemName.special_world_clear, player))) + def connect_regions(world, player, level_to_tile_dict): @@ -1042,13 +2232,16 @@ def connect_regions(world, player, level_to_tile_dict): connect(world, player, names, LocationName.star_road_5_region, LocationName.star_road_5_exit_1, lambda state: state.has(ItemName.p_switch, player)) connect(world, player, names, LocationName.star_road_5_region, LocationName.star_road_5_exit_2, - lambda state: (state.has(ItemName.mario_carry, player) and + lambda state: ((state.has(ItemName.mario_carry, player) and state.has(ItemName.mario_climb, player) and state.has(ItemName.p_switch, player) and state.has(ItemName.yellow_switch_palace, player) and state.has(ItemName.green_switch_palace, player) and state.has(ItemName.red_switch_palace, player) and - state.has(ItemName.blue_switch_palace, player))) + state.has(ItemName.blue_switch_palace, player)) or + (state.has(ItemName.yoshi_activate, player) and + state.has(ItemName.special_world_clear, player) and + state.has(ItemName.mario_carry, player)))) connect(world, player, names, LocationName.special_zone_1_region, LocationName.special_zone_1_exit_1, lambda state: (state.has(ItemName.mario_climb, player) and @@ -1058,10 +2251,10 @@ def connect_regions(world, player, level_to_tile_dict): lambda state: state.has(ItemName.p_balloon, player)) connect(world, player, names, LocationName.special_zone_3_region, LocationName.special_zone_3_exit_1, lambda state: (state.has(ItemName.mario_climb, player) or - state.has(ItemName.p_switch, player) or - (state.has(ItemName.mario_run, player) and state.has(ItemName.progressive_powerup, player, 3)))) + state.has(ItemName.yoshi_activate, player))) connect(world, player, names, LocationName.special_zone_4_region, LocationName.special_zone_4_exit_1, - lambda state: state.has(ItemName.progressive_powerup, player, 1)) + lambda state: (state.has(ItemName.progressive_powerup, player, 2) or + state.has(ItemName.super_star_active, player))) connect(world, player, names, LocationName.special_zone_5_region, LocationName.special_zone_5_exit_1, lambda state: state.has(ItemName.progressive_powerup, player, 1)) connect(world, player, names, LocationName.special_zone_6_region, LocationName.special_zone_6_exit_1, @@ -1069,7 +2262,10 @@ def connect_regions(world, player, level_to_tile_dict): connect(world, player, names, LocationName.special_zone_7_region, LocationName.special_zone_7_exit_1, lambda state: state.has(ItemName.progressive_powerup, player, 1)) connect(world, player, names, LocationName.special_zone_8_region, LocationName.special_zone_8_exit_1, - lambda state: state.has(ItemName.progressive_powerup, player, 1)) + lambda state: ((state.has(ItemName.progressive_powerup, player, 1) and state.has(ItemName.mario_spin_jump, player)) or + state.has(ItemName.progressive_powerup, player, 3) or + state.has(ItemName.yoshi_activate, player) or + state.has(ItemName.mario_carry, player))) @@ -1130,8 +2326,7 @@ def connect_regions(world, player, level_to_tile_dict): def create_region(world: MultiWorld, player: int, active_locations, name: str, locations=None): - ret = Region(name, RegionType.Generic, name, player) - ret.world = world + ret = Region(name, player, world) if locations: for locationName in locations: loc_id = active_locations.get(locationName, 0) diff --git a/worlds/smw/Rom.py b/worlds/smw/Rom.py index d39fcc46b961..3d80cacf95f8 100644 --- a/worlds/smw/Rom.py +++ b/worlds/smw/Rom.py @@ -1,6 +1,6 @@ import Utils from worlds.Files import APDeltaPatch -from .Aesthetics import generate_shuffled_header_data, generate_shuffled_ow_palettes +from .Aesthetics import generate_shuffled_header_data, generate_shuffled_ow_palettes, generate_curated_palette_data, generate_shuffled_sfx from .Levels import level_info_dict, full_bowser_rooms, standard_bowser_rooms, submap_boss_rooms, ow_boss_rooms from .Names.TextBox import generate_goal_text, title_text_mapping, generate_text_box @@ -10,6 +10,7 @@ import hashlib import os import math +import pkgutil ability_rom_data = { @@ -22,20 +23,27 @@ 0xBC0009: [[0x1F2C, 0x4]], # P-Switch 0x10 #0xBC000A: [[]] 0xBC000B: [[0x1F2D, 0x3]], # P-Balloon 0x08 - 0xBC000D: [[0x1F2D, 0x4]], # Super Star 0x10 + 0xBC000D: [[0x1F2D, 0x4]] # Super Star 0x10 } +icon_rom_data = { + 0xBC0002: [0x1B00C], # Yoshi Egg + 0xBC0012: [0x1B00E], # Boss Token -item_rom_data = { - 0xBC0001: [0x18E4, 0x1], # 1-Up Mushroom - - 0xBC0002: [0x1F24, 0x1, 0x1F], # Yoshi Egg - 0xBC0012: [0x1F26, 0x1, 0x09], # Boss Token + 0xBC0017: [0x1B004], # 1 coin + 0xBC0018: [0x1B006], # 5 coins + 0xBC0019: [0x1B008], # 10 coins + 0xBC001A: [0x1B00A], # 15 coins - 0xBC000E: [0x1F28, 0x1, 0x1C], # Yellow Switch Palace - 0xBC000F: [0x1F27, 0x1, 0x1C], # Green Switch Palace - 0xBC0010: [0x1F2A, 0x1, 0x1C], # Red Switch Palace - 0xBC0011: [0x1F29, 0x1, 0x1C], # Blue Switch Palace + 0xBC0001: [0x1B010] # 1-Up Mushroom +} + +item_rom_data = { + 0xBC000E: [0x1F28, 0x1, 0x1C], # Yellow Switch Palace + 0xBC000F: [0x1F27, 0x1, 0x1C], # Green Switch Palace + 0xBC0010: [0x1F2A, 0x1, 0x1C], # Red Switch Palace + 0xBC0011: [0x1F29, 0x1, 0x1C], # Blue Switch Palace + 0xBC001B: [0x1FFF, 0x80, 0x39] # Special World Clear } trap_rom_data = { @@ -654,6 +662,7 @@ def handle_level_shuffle(rom, active_level_dict): for level_id, tile_id in active_level_dict.items(): rom.write_byte(0x37F70 + level_id, tile_id) + rom.write_byte(0x37F00 + tile_id, level_id) def handle_collected_paths(rom): @@ -687,7 +696,1803 @@ def handle_vertical_scroll(rom): rom.write_bytes(VERTICAL_SCROLL_SUB_ADDR + 0x0B, bytearray([0x28])) # PLP rom.write_bytes(VERTICAL_SCROLL_SUB_ADDR + 0x0C, bytearray([0x6B])) # RTL - +def handle_bonus_block(rom): + rom.write_bytes(0x71A5, bytearray([0x5C, 0x19, 0x8E, 0x05])) # JML $058E19 + + BONUS_BLOCK_ADDR = 0x28E19 + rom.write_bytes(BONUS_BLOCK_ADDR + 0x00, bytearray([0xA9, 0x06])) # LDA #$06 + rom.write_bytes(BONUS_BLOCK_ADDR + 0x02, bytearray([0xAC, 0xC0, 0x0D])) # LDY $0DC0 + rom.write_bytes(BONUS_BLOCK_ADDR + 0x05, bytearray([0xD0, 0x1E])) # BNE IGNORE + rom.write_bytes(BONUS_BLOCK_ADDR + 0x07, bytearray([0xDA])) # PHX + rom.write_bytes(BONUS_BLOCK_ADDR + 0x08, bytearray([0xAD, 0xBF, 0x13])) # LDA $13BF + rom.write_bytes(BONUS_BLOCK_ADDR + 0x0B, bytearray([0x4A])) # LSR + rom.write_bytes(BONUS_BLOCK_ADDR + 0x0C, bytearray([0x4A])) # LSR + rom.write_bytes(BONUS_BLOCK_ADDR + 0x0D, bytearray([0x4A])) # LSR + rom.write_bytes(BONUS_BLOCK_ADDR + 0x0E, bytearray([0x48])) # PHA + rom.write_bytes(BONUS_BLOCK_ADDR + 0x0F, bytearray([0xAD, 0xBF, 0x13])) # LDA $13BF + rom.write_bytes(BONUS_BLOCK_ADDR + 0x12, bytearray([0x29, 0x07])) # AND #$07 + rom.write_bytes(BONUS_BLOCK_ADDR + 0x14, bytearray([0xAA])) # TAX + rom.write_bytes(BONUS_BLOCK_ADDR + 0x15, bytearray([0xBF, 0x5B, 0xB3, 0x05])) # LDA $05B35B,x + rom.write_bytes(BONUS_BLOCK_ADDR + 0x19, bytearray([0xFA])) # PLX + rom.write_bytes(BONUS_BLOCK_ADDR + 0x1A, bytearray([0x1F, 0x00, 0xA0, 0x7F])) # ORA $7FA000,x + rom.write_bytes(BONUS_BLOCK_ADDR + 0x1E, bytearray([0x9F, 0x00, 0xA0, 0x7F])) # STA $7FA000,x + rom.write_bytes(BONUS_BLOCK_ADDR + 0x22, bytearray([0xFA])) # PLX + rom.write_bytes(BONUS_BLOCK_ADDR + 0x23, bytearray([0xA9, 0x05])) # LDA #$05 + rom.write_bytes(BONUS_BLOCK_ADDR + 0x25, bytearray([0x5C, 0xD0, 0xF1, 0x00])) # IGNORE: JML $00F1D0 + + +def handle_blocksanity(rom): + #rom.write_byte(0x2273, 0x00) # debug + rom.write_bytes(0x80000, read_code_file("data/blocksanity_data.bin")) + rom.write_bytes(0x071D0, bytearray([0x5C, 0x00, 0xF7, 0x0F])) # org $00F1D0 : jml blocksanity_main + rom.write_bytes(0x0AD59, bytearray([0x5C, 0x15, 0xF7, 0x0F])) # org $01AD5C : jml blocksanity_flying_init + rom.write_bytes(0x0AE16, bytearray([0x22, 0x39, 0xF7, 0x0F])) # org $01AE16 : jsl blocksanity_flying_main + + BLOCKSANITY_ADDR = 0x7F700 + rom.write_bytes(BLOCKSANITY_ADDR + 0x0000, bytearray([0x85, 0x05])) # blocksanity_main: sta $05 + rom.write_bytes(BLOCKSANITY_ADDR + 0x0002, bytearray([0x8B])) # phb + rom.write_bytes(BLOCKSANITY_ADDR + 0x0003, bytearray([0xA9, 0x10])) # lda.b #blocksanity_pointers>>16 + rom.write_bytes(BLOCKSANITY_ADDR + 0x0005, bytearray([0x48])) # pha + rom.write_bytes(BLOCKSANITY_ADDR + 0x0006, bytearray([0xAB])) # plb + rom.write_bytes(BLOCKSANITY_ADDR + 0x0007, bytearray([0x5A])) # phy + rom.write_bytes(BLOCKSANITY_ADDR + 0x0008, bytearray([0x20, 0x63, 0xF7])) # jsr process_block + rom.write_bytes(BLOCKSANITY_ADDR + 0x000B, bytearray([0x7A])) # ply + rom.write_bytes(BLOCKSANITY_ADDR + 0x000C, bytearray([0xAB])) # plb + rom.write_bytes(BLOCKSANITY_ADDR + 0x000D, bytearray([0xA5, 0x05])) # lda $05 + rom.write_bytes(BLOCKSANITY_ADDR + 0x000F, bytearray([0xC9, 0x05])) # cmp #$05 + rom.write_bytes(BLOCKSANITY_ADDR + 0x0011, bytearray([0x5C, 0xD4, 0xF1, 0x00])) # jml $00F1D4 + rom.write_bytes(BLOCKSANITY_ADDR + 0x0015, bytearray([0xB5, 0xD8])) # blocksanity_flying_init: lda $D8,x + rom.write_bytes(BLOCKSANITY_ADDR + 0x0017, bytearray([0x29, 0xF0])) # and #$F0 + rom.write_bytes(BLOCKSANITY_ADDR + 0x0019, bytearray([0x9F, 0x20, 0xB1, 0x7F])) # sta !sprite_blocksanity_y_lo,x + rom.write_bytes(BLOCKSANITY_ADDR + 0x001D, bytearray([0xBD, 0xD4, 0x14])) # lda $14D4,x + rom.write_bytes(BLOCKSANITY_ADDR + 0x0020, bytearray([0x9F, 0x30, 0xB1, 0x7F])) # sta !sprite_blocksanity_y_hi,x + rom.write_bytes(BLOCKSANITY_ADDR + 0x0024, bytearray([0xBD, 0xE0, 0x14])) # lda $14E0,x + rom.write_bytes(BLOCKSANITY_ADDR + 0x0027, bytearray([0x9F, 0x10, 0xB1, 0x7F])) # sta !sprite_blocksanity_x_hi,x + rom.write_bytes(BLOCKSANITY_ADDR + 0x002B, bytearray([0xB5, 0xE4])) # lda $E4,x + rom.write_bytes(BLOCKSANITY_ADDR + 0x002D, bytearray([0x29, 0xF0])) # and #$F0 + rom.write_bytes(BLOCKSANITY_ADDR + 0x002F, bytearray([0x9F, 0x00, 0xB1, 0x7F])) # sta !sprite_blocksanity_x_lo,x + rom.write_bytes(BLOCKSANITY_ADDR + 0x0033, bytearray([0x4A])) # lsr + rom.write_bytes(BLOCKSANITY_ADDR + 0x0034, bytearray([0x4A])) # lsr + rom.write_bytes(BLOCKSANITY_ADDR + 0x0035, bytearray([0x5C, 0x5D, 0xAD, 0x01])) # jml $01AD5D + rom.write_bytes(BLOCKSANITY_ADDR + 0x0039, bytearray([0xBF, 0x20, 0xB1, 0x7F])) # blocksanity_flying_main: lda !sprite_blocksanity_y_lo,x + rom.write_bytes(BLOCKSANITY_ADDR + 0x003D, bytearray([0x85, 0x98])) # sta $98 + rom.write_bytes(BLOCKSANITY_ADDR + 0x003F, bytearray([0xBF, 0x30, 0xB1, 0x7F])) # lda !sprite_blocksanity_y_hi,x + rom.write_bytes(BLOCKSANITY_ADDR + 0x0043, bytearray([0x85, 0x99])) # sta $99 + rom.write_bytes(BLOCKSANITY_ADDR + 0x0045, bytearray([0xBF, 0x00, 0xB1, 0x7F])) # lda !sprite_blocksanity_x_lo,x + rom.write_bytes(BLOCKSANITY_ADDR + 0x0049, bytearray([0x85, 0x9A])) # sta $9A + rom.write_bytes(BLOCKSANITY_ADDR + 0x004B, bytearray([0xBF, 0x10, 0xB1, 0x7F])) # lda !sprite_blocksanity_x_hi,x + rom.write_bytes(BLOCKSANITY_ADDR + 0x004F, bytearray([0x85, 0x9B])) # sta $9B + rom.write_bytes(BLOCKSANITY_ADDR + 0x0051, bytearray([0x8B])) # phb + rom.write_bytes(BLOCKSANITY_ADDR + 0x0052, bytearray([0xA9, 0x10])) # lda.b #blocksanity_pointers>>16 + rom.write_bytes(BLOCKSANITY_ADDR + 0x0054, bytearray([0x48])) # pha + rom.write_bytes(BLOCKSANITY_ADDR + 0x0055, bytearray([0xAB])) # plb + rom.write_bytes(BLOCKSANITY_ADDR + 0x0056, bytearray([0x5A])) # phy + rom.write_bytes(BLOCKSANITY_ADDR + 0x0057, bytearray([0xDA])) # phx + rom.write_bytes(BLOCKSANITY_ADDR + 0x0058, bytearray([0x20, 0x63, 0xF7])) # jsr process_block + rom.write_bytes(BLOCKSANITY_ADDR + 0x005B, bytearray([0xFA])) # plx + rom.write_bytes(BLOCKSANITY_ADDR + 0x005C, bytearray([0x7A])) # ply + rom.write_bytes(BLOCKSANITY_ADDR + 0x005D, bytearray([0xAB])) # plb + rom.write_bytes(BLOCKSANITY_ADDR + 0x005E, bytearray([0xB5, 0xE4])) # lda $E4,x + rom.write_bytes(BLOCKSANITY_ADDR + 0x0060, bytearray([0x85, 0x9A])) # sta $9A + rom.write_bytes(BLOCKSANITY_ADDR + 0x0062, bytearray([0x6B])) # rtl + rom.write_bytes(BLOCKSANITY_ADDR + 0x0063, bytearray([0xA9, 0x0F])) # process_block: lda #$0F + rom.write_bytes(BLOCKSANITY_ADDR + 0x0065, bytearray([0x14, 0x98])) # trb $98 + rom.write_bytes(BLOCKSANITY_ADDR + 0x0067, bytearray([0x14, 0x9A])) # trb $9A + rom.write_bytes(BLOCKSANITY_ADDR + 0x0069, bytearray([0xC2, 0x30])) # rep #$30 + rom.write_bytes(BLOCKSANITY_ADDR + 0x006B, bytearray([0xA5, 0x60])) # lda $60 + rom.write_bytes(BLOCKSANITY_ADDR + 0x006D, bytearray([0x29, 0xFF, 0x00])) # and #$00FF + rom.write_bytes(BLOCKSANITY_ADDR + 0x0070, bytearray([0x0A])) # asl + rom.write_bytes(BLOCKSANITY_ADDR + 0x0071, bytearray([0x18])) # clc + rom.write_bytes(BLOCKSANITY_ADDR + 0x0072, bytearray([0x69, 0x00, 0x80])) # adc.w #blocksanity_pointers + rom.write_bytes(BLOCKSANITY_ADDR + 0x0075, bytearray([0x48])) # pha + rom.write_bytes(BLOCKSANITY_ADDR + 0x0076, bytearray([0xA0, 0x00, 0x00])) # ldy #$0000 + rom.write_bytes(BLOCKSANITY_ADDR + 0x0079, bytearray([0xB3, 0x01])) # lda ($01,s),y + rom.write_bytes(BLOCKSANITY_ADDR + 0x007B, bytearray([0x48])) # pha + rom.write_bytes(BLOCKSANITY_ADDR + 0x007C, bytearray([0xB3, 0x01])) # .loop lda ($01,s),y + rom.write_bytes(BLOCKSANITY_ADDR + 0x007E, bytearray([0xC9, 0xFF, 0xFF])) # cmp #$FFFF + rom.write_bytes(BLOCKSANITY_ADDR + 0x0081, bytearray([0xF0, 0x16])) # beq .return + rom.write_bytes(BLOCKSANITY_ADDR + 0x0083, bytearray([0xC5, 0x9A])) # cmp $9A + rom.write_bytes(BLOCKSANITY_ADDR + 0x0085, bytearray([0xD0, 0x0A])) # bne .next_block_x + rom.write_bytes(BLOCKSANITY_ADDR + 0x0087, bytearray([0xC8])) # iny + rom.write_bytes(BLOCKSANITY_ADDR + 0x0088, bytearray([0xC8])) # iny + rom.write_bytes(BLOCKSANITY_ADDR + 0x0089, bytearray([0xB3, 0x01])) # lda ($01,s),y + rom.write_bytes(BLOCKSANITY_ADDR + 0x008B, bytearray([0xC5, 0x98])) # cmp $98 + rom.write_bytes(BLOCKSANITY_ADDR + 0x008D, bytearray([0xF0, 0x0F])) # beq .valid_block + rom.write_bytes(BLOCKSANITY_ADDR + 0x008F, bytearray([0x80, 0x02])) # bra .next_block_y + rom.write_bytes(BLOCKSANITY_ADDR + 0x0091, bytearray([0xC8])) # .next_block_x iny + rom.write_bytes(BLOCKSANITY_ADDR + 0x0092, bytearray([0xC8])) # iny + rom.write_bytes(BLOCKSANITY_ADDR + 0x0093, bytearray([0xC8])) # .next_block_y iny + rom.write_bytes(BLOCKSANITY_ADDR + 0x0094, bytearray([0xC8])) # iny + rom.write_bytes(BLOCKSANITY_ADDR + 0x0095, bytearray([0xC8])) # iny + rom.write_bytes(BLOCKSANITY_ADDR + 0x0096, bytearray([0xC8])) # iny + rom.write_bytes(BLOCKSANITY_ADDR + 0x0097, bytearray([0x80, 0xE3])) # bra .loop + rom.write_bytes(BLOCKSANITY_ADDR + 0x0099, bytearray([0x68])) # .return pla + rom.write_bytes(BLOCKSANITY_ADDR + 0x009A, bytearray([0x68])) # pla + rom.write_bytes(BLOCKSANITY_ADDR + 0x009B, bytearray([0xE2, 0x30])) # sep #$30 + rom.write_bytes(BLOCKSANITY_ADDR + 0x009D, bytearray([0x60])) # rts + rom.write_bytes(BLOCKSANITY_ADDR + 0x009E, bytearray([0xC8])) # .valid_block iny + rom.write_bytes(BLOCKSANITY_ADDR + 0x009F, bytearray([0xC8])) # iny + rom.write_bytes(BLOCKSANITY_ADDR + 0x00A0, bytearray([0xB3, 0x01])) # lda ($01,s),y + rom.write_bytes(BLOCKSANITY_ADDR + 0x00A2, bytearray([0xAA])) # tax + rom.write_bytes(BLOCKSANITY_ADDR + 0x00A3, bytearray([0xE2, 0x20])) # sep #$20 + rom.write_bytes(BLOCKSANITY_ADDR + 0x00A5, bytearray([0xDA])) # phx + rom.write_bytes(BLOCKSANITY_ADDR + 0x00A6, bytearray([0xBF, 0x00, 0xA4, 0x7F])) # lda !blocksanity_data_flags,x + rom.write_bytes(BLOCKSANITY_ADDR + 0x00AA, bytearray([0xD0, 0x08])) # bne .processed + rom.write_bytes(BLOCKSANITY_ADDR + 0x00AC, bytearray([0x1A])) # inc + rom.write_bytes(BLOCKSANITY_ADDR + 0x00AD, bytearray([0x9F, 0x00, 0xA4, 0x7F])) # sta !blocksanity_data_flags,x + rom.write_bytes(BLOCKSANITY_ADDR + 0x00B1, bytearray([0x20, 0xBA, 0xF7])) # jsr blocksanity_check_flags + rom.write_bytes(BLOCKSANITY_ADDR + 0x00B4, bytearray([0xFA])) # .processed plx + rom.write_bytes(BLOCKSANITY_ADDR + 0x00B5, bytearray([0xFA])) # plx + rom.write_bytes(BLOCKSANITY_ADDR + 0x00B6, bytearray([0xFA])) # plx + rom.write_bytes(BLOCKSANITY_ADDR + 0x00B7, bytearray([0xE2, 0x10])) # sep #$10 + rom.write_bytes(BLOCKSANITY_ADDR + 0x00B9, bytearray([0x60])) # rts + rom.write_bytes(BLOCKSANITY_ADDR + 0x00BA, bytearray([0xC2, 0x20])) # blocksanity_check_flags: rep #$20 + rom.write_bytes(BLOCKSANITY_ADDR + 0x00BC, bytearray([0xA0, 0x00, 0x00])) # ldy #$0000 + rom.write_bytes(BLOCKSANITY_ADDR + 0x00BF, bytearray([0xB3, 0x05])) # .loop lda ($05,s),y + rom.write_bytes(BLOCKSANITY_ADDR + 0x00C1, bytearray([0xC9, 0xFF, 0xFF])) # cmp #$FFFF + rom.write_bytes(BLOCKSANITY_ADDR + 0x00C4, bytearray([0xF0, 0x14])) # beq .check + rom.write_bytes(BLOCKSANITY_ADDR + 0x00C6, bytearray([0xC8])) # iny + rom.write_bytes(BLOCKSANITY_ADDR + 0x00C7, bytearray([0xC8])) # iny + rom.write_bytes(BLOCKSANITY_ADDR + 0x00C8, bytearray([0xC8])) # iny + rom.write_bytes(BLOCKSANITY_ADDR + 0x00C9, bytearray([0xC8])) # iny + rom.write_bytes(BLOCKSANITY_ADDR + 0x00CA, bytearray([0xB3, 0x05])) # lda ($05,s),y + rom.write_bytes(BLOCKSANITY_ADDR + 0x00CC, bytearray([0xAA])) # tax + rom.write_bytes(BLOCKSANITY_ADDR + 0x00CD, bytearray([0xBF, 0x00, 0xA4, 0x7F])) # lda !blocksanity_data_flags,x + rom.write_bytes(BLOCKSANITY_ADDR + 0x00D1, bytearray([0x29, 0xFF, 0x00])) # and #$00FF + rom.write_bytes(BLOCKSANITY_ADDR + 0x00D4, bytearray([0xF0, 0x22])) # beq .invalid + rom.write_bytes(BLOCKSANITY_ADDR + 0x00D6, bytearray([0xC8])) # iny + rom.write_bytes(BLOCKSANITY_ADDR + 0x00D7, bytearray([0xC8])) # iny + rom.write_bytes(BLOCKSANITY_ADDR + 0x00D8, bytearray([0x80, 0xE5])) # bra .loop + rom.write_bytes(BLOCKSANITY_ADDR + 0x00DA, bytearray([0xE2, 0x20])) # .check sep #$20 + rom.write_bytes(BLOCKSANITY_ADDR + 0x00DC, bytearray([0xA9, 0x00])) # lda #$00 + rom.write_bytes(BLOCKSANITY_ADDR + 0x00DE, bytearray([0xEB])) # xba + rom.write_bytes(BLOCKSANITY_ADDR + 0x00DF, bytearray([0xA5, 0x60])) # lda $60 + rom.write_bytes(BLOCKSANITY_ADDR + 0x00E1, bytearray([0x4A])) # lsr + rom.write_bytes(BLOCKSANITY_ADDR + 0x00E2, bytearray([0x4A])) # lsr + rom.write_bytes(BLOCKSANITY_ADDR + 0x00E3, bytearray([0x4A])) # lsr + rom.write_bytes(BLOCKSANITY_ADDR + 0x00E4, bytearray([0xA8])) # tay + rom.write_bytes(BLOCKSANITY_ADDR + 0x00E5, bytearray([0xA5, 0x60])) # lda $60 + rom.write_bytes(BLOCKSANITY_ADDR + 0x00E7, bytearray([0x29, 0x07])) # and #$07 + rom.write_bytes(BLOCKSANITY_ADDR + 0x00E9, bytearray([0xAA])) # tax + rom.write_bytes(BLOCKSANITY_ADDR + 0x00EA, bytearray([0xBF, 0x5B, 0xB3, 0x05])) # lda.l $05B35B,x + rom.write_bytes(BLOCKSANITY_ADDR + 0x00EE, bytearray([0xBB])) # tyx + rom.write_bytes(BLOCKSANITY_ADDR + 0x00EF, bytearray([0x1F, 0x10, 0xA0, 0x7F])) # ora !blocksanity_flags,x + rom.write_bytes(BLOCKSANITY_ADDR + 0x00F3, bytearray([0x9F, 0x10, 0xA0, 0x7F])) # sta !blocksanity_flags,x + rom.write_bytes(BLOCKSANITY_ADDR + 0x00F7, bytearray([0x60])) # rts + rom.write_bytes(BLOCKSANITY_ADDR + 0x00F8, bytearray([0xE2, 0x20])) # .invalid sep #$20 + rom.write_bytes(BLOCKSANITY_ADDR + 0x00FA, bytearray([0x60])) # rts + +def handle_ram(rom): + rom.write_byte(0x07FD8, 0x02) # Expand SRAM + rom.write_bytes(0x01CF5, bytearray([0x5C, 0x00, 0xF2, 0x0F])) # org $009CF5 : jml init_sram + rom.write_bytes(0x01C0F, bytearray([0x5C, 0x00, 0xF3, 0x0F])) # org $009C0F : jml save_sram + rom.write_bytes(0x013BB, bytearray([0x5C, 0xA0, 0xF0, 0x0F])) # org $0093BB : jml init_ram + + INIT_SRAM_ADDR = 0x7F200 + rom.write_bytes(INIT_SRAM_ADDR + 0x0000, bytearray([0xD0, 0x6C])) # init_sram: bne .clear + rom.write_bytes(INIT_SRAM_ADDR + 0x0002, bytearray([0x9C, 0x09, 0x01])) # .load stz $0109 + rom.write_bytes(INIT_SRAM_ADDR + 0x0005, bytearray([0xDA])) # phx + rom.write_bytes(INIT_SRAM_ADDR + 0x0006, bytearray([0x08])) # php + rom.write_bytes(INIT_SRAM_ADDR + 0x0007, bytearray([0xE2, 0x10])) # sep #$10 + rom.write_bytes(INIT_SRAM_ADDR + 0x0009, bytearray([0xA2, 0x5F])) # ldx.b #$5F + rom.write_bytes(INIT_SRAM_ADDR + 0x000B, bytearray([0xBF, 0x00, 0x08, 0x70])) # - lda !level_clears_sram,x + rom.write_bytes(INIT_SRAM_ADDR + 0x000F, bytearray([0x9F, 0x00, 0xA2, 0x7F])) # sta !level_clears,x + rom.write_bytes(INIT_SRAM_ADDR + 0x0013, bytearray([0xCA])) # dex + rom.write_bytes(INIT_SRAM_ADDR + 0x0014, bytearray([0x10, 0xF5])) # bpl - + rom.write_bytes(INIT_SRAM_ADDR + 0x0016, bytearray([0xA2, 0x0B])) # ldx #$0B + rom.write_bytes(INIT_SRAM_ADDR + 0x0018, bytearray([0xBF, 0x40, 0x09, 0x70])) # - lda !blocksanity_sram,x + rom.write_bytes(INIT_SRAM_ADDR + 0x001C, bytearray([0x9F, 0x10, 0xA0, 0x7F])) # sta !blocksanity_flags,x + rom.write_bytes(INIT_SRAM_ADDR + 0x0020, bytearray([0xBF, 0x10, 0x09, 0x70])) # lda !moons_sram,x + rom.write_bytes(INIT_SRAM_ADDR + 0x0024, bytearray([0x9D, 0xEE, 0x1F])) # sta !moons_flags,x + rom.write_bytes(INIT_SRAM_ADDR + 0x0027, bytearray([0xBF, 0x00, 0x09, 0x70])) # lda !yoshi_coins_sram,x + rom.write_bytes(INIT_SRAM_ADDR + 0x002B, bytearray([0x9D, 0x2F, 0x1F])) # sta !yoshi_coins_flags,x + rom.write_bytes(INIT_SRAM_ADDR + 0x002E, bytearray([0xBF, 0x30, 0x09, 0x70])) # lda !bonus_block_sram,x + rom.write_bytes(INIT_SRAM_ADDR + 0x0032, bytearray([0x9F, 0x00, 0xA0, 0x7F])) # sta !bonus_block_flags,x + rom.write_bytes(INIT_SRAM_ADDR + 0x0036, bytearray([0xBF, 0x20, 0x09, 0x70])) # lda !checkpoints_sram,x + rom.write_bytes(INIT_SRAM_ADDR + 0x003A, bytearray([0x9D, 0x3C, 0x1F])) # sta !checkpoints_flags,x + rom.write_bytes(INIT_SRAM_ADDR + 0x003D, bytearray([0xCA])) # dex + rom.write_bytes(INIT_SRAM_ADDR + 0x003E, bytearray([0x10, 0xD8])) # bpl - + rom.write_bytes(INIT_SRAM_ADDR + 0x0040, bytearray([0xC2, 0x10])) # rep #$10 + rom.write_bytes(INIT_SRAM_ADDR + 0x0042, bytearray([0xA2, 0x90, 0x02])) # ldx.w #!blocksanity_locs-1 + rom.write_bytes(INIT_SRAM_ADDR + 0x0045, bytearray([0xBF, 0x00, 0x0A, 0x70])) # - lda !blocksanity_data_sram,x + rom.write_bytes(INIT_SRAM_ADDR + 0x0049, bytearray([0x9F, 0x00, 0xA4, 0x7F])) # sta !blocksanity_data_flags,x + rom.write_bytes(INIT_SRAM_ADDR + 0x004D, bytearray([0xCA])) # dex + rom.write_bytes(INIT_SRAM_ADDR + 0x004E, bytearray([0x10, 0xF5])) # bpl - + rom.write_bytes(INIT_SRAM_ADDR + 0x0050, bytearray([0xE2, 0x10])) # sep #$10 + rom.write_bytes(INIT_SRAM_ADDR + 0x0052, bytearray([0xAF, 0x50, 0x09, 0x70])) # lda !received_items_count_sram+$00 + rom.write_bytes(INIT_SRAM_ADDR + 0x0056, bytearray([0x8F, 0x0E, 0xA0, 0x7F])) # sta !received_items_count+$00 + rom.write_bytes(INIT_SRAM_ADDR + 0x005A, bytearray([0xAF, 0x51, 0x09, 0x70])) # lda !received_items_count_sram+$01 + rom.write_bytes(INIT_SRAM_ADDR + 0x005E, bytearray([0x8F, 0x0F, 0xA0, 0x7F])) # sta !received_items_count+$01 + rom.write_bytes(INIT_SRAM_ADDR + 0x0062, bytearray([0xAF, 0x52, 0x09, 0x70])) # lda !special_world_clear_sram + rom.write_bytes(INIT_SRAM_ADDR + 0x0066, bytearray([0x8D, 0xFF, 0x1F])) # sta !special_world_clear_flag + rom.write_bytes(INIT_SRAM_ADDR + 0x0069, bytearray([0x28])) # plp + rom.write_bytes(INIT_SRAM_ADDR + 0x006A, bytearray([0x5C, 0xFB, 0x9C, 0x00])) # jml $009CFB + rom.write_bytes(INIT_SRAM_ADDR + 0x006E, bytearray([0xDA])) # .clear phx + rom.write_bytes(INIT_SRAM_ADDR + 0x006F, bytearray([0xA2, 0x5F, 0x00])) # ldx.w #$005F + rom.write_bytes(INIT_SRAM_ADDR + 0x0072, bytearray([0xA9, 0x00])) # lda #$00 + rom.write_bytes(INIT_SRAM_ADDR + 0x0074, bytearray([0x9F, 0x00, 0x08, 0x70])) # - sta !level_clears_sram,x + rom.write_bytes(INIT_SRAM_ADDR + 0x0078, bytearray([0xCA])) # dex + rom.write_bytes(INIT_SRAM_ADDR + 0x0079, bytearray([0x10, 0xF9])) # bpl - + rom.write_bytes(INIT_SRAM_ADDR + 0x007B, bytearray([0xA2, 0x0B, 0x00])) # ldx.w #$000B + rom.write_bytes(INIT_SRAM_ADDR + 0x007E, bytearray([0x9F, 0x40, 0x09, 0x70])) # - sta !blocksanity_sram,x + rom.write_bytes(INIT_SRAM_ADDR + 0x0082, bytearray([0x9F, 0x00, 0x09, 0x70])) # sta !yoshi_coins_sram,x + rom.write_bytes(INIT_SRAM_ADDR + 0x0086, bytearray([0x9F, 0x30, 0x09, 0x70])) # sta !bonus_block_sram,x + rom.write_bytes(INIT_SRAM_ADDR + 0x008A, bytearray([0x9F, 0x10, 0x09, 0x70])) # sta !moons_sram,x + rom.write_bytes(INIT_SRAM_ADDR + 0x008E, bytearray([0x9F, 0x20, 0x09, 0x70])) # sta !checkpoints_sram,x + rom.write_bytes(INIT_SRAM_ADDR + 0x0092, bytearray([0xCA])) # dex + rom.write_bytes(INIT_SRAM_ADDR + 0x0093, bytearray([0x10, 0xE9])) # bpl - + rom.write_bytes(INIT_SRAM_ADDR + 0x0095, bytearray([0xA2, 0x90, 0x02])) # ldx.w #!blocksanity_locs-1 + rom.write_bytes(INIT_SRAM_ADDR + 0x0098, bytearray([0x9F, 0x00, 0x0A, 0x70])) # - sta !blocksanity_data_sram,x + rom.write_bytes(INIT_SRAM_ADDR + 0x009C, bytearray([0xCA])) # dex + rom.write_bytes(INIT_SRAM_ADDR + 0x009D, bytearray([0x10, 0xF9])) # bpl - + rom.write_bytes(INIT_SRAM_ADDR + 0x009F, bytearray([0x8F, 0x52, 0x09, 0x70])) # sta !special_world_clear_sram + rom.write_bytes(INIT_SRAM_ADDR + 0x00A3, bytearray([0x8F, 0x50, 0x09, 0x70])) # sta !received_items_count_sram+$00 + rom.write_bytes(INIT_SRAM_ADDR + 0x00A7, bytearray([0x8F, 0x51, 0x09, 0x70])) # sta !received_items_count_sram+$01 + rom.write_bytes(INIT_SRAM_ADDR + 0x00AB, bytearray([0xFA])) # plx + rom.write_bytes(INIT_SRAM_ADDR + 0x00AC, bytearray([0x5C, 0x22, 0x9D, 0x00])) # jml $009D22 + + SAVE_SRAM_ADDR = 0x7F300 + rom.write_bytes(SAVE_SRAM_ADDR + 0x0000, bytearray([0xE2, 0x30])) # save_sram: sep #$30 + rom.write_bytes(SAVE_SRAM_ADDR + 0x0002, bytearray([0xAB])) # plb + rom.write_bytes(SAVE_SRAM_ADDR + 0x0003, bytearray([0xA2, 0x5F])) # ldx.b #$5F + rom.write_bytes(SAVE_SRAM_ADDR + 0x0005, bytearray([0xBF, 0x00, 0xA2, 0x7F])) # - lda !level_clears,x + rom.write_bytes(SAVE_SRAM_ADDR + 0x0009, bytearray([0x9F, 0x00, 0x08, 0x70])) # sta !level_clears_sram,x + rom.write_bytes(SAVE_SRAM_ADDR + 0x000D, bytearray([0xCA])) # dex + rom.write_bytes(SAVE_SRAM_ADDR + 0x000E, bytearray([0x10, 0xF5])) # bpl - + rom.write_bytes(SAVE_SRAM_ADDR + 0x0010, bytearray([0xA2, 0x0B])) # ldx #$0B + rom.write_bytes(SAVE_SRAM_ADDR + 0x0012, bytearray([0xBF, 0x10, 0xA0, 0x7F])) # - lda !blocksanity_flags,x + rom.write_bytes(SAVE_SRAM_ADDR + 0x0016, bytearray([0x9F, 0x40, 0x09, 0x70])) # sta !blocksanity_sram,x + rom.write_bytes(SAVE_SRAM_ADDR + 0x001A, bytearray([0xBD, 0x2F, 0x1F])) # lda !yoshi_coins_flags,x + rom.write_bytes(SAVE_SRAM_ADDR + 0x001D, bytearray([0x9F, 0x00, 0x09, 0x70])) # sta !yoshi_coins_sram,x + rom.write_bytes(SAVE_SRAM_ADDR + 0x0021, bytearray([0xBD, 0xEE, 0x1F])) # lda !moons_flags,x + rom.write_bytes(SAVE_SRAM_ADDR + 0x0024, bytearray([0x9F, 0x10, 0x09, 0x70])) # sta !moons_sram,x + rom.write_bytes(SAVE_SRAM_ADDR + 0x0028, bytearray([0xBF, 0x00, 0xA0, 0x7F])) # lda !bonus_block_flags,x + rom.write_bytes(SAVE_SRAM_ADDR + 0x002C, bytearray([0x9F, 0x30, 0x09, 0x70])) # sta !bonus_block_sram,x + rom.write_bytes(SAVE_SRAM_ADDR + 0x0030, bytearray([0xBD, 0x3C, 0x1F])) # lda !checkpoints_flags,x + rom.write_bytes(SAVE_SRAM_ADDR + 0x0033, bytearray([0x9F, 0x20, 0x09, 0x70])) # sta !checkpoints_sram,x + rom.write_bytes(SAVE_SRAM_ADDR + 0x0037, bytearray([0xCA])) # dex + rom.write_bytes(SAVE_SRAM_ADDR + 0x0038, bytearray([0x10, 0xD8])) # bpl - + rom.write_bytes(SAVE_SRAM_ADDR + 0x003A, bytearray([0xC2, 0x10])) # rep #$10 + rom.write_bytes(SAVE_SRAM_ADDR + 0x003C, bytearray([0xA2, 0x90, 0x02])) # ldx.w #!blocksanity_locs-1 + rom.write_bytes(SAVE_SRAM_ADDR + 0x003F, bytearray([0xBF, 0x00, 0xA4, 0x7F])) # - lda !blocksanity_data_flags,x + rom.write_bytes(SAVE_SRAM_ADDR + 0x0043, bytearray([0x9F, 0x00, 0x0A, 0x70])) # sta !blocksanity_data_sram,x + rom.write_bytes(SAVE_SRAM_ADDR + 0x0047, bytearray([0xCA])) # dex + rom.write_bytes(SAVE_SRAM_ADDR + 0x0048, bytearray([0x10, 0xF5])) # bpl - + rom.write_bytes(SAVE_SRAM_ADDR + 0x004A, bytearray([0xE2, 0x10])) # sep #$10 + rom.write_bytes(SAVE_SRAM_ADDR + 0x004C, bytearray([0xAD, 0xFF, 0x1F])) # lda !special_world_clear_flag + rom.write_bytes(SAVE_SRAM_ADDR + 0x004F, bytearray([0x8F, 0x52, 0x09, 0x70])) # sta !special_world_clear_sram + rom.write_bytes(SAVE_SRAM_ADDR + 0x0053, bytearray([0xAF, 0x0E, 0xA0, 0x7F])) # lda !received_items_count+$00 + rom.write_bytes(SAVE_SRAM_ADDR + 0x0057, bytearray([0x8F, 0x50, 0x09, 0x70])) # sta !received_items_count_sram+$00 + rom.write_bytes(SAVE_SRAM_ADDR + 0x005B, bytearray([0xAF, 0x0F, 0xA0, 0x7F])) # lda !received_items_count+$01 + rom.write_bytes(SAVE_SRAM_ADDR + 0x005F, bytearray([0x8F, 0x51, 0x09, 0x70])) # sta !received_items_count_sram+$01 + rom.write_bytes(SAVE_SRAM_ADDR + 0x0063, bytearray([0x6B])) # rtl + + INIT_RAM_ADDR = 0x7F0A0 + rom.write_bytes(INIT_RAM_ADDR + 0x0000, bytearray([0xA9, 0xAA])) # init_ram: lda #$AA + rom.write_bytes(INIT_RAM_ADDR + 0x0002, bytearray([0x8D, 0x00, 0x04])) # sta $0400 + rom.write_bytes(INIT_RAM_ADDR + 0x0005, bytearray([0xA9, 0x00])) # clear_level_data: lda #$00 + rom.write_bytes(INIT_RAM_ADDR + 0x0007, bytearray([0xA2, 0x5F])) # ldx #$5F + rom.write_bytes(INIT_RAM_ADDR + 0x0009, bytearray([0x9F, 0x00, 0xA2, 0x7F])) # .loop sta !level_clears,x + rom.write_bytes(INIT_RAM_ADDR + 0x000D, bytearray([0xCA])) # dex + rom.write_bytes(INIT_RAM_ADDR + 0x000E, bytearray([0x10, 0xF9])) # bpl .loop + rom.write_bytes(INIT_RAM_ADDR + 0x0010, bytearray([0xC2, 0x10])) # rep #$10 + rom.write_bytes(INIT_RAM_ADDR + 0x0012, bytearray([0xA2, 0x0B, 0x00])) # ldx.w #$000B + rom.write_bytes(INIT_RAM_ADDR + 0x0015, bytearray([0x9F, 0x10, 0xA0, 0x7F])) # - sta !blocksanity_flags,x + rom.write_bytes(INIT_RAM_ADDR + 0x0019, bytearray([0x9D, 0x2F, 0x1F])) # sta !yoshi_coins_flags,x + rom.write_bytes(INIT_RAM_ADDR + 0x001C, bytearray([0x9D, 0xEE, 0x1F])) # sta !moons_flags,x + rom.write_bytes(INIT_RAM_ADDR + 0x001F, bytearray([0x9F, 0x00, 0xA0, 0x7F])) # sta !bonus_block_flags,x + rom.write_bytes(INIT_RAM_ADDR + 0x0023, bytearray([0x9D, 0x3C, 0x1F])) # sta !checkpoints_flags,x + rom.write_bytes(INIT_RAM_ADDR + 0x0026, bytearray([0xCA])) # dex + rom.write_bytes(INIT_RAM_ADDR + 0x0027, bytearray([0x10, 0xEC])) # bpl - + rom.write_bytes(INIT_RAM_ADDR + 0x0029, bytearray([0xA2, 0x90, 0x02])) # ldx.w #!blocksanity_locs-1 + rom.write_bytes(INIT_RAM_ADDR + 0x002C, bytearray([0x9F, 0x00, 0xA4, 0x7F])) # - sta !blocksanity_data_flags,x + rom.write_bytes(INIT_RAM_ADDR + 0x0030, bytearray([0xCA])) # dex + rom.write_bytes(INIT_RAM_ADDR + 0x0031, bytearray([0x10, 0xF9])) # bpl - + rom.write_bytes(INIT_RAM_ADDR + 0x0033, bytearray([0xC2, 0x20])) # rep #$20 + rom.write_bytes(INIT_RAM_ADDR + 0x0035, bytearray([0xA9, 0x00, 0x00])) # lda #$0000 + rom.write_bytes(INIT_RAM_ADDR + 0x0038, bytearray([0xA2, 0x22, 0x00])) # ldx #$0022 + rom.write_bytes(INIT_RAM_ADDR + 0x003B, bytearray([0x9F, 0x00, 0xB0, 0x7F])) # - sta !score_sprite_count,x + rom.write_bytes(INIT_RAM_ADDR + 0x003F, bytearray([0xCA])) # dex + rom.write_bytes(INIT_RAM_ADDR + 0x0040, bytearray([0xCA])) # dex + rom.write_bytes(INIT_RAM_ADDR + 0x0041, bytearray([0x10, 0xF8])) # bpl - + rom.write_bytes(INIT_RAM_ADDR + 0x0043, bytearray([0xE2, 0x20])) # sep #$20 + rom.write_bytes(INIT_RAM_ADDR + 0x0045, bytearray([0x8D, 0xFF, 0x1F])) # sta !special_world_clear_flag + rom.write_bytes(INIT_RAM_ADDR + 0x0048, bytearray([0x8F, 0x0E, 0xA0, 0x7F])) # sta !received_items_count+$00 + rom.write_bytes(INIT_RAM_ADDR + 0x004C, bytearray([0x8F, 0x0F, 0xA0, 0x7F])) # sta !received_items_count+$01 + rom.write_bytes(INIT_RAM_ADDR + 0x0050, bytearray([0xE2, 0x10])) # sep #$10 + rom.write_bytes(INIT_RAM_ADDR + 0x0052, bytearray([0x22, 0x20, 0xF1, 0x0F])) # jsl clear_tilemap + rom.write_bytes(INIT_RAM_ADDR + 0x0056, bytearray([0x5C, 0xC0, 0x93, 0x00])) # jml $0093C0 + +def handle_map_indicators(rom): + rom.write_bytes(0x265EE, bytearray([0x4C, 0x00, 0xA3])) # org $04E5EE : jmp check_events + + GET_MAP_LEVEL_NUM_ADDR = 0x22340 + rom.write_bytes(GET_MAP_LEVEL_NUM_ADDR + 0x0000, bytearray([0xC2, 0x30])) # get_translevel_num: rep #$30 + rom.write_bytes(GET_MAP_LEVEL_NUM_ADDR + 0x0002, bytearray([0xAE, 0xD6, 0x0D])) # ldx $0DD6 + rom.write_bytes(GET_MAP_LEVEL_NUM_ADDR + 0x0005, bytearray([0xBD, 0x1F, 0x1F])) # lda $1F1F,x + rom.write_bytes(GET_MAP_LEVEL_NUM_ADDR + 0x0008, bytearray([0x85, 0x00])) # sta $00 + rom.write_bytes(GET_MAP_LEVEL_NUM_ADDR + 0x000A, bytearray([0xBD, 0x21, 0x1F])) # lda $1F21,x + rom.write_bytes(GET_MAP_LEVEL_NUM_ADDR + 0x000D, bytearray([0x85, 0x02])) # sta $02 + rom.write_bytes(GET_MAP_LEVEL_NUM_ADDR + 0x000F, bytearray([0x8A])) # txa + rom.write_bytes(GET_MAP_LEVEL_NUM_ADDR + 0x0010, bytearray([0x4A])) # lsr + rom.write_bytes(GET_MAP_LEVEL_NUM_ADDR + 0x0011, bytearray([0x4A])) # lsr + rom.write_bytes(GET_MAP_LEVEL_NUM_ADDR + 0x0012, bytearray([0xAA])) # tax + rom.write_bytes(GET_MAP_LEVEL_NUM_ADDR + 0x0013, bytearray([0x20, 0x85, 0x98])) # jsr $9885 + rom.write_bytes(GET_MAP_LEVEL_NUM_ADDR + 0x0016, bytearray([0xA6, 0x04])) # ldx $04 + rom.write_bytes(GET_MAP_LEVEL_NUM_ADDR + 0x0018, bytearray([0xBF, 0x00, 0xD0, 0x7E])) # lda $7ED000,x + rom.write_bytes(GET_MAP_LEVEL_NUM_ADDR + 0x001C, bytearray([0xE2, 0x30])) # sep #$30 + rom.write_bytes(GET_MAP_LEVEL_NUM_ADDR + 0x001E, bytearray([0x85, 0x60])) # sta $60 + rom.write_bytes(GET_MAP_LEVEL_NUM_ADDR + 0x0020, bytearray([0xAA])) # tax + rom.write_bytes(GET_MAP_LEVEL_NUM_ADDR + 0x0021, bytearray([0xBF, 0x00, 0xFF, 0x06])) # lda $06FF00,x + rom.write_bytes(GET_MAP_LEVEL_NUM_ADDR + 0x0025, bytearray([0xC9, 0xFF])) # cmp #$FF + rom.write_bytes(GET_MAP_LEVEL_NUM_ADDR + 0x0027, bytearray([0xF0, 0x02])) # beq + + rom.write_bytes(GET_MAP_LEVEL_NUM_ADDR + 0x0029, bytearray([0x85, 0x60])) # sta $60 + rom.write_bytes(GET_MAP_LEVEL_NUM_ADDR + 0x002B, bytearray([0x60])) # + rts + + GET_MAP_LEVEL_BIT_ADDR = 0x22380 + rom.write_bytes(GET_MAP_LEVEL_BIT_ADDR + 0x0000, bytearray([0xA5, 0x60])) # get_translevel_bit: lda $60 + rom.write_bytes(GET_MAP_LEVEL_BIT_ADDR + 0x0002, bytearray([0x4A])) # lsr + rom.write_bytes(GET_MAP_LEVEL_BIT_ADDR + 0x0003, bytearray([0x4A])) # lsr + rom.write_bytes(GET_MAP_LEVEL_BIT_ADDR + 0x0004, bytearray([0x4A])) # lsr + rom.write_bytes(GET_MAP_LEVEL_BIT_ADDR + 0x0005, bytearray([0xA8])) # tay + rom.write_bytes(GET_MAP_LEVEL_BIT_ADDR + 0x0006, bytearray([0xA5, 0x60])) # lda $60 + rom.write_bytes(GET_MAP_LEVEL_BIT_ADDR + 0x0008, bytearray([0x29, 0x07])) # and #$07 + rom.write_bytes(GET_MAP_LEVEL_BIT_ADDR + 0x000A, bytearray([0xAA])) # tax + rom.write_bytes(GET_MAP_LEVEL_BIT_ADDR + 0x000B, bytearray([0x60])) # rts + + UPDATE_MAP_PTRS_ADDR = 0x223C0 + rom.write_bytes(UPDATE_MAP_PTRS_ADDR + 0x0000, bytearray([0xE6, 0x00])) # update_flag_pointers: inc $00 + rom.write_bytes(UPDATE_MAP_PTRS_ADDR + 0x0002, bytearray([0xE6, 0x00])) # inc $00 + rom.write_bytes(UPDATE_MAP_PTRS_ADDR + 0x0004, bytearray([0xE6, 0x03])) # inc $03 + rom.write_bytes(UPDATE_MAP_PTRS_ADDR + 0x0006, bytearray([0xE6, 0x03])) # inc $03 + rom.write_bytes(UPDATE_MAP_PTRS_ADDR + 0x0008, bytearray([0xE6, 0x06])) # inc $06 + rom.write_bytes(UPDATE_MAP_PTRS_ADDR + 0x000A, bytearray([0xE6, 0x06])) # inc $06 + rom.write_bytes(UPDATE_MAP_PTRS_ADDR + 0x000C, bytearray([0xE6, 0x62])) # inc $62 + rom.write_bytes(UPDATE_MAP_PTRS_ADDR + 0x000E, bytearray([0xE6, 0x62])) # inc $62 + rom.write_bytes(UPDATE_MAP_PTRS_ADDR + 0x0010, bytearray([0xE6, 0x63])) # inc $63 + rom.write_bytes(UPDATE_MAP_PTRS_ADDR + 0x0012, bytearray([0x60])) # rts + + CLEAR_TILEMAP_ADDR = 0x7F120 + rom.write_bytes(CLEAR_TILEMAP_ADDR + 0x0000, bytearray([0xC2, 0x20])) # clear_tilemap: rep #$20 + rom.write_bytes(CLEAR_TILEMAP_ADDR + 0x0002, bytearray([0xA9, 0x1F, 0x39])) # lda.w #$3900+!icon_disabled + rom.write_bytes(CLEAR_TILEMAP_ADDR + 0x0005, bytearray([0xA2, 0x1E])) # ldx #$1E + rom.write_bytes(CLEAR_TILEMAP_ADDR + 0x0007, bytearray([0x9F, 0x20, 0xA1, 0x7F])) # .loop sta !ow_tilemap_switches,x + rom.write_bytes(CLEAR_TILEMAP_ADDR + 0x000B, bytearray([0x9F, 0x00, 0xA1, 0x7F])) # sta !ow_tilemap_abilities,x + rom.write_bytes(CLEAR_TILEMAP_ADDR + 0x000F, bytearray([0x9F, 0x40, 0xA1, 0x7F])) # sta !ow_tilemap_flags_top,x + rom.write_bytes(CLEAR_TILEMAP_ADDR + 0x0013, bytearray([0x9F, 0x60, 0xA1, 0x7F])) # sta !ow_tilemap_flags_mid,x + rom.write_bytes(CLEAR_TILEMAP_ADDR + 0x0017, bytearray([0x9F, 0x80, 0xA1, 0x7F])) # sta !ow_tilemap_flags_bot,x + rom.write_bytes(CLEAR_TILEMAP_ADDR + 0x001B, bytearray([0xCA])) # dex + rom.write_bytes(CLEAR_TILEMAP_ADDR + 0x001C, bytearray([0xCA])) # dex + rom.write_bytes(CLEAR_TILEMAP_ADDR + 0x001D, bytearray([0x10, 0xE8])) # bpl .loop + rom.write_bytes(CLEAR_TILEMAP_ADDR + 0x001F, bytearray([0xE2, 0x20])) # sep #$20 + rom.write_bytes(CLEAR_TILEMAP_ADDR + 0x0021, bytearray([0xA9, 0x07])) # lda #$07 + rom.write_bytes(CLEAR_TILEMAP_ADDR + 0x0023, bytearray([0x85, 0x63])) # sta $63 + rom.write_bytes(CLEAR_TILEMAP_ADDR + 0x0025, bytearray([0x0A])) # asl + rom.write_bytes(CLEAR_TILEMAP_ADDR + 0x0026, bytearray([0x85, 0x62])) # sta $62 + rom.write_bytes(CLEAR_TILEMAP_ADDR + 0x0028, bytearray([0x6B])) # rtl + + CLEAR_TILEMAP_FLAGS_ADDR = 0x7F180 + rom.write_bytes(CLEAR_TILEMAP_FLAGS_ADDR + 0x0000, bytearray([0xC2, 0x20])) # clear_tilemap_flags: rep #$20 + rom.write_bytes(CLEAR_TILEMAP_FLAGS_ADDR + 0x0002, bytearray([0xA9, 0x1F, 0x39])) # lda.w #$3900+!icon_disabled + rom.write_bytes(CLEAR_TILEMAP_FLAGS_ADDR + 0x0005, bytearray([0xA2, 0x0C])) # ldx.b #($07*2)-2 + rom.write_bytes(CLEAR_TILEMAP_FLAGS_ADDR + 0x0007, bytearray([0x9F, 0x40, 0xA1, 0x7F])) # .loop sta !ow_tilemap_flags_top,x + rom.write_bytes(CLEAR_TILEMAP_FLAGS_ADDR + 0x000B, bytearray([0x9F, 0x60, 0xA1, 0x7F])) # sta !ow_tilemap_flags_mid,x + rom.write_bytes(CLEAR_TILEMAP_FLAGS_ADDR + 0x000F, bytearray([0x9F, 0x80, 0xA1, 0x7F])) # sta !ow_tilemap_flags_bot,x + rom.write_bytes(CLEAR_TILEMAP_FLAGS_ADDR + 0x0013, bytearray([0xCA])) # dex + rom.write_bytes(CLEAR_TILEMAP_FLAGS_ADDR + 0x0014, bytearray([0xCA])) # dex + rom.write_bytes(CLEAR_TILEMAP_FLAGS_ADDR + 0x0015, bytearray([0x10, 0xF0])) # bpl .loop + rom.write_bytes(CLEAR_TILEMAP_FLAGS_ADDR + 0x0017, bytearray([0xE2, 0x20])) # sep #$20 + rom.write_bytes(CLEAR_TILEMAP_FLAGS_ADDR + 0x0019, bytearray([0xA9, 0x06])) # lda #$06 + rom.write_bytes(CLEAR_TILEMAP_FLAGS_ADDR + 0x001B, bytearray([0x85, 0x63])) # sta $63 + rom.write_bytes(CLEAR_TILEMAP_FLAGS_ADDR + 0x001D, bytearray([0x0A])) # asl + rom.write_bytes(CLEAR_TILEMAP_FLAGS_ADDR + 0x001E, bytearray([0x85, 0x62])) # sta $62 + rom.write_bytes(CLEAR_TILEMAP_FLAGS_ADDR + 0x0020, bytearray([0x6B])) # rtl + + CHECK_EVENTS_ADDR = 0x22300 + rom.write_bytes(CHECK_EVENTS_ADDR + 0x0000, bytearray([0xDA])) # check_events: phx + rom.write_bytes(CHECK_EVENTS_ADDR + 0x0001, bytearray([0x20, 0x40, 0xA3])) # jsr get_translevel_num + rom.write_bytes(CHECK_EVENTS_ADDR + 0x0004, bytearray([0xAD, 0xD5, 0x0D])) # lda $0DD5 + rom.write_bytes(CHECK_EVENTS_ADDR + 0x0007, bytearray([0xF0, 0x17])) # beq .dont_sync + rom.write_bytes(CHECK_EVENTS_ADDR + 0x0009, bytearray([0x30, 0x15])) # bmi .dont_sync + rom.write_bytes(CHECK_EVENTS_ADDR + 0x000B, bytearray([0xC9, 0x05])) # cmp #$05 + rom.write_bytes(CHECK_EVENTS_ADDR + 0x000D, bytearray([0xB0, 0x11])) # bcs .dont_sync + rom.write_bytes(CHECK_EVENTS_ADDR + 0x000F, bytearray([0x29, 0x07])) # and #$07 + rom.write_bytes(CHECK_EVENTS_ADDR + 0x0011, bytearray([0xAA])) # tax + rom.write_bytes(CHECK_EVENTS_ADDR + 0x0012, bytearray([0xBF, 0x7D, 0x9E, 0x00])) # lda.l $009E7D,x + rom.write_bytes(CHECK_EVENTS_ADDR + 0x0016, bytearray([0xA6, 0x60])) # ldx $60 + rom.write_bytes(CHECK_EVENTS_ADDR + 0x0018, bytearray([0x1F, 0x00, 0xA2, 0x7F])) # ora !level_clears,x + rom.write_bytes(CHECK_EVENTS_ADDR + 0x001C, bytearray([0x9F, 0x00, 0xA2, 0x7F])) # sta !level_clears,x + rom.write_bytes(CHECK_EVENTS_ADDR + 0x0020, bytearray([0xFA])) # .dont_sync plx + rom.write_bytes(CHECK_EVENTS_ADDR + 0x0021, bytearray([0xAD, 0xD5, 0x0D])) # lda $0DD5 + rom.write_bytes(CHECK_EVENTS_ADDR + 0x0024, bytearray([0xC9, 0x02])) # cmp #$02 + rom.write_bytes(CHECK_EVENTS_ADDR + 0x0026, bytearray([0xD0, 0x03])) # bne .no_secret + rom.write_bytes(CHECK_EVENTS_ADDR + 0x0028, bytearray([0xEE, 0xEA, 0x1D])) # inc $1DEA + rom.write_bytes(CHECK_EVENTS_ADDR + 0x002B, bytearray([0x4C, 0xF8, 0xE5])) # .no_secret jmp $E5F8 + + DRAW_MAP_TILEMAP_ADDR = 0x221B6 + rom.write_bytes(0x00222, bytearray([0x5C, 0xB6, 0xA1, 0x04])) # org $008222 : jml draw_ow_tilemap + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0000, bytearray([0xAD, 0xD9, 0x13])) # draw_ow_tilemap: lda $13D9 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0003, bytearray([0xC9, 0x0A])) # cmp #$0A + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0005, bytearray([0xD0, 0x04])) # bne write_tilemap + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0007, bytearray([0x5C, 0x29, 0x82, 0x00])) # jml $008229 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x000B, bytearray([0xC2, 0x20])) # write_tilemap: rep #$20 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x000D, bytearray([0xA0, 0x80])) # ldy #$80 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x000F, bytearray([0x8C, 0x15, 0x21])) # sty $2115 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0012, bytearray([0xA9, 0x27, 0x50])) # write_abilities: lda #!vram_abilities_top + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0015, bytearray([0x8D, 0x16, 0x21])) # sta $2116 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0018, bytearray([0xA2, 0x00])) # ldx.b #$00 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x001A, bytearray([0xBF, 0xA2, 0xA2, 0x04])) # ..loop lda.l abilities_top,x + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x001E, bytearray([0x8D, 0x18, 0x21])) # sta $2118 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0021, bytearray([0xE8])) # inx + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0022, bytearray([0xE8])) # inx + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0023, bytearray([0xE0, 0x14])) # cpx.b #$0A*2 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0025, bytearray([0x90, 0xF3])) # bcc ..loop + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0027, bytearray([0xA9, 0x47, 0x50])) # .mid lda #!vram_abilities_mid + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x002A, bytearray([0x8D, 0x16, 0x21])) # sta $2116 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x002D, bytearray([0xA2, 0x00])) # ldx.b #$00 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x002F, bytearray([0xBF, 0xB6, 0xA2, 0x04])) # ..loop lda.l abilities_bottom,x + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0033, bytearray([0x8D, 0x18, 0x21])) # sta $2118 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0036, bytearray([0xE8])) # inx + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0037, bytearray([0xE8])) # inx + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0038, bytearray([0xE0, 0x14])) # cpx.b #$0A*2 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x003A, bytearray([0x90, 0xF3])) # bcc ..loop + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x003C, bytearray([0xA9, 0x67, 0x50])) # .bot lda #!vram_abilities_bot + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x003F, bytearray([0x8D, 0x16, 0x21])) # sta $2116 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0042, bytearray([0xA2, 0x00])) # ldx.b #$00 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0044, bytearray([0xBF, 0x00, 0xA1, 0x7F])) # ..loop lda !ow_tilemap_abilities,x + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0048, bytearray([0x8D, 0x18, 0x21])) # sta $2118 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x004B, bytearray([0xE8])) # inx + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x004C, bytearray([0xE8])) # inx + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x004D, bytearray([0xE0, 0x14])) # cpx.b #$0A*2 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x004F, bytearray([0x90, 0xF3])) # bcc ..loop + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0051, bytearray([0xA9, 0x32, 0x50])) # write_switches: lda #!vram_switches_top + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0054, bytearray([0x8D, 0x16, 0x21])) # sta $2116 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0057, bytearray([0xA2, 0x00])) # ldx.b #$00 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0059, bytearray([0xBF, 0xCA, 0xA2, 0x04])) # ..loop lda.l switches_top,x + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x005D, bytearray([0x8D, 0x18, 0x21])) # sta $2118 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0060, bytearray([0xE8])) # inx + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0061, bytearray([0xE8])) # inx + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0062, bytearray([0xE0, 0x0A])) # cpx.b #$05*2 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0064, bytearray([0x90, 0xF3])) # bcc ..loop + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0066, bytearray([0xA9, 0x52, 0x50])) # .mid lda #!vram_switches_mid + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0069, bytearray([0x8D, 0x16, 0x21])) # sta $2116 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x006C, bytearray([0xA2, 0x00])) # ldx.b #$00 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x006E, bytearray([0xBF, 0xD4, 0xA2, 0x04])) # ..loop lda.l switches_bottom,x + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0072, bytearray([0x8D, 0x18, 0x21])) # sta $2118 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0075, bytearray([0xE8])) # inx + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0076, bytearray([0xE8])) # inx + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0077, bytearray([0xE0, 0x0A])) # cpx.b #$05*2 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0079, bytearray([0x90, 0xF3])) # bcc ..loop + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x007B, bytearray([0xA9, 0x72, 0x50])) # .bot lda #!vram_switches_bot + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x007E, bytearray([0x8D, 0x16, 0x21])) # sta $2116 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0081, bytearray([0xA2, 0x00])) # ldx.b #$00 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0083, bytearray([0xBF, 0x20, 0xA1, 0x7F])) # ..loop lda !ow_tilemap_switches,x + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0087, bytearray([0x8D, 0x18, 0x21])) # sta $2118 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x008A, bytearray([0xE8])) # inx + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x008B, bytearray([0xE8])) # inx + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x008C, bytearray([0xE0, 0x0A])) # cpx.b #$05*2 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x008E, bytearray([0x90, 0xF3])) # bcc ..loop + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0090, bytearray([0xD4, 0x00])) # write_level_data: pei ($00) + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0092, bytearray([0xA5, 0x63])) # lda $63 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0094, bytearray([0x29, 0xFF, 0x00])) # and #$00FF + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0097, bytearray([0x85, 0x00])) # sta $00 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0099, bytearray([0xF0, 0x48])) # beq .skip_flags + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x009B, bytearray([0xA9, 0x3E, 0x50])) # .top lda.w #!vram_level_data_top+$01 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x009E, bytearray([0x38])) # sec + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x009F, bytearray([0xE5, 0x00])) # sbc $00 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00A1, bytearray([0x8D, 0x16, 0x21])) # sta $2116 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00A4, bytearray([0xA6, 0x62])) # ldx.b $62 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00A6, bytearray([0xCA])) # dex + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00A7, bytearray([0xCA])) # dex + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00A8, bytearray([0xBF, 0x40, 0xA1, 0x7F])) # ..loop lda.l !ow_tilemap_flags_top,x + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00AC, bytearray([0x8D, 0x18, 0x21])) # sta $2118 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00AF, bytearray([0xCA])) # dex + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00B0, bytearray([0xCA])) # dex + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00B1, bytearray([0x10, 0xF5])) # bpl ..loop + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00B3, bytearray([0xA9, 0x5E, 0x50])) # .mid lda.w #!vram_level_data_mid+$01 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00B6, bytearray([0x38])) # sec + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00B7, bytearray([0xE5, 0x00])) # sbc $00 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00B9, bytearray([0x8D, 0x16, 0x21])) # sta $2116 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00BC, bytearray([0xA6, 0x62])) # ldx.b $62 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00BE, bytearray([0xCA])) # dex + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00BF, bytearray([0xCA])) # dex + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00C0, bytearray([0xBF, 0x60, 0xA1, 0x7F])) # ..loop lda.l !ow_tilemap_flags_mid,x + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00C4, bytearray([0x8D, 0x18, 0x21])) # sta $2118 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00C7, bytearray([0xCA])) # dex + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00C8, bytearray([0xCA])) # dex + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00C9, bytearray([0x10, 0xF5])) # bpl ..loop + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00CB, bytearray([0xA9, 0x7E, 0x50])) # .bot lda.w #!vram_level_data_bot+$01 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00CE, bytearray([0x38])) # sec + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00CF, bytearray([0xE5, 0x00])) # sbc $00 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00D1, bytearray([0x8D, 0x16, 0x21])) # sta $2116 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00D4, bytearray([0xA6, 0x62])) # ldx.b $62 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00D6, bytearray([0xCA])) # dex + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00D7, bytearray([0xCA])) # dex + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00D8, bytearray([0xBF, 0x80, 0xA1, 0x7F])) # ..loop lda.l !ow_tilemap_flags_bot,x + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00DC, bytearray([0x8D, 0x18, 0x21])) # sta $2118 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00DF, bytearray([0xCA])) # dex + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00E0, bytearray([0xCA])) # dex + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00E1, bytearray([0x10, 0xF5])) # bpl ..loop + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00E3, bytearray([0x68])) # .skip_flags pla + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00E4, bytearray([0x85, 0x00])) # sta $00 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00E6, bytearray([0xE2, 0x20])) # sep #$20 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00E8, bytearray([0x5C, 0x37, 0x82, 0x00])) # jml $008237 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00EC, bytearray([0x0F, 0x39, 0x12, 0x39])) # abilities_top: dw $390F,$3912 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00F0, bytearray([0x11, 0x39, 0x02, 0x39])) # dw $3911,$3902 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00F4, bytearray([0x12, 0x39, 0x02, 0x39])) # dw $3912,$3902 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00F8, bytearray([0x18, 0x39, 0x0F, 0x39])) # dw $3918,$390F + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x00FC, bytearray([0x0F, 0x39, 0x12, 0x39])) # dw $390F,$3912 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0100, bytearray([0x4E, 0x39, 0x4F, 0x39])) # abilities_bottom: dw $394E,$394F + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0104, bytearray([0x54, 0x39, 0x40, 0x39])) # dw $3954,$3940 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0108, bytearray([0x56, 0x39, 0x4B, 0x39])) # dw $3956,$394B + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x010C, bytearray([0x4E, 0x39, 0x52, 0x39])) # dw $394E,$3952 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0110, bytearray([0x41, 0x39, 0x53, 0x39])) # dw $3941,$3953 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0114, bytearray([0x18, 0x39, 0x06, 0x39])) # switches_top: dw $3918,$3906 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0118, bytearray([0x11, 0x39, 0x01, 0x39])) # dw $3911,$3901 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x011C, bytearray([0x12, 0x39])) # dw $3912 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x011E, bytearray([0x12, 0x39, 0x12, 0x39])) # switches_bottom: dw $3912,$3912 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0122, bytearray([0x12, 0x39, 0x12, 0x39])) # dw $3912,$3912 + rom.write_bytes(DRAW_MAP_TILEMAP_ADDR + 0x0126, bytearray([0x4F, 0x39])) # dw $394F + + BUILD_TILEMAP_ADDR = 0x26F3E + rom.write_bytes(0x021C7, bytearray([0x22, 0x3E, 0xEF, 0x04])) # org $00A1C7 : jsl prepare_dynamic_tilemap + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0000, bytearray([0x22, 0x41, 0x82, 0x04])) # prepare_dynamic_tilemap: jsl $048241 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0004, bytearray([0xA0, 0x22])) # .handle_powerup: ldy #$22 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0006, bytearray([0xAD, 0x2D, 0x1F])) # lda $1F2D + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0009, bytearray([0x4A])) # lsr + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x000A, bytearray([0x90, 0x01])) # bcc $01 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x000C, bytearray([0xC8])) # iny + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x000D, bytearray([0x4A])) # lsr + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x000E, bytearray([0x90, 0x01])) # bcc $01 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0010, bytearray([0xC8])) # iny + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0011, bytearray([0x4A])) # lsr + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0012, bytearray([0x90, 0x01])) # bcc $01 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0014, bytearray([0xC8])) # iny + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0015, bytearray([0x98])) # tya + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0016, bytearray([0x8F, 0x00, 0xA1, 0x7F])) # sta !ow_tilemap_abilities ; Progressive powerup + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x001A, bytearray([0xA0, 0x5E])) # .handle_spinjump: ldy #!icon_not_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x001C, bytearray([0xAD, 0x2C, 0x1F])) # lda $1F2C + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x001F, bytearray([0x29, 0x08])) # and #$08 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0021, bytearray([0xF0, 0x02])) # beq $02 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0023, bytearray([0xA0, 0x3F])) # ldy #!icon_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0025, bytearray([0x98])) # tya + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0026, bytearray([0x8F, 0x02, 0xA1, 0x7F])) # sta !ow_tilemap_abilities+$02 ; Spin jump + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x002A, bytearray([0xA0, 0x5E])) # .handle_run: ldy.b #!icon_not_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x002C, bytearray([0xAD, 0x2C, 0x1F])) # lda $1F2C + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x002F, bytearray([0x29, 0x80])) # and #$80 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0031, bytearray([0xF0, 0x02])) # beq $02 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0033, bytearray([0xA0, 0x3F])) # ldy.b #!icon_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0035, bytearray([0x98])) # tya + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0036, bytearray([0x8F, 0x04, 0xA1, 0x7F])) # sta !ow_tilemap_abilities+$04 ; Run + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x003A, bytearray([0xA0, 0x5E])) # .handle_carry: ldy.b #!icon_not_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x003C, bytearray([0xAD, 0x2C, 0x1F])) # lda $1F2C + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x003F, bytearray([0x29, 0x40])) # and #$40 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0041, bytearray([0xF0, 0x02])) # beq $02 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0043, bytearray([0xA0, 0x3F])) # ldy.b #!icon_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0045, bytearray([0x98])) # tya + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0046, bytearray([0x8F, 0x06, 0xA1, 0x7F])) # sta !ow_tilemap_abilities+$06 ; Carry + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x004A, bytearray([0xA0, 0x5E])) # .handle_swim: ldy.b #!icon_not_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x004C, bytearray([0xAD, 0x2C, 0x1F])) # lda $1F2C + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x004F, bytearray([0x29, 0x04])) # and #$04 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0051, bytearray([0xF0, 0x02])) # beq $02 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0053, bytearray([0xA0, 0x3F])) # ldy.b #!icon_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0055, bytearray([0x98])) # tya + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0056, bytearray([0x8F, 0x08, 0xA1, 0x7F])) # sta !ow_tilemap_abilities+$08 ; Swim + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x005A, bytearray([0xA0, 0x5E])) # .handle_climb: ldy.b #!icon_not_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x005C, bytearray([0xAD, 0x2C, 0x1F])) # lda $1F2C + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x005F, bytearray([0x29, 0x20])) # and #$20 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0061, bytearray([0xF0, 0x02])) # beq $02 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0063, bytearray([0xA0, 0x3F])) # ldy.b #!icon_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0065, bytearray([0x98])) # tya + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0066, bytearray([0x8F, 0x0A, 0xA1, 0x7F])) # sta !ow_tilemap_abilities+$0A ; Climb + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x006A, bytearray([0xA0, 0x5E])) # .handle_yoshi: ldy.b #!icon_not_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x006C, bytearray([0xAD, 0x2C, 0x1F])) # lda $1F2C + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x006F, bytearray([0x29, 0x02])) # and #$02 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0071, bytearray([0xF0, 0x02])) # beq $02 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0073, bytearray([0xA0, 0x3F])) # ldy.b #!icon_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0075, bytearray([0x98])) # tya + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0076, bytearray([0x8F, 0x0C, 0xA1, 0x7F])) # sta !ow_tilemap_abilities+$0C ; Yoshi + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x007A, bytearray([0xA0, 0x5E])) # .handle_pswitch: ldy.b #!icon_not_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x007C, bytearray([0xAD, 0x2C, 0x1F])) # lda $1F2C + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x007F, bytearray([0x29, 0x10])) # and #$10 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0081, bytearray([0xF0, 0x02])) # beq $02 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0083, bytearray([0xA0, 0x3F])) # ldy.b #!icon_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0085, bytearray([0x98])) # tya + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0086, bytearray([0x8F, 0x0E, 0xA1, 0x7F])) # sta !ow_tilemap_abilities+$0E ; P-Switch + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x008A, bytearray([0xA0, 0x5E])) # .handle_pballoon: ldy.b #!icon_not_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x008C, bytearray([0xAD, 0x2D, 0x1F])) # lda $1F2D + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x008F, bytearray([0x29, 0x08])) # and #$08 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0091, bytearray([0xF0, 0x02])) # beq $02 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0093, bytearray([0xA0, 0x3F])) # ldy.b #!icon_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0095, bytearray([0x98])) # tya + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0096, bytearray([0x8F, 0x10, 0xA1, 0x7F])) # sta !ow_tilemap_abilities+$10 ; P-Balloon + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x009A, bytearray([0xA0, 0x5E])) # .handle_star: ldy.b #!icon_not_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x009C, bytearray([0xAD, 0x2D, 0x1F])) # lda $1F2D + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x009F, bytearray([0x29, 0x10])) # and #$10 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00A1, bytearray([0xF0, 0x02])) # beq $02 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00A3, bytearray([0xA0, 0x3F])) # ldy.b #!icon_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00A5, bytearray([0x98])) # tya + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00A6, bytearray([0x8F, 0x12, 0xA1, 0x7F])) # sta !ow_tilemap_abilities+$12 ; Star + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00AA, bytearray([0xA0, 0x5E])) # .handle_yellow_switch: ldy.b #!icon_not_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00AC, bytearray([0xAD, 0x28, 0x1F])) # lda $1F28 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00AF, bytearray([0xF0, 0x02])) # beq $02 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00B1, bytearray([0xA0, 0x3F])) # ldy.b #!icon_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00B3, bytearray([0x98])) # tya + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00B4, bytearray([0x8F, 0x20, 0xA1, 0x7F])) # sta !ow_tilemap_switches+$00 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00B8, bytearray([0xA0, 0x5E])) # .handle_green_switch: ldy.b #!icon_not_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00BA, bytearray([0xAD, 0x27, 0x1F])) # lda $1F27 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00BD, bytearray([0xF0, 0x02])) # beq $02 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00BF, bytearray([0xA0, 0x3F])) # ldy.b #!icon_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00C1, bytearray([0x98])) # tya + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00C2, bytearray([0x8F, 0x22, 0xA1, 0x7F])) # sta !ow_tilemap_switches+$02 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00C6, bytearray([0xA0, 0x5E])) # .handle_red_switch: ldy.b #!icon_not_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00C8, bytearray([0xAD, 0x2A, 0x1F])) # lda $1F2A + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00CB, bytearray([0xF0, 0x02])) # beq $02 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00CD, bytearray([0xA0, 0x3F])) # ldy.b #!icon_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00CF, bytearray([0x98])) # tya + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00D0, bytearray([0x8F, 0x24, 0xA1, 0x7F])) # sta !ow_tilemap_switches+$04 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00D4, bytearray([0xA0, 0x5E])) # .handle_blue_switch: ldy.b #!icon_not_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00D6, bytearray([0xAD, 0x29, 0x1F])) # lda $1F29 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00D9, bytearray([0xF0, 0x02])) # beq $02 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00DB, bytearray([0xA0, 0x3F])) # ldy.b #!icon_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00DD, bytearray([0x98])) # tya + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00DE, bytearray([0x8F, 0x26, 0xA1, 0x7F])) # sta !ow_tilemap_switches+$06 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00E2, bytearray([0xA0, 0x5E])) # .handle_special_world_clear: ldy.b #!icon_not_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00E4, bytearray([0xAD, 0xFF, 0x1F])) # lda !special_world_clear_flag + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00E7, bytearray([0xF0, 0x02])) # beq $02 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00E9, bytearray([0xA0, 0x3F])) # ldy.b #!icon_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00EB, bytearray([0x98])) # tya + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00EC, bytearray([0x8F, 0x28, 0xA1, 0x7F])) # sta !ow_tilemap_switches+$08 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00F0, bytearray([0x22, 0x80, 0xF1, 0x0F])) # jsl clear_tilemap_flags + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00F4, bytearray([0xAD, 0xD9, 0x13])) # lda $13D9 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00F7, bytearray([0xC9, 0x01])) # cmp #$01 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00F9, bytearray([0xF0, 0x05])) # beq process_level + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00FB, bytearray([0xC9, 0x03])) # cmp #$03 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00FD, bytearray([0xF0, 0x01])) # beq process_level + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x00FF, bytearray([0x6B])) # rtl + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0100, bytearray([0x20, 0x40, 0xA3])) # process_level: jsr get_translevel_num + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0103, bytearray([0xA6, 0x60])) # ldx $60 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0105, bytearray([0xBF, 0x00, 0xF4, 0x0F])) # lda.l level_data,x + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0109, bytearray([0x10, 0x01])) # bpl .handle_data + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x010B, bytearray([0x6B])) # rtl + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x010C, bytearray([0x64, 0x62])) # .handle_data stz $62 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x010E, bytearray([0x64, 0x63])) # stz $63 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0110, bytearray([0xC2, 0x20])) # rep #$20 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0112, bytearray([0xA9, 0x40, 0xA1])) # lda.w #!ow_tilemap_flags_top + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0115, bytearray([0x85, 0x00])) # sta $00 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0117, bytearray([0xA9, 0x60, 0xA1])) # lda.w #!ow_tilemap_flags_mid + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x011A, bytearray([0x85, 0x03])) # sta $03 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x011C, bytearray([0xA9, 0x80, 0xA1])) # lda.w #!ow_tilemap_flags_bot + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x011F, bytearray([0x85, 0x06])) # sta $06 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0121, bytearray([0xE2, 0x20])) # sep #$20 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0123, bytearray([0xA9, 0x7F])) # lda.b #!ow_tilemap_flags_top>>16 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0125, bytearray([0x85, 0x02])) # sta $02 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0127, bytearray([0x85, 0x05])) # sta $05 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0129, bytearray([0x85, 0x08])) # sta $08 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x012B, bytearray([0xAF, 0xAB, 0xBF, 0x03])) # handle_blocksanity: lda.l blocksanity_enabled_flag + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x012F, bytearray([0xF0, 0x30])) # beq handle_bonus_blocks + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0131, bytearray([0xA6, 0x60])) # ldx $60 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0133, bytearray([0xA0, 0x1F])) # ldy.b #!icon_disabled + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0135, bytearray([0xBF, 0x00, 0xF4, 0x0F])) # lda.l level_data,x + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0139, bytearray([0x29, 0x40])) # and #$40 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x013B, bytearray([0xF0, 0x24])) # beq handle_bonus_blocks + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x013D, bytearray([0xA0, 0x5E])) # ldy.b #!icon_not_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x013F, bytearray([0x5A])) # phy + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0140, bytearray([0x20, 0x80, 0xA3])) # jsr get_translevel_bit + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0143, bytearray([0xDA])) # phx + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0144, bytearray([0xBB])) # tyx + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0145, bytearray([0xBF, 0x10, 0xA0, 0x7F])) # lda.l !blocksanity_flags,x + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0149, bytearray([0xFA])) # plx + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x014A, bytearray([0x7A])) # ply + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x014B, bytearray([0x3F, 0xA6, 0xA8, 0x0D])) # and.l $0DA8A6,x + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x014F, bytearray([0xF0, 0x02])) # beq .write + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0151, bytearray([0xA0, 0x3F])) # ldy.b #!icon_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0153, bytearray([0x98])) # .write tya + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0154, bytearray([0x87, 0x06])) # sta [$06] + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0156, bytearray([0xA9, 0x01])) # lda #$01 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0158, bytearray([0x87, 0x00])) # sta [$00] + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x015A, bytearray([0xA9, 0x12])) # lda #$12 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x015C, bytearray([0x87, 0x03])) # sta [$03] + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x015E, bytearray([0x20, 0xC0, 0xA3])) # jsr update_flag_pointers + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0161, bytearray([0xAF, 0xAA, 0xBF, 0x03])) # handle_bonus_blocks: lda.l bonus_block_enabled_flag + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0165, bytearray([0xF0, 0x30])) # beq handle_checkpoints + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0167, bytearray([0xA6, 0x60])) # ldx $60 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0169, bytearray([0xA0, 0x1F])) # ldy.b #!icon_disabled + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x016B, bytearray([0xBF, 0x00, 0xF4, 0x0F])) # lda.l level_data,x + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x016F, bytearray([0x29, 0x20])) # and #$20 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0171, bytearray([0xF0, 0x24])) # beq handle_checkpoints + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0173, bytearray([0xA0, 0x5E])) # ldy.b #!icon_not_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0175, bytearray([0x5A])) # phy + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0176, bytearray([0x20, 0x80, 0xA3])) # jsr get_translevel_bit + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0179, bytearray([0xDA])) # phx + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x017A, bytearray([0xBB])) # tyx + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x017B, bytearray([0xBF, 0x00, 0xA0, 0x7F])) # lda !bonus_block_flags,x + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x017F, bytearray([0xFA])) # plx + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0180, bytearray([0x7A])) # ply + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0181, bytearray([0x3F, 0xA6, 0xA8, 0x0D])) # and.l $0DA8A6,x + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0185, bytearray([0xF0, 0x02])) # beq .write + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0187, bytearray([0xA0, 0x3F])) # ldy.b #!icon_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0189, bytearray([0x98])) # .write tya + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x018A, bytearray([0x87, 0x06])) # sta [$06] + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x018C, bytearray([0xA9, 0x01])) # lda #$01 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x018E, bytearray([0x87, 0x00])) # sta [$00] + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0190, bytearray([0xA9, 0x4E])) # lda #$4E + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0192, bytearray([0x87, 0x03])) # sta [$03] + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0194, bytearray([0x20, 0xC0, 0xA3])) # jsr update_flag_pointers + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0197, bytearray([0xAF, 0xA9, 0xBF, 0x03])) # handle_checkpoints: lda.l checkpoints_enabled_flag + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x019B, bytearray([0xF0, 0x2A])) # beq handle_moons + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x019D, bytearray([0xA6, 0x60])) # ldx $60 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x019F, bytearray([0xBF, 0x00, 0xF4, 0x0F])) # lda.l level_data,x + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01A3, bytearray([0x29, 0x10])) # and #$10 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01A5, bytearray([0xF0, 0x20])) # beq handle_moons + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01A7, bytearray([0xA0, 0x5E])) # ldy.b #!icon_not_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01A9, bytearray([0x5A])) # phy + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01AA, bytearray([0x20, 0x80, 0xA3])) # jsr get_translevel_bit + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01AD, bytearray([0xB9, 0x3C, 0x1F])) # lda !checkpoints_flags,y + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01B0, bytearray([0x7A])) # ply + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01B1, bytearray([0x3F, 0xA6, 0xA8, 0x0D])) # and.l $0DA8A6,x + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01B5, bytearray([0xF0, 0x02])) # beq .write + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01B7, bytearray([0xA0, 0x3F])) # ldy.b #!icon_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01B9, bytearray([0x98])) # .write tya + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01BA, bytearray([0x87, 0x06])) # sta [$06] + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01BC, bytearray([0xA9, 0x02])) # lda #$02 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01BE, bytearray([0x87, 0x00])) # sta [$00] + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01C0, bytearray([0xA9, 0x47])) # lda #$47 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01C2, bytearray([0x87, 0x03])) # sta [$03] + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01C4, bytearray([0x20, 0xC0, 0xA3])) # jsr update_flag_pointers + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01C7, bytearray([0xAF, 0xA8, 0xBF, 0x03])) # handle_moons: lda.l moon_enabled_flag + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01CB, bytearray([0xF0, 0x2A])) # beq handle_dragon_coins + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01CD, bytearray([0xA6, 0x60])) # ldx $60 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01CF, bytearray([0xBF, 0x00, 0xF4, 0x0F])) # lda.l level_data,x + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01D3, bytearray([0x29, 0x08])) # and #$08 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01D5, bytearray([0xF0, 0x20])) # beq handle_dragon_coins + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01D7, bytearray([0xA0, 0x5E])) # ldy.b #!icon_not_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01D9, bytearray([0x5A])) # phy + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01DA, bytearray([0x20, 0x80, 0xA3])) # jsr get_translevel_bit + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01DD, bytearray([0xB9, 0xEE, 0x1F])) # lda !moons_flags,y + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01E0, bytearray([0x7A])) # ply + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01E1, bytearray([0x3F, 0xA6, 0xA8, 0x0D])) # and.l $0DA8A6,x + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01E5, bytearray([0xF0, 0x02])) # beq .write + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01E7, bytearray([0xA0, 0x3F])) # ldy.b #!icon_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01E9, bytearray([0x98])) # .write tya + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01EA, bytearray([0x87, 0x06])) # sta [$06] + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01EC, bytearray([0xA9, 0x0C])) # lda #$0C + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01EE, bytearray([0x87, 0x00])) # sta [$00] + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01F0, bytearray([0xA9, 0x4E])) # lda #$4E + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01F2, bytearray([0x87, 0x03])) # sta [$03] + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01F4, bytearray([0x20, 0xC0, 0xA3])) # jsr update_flag_pointers + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01F7, bytearray([0xAF, 0xA6, 0xBF, 0x03])) # handle_dragon_coins: lda.l dragon_coin_enabled_flag + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01FB, bytearray([0xF0, 0x2A])) # beq handle_exit_2 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01FD, bytearray([0xA6, 0x60])) # ldx $60 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x01FF, bytearray([0xBF, 0x00, 0xF4, 0x0F])) # lda.l level_data,x + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0203, bytearray([0x29, 0x04])) # and #$04 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0205, bytearray([0xF0, 0x20])) # beq handle_exit_2 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0207, bytearray([0xA0, 0x5E])) # ldy.b #!icon_not_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0209, bytearray([0x5A])) # phy + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x020A, bytearray([0x20, 0x80, 0xA3])) # jsr get_translevel_bit + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x020D, bytearray([0xB9, 0x2F, 0x1F])) # lda !yoshi_coins_flags,y + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0210, bytearray([0x7A])) # ply + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0211, bytearray([0x3F, 0xA6, 0xA8, 0x0D])) # and.l $0DA8A6,x + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0215, bytearray([0xF0, 0x02])) # beq .write + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0217, bytearray([0xA0, 0x3F])) # ldy.b #!icon_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0219, bytearray([0x98])) # .write tya + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x021A, bytearray([0x87, 0x06])) # sta [$06] + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x021C, bytearray([0xA9, 0x03])) # lda #$03 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x021E, bytearray([0x87, 0x00])) # sta [$00] + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0220, bytearray([0xA9, 0x02])) # lda #$02 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0222, bytearray([0x87, 0x03])) # sta [$03] + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0224, bytearray([0x20, 0xC0, 0xA3])) # jsr update_flag_pointers + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0227, bytearray([0xA6, 0x60])) # handle_exit_2: ldx $60 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0229, bytearray([0xBF, 0x00, 0xF4, 0x0F])) # lda.l level_data,x + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x022D, bytearray([0x29, 0x02])) # and #$02 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x022F, bytearray([0xF0, 0x1A])) # beq handle_exit_1 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0231, bytearray([0xA0, 0x5E])) # ldy.b #!icon_not_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0233, bytearray([0xBF, 0x00, 0xA2, 0x7F])) # lda !level_clears,x + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0237, bytearray([0x29, 0x02])) # and #$02 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0239, bytearray([0xF0, 0x02])) # beq .write + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x023B, bytearray([0xA0, 0x3F])) # ldy.b #!icon_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x023D, bytearray([0x98])) # .write tya + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x023E, bytearray([0x87, 0x06])) # sta [$06] + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0240, bytearray([0xA9, 0x04])) # lda #$04 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0242, bytearray([0x87, 0x00])) # sta [$00] + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0244, bytearray([0xA9, 0x24])) # lda #$24 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0246, bytearray([0x87, 0x03])) # sta [$03] + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0248, bytearray([0x20, 0xC0, 0xA3])) # jsr update_flag_pointers + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x024B, bytearray([0xA6, 0x60])) # handle_exit_1: ldx $60 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x024D, bytearray([0xBF, 0x00, 0xF4, 0x0F])) # lda.l level_data,x + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0251, bytearray([0x29, 0x01])) # and #$01 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0253, bytearray([0xF0, 0x1A])) # beq .dont_draw + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0255, bytearray([0xA0, 0x5E])) # ldy.b #!icon_not_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0257, bytearray([0xBF, 0x00, 0xA2, 0x7F])) # lda !level_clears,x + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x025B, bytearray([0x29, 0x01])) # and #$01 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x025D, bytearray([0xF0, 0x02])) # beq .write + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x025F, bytearray([0xA0, 0x3F])) # ldy.b #!icon_obtained + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0261, bytearray([0x98])) # .write tya + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0262, bytearray([0x87, 0x06])) # sta [$06] + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0264, bytearray([0xA9, 0x04])) # lda #$04 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0266, bytearray([0x87, 0x00])) # sta [$00] + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x0268, bytearray([0xA9, 0x23])) # lda #$23 + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x026A, bytearray([0x87, 0x03])) # sta [$03] + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x026C, bytearray([0x20, 0xC0, 0xA3])) # jsr update_flag_pointers + rom.write_bytes(BUILD_TILEMAP_ADDR + 0x026F, bytearray([0x6B])) # .dont_draw rtl + + LEVEL_INDICATOR_DATA_ADDR = 0x7F400 + rom.write_bytes(LEVEL_INDICATOR_DATA_ADDR + 0x0000, bytearray([0x80,0x45,0x45,0x80,0x43,0x65,0x5D,0x51])) + rom.write_bytes(LEVEL_INDICATOR_DATA_ADDR + 0x0008, bytearray([0x01,0x47,0x47,0x51,0x65,0x45,0x41,0x4F])) + rom.write_bytes(LEVEL_INDICATOR_DATA_ADDR + 0x0010, bytearray([0x55,0x45,0x80,0x43,0x01,0x57,0x80,0x80])) + rom.write_bytes(LEVEL_INDICATOR_DATA_ADDR + 0x0018, bytearray([0x45,0x80,0x51,0x41,0x45,0x45,0x80,0x41])) + rom.write_bytes(LEVEL_INDICATOR_DATA_ADDR + 0x0020, bytearray([0x45,0x41,0x4D,0x67,0x57,0x41,0x55,0x65])) + rom.write_bytes(LEVEL_INDICATOR_DATA_ADDR + 0x0028, bytearray([0x80,0x4D,0x45,0x55,0x80,0x47,0x4D,0x45])) + rom.write_bytes(LEVEL_INDICATOR_DATA_ADDR + 0x0030, bytearray([0x80,0x80,0x80,0x43,0x55,0x41,0x80,0x45])) + rom.write_bytes(LEVEL_INDICATOR_DATA_ADDR + 0x0038, bytearray([0x47,0x57,0x4D,0x41,0x47,0x55,0x47,0x01])) + rom.write_bytes(LEVEL_INDICATOR_DATA_ADDR + 0x0040, bytearray([0x41,0x4F,0x43,0x47,0x47,0x01,0x45,0x57])) + rom.write_bytes(LEVEL_INDICATOR_DATA_ADDR + 0x0048, bytearray([0x80,0x45,0x45,0x45,0x45,0x80,0x55,0x45])) + rom.write_bytes(LEVEL_INDICATOR_DATA_ADDR + 0x0050, bytearray([0x45,0x45,0x80,0x80,0x43,0x80,0x43,0x80])) + rom.write_bytes(LEVEL_INDICATOR_DATA_ADDR + 0x0058, bytearray([0x07,0x43,0x43,0x80,0x80,0x80,0x80,0x80])) + + +def handle_indicators(rom): + INDICATOR_QUEUE_CODE = 0x86000 + rom.write_bytes(0x022E6, bytearray([0x22, 0x00, 0xE0, 0x10])) # org $00A2E6 : jsl gm14_hijack + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0000, bytearray([0xAD, 0x00, 0x01])) # gm14_hijack: lda $0100 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0003, bytearray([0xC9, 0x14])) # cmp #$14 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0005, bytearray([0xD0, 0x04])) # bne .invalid + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0007, bytearray([0xA5, 0x71])) # lda $71 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0009, bytearray([0xF0, 0x04])) # beq .valid + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x000B, bytearray([0x5C, 0xB1, 0x8A, 0x02])) # .invalid jml $028AB1 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x000F, bytearray([0xC2, 0x30])) # .valid rep #$30 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0011, bytearray([0xAF, 0x04, 0xB0, 0x7F])) # lda !score_sprite_add_1_coin + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0015, bytearray([0xF0, 0x03])) # beq .no_1_coin + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0017, bytearray([0x20, 0xBE, 0xE0])) # jsr add_1_coin + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x001A, bytearray([0xAF, 0x06, 0xB0, 0x7F])) # .no_1_coin lda !score_sprite_add_5_coins + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x001E, bytearray([0xF0, 0x03])) # beq .no_5_coins + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0020, bytearray([0x20, 0xDC, 0xE0])) # jsr add_5_coins + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0023, bytearray([0xAF, 0x08, 0xB0, 0x7F])) # .no_5_coins lda !score_sprite_add_10_coins + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0027, bytearray([0xF0, 0x03])) # beq .no_10_coins + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0029, bytearray([0x20, 0xFA, 0xE0])) # jsr add_10_coins + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x002C, bytearray([0xAF, 0x0A, 0xB0, 0x7F])) # .no_10_coins lda !score_sprite_add_15_coins + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0030, bytearray([0xF0, 0x03])) # beq .no_15_coins + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0032, bytearray([0x20, 0x18, 0xE1])) # jsr add_15_coins + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0035, bytearray([0xAF, 0x10, 0xB0, 0x7F])) # .no_15_coins lda !score_sprite_add_1up + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0039, bytearray([0xF0, 0x03])) # beq .no_1up + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x003B, bytearray([0x20, 0x36, 0xE1])) # jsr add_1up + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x003E, bytearray([0xAF, 0x0C, 0xB0, 0x7F])) # .no_1up lda !score_sprite_add_yoshi_egg + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0042, bytearray([0xF0, 0x03])) # beq .no_yoshi_egg + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0044, bytearray([0x20, 0x54, 0xE1])) # jsr add_yoshi_egg + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0047, bytearray([0xAF, 0x0E, 0xB0, 0x7F])) # .no_yoshi_egg lda !score_sprite_add_boss_token + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x004B, bytearray([0xF0, 0x03])) # beq .no_boss_token + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x004D, bytearray([0x20, 0xCC, 0xE1])) # jsr add_boss_token + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0050, bytearray([0xE2, 0x30])) # .no_boss_token sep #$30 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0052, bytearray([0x20, 0x59, 0xE0])) # jsr score_sprite_queue + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0055, bytearray([0x5C, 0xB1, 0x8A, 0x02])) # jml $028AB1 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0059, bytearray([0xAF, 0x20, 0xB0, 0x7F])) # score_sprite_queue: lda !score_sprite_queue_delay + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x005D, bytearray([0xF0, 0x06])) # beq .spawn + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x005F, bytearray([0x3A])) # dec + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0060, bytearray([0x8F, 0x20, 0xB0, 0x7F])) # sta !score_sprite_queue_delay + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0064, bytearray([0x60])) # rts + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0065, bytearray([0xA9, 0x08])) # .spawn lda #$08 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0067, bytearray([0x8F, 0x20, 0xB0, 0x7F])) # sta !score_sprite_queue_delay + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x006B, bytearray([0xC2, 0x30])) # rep #$30 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x006D, bytearray([0xAF, 0x02, 0xB0, 0x7F])) # lda !score_sprite_index + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0071, bytearray([0xCF, 0x00, 0xB0, 0x7F])) # cmp !score_sprite_count + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0075, bytearray([0xD0, 0x03])) # bne .check_slots + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0077, bytearray([0xE2, 0x30])) # sep #$30 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0079, bytearray([0x60])) # rts + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x007A, bytearray([0xA0, 0x05, 0x00])) # .check_slots ldy #$0005 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x007D, bytearray([0xB9, 0xE1, 0x16])) # ..loop lda !score_sprite_num,y + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0080, bytearray([0x29, 0xFF, 0x00])) # and #$00FF + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0083, bytearray([0xF0, 0x06])) # beq .found_free + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0085, bytearray([0x88])) # dey + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0086, bytearray([0x10, 0xF5])) # bpl ..loop + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0088, bytearray([0xE2, 0x30])) # sep #$30 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x008A, bytearray([0x60])) # rts + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x008B, bytearray([0xAF, 0x02, 0xB0, 0x7F])) # .found_free lda !score_sprite_index + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x008F, bytearray([0x1A])) # inc + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0090, bytearray([0xAA])) # tax + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0091, bytearray([0x8F, 0x02, 0xB0, 0x7F])) # sta !score_sprite_index + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0095, bytearray([0xBF, 0x22, 0xB0, 0x7F])) # lda !score_sprite_queue,x + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0099, bytearray([0xE2, 0x30])) # sep #$30 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x009B, bytearray([0x99, 0xE1, 0x16])) # sta !score_sprite_num,y + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x009E, bytearray([0xA5, 0x94])) # lda $94 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x00A0, bytearray([0x99, 0xED, 0x16])) # sta !score_sprite_x_lo,y + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x00A3, bytearray([0xA5, 0x95])) # lda $95 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x00A5, bytearray([0x99, 0xF3, 0x16])) # sta !score_sprite_x_hi,y + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x00A8, bytearray([0xA5, 0x96])) # lda $96 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x00AA, bytearray([0x99, 0xE7, 0x16])) # sta !score_sprite_y_lo,y + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x00AD, bytearray([0xA5, 0x97])) # lda $97 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x00AF, bytearray([0x99, 0xF9, 0x16])) # sta !score_sprite_y_hi,y + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x00B2, bytearray([0xA9, 0x30])) # lda #$30 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x00B4, bytearray([0x99, 0xFF, 0x16])) # sta !score_sprite_timer,y + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x00B7, bytearray([0xAD, 0xF9, 0x13])) # lda $13F9 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x00BA, bytearray([0x99, 0x05, 0x17])) # sta !score_sprite_layer,y + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x00BD, bytearray([0x60])) # rts + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x00BE, bytearray([0xAF, 0x04, 0xB0, 0x7F])) # add_1_coin: lda !score_sprite_add_1_coin + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x00C2, bytearray([0x3A])) # dec + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x00C3, bytearray([0x8F, 0x04, 0xB0, 0x7F])) # sta !score_sprite_add_1_coin + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x00C7, bytearray([0xAF, 0x00, 0xB0, 0x7F])) # lda !score_sprite_count + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x00CB, bytearray([0x1A])) # inc + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x00CC, bytearray([0x8F, 0x00, 0xB0, 0x7F])) # sta !score_sprite_count + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x00D0, bytearray([0xAA])) # tax + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x00D1, bytearray([0xE2, 0x20])) # sep #$20 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x00D3, bytearray([0xA9, 0x11])) # lda #$11 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x00D5, bytearray([0x9F, 0x22, 0xB0, 0x7F])) # sta !score_sprite_queue,x + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x00D9, bytearray([0xC2, 0x20])) # rep #$20 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x00DB, bytearray([0x60])) # rts + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x00DC, bytearray([0xAF, 0x06, 0xB0, 0x7F])) # add_5_coins: lda !score_sprite_add_5_coins + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x00E0, bytearray([0x3A])) # dec + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x00E1, bytearray([0x8F, 0x06, 0xB0, 0x7F])) # sta !score_sprite_add_5_coins + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x00E5, bytearray([0xAF, 0x00, 0xB0, 0x7F])) # lda !score_sprite_count + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x00E9, bytearray([0x1A])) # inc + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x00EA, bytearray([0x8F, 0x00, 0xB0, 0x7F])) # sta !score_sprite_count + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x00EE, bytearray([0xAA])) # tax + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x00EF, bytearray([0xE2, 0x20])) # sep #$20 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x00F1, bytearray([0xA9, 0x12])) # lda #$12 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x00F3, bytearray([0x9F, 0x22, 0xB0, 0x7F])) # sta !score_sprite_queue,x + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x00F7, bytearray([0xC2, 0x20])) # rep #$20 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x00F9, bytearray([0x60])) # rts + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x00FA, bytearray([0xAF, 0x08, 0xB0, 0x7F])) # add_10_coins: lda !score_sprite_add_10_coins + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x00FE, bytearray([0x3A])) # dec + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x00FF, bytearray([0x8F, 0x08, 0xB0, 0x7F])) # sta !score_sprite_add_10_coins + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0103, bytearray([0xAF, 0x00, 0xB0, 0x7F])) # lda !score_sprite_count + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0107, bytearray([0x1A])) # inc + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0108, bytearray([0x8F, 0x00, 0xB0, 0x7F])) # sta !score_sprite_count + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x010C, bytearray([0xAA])) # tax + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x010D, bytearray([0xE2, 0x20])) # sep #$20 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x010F, bytearray([0xA9, 0x13])) # lda #$13 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0111, bytearray([0x9F, 0x22, 0xB0, 0x7F])) # sta !score_sprite_queue,x + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0115, bytearray([0xC2, 0x20])) # rep #$20 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0117, bytearray([0x60])) # rts + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0118, bytearray([0xAF, 0x0A, 0xB0, 0x7F])) # add_15_coins: lda !score_sprite_add_15_coins + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x011C, bytearray([0x3A])) # dec + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x011D, bytearray([0x8F, 0x0A, 0xB0, 0x7F])) # sta !score_sprite_add_15_coins + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0121, bytearray([0xAF, 0x00, 0xB0, 0x7F])) # lda !score_sprite_count + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0125, bytearray([0x1A])) # inc + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0126, bytearray([0x8F, 0x00, 0xB0, 0x7F])) # sta !score_sprite_count + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x012A, bytearray([0xAA])) # tax + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x012B, bytearray([0xE2, 0x20])) # sep #$20 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x012D, bytearray([0xA9, 0x14])) # lda #$14 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x012F, bytearray([0x9F, 0x22, 0xB0, 0x7F])) # sta !score_sprite_queue,x + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0133, bytearray([0xC2, 0x20])) # rep #$20 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0135, bytearray([0x60])) # rts + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0136, bytearray([0xAF, 0x10, 0xB0, 0x7F])) # add_1up: lda !score_sprite_add_1up + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x013A, bytearray([0x3A])) # dec + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x013B, bytearray([0x8F, 0x10, 0xB0, 0x7F])) # sta !score_sprite_add_1up + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x013F, bytearray([0xAF, 0x00, 0xB0, 0x7F])) # lda !score_sprite_count + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0143, bytearray([0x1A])) # inc + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0144, bytearray([0x8F, 0x00, 0xB0, 0x7F])) # sta !score_sprite_count + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0148, bytearray([0xAA])) # tax + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0149, bytearray([0xE2, 0x20])) # sep #$20 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x014B, bytearray([0xA9, 0x16])) # lda #$16 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x014D, bytearray([0x9F, 0x22, 0xB0, 0x7F])) # sta !score_sprite_queue,x + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0151, bytearray([0xC2, 0x20])) # rep #$20 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0153, bytearray([0x60])) # rts + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0154, bytearray([0xAF, 0x0C, 0xB0, 0x7F])) # add_yoshi_egg: lda !score_sprite_add_yoshi_egg + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0158, bytearray([0x3A])) # dec + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0159, bytearray([0x8F, 0x0C, 0xB0, 0x7F])) # sta !score_sprite_add_yoshi_egg + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x015D, bytearray([0xAF, 0x00, 0xB0, 0x7F])) # lda !score_sprite_count + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0161, bytearray([0x1A])) # inc + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0162, bytearray([0x8F, 0x00, 0xB0, 0x7F])) # sta !score_sprite_count + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0166, bytearray([0xAA])) # tax + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0167, bytearray([0xE2, 0x20])) # sep #$20 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0169, bytearray([0xA9, 0x15])) # lda #$15 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x016B, bytearray([0x9F, 0x22, 0xB0, 0x7F])) # sta !score_sprite_queue,x + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x016F, bytearray([0xC2, 0x20])) # rep #$20 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0171, bytearray([0x60])) # rts + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0172, bytearray([0xAF, 0x12, 0xB0, 0x7F])) # add_mushroom: lda !score_sprite_add_mushroom + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0176, bytearray([0x3A])) # dec + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0177, bytearray([0x8F, 0x12, 0xB0, 0x7F])) # sta !score_sprite_add_mushroom + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x017B, bytearray([0xAF, 0x00, 0xB0, 0x7F])) # lda !score_sprite_count + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x017F, bytearray([0x1A])) # inc + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0180, bytearray([0x8F, 0x00, 0xB0, 0x7F])) # sta !score_sprite_count + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0184, bytearray([0xAA])) # tax + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0185, bytearray([0xE2, 0x20])) # sep #$20 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0187, bytearray([0xA9, 0x17])) # lda #$17 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0189, bytearray([0x9F, 0x22, 0xB0, 0x7F])) # sta !score_sprite_queue,x + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x018D, bytearray([0xC2, 0x20])) # rep #$20 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x018F, bytearray([0x60])) # rts + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0190, bytearray([0xAF, 0x14, 0xB0, 0x7F])) # add_flower: lda !score_sprite_add_flower + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0194, bytearray([0x3A])) # dec + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0195, bytearray([0x8F, 0x14, 0xB0, 0x7F])) # sta !score_sprite_add_flower + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x0199, bytearray([0xAF, 0x00, 0xB0, 0x7F])) # lda !score_sprite_count + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x019D, bytearray([0x1A])) # inc + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x019E, bytearray([0x8F, 0x00, 0xB0, 0x7F])) # sta !score_sprite_count + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x01A2, bytearray([0xAA])) # tax + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x01A3, bytearray([0xE2, 0x20])) # sep #$20 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x01A5, bytearray([0xA9, 0x18])) # lda #$18 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x01A7, bytearray([0x9F, 0x22, 0xB0, 0x7F])) # sta !score_sprite_queue,x + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x01AB, bytearray([0xC2, 0x20])) # rep #$20 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x01AD, bytearray([0x60])) # rts + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x01AE, bytearray([0xAF, 0x16, 0xB0, 0x7F])) # add_feather: lda !score_sprite_add_feather + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x01B2, bytearray([0x3A])) # dec + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x01B3, bytearray([0x8F, 0x16, 0xB0, 0x7F])) # sta !score_sprite_add_feather + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x01B7, bytearray([0xAF, 0x00, 0xB0, 0x7F])) # lda !score_sprite_count + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x01BB, bytearray([0x1A])) # inc + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x01BC, bytearray([0x8F, 0x00, 0xB0, 0x7F])) # sta !score_sprite_count + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x01C0, bytearray([0xAA])) # tax + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x01C1, bytearray([0xE2, 0x20])) # sep #$20 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x01C3, bytearray([0xA9, 0x19])) # lda #$19 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x01C5, bytearray([0x9F, 0x22, 0xB0, 0x7F])) # sta !score_sprite_queue,x + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x01C9, bytearray([0xC2, 0x20])) # rep #$20 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x01CB, bytearray([0x60])) # rts + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x01CC, bytearray([0xAF, 0x0E, 0xB0, 0x7F])) # add_boss_token: lda !score_sprite_add_boss_token + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x01D0, bytearray([0x3A])) # dec + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x01D1, bytearray([0x8F, 0x0E, 0xB0, 0x7F])) # sta !score_sprite_add_boss_token + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x01D5, bytearray([0xAF, 0x00, 0xB0, 0x7F])) # lda !score_sprite_count + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x01D9, bytearray([0x1A])) # inc + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x01DA, bytearray([0x8F, 0x00, 0xB0, 0x7F])) # sta !score_sprite_count + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x01DE, bytearray([0xAA])) # tax + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x01DF, bytearray([0xE2, 0x20])) # sep #$20 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x01E1, bytearray([0xA9, 0x1A])) # lda #$1A + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x01E3, bytearray([0x9F, 0x22, 0xB0, 0x7F])) # sta !score_sprite_queue,x + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x01E7, bytearray([0xC2, 0x20])) # rep #$20 + rom.write_bytes(INDICATOR_QUEUE_CODE + 0x01E9, bytearray([0x60])) # rts + + # Add code for indicators when receiving items during levels + INDICATOR_CODE = 0x84000 + rom.write_bytes(0x12DBA, bytearray([0x5C, 0x00, 0xC0, 0x10])) # org $02ADBA : jsl score_sprites + rom.write_bytes(INDICATOR_CODE + 0x0000, bytearray([0xBD, 0xE1, 0x16])) # score_sprites: lda !score_sprite_num,x + rom.write_bytes(INDICATOR_CODE + 0x0003, bytearray([0xF0, 0x2D])) # beq .return + rom.write_bytes(INDICATOR_CODE + 0x0005, bytearray([0x8E, 0xE9, 0x15])) # stx $15E9 + rom.write_bytes(INDICATOR_CODE + 0x0008, bytearray([0xC2, 0x30])) # rep #$30 + rom.write_bytes(INDICATOR_CODE + 0x000A, bytearray([0x29, 0x1F, 0x00])) # and #$001F + rom.write_bytes(INDICATOR_CODE + 0x000D, bytearray([0x85, 0x00])) # sta $00 + rom.write_bytes(INDICATOR_CODE + 0x000F, bytearray([0x0A])) # asl + rom.write_bytes(INDICATOR_CODE + 0x0010, bytearray([0x18])) # clc + rom.write_bytes(INDICATOR_CODE + 0x0011, bytearray([0x65, 0x00])) # adc $00 + rom.write_bytes(INDICATOR_CODE + 0x0013, bytearray([0xAA])) # tax + rom.write_bytes(INDICATOR_CODE + 0x0014, bytearray([0xBF, 0x37, 0xC0, 0x10])) # lda.l .pointers-3,x + rom.write_bytes(INDICATOR_CODE + 0x0018, bytearray([0x85, 0x00])) # sta $00 + rom.write_bytes(INDICATOR_CODE + 0x001A, bytearray([0xE2, 0x30])) # sep #$30 + rom.write_bytes(INDICATOR_CODE + 0x001C, bytearray([0xBF, 0x39, 0xC0, 0x10])) # lda.l .pointers-3+2,x + rom.write_bytes(INDICATOR_CODE + 0x0020, bytearray([0x85, 0x02])) # sta $02 + rom.write_bytes(INDICATOR_CODE + 0x0022, bytearray([0xE2, 0x10])) # sep #$10 + rom.write_bytes(INDICATOR_CODE + 0x0024, bytearray([0xAE, 0xE9, 0x15])) # ldx $15E9 + rom.write_bytes(INDICATOR_CODE + 0x0027, bytearray([0x8B])) # phb + rom.write_bytes(INDICATOR_CODE + 0x0028, bytearray([0x48])) # pha + rom.write_bytes(INDICATOR_CODE + 0x0029, bytearray([0xAB])) # plb + rom.write_bytes(INDICATOR_CODE + 0x002A, bytearray([0x4B])) # phk + rom.write_bytes(INDICATOR_CODE + 0x002B, bytearray([0xF4, 0x30, 0xC0])) # pea.w .return_code-1 + rom.write_bytes(INDICATOR_CODE + 0x002E, bytearray([0xDC, 0x00, 0x00])) # jml [$0000] + rom.write_bytes(INDICATOR_CODE + 0x0031, bytearray([0xAB])) # .return_code plb + rom.write_bytes(INDICATOR_CODE + 0x0032, bytearray([0x5C, 0xC5, 0xAD, 0x02])) # .return jml $02ADC5 + rom.write_bytes(INDICATOR_CODE + 0x0036, bytearray([0x9E, 0xE1, 0x16])) # .kill stz !score_sprite_num,x + rom.write_bytes(INDICATOR_CODE + 0x0039, bytearray([0x6B])) # rtl + rom.write_bytes(INDICATOR_CODE + 0x003A, bytearray([0x97, 0xC0, 0x10])) # .pointers dl original_score_sprites ; 01 - 10 points + rom.write_bytes(INDICATOR_CODE + 0x003D, bytearray([0x97, 0xC0, 0x10])) # dl original_score_sprites ; 02 - 20 points + rom.write_bytes(INDICATOR_CODE + 0x0040, bytearray([0x97, 0xC0, 0x10])) # dl original_score_sprites ; 03 - 40 points + rom.write_bytes(INDICATOR_CODE + 0x0043, bytearray([0x97, 0xC0, 0x10])) # dl original_score_sprites ; 04 - 80 points + rom.write_bytes(INDICATOR_CODE + 0x0046, bytearray([0x97, 0xC0, 0x10])) # dl original_score_sprites ; 05 - 100 points + rom.write_bytes(INDICATOR_CODE + 0x0049, bytearray([0x97, 0xC0, 0x10])) # dl original_score_sprites ; 06 - 200 points + rom.write_bytes(INDICATOR_CODE + 0x004C, bytearray([0x97, 0xC0, 0x10])) # dl original_score_sprites ; 07 - 400 points + rom.write_bytes(INDICATOR_CODE + 0x004F, bytearray([0x97, 0xC0, 0x10])) # dl original_score_sprites ; 08 - 800 points + rom.write_bytes(INDICATOR_CODE + 0x0052, bytearray([0x97, 0xC0, 0x10])) # dl original_score_sprites ; 09 - 1000 points + rom.write_bytes(INDICATOR_CODE + 0x0055, bytearray([0x97, 0xC0, 0x10])) # dl original_score_sprites ; 0A - 2000 points + rom.write_bytes(INDICATOR_CODE + 0x0058, bytearray([0x97, 0xC0, 0x10])) # dl original_score_sprites ; 0B - 4000 points + rom.write_bytes(INDICATOR_CODE + 0x005B, bytearray([0x97, 0xC0, 0x10])) # dl original_score_sprites ; 0C - 8000 points + rom.write_bytes(INDICATOR_CODE + 0x005E, bytearray([0x97, 0xC0, 0x10])) # dl original_score_sprites ; 0D - 1-up + rom.write_bytes(INDICATOR_CODE + 0x0061, bytearray([0x97, 0xC0, 0x10])) # dl original_score_sprites ; 0E - 2-up + rom.write_bytes(INDICATOR_CODE + 0x0064, bytearray([0x97, 0xC0, 0x10])) # dl original_score_sprites ; 0F - 3-up + rom.write_bytes(INDICATOR_CODE + 0x0067, bytearray([0x97, 0xC0, 0x10])) # dl original_score_sprites ; 10 - 5-up + rom.write_bytes(INDICATOR_CODE + 0x006A, bytearray([0xA7, 0xC0, 0x10])) # dl icon_score ; 11 - 1 coin + rom.write_bytes(INDICATOR_CODE + 0x006D, bytearray([0xA7, 0xC0, 0x10])) # dl icon_score ; 12 - 5 coins + rom.write_bytes(INDICATOR_CODE + 0x0070, bytearray([0xA7, 0xC0, 0x10])) # dl icon_score ; 13 - 10 coins + rom.write_bytes(INDICATOR_CODE + 0x0073, bytearray([0xA7, 0xC0, 0x10])) # dl icon_score ; 14 - 15 coins + rom.write_bytes(INDICATOR_CODE + 0x0076, bytearray([0xA7, 0xC0, 0x10])) # dl icon_score ; 15 - Yoshi Egg + rom.write_bytes(INDICATOR_CODE + 0x0079, bytearray([0xA7, 0xC0, 0x10])) # dl icon_score ; 16 - 1up Mushroom + rom.write_bytes(INDICATOR_CODE + 0x007C, bytearray([0xA7, 0xC0, 0x10])) # dl icon_score ; 17 - Mushroom + rom.write_bytes(INDICATOR_CODE + 0x007F, bytearray([0xA7, 0xC0, 0x10])) # dl icon_score ; 18 - Flower + rom.write_bytes(INDICATOR_CODE + 0x0082, bytearray([0xA7, 0xC0, 0x10])) # dl icon_score ; 19 - Feather + rom.write_bytes(INDICATOR_CODE + 0x0085, bytearray([0xA7, 0xC0, 0x10])) # dl icon_score ; 1A - Boss token + rom.write_bytes(INDICATOR_CODE + 0x0088, bytearray([0xA7, 0xC0, 0x10])) # dl icon_score ; 1B - + rom.write_bytes(INDICATOR_CODE + 0x008B, bytearray([0xA7, 0xC0, 0x10])) # dl icon_score ; 1C - + rom.write_bytes(INDICATOR_CODE + 0x008E, bytearray([0xA7, 0xC0, 0x10])) # dl icon_score ; 1D - + rom.write_bytes(INDICATOR_CODE + 0x0091, bytearray([0xA7, 0xC0, 0x10])) # dl icon_score ; 1E - + rom.write_bytes(INDICATOR_CODE + 0x0094, bytearray([0xA7, 0xC0, 0x10])) # dl icon_score ; 1F - + rom.write_bytes(INDICATOR_CODE + 0x0097, bytearray([0xA9, 0x02])) # original_score_sprites: lda #$02 + rom.write_bytes(INDICATOR_CODE + 0x0099, bytearray([0x48])) # pha + rom.write_bytes(INDICATOR_CODE + 0x009A, bytearray([0xAB])) # plb + rom.write_bytes(INDICATOR_CODE + 0x009B, bytearray([0x4B])) # phk + rom.write_bytes(INDICATOR_CODE + 0x009C, bytearray([0xF4, 0xA5, 0xC0])) # pea.w .jslrtsreturn-1 + rom.write_bytes(INDICATOR_CODE + 0x009F, bytearray([0xF4, 0x88, 0xB8])) # pea.w $B889-1 + rom.write_bytes(INDICATOR_CODE + 0x00A2, bytearray([0x5C, 0xC9, 0xAD, 0x02])) # jml $02ADC9 + rom.write_bytes(INDICATOR_CODE + 0x00A6, bytearray([0x6B])) # .jslrtsreturn rtl + rom.write_bytes(INDICATOR_CODE + 0x00A7, bytearray([0xBD, 0xFF, 0x16])) # icon_score: lda !score_sprite_timer,x + rom.write_bytes(INDICATOR_CODE + 0x00AA, bytearray([0xD0, 0x04])) # bne .active + rom.write_bytes(INDICATOR_CODE + 0x00AC, bytearray([0x9E, 0xE1, 0x16])) # stz !score_sprite_num,x + rom.write_bytes(INDICATOR_CODE + 0x00AF, bytearray([0x6B])) # rtl + rom.write_bytes(INDICATOR_CODE + 0x00B0, bytearray([0xDE, 0xFF, 0x16])) # .active dec !score_sprite_timer,x + rom.write_bytes(INDICATOR_CODE + 0x00B3, bytearray([0xC9, 0x30])) # cmp #$30 + rom.write_bytes(INDICATOR_CODE + 0x00B5, bytearray([0xD0, 0x14])) # bne .handle_movement + rom.write_bytes(INDICATOR_CODE + 0x00B7, bytearray([0xBD, 0xE1, 0x16])) # lda !score_sprite_num,x + rom.write_bytes(INDICATOR_CODE + 0x00BA, bytearray([0x38])) # sec + rom.write_bytes(INDICATOR_CODE + 0x00BB, bytearray([0xE9, 0x11])) # sbc #$11 + rom.write_bytes(INDICATOR_CODE + 0x00BD, bytearray([0x0A])) # asl + rom.write_bytes(INDICATOR_CODE + 0x00BE, bytearray([0xA8])) # tay + rom.write_bytes(INDICATOR_CODE + 0x00BF, bytearray([0xC2, 0x20])) # rep #$20 + rom.write_bytes(INDICATOR_CODE + 0x00C1, bytearray([0xB9, 0x4B, 0xC2])) # lda .reward_ptrs,y + rom.write_bytes(INDICATOR_CODE + 0x00C4, bytearray([0x85, 0x00])) # sta $00 + rom.write_bytes(INDICATOR_CODE + 0x00C6, bytearray([0xE2, 0x20])) # sep #$20 + rom.write_bytes(INDICATOR_CODE + 0x00C8, bytearray([0x6C, 0x00, 0x00])) # jmp ($0000) + rom.write_bytes(INDICATOR_CODE + 0x00CB, bytearray([0xBD, 0xFF, 0x16])) # .handle_movement lda !score_sprite_timer,x + rom.write_bytes(INDICATOR_CODE + 0x00CE, bytearray([0x4A])) # lsr + rom.write_bytes(INDICATOR_CODE + 0x00CF, bytearray([0x4A])) # lsr + rom.write_bytes(INDICATOR_CODE + 0x00D0, bytearray([0x4A])) # lsr + rom.write_bytes(INDICATOR_CODE + 0x00D1, bytearray([0x4A])) # lsr + rom.write_bytes(INDICATOR_CODE + 0x00D2, bytearray([0xA8])) # tay + rom.write_bytes(INDICATOR_CODE + 0x00D3, bytearray([0xA5, 0x13])) # lda $13 + rom.write_bytes(INDICATOR_CODE + 0x00D5, bytearray([0x39, 0xF0, 0xC0])) # and .speed,y + rom.write_bytes(INDICATOR_CODE + 0x00D8, bytearray([0xD0, 0x14])) # bne ..skip_update + rom.write_bytes(INDICATOR_CODE + 0x00DA, bytearray([0xBD, 0xE7, 0x16])) # lda !score_sprite_y_lo,x + rom.write_bytes(INDICATOR_CODE + 0x00DD, bytearray([0xA8])) # tay + rom.write_bytes(INDICATOR_CODE + 0x00DE, bytearray([0x38])) # sec + rom.write_bytes(INDICATOR_CODE + 0x00DF, bytearray([0xE5, 0x1C])) # sbc $1C + rom.write_bytes(INDICATOR_CODE + 0x00E1, bytearray([0xC9, 0x04])) # cmp #$04 + rom.write_bytes(INDICATOR_CODE + 0x00E3, bytearray([0x90, 0x09])) # bcc ..skip_update + rom.write_bytes(INDICATOR_CODE + 0x00E5, bytearray([0xDE, 0xE7, 0x16])) # dec !score_sprite_y_lo,x + rom.write_bytes(INDICATOR_CODE + 0x00E8, bytearray([0x98])) # tya + rom.write_bytes(INDICATOR_CODE + 0x00E9, bytearray([0xD0, 0x03])) # bne ..skip_update + rom.write_bytes(INDICATOR_CODE + 0x00EB, bytearray([0xDE, 0xF9, 0x16])) # dec !score_sprite_y_hi,x + rom.write_bytes(INDICATOR_CODE + 0x00EE, bytearray([0x80, 0x05])) # ..skip_update bra .gfx + rom.write_bytes(INDICATOR_CODE + 0x00F0, bytearray([0x03, 0x01, 0x00, 0x00])) # .speed db $03,$01,$00,$00 + rom.write_bytes(INDICATOR_CODE + 0x00F4, bytearray([0x6B])) # .return rtl + rom.write_bytes(INDICATOR_CODE + 0x00F5, bytearray([0xBD, 0x05, 0x17])) # .gfx lda !score_sprite_layer,x + rom.write_bytes(INDICATOR_CODE + 0x00F8, bytearray([0x0A])) # asl + rom.write_bytes(INDICATOR_CODE + 0x00F9, bytearray([0x0A])) # asl + rom.write_bytes(INDICATOR_CODE + 0x00FA, bytearray([0xA8])) # tay + rom.write_bytes(INDICATOR_CODE + 0x00FB, bytearray([0xC2, 0x20])) # rep #$20 + rom.write_bytes(INDICATOR_CODE + 0x00FD, bytearray([0xB9, 0x1C, 0x00])) # lda $001C,y + rom.write_bytes(INDICATOR_CODE + 0x0100, bytearray([0x85, 0x02])) # sta $02 + rom.write_bytes(INDICATOR_CODE + 0x0102, bytearray([0xB9, 0x1A, 0x00])) # lda $001A,y + rom.write_bytes(INDICATOR_CODE + 0x0105, bytearray([0x85, 0x04])) # sta $04 + rom.write_bytes(INDICATOR_CODE + 0x0107, bytearray([0xE2, 0x20])) # sep #$20 + rom.write_bytes(INDICATOR_CODE + 0x0109, bytearray([0xBD, 0xF3, 0x16])) # lda !score_sprite_x_hi,x + rom.write_bytes(INDICATOR_CODE + 0x010C, bytearray([0xEB])) # xba + rom.write_bytes(INDICATOR_CODE + 0x010D, bytearray([0xBD, 0xED, 0x16])) # lda !score_sprite_x_lo,x + rom.write_bytes(INDICATOR_CODE + 0x0110, bytearray([0xC2, 0x20])) # rep #$20 + rom.write_bytes(INDICATOR_CODE + 0x0112, bytearray([0x38])) # sec + rom.write_bytes(INDICATOR_CODE + 0x0113, bytearray([0xE5, 0x04])) # sbc $04 + rom.write_bytes(INDICATOR_CODE + 0x0115, bytearray([0x38])) # sec + rom.write_bytes(INDICATOR_CODE + 0x0116, bytearray([0xE9, 0x06, 0x00])) # sbc #$0006 + rom.write_bytes(INDICATOR_CODE + 0x0119, bytearray([0xC9, 0xEA, 0x00])) # cmp #$00EA + rom.write_bytes(INDICATOR_CODE + 0x011C, bytearray([0xE2, 0x20])) # sep #$20 + rom.write_bytes(INDICATOR_CODE + 0x011E, bytearray([0xB0, 0xD4])) # bcs .return + rom.write_bytes(INDICATOR_CODE + 0x0120, bytearray([0xBD, 0xE7, 0x16])) # lda !score_sprite_y_lo,x + rom.write_bytes(INDICATOR_CODE + 0x0123, bytearray([0xC5, 0x02])) # cmp $02 + rom.write_bytes(INDICATOR_CODE + 0x0125, bytearray([0xBD, 0xF9, 0x16])) # lda !score_sprite_y_hi,x + rom.write_bytes(INDICATOR_CODE + 0x0128, bytearray([0xE5, 0x03])) # sbc $03 + rom.write_bytes(INDICATOR_CODE + 0x012A, bytearray([0xD0, 0xC8])) # bne .return + rom.write_bytes(INDICATOR_CODE + 0x012C, bytearray([0xBF, 0x9E, 0xAD, 0x02])) # lda $02AD9E,x + rom.write_bytes(INDICATOR_CODE + 0x0130, bytearray([0xA8])) # tay + rom.write_bytes(INDICATOR_CODE + 0x0131, bytearray([0xBD, 0xE7, 0x16])) # lda !score_sprite_y_lo,x + rom.write_bytes(INDICATOR_CODE + 0x0134, bytearray([0x38])) # sec + rom.write_bytes(INDICATOR_CODE + 0x0135, bytearray([0xE5, 0x02])) # sbc $02 + rom.write_bytes(INDICATOR_CODE + 0x0137, bytearray([0x99, 0x01, 0x02])) # sta $0201,y + rom.write_bytes(INDICATOR_CODE + 0x013A, bytearray([0x99, 0x05, 0x02])) # sta $0205,y + rom.write_bytes(INDICATOR_CODE + 0x013D, bytearray([0xBD, 0xED, 0x16])) # lda !score_sprite_x_lo,x + rom.write_bytes(INDICATOR_CODE + 0x0140, bytearray([0x38])) # sec + rom.write_bytes(INDICATOR_CODE + 0x0141, bytearray([0xE5, 0x04])) # sbc $04 + rom.write_bytes(INDICATOR_CODE + 0x0143, bytearray([0x18])) # clc + rom.write_bytes(INDICATOR_CODE + 0x0144, bytearray([0x69, 0x09])) # adc #$09 + rom.write_bytes(INDICATOR_CODE + 0x0146, bytearray([0x99, 0x00, 0x02])) # sta $0200,y + rom.write_bytes(INDICATOR_CODE + 0x0149, bytearray([0x18])) # clc + rom.write_bytes(INDICATOR_CODE + 0x014A, bytearray([0x69, 0x05])) # adc #$05 + rom.write_bytes(INDICATOR_CODE + 0x014C, bytearray([0x99, 0x04, 0x02])) # sta $0204,y + rom.write_bytes(INDICATOR_CODE + 0x014F, bytearray([0xDA])) # phx + rom.write_bytes(INDICATOR_CODE + 0x0150, bytearray([0xBD, 0xE1, 0x16])) # lda !score_sprite_num,x + rom.write_bytes(INDICATOR_CODE + 0x0153, bytearray([0x38])) # sec + rom.write_bytes(INDICATOR_CODE + 0x0154, bytearray([0xE9, 0x11])) # sbc #$11 + rom.write_bytes(INDICATOR_CODE + 0x0156, bytearray([0x0A])) # asl + rom.write_bytes(INDICATOR_CODE + 0x0157, bytearray([0xAA])) # tax + rom.write_bytes(INDICATOR_CODE + 0x0158, bytearray([0xBD, 0x09, 0xC2])) # lda ..num_tile+$00,x + rom.write_bytes(INDICATOR_CODE + 0x015B, bytearray([0x99, 0x02, 0x02])) # sta $0202,y + rom.write_bytes(INDICATOR_CODE + 0x015E, bytearray([0xBD, 0x0A, 0xC2])) # lda ..num_tile+$01,x + rom.write_bytes(INDICATOR_CODE + 0x0161, bytearray([0x99, 0x06, 0x02])) # sta $0206,y + rom.write_bytes(INDICATOR_CODE + 0x0164, bytearray([0xBD, 0x27, 0xC2])) # lda ..num_props+$00,x + rom.write_bytes(INDICATOR_CODE + 0x0167, bytearray([0x99, 0x03, 0x02])) # sta $0203,y + rom.write_bytes(INDICATOR_CODE + 0x016A, bytearray([0xBD, 0x28, 0xC2])) # lda ..num_props+$01,x + rom.write_bytes(INDICATOR_CODE + 0x016D, bytearray([0x99, 0x07, 0x02])) # sta $0207,y + rom.write_bytes(INDICATOR_CODE + 0x0170, bytearray([0xFA])) # plx + rom.write_bytes(INDICATOR_CODE + 0x0171, bytearray([0x98])) # tya + rom.write_bytes(INDICATOR_CODE + 0x0172, bytearray([0x4A])) # lsr + rom.write_bytes(INDICATOR_CODE + 0x0173, bytearray([0x4A])) # lsr + rom.write_bytes(INDICATOR_CODE + 0x0174, bytearray([0xA8])) # tay + rom.write_bytes(INDICATOR_CODE + 0x0175, bytearray([0xA9, 0x00])) # lda #$00 + rom.write_bytes(INDICATOR_CODE + 0x0177, bytearray([0x99, 0x20, 0x04])) # sta $0420,y + rom.write_bytes(INDICATOR_CODE + 0x017A, bytearray([0x99, 0x21, 0x04])) # sta $0421,y + rom.write_bytes(INDICATOR_CODE + 0x017D, bytearray([0xBF, 0x45, 0xC2, 0x10])) # lda.l ..oam_2,x + rom.write_bytes(INDICATOR_CODE + 0x0181, bytearray([0xA8])) # tay + rom.write_bytes(INDICATOR_CODE + 0x0182, bytearray([0xBD, 0xE7, 0x16])) # lda !score_sprite_y_lo,x + rom.write_bytes(INDICATOR_CODE + 0x0185, bytearray([0x38])) # sec + rom.write_bytes(INDICATOR_CODE + 0x0186, bytearray([0xE5, 0x02])) # sbc $02 + rom.write_bytes(INDICATOR_CODE + 0x0188, bytearray([0x99, 0x01, 0x02])) # sta $0201,y + rom.write_bytes(INDICATOR_CODE + 0x018B, bytearray([0x99, 0x05, 0x02])) # sta $0205,y + rom.write_bytes(INDICATOR_CODE + 0x018E, bytearray([0xBD, 0xED, 0x16])) # lda !score_sprite_x_lo,x + rom.write_bytes(INDICATOR_CODE + 0x0191, bytearray([0x38])) # sec + rom.write_bytes(INDICATOR_CODE + 0x0192, bytearray([0xE5, 0x04])) # sbc $04 + rom.write_bytes(INDICATOR_CODE + 0x0194, bytearray([0xE9, 0x07])) # sbc #$07 + rom.write_bytes(INDICATOR_CODE + 0x0196, bytearray([0x99, 0x00, 0x02])) # sta $0200,y + rom.write_bytes(INDICATOR_CODE + 0x0199, bytearray([0x18])) # clc + rom.write_bytes(INDICATOR_CODE + 0x019A, bytearray([0x69, 0x08])) # adc #$08 + rom.write_bytes(INDICATOR_CODE + 0x019C, bytearray([0x99, 0x04, 0x02])) # sta $0204,y + rom.write_bytes(INDICATOR_CODE + 0x019F, bytearray([0xDA])) # phx + rom.write_bytes(INDICATOR_CODE + 0x01A0, bytearray([0xBD, 0xE1, 0x16])) # lda !score_sprite_num,x + rom.write_bytes(INDICATOR_CODE + 0x01A3, bytearray([0x38])) # sec + rom.write_bytes(INDICATOR_CODE + 0x01A4, bytearray([0xE9, 0x11])) # sbc #$11 + rom.write_bytes(INDICATOR_CODE + 0x01A6, bytearray([0xAA])) # tax + rom.write_bytes(INDICATOR_CODE + 0x01A7, bytearray([0xBD, 0xCD, 0xC1])) # lda ..icon_tile,x + rom.write_bytes(INDICATOR_CODE + 0x01AA, bytearray([0x99, 0x02, 0x02])) # sta $0202,y + rom.write_bytes(INDICATOR_CODE + 0x01AD, bytearray([0xBD, 0xDC, 0xC1])) # lda ..icon_props,x + rom.write_bytes(INDICATOR_CODE + 0x01B0, bytearray([0x99, 0x03, 0x02])) # sta $0203,y + rom.write_bytes(INDICATOR_CODE + 0x01B3, bytearray([0xBD, 0xFA, 0xC1])) # lda ..plus_props,x + rom.write_bytes(INDICATOR_CODE + 0x01B6, bytearray([0x99, 0x07, 0x02])) # sta $0207,y + rom.write_bytes(INDICATOR_CODE + 0x01B9, bytearray([0xBD, 0xEB, 0xC1])) # lda ..plus_tile,x + rom.write_bytes(INDICATOR_CODE + 0x01BC, bytearray([0x99, 0x06, 0x02])) # sta $0206,y + rom.write_bytes(INDICATOR_CODE + 0x01BF, bytearray([0xFA])) # plx + rom.write_bytes(INDICATOR_CODE + 0x01C0, bytearray([0x98])) # tya + rom.write_bytes(INDICATOR_CODE + 0x01C1, bytearray([0x4A])) # lsr + rom.write_bytes(INDICATOR_CODE + 0x01C2, bytearray([0x4A])) # lsr + rom.write_bytes(INDICATOR_CODE + 0x01C3, bytearray([0xA8])) # tay + rom.write_bytes(INDICATOR_CODE + 0x01C4, bytearray([0xA9, 0x00])) # lda #$00 + rom.write_bytes(INDICATOR_CODE + 0x01C6, bytearray([0x99, 0x20, 0x04])) # sta $0420,y + rom.write_bytes(INDICATOR_CODE + 0x01C9, bytearray([0x99, 0x21, 0x04])) # sta $0421,y + rom.write_bytes(INDICATOR_CODE + 0x01CC, bytearray([0x6B])) # rtl + rom.write_bytes(INDICATOR_CODE + 0x01CD, bytearray([0x1B])) # ..icon_tile db $1B ; 1 coin + rom.write_bytes(INDICATOR_CODE + 0x01CE, bytearray([0x1B])) # db $1B ; 5 coins + rom.write_bytes(INDICATOR_CODE + 0x01CF, bytearray([0x1B])) # db $1B ; 10 coins + rom.write_bytes(INDICATOR_CODE + 0x01D0, bytearray([0x1B])) # db $1B ; 15 coins + rom.write_bytes(INDICATOR_CODE + 0x01D1, bytearray([0x0A])) # db $0A ; yoshi egg + rom.write_bytes(INDICATOR_CODE + 0x01D2, bytearray([0x0B])) # db $0B ; 1up mushroom + rom.write_bytes(INDICATOR_CODE + 0x01D3, bytearray([0x0B])) # db $0B ; mushroom + rom.write_bytes(INDICATOR_CODE + 0x01D4, bytearray([0x7E])) # db $7E ; flower + rom.write_bytes(INDICATOR_CODE + 0x01D5, bytearray([0x7F])) # db $7F ; feather + rom.write_bytes(INDICATOR_CODE + 0x01D6, bytearray([0x38])) # db $38 ; boss token + rom.write_bytes(INDICATOR_CODE + 0x01D7, bytearray([0x5A])) # db $5A ; + rom.write_bytes(INDICATOR_CODE + 0x01D8, bytearray([0x5A])) # db $5A ; + rom.write_bytes(INDICATOR_CODE + 0x01D9, bytearray([0x5A])) # db $5A ; + rom.write_bytes(INDICATOR_CODE + 0x01DA, bytearray([0x5A])) # db $5A ; + rom.write_bytes(INDICATOR_CODE + 0x01DB, bytearray([0x0B])) # db $0B ; + rom.write_bytes(INDICATOR_CODE + 0x01DC, bytearray([0x34])) # ..icon_props db $34 ; coin + rom.write_bytes(INDICATOR_CODE + 0x01DD, bytearray([0x34])) # db $34 ; coin + rom.write_bytes(INDICATOR_CODE + 0x01DE, bytearray([0x34])) # db $34 ; coin + rom.write_bytes(INDICATOR_CODE + 0x01DF, bytearray([0x34])) # db $34 ; coin + rom.write_bytes(INDICATOR_CODE + 0x01E0, bytearray([0x3A])) # db $3A ; yoshi egg + rom.write_bytes(INDICATOR_CODE + 0x01E1, bytearray([0x3A])) # db $3A ; 1up mushroom + rom.write_bytes(INDICATOR_CODE + 0x01E2, bytearray([0x38])) # db $38 ; mushroom + rom.write_bytes(INDICATOR_CODE + 0x01E3, bytearray([0x3A])) # db $3A ; flower + rom.write_bytes(INDICATOR_CODE + 0x01E4, bytearray([0x34])) # db $34 ; feather + rom.write_bytes(INDICATOR_CODE + 0x01E5, bytearray([0x34])) # db $34 ; boss token + rom.write_bytes(INDICATOR_CODE + 0x01E6, bytearray([0x34])) # db $34 ; + rom.write_bytes(INDICATOR_CODE + 0x01E7, bytearray([0x3A])) # db $3A ; + rom.write_bytes(INDICATOR_CODE + 0x01E8, bytearray([0x38])) # db $38 ; + rom.write_bytes(INDICATOR_CODE + 0x01E9, bytearray([0x36])) # db $36 ; + rom.write_bytes(INDICATOR_CODE + 0x01EA, bytearray([0x36])) # db $36 ; + rom.write_bytes(INDICATOR_CODE + 0x01EB, bytearray([0x1A])) # ..plus_tile db $1A ; 1 coin + rom.write_bytes(INDICATOR_CODE + 0x01EC, bytearray([0x1A])) # db $1A ; 3 coins + rom.write_bytes(INDICATOR_CODE + 0x01ED, bytearray([0x1A])) # db $1A ; 5 coins + rom.write_bytes(INDICATOR_CODE + 0x01EE, bytearray([0x1A])) # db $1A ; 10 coins + rom.write_bytes(INDICATOR_CODE + 0x01EF, bytearray([0x1A])) # db $1A ; yoshi egg + rom.write_bytes(INDICATOR_CODE + 0x01F0, bytearray([0x1A])) # db $1A ; 1up mushroom + rom.write_bytes(INDICATOR_CODE + 0x01F1, bytearray([0x1A])) # db $1A ; mushroom + rom.write_bytes(INDICATOR_CODE + 0x01F2, bytearray([0x1A])) # db $1A ; flower + rom.write_bytes(INDICATOR_CODE + 0x01F3, bytearray([0x1A])) # db $1A ; feather + rom.write_bytes(INDICATOR_CODE + 0x01F4, bytearray([0x1A])) # db $1A ; boss token + rom.write_bytes(INDICATOR_CODE + 0x01F5, bytearray([0x1A])) # db $1A ; + rom.write_bytes(INDICATOR_CODE + 0x01F6, bytearray([0x1A])) # db $1A ; + rom.write_bytes(INDICATOR_CODE + 0x01F7, bytearray([0x1A])) # db $1A ; + rom.write_bytes(INDICATOR_CODE + 0x01F8, bytearray([0x1A])) # db $1A ; + rom.write_bytes(INDICATOR_CODE + 0x01F9, bytearray([0x1A])) # db $1A ; + rom.write_bytes(INDICATOR_CODE + 0x01FA, bytearray([0x32])) # ..plus_props db $32 ; 1 coin + rom.write_bytes(INDICATOR_CODE + 0x01FB, bytearray([0x32])) # db $32 ; 3 coins + rom.write_bytes(INDICATOR_CODE + 0x01FC, bytearray([0x32])) # db $32 ; 5 coins + rom.write_bytes(INDICATOR_CODE + 0x01FD, bytearray([0x32])) # db $32 ; 10 coins + rom.write_bytes(INDICATOR_CODE + 0x01FE, bytearray([0x32])) # db $32 ; yoshi egg + rom.write_bytes(INDICATOR_CODE + 0x01FF, bytearray([0x32])) # db $32 ; 1up mushroom + rom.write_bytes(INDICATOR_CODE + 0x0200, bytearray([0x32])) # db $32 ; mushroom + rom.write_bytes(INDICATOR_CODE + 0x0201, bytearray([0x32])) # db $32 ; flower + rom.write_bytes(INDICATOR_CODE + 0x0202, bytearray([0x32])) # db $32 ; feather + rom.write_bytes(INDICATOR_CODE + 0x0203, bytearray([0x32])) # db $32 ; boss token + rom.write_bytes(INDICATOR_CODE + 0x0204, bytearray([0x32])) # db $32 ; + rom.write_bytes(INDICATOR_CODE + 0x0205, bytearray([0x32])) # db $32 ; + rom.write_bytes(INDICATOR_CODE + 0x0206, bytearray([0x32])) # db $32 ; + rom.write_bytes(INDICATOR_CODE + 0x0207, bytearray([0x32])) # db $32 ; + rom.write_bytes(INDICATOR_CODE + 0x0208, bytearray([0x32])) # db $32 ; + rom.write_bytes(INDICATOR_CODE + 0x0209, bytearray([0x4B, 0x69])) # ..num_tile db $4B,$69 ; 1 coin + rom.write_bytes(INDICATOR_CODE + 0x020B, bytearray([0x5B, 0x69])) # db $5B,$69 ; 5 coins + rom.write_bytes(INDICATOR_CODE + 0x020D, bytearray([0x4B, 0x4A])) # db $4B,$4A ; 10 coins + rom.write_bytes(INDICATOR_CODE + 0x020F, bytearray([0x4B, 0x5B])) # db $4B,$5B ; 15 coins + rom.write_bytes(INDICATOR_CODE + 0x0211, bytearray([0x4B, 0x69])) # db $4B,$69 ; yoshi egg + rom.write_bytes(INDICATOR_CODE + 0x0213, bytearray([0x4B, 0x69])) # db $4B,$69 ; 1up mushroom + rom.write_bytes(INDICATOR_CODE + 0x0215, bytearray([0x4B, 0x69])) # db $4B,$69 ; mushroom + rom.write_bytes(INDICATOR_CODE + 0x0217, bytearray([0x4B, 0x69])) # db $4B,$69 ; flower + rom.write_bytes(INDICATOR_CODE + 0x0219, bytearray([0x4B, 0x69])) # db $4B,$69 ; feather + rom.write_bytes(INDICATOR_CODE + 0x021B, bytearray([0x4B, 0x69])) # db $4B,$69 ; boss token + rom.write_bytes(INDICATOR_CODE + 0x021D, bytearray([0x69, 0x69])) # db $69,$69 ; + rom.write_bytes(INDICATOR_CODE + 0x021F, bytearray([0x69, 0x69])) # db $69,$69 ; + rom.write_bytes(INDICATOR_CODE + 0x0221, bytearray([0x69, 0x69])) # db $69,$69 ; + rom.write_bytes(INDICATOR_CODE + 0x0223, bytearray([0x69, 0x69])) # db $69,$69 ; + rom.write_bytes(INDICATOR_CODE + 0x0225, bytearray([0x69, 0x69])) # db $69,$69 ; + rom.write_bytes(INDICATOR_CODE + 0x0227, bytearray([0x34, 0x34])) # ..num_props db $34,$34 ; 1 coin + rom.write_bytes(INDICATOR_CODE + 0x0229, bytearray([0x34, 0x34])) # db $34,$34 ; 5 coins + rom.write_bytes(INDICATOR_CODE + 0x022B, bytearray([0x34, 0x34])) # db $34,$34 ; 10 coins + rom.write_bytes(INDICATOR_CODE + 0x022D, bytearray([0x34, 0x34])) # db $34,$34 ; 15 coins + rom.write_bytes(INDICATOR_CODE + 0x022F, bytearray([0x34, 0x34])) # db $34,$34 ; yoshi egg + rom.write_bytes(INDICATOR_CODE + 0x0231, bytearray([0x34, 0x34])) # db $34,$34 ; 1up mushroom + rom.write_bytes(INDICATOR_CODE + 0x0233, bytearray([0x34, 0x34])) # db $34,$34 ; mushroom + rom.write_bytes(INDICATOR_CODE + 0x0235, bytearray([0x34, 0x34])) # db $34,$34 ; flower + rom.write_bytes(INDICATOR_CODE + 0x0237, bytearray([0x34, 0x34])) # db $34,$34 ; feather + rom.write_bytes(INDICATOR_CODE + 0x0239, bytearray([0x34, 0x34])) # db $34,$34 ; boss token + rom.write_bytes(INDICATOR_CODE + 0x023B, bytearray([0x34, 0x34])) # db $34,$34 ; + rom.write_bytes(INDICATOR_CODE + 0x023D, bytearray([0x34, 0x34])) # db $34,$34 ; + rom.write_bytes(INDICATOR_CODE + 0x023F, bytearray([0x34, 0x34])) # db $34,$34 ; + rom.write_bytes(INDICATOR_CODE + 0x0241, bytearray([0x34, 0x34])) # db $34,$34 ; + rom.write_bytes(INDICATOR_CODE + 0x0243, bytearray([0x34, 0x34])) # db $34,$34 ; + rom.write_bytes(INDICATOR_CODE + 0x0245, bytearray([0x50, 0x58, 0x60, 0x68, 0x70, 0x78])) # ..oam_2 db $50,$58,$60,$68,$70,$78 + rom.write_bytes(INDICATOR_CODE + 0x024B, bytearray([0x69, 0xC2])) # .reward_ptrs dw .one_coin + rom.write_bytes(INDICATOR_CODE + 0x024D, bytearray([0x6D, 0xC2])) # dw .three_coins + rom.write_bytes(INDICATOR_CODE + 0x024F, bytearray([0x71, 0xC2])) # dw .five_coins + rom.write_bytes(INDICATOR_CODE + 0x0251, bytearray([0x75, 0xC2])) # dw .ten_coins + rom.write_bytes(INDICATOR_CODE + 0x0253, bytearray([0x8A, 0xC2])) # dw .yoshi_egg + rom.write_bytes(INDICATOR_CODE + 0x0255, bytearray([0xA0, 0xC2])) # dw .green_mushroom + rom.write_bytes(INDICATOR_CODE + 0x0257, bytearray([0xA6, 0xC2])) # dw .mushroom + rom.write_bytes(INDICATOR_CODE + 0x0259, bytearray([0xA8, 0xC2])) # dw .flower + rom.write_bytes(INDICATOR_CODE + 0x025B, bytearray([0xAA, 0xC2])) # dw .shared_item + rom.write_bytes(INDICATOR_CODE + 0x025D, bytearray([0x95, 0xC2])) # dw .boss_token + rom.write_bytes(INDICATOR_CODE + 0x025F, bytearray([0xCB, 0xC0])) # dw .handle_movement + rom.write_bytes(INDICATOR_CODE + 0x0261, bytearray([0xCB, 0xC0])) # dw .handle_movement + rom.write_bytes(INDICATOR_CODE + 0x0263, bytearray([0xCB, 0xC0])) # dw .handle_movement + rom.write_bytes(INDICATOR_CODE + 0x0265, bytearray([0xCB, 0xC0])) # dw .handle_movement + rom.write_bytes(INDICATOR_CODE + 0x0267, bytearray([0xCB, 0xC0])) # dw .handle_movement + rom.write_bytes(INDICATOR_CODE + 0x0269, bytearray([0xA9, 0x01])) # .one_coin lda #$01 + rom.write_bytes(INDICATOR_CODE + 0x026B, bytearray([0x80, 0x0A])) # bra .shared_coins + rom.write_bytes(INDICATOR_CODE + 0x026D, bytearray([0xA9, 0x05])) # .three_coins lda #$05 + rom.write_bytes(INDICATOR_CODE + 0x026F, bytearray([0x80, 0x06])) # bra .shared_coins + rom.write_bytes(INDICATOR_CODE + 0x0271, bytearray([0xA9, 0x0A])) # .five_coins lda #$0A + rom.write_bytes(INDICATOR_CODE + 0x0273, bytearray([0x80, 0x02])) # bra .shared_coins + rom.write_bytes(INDICATOR_CODE + 0x0275, bytearray([0xA9, 0x0F])) # .ten_coins lda #$0F + rom.write_bytes(INDICATOR_CODE + 0x0277, bytearray([0x18])) # .shared_coins clc + rom.write_bytes(INDICATOR_CODE + 0x0278, bytearray([0x6D, 0xCC, 0x13])) # adc $13CC + rom.write_bytes(INDICATOR_CODE + 0x027B, bytearray([0x90, 0x02])) # bcc + + rom.write_bytes(INDICATOR_CODE + 0x027D, bytearray([0xA9, 0xFF])) # lda #$FF + rom.write_bytes(INDICATOR_CODE + 0x027F, bytearray([0x8D, 0xCC, 0x13])) # + sta $13CC + rom.write_bytes(INDICATOR_CODE + 0x0282, bytearray([0xA9, 0x01])) # lda #$01 + rom.write_bytes(INDICATOR_CODE + 0x0284, bytearray([0x8D, 0xFC, 0x1D])) # sta $1DFC + rom.write_bytes(INDICATOR_CODE + 0x0287, bytearray([0x4C, 0xCB, 0xC0])) # jmp .handle_movement + rom.write_bytes(INDICATOR_CODE + 0x028A, bytearray([0xEE, 0x24, 0x1F])) # .yoshi_egg inc $1F24 + rom.write_bytes(INDICATOR_CODE + 0x028D, bytearray([0xA9, 0x1F])) # lda #$1F + rom.write_bytes(INDICATOR_CODE + 0x028F, bytearray([0x8D, 0xFC, 0x1D])) # sta $1DFC + rom.write_bytes(INDICATOR_CODE + 0x0292, bytearray([0x4C, 0xCB, 0xC0])) # jmp .handle_movement + rom.write_bytes(INDICATOR_CODE + 0x0295, bytearray([0xEE, 0x26, 0x1F])) # .boss_token inc $1F26 + rom.write_bytes(INDICATOR_CODE + 0x0298, bytearray([0xA9, 0x09])) # lda #$09 + rom.write_bytes(INDICATOR_CODE + 0x029A, bytearray([0x8D, 0xFC, 0x1D])) # sta $1DFC + rom.write_bytes(INDICATOR_CODE + 0x029D, bytearray([0x4C, 0xCB, 0xC0])) # jmp .handle_movement + rom.write_bytes(INDICATOR_CODE + 0x02A0, bytearray([0xEE, 0xE4, 0x18])) # .green_mushroom inc $18E4 + rom.write_bytes(INDICATOR_CODE + 0x02A3, bytearray([0x4C, 0xCB, 0xC0])) # jmp .handle_movement + rom.write_bytes(INDICATOR_CODE + 0x02A6, bytearray([0x80, 0x02])) # .mushroom bra .shared_item + rom.write_bytes(INDICATOR_CODE + 0x02A8, bytearray([0x80, 0x00])) # .flower bra .shared_item + rom.write_bytes(INDICATOR_CODE + 0x02AA, bytearray([0xA9, 0x0B])) # .shared_item lda #$0B + rom.write_bytes(INDICATOR_CODE + 0x02AC, bytearray([0x8D, 0xFC, 0x1D])) # sta $1DFC + rom.write_bytes(INDICATOR_CODE + 0x02AF, bytearray([0x4C, 0xCB, 0xC0])) # jmp .handle_movement + +def read_code_file(filename): + return pkgutil.get_data(__name__, f"{filename}") + #return open(os.path.join(os.path.dirname(__file__), filename), "rb").read() + +def read_graphics_file(filename): + return pkgutil.get_data(__name__, f"data/graphics/{filename}") + #return open(os.path.join(os.path.dirname(__file__), "data", "graphics", filename), "rb").read() + +def handle_uncompressed_player_gfx(rom): + # Decompresses and moves into a expanded region the player, yoshi and animated graphics + # This should make swapping the graphics a lot easier. + # Maybe I should look into making a 32x32 version at some point... + # It also moves some 8x8 tiles in GFX00, thus making some free space for indicators and other stuff + # in VRAM during gameplay, will come super handy later. + # + # FOR FUTURE REFERENCE + # Player graphics are now located at 0xE0000 + # Player auxiliary tiles are now located at 0xE6000 + # Yoshi graphics are now located at 0xE8800 + SMW_COMPRESSED_PLAYER_GFX = 0x40000 + SMW_COMPRESSED_ANIMATED_GFX = 0x43FC0 + SMW_COMPRESSED_GFX_00 = 0x459F9 + compressed_player_gfx = rom.read_bytes(SMW_COMPRESSED_PLAYER_GFX, 0x3FC0) + compressed_animated_gfx = rom.read_bytes(SMW_COMPRESSED_ANIMATED_GFX, 0x1A39) + compressed_gfx_00 = rom.read_bytes(SMW_COMPRESSED_GFX_00, 0x0838) + decompressed_player_gfx = decompress_gfx(compressed_player_gfx) + decompressed_animated_gfx = convert_3bpp(decompress_gfx(compressed_animated_gfx)) + decompressed_gfx_00 = convert_3bpp(decompress_gfx(compressed_gfx_00)) + + # Copy berry tiles + order = [0x26C, 0x26D, 0x26E, 0x26F, + 0x27C, 0x27D, 0x27E, 0x27F, + 0x2E0, 0x2E1, 0x2E2, 0x2E3, + 0x2E4, 0x2E5, 0x2E6, 0x2E7] + decompressed_animated_gfx += copy_gfx_tiles(decompressed_player_gfx, order) + + # Copy Mario's auxiliary tiles + order = [0x80, 0x91, 0x81, 0x90, 0x82, 0x83] + decompressed_gfx_00 += copy_gfx_tiles(decompressed_player_gfx, order) + order = [0x69, 0x69, 0x0C, 0x69, 0x1A, 0x1B, 0x0D, 0x69, 0x22, 0x23, 0x32, 0x33, 0x0A, 0x0B, 0x20, 0x21, + 0x30, 0x31, 0x7E, 0x69, 0x80, 0x4A, 0x81, 0x5B, 0x82, 0x4B, 0x83, 0x5A, 0x84, 0x69, 0x85, 0x85] + player_small_tiles = copy_gfx_tiles(decompressed_gfx_00, order) + + rom.write_bytes(0xE0000, decompressed_player_gfx) + rom.write_bytes(0xE8000, decompressed_animated_gfx) + rom.write_bytes(0xE6000, player_small_tiles) + + # Skip Player & Animated tile decompression + rom.write_bytes(0x03888, bytearray([0x60])) # RTS + + # Edit Mario DMA routine + MARIO_GFX_DMA_ADDR = 0x02300 + rom.write_bytes(MARIO_GFX_DMA_ADDR + 0x0000, bytearray([0xA2, 0x04])) # LDX #$04 + rom.write_bytes(MARIO_GFX_DMA_ADDR + 0x0002, bytearray([0x22, 0x00, 0xF0, 0x10])) # JSL $10F000 ; upload_score_sprite_gfx + rom.write_bytes(MARIO_GFX_DMA_ADDR + 0x0006, bytearray([0x22, 0x00, 0xF8, 0x0F])) # JSL $0FF800 ; player_code + rom.write_bytes(MARIO_GFX_DMA_ADDR + 0x000A, bytearray([0x60])) # RTS + + PLAYER_UPLOAD_ADDR = 0x7F800 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x0000, bytearray([0xC2, 0x20])) # player_code: rep #$20 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x0002, bytearray([0xAC, 0x84, 0x0D])) # ldy $0D84 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x0005, bytearray([0xD0, 0x03])) # bne .upload_player_palette + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x0007, bytearray([0x4C, 0xD2, 0xF8])) # jmp .skip_everything + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x000A, bytearray([0xA0, 0x86])) # .upload_player_palette ldy #$86 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x000C, bytearray([0x8C, 0x21, 0x21])) # sty $2121 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x000F, bytearray([0xA9, 0x00, 0x22])) # lda #$2200 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x0012, bytearray([0x8D, 0x20, 0x43])) # sta $4320 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x0015, bytearray([0xA8])) # tay + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x0016, bytearray([0xAD, 0x82, 0x0D])) # lda $0D82 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x0019, bytearray([0x8D, 0x22, 0x43])) # sta $4322 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x001C, bytearray([0x8C, 0x24, 0x43])) # sty $4324 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x001F, bytearray([0xA9, 0x14, 0x00])) # lda #$0014 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x0022, bytearray([0x8D, 0x25, 0x43])) # sta $4325 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x0025, bytearray([0x8E, 0x0B, 0x42])) # stx $420B + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x0028, bytearray([0xA0, 0x80])) # ldy #$80 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x002A, bytearray([0x8C, 0x15, 0x21])) # sty $2115 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x002D, bytearray([0xA9, 0x01, 0x18])) # lda #$1801 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x0030, bytearray([0x8D, 0x20, 0x43])) # sta $4320 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x0033, bytearray([0xA0, 0x1C])) # ldy.b #player_gfx>>16 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x0035, bytearray([0x8C, 0x24, 0x43])) # sty $4324 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x0038, bytearray([0xA9, 0x00, 0x60])) # .upload_player_top lda #$6000 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x003B, bytearray([0x8D, 0x16, 0x21])) # sta $2116 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x003E, bytearray([0xA8])) # tay + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x003F, bytearray([0xB9, 0x85, 0x0D])) # - lda $0D85,y + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x0042, bytearray([0x8D, 0x22, 0x43])) # sta $4322 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x0045, bytearray([0xA9, 0x40, 0x00])) # lda #$0040 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x0048, bytearray([0x8D, 0x25, 0x43])) # sta $4325 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x004B, bytearray([0x8E, 0x0B, 0x42])) # stx $420B + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x004E, bytearray([0xC8])) # iny + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x004F, bytearray([0xC8])) # iny + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x0050, bytearray([0xC0, 0x06])) # cpy #$06 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x0052, bytearray([0xD0, 0xEB])) # bne - + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x0054, bytearray([0xA9, 0x00, 0x61])) # .upload_player_bottom lda #$6100 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x0057, bytearray([0x8D, 0x16, 0x21])) # sta $2116 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x005A, bytearray([0xA8])) # tay + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x005B, bytearray([0xB9, 0x8F, 0x0D])) # - lda $0D8F,y + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x005E, bytearray([0x8D, 0x22, 0x43])) # sta $4322 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x0061, bytearray([0xA9, 0x40, 0x00])) # lda #$0040 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x0064, bytearray([0x8D, 0x25, 0x43])) # sta $4325 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x0067, bytearray([0x8E, 0x0B, 0x42])) # stx $420B + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x006A, bytearray([0xC8])) # iny + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x006B, bytearray([0xC8])) # iny + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x006C, bytearray([0xC0, 0x06])) # cpy #$06 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x006E, bytearray([0xD0, 0xEB])) # bne - + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x0070, bytearray([0xAC, 0x9B, 0x0D])) # .upload_player_extended ldy $0D9B + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x0073, bytearray([0xC0, 0x02])) # cpy #$02 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x0075, bytearray([0xF0, 0x5B])) # beq .skip_everything + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x0077, bytearray([0xA9, 0xC0, 0x60])) # lda #$60C0 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x007A, bytearray([0x8D, 0x16, 0x21])) # sta $2116 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x007D, bytearray([0xAD, 0x99, 0x0D])) # lda $0D99 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x0080, bytearray([0x8D, 0x22, 0x43])) # sta $4322 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x0083, bytearray([0xA9, 0x40, 0x00])) # lda #$0040 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x0086, bytearray([0x8D, 0x25, 0x43])) # sta $4325 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x0089, bytearray([0x8E, 0x0B, 0x42])) # stx $420B + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x008C, bytearray([0xA0, 0x1D])) # .upload_misc_tiles ldy.b #animated_tiles>>16 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x008E, bytearray([0x8C, 0x24, 0x43])) # sty $4324 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x0091, bytearray([0xA9, 0x60, 0x60])) # lda #$6060 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x0094, bytearray([0x8D, 0x16, 0x21])) # sta $2116 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x0097, bytearray([0xA0, 0x06])) # ldy #$06 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x0099, bytearray([0xCC, 0x84, 0x0D])) # cpy $0D84 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x009C, bytearray([0xB0, 0x34])) # bcs .skip_everything + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x009E, bytearray([0xB9, 0x85, 0x0D])) # - lda $0D85,y + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x00A1, bytearray([0x8D, 0x22, 0x43])) # sta $4322 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x00A4, bytearray([0xA9, 0x40, 0x00])) # lda #$0040 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x00A7, bytearray([0x8D, 0x25, 0x43])) # sta $4325 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x00AA, bytearray([0x8E, 0x0B, 0x42])) # stx $420B + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x00AD, bytearray([0xC8])) # iny + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x00AE, bytearray([0xC8])) # iny + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x00AF, bytearray([0xCC, 0x84, 0x0D])) # cpy $0D84 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x00B2, bytearray([0x90, 0xEA])) # bcc - + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x00B4, bytearray([0xA9, 0x60, 0x61])) # lda #$6160 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x00B7, bytearray([0x8D, 0x16, 0x21])) # sta $2116 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x00BA, bytearray([0xA0, 0x06])) # ldy #$06 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x00BC, bytearray([0xB9, 0x8F, 0x0D])) # - lda $0D8F,y + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x00BF, bytearray([0x8D, 0x22, 0x43])) # sta $4322 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x00C2, bytearray([0xA9, 0x40, 0x00])) # lda #$0040 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x00C5, bytearray([0x8D, 0x25, 0x43])) # sta $4325 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x00C8, bytearray([0x8E, 0x0B, 0x42])) # stx $420B + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x00CB, bytearray([0xC8])) # iny + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x00CC, bytearray([0xC8])) # iny + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x00CD, bytearray([0xCC, 0x84, 0x0D])) # cpy $0D84 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x00D0, bytearray([0x90, 0xEA])) # bcc - + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x00D2, bytearray([0xE2, 0x20])) # .skip_everything sep #$20 + rom.write_bytes(PLAYER_UPLOAD_ADDR + 0x00D4, bytearray([0x6B])) # rtl + + # Obtain data for new 8x8 tile + CHAR_TILE_CODE_ADDR = 0x05FE2 + rom.write_bytes(0x063B1, bytearray([0x20, 0xE2, 0xDF])) # jsr $DFE2 + rom.write_bytes(CHAR_TILE_CODE_ADDR + 0x0000, bytearray([0xB9, 0x1A, 0xDF])) # lda $DF1A,y + rom.write_bytes(CHAR_TILE_CODE_ADDR + 0x0003, bytearray([0x10, 0x06])) # bpl $06 + rom.write_bytes(CHAR_TILE_CODE_ADDR + 0x0005, bytearray([0x29, 0x7F])) # and #$7F + rom.write_bytes(CHAR_TILE_CODE_ADDR + 0x0007, bytearray([0x85, 0x0D])) # sta $0D + rom.write_bytes(CHAR_TILE_CODE_ADDR + 0x0009, bytearray([0xA9, 0x04])) # lda #$04 + rom.write_bytes(CHAR_TILE_CODE_ADDR + 0x000B, bytearray([0x60])) # rts + + rom.write_bytes(0x0640D, bytearray([0x20, 0xEE, 0xDF])) # jsr $DFEE + CAPE_TILE_CODE_ADDR = 0x05FEE + rom.write_bytes(CAPE_TILE_CODE_ADDR + 0x0000, bytearray([0xA5, 0x0D])) # lda $0D + rom.write_bytes(CAPE_TILE_CODE_ADDR + 0x0002, bytearray([0xE0, 0x2B])) # cpx #$2B + rom.write_bytes(CAPE_TILE_CODE_ADDR + 0x0004, bytearray([0x90, 0x07])) # bcc $07 + rom.write_bytes(CAPE_TILE_CODE_ADDR + 0x0006, bytearray([0xE0, 0x40])) # cpx #$40 + rom.write_bytes(CAPE_TILE_CODE_ADDR + 0x0008, bytearray([0xB0, 0x03])) # bcs $03 + rom.write_bytes(CAPE_TILE_CODE_ADDR + 0x000A, bytearray([0xBD, 0xD7, 0xE1])) # lda $E1D7,x + rom.write_bytes(CAPE_TILE_CODE_ADDR + 0x000D, bytearray([0x60])) # rts + + # Edit Mario's 8x8 tile data + MARIO_AUX_TILE_DATA_ADDR = 0x05F1A + rom.write_bytes(MARIO_AUX_TILE_DATA_ADDR + 0x0000, bytearray([0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00])) + rom.write_bytes(MARIO_AUX_TILE_DATA_ADDR + 0x0008, bytearray([0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00])) + rom.write_bytes(MARIO_AUX_TILE_DATA_ADDR + 0x0010, bytearray([0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00])) + rom.write_bytes(MARIO_AUX_TILE_DATA_ADDR + 0x0018, bytearray([0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00])) + rom.write_bytes(MARIO_AUX_TILE_DATA_ADDR + 0x0020, bytearray([0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00])) + rom.write_bytes(MARIO_AUX_TILE_DATA_ADDR + 0x0028, bytearray([0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00])) + rom.write_bytes(MARIO_AUX_TILE_DATA_ADDR + 0x0030, bytearray([0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00])) + rom.write_bytes(MARIO_AUX_TILE_DATA_ADDR + 0x0038, bytearray([0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00])) + rom.write_bytes(MARIO_AUX_TILE_DATA_ADDR + 0x0040, bytearray([0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00])) + rom.write_bytes(MARIO_AUX_TILE_DATA_ADDR + 0x0048, bytearray([0x00,0x00,0x82,0x82,0x82,0x00,0x00,0x00])) + rom.write_bytes(MARIO_AUX_TILE_DATA_ADDR + 0x0050, bytearray([0x00,0x00,0x84,0x00,0x00,0x00,0x00,0x86])) + rom.write_bytes(MARIO_AUX_TILE_DATA_ADDR + 0x0058, bytearray([0x86,0x86,0x00,0x00,0x88,0x88,0x8A,0x8A])) + rom.write_bytes(MARIO_AUX_TILE_DATA_ADDR + 0x0060, bytearray([0x8C,0x8C,0x00,0x00,0x90,0x00,0x00,0x00])) + rom.write_bytes(MARIO_AUX_TILE_DATA_ADDR + 0x0068, bytearray([0x00,0x8E,0x00,0x00,0x00,0x00,0x92,0x00])) + rom.write_bytes(MARIO_AUX_TILE_DATA_ADDR + 0x0070, bytearray([0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00])) + rom.write_bytes(MARIO_AUX_TILE_DATA_ADDR + 0x0078, bytearray([0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00])) + rom.write_bytes(MARIO_AUX_TILE_DATA_ADDR + 0x0080, bytearray([0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x82])) + rom.write_bytes(MARIO_AUX_TILE_DATA_ADDR + 0x0088, bytearray([0x82,0x82,0x00,0x00,0x00,0x00,0x00,0x84])) + rom.write_bytes(MARIO_AUX_TILE_DATA_ADDR + 0x0090, bytearray([0x00,0x00,0x00,0x00,0x86,0x86,0x86,0x00])) + rom.write_bytes(MARIO_AUX_TILE_DATA_ADDR + 0x0098, bytearray([0x00,0x88,0x88,0x8A,0x8A,0x8C,0x8C,0x00])) + rom.write_bytes(MARIO_AUX_TILE_DATA_ADDR + 0x00A0, bytearray([0x00,0x90,0x00,0x00,0x00,0x00,0x8E,0x00])) + rom.write_bytes(MARIO_AUX_TILE_DATA_ADDR + 0x00A8, bytearray([0x00,0x00,0x00,0x92,0x00,0x00,0x00,0x00])) + rom.write_bytes(MARIO_AUX_TILE_DATA_ADDR + 0x00B0, bytearray([0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00])) + rom.write_bytes(MARIO_AUX_TILE_DATA_ADDR + 0x00B8, bytearray([0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00])) + + MARIO_AUX_TILE_OFFSETS_ADDR = 0x05FDA # ends at $00E00C + rom.write_bytes(MARIO_AUX_TILE_OFFSETS_ADDR + 0x0000, bytearray([0x00,0x02,0x80,0x80,0x00,0x02,0x0C,0x0D])) + rom.write_bytes(MARIO_AUX_TILE_OFFSETS_ADDR + 0x0022, bytearray([0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x02])) + rom.write_bytes(MARIO_AUX_TILE_OFFSETS_ADDR + 0x002A, bytearray([0x02,0x80,0x04,0x0C,0x0D,0xFF,0xFF,0xFF])) + + MARIO_AUX_CAPE_TILE_DATA_ADDR = 0x061FF + rom.write_bytes(MARIO_AUX_CAPE_TILE_DATA_ADDR + 0x0000, bytearray([0x00,0x8C,0x14,0x14,0x2E])) + rom.write_bytes(MARIO_AUX_CAPE_TILE_DATA_ADDR + 0x0005, bytearray([0x00,0xCA,0x16,0x16,0x2E])) + rom.write_bytes(MARIO_AUX_CAPE_TILE_DATA_ADDR + 0x000A, bytearray([0x00,0x8E,0x18,0x18,0x2E])) + rom.write_bytes(MARIO_AUX_CAPE_TILE_DATA_ADDR + 0x000F, bytearray([0x00,0xEB,0x1A,0x1A,0x2E])) + rom.write_bytes(MARIO_AUX_CAPE_TILE_DATA_ADDR + 0x0014, bytearray([0x04,0xED,0x1C,0x1C])) + + # Edit player data offsets + rom.write_bytes(0x07649, bytearray([0x69, 0x00, 0x80])) # adc #$8000 + rom.write_bytes(0x07667, bytearray([0x69, 0x00, 0x80])) # adc #$8000 + rom.write_bytes(0x0767C, bytearray([0x69, 0x00, 0x80])) # adc #$8000 + rom.write_bytes(0x07691, bytearray([0x69, 0x00, 0xE0])) # adc #$E000 + + # Fix berries + FIX_BERRIES_ADDR = 0x7FFE0 + rom.write_bytes(FIX_BERRIES_ADDR + 0x0000, bytearray([0xA0, 0x1D])) # fix_berries: ldy.b #animated_tiles>>16 + rom.write_bytes(FIX_BERRIES_ADDR + 0x0002, bytearray([0x8C, 0x24, 0x43])) # sty $4324 + rom.write_bytes(FIX_BERRIES_ADDR + 0x0005, bytearray([0xAD, 0x76, 0x0D])) # lda $0D76 + rom.write_bytes(FIX_BERRIES_ADDR + 0x0008, bytearray([0x8D, 0x22, 0x43])) # sta $4322 + rom.write_bytes(FIX_BERRIES_ADDR + 0x000B, bytearray([0x6B])) # rtl + + # Fix animated graphics + rom.write_bytes(0x018D1, bytearray([0x1D])) # db $1D + rom.write_bytes(0x0239E, bytearray([0x1D])) # db $1D + + rom.write_bytes(0x023F0, bytearray([0x22, 0xE0, 0xFF, 0x0F])) # jsl $0FFFE0 + rom.write_bytes(0x023F4, bytearray([0xEA])) # nop + rom.write_bytes(0x023F5, bytearray([0xEA])) # nop + + rom.write_bytes(0x0E1A8, bytearray([0x69, 0x00, 0x88])) # adc #$8800 + rom.write_bytes(0x0EEB4, bytearray([0x69, 0x00, 0x88])) # adc #$8800 + rom.write_bytes(0x0EEC9, bytearray([0x69, 0x00, 0x88])) # adc #$8800 + rom.write_bytes(0x16A3E, bytearray([0x69, 0x00, 0x88])) # adc #$8800 + + ANIMATED_TILE_DATA_ADDR = 0x2B999 + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x0000, bytearray([0x00,0x98,0x00,0x9A,0x00,0x9C,0x00,0x9E])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x0008, bytearray([0x80,0x98,0x80,0x9A,0x80,0x9C,0x80,0x9E])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x0010, bytearray([0x00,0x99,0x00,0x99,0x00,0x99,0x00,0x99])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x0018, bytearray([0x80,0xA0,0x80,0xA2,0x80,0xA4,0x80,0xA6])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x0020, bytearray([0x00,0x99,0x00,0x9B,0x00,0x9D,0x00,0x9F])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x0028, bytearray([0x00,0xB0,0x80,0xB0,0x00,0xB1,0x80,0xB1])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x0030, bytearray([0x20,0xAF,0x20,0xAF,0x20,0xAF,0x20,0xAF])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x0038, bytearray([0x20,0xAF,0x20,0xAF,0x20,0xAF,0x20,0xAF])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x0040, bytearray([0x80,0x96,0x80,0x96,0x80,0x96,0x80,0x96])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x0048, bytearray([0x00,0xA7,0x80,0xA7,0x00,0xA7,0x80,0xA7])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x0050, bytearray([0x20,0xAF,0x20,0xAF,0x20,0xAF,0x20,0xAF])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x0058, bytearray([0x00,0xAF,0x00,0xAF,0x00,0xAF,0x00,0xAF])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x0060, bytearray([0x00,0x94,0x00,0x94,0x00,0x94,0x00,0x94])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x0068, bytearray([0x80,0x99,0x80,0x9B,0x80,0x9D,0x80,0x9F])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x0070, bytearray([0x00,0xA0,0x00,0xA2,0x00,0xA4,0x00,0xA6])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x0078, bytearray([0x80,0x91,0x80,0x93,0x80,0x95,0x80,0x97])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x0080, bytearray([0x00,0x98,0x00,0x98,0x00,0x98,0x00,0x98])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x0088, bytearray([0x00,0x98,0x00,0x98,0x00,0x98,0x00,0x98])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x0090, bytearray([0x00,0x98,0x00,0x98,0x00,0x98,0x00,0x98])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x0098, bytearray([0x00,0xA0,0x00,0xA2,0x00,0xA4,0x00,0xA6])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x00A0, bytearray([0x80,0x91,0x80,0x93,0x80,0x95,0x80,0x97])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x00A8, bytearray([0x00,0x80,0x00,0x82,0x00,0x84,0x00,0x86])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x00B0, bytearray([0x00,0x86,0x00,0x84,0x00,0x82,0x00,0x80])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x00B8, bytearray([0x00,0xA1,0x00,0xA3,0x00,0xA5,0x00,0xA3])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x00C0, bytearray([0x00,0xA0,0x00,0xA2,0x00,0xA4,0x00,0xA6])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x00C8, bytearray([0x00,0xA8,0x00,0xAA,0x00,0xAC,0x00,0xAE])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x00D0, bytearray([0x80,0xA8,0x80,0xAA,0x80,0xAC,0x80,0xAE])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x00D8, bytearray([0x80,0xAE,0x80,0xAC,0x80,0xAA,0x80,0xA8])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x00E0, bytearray([0x00,0x98,0x00,0x98,0x00,0x98,0x00,0x98])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x00E8, bytearray([0x80,0xA1,0x80,0xA3,0x80,0xA5,0x80,0xA3])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x00F0, bytearray([0x80,0x80,0x80,0x82,0x80,0x84,0x80,0x86])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x00F8, bytearray([0x00,0x81,0x00,0x83,0x00,0x85,0x00,0x87])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x0100, bytearray([0x80,0x81,0x80,0x83,0x80,0x85,0x80,0x87])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x0108, bytearray([0x80,0x86,0x80,0x84,0x80,0x82,0x80,0x80])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x0110, bytearray([0x00,0x98,0x00,0x98,0x00,0x98,0x00,0x98])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x0118, bytearray([0x80,0xA9,0x80,0xAB,0x80,0xAD,0x80,0xAB])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x0120, bytearray([0x00,0x91,0x00,0x93,0x00,0x95,0x00,0x97])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x0128, bytearray([0x00,0x98,0x00,0x98,0x00,0x98,0x00,0x98])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x0130, bytearray([0x00,0x98,0x00,0x98,0x00,0x98,0x00,0x98])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x0138, bytearray([0x80,0xA1,0x80,0xA3,0x80,0xA5,0x80,0xA3])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x0140, bytearray([0x00,0xA9,0x00,0xAB,0x00,0xAD,0x00,0xAB])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x0148, bytearray([0x00,0x98,0x00,0x98,0x00,0x98,0x00,0x98])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x0150, bytearray([0x00,0x98,0x00,0x98,0x00,0x98,0x00,0x98])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x0158, bytearray([0x00,0x98,0x00,0x98,0x00,0x98,0x00,0x98])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x0160, bytearray([0x80,0x94,0x80,0x94,0x80,0x94,0x80,0x94])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x0168, bytearray([0x80,0x99,0x80,0x9B,0x80,0x9D,0x80,0x9F])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x0170, bytearray([0x80,0x99,0x80,0x9B,0x80,0x9D,0x80,0x9F])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x0178, bytearray([0x80,0x99,0x80,0x9B,0x80,0x9D,0x80,0x9F])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x0180, bytearray([0x00,0x98,0x00,0x9A,0x00,0x9C,0x00,0x9E])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x0188, bytearray([0x80,0xAF,0x80,0xAF,0x80,0xAF,0x80,0xAF])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x0190, bytearray([0x00,0x96,0x00,0x96,0x00,0x96,0x00,0x96])) + rom.write_bytes(ANIMATED_TILE_DATA_ADDR + 0x0198, bytearray([0x80,0x96,0x80,0x96,0x80,0x96,0x80,0x96])) + + # Insert hand drawn graphics for in level indicators + rom.write_bytes(0xE7000, read_graphics_file("indicators.bin")) + # Upload indicator GFX + UPLOAD_INDICATOR_GFX = 0x87000 + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x0000, bytearray([0xAD, 0x00, 0x01])) # upload_score_sprite_gfx: lda $0100 + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x0003, bytearray([0xC9, 0x13])) # cmp #$13 + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x0005, bytearray([0xD0, 0x7A])) # bne .skip + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x0007, bytearray([0xA5, 0x7C])) # lda $7C + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x0009, bytearray([0xD0, 0x76])) # bne .skip + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x000B, bytearray([0xE6, 0x7C])) # inc $7C + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x000D, bytearray([0xC2, 0x20])) # rep #$20 + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x000F, bytearray([0xA0, 0x80])) # ldy #$80 + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x0011, bytearray([0x8C, 0x15, 0x21])) # sty $2115 + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x0014, bytearray([0xA9, 0x01, 0x18])) # lda #$1801 + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x0017, bytearray([0x8D, 0x20, 0x43])) # sta $4320 + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x001A, bytearray([0xA0, 0x1C])) # ldy.b #score_sprites_tiles>>16 + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x001C, bytearray([0x8C, 0x24, 0x43])) # sty $4324 + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x001F, bytearray([0xA9, 0x00, 0xF0])) # lda.w #score_sprites_tiles + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x0022, bytearray([0x8D, 0x22, 0x43])) # sta $4322 + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x0025, bytearray([0xA9, 0xA0, 0x64])) # .nums_01 lda #$64A0 + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x0028, bytearray([0x8D, 0x16, 0x21])) # sta $2116 + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x002B, bytearray([0xA9, 0x40, 0x00])) # lda #$0040 + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x002E, bytearray([0x8D, 0x25, 0x43])) # sta $4325 + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x0031, bytearray([0x8E, 0x0B, 0x42])) # stx $420B + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x0034, bytearray([0xA9, 0xA0, 0x65])) # .nums_35 lda #$65A0 + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x0037, bytearray([0x8D, 0x16, 0x21])) # sta $2116 + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x003A, bytearray([0xA9, 0x40, 0x00])) # lda #$0040 + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x003D, bytearray([0x8D, 0x25, 0x43])) # sta $4325 + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x0040, bytearray([0x8E, 0x0B, 0x42])) # stx $420B + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x0043, bytearray([0xA9, 0xA0, 0x61])) # .plus_coin lda #$61A0 + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x0046, bytearray([0x8D, 0x16, 0x21])) # sta $2116 + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x0049, bytearray([0xA9, 0x40, 0x00])) # lda #$0040 + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x004C, bytearray([0x8D, 0x25, 0x43])) # sta $4325 + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x004F, bytearray([0x8E, 0x0B, 0x42])) # stx $420B + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x0052, bytearray([0xA9, 0xA0, 0x60])) # .egg_mushroom lda #$60A0 + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x0055, bytearray([0x8D, 0x16, 0x21])) # sta $2116 + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x0058, bytearray([0xA9, 0x40, 0x00])) # lda #$0040 + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x005B, bytearray([0x8D, 0x25, 0x43])) # sta $4325 + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x005E, bytearray([0x8E, 0x0B, 0x42])) # stx $420B + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x0061, bytearray([0xA9, 0xE0, 0x67])) # .flower_feather lda #$67E0 + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x0064, bytearray([0x8D, 0x16, 0x21])) # sta $2116 + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x0067, bytearray([0xA9, 0x40, 0x00])) # lda #$0040 + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x006A, bytearray([0x8D, 0x25, 0x43])) # sta $4325 + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x006D, bytearray([0x8E, 0x0B, 0x42])) # stx $420B + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x0070, bytearray([0xA9, 0x80, 0x63])) # .token lda #$6380 + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x0073, bytearray([0x8D, 0x16, 0x21])) # sta $2116 + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x0076, bytearray([0xA9, 0x20, 0x00])) # lda #$0020 + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x0079, bytearray([0x8D, 0x25, 0x43])) # sta $4325 + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x007C, bytearray([0x8E, 0x0B, 0x42])) # stx $420B + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x007F, bytearray([0xE2, 0x20])) # sep #$20 + rom.write_bytes(UPLOAD_INDICATOR_GFX + 0x0081, bytearray([0x6B])) # .skip rtl + + + + +def decompress_gfx(compressed_graphics): + # This code decompresses graphics in LC_LZ2 format in order to be able to swap player and yoshi's graphics with ease. + decompressed_gfx = bytearray([]) + i = 0 + while True: + cmd = compressed_graphics[i] + i += 1 + if cmd == 0xFF: + break + else: + if (cmd >> 5) == 0x07: + size = ((cmd & 0x03) << 8) + compressed_graphics[i] + 1 + cmd = (cmd & 0x1C) >> 2 + i += 1 + else: + size = (cmd & 0x1F) + 1 + cmd = cmd >> 5 + if cmd == 0x00: + decompressed_gfx += bytearray([compressed_graphics[i+j] for j in range(size)]) + i += size + elif cmd == 0x01: + byte_fill = compressed_graphics[i] + i += 1 + decompressed_gfx += bytearray([byte_fill for j in range(size)]) + elif cmd == 0x02: + byte_fill_1 = compressed_graphics[i] + i += 1 + byte_fill_2 = compressed_graphics[i] + i += 1 + for j in range(size): + if (j & 0x1) == 0x00: + decompressed_gfx += bytearray([byte_fill_1]) + else: + decompressed_gfx += bytearray([byte_fill_2]) + elif cmd == 0x03: + byte_read = compressed_graphics[i] + i += 1 + decompressed_gfx += bytearray([(byte_read + j) for j in range(size)]) + elif cmd == 0x04: + position = (compressed_graphics[i] << 8) + compressed_graphics[i+1] + i += 2 + for j in range(size): + copy_byte = decompressed_gfx[position+j] + decompressed_gfx += bytearray([copy_byte]) + return decompressed_gfx + +def convert_3bpp(decompressed_gfx): + i = 0 + converted_gfx = bytearray([]) + while i < len(decompressed_gfx): + converted_gfx += bytearray([decompressed_gfx[i+j] for j in range(16)]) + i += 16 + for j in range(8): + converted_gfx += bytearray([decompressed_gfx[i]]) + converted_gfx += bytearray([0x00]) + i += 1 + return converted_gfx + +def convert_2bpp(decompressed_gfx): + i = 0 + converted_gfx = bytearray([]) + while i < len(decompressed_gfx): + converted_gfx += bytearray([decompressed_gfx[i+j] for j in range(16)]) + i += 16 + for j in range(8): + converted_gfx += bytearray([0x00, 0x00]) + converted_gfx += bytearray([0x00, 0x00]) + return converted_gfx + +def copy_gfx_tiles(original, order): + result = bytearray([]) + for x in range(len(order)): + z = order[x] << 5 + result += bytearray([original[z+y] for y in range(32)]) + return result + + + +def file_to_bytes(filename): + return open(os.path.dirname(__file__)+filename, "rb").read() + def handle_music_shuffle(rom, world, player): from .Aesthetics import generate_shuffled_level_music, generate_shuffled_ow_music, level_music_address_data, ow_music_address_data @@ -723,9 +2528,9 @@ def handle_swap_donut_gh_exits(rom): rom.write_bytes(0x26371, bytes([0x32])) -def handle_bowser_rooms(rom, world, player): +def handle_bowser_rooms(rom, world, player: int): if world.bowser_castle_rooms[player] == "random_two_room": - chosen_rooms = world.random.sample(standard_bowser_rooms, 2) + chosen_rooms = world.per_slot_randoms[player].sample(standard_bowser_rooms, 2) rom.write_byte(0x3A680, chosen_rooms[0].roomID) rom.write_byte(0x3A684, chosen_rooms[0].roomID) @@ -738,7 +2543,7 @@ def handle_bowser_rooms(rom, world, player): rom.write_byte(chosen_rooms[len(chosen_rooms)-1].exitAddress, 0xBD) elif world.bowser_castle_rooms[player] == "random_five_room": - chosen_rooms = world.random.sample(standard_bowser_rooms, 5) + chosen_rooms = world.per_slot_randoms[player].sample(standard_bowser_rooms, 5) rom.write_byte(0x3A680, chosen_rooms[0].roomID) rom.write_byte(0x3A684, chosen_rooms[0].roomID) @@ -752,7 +2557,7 @@ def handle_bowser_rooms(rom, world, player): elif world.bowser_castle_rooms[player] == "gauntlet": chosen_rooms = standard_bowser_rooms.copy() - world.random.shuffle(chosen_rooms) + world.per_slot_randoms[player].shuffle(chosen_rooms) rom.write_byte(0x3A680, chosen_rooms[0].roomID) rom.write_byte(0x3A684, chosen_rooms[0].roomID) @@ -768,7 +2573,7 @@ def handle_bowser_rooms(rom, world, player): entrance_point = bowser_rooms_copy.pop(0) - world.random.shuffle(bowser_rooms_copy) + world.per_slot_randoms[player].shuffle(bowser_rooms_copy) rom.write_byte(entrance_point.exitAddress, bowser_rooms_copy[0].roomID) for i in range(0, len(bowser_rooms_copy) - 1): @@ -782,8 +2587,8 @@ def handle_boss_shuffle(rom, world, player): submap_boss_rooms_copy = submap_boss_rooms.copy() ow_boss_rooms_copy = ow_boss_rooms.copy() - world.random.shuffle(submap_boss_rooms_copy) - world.random.shuffle(ow_boss_rooms_copy) + world.per_slot_randoms[player].shuffle(submap_boss_rooms_copy) + world.per_slot_randoms[player].shuffle(ow_boss_rooms_copy) for i in range(len(submap_boss_rooms_copy)): rom.write_byte(submap_boss_rooms[i].exitAddress, submap_boss_rooms_copy[i].roomID) @@ -796,19 +2601,19 @@ def handle_boss_shuffle(rom, world, player): elif world.boss_shuffle[player] == "full": for i in range(len(submap_boss_rooms)): - chosen_boss = world.random.choice(submap_boss_rooms) + chosen_boss = world.per_slot_randoms[player].choice(submap_boss_rooms) rom.write_byte(submap_boss_rooms[i].exitAddress, chosen_boss.roomID) for i in range(len(ow_boss_rooms)): - chosen_boss = world.random.choice(ow_boss_rooms) + chosen_boss = world.per_slot_randoms[player].choice(ow_boss_rooms) rom.write_byte(ow_boss_rooms[i].exitAddress, chosen_boss.roomID) if ow_boss_rooms[i].exitAddressAlt is not None: rom.write_byte(ow_boss_rooms[i].exitAddressAlt, chosen_boss.roomID) elif world.boss_shuffle[player] == "singularity": - chosen_submap_boss = world.random.choice(submap_boss_rooms) - chosen_ow_boss = world.random.choice(ow_boss_rooms) + chosen_submap_boss = world.per_slot_randoms[player].choice(submap_boss_rooms) + chosen_ow_boss = world.per_slot_randoms[player].choice(ow_boss_rooms) for i in range(len(submap_boss_rooms)): rom.write_byte(submap_boss_rooms[i].exitAddress, chosen_submap_boss.roomID) @@ -821,7 +2626,9 @@ def handle_boss_shuffle(rom, world, player): def patch_rom(world, rom, player, active_level_dict): - local_random = world.slot_seeds[player] + # Handle ROM expansion + rom.write_bytes(0x07FD7, bytearray([0x0A])) + rom.write_bytes(0x80000, bytearray([0x00 for _ in range(0x80000)])) goal_text = generate_goal_text(world, player) @@ -880,6 +2687,13 @@ def patch_rom(world, rom, player, active_level_dict): rom.write_bytes(0x1E6C, bytearray([0x01])) rom.write_bytes(0x1E6E, bytearray([0x01])) + # Save current level number to RAM (not translevel) + rom.write_bytes(0x2D8B9, bytearray([0x20, 0x46, 0xDC])) # org $05D8B9 : jsr level_num + rom.write_bytes(0x2DC46 + 0x0000, bytearray([0xA5, 0x0E])) # level_num: lda $0E + rom.write_bytes(0x2DC46 + 0x0002, bytearray([0x8D, 0x0B, 0x01])) # sta $010B + rom.write_bytes(0x2DC46 + 0x0005, bytearray([0x0A])) # asl + rom.write_bytes(0x2DC46 + 0x0006, bytearray([0x60])) # rts + # Always allow Start+Select rom.write_bytes(0x2267, bytearray([0xEA, 0xEA])) @@ -913,7 +2727,24 @@ def patch_rom(world, rom, player, active_level_dict): handle_collected_paths(rom) - handle_vertical_scroll(rom) + if world.vertical_scroll[player]: + handle_vertical_scroll(rom) + + handle_ram(rom) + handle_bonus_block(rom) + handle_blocksanity(rom) + + handle_uncompressed_player_gfx(rom) + + # Handle special world clear flag + rom.write_bytes(0x02A74, bytearray([0xFF, 0x1F])) + rom.write_bytes(0x09826, bytearray([0xFF, 0x1F])) + rom.write_bytes(0x0B9CD, bytearray([0xFF, 0x1F])) + rom.write_bytes(0x12986, bytearray([0xFF, 0x1F])) + rom.write_bytes(0x62E0F, bytearray([0xFF, 0x1F])) + + handle_indicators(rom) + handle_map_indicators(rom) # Handle Level Shuffle handle_level_shuffle(rom, active_level_dict) @@ -925,6 +2756,11 @@ def patch_rom(world, rom, player, active_level_dict): generate_shuffled_ow_palettes(rom, world, player) generate_shuffled_header_data(rom, world, player) + generate_curated_palette_data(rom, world, player) + + if world.sfx_shuffle[player]: + generate_shuffled_sfx(rom, world, player) + if world.swap_donut_gh_exits[player]: handle_swap_donut_gh_exits(rom) @@ -945,14 +2781,17 @@ def patch_rom(world, rom, player, active_level_dict): rom.write_byte(0x01BFA5, world.death_link[player].value) rom.write_byte(0x01BFA6, world.dragon_coin_checks[player].value) rom.write_byte(0x01BFA7, world.swap_donut_gh_exits[player].value) + rom.write_byte(0x01BFA8, world.moon_checks[player].value) + rom.write_byte(0x01BFA9, world.checkpoint_checks[player].value) + rom.write_byte(0x01BFAA, world.bonus_block_checks[player].value) + rom.write_byte(0x01BFAB, world.blocksanity[player].value) - from Main import __version__ + from Utils import __version__ rom.name = bytearray(f'SMW{__version__.replace(".", "")[0:3]}_{player}_{world.seed:11}\0', 'utf8')[:21] rom.name.extend([0] * (21 - len(rom.name))) rom.write_bytes(0x7FC0, rom.name) - def get_base_rom_bytes(file_name: str = "") -> bytes: base_rom_bytes = getattr(get_base_rom_bytes, "base_rom_bytes", None) if not base_rom_bytes: @@ -973,5 +2812,5 @@ def get_base_rom_path(file_name: str = "") -> str: if not file_name: file_name = options["smw_options"]["rom_file"] if not os.path.exists(file_name): - file_name = Utils.local_path(file_name) + file_name = Utils.user_path(file_name) return file_name diff --git a/worlds/smw/Rules.py b/worlds/smw/Rules.py index bf9fedb80517..82f22c3a34c1 100644 --- a/worlds/smw/Rules.py +++ b/worlds/smw/Rules.py @@ -2,8 +2,8 @@ from BaseClasses import MultiWorld from .Names import LocationName, ItemName -from ..AutoWorld import LogicMixin -from ..generic.Rules import add_rule, set_rule +from worlds.AutoWorld import LogicMixin +from worlds.generic.Rules import add_rule, set_rule def set_rules(world: MultiWorld, player: int): diff --git a/worlds/smw/__init__.py b/worlds/smw/__init__.py index 73d6d58d46a8..c374553abc0c 100644 --- a/worlds/smw/__init__.py +++ b/worlds/smw/__init__.py @@ -4,19 +4,20 @@ import threading from BaseClasses import Item, MultiWorld, Tutorial, ItemClassification -from .Items import SMWItem, ItemData, item_table -from .Locations import SMWLocation, all_locations, setup_locations, special_zone_level_names, special_zone_dragon_coin_names +from .Items import SMWItem, ItemData, item_table, junk_table +from .Locations import SMWLocation, all_locations, setup_locations, special_zone_level_names, special_zone_dragon_coin_names, special_zone_checkpoint_names, special_zone_blocksanity_names from .Options import smw_options from .Regions import create_regions, connect_regions from .Levels import full_level_list, generate_level_list, location_id_to_level_id from .Rules import set_rules -from ..generic.Rules import add_rule, exclusion_rules +from worlds.generic.Rules import add_rule, exclusion_rules from .Names import ItemName, LocationName from .Client import SMWSNIClient -from ..AutoWorld import WebWorld, World +from worlds.AutoWorld import WebWorld, World from .Rom import LocalRom, patch_rom, get_base_rom_path, SMWDeltaPatch + class SMWWeb(WebWorld): theme = "grass" @@ -32,6 +33,7 @@ class SMWWeb(WebWorld): tutorials = [setup_en] + class SMWWorld(World): """ Super Mario World is an action platforming game. @@ -40,6 +42,7 @@ class SMWWorld(World): """ game: str = "Super Mario World" option_definitions = smw_options + #settings: typing.ClassVar[SMWSettings] topology_present = False data_version = 3 required_client_version = (0, 3, 5) @@ -55,7 +58,7 @@ def __init__(self, world: MultiWorld, player: int): super().__init__(world, player) @classmethod - def stage_assert_generate(cls, world): + def stage_assert_generate(cls, multiworld: MultiWorld): rom_file = get_base_rom_path() if not os.path.exists(rom_file): raise FileNotFoundError(rom_file) @@ -78,7 +81,12 @@ def generate_early(self): if self.multiworld.early_climb[self.player]: self.multiworld.local_early_items[self.player][ItemName.mario_climb] = 1 - def generate_basic(self): + + def create_regions(self): + location_table = setup_locations(self.multiworld, self.player) + create_regions(self.multiworld, self.player, location_table) + + # Not generate basic itempool: typing.List[SMWItem] = [] self.active_level_dict = dict(zip(generate_level_list(self.multiworld, self.player), full_level_list)) @@ -98,6 +106,8 @@ def generate_basic(self): if self.multiworld.dragon_coin_checks[self.player]: exclusion_pool.update(special_zone_level_names) exclusion_pool.update(special_zone_dragon_coin_names) + exclusion_pool.update(special_zone_checkpoint_names) + exclusion_pool.update(special_zone_blocksanity_names) elif self.multiworld.number_of_yoshi_eggs[self.player].value <= 72: exclusion_pool.update(special_zone_level_names) exclusion_rules(self.multiworld, self.player, exclusion_pool) @@ -105,6 +115,14 @@ def generate_basic(self): total_required_locations = 96 if self.multiworld.dragon_coin_checks[self.player]: total_required_locations += 49 + if self.multiworld.moon_checks[self.player]: + total_required_locations += 7 + if self.multiworld.checkpoint_checks[self.player]: + total_required_locations += 14 + if self.multiworld.bonus_block_checks[self.player]: + total_required_locations += 4 + if self.multiworld.blocksanity[self.player]: + total_required_locations += 657 itempool += [self.create_item(ItemName.mario_run)] itempool += [self.create_item(ItemName.mario_carry)] @@ -120,6 +138,7 @@ def generate_basic(self): itempool += [self.create_item(ItemName.green_switch_palace)] itempool += [self.create_item(ItemName.red_switch_palace)] itempool += [self.create_item(ItemName.blue_switch_palace)] + itempool += [self.create_item(ItemName.special_world_clear)] if self.multiworld.goal[self.player] == "yoshi_egg_hunt": itempool += [self.create_item(ItemName.yoshi_egg) @@ -144,7 +163,26 @@ def generate_basic(self): itempool += trap_pool - itempool += [self.create_item(ItemName.one_up_mushroom) for _ in range(junk_count)] + + coin_weights = self.multiworld.junk_coins_weight[self.player].value + life_weights = self.multiworld.junk_lives_weight[self.player].value + if coin_weights | life_weights == 0: + coin_weights = 50 + life_weights = 50 + + junk_weights = [] + junk_weights += ([ItemName.one_coin] * math.ceil(coin_weights / 2)) + junk_weights += ([ItemName.five_coins] * math.ceil(coin_weights / 4)) + junk_weights += ([ItemName.ten_coins] * math.ceil(coin_weights / 8)) + junk_weights += ([ItemName.fifteen_coins] * math.ceil(coin_weights / 8)) + junk_weights += ([ItemName.one_up_mushroom] * life_weights) + + junk_pool = [] + for i in range(junk_count): + junk_item = self.multiworld.random.choice(junk_weights) + junk_pool.append(self.create_item(junk_item)) + + itempool += junk_pool boss_location_names = [LocationName.yoshis_island_koopaling, LocationName.donut_plains_koopaling, LocationName.vanilla_dome_koopaling, LocationName.twin_bridges_koopaling, LocationName.forest_koopaling, LocationName.chocolate_koopaling, @@ -228,6 +266,15 @@ def extend_hint_information(self, hint_data: typing.Dict[int, typing.Dict[int, s if self.multiworld.dragon_coin_checks[self.player].value == 0 and "Dragon Coins" in loc_name: continue + if self.multiworld.moon_checks[self.player].value == 0 and "3up Moon" in loc_name: + continue + if self.multiworld.checkpoint_checks[self.player].value == 0 and "Invisible 1up Checkpoints" in loc_name: + continue + if self.multiworld.bonus_block_checks[self.player].value == 0 and "Bonus Block" in loc_name: + continue + if self.multiworld.blocksanity[self.player].value == 0 and "Block #" in loc_name: + continue + location = self.multiworld.get_location(loc_name, self.player) er_hint_data[location.address] = world_names[i] @@ -235,10 +282,6 @@ def extend_hint_information(self, hint_data: typing.Dict[int, typing.Dict[int, s hint_data[self.player] = er_hint_data - def create_regions(self): - location_table = setup_locations(self.multiworld, self.player) - create_regions(self.multiworld, self.player, location_table) - def create_item(self, name: str, force_non_progression=False) -> Item: data = item_table[name] @@ -256,6 +299,9 @@ def create_item(self, name: str, force_non_progression=False) -> Item: created_item = SMWItem(name, classification, data.code, self.player) return created_item + + def get_filler_item_name(self) -> str: + return self.multiworld.random.choice(list(junk_table.keys())) def set_rules(self): set_rules(self.multiworld, self.player) diff --git a/worlds/smw/data/blocksanity_data.bin b/worlds/smw/data/blocksanity_data.bin new file mode 100644 index 0000000000000000000000000000000000000000..a71bb9aeb4323b720df49218e5b101a81d2f6976 GIT binary patch literal 4268 zcmXAsXMiMCxrX2O^vvv}-6@uwmLg{;a$XKg&P9$w0ZUHJl7ma_FuQEtHe)UmqT;np z7_OnOR}piIidkF5j9O+yrG0w*(NCQ^;XB{?(y8wEJLUMYet(N)3zsckwv^T-Y}3*!0TpP%?*#uJ_o)1 ze$$zyIy7w+BZ-5W6LLeHxv7WLoR@l7dwyQ&Z7XN=Bj+MYxfgaK0+IF|*q4X%po`wKi1=H&bsY^XBSKL~o&deyuH;Rg7fb zij|qSRtdLJJ)V18MtbgOfhu~pQyZr0!0nYIa|dNg8#@l#VJDSvXXfN#7qwJqS5|kG zdN=jp?yBJ)5?b%6tkKn8>NGmqTj^*|`=}W1XM6(^%F!t>D=@Jjp{eHF1IFGhlVH4@}&kRV@+1o=87$k!u5z5xmH zjYyDhLV|oV669M{Y#epr#TX1<@eZt4M8>ZP!yrLfY2khp>!ErVT6!=4_3wPv8a941}?Q$Gwd zuY}R7VD8nh@EY__y;da_Sf>_TKhOp3HxP5>WQ(`XSmKu{NAs5}N55ALPR5yDsiKkl zRcgXltAww?`i6(W#-blr;^_CP%bx#3 zUu!7!`_!G3+e+poe!s-p4^RbCe~|Hvc^^_rTz*(NJ3OH>sr8ZBIQr;pynIY?v*?ej z3IA6W`~>R;T7QxZ?dnr1L)547NF?(+$ooIl!>K=`bVUAt@+SJTYGK3Ase(@u$B92r zE+&3T1^j}V@QcVv{3W&Em)W5t&cDK2t*@$rUn9#0`*q;gS)Kc7W_8iw8!9;SH<=s# zEvi-OXBa75`rB&4@8FHn-$jSg-%|y@uQvRFI`D_YWa%HN2Y*aVmefCm(m!F3j($2T z^=H(Po}QH&J^h@h?&%lQv7UZOUFzvq__?QFD~G?4hD!fd34Bf|{GBrRdqwyMYGCPF z1^lC$@K02x(tlQasM255fqzxRdVf<6|4!_rex5p&`X4Ic3u?iCs)GMg8~z)cr+yKS zr|zo<0u{u#3`KP430X&G3RjH1)Ok)h?uk{I-2X&WbS#c z;FQ}iaR+YXE}RcjZ|ol2#5LU1;-1>f3EbQ%+`<{$(h+Xu9B%CbZsR80)+Jov7TnGi z`JcKCw|58b;4a+JJ-Cx=xU)5{)-F!qu1?`@&fxBja1ZBjPZw}6H{srH&Fg3%S8!jq zVdg3+wV(U_JVfvB4ta9``qnzo*;L|#7%7RXgNf&!4k4dw9qQ<=4kJ3`!`&f9j&Q;1 zBi)2Yxr7UyH*z2CL2Zamsq)7-gNq#DvD6g#IL?szcy>^bPr&B6PjoRFeUgREPxior zr!b!3=~EryX;{29bh_J4htEKR=FpjL&F)pfv*^zoXS1TiuIE^x@VU-H>hs(sm(F)N zl=}i}H1mbd;6<~xzS!MH=1Z`Je5s4AxGNkNv~-#C1(hy$v7oKO%>^A@;c`J&SGu*J zr>oefBC8fVMgOb0MWe3aPKmyjXow+z-bcSNDM~Z)(4mT~SoTyfjq$y1Ww6vVZ0R9bX$H2n-04*66|Ad5u!NtYl-62uOo_6zn&;g{RW~q^&5%e)NgVL-%Kp0u8@(3#BZ_C^R3Q@ zdU~4++HZFkzQb{(^rJ5M?t3S(+tXvNxS!wU?&i7Q&FTbOz6TG{5xlke%@{P4|m`T)c)vy zQv0L-MeUFN_iV1bIEYR6sr`|fkwb@SQVv1r*a!(63Mm{885{`_&IvV#r|KW!9pqJMtqvfsubC&M-g<=p5^Lkn&e zD!6%Q!!1GwZW+38tI&g6hZ=4Zg#EV-30x3TxLp`T5w!zuA9A=uDBzBv33o!iyfgCU zU63#DihOxDqBH}d6ukT36xd{I#c@wp%J<^7Q_AAo%MKu+0p z;e&Xl{6jf75IPnT4UnJ#%y*7aT+B%EyE* zTtrVZ92+Wk!g0(=8pnq=d3XYIx{VWqkatqRsy;ak>gFjSfDgxi}P4rv+jJfjJ_b`+(;MF*Fwrg zp&qYwF>eL2cnQyve{+}ejKeLxBxsWV86km}hZGhegI9zIuM9c7Dim;Wh;s{H&ANm* zzJ^H1eQoHW!*!t^&2@dySgspF0&hgCTsMUb-W(#lg_y~8YbandG~sQbgiAsT-X1D= zM`*)4LkHd!y72DMgZG3Q-WxQY>%Ne{`(dF6LORZWjF7>lA;JeadCB)^0hfg)oDL;? yD74^AsNnL@hATn`J{-DmW$3|G*s0X&povmzLIT%@6s`*yTpuFb5OUbU2LAyjWJk{c literal 0 HcmV?d00001 diff --git a/worlds/smw/data/graphics/ability_icons.bin b/worlds/smw/data/graphics/ability_icons.bin new file mode 100644 index 0000000000000000000000000000000000000000..07c6464384a59e2cfdd2fe5dba5efb7f14fe437e GIT binary patch literal 1024 zcmZQzV5m=>6}k$9gVr+CGhl)r9$PY|L@e>x;<1I{2c|Sby~$~p-5_Xw0;~T2CEaQ_ zRd1=>F6n0Yk468Vm_=8#B9?`$idn?)2a9~Y)lsLtMrXOc7WQE`U+<#I?IqDmqWv~v zHUCFP$qkhiAsrbk=p3`wrJ#rl+u*pEfge6$po}!fO79fE58N6mEbZ!v}2c zw?5*u*Z2(A*P>qR=35<|oFnvB=&jXJtmYqZSm3bWfC7kQIDo}`N`>l!)`qT9y`_3f z=`Jq!!QGE7{(kImnUDj5J6y1bFNN{<|Cyx6b`W&ii8Xv4EC^T-@IU}WGCaT%81+eW zLszBG0Hty4{)41mm)+$ZSk3>hbQcu&p{s!5gVq0p@`v>i$9;z9IKSaazms#cu38__ Yx~g>*tN9HK2O1ne7)Ul?@gGG(0MRzJq5uE@ literal 0 HcmV?d00001 diff --git a/worlds/smw/data/graphics/indicators.bin b/worlds/smw/data/graphics/indicators.bin new file mode 100644 index 0000000000000000000000000000000000000000..d29f6bdc07da5b758a3cef85772d5093085c7bce GIT binary patch literal 384 zcmb7;p$Y;)5QhJFi0H-xK{gmxFkF&}A`2P}h7Cr8!Ej;21;eDnAYu^l5lm)-!Qcb< zEM}89%bi6n&c_Z5-|)|XlF{%qIn4LNQ*y%spOxtGbgRb!zry2FgH=v~$`Kv|DXfsn zHx0wQSoSV{6=hN8H$Uyg^oC!Z48~%Xxro@LDFSn870{ zePO|ckHxhRzZW_8WPw;2@p8YD#uB88W9qd=v)vtZ`mx0sSD=CjHL)7KGT$BDG2M|h IPFDX}FTbHbnE(I) literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/castle_pillars/agnus_castle.mw3 b/worlds/smw/data/palettes/level/castle_pillars/agnus_castle.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..99924e1facf8fa52f4e3072aee8f4a5122a11327 GIT binary patch literal 514 zcmZQz*q7a<`pz)WZmZYNu$bh@#S9F;d0y*-=)3jxx*&3qf~szYX_x5}l^`#W`0A?v z^&on-T)i~|!~J9ihEk^+ev;v~-t*lV82;BYFeosKF~~F2GtOrM>1SYgZ~ry?XZr8_ zzvVFbS`)d@|EcoTAo+8a3=9&f>6-yfoXyV37-1||jO2h0o@ z0Azk4uYC>BHNyXK$ct;pJ7~JDjTA`3&?`~AU_iy0Vx^Sssv(Rb_XbwT7J1y$V)(=O8|DnVW#@zquT z>p}Evxq54mJOe|ulAZm2@B7jBvl$rv1NjQfVhr*O^^EhGAo5}i(hTv8@=Wr~F!@>& zxzPWq^3@>ubCwJY63Hg@Q|o^K^+NPFFn^T)$^73RqJO*5?{o$x1?C4p{pbK>e<81Z z4bU~h|8dBRYsfojx~`2BNJG~Rv9FL9a9WY3=9RjW==PQq~qu2Gcf!I@)elH7~~o18Rs)W^GErg%>Vr%`nMbXPG?|J)_=gvfB``Ef915V zkyYNWejjK)IsnP<^_Um9CQ&bMLKV6!#J)makYD1HWh1y4C{B8we7N9TIhZ`ce<1mli8@)AtB~ap{sYNR;<+Uf ytqGAwcOgigh3^4Vr#Wu+HAw!P zB?E&*vPu2a`X4~O5d96zALV~C|M!RJ-){6foqS0 z4nXoC*J!$~jTA^jmxb5|@@c(we6nl=7lXXz5f=`>g7j?$_f7vp-Fwb*N{~eIoZ@&L znEMd^1G)DtGAkMJLe&yl+}*RT#*9^pTbydZ-((1j3rbQgl;A22>( odH^*aoBT1ykm6tUf9pAN(Pbg-F)^`nnV%}gSPyg`Driyx0DN|Hp8x;= literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/castle_pillars/dollhouse.mw3 b/worlds/smw/data/palettes/level/castle_pillars/dollhouse.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..06849ceaf1d56e8efed4daa1df681ef3abcb1c59 GIT binary patch literal 514 zcmZQzxLe& zxzPWq^3@>ubCwJY63Hg@Q|o^K^+NPFFn^T)$^73RqJO*5?{o$x1?C6L3>W}p|2rA` z8kqg)3SjO#X^|iMwH93#VqYOI$S?89vJqSi@|H(jIQ$CIw;9|w{SUMc< kz>Hh|m}5xsulm3B9J%PaA?`6Tv2vN8D#ln3bRRkZ09~Db`2YX_ literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/castle_pillars/gold_caslte.mw3 b/worlds/smw/data/palettes/level/castle_pillars/gold_caslte.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..f4c03d2cb17a6f69a5082b7016d2370311e332fd GIT binary patch literal 514 zcmZQzm{Z)xX~cGo$&z^v^MB^a#S9F;d0y*-=tADvatuIueHBv^YnT5K^@;XbAo0~z z|LZ~YY`J=CkURqeLO%n;|9S=n1!ge@d4_t%`AiUbkPQ&?Ve+*ma-siI<*PyR=PVf* zB$7?)r`G=f>V@cUVE!oolli|tME`c9-{}lY3d|3f88E`Wu)(%Kv2k?+?+x-RO5Z1Cs*t17-#c z05ZRj*S-em8sYyqg7j?$_f0|O zf!uS>a!Qay@|@y$9hmzN{sYPXXOw6D&%B+%9_U|)`w{*F@i}tW<{H)^%Om^;k{4tU z2Zk3!9^Hi?`3H;-m>xjQ$0mQwF{Joc{oi_yTy$B8drVBMT;`{WG1dd!hYC6b0FJqQ Al>h($ literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/castle_pillars/original_gray.mw3 b/worlds/smw/data/palettes/level/castle_pillars/original_gray.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..37143fb2b8892a981d671d3484adc747c5a55b6b GIT binary patch literal 514 zcmZQzxLdzi!NYKk?Kw*$yKP>Riy0Vx^Sssv(Rb_XbwT7J1y$V)(=O8|DnVfR)m8uN zLGrWZ>a9WY3=D5P{ew0|iKgEMvi}3I0<#!{JVQO>d?tvz7=tuJJfl35JTpwb)nNdBB91A|1eN&VFNA8`E*%pc`{GXM97=-+PiJDq_^f%ySYKRN)}U&w1;19Xk> ze;o4S8uAXBu4^L&($IB7+*8O4@=JWOYy=mByyX!W4!?r*Z3g#ELFR${bIx)~kVNvF z;&>gH`w{*F$^U1RXa3K;oxvXHUx@z^{sZwja@Xb>)*;Iy{0EX3WDp027epT2g&_F{ oj1QO|K+VS{f6OtY_*ebkdX8LlS%`Z~Osrhyr;0Jw1Ko!X0BN&%n*aa+ literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/castle_pillars/original_green.mw3 b/worlds/smw/data/palettes/level/castle_pillars/original_green.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..4124e1900166d1399ba09d8b5064a1f79efbcc40 GIT binary patch literal 514 zcmZQzxLcpVxrFfrqYl$Vrmswsiy0Vx^Sssv(Rb_XbwT9+dIp9Ebqe(j^$+Sn;;XCv zgX!6F_0}MH28N?5p1NywgOw!g85lsS6_~{sDDF2iBzduC(cB9|v3``2l4}kj70m%MBUi%uL zYlQ#fkQdjGchGcQ8!3>6t{Y-sAuq@;@yW6gTnzG-M_f4k3evY3+&2Z82XfCj%PBz; z$#aV1bzts8_zxuipHZIqKl645d!TByERXOXNM4XZ92i~@d2|D7f+HAw!P zB?E&*vPu2a`X4~O5d96zALV~C|M!RJ-){6foq*fP|1-)n|7YILU=Q>!#Qg~Wf%qJ`YjX|jkmV8n1IY_Ahy%k5B9HDuko*J22TTv3 l=3|pT<``1^tNw32M=rW7#62b^Rxa~X#Te^>?n4DivH+X+brk>r literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/castle_pillars/original_white.mw3 b/worlds/smw/data/palettes/level/castle_pillars/original_white.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..f235216f1da2e7d822ea64899b28253d7f7ab7da GIT binary patch literal 514 zcmZQzxLbeCPa-@jeop$m{Qu>Xiy0Vx^Sssv(Rb_XbwT9+dIkoC`iA-kKnN0FUG*PK z&z7sV2FWupyz%r8+7u<4ejCUJt7aBskY}i8oX-T27h{lSh-Z{%l4pj=*P6(M{!f*! z2FahZWMGg;HmRRl{{ybSf%&8SPv-yr5dGVYey1}qDKI|(>PH74`wMyPYk;m1{*Oam zTtnVL({*j6KpMJkh36e;jQyi}Y zb3ej=Ao>4{^34C4w=>uS{R{Cw!haw>NAB8O!#ZSng#SSDf(+uo@Pf#ryAUM*fbjv- n1E~4fvwiHViV{8TZJstYLNUnO9lpsWRv=-^*?}mA^IDbKg$1P{_hXbzuo9}Is=me^8=uMbO5rykk`Hj z=o;bwION4O8_2KP-t=7HRE&T>kS zMDm>CcpaGg5dH(n|7VnE{?ELf!5-*ei2D)#1MxX>*XA15A}FR tAo&N3511Z6&BrEx%rT_+SN-35j$CwEhU41pv|Hd71zK literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/castle_pillars/purple_pink.mw3 b/worlds/smw/data/palettes/level/castle_pillars/purple_pink.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..5bea72483006a71241be6d52843c36883e07f1b8 GIT binary patch literal 514 zcmZQzm{ZK5!|lSKAXKugrlNLoF$2SIp4a*yx{!Ca90O2ZU&YkK+U0*leWHC9NPKnG z|9TKTTdv+3B+tNrP{F|Pzn+0Xfmw_}o}r#`J`+S9Vgty0n0&2?Ty8QeDonFn&uIm;u4nX!7^4iw` zT_gM-hrGCkyo09e+DL&kblnj93VA_(iBFb|;9`)sJmSLPSCGEV;JzuyJdk_NSxyO( zNS;$1uLE-*!haz7|BUj?|CzTl*aQ6waX-R;AU;R#+FZjrWO;=DK=OhN;=u5N$fLUu rB>#Z%0n-Dh`Pk%-IffMfs{dQhk&7-1agT|KmCO88F~)kJ`_KUZh7Wj` literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/castle_pillars/sand_green.mw3 b/worlds/smw/data/palettes/level/castle_pillars/sand_green.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..5757d8fbfaa1584b28898d2532f44253d37fd77e GIT binary patch literal 514 zcmZQzxLdzmz(;YTZiv}7I}7j0#S9F;d0y*-=)3jxx*&3qf~szYX_x5}l^`#W`0A?v z^&on-T)j0&o`IoDR8MWA)n~U*Zw7|{K)wRA7=t`RJ>z^Ph`bnsG($Y2Jd->#Oup7c zF7$t@d^Je^oFxN;M6yZ!)cPMly%7Bk%pc`{GXM97=-+PiJDq_^f%ySYKRN)}U&w1; z19Xk>e;o4S8uAXBu4^L&($IB7>?`C2`6WJCHiC;m-tveGhhIVZHiP@7AoD=(IcGT~ zNFsSoal8)9eF*=7yYIU{sYMiGKd4i3nGv1 sLXi9e#s^Ffpyp$fKjs)x{Hy+NJx4COEW|w~CRQ%G0D^aT0RR91 literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/castle_pillars/shenhe.mw3 b/worlds/smw/data/palettes/level/castle_pillars/shenhe.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..93dc170a525e495da6d936d262e48c0a4db03d74 GIT binary patch literal 514 zcmZQzxLdzip^qm(RoL!hRC)H~Vg`oaJg@aZ^xgV;T@blQK~*=yw9E8~N{|;we0A0T zdJsKZuHG6X&%n^4tL3yIEHwKzko_Ns6_~{sBm4*AbL6hgHLOFHNB9pU-^X)B;HL;g p9^Hi?d5GU}%O7(LDgIUex1J*xT{px%CMH%c^Haqb>w)e=2LJ}Les}-? literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/castle_pillars/whatsapp.mw3 b/worlds/smw/data/palettes/level/castle_pillars/whatsapp.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..198f46eca8a90c9fe2ebbad1e53e254daa9d12c0 GIT binary patch literal 514 zcmZQzxLd!7gPGSwaH;4sNp-o&#S9F;d0y*-=)3jxx*#%h<(PNSz@zquT z>p}Evxq54mJOe|E;8VfVdb!5e!WkI;1NjQfVhr*O^^EhGAo2>#4a^_qe=`5~hsoEP z$c6q-m9GZLpR;6OkVrPEpIZL|s28Fip&n%ZcB9|v3``2l511J+07$-&*S-em8sYyq zg7j?$_f0|Of!uS>a!Qay@|@y$ z9hmzN{sYPXXOw6D&%B+%9_U|)`w{*F@i}tW<{H)^%Om^;k{4tU2Zk3!9^Hi?`3H;- mm>xjQ$0mQwF{Joc{oi_yTy$B8drVBMT;`{WG1dd!hYkR=M0!a8 literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/castle_small_windows/dark_lava.mw3 b/worlds/smw/data/palettes/level/castle_small_windows/dark_lava.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..477701e86a9bda2b95fd8b41c15acc4eedccd012 GIT binary patch literal 514 zcmZQzxLcnl(joFnCD-)4t6|vWVg`oaJg@aZ^xgV;T@aZnkSdU2x>}-5;GGOee0A0T zdJsKZuHG6X&%kg(hEr8bH{W!VB?H5MAYXx5j6t5Eo^d`CM4pRbBSQtFJd->#Oup7c zF7$t@d^Je^98i};vPu2a`X4~O5d96zALV~C|M!RJ-){6foq*fP|1-)n|7YILU=Q>!#Qg~Wf%qJ`YjX|jkmV8n1IY_Ahy%k5B9HDu tko*J22TTv3=3|pT<``1^tNw32M=rW7#62b^Rxa~X#Te^>?n4Es0syKqc#Z%7 literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/castle_small_windows/dark_purple.mw3 b/worlds/smw/data/palettes/level/castle_small_windows/dark_purple.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..29eff5aeffa30eeb48f5d158f3cdcba0f81e99d9 GIT binary patch literal 514 zcmZQzxLbczfnC$XFw1ha<6Ga!#S9F;d0y*-=)3jxx*#$|L{&G#ludPs#2H7B`0A?v z^&on-T)i~|!}cr&hNTk6HMmTD9M^|3F#NA)U{GKdV~}U4XPnQ(z+jQhz~Ijj!ciu8 zMX-zyCSPkJ7y3U{z8WO&rOCih7^WMyG3^V`EQtOF=8y6}ng9Dk^lvx%ovzILOtHg= z0Rw={*ORob`K~%k&Q>2o8f<@o$To>%3L2)}f!O7JL__6nYsDwaMsP96TOM)Y@GD5) zW^mv1KQqLB4#gfr0jDit+eKjRL-k*=sD#*Tq4gZs1Yz>X{$pU^$X%OjScfc+>OUWj z0FG@U5P5VLg8awAo508-hFgB6>E|T#?5g7P!0<;0ApIsLRxa~X#Te^>@qr4QH~`L| BZ(jfa literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/castle_small_windows/dollhouse.mw3 b/worlds/smw/data/palettes/level/castle_small_windows/dollhouse.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..73f69240205bd32096a8b301ad63b7d04578b653 GIT binary patch literal 514 zcmZQzxLez^Ph`g1|ZVg$}d5-^mVe+*ma-siI<*PyR=PVf* zB$7?)r`G=f>V@cUVE!oolli|tME`c9-{~!~3d|3f8886I{&zC=H8A_p6~Nqg(jq_h zYc0Ag#J)makYD1HWh1y4RiKaf1c z?(GcrK>tGAkMJLe&yl+}*RT#*9^pTbyr~2zd?51ZE(FOxV0^&zfEl;^F~^YNU-f_M YIdai;L)>FxV&yVFRgAG7=st7+0M!V9?f?J) literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/castle_small_windows/forgotten_temple.mw3 b/worlds/smw/data/palettes/level/castle_small_windows/forgotten_temple.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..35d97033f84735c0b0cf9a3d60736834483f3622 GIT binary patch literal 514 zcmZQzxLe;MaZDjgm(OgIQ<(SUVg`oaJg@aZ^xgV;T@blQK~*=y^r^}c2{m1i`0A?v z^&on-T)j0&o`KV@cUVE!oolli|tME`c9-{}lY3d|3H`q2T%{z6{+ z8lY>0|KpGs*N}J6bX^-MkcO@sVqYOI$S?89vJqSi@|H(jIQ$CIw;9|w1(^qO&pFE} zK@!PxisN-)?nC$wB>$gLp7}rXb_RQ(e<05u<*{4vLn;$QWD>p61KWg+e{F|l%)pDM;!4|E?YNEQJAM7((c literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/castle_small_windows/original_gray.mw3 b/worlds/smw/data/palettes/level/castle_small_windows/original_gray.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..37143fb2b8892a981d671d3484adc747c5a55b6b GIT binary patch literal 514 zcmZQzxLdzi!NYKk?Kw*$yKP>Riy0Vx^Sssv(Rb_XbwT7J1y$V)(=O8|DnVfR)m8uN zLGrWZ>a9WY3=D5P{ew0|iKgEMvi}3I0<#!{JVQO>d?tvz7=tuJJfl35JTpwb)nNdBB91A|1eN&VFNA8`E*%pc`{GXM97=-+PiJDq_^f%ySYKRN)}U&w1;19Xk> ze;o4S8uAXBu4^L&($IB7+*8O4@=JWOYy=mByyX!W4!?r*Z3g#ELFR${bIx)~kVNvF z;&>gH`w{*F$^U1RXa3K;oxvXHUx@z^{sZwja@Xb>)*;Iy{0EX3WDp027epT2g&_F{ oj1QO|K+VS{f6OtY_*ebkdX8LlS%`Z~Osrhyr;0Jw1Ko!X0BN&%n*aa+ literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/castle_small_windows/original_volcanic.mw3 b/worlds/smw/data/palettes/level/castle_small_windows/original_volcanic.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..21d82d7c84a14040cc3cd7c5df0feac6bf07fd93 GIT binary patch literal 514 zcmZQzxLdzi!NYKk?Kw*$yKP>Riy0Vx^Sssv(Rb_XbwT7J1y$V)(=O8|DnVfR)m8uN zLGrWZ>a9WY3=BtAJayOV1}jO}Gcf!I@)elH7~~o18Rs)Wy8QeDonFn&uIm;Riy0Vx^Sssv(Rb_XbwT7J1y$V)(=O8|DnVfR)m8uN zLGrWZ>a9WY3=AhC&lR1vG_c$3#lY|%$X8$%V~}U4XPnOjkr!i-W{78$XOd@z$=905 zh5k>KuLjAVvt(e9NH(dTTK@y67oxv``J?<#=KuZ>{o9Rxr!z1qFh2n5M+YGL3wiBp zfUXh#k3(KuL*7Btb#0_T8oF+XeTBRrzr-iYMsP96TOM)Y@GD5)W^msWWFE*p=PaiL zNhHrHj@N;?58*$M{C`Gy=Ksvw8SH`ng}5K#KM96#~ee7f7So3=g38ug}BGW#L8uUsu*KE(0%9t0F}Ubvj6}9 literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/castle_small_windows/sand_gray.mw3 b/worlds/smw/data/palettes/level/castle_small_windows/sand_gray.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..5b11808ae6b95c2de07c589fc05b2662555af87b GIT binary patch literal 514 zcmZQzxLdzmz(;YTZiv}7I}7j0#S9F;d0y*-=)3jxx*&3qf~szY>3P)`B4u_U@zquT z>p}Evxq54mJW#|jAnZ$;X?9pP1H*qHUx8VSL7t(WaXu47UW`GSA)Zm5NuC)dUuz;4 z`ae~^8YF+tl7T@Y*`$7I{STmCi2erVkMcj6|NBGqZ#Vj#&cLL=`~avQ9f0gF zx<>dv4ta46c?V6`wUGj8=(-{H74m}o5}zy^!NnkNdBlaouONM!!F^MZc_8z^Ph`bnsG($Y2Jd->#Oup7c zF7$t@d^Je^oFxN;M6yZ!)cPMly%7Bk%pc`{GXM97=-+PiJDq_^f%ySYKRN)}U&w1; z19Xk>e;o4S8uAXBu4^L&($IB7>?`C2`6WJCHiC;m-tveGhhIVZHiP@7AoD=(IcGT~ zNFsSoal8)9eF*=7yYIU{sYMiGKd4i3nGv1 sLXi9e#s^Ffpyp$fKjs)x{Hy+NJx4COEW|w~CRQ%G01k0?!TBm4*AbL6hgHLOFHNB9pU-^X)B;HL;g p9^Hi?d5GU}%O7(LDgIUex1J*xT{px%CMH%c^Haqb>w)e=2LJ}Les}-? literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/castle_small_windows/water.mw3 b/worlds/smw/data/palettes/level/castle_small_windows/water.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..9822a3c2eaa268eda71e8bfbd8ae929ccf3836e0 GIT binary patch literal 514 zcmZQz*j0W+ro-@+t&Urs-DR)I#S9F;d0y*-=)3jxx(q=1MGC6A8K&u)iv?cWg2Y!> z{jUenv*qfoLGnpFZMx5Gy@S>#iDWY{{I6$VP+%5gkY}i8oX-T27vZ$v{mb}|t(F-k zUuz;4`ae~^8YKV5k%7T1ePa2R>K#BnM1KSGNBN)3|NSBQw;TOVf2e!F?twD{1_0Ur zLD0VDmRz*@ZG8-Bu=_T1SV?*qz7Eul!!DmEIYTejIX+o7f{Q`k@`wwEUqSjdgZrlc zf$jyF&*QW?%q)FIajh%NeW?Dk7OLmJrynAChYco=>_1@m1p4KDtV5PZ^9a+#kh##j%G4^)uE0{~N!gh2oR literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/castle_small_windows/whatsapp.mw3 b/worlds/smw/data/palettes/level/castle_small_windows/whatsapp.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..198f46eca8a90c9fe2ebbad1e53e254daa9d12c0 GIT binary patch literal 514 zcmZQzxLd!7gPGSwaH;4sNp-o&#S9F;d0y*-=)3jxx*#%h<(PNSz@zquT z>p}Evxq54mJOe|E;8VfVdb!5e!WkI;1NjQfVhr*O^^EhGAo2>#4a^_qe=`5~hsoEP z$c6q-m9GZLpR;6OkVrPEpIZL|s28Fip&n%ZcB9|v3``2l511J+07$-&*S-em8sYyq zg7j?$_f0|Of!uS>a!Qay@|@y$ z9hmzN{sYPXXOw6D&%B+%9_U|)`w{*F@i}tW<{H)^%Om^;k{4tU2Zk3!9^Hi?`3H;- mm>xjQ$0mQwF{Joc{oi_yTy$B8drVBMT;`{WG1dd!hYkR=M0!a8 literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/castle_wall/cheese.mw3 b/worlds/smw/data/palettes/level/castle_wall/cheese.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..913ad39778755fba300dd2b321b776473ff1f906 GIT binary patch literal 514 zcmZQzxLfZlc~RBW=%&>?`~AU_iy0Vx^Sssv(Rb_XbwT7J1y$V)(=O8|DnVW#@zquT z>p}Evxq52`hW)_|4An|@_WQl>N8it8VEA9pz@We^#vsp7&p4k6q@RHSVFOIQ)nNdBB91A|1eN&VFNA3(Jb{SC|?<$p5&_lM};ZuC2yfk}b+0W$*z0GVINYhMF& zjqraQ^5Pou4w|lOBL&hhw1e#{`=%iCK<+tbIVDIU zc}{V>4$OTB|AFNHGs-jnXWq_W5A-j@{Rsbo_#C-wa}Dc|z^Ph`g1|ZVg$}d5-^mVe+*ma-siI<*PyR=PVf* zB$7?)r`G=f>V@cUVE!oolli|tME`c9-{~!~3d|3f8886I{&zC=H8A_p6~Nqg(jq_h zYc0Ag#J)makYD1HWh1y4RiKaf1c z?(GcrK>tGAkMJLe&yl+}*RT#*9^pTbyr~2zd?51ZE(FOxV0^&zfEl;^F~^YNU-f_M YIdai;L)>FxV&yVFRgAG7=st7+0M!V9?f?J) literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/castle_wall/grand_marshall.mw3 b/worlds/smw/data/palettes/level/castle_wall/grand_marshall.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..574d557f1eadc3cf447eff1f3bce37bad9cd25f9 GIT binary patch literal 514 zcmZQzxLfaO)$MfFi$6FpdUEpQVg`oaJg@aZ^xgV;T@d-do`FH3zM=jB5Q4;4SN#Xm zv*qfoLGla?OC+8taAKA^_iCET;rXB+n_1 z*MYeY;Xjc4e@1!c|IFJN?1BD;xF6v^5T7G=ZLVP*vOL0nAbCLsabS2sVg> ze;o4S8uAXBu4^L&(lE4x?JML3`6WJCHiC;m-tveGhhIVZHiP@7AoD=(IcGT~NFsSo zal8)9eF*=7yYIU{sYMiGKd4i3nGv1LXi9e o#s^Ffpyp$fKjs)x{Hy+NJx4COEW|w~CRQ%G0L;vM0|KpGs z*N}J6bX^-MkcO@s;+{fYkYD1HWh1y4h`dNd7;gJoA6%?F{xn|3dta@E?fJk-Ik6unt)s;XjbPAcHtCydd)EE(FOxV0^&z l0BSxq`D2bD#lPzR)^p^d%R<~^Vq)boKUIve9_T)F002widoTb1 literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/castle_wall/sand_green.mw3 b/worlds/smw/data/palettes/level/castle_wall/sand_green.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..5757d8fbfaa1584b28898d2532f44253d37fd77e GIT binary patch literal 514 zcmZQzxLdzmz(;YTZiv}7I}7j0#S9F;d0y*-=)3jxx*&3qf~szYX_x5}l^`#W`0A?v z^&on-T)j0&o`IoDR8MWA)n~U*Zw7|{K)wRA7=t`RJ>z^Ph`bnsG($Y2Jd->#Oup7c zF7$t@d^Je^oFxN;M6yZ!)cPMly%7Bk%pc`{GXM97=-+PiJDq_^f%ySYKRN)}U&w1; z19Xk>e;o4S8uAXBu4^L&($IB7>?`C2`6WJCHiC;m-tveGhhIVZHiP@7AoD=(IcGT~ zNFsSoal8)9eF*=7yYIU{sYMiGKd4i3nGv1 sLXi9e#s^Ffpyp$fKjs)x{Hy+NJx4COEW|w~CRQ%G0D^aT0RR91 literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/castle_wall/shenhe.mw3 b/worlds/smw/data/palettes/level/castle_wall/shenhe.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..93dc170a525e495da6d936d262e48c0a4db03d74 GIT binary patch literal 514 zcmZQzxLdzip^qm(RoL!hRC)H~Vg`oaJg@aZ^xgV;T@blQK~*=yw9E8~N{|;we0A0T zdJsKZuHG6X&%n^4tL3yIEHwKzko_Ns6_~{sBm4*AbL6hgHLOFHNB9pU-^X)B;HL;g p9^Hi?d5GU}%O7(LDgIUex1J*xT{px%CMH%c^Haqb>w)e=2LJ}Les}-? literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/castle_wall/water.mw3 b/worlds/smw/data/palettes/level/castle_wall/water.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..a0955e820349da62f84748d19bd6cd4ad55b6f55 GIT binary patch literal 514 zcmZQz*j0W+ro-@+t&Urs-DR)I#S9F;d0y*-=)3jxx(p2A*^5P<$gnB8Yj&ve=z+vn zSN*RC(X-|1tr>v&lX%*6pWAu|txpokW?=YV&%mI-EXE+uP|rA@2_i4TX~FxK@gG|) zGfckLL@xAys(dv_{*5C8gIW5-@-5XnfP9Gl2Ii0QKbimgL-cPq`knqz_ki64X9f%a zvj2miea$VoX!YCr7}8+(ZRW6&^e}uKs2hh}K2LInUaWI`vTOtwgS_Pt7Y@II^lb+B zP5%Sk3o@U_X>*ua`i$aQSD5=y{bwyy&wo!pMDPw9Odi>P!0-w5%llY|ERX8HevWHA zGQ1FZbQgl`Kd5=otT`OF{7TD@N#)tQ%k{$0bwk{5Vq)boKUIve9vB~}Ac+S6-r|Dm literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/castle_windows/brawler_pink.mw3 b/worlds/smw/data/palettes/level/castle_windows/brawler_pink.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..69c496fc5d07949af94a1b203eb275589a595434 GIT binary patch literal 514 zcmZQzxLfaI5a>B2^hTsj+PXNJkw zn#hIzPnE9*$)B@iV30^Qsh?W^1E?0Fzk&Iq{7>fp{t*4!jee&yFexxU0P05vAoB}( z?Q4Lp5&n-uUR*=oLDO|@q(BRiKal)?MtSD{%-b34f&PWKAK^a`pCfl|u3;UrJi>ngPyZ1Tq(LyCXZ|E=f9MVE!R$Hc_SWqzs{V?EG)=l}o}uzREc literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/castle_windows/cheese.mw3 b/worlds/smw/data/palettes/level/castle_windows/cheese.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..d91826e8647a061c9dcf6971e7b05f325e531e43 GIT binary patch literal 514 zcmZQzxLfZlc~RBW=%&>?`~AU_iy0Vx^Sssv(Rb_XbwT7Z9&O1S#S5y!T0fjX;;XCv z*MsQUa`o0Ac?O1RB|H25-uI*LXEQMT2l5q|#Teun>KW%VLFC04q#5EF<(cG}Ve+*m za-siI<*PyR=PVf*B$7?)r`G=f>V@cUVE!oolli|tME`c9-{}lY3d|3H`q2T%{z6{+ z8lY>0|KpGs*N}J6bX^-MkcO@sVqYOI$S?89vJqSi@|H(jIQ$CIw;9|w1(^qO&pFE} zK@!PxisN-)?nC$wB>$gLp7}rXb_RQ(e<05u<*{4vLn;$QWD>p61KWg+e{F|l%)pDM;!4|E?o002{;d5-`9 literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/castle_windows/dark_aqua_marine.mw3 b/worlds/smw/data/palettes/level/castle_windows/dark_aqua_marine.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..501f11d1a95448f15b53c23769d3654c04e315cc GIT binary patch literal 514 zcmZQzm{ZKaut4O11cPFN?g7imK;Cbj*ZLs3kaxBm15n<9qd@?s0wlh=>VG|mo-J2z z4U%VIfaq0lTM)*;@V}mcL4jF}L7t(WaXu47UW`GSA)Zm5NuC)dUuz;4`ae~^8YF+t zl7T@Y*`$7I{STmCi2erVkMcj6|NBGqZ#Vj#&cLL=`~avQ9oz-#DdhcM40Mg~e;o24 z*J!$~jTA^j*A1}`xjQ k$0mQwF{Joc{oi_yTy$B8drVBMT;`{WG1dd!hYFfh0I76y&;S4c literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/castle_windows/dollhouse.mw3 b/worlds/smw/data/palettes/level/castle_windows/dollhouse.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..d3e5fe4b407f7e9f907cd0496673edce9147644b GIT binary patch literal 514 zcmZQzxLez^Ph`g1|ZVg$}d5-^mVe+*ma-siI<*PyR=PVf* zB$7?)r`G=f>V@cUVE!oolli|tME`c9-{~!~3d|3f8886I{&zC=H8A@b7#=V#m(8~{ z3xz0!x$mS!e(cv;4DDe13VA_(iBFb|;9`)sJmSLPSCGEV;J)d9pnV|soU@z~B#}I) zI9>#Z%0n-C! i-15g9LyCXZ|E=f9Mb`~+kBNzu%luR^#(JRp&;bA^{)5H< literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/castle_windows/original_brown.mw3 b/worlds/smw/data/palettes/level/castle_windows/original_brown.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..0bcc7305b7aa91c58bc8ebdca8f486cecebe6572 GIT binary patch literal 514 zcmZQzxLeP_a8$)pcdc%)l7#)_Vg`oaJg@aZ^xgV;T@aZd&?vE3=7|iarnf3ce0A0T zdJsKZuHG6X&%kh!!%yFayJXAYXx5j6t5Eo^d`CME-;br)-Yqc~c`Nn0&2? zTgH`w;#E$^U1RXa3K;oxvXHUx@n={sZwja@Xb>)*;Iy{0EX3WDp027epT2 vg&_F{j1QO|K+VS{f6OtY_*ebkdX8LlS%`Z~Osrhyr;0Jw1Ko!T4yynFNDg@( literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/castle_windows/original_gray.mw3 b/worlds/smw/data/palettes/level/castle_windows/original_gray.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..37143fb2b8892a981d671d3484adc747c5a55b6b GIT binary patch literal 514 zcmZQzxLdzi!NYKk?Kw*$yKP>Riy0Vx^Sssv(Rb_XbwT7J1y$V)(=O8|DnVfR)m8uN zLGrWZ>a9WY3=D5P{ew0|iKgEMvi}3I0<#!{JVQO>d?tvz7=tuJJfl35JTpwb)nNdBB91A|1eN&VFNA8`E*%pc`{GXM97=-+PiJDq_^f%ySYKRN)}U&w1;19Xk> ze;o4S8uAXBu4^L&($IB7+*8O4@=JWOYy=mByyX!W4!?r*Z3g#ELFR${bIx)~kVNvF z;&>gH`w{*F$^U1RXa3K;oxvXHUx@z^{sZwja@Xb>)*;Iy{0EX3WDp027epT2g&_F{ oj1QO|K+VS{f6OtY_*ebkdX8LlS%`Z~Osrhyr;0Jw1Ko!X0BN&%n*aa+ literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/castle_windows/original_water.mw3 b/worlds/smw/data/palettes/level/castle_windows/original_water.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..d61f6dba36f6fca7c93c3764bd9a43c16022c64b GIT binary patch literal 514 zcmZQzxLfaJ$q{reODH)sdq(l(Vg`oaJg@aZ^xgV;T@VS8hmaug)m8uNLG*07dTWq8 z1H*~Pb48~u4eU01F);iG@)elH7~~o18Rs)Wy8QeDonFn&uIm;87j zo*5=zYa$o=KUKaOB!AA5fk7hKq<(7s51?9z{s!ic@;{mX`$P0^H~O8Bm4*AbL6hgHLOFHNB9pU-^X)B;HL;g p9^Hi?d5GU}%O7(LDgIUex1J*xT{px%CMH%c^Haqb>w)e=2LJ}Les}-? literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/castle_windows/underwater.mw3 b/worlds/smw/data/palettes/level/castle_windows/underwater.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..db5c1a996ccb3c7dd95ec0caee5079dbb9474eb4 GIT binary patch literal 514 zcmZQzxLe;Mb5w=R(A_e_ai!& zxzPWq^3@>ubCwJY63Hg@Q|o^K^+NPFFn^T)$^73RqJO*5?{o$x1?C6L3>W}pe<81Z z4bU~h|8dBRYsfojx~`2BNW;($wy%&E literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/castle_windows/water.mw3 b/worlds/smw/data/palettes/level/castle_windows/water.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..a0955e820349da62f84748d19bd6cd4ad55b6f55 GIT binary patch literal 514 zcmZQz*j0W+ro-@+t&Urs-DR)I#S9F;d0y*-=)3jxx(p2A*^5P<$gnB8Yj&ve=z+vn zSN*RC(X-|1tr>v&lX%*6pWAu|txpokW?=YV&%mI-EXE+uP|rA@2_i4TX~FxK@gG|) zGfckLL@xAys(dv_{*5C8gIW5-@-5XnfP9Gl2Ii0QKbimgL-cPq`knqz_ki64X9f%a zvj2miea$VoX!YCr7}8+(ZRW6&^e}uKs2hh}K2LInUaWI`vTOtwgS_Pt7Y@II^lb+B zP5%Sk3o@U_X>*ua`i$aQSD5=y{bwyy&wo!pMDPw9Odi>P!0-w5%llY|ERX8HevWHA zGQ1FZbQgl`Kd5=otT`OF{7TD@N#)tQ%k{$0bwk{5Vq)boKUIve9vB~}Ac+S6-r|Dm literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/castle_windows/whatsapp.mw3 b/worlds/smw/data/palettes/level/castle_windows/whatsapp.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..198f46eca8a90c9fe2ebbad1e53e254daa9d12c0 GIT binary patch literal 514 zcmZQzxLd!7gPGSwaH;4sNp-o&#S9F;d0y*-=)3jxx*#%h<(PNSz@zquT z>p}Evxq54mJOe|E;8VfVdb!5e!WkI;1NjQfVhr*O^^EhGAo2>#4a^_qe=`5~hsoEP z$c6q-m9GZLpR;6OkVrPEpIZL|s28Fip&n%ZcB9|v3``2l511J+07$-&*S-em8sYyq zg7j?$_f0|Of!uS>a!Qay@|@y$ z9hmzN{sYPXXOw6D&%B+%9_U|)`w{*F@i}tW<{H)^%Om^;k{4tU2Zk3!9^Hi?`3H;- mm>xjQ$0mQwF{Joc{oi_yTy$B8drVBMT;`{WG1dd!hYkR=M0!a8 literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/cave/brawler_dark.mw3 b/worlds/smw/data/palettes/level/cave/brawler_dark.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..a2d618bf09e58d30bb7af6b106817312e51db722 GIT binary patch literal 514 zcmZQzxLeP_;KVhqv@@r?3J^2{*#S`)d@ z|EcoTAo+8a3=9&f>6-yfoXyV37-1||jO2SEMk0Azn5uYC>B zHNyXK$ct;pJ7~JDjTA^j*A20+kQd~a_+;4#E(UqaBQ6|%1?k%i?wf+l1G(p%<&+?a zz^Pi2Ml=PT3sI^QJ~lF!@>& zxzPWq^3@>ubCwJY63Hg@Q|o^K^+NPFFn^T)$^73RqJO*5?{o$x1?C6L3>W}pe<81Z z4bU~h|8dBRYsfojx~`2BNW;($wy%&ET+`0A?v z^&on-T)j0&o`GRKZ>64*WVzx`Lk5QbK)wRA7=t`RJ>z^Pi2MYWDI7aEZgc$OfXUaI z$c6q-m9GZLpR;6OkVrPEpIZL|s28HYf%&8SPv-yr5dGVYey1}qDKI}^X21X-`wMyP zYk;m1{*OamTtnVL({*j6KpKX2uziKRAiu;X%SLc9$Xgz9;qWU+-)3;%6l5OAJ?AW^ z1W6>%DUR2Hxewt#koxZ}>yF38C_jyDB literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/cave/brawler_teal.mw3 b/worlds/smw/data/palettes/level/cave/brawler_teal.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..85c9b210d17d8da750ff649a2e76b33b94175236 GIT binary patch literal 514 zcmZQzxLeP_a8$)pcdc%)l7#)_Vg`oaJg@aZ^xgV;T@ZO#LRB$M^Ms+6Rkj;Qe0A0T zdJsKZuHG6X&%kh!!%y-JstYLNUnO9lpsWRv=-^*?}mA^IDbKg$1P{_hXbzuo9}db%u^R*n$^1_0S#$ZKB% zbdB(TW(;Yt`@}Wm9W-6nMhc{1%7g4H`=%iCK=S7- zrvynP&nb@Afw>RiKal)?MtSD{%-b34f&PWKAK^a`pCfl|u3;UrJi>ngPyZ1N784{RHPaO;P-AG& zxzPWq^3@>ubCwJY63Hg@Q|o^K^+NPFFn^T)$^73RqJO*5?{o$x1?C6L3>W}pe<81Z z4bU~h|8dBRYsfojx~`2BNW;($wy%&Ekd_;UAyB{IHPS?n8o7c~v&p`hG0DX~xDF6Tf literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/cave/dark_red.mw3 b/worlds/smw/data/palettes/level/cave/dark_red.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..10af3e45f05434d4b8c40f88728ae29d6fec7211 GIT binary patch literal 514 zcmZQzxLeP_a8$)pcdc%)l7#)_Vg`oaJg@aZ^xgV;T@dNalgg3K(;>j4sHX}NUtRUT z9z@TUtG5QpGcc%W_(`@1XsE7rWnlOZKuLjAVvt(e9NH(dTTK@y67oxv``J?<#=KuZ>{o9Rxr!z1qFh5{szyKio3wiBp zfUXh#k3(KuL*7Btb#0_T8isbTeTBRrzr-iYMsP96TOM)Y@GD5)W^msWWFE*p=PaiL zNhHrHj@N;?58*$M{C`Gy=Ksvw8SH`ng}5K#KM964w?^a8-j4_hqxcRJOGpJbPfOj literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/cave/glowing_mushroom.mw3 b/worlds/smw/data/palettes/level/cave/glowing_mushroom.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..5b5531c7ef2d07ee1f87979af80c1999de696da1 GIT binary patch literal 514 zcmZQzxLeP_a8$)pcdc%)l7#)_Vg`oaJg@aZ^xgV;T@dM};$_np&=SL5*j)+|UtRUT z9z@TUtG5QpGcXubU9EF5Xb;((!@%$#$X8$%V~}U4XPnOjk!R&x!JBO6;@%k!ldm^GErg%>Vr%`nMbXPG?|JV1B^NfB``E7xLQI z09_;eABViShP;EO>)J?xGz{%v`wDqMeu+<(jo@OCw>;v);a8Bp&EUQ%$UKmH&RI?g zl1QFY9Ipd&AHshi`Tvaa%>S9UGuQ+D3voZfe;__b?%G_#I%Ii-|3LDB4C27>g2LsJ19Kn3e<1n)jPlI?nYT081N{qeKf-??K1c4_T*EqKd4&H!@`4QF!0>{|qq`6! p|A6rU(*vma*yJ5FAJ{eoAd&PAbAFc3q|GSrqwg*Z`U(0{0CwMW-$hNhI+>NOc42t5}~p?WUI~osKMlG zP2@uVr^;7@he3GF!v+-Z>dBiU!3wjaZ|y0N-%k3|1FhJk6jU~U4|^*!2D7E zC-Z-Qi242sQ95&NA@b-h1o^L7u|+G@7`J?@p{Cc`IEXw*{WAqG%^t%Kx?8;<<{S8l Wr$=QYI#{KT7A}GU;qHv>5^{% literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/cave/magma_cave.mw3 b/worlds/smw/data/palettes/level/cave/magma_cave.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..ca297deb25781716a786e000559beb2390427ff0 GIT binary patch literal 514 zcmZQzxLeP_a8$)pcdc%)l7#)_Vg`oaJg@aZ^xgV;T@abhk;&oB;mZ-kVa5UyUtRUT z9z@TUtG5QpGcasZykphPaf#zQ3j@P{AYXx5j6t5Eo^d`CL_UXSlfZP&Jz{qHF!@>& zxzPWq^3@>ubCwJY63Hg@Q|o^K^+NPFFn^T)$^73RqJO*5?{o$x1?C6L3>W}pe<81Z z4bU~h|8dBRYsfojx~`2BNW;($wy%&Ekd_;UAyB{IHPS?n8o7c~v&p`hG07lq>ng9R* literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/cave/original_chocolate.mw3 b/worlds/smw/data/palettes/level/cave/original_chocolate.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..db2693d6be989e7dbabb14dd22f313cae46319dc GIT binary patch literal 514 zcmZQzxLeP_a8$)pcdc%)l7#)_Vg`oaJg@aZ^xgV;T@aZd&?vE3=7|iarnf3ce0A0T zdJsKZuHG6X&%kh!!%yFayJXAYXx5j6t5Eo^d`CME-;br)-Yqc~c`Nn0&2? zTgH`w;#E$^U1RXa3K;oxvXHUx@n={sZwja@Xb>)*;Iy{0EX3WDp027epT2 rg&_F{j1QO|K+VS{@1Xg>wjl^%J|aGm-H(u8r)y-l&Fg2-XP|!o@5h1T literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/cave/original_gray.mw3 b/worlds/smw/data/palettes/level/cave/original_gray.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..2e01f09820c82ddd4c95fe1fd2e947082ee462a3 GIT binary patch literal 514 zcmZQzxLeP_a8$)pcdc%)l7#)_Vg`oaJg@aZ^xgV;T@aZd&?vE3=7|iarnf3ce0A0T zdJsKZuHG6X&%kgZ@?6nrO9Q*jUJMNXfqVsKF$Q^tddB%o5P2~MX@+=4c_w*gn0&2? zTgH`w;#E$^U1RXa3K;oxvXHUx@n={sZwja@Xb>)*;Iy{0EX3WDp027epT2 rg&_F{j1QO|K+VS{@1Xg>wjl^%J|aGm-H(u8r)y-l&Fg2-XP|!o<;Z~^ literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/cave/original_ice.mw3 b/worlds/smw/data/palettes/level/cave/original_ice.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..6d17d16efefb033235542a15d3997fd2f80ec50b GIT binary patch literal 514 zcmZQzxLfaJ$q{reODH)sdq(l(Vg`oaJg@aZ^xgV;T@VS8hmaug)m8uNLG*07dTWsU z`_Qd<-^(oPtLyjHGcf!IVg+U~26={h#`#Pjc?O1)I)09qLo4!R;qtX6a-siI<*PyR z=PVf*B$7?)r`G>~%QrB8l>f>6-yfoXyV37-1||jO2h0o@0Azk4uYC>BHNyXK$ct;p zJ7~JDjTA`3&<=KQAuq@;@yW6gTnzG-M_f4k3evY3+&2Z82lCH3%PBz;$#aV1buj%0 zlK;;r&-|ZxJA*yYzYzZ;{0HK5k{G%$Kx@&cVl_czu-H(u8r)y-l&Fg2-XP|!oT`7oS literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/cave/original_mustard.mw3 b/worlds/smw/data/palettes/level/cave/original_mustard.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..001ed133195bd4ed71a53ceedcb86de5716982b8 GIT binary patch literal 514 zcmZQzxLeP_a8$)pcdc%)l7#)_Vg`oaJg@aZ^xgV;T@aZd&?vE3=7|iarnf3ce0A0T zdJsKZuHG6X&%p4Kfmf-I)mUn~5d*`2AYXx5j6t5Eo^d`CL|%+RnjxN1o=Kh=CSPkJ z7y3U{z8WNd&XR#aBH5&VYW)wOUWon%=8y6}ng9Dk^lvx%ozB3d!2AHHA02?~FXXka z0lG%`KMr|u4S5Gm*R_!XY3RBk_7(Di{1Trm8^OgOZ+XOp!>=HHo56ikka-~YoU@z~ zB#}I)I9>+_kxeb;$Av|AFKM8N`9%1(8R0 rAxQoK;{&D#Q1h|LJ7_+zZ3se`kBCoX_ao%j=^EK>^ZFU|8R#DXk$itI literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/cave/original_volcanic.mw3 b/worlds/smw/data/palettes/level/cave/original_volcanic.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..96befdfa3d55f38e0766ba31d0118b851dd59beb GIT binary patch literal 514 zcmZQzxLeP_a8$)pcdc%)l7#)_Vg`oaJg@aZ^xgV;T@aZd&?vE3=7|iarnf3ce0A0T zdJsKZuHG6XkF1}8;XjbCz%0ff&rr`ep9vx_#vsiQ&nV9%&kU2VHIWPbpDJGsl0Rq3 zz#x%qQa`o+2T(6We*^PJ`Jc@H{UQ3d8~sjaU{YXy0Mw5TK=v2%+SdSGBm5tSytszE zgQn}+NP#qT-4OcLsJ19Kn3 ze<1n)jPlI?nYT081N{qeKf-??K1c4_T*EqKd4&H!@`4QF!0>{|qq`6!|A6rU(*vma h*yJ5FAJ{eoAd&PAbAD`zBsY!LRE9UTYd}-|LYkT6qv;rN$Q#dGA!nmM*BD(EqJO4|jN=MV?xemv?D87~Z%NH_j!%}2;9`)sJmSLPSCGEV z;J)d9W{CcGu3O?P^Q+76gu>j9?7yWFk$iE=`@~HJ=PAMDk^Q$+LOpgxtacf)d;{}G z`Jc@H{UPT2D@5tcwS~x|yAb5RX2lk*RAb!ot%jOjYvUmDAob4_yfk|ZKj?1tf|zgM XC!QXajga?NU8^f(7Haibhk*eA6NZpJ literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/cave/toxic.mw3 b/worlds/smw/data/palettes/level/cave/toxic.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..a75f0bee6d8bf3f1b90d537499089c2427a2ad21 GIT binary patch literal 514 zcmZQzxLeP_a8$)pcdc%)l7#)_Vg`oaJg@aZ^xgV;T@dNa(#mmMfI~D}a*ZTNe0A0T zdJsKZuHG6X&%nUtv?eTDR$uRm8w10CAYXx5j6t5Eo^d`CL|%+RnjxN1o=Kh=CSPkJ z7y3U{z8WNd&XR#aBH5&VYW)wOUWon%=8y6}ng9Dk^lvx%ozB3d!2AHHA02?~FXXka z0lG%`KMr|u4S5Gm*R_!XY3RBk_7(Di{1Trm8^OgOZ+XOp!>=HHo56ikka-~YoU@z~ zB#}I)I9>+_kxeb;$Av|AFKM8N`9%1(8R0 dAxQoK;{&D#Q1h|LJ7_+zZ3x1xAL4%O@&KoXbc_H1 literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/cave/toxic_moss.mw3 b/worlds/smw/data/palettes/level/cave/toxic_moss.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..9afe6110309837b40676296ef6a9d03876b2d874 GIT binary patch literal 514 zcmZQzxLeP_a8$)pcdc%)l7#)_Vg`oaJg@aZ^xgV;T@cA2kSMWO=BNsrW|}TYe0A0T zdJsKZuHG6f&v25%Pjab*yQ!xc1H*ryc?!&84Dt;1jPscw@~pDyiZ3)fl(@BF^0g*% zq5o6mt3mSTEEyOil1=KT*8c$Nh3Ic!{wV*G`M*Cz|8}F_=?qK?%nz6uFaXH?g}nAP zK-UQW$00ASA@88+x;9cE4MRKFzCvD*U*eNxBe)pkEswZx_!XpYGq`UGG7sdQbCy$r zB$DS8$Lqk{hwvXr{y(EU^MB^;4E8|(Lfnt=ABfM9yEfOb4p|=IKajj2gE%m}AoA!g r1j#>Oe8BVoYCbl32h9hz4M7O=5%G!aeuVrwT_d|~UO$6A1N{R4q3?i> literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/cave_rocks/bocchi_rock_hair_cube_things.mw3 b/worlds/smw/data/palettes/level/cave_rocks/bocchi_rock_hair_cube_things.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..0fb33b2d6a380aa40e8ca073ed8350eb9bd2ac53 GIT binary patch literal 514 zcmZQzxLfZn6QX17`Y&=`l6>~$Vg`oaJg@aZ^xgV;T@dLZF+n54w9E9P&EHUv`0A?v z^&on-T)j0&o`K;+K=ywiR$vxmkY}i8oX-T2hnT+~Xg*B7)n zNdBB91A|1eN&VFNA8`E*%pc`{GXM97=-+PiJDq_^f%yS50|o%uU&w1;19Xk>e;o4S z8uAXBu4^L&(lE4x-CM{D@=JWOYy=mByyX!W4!?r*Z3g#ELFR${bIx)~kVNvF;&>gH z`w{*F$^U1RXa3K;oxvXHUx@z^{sZwja@Xb>)*;Iy{0EX3WDp027epT2g&_F{j1QO| WK+VS{@1Xg>wjl_&eu(?A%L4!^5PVbs literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/cave_rocks/brawler_volcanic.mw3 b/worlds/smw/data/palettes/level/cave_rocks/brawler_volcanic.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..5a3cf230f04df8c4c561247c61b8355424aecf8f GIT binary patch literal 514 zcmZQzxLZF>=epuwArsXbI=6Hu7c(&Y=6S6TqVLw%>w-uD$J*-cseHa~JjxS6;;XCv z*MsQUa`o0Ac?O0PDn7a!bR(6d?HL&U1NjQfVhr*O^^EhGpzy8QeDonFn&uIm;d&PAbAD`9?4QG)9M-Zx9b@g{sXZBvlxRsLp|esCW!n+iBQ=cvejmP)L`

z*`Q1+)(x zfaD8#)v$+8h#4DyyoTsZs+(zhAh zH~r5H(f`hMOPpnXb@`o8nER3aw^SmMFHU)%xT)YgC73+2|CUOq$F7LgE<=`YVE!oo zlli|t#C(5+D4n^s5P5VLg8bL4*rJtcj9nfS-VT}%Y#V~MGuQ*e8y$e;&sk0hl1Rob F4*)fog=hc( literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/cave_rocks/layer_2.mw3 b/worlds/smw/data/palettes/level/cave_rocks/layer_2.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..ff354e34fefadbbee66984960563071d2397b343 GIT binary patch literal 514 zcmZQzxLdzi!NYKk?Kw*$yKP>Riy0Vx^Sssv(Rb_XbwT7J1y$V)(=O8|DnVfR)m8uN zLGrWZ>a9WY3=AhC&lLfA!vC2W82$tK3d~{*@(lHi^O+#>Vhqv@@r?3J@^JZD6S>g; zsq)nz`E!;G3=+vE^;7GA0QExjH!y#c|H=H{AEJM|(eHEyCI#jPK>g?dWPc&AeGSZh zZ1Un7@(!A=Ya<2H&}AX^74m}o5}zy^!NnkNdBlaouONM!!F^Mhf6iG>36e;jQyi}Y zb05NgAou=flxP0Wyq&=w=wFEY5&i@5Ida$L8rC7pBm4)F7i16zh8IL0-Gw0e2aFGx X9ze~w|Riy0Vx^Sssv(Rb_XbwT7J1y$V)(=O8|DnVfR)m8uN zLGrWZ>a9WY3=AhC&lR1vG_c$3#lY|%$X8$%V~}U4XPnOjkr!i-W{78$XOd@z$=905 zh5k>KuLjAVvt(e9NH(dTTK@y67oxv``J?<#=KuZ>{o9Rxr!z1qFh2n5M+YGL3wiBp zfUXh#k3(KuL*7Btb#0_T8oF+XeTBRrzr-iYMsP96TOM)Y@GD5)W^msWWFE*p=PaiL zNhHrHj@N;?58*$M{C`Gy=Ksvw8SH`ng}5K#KM964w?^a8-j4_hqxcRJOD($c&PvY literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/cave_rocks/original_mustard.mw3 b/worlds/smw/data/palettes/level/cave_rocks/original_mustard.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..8150d4687553f90c4e65aea1f8b15d570836f2f6 GIT binary patch literal 514 zcmZQzxLeP_a8$)pcdc%)l7#)_Vg`oaJg@aZ^xgV;T@aZd&?vE3=7|iarnf3ce0A0T zdJsKZuHG6X&%p4Kfmf-I)mUn~5d*`2AYXx5j6t5Eo^d`CL|%+RnjxN1o=Kh=CSPkJ z7y3U{z8WNd&XR#aBH5&VYW)wOUWon%=8y6}ng9Dk^lvx%ozB3d!2AHHA02?~FXXka z0lG%`KMr|u4S5Gm*R_!XY3RBk_7(Di{1Trm8^OgOZ+XOp!>=HHo56ikka-~YoU@z~ zB#}I)I9>+_kxeb;$Av|AFKM8N`9%1(8R0 dAxQoK;{&D#Q1h|LJ7_+zZ3x1xAL4%O@&K0!ba?;( literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/cave_rocks/pyra_mythra_ft_pneuma.mw3 b/worlds/smw/data/palettes/level/cave_rocks/pyra_mythra_ft_pneuma.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..8f2b2817d8054bed1bdfd8d9073a69fb4710f227 GIT binary patch literal 514 zcmZQzxLdzi!NYKk?Kw*}`)yv6iy0Vx^Sssv(Rb_XbwMPfV54M)X_slUVyh8Ie0A0T zdJsKZuHG6X&%kgZ@?6n6k((0xOc@yd1NjQfVhr*O^^EhGAo2@&oF$hiy6Umn!{lpC z*fj9Jyd&PAbAD`9?4RxLRE9UTYd}-|LYkT6qv;rN$Q#dGA!nmM*BD(EqJO4|jN=MV?xemv?D87~Z%NH_j!%}2;9`)sJmSLPSCGEV z;J)d9W{CcGu3O?P^Q+76gu>j9?7yWFk$iE=`@~HJ=PAMDk^Q$+LOpgxtacf)d;{}G z`Jc@H{UPT2D@5tcwS~x|yAb5RX2lk*RAcP&pzwCkd|=xUw4K2o7~bdrB!A9wN{~b{ Gc6k7U?u2Rp literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/cave_rocks/toxic.mw3 b/worlds/smw/data/palettes/level/cave_rocks/toxic.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..4f98b11bc175b53cbc37e5cb633966e404599c40 GIT binary patch literal 514 zcmZQzxLeP_a8$)pcdc%)l7#)_Vg`oaJg@aZ^xgV;T@bmPp}Evxq54mJOcxl)0(hsS$(}LZVU|nfqVsKF$Q^tddB%o5P2~MX@+=4c_w*gn0&2? zT;v);a8Bp&EUT2f2e!U zSxyO(NS;$1uLE-*!hazB{~6_(|1)oAum}1V;(mnxKzxqewYi3M$npsPf#d}l#DU=j gkwNOd$DV5~no`4J%Be++>1b z^0g*%q5o6mtAYITbC$;>B$B0){wB@OhRHWDf0X~p{NEpSFXXka0lG%` zKMr|u4S5Gm*R_!XX&BnU_7(Di{1Trm8^OgOZ+XOp!>=HHo56ikka-~YoU@z~B#}I) zI9>+_kxeb;$Av|AFKM8N`9%1(8R0AxQoK r;{&D#Q1h|LA64#(3v!RL>Jd{_yEeDye)10J^1{^s?wEXP literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/clouds/cloudy.mw3 b/worlds/smw/data/palettes/level/clouds/cloudy.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..b7d07d348c420a90492bdd105f53ec279a624841 GIT binary patch literal 514 zcmZQzkjVD5>UKKo#UC6PJvn)DF$2SIp4a*y`fh!_E{ObJ&%mHi-%$Sm2tnejtNw%O z*>d&P3=Ge8isKB!-utfg%y!hYWMBZRW)@?RXQ*eK&jixXz;IH>&+&3-MV>5>4Uw-k zkqiBwDqqb2v|rPdfuT6cr2bmk_cWM%1M^4upUnULA^Nu){Z40KQeb|-%zyzv<`?qX z*8p83{2zzBxQ4ugrt8{B0igNl0OX!RUXWknlVu~g800OFxN!Itq;E60ZwfLGB!A9w zN{~eIoZ@&LnEMd^1IhnqlxP0Wyq&=w=wEdIf%qJ`YjX|jkmV8n1IY_Ahy%k5B9F~| t4;UXXJ%E~zP5!8gr|w$aU?mBAbXkyllvR(Is@k==J@=D$K$pLk1^_(oe6auk literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/clouds/cotton_candy.mw3 b/worlds/smw/data/palettes/level/clouds/cotton_candy.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..f9ddeb89c87de921311bde0f2cb67ef47e9d5d3d GIT binary patch literal 514 zcmZQzxKr}Q@k1h*xkFx3!Q&qb*x95KH4(Rg6^#CM7eq;au literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/clouds/original_green.mw3 b/worlds/smw/data/palettes/level/clouds/original_green.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..79af508740ade55e9958691a077933c26c99be22 GIT binary patch literal 514 zcmZQzxLfaO)$MfFi$6FpdUEpQVg`oaJg@aZ^xgV;T@d-do`FH3zM=jB5Q4;4SN#Xm zv*qfoLGtfIx8{8>v#hVK-wRX;R?RHNAkR?GIG+h5&%kg}$ItO{XhohZT)x&sF7$t@ zd^Je^oFxN;M6yZ!)cPNA`3B~X@;{mX`$P0^H~O8`=%iCK>j&rIVDIUc}{V> z4yOM=^8Xp-ng26yXRrtQ7vg_}|3G|>+_kxeb;$Av|AFKM8N`9%1(8R0AxQoK;{&D# nQ1h|LA64#(3v!RL>Jd{_yEeDye)10J^1t%|+hKuC literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/clouds/original_orange.mw3 b/worlds/smw/data/palettes/level/clouds/original_orange.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..453b717b9038d5e68d016baa245dbfd5cd5c9e22 GIT binary patch literal 514 zcmZQzxLfaO)$MfFi$6FpdUEpQVg`oaJg@aZ^xgV;T@d-do`FH3zM=jB5Q4;4SN#Xm zv*qfoLGtfIx8{8>v#hVK-wRX;R?RHNAkR?GIG+h5&%kg}$ItO{XhohZT)x&sF7$t@ zd^Je^oFxN;M6yZ!)cPNA`3B~X@;{mX`$P0^H~O8`=%iCK>j&rIVDIUc}{V> z4yOM=^8Xp-ng26yXRrtQ7vg_}|3G|>+_kxeb;$Av|AFKM8N`9%1(8R0AxQoK;{&D# nQ1h|LA64#(3vtgnT_d|~UO$6A1Kp1b=0^hn<}87Z literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/forest/agnian_queen.mw3 b/worlds/smw/data/palettes/level/forest/agnian_queen.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..a9f038cd0daa75f537e7ae6d91f0d0a3431ccab1 GIT binary patch literal 514 zcmZQzxLcpYW1xE3vfR%){a*FtVg`oaJg@aZ^xgV;T@d-do`K;(okD#>{eyat`0A?v zV0yM(y){Ulf#F(Ib$$-dz3Old1_qGoa1JpBd4_t%`AiV`Y~A;^#eNdWbAY-b^0g*% zq5o6mt3mSTEEyOil1=KT*8c$Ng~&HBf0X~p{NEp<05u<*{81H8-L<;GN)q;s~#~`wQF;G?kDenE+1YG0MgWd0{{R3 literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/forest/atardecer.mw3 b/worlds/smw/data/palettes/level/forest/atardecer.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..7d7bd3ced1215ab8899b393139995d3b01d1401e GIT binary patch literal 514 zcmZQzxL>Xzct-G|Qi$|y^}E)Siy0Vx^Sssv(Rb_Xbs2#2|LYkT9@Ht+H`G6<2Z^t) z`VXdO%hg+hGqK%t?)EXE+uP|rA@2_ip-HID5+Qxs>s7EHd@L@xAys(dv>zBN@p z&#)d@zJd9p{7>fp{t$TsmMWfDO^7_Y3qk%n$$FOU3OjE3qbi=dYjuN_B<#_3gUnY} TJz}bA*XH)zPu>At{=XRjL#l@E literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/forest/frozen.mw3 b/worlds/smw/data/palettes/level/forest/frozen.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..c846226b243c75b989b433173b7c76b914ac0dc2 GIT binary patch literal 514 zcmZQzxLdEPdcxGp?QB><`ls^A#S9F;d0y*-=)3jxx*+m@Jp;poI)(a%`UmwO@zquT z!SrmodTWrps;Y4I-D)kj|Mj!V85lsSXO)XF$TQS4&SwJ2GcaW9zPBy*lSrNe)D4lZ zHIWPbpDJGsl0Rq3z#x%qQa`o+2T(0UzJd9p{7>fp{t*4!jee&yFexxUU}nGoAoB}( z?Q4Lp5&n-uUR*=oLDO|@q(B;mcCdYgydb~CC(A}~G00mUapCYQNZ)2~-xOpX$UWyQ zrv!mqAFl)9D=;Jc2a^BKD9`+#c{_tW(7zzQ0yDyYAU;R#+FZjrWO;=DK=OhN;=u5N x$fLUuB>#Z%0n-Dh`Pk%-s(9+I)eTmXut%4LxM!WNk=-`0pFy92?nec`^8vp{gVX>3 literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/forest/halloween.mw3 b/worlds/smw/data/palettes/level/forest/halloween.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..b48bb74aa519c8f6a74e9e2131cfedb726482b9c GIT binary patch literal 514 zcmZQzxLf~*!+^7dbqDKjMti2o#S9F;d0y*-=)3jxx*+m@Jp;poI)(a%`UmwO@zquT z!SrmodTWq814EaAw`D1#Op!ek0|Q94J(C!NJVQO>d>|hrpRN1ew%AW1c@9uFM84KU zF7$t@d^Je^oFxN;M6yZ!)cPMlwGjCR=8y6}ng9Dk^lvx%ozB3d!2E!j0Rw={FXXka z0lG%`KUBWUV6DYPhc7PTz7YN58uAXBu4^L&(lE4x?JML3`6WJCHiC;m-tveGhhIVZ zHiP@7AoD=(IcGT~2;};B9SC268R0*W{C`Gy=Ksvwf&PZcBm4)F=g3`~YgmUYkMJKz zUXVc?7+w&0bQgl;A22>(dH^*aoBUA~Pu;b;!AcVL=&~U9D61YZRkdq#d+sOifG*#v F002!QfCK;l literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/forest/kevesi_queen.mw3 b/worlds/smw/data/palettes/level/forest/kevesi_queen.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..cf5e302ec11e76a75cfba1701eb9355778856c0f GIT binary patch literal 514 zcmZQzxLdzeVyVJ0jbjGKERH!$E@oi(>9xMBlBi*9DRP>lqjx)G5?A)IX>PiLb8u z52k0!)mww)85ovIXlfpF=rLsvWnciQW)Br(kY}i8oX-T2&(?i!TkI#1JO`*7B42AF z7y3U{z8WN-Wy!#BEonyG?mB6pUWj}H^GErg%>Vr%`nMbXPG?|JV1B^NfB``E7xLQI z09_;eABViShP;EO>)J?xGz{%v`wDqMeu+<(jo@OCw>;v);a8Bp&EUQ%$UKmH&RI?g z0=Yh32f|liM)(gT|DREw`9Je^2791?L3{;fg#SQ%j@-4mhIPpD2>*fP1sTMF;RTUL wcOgjr0pkOv2T=2|$sbkm)Lp9^tR!KNE(>yxvg#32Rl7E~=YH}I=<>R{0Em}o`l7xoIda$L8rC7pBm4)F7i16zh8IL0-Gw0e l2aFGx9ze~Riy0Vx^Sssv(Rb_XbwT7J1y$V)(=O8|DnVfR)m8uN zLGrWZ>a9WY3=A(Bc$NBCjit65F);iG@)elH7~~o18Rs)WKuLjAVvt(e9NH(dTTK@y67oxv``J?<#=KuZ>{o9Rxr!z1qFh5{szyKio3wiBp zfUXh#k3(KuL*7Btb#0_T8isbTeTBRrzr-iYMsP96TOM)Y@GD5)W^msWWFE*p=PaiL zNhHrHj@N;?58*$M{C`Gy=Ksvw8SH`ng}5K#KM96M^!v^*XjlKuLjAVvt(e9NH(dTTK@y67b4%l{89cV^M8Mc{_RG;(;1i)m>&SmM+YGL3wiBp zfUXh#k3(KuL*7Btb#0_T8oF+XeTBRrzr-iYMsP96TOM)Y@GD5)W^msWWFE*p=PaiL zfm|Q219Kn3e<1n)jPlI?nYT081O1EcKM96M^!v^*Xjlq=7sYRqNJ7#KjRWy{1EH|p-7JF1*P6(M z{!f*!2FahZWMGg;HmRRl{{yHOqQ8Opqx?_i|NapD+l_vwKVW>o^njTG1Ay!= zx<>dv4ta46c?V6`wUGj87}~-174m}o5}zy^!NnkNdBlaouONM!!F^MZc_8$gLp7}rXb_RQ(e?fc&W`zGhe2(0;xrTMf@(BNdjt?;S@npis$HAgb3b_pbou$w05)oYdH?_b literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/forest/snow_dark_leaves.mw3 b/worlds/smw/data/palettes/level/forest/snow_dark_leaves.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..8278f06c7258186e5a2443a4ee4a1db1713d4417 GIT binary patch literal 514 zcmZQz*jxTgMZ?zHwLkKGY-Qf$Vg`oaJg@aZ^xgV;T?U|hrt6#7O+^qAB)+=pe?5qv zEmv<1l3yzEUShjuQCzg!oN@?%PI<9Rl#YyPycCGfz~E_m*0nI~dm2LiW`=F4T#;=x zNPeyDQVEOfPerBWJHh;=5_8Ix{ZE*`7ylg&F>kxk@AT)oC(Tv??L!A3`wMyPYbxYy z^yeC*%R=`JGS(hX3^p3<}I*4Dt;1jPscw@{xRT%KOAk1?MTj{r(D3I<=M%d2|FaA3mV%~P6-|5eFPnxX)+J_E6_80Qn*Hp;a z=+8Aqmxbt`X(HpO>AE&jAPu|x2EkiW^PJ<8Wh1y4Khx$i7c15gq z8M1r>^GErg%>Vr%`u!E6bZRXj^5`xE`L9{AMJv@9xBO8RPu;b;!AcVL=(-{1>xX{G Qomga4UJZ0VDyXUk0Pq@*mH+?% literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/ghost_house/brawler_cyan.mw3 b/worlds/smw/data/palettes/level/ghost_house/brawler_cyan.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..cb6590850f3f54d1ea4b25df3b28e2d5fab6fef7 GIT binary patch literal 514 zcmZQzxLd!Nhefna@tEpKJ5Kk>#S9F;d0y*-=)3jxx*)QNV-e305miYRNfl9$`0A?v z^&on-T)j0&UQtw0>YKuLjAVvt(e9NH(dTTK@y67oxv``J?<#=Kua6c?O2DvtMn}W;( zx#yhalpu-ZImPihF!v$+2a^BKD9`+#c{_tW(7zD(Bm4*AbL6hgHLOFHNB9pUFUTMc n3@?a0x(h+_4;UXXJ%E~zO}?P+a-CWI%zAkTbXiRIqpJV_gm8JI literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/ghost_house/brawler_orange.mw3 b/worlds/smw/data/palettes/level/ghost_house/brawler_orange.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..750def41f99befdaf52b901569f3800f2ec30359 GIT binary patch literal 514 zcmZQzxLfbSvYJO>O$TQS4&S!$ipW+bYEaAN-YUBiyuQibi z{humd4U#`+$-p3yY*Ih9{s&MmM1KSGNBN)3|NSBQw;TOVXJArbe!$Ft0YL66 zx<>dv4ta46c?V6`wUGj87}~-174m}o5}zy^!NnkNdBlaouONM!!F^MZc_83(z-0OQ1XrT_o{ literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/ghost_house/brawler_purple.mw3 b/worlds/smw/data/palettes/level/ghost_house/brawler_purple.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..60ac884bf7af4d8c9496772c41d0ca1076fc2161 GIT binary patch literal 514 zcmZQzxLe;YvqI&qiGbr5pQxAE&j0O&q+0J5);7vz`tWZ4KV26@XPE*yRZ>DvtMn}W;($)B^F z5+sp4r#M~*=01e~K=S_?<(dC8Z)dOv`WNDUg#SQ%j@-4mhIPpD2>*fP1sTMF;RTV$ h=Dr7v511Z6&BrERPa9WY3=GReUdw!txhgVCfPvvZkgvcj#vsp7&p4k6B7a=srHqcMpJoBjJcxX)iCpOa zRQYO<{5eYo28m>o`l3&od9vlE)MSG0^ literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/ghost_house/crimson_house.mw3 b/worlds/smw/data/palettes/level/ghost_house/crimson_house.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..fc7369f7efb1dfae084baefc9480880b4d48d64e GIT binary patch literal 514 zcmZQzu-9W@;9%fmkY=!FsaKp_%)s!Q=e0hFzFS|f3nHB?IfBk*K}eAJ>Zd&PAbAFcVAk1uvhwx%_w9lFdIkmsW-$hNhI+>NOc41MJi3CH1tY}%ioxV- zP2@uVr^;7@Dnt$bLai z`m-uAa2rdSB%Ofrveg)~<4DOr$2igZR z|GnmQyJ+{>@ph^(_o4bPo++OBzxXZIdSRG6vi}$uR5PFFzO6%+NA=%EmLDu~tPpv0 j7lQ16&iIDuD>H6+WcOjyf6j7BkVNvF;&>f&*?Z;yZ`y#W literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/ghost_house/halloween_pallet.mw3 b/worlds/smw/data/palettes/level/ghost_house/halloween_pallet.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..f73c16e461017810a7ea3e7ead5d0b1767b856f7 GIT binary patch literal 514 zcmZQzxLf~#!GZAr;{vM$?}yQoiy0Vx^Sssv(Rb_XbwQ+)B}dS?EC>k_UtRUT9z@TU ztG5QpGcdeoFlG#6oXxnOk%8eqkgvcj#vsp7&p4k6BF}3g5+Ic!U-Q2PCSPkJ7y3U{ zz8WNd&XR#aBH5&VYW)wOUWon%=8y6}ng9Dk^lvx%ozB3d!2E!j0Rw>SFXXka0lG%` zKMr|u4S5Gm*R_!XX&BnU_7(Di{1Trm8^OgOZ+XOp!>=HHo56ikka-~YoU@z~B#}I) zI9>+_kxeb;$Av|AFKM8N`9%1(8R0AxQoK f;{&D#Q1h|L7t~#@GpnCjFYkaZi|Kw;748ZE4*`2g literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/ghost_house/orange_lights.mw3 b/worlds/smw/data/palettes/level/ghost_house/orange_lights.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..8eddf82fd34ef08dc9bb833c177a38de28a82c74 GIT binary patch literal 514 zcmZQzxLbcrk_UtRUT9z@TU ztG5QpFOzwru}L*T>9^H9e+GvC^$ZLO%wi1k4E2ojnLzSOB#tV)($F&vwk>ys$=905 zh5k>KuLjAVvt(e9NH(dTTK@y67oxv``J?<#=KnzR?gGWO8~sjaU{YXyz|4RFK=OsW z_BBA)2>-_+FRmf)py|3cQXmaOJJ`NLUXWknlVu~g800OFxN!Itq;E60ZwfLGtGAkMJLe&yl+}*RT#*9^pTbydZ-(FuWl0 l=q?1wKVW>o^Z;r;Hu-|O%XMb;GwbCY&}A{*kE-IB3IHUlf8YQB literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/ghost_house/original_aqua.mw3 b/worlds/smw/data/palettes/level/ghost_house/original_aqua.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..fec63947beaad9cc35209b449c6dee93b0001380 GIT binary patch literal 514 zcmZQzxLfaO)$MfFi$6FpdUEpQVg`oaJg@aZ^xgV;T@d-do`FH3zM=jB5Q4;4SN#Xm zv*qfoLGla?Cpr8iFKbrV$p$kpfK@Y#F~~F2GtOs%$e$45l+DpRZ))TOldmSFXXka0lG%` zKMr|u4S5Gm*R_!XX&BnU_7(Di{1Trm8^OgOZ+XOp!>=HHo56ikka-~YoU@z~B#}I) zI9>+_kxeb;$Av|AFKM8N`9%1(8R0AxQoK f;{&D#Q1h|L7t~#@GpnCjFYkaZi|Kw;760o2ea(J8 literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/ghost_house/original_blue.mw3 b/worlds/smw/data/palettes/level/ghost_house/original_blue.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..b46979edd84e64bd8aca975625ffd7f32daf5f44 GIT binary patch literal 514 zcmZQzxLfaJ$q{reODH)sdq(l(Vg`oaJg@aZ^xgV;T@VS8hmaug)m8uNLG*07dTWq8 z1H(xUKgr9Q6?U@03=IE)dy8QeDonFn&uIm;-nC?ea@xLAb1-g7- literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/ghost_house/original_dark.mw3 b/worlds/smw/data/palettes/level/ghost_house/original_dark.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..eb6152098a04082fe556948c8bc4f3cd45f58114 GIT binary patch literal 514 zcmZQzxLeP_a8$)pcdc%)l7#)_Vg`oaJg@aZ^xgV;T@aZd&?vE3=7|iarnf3ce0A0T zdJsKZuHG6X&%kh!!%yFayJXAYXx5j6t5Eo^d`CME-;br)-Yqc~c`Nn0&2? zTgH`w;#E$^U1RXa3K;oxvXHUx@n={sZwja@Xb>)*;Iy{0EX3WDp027epT2 kg&_F{j1QO|K+VS{Ur=|s&a8fBy}SduET;QWRUB3U06}tj(EtDd literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/ghost_house/original_white.mw3 b/worlds/smw/data/palettes/level/ghost_house/original_white.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..0d5c43f3b913762f13d854b75c804a34075a0c6f GIT binary patch literal 514 zcmZQzxLbeCPa-@jeop$m{Qu>Xiy0Vx^Sssv(Rb_XbwT9+dIkoC`iA-kKnN0FUG*PK z&z7sV2FWupoaFG6ysTMaCmYPb09MT`#vsp7&p4k6B7Z`JQ#MEQys42BOup7cF7$t@ zd^Je^oFxN;M6yZ!)cPMlvmp8#m_N$@Wd83D(ZAj3cRB-;0`miA1`GhQzmV6y2Iv~$ z|2X8uHRK&MUDrkmq+w_W+gHd7@=JWOYy=mByyX!W4!?r*Z3g#ELFR$nbIx)~kVNvF z;&>gH`w;#E$^U1RXa3K;oxvXHUx@n={sZwja@Xb>)*;Iy{0EX3WDp027epT2g&_F{ gj1QO|K+VS{Ur=|s&a8fBy}SduET;QWRs6390KAxge;o4S8uAXBu4^L&(lE4x?JML3`6WJCHiC;m-tveGhhIVZHiP@7AoD=(IcGT~ zNFsSoal8)9eF*=7yYIU{sYMiGKd4i3nGv1 oLXi9e#s^Ffpyp%BBgY@QEXX~|sz*#!?b_U)`^h_?%g34n0E-uTmjD0& literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/ghost_house_exit/golden_house.mw3 b/worlds/smw/data/palettes/level/ghost_house_exit/golden_house.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..423508148a6be6411b4e55ba244d2dbf37af712a GIT binary patch literal 514 zcmZQz_@5mhctx^8?vGl%`hEAw#S9F;d0y*-=)3jxx*#$^piyG6%o7<-O>b3@`0A?v z^&on-T)j0&o`K;cho9tS%?dl&Uz^Pi2Ml=PT3sI^QJ~lF!@>& zxzPWq^3@>ubCwJY63Hg@Q|o^K^+NPFFn^T)$^73RqJO*5?{o$x1?C6L3>W}pe<81Z z4bU~h|8dBRYsfojx~`2BNW;($wy%&EFayJXAYXx5j6t5Eo^d`CME-;br)-Yqc~c`Nn0&2? zTgH`w;#E$^U1RXa3K;oxvXHUx@n={sZwja@Xb>)*;Iy{0EX3WDp027epT2 og&_F{j1QO|K+VS{kBC2XS&(~_Rgaje+O@eo_mg)(mp`lm0QE6=Z2$lO literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/ghost_house_exit/original_blue_door.mw3 b/worlds/smw/data/palettes/level/ghost_house_exit/original_blue_door.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..b43818c578274c2bf468d43dfca69633519d56e7 GIT binary patch literal 514 zcmZQzxLeP_a8$)pcdc%)l7#)_Vg`oaJg@aZ^xgV;T@aZd&?vE3=7|iarnf3ce0A0T zdJsKZuHG6X&%kh!!%yFayJXAYXx5j6t5Eo^d`CME-;br)-Yqc~c`Nn0&2? zTgH`w;#E$^U1RXa3K;oxvXHUx@n={sZwja@Xb>)*;Iy{0EX3WDp027epT2 gg&_F{j1QO|K+VS{@1Xg>wjl_&eu(?A$sbk$0QUZP6aWAK literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/ghost_house_exit/underwater.mw3 b/worlds/smw/data/palettes/level/ghost_house_exit/underwater.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..a92bc7a1ba7400a9bb69e641009d1e3b1a58ed09 GIT binary patch literal 514 zcmZQzxLe;MaZDk@kjt$nOfP+MF$2SIp4a*y`fh!_E{IGJXp~qi^F)SI(_0lJzPjpv zJ&2wyS8olHPZnvF;WnJ;7#8&_iGksNJp+RRvlxRsLp|esCXhS>!wC^i*&NODrbbRM z`C1dX(Eq9O)gXCKO9qDTY58d(#XEs~i2erVkMcj6|NBGC-){6fUEMIvPt~0P1Axpg zx<>dvGln$S{`=%iC zK=S7-rvynP&nb@Afw>RiKal)?MtSD{%-b34f&PWKAK^a`pCfl|u3;UrJi>ngPyOnKz^Lze})M_KiVsj6L@+jBp82XuK=T>yexeJ20_ literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_clouds/atardecer.mw3 b/worlds/smw/data/palettes/level/grass_clouds/atardecer.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..caa4f87908b7123c570903617838256cce36d463 GIT binary patch literal 514 zcmZQzn4j-y)$MfFi$6FpdUEpQVg`oaJg@aZ^xgV;T?U~1|9S=nh5Cm22S5lCUtRSd zOwX39w`O424-_d9tTuYZ_(!jp9l|$azRD8ED$n+h4Z_dW{b*b2Cz(7Ks1~H&h)$%WSg`4IUa_8;8;*!PD+_+e_l)47<8n7=SHU;wasPWu{b zC41@l+!)ee^RBVjvg*3_M+&83mk;EPR{C!hpDY`}#UO8a#D&AJAbp#`ebfIy`#|Qe zH-)&~UKQp(RR77b-D8UvzQSQA1(UBekqiBwDqjuZ^JVtun${u9H!y#c|H=H{A0mH& zMU1nK6(W!BLXiEh8Q(E|V#Y1+xhrg_1NHV%^28RFjMtZzn9Rgm8xtix~(dGA9 F0RU^?c~$@b literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_clouds/crimson.mw3 b/worlds/smw/data/palettes/level/grass_clouds/crimson.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..047af332dd6d8b84cb1e49b757f9cbee10bc3704 GIT binary patch literal 514 zcmZQzxLe;Xa7p5aOoghI)9#?j#S9F;d0y*-=)3jxx*!rF?_~Ky=7$VOe0A0TdJsKZ zuHG6X&%od#8RFC}a3k!83;v);a8Bp&EUT2e`bh#&RI?g z0=Yh32f|liM)(h;A7uA`=IspjK>vdH3d{)qf%p)+k>wHo1Iddqhy%k5B9HDukUYfi lxaE(kc^dQFYIzQ@f0>VnAE zn#hIzPnE9*$)B@iV30`Wvjn*SCf~sPQT`|Me}9Pn?MA=T7xSvit=3||03iDddF^XL z)vojXXU32QyH8w0-a*r~KNRFXbO3TsAuq@;@yW6gTnzG-M_f4k3evY3+&2Z82a-Q$ zIVDIUc}{V>4ur43jPM^w9%A=)2791?L3{;fg#SSNQyyz`4eOBQ5&i?oZ(yllk!OI& qV{;$G@3`fUs(9+I)eTmXut(Poa*wj=5mQyWHn-<~@($?oD`Wt5&44Qa literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_clouds/geo.mw3 b/worlds/smw/data/palettes/level/grass_clouds/geo.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..ac56278a9fc417e061935f664ead05f4f6eef3f3 GIT binary patch literal 514 zcmZQzxLe;Qa8l%xYLwY-t3Otgiy0Vx^Sssv(Rb_XbwMOV-pR60_LC||e0A0TdJsKZ zuHG6X&%gjP;g1yq!+#*3UrUTZo}r#`J`+SfTlc+fv7bcp9H1_Ue65LG=>JstYLNUn zO9lps(w7lPy= ne#b3;RK-(wt!}WAggv@$kb9I>kC>|3wYfd_lXpOuU!w>BobP?s literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_clouds/miku.mw3 b/worlds/smw/data/palettes/level/grass_clouds/miku.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..ca1b2d58e7af8298d63208458ff97ee5c0814389 GIT binary patch literal 514 zcmZQzxLcpBdPLXNZbO(!@{Hoi#S9F;d0y*-=)3jxx*#%HHOkALV~C|M!RJ-){6fT}A1Q*XDQz3;?pfkk`JZ zQq4yEKQo3j*nQ#}@(ym6JboLKFy%q+DdYwDB|cd;f{Q`k@`wwEUqSjdgZri+^FZ?F zET;s4TpzCk;VUpB{0EZ%&nVCQpLsijJ ug2v=2n9;nJ_D=;%KfK@Y#F~~F2GtOs%$Y<-mw=MRQNS*`K4Uw-kkqiBw zDqjtfKWE9nAdzfRKehe`&@7021M^4upUnULA^Nu){Z40KQeb`nG#?#+>@VcCuK~J7 z_&*MLaSeF~P1m)N0%_>FA@&vWg8UMnEE~baAa8lZg~P8PeVf63Q;>Ne_nfnw5(IL6 zybjEL2>*fP|1-)n|7YILU=Q>!y8l3Yj@-4mhIPpD2>*fP1sTMF;RTULcOgjr0pkOv o2T=2|$sbkm)Lp9^tR!KNE(>yxvg#32Rl7E~=YH}I=<*G*0N^Wpu>b%7 literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_clouds/original_green.mw3 b/worlds/smw/data/palettes/level/grass_clouds/original_green.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..e99fe9bcbd55242cded8136dbfa5722648f17728 GIT binary patch literal 514 zcmZQzxLfaO)$MfFi$6FpdUEpQVg`oaJg@aZ^xgV;T@d-do`FH3zM=jB5Q4;4SN#Xm zv*qfoLGla?FB#V`=`+t{{uj)^09MT`#vsp7&p4k6BF_K>{Wdoe>+4|hwI*_*|5N3w zLGtG;85kszP3ouC{{Wf=(ci%QQT`|Me}9Pn?MA=T8JHB9A25SVLIoiE3wiBpfUXh# zk3(KuL*7Btb#0_T8me9p4`g2*fj9JyG;SV_VjT^8gXWz{35s&;K|&;8^b(B&r=0|2qie6auk literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_clouds/pizza.mw3 b/worlds/smw/data/palettes/level/grass_clouds/pizza.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..51baec86a9a3bc454e07faa06bee5baf907c38e3 GIT binary patch literal 514 zcmZQzxLf~C)LgDYYp2moD=Fv6#S9F;d0y*-=)3jxx*+m@Jp+S6eM9{NAOwl8uKEwA zXUo-FgX9?)qK)P|2aEn zf3W;7Mv#l<0qv4y8QeDo znFn&uIm;`=%iCK<+tbIVDIU zc}{V>4ur43jPM^w{y(EU^MB^;4E8|(g7^x|2>*fj9JyJd{_yEeDye)10J@;9piy`h3S literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_clouds/shukfr.mw3 b/worlds/smw/data/palettes/level/grass_clouds/shukfr.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..21fa329c2594448c9b89d9965a6259b1b56daf65 GIT binary patch literal 514 zcmZQz*i-Lm)$MfFi$6FpdUEpQVg`oaJg@aZ^xgV;T@d-do`FH3zM=jB5Q4;4SN#Xm zv*qfoLGla?&lS8(4JFQbT1qf5fK@Y#F~~F2GtOs%$TI+ezlynntpZHG)n z1JM3+mJAFM$rJKKtEU6ag6MBx{wV*G`M*Cz|8}F_>0Dw8%pbTxCZPh5{e`^tH9*%0 z|7S*(1Mxue;u`V}nyzaj1=29(LG~5$g8UMnEE~baAa8lZg~P8PeVf63Q;>Ne`E!<2 zf+UjX6vykp+=uWVNd7;gJoA6%?F{xn|3ci4@E?fJk-Ik6unt)s;XjbPAcHtCydd)E vE(FPQi9KNYz>Qn}sEViVTHRnJ343(iAonP%9x+w5Yjb<^C>FaA3mV%~P6-|5eFPnxX)+J_E6_80Qn*Hp;a z=+8Aqmxbt`X(Hpu9{M8Dy9&Gf2EkiW^PJ<8Wh1y4Khx$i7c15gq z8M1r>^GErg%>Vr%`u!E6bZRXj^5`xE`L9{AMJv@9xBO8RPu;b;!AcVL=(-{1>xX{G Qomga4UJZ0VDyXUk03I%n+5i9m literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_clouds/volcanic_rock.mw3 b/worlds/smw/data/palettes/level/grass_clouds/volcanic_rock.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..523400287b9d84831d790f27d9b9bcc90e45aa19 GIT binary patch literal 514 zcmZQzxL@yS)$MfFi$6FpdUEpQVg`oaJg@aZ^xgV;T@d-do`FH3zM=jB5Q4;4SN#Xm zv*qfoLGla?&lNNcb1c_528S^)fK@Y#F~~F2GtOs%$TI*zzs-%r`Z}0=t%+Rd|5W*E z2B7`tEEyOilI_CoXW0Y!5d96zALV~C|M!RJ-){6foqtGAkMJLe&yl+}*RT#*9^pTbydZ-(FuWl0=q?1w tKVW>o^Z;r;Hu<9}p1NywgOw!g(PcsIQC2--s%qEf_S{e20bRZ(4FH& literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_forest/atardecer.mw3 b/worlds/smw/data/palettes/level/grass_forest/atardecer.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..292994f3b09c1ca82cef5b69ce7afbc00a9dd323 GIT binary patch literal 514 zcmZQzxL>Xzct-G|Qi$|y^}E)Siy0Vx^Sssv(Rb_Xbs2#2|LYkT9@Ht+H`G6<2Z^t) z`VXdO%hg+hQp@|D0tqk3{nM^l!y~fHpzo1-Wl=-;=(d4B>A#`kk)H=F5J8odE-Y)SC#} z*WA&nH~-I%Aq_T9TtnWW)0HQ#FAuxCA+L>|y>Wc9Yy=mByyX!W4!?r*Z3g#E|1(4E zKW8~5NCN2kcpU}?P-rMHi!sPE)HBX!g2>Ndjbr=I6vY{@1(UBekqiBwDqjteZ%x(D zGpt9JZ(#l?|C9N@KSbVurHUt36C#i9LXiJXvYutT!j4=1sEViVTHRnJ343(iAoG<~ TkC>|3wYfd_lXpOu|8E8W^>~IB literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_forest/autumn.mw3 b/worlds/smw/data/palettes/level/grass_forest/autumn.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..2142d9d371940855baa4b72e4577cb999e7deb1b GIT binary patch literal 514 zcmZQzxLbdkg`YK;bsFn0)_S4I#S9F;d0y*-=)3jxx*+m@Jp;poI)(a%`UmwO@zquT z!SrmodTWq814AdnMp=GFNv8RH3=AOEHyOnk^suztnviF9`*P6(M z{!f*!2FahZWMGg;jt{O6-=7SVZ(#l?|C9N@KSck0q50_oj5itUf##tDko|?c_BBA) z2>)kBmxbsT*N}I(s9I)r(+N`^ehUx69nKal)?MtSD{%-b34f$jtG6_^qJ1MxX>*XA15A}FRAo&N3511Z6&BrExRK-(wt!}WAggv?}#69bDjqJ90{S5jHbU!M%pb7xJ=zZh> literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_forest/brawler.mw3 b/worlds/smw/data/palettes/level/grass_forest/brawler.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..97aaa04cabdc08e792eeabefb3d2d7633337064f GIT binary patch literal 514 zcmZQzxLeOIm?e2u(Ligm(N(+2#S9F;d0y*-=)3jxx*+m@Jp;poI)(a%`UmwO@zquT z!SrmodTWq81H(xUKS_VB3cDHZ3=AOEx4|E>{)r-a(*?Ys}Yfa=r z|EJ1VgXGUyGB8Lao77LO{{hqs(ci%QQT`|Me}9Pn?MA=TSMll!Z4hI?03iDddF^X} zt`Yvvj3EtnpSXs+gQn}+NP#p=d60dDydb~CC(A}~G00mUapCYQNZ)2~-xOpXNdBDV zlpu-ZImPih5WWI4!haz7|BUj?|CzTl*aQ6w;wvyC{0HK5^ZFU|8R&jgFw-9Zl&^jl literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_forest/brawler_atardecer.mw3 b/worlds/smw/data/palettes/level/grass_forest/brawler_atardecer.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..e0fac8ca2357f74baa42bd86d602e283ce0e1052 GIT binary patch literal 514 zcmZQzxLcnlaZ18hQdn%e)Lya4#S9F;d0y*-=)3jxx**b-=Oj>mz3fFrNhOf@>ZtV%26={h#`#PT`4b|XvN@XPO^uvj^0g*% zq5o6mt3mSTEEyOil1=KT*8c$Nh3Ic!{wV*G`M*Cz|8}F_>7BefLj6GV&;iK)LSFkC zplgKxGo#Bw^owiAJ7~JDjTA`3ln2>Y$P4mIe6nl=7lXXz5f=`>g7j?$_f0|Of#lCw zP6?7oo>LsJ1K}$$Bm4)F|IaAT{GWL{gFVoFAie@K!haw>NAB8O!#ZSng#SSDf(+uo z@Pf#ryAUM*fbjv-1E~4faNudR+6wsmj$^;S@npis$HAgb3b_pbou$=05e8; A&j0`b literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_forest/brawler_green.mw3 b/worlds/smw/data/palettes/level/grass_forest/brawler_green.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..95f0342de0ce1c9df635f7bde15a3c997e852a8a GIT binary patch literal 514 zcmZQzxLf}~AVG48;0r+=q4i>uiy0Vx^Sssv(Rb_XbwT9+dIp9Ebqe(j^$+Sn;;XCv zgX!6F_0}MH28QD@x{5C(E4=!d7#KjRb%ewi7BefLLl?e0m%G9Ui%uL zYlQzZqsv0{i)+X`Xu7VA6iCCA2iaH13-U{RvTOtwgS_Pt7Y@II^lb+BO+n^?xjQ$0mPN#Zz~!Zm^PsJ-RH&y~?UbOjYgL+@AZ%JD|&#YXbn;Pke;{ literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_forest/crimson.mw3 b/worlds/smw/data/palettes/level/grass_forest/crimson.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..9f56757809fe1820e702f06d645f8ce224f5e40e GIT binary patch literal 514 zcmZQzxLe;Xa7p5aOoi$UKk4|%#S9F;d0y*-=)3jxx*!rF?_~Ky=7$VOe0A0TdJsKZ zuHG6X&%od#8RFC}a3k!83o`lMQd6l%j{yUK>@VcCulXeS zOHEQ9LmKQpaSeF~4c#oq)1jF1Ao~h=L4Ju(mW|+IkheVI!r@ntzRlpi>3?R3d(K%- z2?Du3UI)TgU`F^4r2jvoJoA6%?F{xn|AP1m%n1L1_#C-wa}Dc|&7vrY53CcDz)Vg`oaJg@aZ^xgV;T@d-do`K;(okD#>{eyat`0A?v zV0yM(y){Ulfnlk{a}{?@4qXi`1_qF71!ge@d4_t%`AiV`Y~A;^#eNdWbAY-b^0g*% zq5o6mt3mSTEEyOil1=KT*8c$Ng~&HBf0X~p{NEpkC>|3wYfd_lXpOu*DwMAbVPdZ literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_forest/electro.mw3 b/worlds/smw/data/palettes/level/grass_forest/electro.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..de452a8a7a46b9e7dca029c831d912474bda31fa GIT binary patch literal 514 zcmZQzxLdzW$J_S2XGqk~tlIL)#S9F;d0y*-=)3jxx*&3y&T)g|CNC^FZ8;r5;;XCv z*MsQUa`o0Ac?O18Is##NJ{4(K5*Zl&1NrK5Vhr*O^^EhGAo3>^dQFYIzQ@f0>VnAE zn#hIzPnE9*$)B@iV30^Qsh?W^1E?1w-@yD){wMQ)e~A9=M!(Y+^Qz0O)?&Z_Ao~k> z?Q25SuJiq8#*hZPPh3OZLDRKA6y!d10J5);7vz`tWZ4KV26@XPE*yRZ>DvtMn}W;( z$)B^F5+sp4r#M~*!dGBM_zxuipHZIqKl645d!TyYIU{sYNx zV5wk{XMo6KbKe8T2TTv3=3|pTs^Y1;RySBl!X8}~rESI7VW D=qrJ* literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_forest/geo.mw3 b/worlds/smw/data/palettes/level/grass_forest/geo.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..ac56278a9fc417e061935f664ead05f4f6eef3f3 GIT binary patch literal 514 zcmZQzxLe;Qa8l%xYLwY-t3Otgiy0Vx^Sssv(Rb_XbwMOV-pR60_LC||e0A0TdJsKZ zuHG6X&%gjP;g1yq!+#*3UrUTZo}r#`J`+SfTlc+fv7bcp9H1_Ue65LG=>JstYLNUn zO9lps(w7lPy= ne#b3;RK-(wt!}WAggv@$kb9I>kC>|3wYfd_lXpOuU!w>BobP?s literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_forest/miku.mw3 b/worlds/smw/data/palettes/level/grass_forest/miku.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..ae136ce4da1dc41fd38e6955dd9522169e989224 GIT binary patch literal 514 zcmZQzxLcpBdPLXNZbO(!@{Hoi#S9F;d0y*-=)3jxx*#%HHOG}wLO8uAWqmOOqNlQ88$_7(Di{1Trm8^OgOZ+XOp!>=HHo56ikka-~a zbCy$rK(3G1f$$ZW5&i?o|7VnE{?ELf!5-*e5MO~A;Xe?cBX@1CVI8tO!haxnK?ZSP vctPaRT?mqg_#LAtzPcCy7&m`I literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_forest/myon.mw3 b/worlds/smw/data/palettes/level/grass_forest/myon.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..9882b7f90c2f711a3b0a529545842073f03e15b2 GIT binary patch literal 514 zcmZQzxLe;UvrOlt&0C*O5h00_iy0Vx^Sssv(Rb_XbwT9+dIp9Ebqe(j^$+Sn;;XCv zgX!6F_0}MH1_m|FbfcvT`R1CI3=AOE3d~{*@(lHi^O+#>&vmkG*Sb!Ln*-Dhk*_t8 z3;mxeUk#GavSnb{npRY0Ts;G*7b4%l{89cV^M8Mc{_RG;(^uFkFrVXRzyKio-;3DS z{8as?_MaI;8tlHw7Pmb(bh88XvoPgB_7(Di{1Trm8^OgOZ+XOp!>=HHo56ikka-~a zbCy$rB$DS8$Lqk{hwvXre!3yZ?#Ti&d@y;0|3LB@u4{8A)*;Iy{0EZvR}p8BXN1V3 vyAUM5!uA2vIey&oM^!v^*XjlSFXXka0lG%` zKMr|u4S5Gm*R_!XX&BnU_7(Di{1Trm8^OgOZ+XOp!>=HHo56ikka-~YoU@z~B#}I) zI9>+_kxeb;$Av|AFKM8N`9%1(8R0AxQoK r;{&D#Q1h|LA64#(3v!RL>Jd{_yEeDye)10J^1t%|$76jg literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_forest/original_green.mw3 b/worlds/smw/data/palettes/level/grass_forest/original_green.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..8aaf89fc91ecb7ab4f7b43725a3eebf94bf85563 GIT binary patch literal 514 zcmZQzxLcpVxrFfrqYl$Vrmswsiy0Vx^Sssv(Rb_XbwT9+dIp9Ebqe(j^$+Sn;;XCv zgX!6F_0}MH28Q*#m3j|UWwaHT85lsS6_~{sKuLjAVvt(e9NH(dTTK@y67b4%l{89cV^M8Mc{_RG;(;1i)m>&SmM+YGL3wiBp zfUXh#k3(KuL*7Btb#0_T8oF+XeTBRrzr-iYMsP96TOM)Y@GD5)W^msWWFE*p=PaiL zfm|Q219Kn3e<1n)jPlI?nYT081O1EcKM96M^!v^*Xjl zf3W;7Mv#l<0qv4y8QeDo znFn&uIm;`=%iCK<+tbIVDIU zc}{V>4ur43jPM^w{y(EU^MB^;4E8|(g7^x|2>*fj9JyJd{_yEeDye)10J^7Eqsy$ylj literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_forest/snow_dark_leaves.mw3 b/worlds/smw/data/palettes/level/grass_forest/snow_dark_leaves.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..96aaa72c834354ae65261fa2b194b736b00e3eff GIT binary patch literal 514 zcmZQz*jxTgMZ?zHwLkKGY-Qf$Vg`oaJg@aZ^xgV;T?U|hrt6#7O+^qAB)+=pe?5qv zEmv<1l3yzEUShjuQCzg!oN@^Nq*<{{l#YyPycCGfz~E_m*0nI~dm2LiW`=F4T#;=x zNPeyDQVEOfPerBWJHh;=5+}`+{ZE*`7ylg&F>kxk@AT)oC(Tv??L!A3`wMyPYbxYy z^yeC*%R=`JGS(hX3^p3<}I*4Dt;1jPscw@{xRT%KOAk1?MTj{r(D3I<=M%d2|^C>FaA3mV%~P6-|5eFPnxX)+J_E6_80Qn*Hp;a z=+8Aqmxbt`X(HpO>AE&jAPu|x2EkiW^PJ<8Wh1y4Khx$i7c15gq z8M1r>^GErg%>Vr%`u!E6bZRXj^5`xE`L9{AMJv@9xBO8RPu;b;!AcVL=(-{1>xX{G Qomga4UJZ0VDyXUk0F(`nS^xk5 literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_forest/winter.mw3 b/worlds/smw/data/palettes/level/grass_forest/winter.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..4bfdc7a168672fa1559dda134f9b94e7a52329ad GIT binary patch literal 514 zcmZQzxLe=tdd8POEHG+n+RviN#S9F;d0y*-=)3jxx*+m@Jp;poI)(a%`UmwO@zquT z!SrmodTWq81B13>aMJqF;Od<~Hb`}FwHSjuLp|esCW!n4-3LMSqVY!d-Z1%E6S>g; zsq)nz`E!;G3=+ww%8>OpFn^T)$^73RqW@>n{B)Q+0~!F?U&w1;19Xk>e`YjEAQvPr zt|9MmQMJtMrW2+-$i0QUAiu;X%SLc9$Xgz9;qWU+-)3;%6l5Mq{+#8MAc^ET#ql~2 zz5+ACe<1n)jPlI?nYT081N{r)D=;Jc2jX+&uFW;9LzYMQ4Kvt1pwb3iaKYGRN5WW%fRhBqbdA5IS5Pq)iN83_A$>g~}wIKCI%ySfCY~}py z(?RC1H)UY>88_ESF1#MdhsX!9|KR?|zCRqo4^#V{&c$TJ{DqkT1Ax_Y+Sgbs*-Ovo z#*hY^ca6oCRoAsYQYa0(d?0VM(toS?WZ4KV26@XPE*yRZ>DvtMoBjvd2Qq)XDa7^m zsxbGV`cIDS9$UQd6%IQon0&2?TSolGj921Dx8LWnqL%eTA}NPnEz5SPf1kSQvR0&y8J#X0HbqwMF0Q* literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_hills/brawler_green.mw3 b/worlds/smw/data/palettes/level/grass_hills/brawler_green.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..612dcce98c7e3a8d3af8774ca257640fb30e7d09 GIT binary patch literal 514 zcmZQzxLcnf(5kUq_qA%jlYacVG|mo-J2z z4U%VI==U@ZyPg(Z{2R#r55yKW%Vf#h3xvUT6v`WhK}-$;hZ*P6(M{!f*! z2FahZWMGg;HmRRl{{ybSf%&8SPv-yr5dGVYey1@VcCuK~J7_&*ML zaSeF~P1m)N0%_YB?164V1|atq@`C&lpDY`}#UO8a#D&AJAbp#`eN&KmAo+8aQ-UOt z=M=~5K==yG2>*fP|1-)n|7V7n4dN>>Bm4*AbL6hgHLOFHNB9pUFUTMc3@=Q#f!qm_ vf57;F=>gPyWVgfQkE(d;uGI}zlCVdY1?g8-Jz}bA*XH)zPu>At{#rBuHX?(a literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_hills/crimson.mw3 b/worlds/smw/data/palettes/level/grass_hills/crimson.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..9f56757809fe1820e702f06d645f8ce224f5e40e GIT binary patch literal 514 zcmZQzxLe;Xa7p5aOoi$UKk4|%#S9F;d0y*-=)3jxx*!rF?_~Ky=7$VOe0A0TdJsKZ zuHG6X&%od#8RFC}a3k!83o`lMQd6l%j{yUK>@VcCulXeS zOHEQ9LmKQpaSeF~4c#oq)1jF1Ao~h=L4Ju(mW|+IkheVI!r@ntzRlpi>3?R3d(K%- z2?Du3UI)TgU`F^4r2jvoJoA6%?F{xn|AP1m%n1L1_#C-wa}Dc|nnBd23UT5b8{Vg`oaJg@aZ^xgV;T@VSA2dM#xude!E529zw)mww) z85mya2!!SNRHR)=WMKFYpk9c41M^4upUnULA^Nu){Z3!Zt1h=%iva_G>@VcCuL)JV&i9`g zLmKQpaSeF~P1pWVko(X9$i6~ekYD1HWh1y4ehUx69nKaf1c?(GcrK>vdH3d{)qf%p)+k>wHo1Ice-sbG<3fXHKW-vdUF-*L+y jRq@nas~fB&VUMmGrESI7VWUfF&r literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_hills/geo.mw3 b/worlds/smw/data/palettes/level/grass_hills/geo.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..ac56278a9fc417e061935f664ead05f4f6eef3f3 GIT binary patch literal 514 zcmZQzxLe;Qa8l%xYLwY-t3Otgiy0Vx^Sssv(Rb_XbwMOV-pR60_LC||e0A0TdJsKZ zuHG6X&%gjP;g1yq!+#*3UrUTZo}r#`J`+SfTlc+fv7bcp9H1_Ue65LG=>JstYLNUn zO9lps(w7lPy= ne#b3;RK-(wt!}WAggv@$kb9I>kC>|3wYfd_lXpOuU!w>BobP?s literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_hills/miku.mw3 b/worlds/smw/data/palettes/level/grass_hills/miku.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..49c78fadba25456b64c583e363d2952b1b134ede GIT binary patch literal 514 zcmZQzxLcpBn&#vYogXBUJfnDWF$2SIp4a*y`fh!_E{KH4J6U=}dqji8S6BV72hp?T z>a9WY3=Bs^jwz^E@dHg^VE7N@zwr`dkY}i8oX-T2&(?i!TkI#1JO`)?B42AF7y3U{ zz8WNd&XR#aBH5&VYW)wOUWj}H^GErg%>Vr%`nMbXPFGQSSFXXkasZ_HO z|Idse4R)WnhP;EDC6C|6BusgbeTBRrzr-iYMsP96TOM)Y@GD5)W^msWWFAQVoaK}t zkn7`hAbbU8g#SSD{~6_(|1)oAum}1V#8+TO_z%SA$X%OjScfc+@E=HCkU<<6UJ!Y7 r7lPy=e#b3;RK-(wt!}WAggv@$kb9I>kC>|3wYfd_lXpOuuPz1v|F?d% literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_hills/mogumogu.mw3 b/worlds/smw/data/palettes/level/grass_hills/mogumogu.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..88af74ceafcba91876e6e5fa21300926b8c484cb GIT binary patch literal 514 zcmZQzxLfb*xiQhCsIu%SoK;TZ7~o z7>>zk8gkqIEDFkGVE7N@D=>>O$TQS4&S!$iKUeX#?GG$XvI6Rc$k&?4h5k>KuLj9; znldnyqzR>6D%%0n3z2VN{wV*G`M*Cz|8}F_>CY`(!&1B%FaXH@_b&D|5rK2v;)F4z z!S1_g6J`5c$H(^y(0%9tWM3gK$S?89vJqSi@|H(jIQ$CIw;9|w{m%?>56Jx>*GoCV z+=uWVNdJ2mDW^E$i#pLpFnNUkK=RKGa$`T{BFiKE2a-RfBkX9U36aOK|oLtPn@SEqgK8U_sU$4u6MSgYF|9X)8Y`J=CkSYd-lM2O_$)*x+ z%~lKy|ABl3W-$hNhI+>NOc42O-S@V|eiF%ZfVv>^wI*_*|5N3wLGtG;85kszP3ouC z{{ZTR$Tu*5l>f>6-yfoXyV39T2aF2L511J+0LcDAUi%uLYlQ#fkQdjGchGcQ8!3>6 zp&e{rAuq@;@yW6gTnzG-M_f4k3evY3+&2Z82XfCj%PB!1*T?I?+=uWVNd7;gJoA6% z?F{xn|DyX3#OKIen`>ByERXOXNM4XZ92i~@d2|V?QRFn^T)$^73RqJO*5?{o$x1?C4p^U(pw{z6{+8lY>0|KpGs z*N}J6bX^-MkcO@sVqYOI$S?89vJqSi@|H(jIQ$CIw;9|w1(^qO&pFE}K_J)1>%iQH z@E=J2KchVJf9CBB_CWul`wztD$X%OjScfc+@E=HCkU<<6UJ!Y77lPy;Fg{><05u<* k{81H8-L<;GN)q;s~#~`wQF;G?kDenF5eIf0B9I`(*OVf literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_hills/sakura.mw3 b/worlds/smw/data/palettes/level/grass_hills/sakura.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..6c65dc4ff010fd8050c2c46162422816227149e3 GIT binary patch literal 514 zcmZQzxLa=+I5qM|tWDbdEcxQe#S9F;d0y*-=)3jxx*!rF4LkgXr0E_0}MH z28NfSg4$C8rkl%_F);iG@*gmXF~~F2GtOs%$fq0d#coP9&AM3xldm^GErg%>Vr%`nMbXPJh7ofaw7<0|o%uU&w1;19Xk>e;o4S z8uAXBu4^L&(lE4x?JML3`6WJCHiC;m-tveGhhIVZHiP@7AoD=(IcGT~NFsSoal8(M zufUA(A4vW`qdfC}=IspjK>vdH3d{)qf%qJ`YjX|jkmV8n1IY_Ahy%k5B9HDukUYfi lxaE(kc*5b`%OY)j>eY^y=?Yi*ZG zSY&@HDlOj$<}Z~vX{PLd!u-AX?{J8D+l_vwKi55JwhCw;Isn;U$ZKCyA!nmM*BD(E zqJO4|jH9OO+DL&k?D87~Z%NH_j!%}2;9`)sJmSLPSCGEV;J)d9W{CcGu3O?P^Q+76 zgfcMvuV-LTU>0MLXQ*eK&jgW=AjnAa9RB1Vg`oaJg@aZ^xgV;T?V*3L={MUb=CiR5ItM2-Wnv& zz+l8Ui_uNcUg)JH1H=D%28NfCVhr*O^^EhGAo5NPewpkk_@S>U>)j z2w#C2;Xjc49mYFM)y&%%WPtt!@fDa6{sZxka={cOgiA s0b>JG0@QqL@<&xXb=T?!D@oX+%Yxjata`*$)vnF$xu3iPx_pHd0O>G!F8}}l literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_hills/toothpaste.mw3 b/worlds/smw/data/palettes/level/grass_hills/toothpaste.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..7c108ae348aef9e50761a7f0a7d74da10b299434 GIT binary patch literal 514 zcmZQzxLf}|Bq;T2Wd&P zAbAD`1NOb~f5&9$ZiPS>I&l40_-CUT+wQ{}56 z<})w^r54wO)kf99`=*fndx!B3Q#JE81{t7#L3{;fg#SSNV>#KG=W3DV5&i?o^D~GtNHaj>(On3VU%=SF plmIm!oBUA~Pu;b;!AcVL=&~U9D61YZRkdq#d+sOifG!^w2mod`f?5Co literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_mountains/brawler_lifeless.mw3 b/worlds/smw/data/palettes/level/grass_mountains/brawler_lifeless.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..684a66f28853e98e0b5c1eb51bfcf583f2e5f1b4 GIT binary patch literal 514 zcmZQzh$wz3!>#D6nx{EIca!PlVg`oaJg@aZ^xgV;T@d-do`FH3zM=jB5Q4;4SN#Xm zv*qfoLGla?7cGUI&S`EBGcsae0IA+$CB`7nP|rA@2_m1Z``)(LPa=5^P&Y)r)n1JHimI0lA^X`iZ0sw;qcA@U8(ALV~C|M!RJ-){6fz0hcj)i*Z=3;?pfkk`Hj z=o;bw%ox&O_laxBJ7~JDjTA`3ln2>Y$P4mIe6nl=7lXXz5f=`>g7j?$_f0|Of#lCw zP6-0JK3)gHS71i?4%U6}4wz0IB9x5@V2OsArtd1d-3yeQ#UrCy_h{s2d_*Ya$o= zKUKb(f#FvDIZFlxiDZ*{rZDYtn0y2CNBN)3|NSBQw;TOVhq#de1Ay!=x<>dv zGln$Sec~GO4w|lOBL&hh`=%iCK=S7-rv!mq zAFl)9D=;Jc2a^BKD9`+#c{_tW(7zzQ0yDyYAU;R#+FZjrWO;=DK=OhN;=u5N$fLUu uB>#Z%0n-Dh`Pk%-s(9+I)eTmXut%2#xkp*`h^eYwo7;0gc?WcPgE#o`lMQd6l%j{yUK>@VcCulXeS zOHEQ9LmKQpaSeF~4c#oq)1jF1Ao~h=L4Ju(mW|+IkheVI!r@ntzRlpi>3?R3d(K%- z2?Du3UI)TgU`F^4q#tDWf9CBB_CWuF_zKJj|AF`ryOHG){sYO2F^B`h3nGv1LXbSf m@3`fUs(9+I)eTmXut(Poa*wj=5mQyWHn-<~@($?oFC+lnf__i{ literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_mountains/dry_hills.mw3 b/worlds/smw/data/palettes/level/grass_mountains/dry_hills.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..1819ad964865c1ad6d70e063ef14c7ae13a26ec5 GIT binary patch literal 514 zcmZQzxLYr*RIatt>X%zg_`LMV#S9F;d0y*-=)3jxx*+m@Jp+S6eM9{NAOwl8uKEwA zXUo-FgX9?)d^s=i){9jL-8W)j0IB}vCdMGoP|rA@2_m1Z``)(LPa=5^P&Y)r)nNdBB91A|1eN&VFNA3(hj`3B~X@;{mX`$P0^H~O6paUlZ+0NG#2YhMF&jqrbF z3~8|Y#5Lp{G+oz53Z!AmgX}Bh1^FdDSvG=;LEiF+3x{7p`Zk06rXce`^5-n41c6*1 zuLI#LFeCg2lK;;r&-|ZxJA*yYzaYK>Gs1r$K1c4_T*EqKd4&H!@`4QF!0>{|qq`6! t|A6rU(*vma*yN9@cnnBd23UT5b8{Vg`oaJg@aZ^xgV;T@VSA2dM#xude!E529zw)mww) z85mya2!!SNRHR)=WMKFYpk9c41M^4upUnULA^Nu){Z3!Zt1h=%iva_G>@VcCuL)JV&i9`g zLmKQpaSeF~P1pWVko(X9$i6~ekYD1HWh1y4ehUx69nKaf1c?(GcrK>vdH3d{)qf%p)+k>wHo1Ice-sbG<3fXHKW-vdUF-*L+y jRq@nas~fB&VUMmGrESI7VWUfF&r literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_mountains/geo.mw3 b/worlds/smw/data/palettes/level/grass_mountains/geo.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..ac56278a9fc417e061935f664ead05f4f6eef3f3 GIT binary patch literal 514 zcmZQzxLe;Qa8l%xYLwY-t3Otgiy0Vx^Sssv(Rb_XbwMOV-pR60_LC||e0A0TdJsKZ zuHG6X&%gjP;g1yq!+#*3UrUTZo}r#`J`+SfTlc+fv7bcp9H1_Ue65LG=>JstYLNUn zO9lps(w7lPy= ne#b3;RK-(wt!}WAggv@$kb9I>kC>|3wYfd_lXpOuU!w>BobP?s literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_mountains/late_sandish.mw3 b/worlds/smw/data/palettes/level/grass_mountains/late_sandish.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..ba4414911b6e016c97872ce0f20eb3b05b12e6e4 GIT binary patch literal 514 zcmZQzxLdzT^Q*48QI**pD>?hg#S9F;d0y*-=)3jxx*+m@Jp+S6eM9{NAOwl8uKEwA zXUo-FgX9?)0xh?jez%Ntit%S)0I4=$7GscSsArtd1d@LtqiZ_J@r&b*u$p|Be65LG z=>JstYLL99Ap=8k+-##b@BPUz`3B~X@;{mX1I+`OFRcDMoq@@Kc{Vcx1^~$i2-?>~ zDb)-AH^-0$>lfFMcX)0wA-22-Qy%2rLSB$x;*(_~xESOukGOF76{K%7xNrI&Xdg)a zoaK}tiR3xO@j4K`0+Rng^8Xp-ng26yXRrtQ7sOX!M)(iJ=g3`~YgmUYkMJKzUXVc? w7+w&0bQgl;A%4d#e^kX&cdc%)l7v0FZjgJFRgaje+O@eo_mg)(m;Yx502tSN`2YX_ literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_mountains/miku.mw3 b/worlds/smw/data/palettes/level/grass_mountains/miku.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..ae136ce4da1dc41fd38e6955dd9522169e989224 GIT binary patch literal 514 zcmZQzxLcpBdPLXNZbO(!@{Hoi#S9F;d0y*-=)3jxx*#%HHOG}wLO8uAWqmOOqNlQ88$_7(Di{1Trm8^OgOZ+XOp!>=HHo56ikka-~a zbCy$rK(3G1f$$ZW5&i?o|7VnE{?ELf!5-*e5MO~A;Xe?cBX@1CVI8tO!haxnK?ZSP vctPaRT?mqg_#LAtzPcCy7&m`I literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_mountains/original_aqua.mw3 b/worlds/smw/data/palettes/level/grass_mountains/original_aqua.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..49d25d7d407feb367ed6cfa1bd67e2f9a30c0066 GIT binary patch literal 514 zcmZQzxLfaO)$MfFi$6FpdUEpQVg`oaJg@aZ^xgV;T@d-do`FH3zM=jB5Q4;4SN#Xm zv*qfoLGla?>v=2n9;nJ_D=;%KfK@Y#F~~F2GtOs%$Y<-mw=MRQNS*`K4Uw-kkqiBw zDqjtfKWE9nAdzfRKehe`&@7021M^4upUnULA^Nu){Z40KQeb`nG#?#+>@VcCuK~J7 z_&*MLaSeF~P1m)N0%_>FA@&vWg8UMnEE~baAa8lZg~P8PeVf63Q;>Ne_nfnw5(IL6 zybjEL2>*fP|1-)n|7YILU=Q>!y8l3Yj@-4mhIPpD2>*fP1sTMF;RTULcOgjr0pkOv o2T=2|$sbkm)Lp9^tR!KNE(>yxvg#32Rl7E~=YH}I=<>hw0pT-!J^%m! literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_mountains/original_blue.mw3 b/worlds/smw/data/palettes/level/grass_mountains/original_blue.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..d40de7e53e7d25cbb019ad3bf560f854aa2cd8ef GIT binary patch literal 514 zcmZQzxLfaJ$q{reODH)sdq(l(Vg`oaJg@aZ^xgV;T@VS8hmaug)m8uNLG*07dTWq8 z1H*dWO1%fFGTI8v3=IE)dV?QRFn^T)$^73RqJO*5?{o$x1?C4p^U(pw{z6{+8lY>0|KpGs z*N}J6bX^-MkcO@sVqYOI$S?89vJqSi@|H(jIQ$CIw;9|w1(^qO&pFE}K_J)1>%iQH z@E=J2KchVJf9CBB_CWul`wztD$X%OjScfc+@E=HCkU<<6UJ!Y77lPy;Fg{><05u<* k{81H8-L<;GN)q;s~#~`wQF;G?kDenE#0BBTt`~Uy| literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_mountains/original_green.mw3 b/worlds/smw/data/palettes/level/grass_mountains/original_green.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..8aaf89fc91ecb7ab4f7b43725a3eebf94bf85563 GIT binary patch literal 514 zcmZQzxLcpVxrFfrqYl$Vrmswsiy0Vx^Sssv(Rb_XbwT9+dIp9Ebqe(j^$+Sn;;XCv zgX!6F_0}MH28Q*#m3j|UWwaHT85lsS6_~{sKuLjAVvt(e9NH(dTTK@y67b4%l{89cV^M8Mc{_RG;(;1i)m>&SmM+YGL3wiBp zfUXh#k3(KuL*7Btb#0_T8oF+XeTBRrzr-iYMsP96TOM)Y@GD5)W^msWWFE*p=PaiL zfm|Q219Kn3e<1n)jPlI?nYT081O1EcKM96M^!v^*XjlXiy0Vx^Sssv(Rb_XbwT9+dIkoC`iA-kKnN0FUG*PK z&z7sV2FWuptmm!Nd!Q<#t-#E{09MT`#vsp7&p4k6BA>1M-nQ6JB6$u_H$=YHL@xAy zs(dv_{+uNPgG91P{nYv&K(iq74a^_qe=`5~hv?sK^gEq_NrCwR(0p_NvcHhmz6R(T z;r}?~#Wmy|G+oz53Z$XyhS*og3-U{RvTOtwgS_Pt7Y@II^lb+BO+n^?+;h%yN)X8P z@j5W~A^ZoD|IaAT{GWL{gFVo{=>7xoIda$L8rC7pBm4)F7i16zh8IL0-Gw0e2aFGx p9ze~{o9RxryrG7VE(`jG6@xc>@VcCuK~J7 z_&+nM9Eb;!7uS$?&~#lJDUgOK53;Y27vz`tWZ4KV26@XPE*yRZ>DvtMn}W;($)B^F z5+sp4r#M~*=01e~K=S_?<(dC8Z)dOv`WNDUg#SQ%j@-4mhIPpD2>*fP1sTMF;RTUL ucOgjrsO$r#58QaIN%G*rV$Pxkp*`h^eYwo7;0gc?WcP;c5Ui8hnoc literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_mountains/sakura_hills.mw3 b/worlds/smw/data/palettes/level/grass_mountains/sakura_hills.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..03b98147f8cb1fed52aeb07856db3b0915b8e6a9 GIT binary patch literal 514 zcmZQzxLaQnxF_^aq)l9H+P}QX#S9F;d0y*-=)3jxx*+m@Jp+S6eM9{NAOwl8uKEwA zXUo-FgX9?)0tA0Z+Qe1s?aN|d0IA*+D#jqsP|rA@2_m1Z``)(LPa=5^P&Y)r)n14DfIIZFlxiDZ*{+oXSaF!=`NkMcj6|NBGq+ZF##zwNRov^I?a1Ay!= zx<>dvGln$Sec~GO4w|lOBL%SN2f3$^7vz`tWZ4KV26@XPE*yRZ>DvtMn}W;($)B^F z5(IL6ybgq~z>M%8Nd7;gJoA6%?F{xn|AP1m%n1L1_#C-wa}Dc|aNudR+6ws*9~%yvg#32Rl7E~=YH}I=<=&=dvIqNPKnG|9TKT zTdv+3B)?SRy~K9SqPS?cIpq-kNwZ>^C>FaA3mV%~P6-|5eFPnxX)+J_E6_80Qn*Hp;a z=+8Aqmxbt`X(HpO>AE&jAPu|x2EkiW^PJ<8Wh1y4Khx$i7c15gq z8M1r>^GErg%>Vr%`u!E6bmrPZ9yc+0!R8Un70O(34}cIPzPjo^ zn4T?HZ_U84A1G2JSZ(x*@sD0HJA`krELLe#Xspk_)c~@*(m;>_52wvF{Iu@Wa%8r*knGF@IrZzyM(Noc1-= zO7_z8xiO@{=3Qg4Wz}``=o`lMQd6l%j{yUK>@VcCulXeS zOHEQ9LmKQpaSeF~4c#oq)1jF1Ao~h=L4Ju(mW|+IkheVI!r@ntzRlpi>3?R3d(K%- z2?Du3UI)TgU`F^4q#tDWf9CBB_CWuF_zKJj|AF`ryOHG){sYO2F^B`h3nGv1LXbSf m@3`fUs(9+I)eTmXut(Poa*wj=5mQyWHn-<~@($?oFC+lnf__i{ literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_rocks/dark.mw3 b/worlds/smw/data/palettes/level/grass_rocks/dark.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..83a8b098d4fa751b8f46b7d50cdf408728ea48ae GIT binary patch literal 514 zcmZQzxLcnjvQ&gavByxrX-d%KVg`oaJg@aZ^xgV;T@d-do`FH3zM=jB5Q4;4SN#Xm zv*qfoLGla?Y^olHt8CwR`Uf#EfK;=ni807C)HBX!g2+G6eGpVH8gFFp4U?}mkqiBw zDqjtfKWE9nAdzfRKehe`P%lJ(1M^4upUnULA^Nu){Z3DoWKnx+#()7p_80Qn*8p83 z{GS;^8tguC4S5Gm*R_!XX_)dL`wDqMeu+<(jo@OCw>;v);a8Bp&EUQ%$UKnzIm;nnBd23UT5b8{Vg`oaJg@aZ^xgV;T@VSA2dM#xude!E529zw)mww) z85mya2!!SNRHR)=WMKFYpk9c41M^4upUnULA^Nu){Z3!Zt1h=%iva_G>@VcCuL)JV&i9`g zLmKQpaSeF~P1pWVko(X9$i6~ekYD1HWh1y4ehUx69nKaf1c?(GcrK>vdH3d{)qf%p)+k>wHo1Ice-sbG<3fXHKW-vdUF-*L+y jRq@nas~fB&VUMmGrESI7VWUfF&r literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_rocks/flat_brown_green.mw3 b/worlds/smw/data/palettes/level/grass_rocks/flat_brown_green.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..d0bcb80536b2f898c4f1017d85e789fbea45bb63 GIT binary patch literal 514 zcmZQz_)(vyg@BWb85n-^yw(TNckAnQLFE5>28IW93iS>359&eUtE>Kl>DhAi)*yKS zMg(MF0I61B7GscSsArtd#K1787#YIkYfa=r|EJ1VGXU*BXUV`Ik^G|`1Yz~cY$^m@`C&lpDY`}#UO8a#D&AJAbp#`ebfKU zxZIEMpFA@%gt;H#zqPr@5GIfCpDZsj#B|@3EM$l&k8Ha<(7ov3f4#Em5mQyWHn-<~ K@($>-)%gI>gnA1A literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_rocks/geo.mw3 b/worlds/smw/data/palettes/level/grass_rocks/geo.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..ac56278a9fc417e061935f664ead05f4f6eef3f3 GIT binary patch literal 514 zcmZQzxLe;Qa8l%xYLwY-t3Otgiy0Vx^Sssv(Rb_XbwMOV-pR60_LC||e0A0TdJsKZ zuHG6X&%gjP;g1yq!+#*3UrUTZo}r#`J`+SfTlc+fv7bcp9H1_Ue65LG=>JstYLNUn zO9lps(w7lPy= ne#b3;RK-(wt!}WAggv@$kb9I>kC>|3wYfd_lXpOuU!w>BobP?s literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_rocks/ice.mw3 b/worlds/smw/data/palettes/level/grass_rocks/ice.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..0cae771e4296b0d0ac3cd7720822aaef943a6079 GIT binary patch literal 514 zcmZQzxLeO;+3w06)E_639#K5Gn1SIp&ue`UeYd_|7eqQ)as-{rf{-Bb)m8uNLG*07 zdTWq;kMG*V_nAReTY=&X3?R&+CdMGoP|rA@2_(n zNdBB91A|1eN&VFNA8`2w=8y6}ng9Dk^lvx%ot`YoqW08`0Rw={FXXka0lG%`KQo3j z*nV*hc?V6`wUGj8nDQX^7V?7p5}zy^!NnkNdBlaouONM!!F^MZc_8_7mQ#WxlIIl1 z>p=Jl%n1L1{mdxO{GWL{gFVo{Aie@K!haw>NAB8O!#ZSng#SSDf(+uo@Pf#ryAUM* rfbjv-1E~4faNudR+6wsmxZ`zovxAHHm{#SpMma21uZ5336Ot$ literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_rocks/miku.mw3 b/worlds/smw/data/palettes/level/grass_rocks/miku.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..ae136ce4da1dc41fd38e6955dd9522169e989224 GIT binary patch literal 514 zcmZQzxLcpBdPLXNZbO(!@{Hoi#S9F;d0y*-=)3jxx*#%HHOG}wLO8uAWqmOOqNlQ88$_7(Di{1Trm8^OgOZ+XOp!>=HHo56ikka-~a zbCy$rK(3G1f$$ZW5&i?o|7VnE{?ELf!5-*e5MO~A;Xe?cBX@1CVI8tO!haxnK?ZSP vctPaRT?mqg_#LAtzPcCy7&m`I literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_rocks/napolitano.mw3 b/worlds/smw/data/palettes/level/grass_rocks/napolitano.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..9086fd88dd3df2e70b60869f982b28641e996fcd GIT binary patch literal 514 zcmZQzxLf}#);euY*4;eW^0?~B#S9F;d0y*-=)3jxx*+m@Jp+S6eM9{NAOwl8uKEwA zXUo-FgX9?)%;jXQxdrd1f6-)M0IOyeV~}U4XPnOjk$<53AgEq6-pJk?CSPkJ7y3U{ zz8WNd&XR#aB01iBe)#`nn0y2CNBN)3|NSBQw;TOVXJArbe!$Ft0YLT_^4iw`T_gM- zhrGCkyo09e+DL&k4DDd|7V?7p5}zy^!NnkNdBlaouONM!!F^MZc_9Csvz!tnkvyk3 zUI*qrg#SSD{~6_(|1)oAum}1V;(vtyKzxqewYi3M$npsPf#d}l#DU=jkwv=2n9;nJ_D=;%KfK@Y#F~~F2GtOs%$Y<-mw=MRQNS*`K4Uw-kkqiBw zDqjtfKWE9nAdzfRKehe`&@7021M^4upUnULA^Nu){Z40KQeb`nG#?#+>@VcCuK~J7 z_&*MLaSeF~P1m)N0%_>FA@&vWg8UMnEE~baAa8lZg~P8PeVf63Q;>Ne_nfnw5(IL6 zybjEL2>*fP|1-)n|7YILU=Q>!y8l3Yj@-4mhIPpD2>*fP1sTMF;RTULcOgjr0pkOv o2T=2|$sbkm)Lp9^tR!KNE(>yxvg#32Rl7E~=YH}I=<>hw0pT-!J^%m! literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_rocks/original_choco_volcanic.mw3 b/worlds/smw/data/palettes/level/grass_rocks/original_choco_volcanic.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..2bb11d9b0f131fc17e79fd9af09353f3161520b6 GIT binary patch literal 514 zcmZQzxLeP_a8$)pcdc%)l7#)_Vg`oaJg@aZ^xgV;T@aZd&?vE3=7|iarnf3ce0A0T zdJsKZuHG6X&%kh!!%yFayJXAYXx5j6t5Eo^d`CME-;br)-Yqc~c`Nn0&2? zTgH`w;#E$^U1RXa3K;oxvXHUx@n={sZwja@Xb>)*;Iy{0EX3WDp027epT2 og&_F{j1QO|K+VS{kBC2XS&(~_Rgaje+O@eo_mg)(mv4v#0QBT|V*mgE literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_rocks/original_ice.mw3 b/worlds/smw/data/palettes/level/grass_rocks/original_ice.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..6d570af3d75d2d5b81232ceba77415eec47affef GIT binary patch literal 514 zcmZQzxLfaJ$q{reODH)sdq(l(Vg`oaJg@aZ^xgV;T@VS8hmaug)m8uNLG*07dTWsU z`_Qd<-^(oPtLyjHGcf!IVg+U~26={h#`#Pjc?O1)I)09qLo4!R;qtX6a-siI<*PyR z=PVf*B$7?)r`G>~%QrB8l>f>6-yfoXyV37-1||jO2h0o@0Azk4uYC>BHNyXK$ct;p zJ7~JDjTA`3&<=KQAuq@;@yW6gTnzG-M_f4k3evY3+&2Z82lCH3%PBz;$#aV1buj%0 zlK;;r&-|ZxJA*yYzYzZ;{0HK5k literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_rocks/original_volcanic.mw3 b/worlds/smw/data/palettes/level/grass_rocks/original_volcanic.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..3e198a6dc09df05030fc61b50cd358ceffc3ea41 GIT binary patch literal 514 zcmZQzxLdzi!NYKk?Kw*$yKP>Riy0Vx^Sssv(Rb_XbwT7J1y$V)(=O8|DnVfR)m8uN zLGrWZ>a9WY3=BtAJayOV1}jO}Gcf!I@)elH7~~o18Rs)Wy8QeDonFn&uIm;DDF2iBzduC(cB9|v3``2l4}kj70m%MBUi%uL zYlQ#fkQdjGchGcQ8!3>6t{Y-sAuq@;@yW6gTnzG-M_f4k3evY3+&2Z82XfCj%PBz; z$#aV1bzts8_zxuipHZIqKl645d!TByERXOXNM4XZ92i~@d2|<{9 literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_rocks/original_white.mw3 b/worlds/smw/data/palettes/level/grass_rocks/original_white.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..833bee9bf38c18a124c3f15fd32306a4756dcc75 GIT binary patch literal 514 zcmZQzxLbeCPa-@jeop$m{Qu?k&I}9+%n9}N&ikXQjh=Hb0OkMJ1I6ka>K_0hNIs$7 zUK~XKmr-B_$ulsl=dILxpemyc;)7K)i!sPE)HBX!g2-p?DXg)ds*_iCET;s4 zTpzCkb05NgAo>4{^34C4w=>uS{R?qF!haw>NAB8O!#ZSng#SSDf(+uo@Pf#ryAUM* sfbjv-1E~4faNudR+6wsmj$^;S@npis$HAgb3b_pbot4}09V#~T>t<8 literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_rocks/original_white_2.mw3 b/worlds/smw/data/palettes/level/grass_rocks/original_white_2.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..1bca1a820cf9b767f087b33b5f56d2a78a3bb4f9 GIT binary patch literal 514 zcmZQzxLbeCPa-@jeop$m{Qu>Xiy0Vx^Sssv(Rb_XbwT9+dIkoC`iA-kKnN0FUG*PK z&z7sV2FWupyky{2>SHyQ+HS(Oup7cF7$t@ zd^Je^oFxN;M6yZ!)cPMlvmp8#m_N$@Wd83D(ZAj3cRB-;0`miA1`GhQzmV6y2Iv~$ z|2X8uHRK&MUDrkmq+w_W+gHd7@=JWOYy=mByyX!W4!?r*Z3g#ELFR$nbIx)~kVNvF z;&>gH`w;#E$^U1RXa3K;oxvXHUx@n={sZwja@Xb>)*;Iy{0EX3WDp027epT2g&_F{ rj1QO|K+VS{e^kX&cdc%)l7v0FEW|zQbdBt`dHoFf40Jy#Xov*>5X^q} literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_rocks/recks.mw3 b/worlds/smw/data/palettes/level/grass_rocks/recks.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..a65e2f1f6d4a5563a95fb3a6428fc8014bb0b45c GIT binary patch literal 514 zcmZQzxLY3-H#zBYl1O@J_SEdj#S9F;d0y*-=)3jxx*+m@Jp+S6eM9{NAOwl8uKEwA zXUo-FgX9?)j+tl#Zj$ZJj0N(+s+q+Y^3el9(v-gI{*P6(M{!f*! z2FahZWMGg;HmRRl{{v_iM1KSGNBN)3|NSBQw;TOVXJArbe!$Ft0YLUol(es@Qj4{| zAB-UlcAvP0yo09e+DL&kOnH!fg}flY#3#!}a52bR9&zFDD@fmFaNqPl&_0m-Im;`=%iCK<+tbIVDIU zc}{V>4ur43jPM^w{y(EU^MB^;4E8|(g7^x|2>*fj9JyJd{_yEeDye)10J@-ylIj_iP7 literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/grass_rocks/thanks_doc.mw3 b/worlds/smw/data/palettes/level/grass_rocks/thanks_doc.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..1f20f71d65fbd27d414f2093e9c08dafcb874d7f GIT binary patch literal 514 zcmZQzxLeOF86Z1JQCzRmNhW%7F$2SIp4a*y`fh!_E{IGJXp~qi^F)SI(_0lJzPjpv zJ&2wyS8olHXJGI*-R7Gewzq17Is?OhAfH7|j6t5Eo^d`CME-;br)-Yqc~c`Nn0&2? zT8_2KP-t=7HqT zSxyO(NS;$1uLI#LFeCg2lK;;r&-|ZxJA*yYzaYK>Gs1r$K1c4_T*EqKd4&H!@`4QF z!0>{|qq`6!|A6rU(*vma*yN9@czxt5wXt_;_>B0;#S9F;d0y*-=)3jxx*+m@Jp+S6eM9{NAOwl8uKEwA zXUo-FgX9?)PICB3Ue>IzlMQBI0IOyeV~}U4XPnOjkv}2ADVw8t-qgqmCSPkJ7y3U{ zz8WNd&XR#aBH5&VYW)wOSrGjV%pc`{GXM97=-+PiJDq_^f%yS50|o%uU&w1;19Xk> ze;o4S8uAXBu4^L&(lE4x?JML3`6WJCHiC;m-tveGhhIVZHiP@7AoD=(IcGT~NFsSo zal8)9eF*=7yYIU{sYMiGKd4i3nGv1LXi9e r#s^Ffpyp$fKdR!XyH+_oEET;rXB+n_1 z*MYeY;Xjc4e@1!c|IFJN?1BD;_#fdv5T7G=ZLVP*vOL0nAbCLsabS2sIN%G*rUsW+@q{|#8lO;&F#6LyaT%Y{bT^TW_(fr literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/logs/mahogany.mw3 b/worlds/smw/data/palettes/level/logs/mahogany.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..80d5c2c1adfcd47b15b97c71aadf8b23c1441d51 GIT binary patch literal 514 zcmZQzxL@pP)$MfFi$6FpdUEpQVg`oaJg@aZ^xgV;T@d-do`FH3zM=jB5Q4;4SN#Xm zv*qfoLGla?d=etM#v&4$Hf{_IVAafG4Dt;1jPscw@(*+$1l5bi8`*oq!(`0-of)JS6@ct7x<>dv z4ta46c?V6`wUGj8sCq#>kb4VxL4Ju(mW|+IkheVI!r@ntzRlpiDabsK{5i`hK@!Px zisN-)?nC$wB>$gLp7}rXb_RQ(e<05u<*{81H8-L<;GN)q;s~#~`wQF;G?kDenF8{wC03pbEu>b%7 literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/logs/not_quite_dawnbreak.mw3 b/worlds/smw/data/palettes/level/logs/not_quite_dawnbreak.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..ecce214b80fb83396478275dfdfd2b8d58b081ac GIT binary patch literal 514 zcmZQzm=Nb_)$MfFi$6FpdUEpQVg`oaJg@aZ^xgV;T?U~1|9S=nh5Cm22S5lCUtRSd zOwX39w+6{GFf5hfRXV2PYx^aTfdQxCf=b|1fCs3oUiwl6o(d~^VEZy_(pFY(E;5nK%NmPcGT{0h>y8QeGh&kS+zIm;SFXXka0lG%` zKMr|u4S5Gm*R_!XX&BnU_7(Di{1Trm8^OgOZ+XOp!>=HHo56ikka-~YoU@z~B#}I) zI9>+_kxeb;$Av|AFKM8N`9%1(8R0AxQoK r;{&D#Q1h|LA64#(3v!RL>Jd{_yEeDye)10J^8f1r$9sK1 literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/logs/riesgo_de_chubascos.mw3 b/worlds/smw/data/palettes/level/logs/riesgo_de_chubascos.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..0a7e877996b9d17f580af8d38b7732521c6e1772 GIT binary patch literal 514 zcmZQzxRT{*)$MfFi$6FpdUEpQVg`oaJg@aZ^xgV;T?U~1|9S=nh5Cm22S5lCUtRSd zOwX39w`O3dDsK^Z$-t|mqqxy9+=+n!teRPjL7t(WaXu47{(JstYLNMwsx1ORUMmA%NBSqhgH`%wM2U9nnEM*4z?l^RSQ;Xjc3x+3|~K2;&hqx#REV~2>eB19hDg&_TH sys2Vt^0?)Xs(9+I)eTmXut(R;zz|uita`*$)vnF$xu3iPx_pl%05~mvz^Pi2NHBVM9~ZTdKE(VDhyl za-siI<*PyR=PVf*B$7?)r`G=f>V@cUVE!oolli|tME`c9isTHW}pe<81Z z4bU~h|CuqQ!R`~+kay5@T^lKohA9uSuaFnym-uAa2rdSB%Ofrveg)~<4DOqP%mc}v zvz!tnkvyk3UI*qrg#SSD{~6_(|1)oAum}1V;(mnxKzxqewYi3M$npsPf#d}l#DU=j gkwTvI?MXW#S9F;d0y*-=)3jxx**a`#mlBIpe2UAu)7o_zPjo^ zSlw*7dTR!teg+0jALqpW8llQ5l?)93>lqjnn8g_68R{A5GeP7Z=spONWvdsvuLqN_ zHIWPbpDJGslJBo!U@!-g$od^^Y~d56~~dX9y@nDQX^7V?7p5}zy^!NnkNdBlaouONM!!F|*J%n!#QzBYf%qJ`YjX|jkmV8n1IY_Ahy%k5B9HDuko*J2 q2TTv3=3|pTs^Y1;RySBl!X8}~;+}Q7Mt0l0eg=I8x*ruJhyVcm1%BuN literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/mushroom_cave/green_aqua.mw3 b/worlds/smw/data/palettes/level/mushroom_cave/green_aqua.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..dcd6d0f0940e3ea2bf9060489acf768b5fbed102 GIT binary patch literal 514 zcmZQz_)(u`aID6w_I>TvI?MXW#S9F;d0y*-=)3jxx*+nPjHB)&+hoqCoNYoN@zquT z!Rltq)mt+F^)oOe3bYA9R53982l5q|#Teun>KW%VLF6CkJ_wR!s~5Yk2a~TgkqiBw zDqjtfcLdtfT;v);a8Bp&EUT2e`bh#&RI?gl1QFY z9Ipd&AHshi{r?%|ng26yXRrtQ7vg_}|3G|>+_kxeb;$Av|AFKM8N`9%1(8R0AxQoK q;{&D#Q1h|LA64#(3vtgnT_d|~UO$6A1Kp1b5<~#6+kVCX literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/mushroom_cave/ice.mw3 b/worlds/smw/data/palettes/level/mushroom_cave/ice.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..ec308ed93b4af4ef7d593fc85d0e2f05e386e6f8 GIT binary patch literal 514 zcmZQz*jvuPa8$)pcdc%)l7#)_Vg`oaJg@aZ^xgV;T?U|hx9hu5|Flh6U-Kf0LE@{c z{?~)(*>d&PAbAD`9?4RxLRE9UTYd}-|LYkT6qv;rN$Q#dGA!nmM*BD(EqJO4|jN=MV?xemv?D87~Z%NH_j!%}2;9`)sJmSLPSCGEV z;J)d9W{CcGu3O?P^Q+76gu>j9?7yWFk$iE=`@~HJ=PAMDk^Q$+LOpgxtacf)d;{}G z`Jc@H{UPT2D@5tcwS~x|yAb5RX2lk*RAcP&pzwCkd|=xUw4K2o7~bdrB!A9wN{~b{ Gc6k5;euS$4 literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/mushroom_cave/original.mw3 b/worlds/smw/data/palettes/level/mushroom_cave/original.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..7d97ca364024b2a0a58712e3aed6d42483b51379 GIT binary patch literal 514 zcmZQzxLeP_a8$)pcdc%)l7#)_Vg`oaJg@aZ^xgV;T@aZd&?vE3=7|iarnf3ce0A0T zdJsKZuHG6X&%kgZ@?6nrO9Q*jUJMNXfqVsKF$Q^tddB%o5P2~MX@+=4c_w*gn0&2? zTgH`w;#E$^U1RXa3K;oxvXHUx@n={sZwja@Xb>)*;Iy{0EX3WDp027epT2 eg&_F{j1QO|K+VS{@1Xg>wjl_&eu(?A%L4%GRd#3q literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/mushroom_cave/really_dark.mw3 b/worlds/smw/data/palettes/level/mushroom_cave/really_dark.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..696f6df3bb766de8bcf1c12f27eee72c2d32b459 GIT binary patch literal 514 zcmZQzxLeP_a8$)pcdc%)l7#)_Vg`oaJg@aZ^xgV;T?U3^i6j981c|S%`d<&CXUo-F zGcY6xv`Dl7)qrr400YB+pm_?+Vhr*O^^EhGAo3s?RQXyHxzPWq^3@=Dh#abX1M^4u zpUnULVfrCy8QeGh z&kXU;Im;u&_<-pF)O>964w?^a8-j4_hqxb`e3AeFln-v} literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/mushroom_cave/toxic.mw3 b/worlds/smw/data/palettes/level/mushroom_cave/toxic.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..75f87d3c389a58d8c717d3d6ad48e30f0b1105d7 GIT binary patch literal 514 zcmZQzxLeP_a8$)pcdc%)l7#)_Vg`oaJg@aZ^xgV;T@dNa(#mmMfI~D}a*ZTNe0A0T zdJsKZuHG6X&%ltWyUO&mrGedMF9wGHK)wRA7=t`RJ>z^Ph`bnsG($Y2Jd->#Oup7c zF7$t@d^Je^oFxN;M6ywOS^iF-sSy1Q%pc`{GXM97=-+PiJN=O2VZBAp3>W}pe<81Z z4bU~h|AFSC1CYG9hP;EO>)J?xG;~>reTBRrzr-iYMsP96TOM)Y@GD5)W^msWWFE*p z=PaiLNhHrHj@N;?58*$M{C`Gy=Ksvw8SH`ng}5K#KM964w?^a8-j4_hqxcRJOCJdc0d3C literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/mushroom_clouds/atardecer.mw3 b/worlds/smw/data/palettes/level/mushroom_clouds/atardecer.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..87f2587b6f00611cb7aed479561f902a5a6f0b5c GIT binary patch literal 514 zcmZQzn4j-y)$MfFi$6FpdUEpQVg`oaJg@aZ^xgV;T?U~1|9S=nh5Cm22S5lCUtRSd zOwX39w`O424-|RH5Fk~|Dj|2vjDZ29+KBloOB|~_+dnple6H?C+fqNtJstY6zb%vp?6g4q3i|`J?<#=KuZ> z`3o#!oOP@ad2|#%n0y2CNBN)3|NWu*nSZAzRS z`=%iCK>j&rIVDIUc}{V> z4$OTB|AFNHGs-jnXWq_W5A-j@{|Ntq_#C-wa}Dc|K zuVw(+&knT3Ff7~medLrln0y2CNBN)3|NR*lW&zcBX?~A8EYWV*uE&4@K=v2%+SdSG zBmAEkLmKQpaSeF~P1m)N0%@4?AomvXg8UMnEE~baAa8lZg~P8PeVf63Q;>Ne`E!<2 zf+UjX6vykp+=uWVNd7;gJoA6%?F{xn|3dta@E?fJk-Ik6unt)s;XjbPAcHtCydd)E tE(G}>;&<%wApO~axqh4d_Z!HXqw5B_$4HOYt3$v`F<0}vExPSFXXka0lG%` zKMr|u4S5Gm*R_!XX&BnU_7(Di{1Trm8^OgOZ+XOp!>=HHo56ikka-~YoU@z~B#}I) zI9>+_kxeb;$Av|AFKM8N`9%1(8R0AxQoK r;{&D#Q1h|LA64#(3vtgnT_d|~UO$6A1Kp1bCKm$$(k^{@ literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/mushroom_clouds/original_blue.mw3 b/worlds/smw/data/palettes/level/mushroom_clouds/original_blue.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..268518d3a692d63ee8d59c5997feb5d8e31c4c25 GIT binary patch literal 514 zcmZQzxLfaO)$MfFi$6FpdUEpQVg`oaJg@aZ^xgV;T@d-do`FH3zM=jB5Q4;4SN#Xm zv*qfoLGla?FBy21`dE#nwi_`pfK@Y#F~~F2GtOs%$Uo415L7Q3Z)EQcldmSFXXka0lG%` zKMr|u4S5Gm*R_!XX&BnU_7(Di{1Trm8^OgOZ+XOp!>=HHo56ikka-~YoU@z~B#}I) zI9>+_kxeb;$Av|AFKM8N`9%1(8R0AxQoK r;{&D#Q1h|LX9wo`ZT8=9AZv~;3v!Q<9SFXXka0lG%` zKMr|u4S5Gm*R_!XX&BnU_7(Di{1Trm8^OgOZ+XOp!>=HHo56ikka-~YoU@z~B#}I) zI9>+_kxeb;$Av|AFKM8N`9%1(8R0AxQoK r;{&D#Q1h|LA64#(3vtgnT_d|~UO$6A1Kp1b=0^hn(k^{% literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/mushroom_clouds/riesgo_de_chubascos.mw3 b/worlds/smw/data/palettes/level/mushroom_clouds/riesgo_de_chubascos.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..847632ddc32b6df608f3549e00bc8b456f287b9f GIT binary patch literal 514 zcmZQzxRT{*)$MfFi$6FpdUEpQVg`oaJg@aZ^xgV;T?U~1|9S=nh5Cm22S5lCUtRSd zOwX39w`O3dDsK@uA#z1mM{%QJxDx{dST(a4gFHh$<9sHF`~%$wLG_~XM)uw?`C1dX z(Eq9O)gbdVRa*ptyjBLjj`UB0$u}^6l>f>6-yfoXyHQm+huBIb9&H8;0J49gtbI*{ znyh|}GKMtReOE1Jhd$HrbX*gPUA~YPgH`%wM2U9nnEM*4z?l^RSQ;Xjc3x+3|~K2;&hqx#REV~2>eB19hDg&_S9 ozvGras^Y1;RySBl!X8~W14Cr7vg#32Rl7E~=YH}I=<+?50IIKk#sB~S literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/mushroom_forest/atardecer.mw3 b/worlds/smw/data/palettes/level/mushroom_forest/atardecer.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..a78e54d23f26ce527b6e02068f46872e24e93adb GIT binary patch literal 514 zcmZQz*k8=dn$F727Ra`ht(tvuF$2SIp4a*y`fh!_E(62f@=Vt^v73q@BuIR9)&F`B zJzK8cngOVvf#D@XfK)N7gxoDN2;YeLDoY%zJlj7u2tQZ%qiw05Wb#~~T9A4p<~a&6 zwsL;<=^*}kQwD~gadVyI!t23&kbDsP5AJ{L`@DvtMoBn5p*uUNs z;(B{knEO%vC&zY=EnfHvhn*BmzScx8^na>+HH6QX*`I4#hb-T~{89cV^M8Mc`~?;< z&N^0zJh}@({(H^%j_DIKcKQ22`J*bHx@&cVl_c!Zbu%!44|E>{)r-a(*?Ys}Yfa=r z|EJ1VgXGUyGB8La#|PJk?@xxwH!y#c|H=H{AEJN0(EN0MCKKiv%nTR+WPc&AeGSkx z!vAr|i)+X`TvRPHyXl0X9qishUXWknlVu~g800OFxN!Itq;E60ZwfLGtGgkMJLe&yl+}*RT#*9^pTbydZ-(FuWl0=q?1w sKVW>o^Z;r;Hu<9}p1NywgOw!g(Pbg-S*L4cx6SKk&}X3gQNizg0JY3}s{jB1 literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/mushroom_forest/count_shroomcula.mw3 b/worlds/smw/data/palettes/level/mushroom_forest/count_shroomcula.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..74e336cf6f76a2511149f2f9101d85f2970def4f GIT binary patch literal 514 zcmZQzxLcph(;~7|;+V`c6?V^suztnviF9`*P6(M z{!f*!2FahZWMGg;HmRRl{{yHOqQ8Opqx?_i|NapD+l~HZr6{t9pJQgg03iDddF^X} zt`Yu^Ltb1%-a*rKZKOaNhIX)hg}flY#3#!}a52bR9&zFDD@fmFaNiVU9>_iCET;rX zB+n_1*MYeY;Xjc4e@1!c|IFJN?1BD;xF6v^5T7G=ZLVP*vOL0nAbCLsabS2sIN%G*rUrr+_O&C$Znh0&!Eph_oIR&0RUyLeP#dv literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/mushroom_forest/cursed_gold.mw3 b/worlds/smw/data/palettes/level/mushroom_forest/cursed_gold.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..f0c7d6124fc6488512235418850c933adb91bae2 GIT binary patch literal 514 zcmZQzxLaS(T`aa%(M$5Vz*2$9#S9F;d0y*-XrPQPi2PsA!0@0>p}wL1K|M%(b=7|` zJzK8c8YIua;IBAC?waf$w)y-F3?S7C%wi1k4E2ojnIQ5HbRPuOi^dz-d&A^wP2@uV zr^;7@^ZFU|8R&jg(82=%xU+p2 literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/mushroom_forest/dark_green.mw3 b/worlds/smw/data/palettes/level/mushroom_forest/dark_green.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..2b1f15cbb1e0c83ef37f037f83936f374a5a7d8b GIT binary patch literal 514 zcmZQzxLd!N=ZS!-Xqx15*%ykFiy0Vx^Sssv(Rb_XbwT9+dIp9Ebqe(j^$+Sn;;XCv zgX!6F_0}MH28Lq{3XB|#3m6rc7#KjR6_~{s%5Li9HBHNyXyF{Huvi)+X`TvRPHyXk}}53;Y27vz`tWZ4KV26@XPE*yRZ>DvtMn}W;( z$)B^F5+sp4r#M~*=01e~K=S_?<(dC8Z)dQF`yb&ykUU53+FZjrWO;=DK=OhN;=u5N x$fLUuB>#Z%0n-Dh`Pk%-s(9+I)eTmXut%4LxObhdk=-`0pFy92?nebloB+{eyat`0A?v zV0yM(y){Ulf#H~lmnMf|kKs8>1_qF71!ge@d4_t%`AiV`2f7b}>P6#??7d;~wI*_* z|5N3wLGmD763JWYEb6O)dLjB7m_N$@Wd85Zz)%^_z>py+>V8_$PivzQ0|o%uU&w1; z19Xk>e`XA6u=~U{8_2KP-t=7HqT zSxyO(NS;$1uLE-*!haz7|BUj?|CzTl*aQ6waX-R;AU;R#+FZjrWO;=DK=OhN;=u5N v$fLUuB>#Z%0n-Dh`Pk%-s(9+I)eTmXut%4LxM!WNk=-`0pFy92?negz(7Ak% literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/mushroom_forest/original.mw3 b/worlds/smw/data/palettes/level/mushroom_forest/original.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..cab6dd134869338d9efedbd2ee146f0b759046ca GIT binary patch literal 514 zcmZQzxLcpVxrFfrqYl$Vrmswsiy0Vx^Sssv(Rb_XbwT9+dIp9Ebqe(j^$+Sn;;XCv zgX!6F_0}MH28Ndmyh?qn#!}mj7#KjR6_~{s^suztnviF9`*P6(M z{!f*!2FahZWMGg;HmRRl{{yHOqQ8Opqx?_i|NapD+l_vwGcYMIKVW9S03iDddF^X} zt`Yu^Ltb1%-a*rKZKOaNhIX)hg}flY#3#!}a52bR9&zFDD@fmFaNiVU9>_iCET;rX zB+n_1*MYeY;Xjc4e@1!c|IFJN?1BD;xF6v^5T7G=ZLVP*vOL0nAbCLsabS2sIN%G*rUrr+_O&C$Znh0&!Eph_oIT}`2b;#eINh; literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/mushroom_forest/snow_dark.mw3 b/worlds/smw/data/palettes/level/mushroom_forest/snow_dark.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..cf3390d5f186777ea4e124579d9c2da93929412c GIT binary patch literal 514 zcmZQz*jxTgMZ?zHwLkKGY-Qf$Vg`oaJg@aZ^xgV;T?U|hrt6#7O+^qAB)+=pe?5qv zEmv<1l3yzEUShjuiK4mHuOJBjq*<{{l#YyPycCGfz~E_m*0nI~d)gcz8>IfE+06{w zQn@1AY7l>|?NSMg>`z6dXUqKN5NwZ>^C>uJSCWXt%+Rd|5SOXf7D}F z#A=rz%QrB8l>f>6-yfpiUm;4T))FF*?n03NniX5LQjKxTA64%P8)CkG S=!e{iMMmY-K=-49s%ijA+mAm0 literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/mushroom_hills/atardecer.mw3 b/worlds/smw/data/palettes/level/mushroom_hills/atardecer.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..19d9d32451714d3386e12dd46192f91856524237 GIT binary patch literal 514 zcmZQz*kAlSwmZo%{ZDvtMoBn5p*uUNs;(B{knEO%v zC&zY=EnfHvhn*BmzScx8^na>+HH6QX*`I4#hb-T~{89cV^M8Mc`~?;<&N^0zJh}@( w{(H^%j_DIKcKQ22`J*bHx@&cVl_c!Zbu%!4ZDvtMoBn5p*uUNs;(B{knEO%v zC&zY=EnfHvhn*BmzScx8^na>+HH6QX*`I4#hb-T~{89cV^M8Mc`~?;<&N^0zJh}@( w{(H^%j_DIKcKQ22`J*bHx@&cVl_c!Zbu%!4 s$MlIAyZn8i{81H8-L<;GN)q`Ih*dS(9PVg`oaJg@aZ^xgV;T@VS8hmaug)m8uNLG*07dTWq8 z1H%%L)u!xKuLj9$ zsxmMX1&Jm{WX}eg3en%d{89cV^M8Mc{sO-_#p8_2KP<>Geg|-)^>B4dHS5< zcpaGg5dH({hq!IMs)!y;9^pUi@(BN-%cHxH82O_rp1NywgOw!g(RD-IvrgB@ZkyN7 MpwB?}qk_CB0OTBb$N&HU literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/mushroom_hills/original.mw3 b/worlds/smw/data/palettes/level/mushroom_hills/original.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..3e4854584838b4d79557679d1f869b60536b2d6f GIT binary patch literal 514 zcmZQzxLfaJ$q{reODH)sdq(l(Vg`oaJg@aZ^xgV;T@VS8hmaug)m8uNLG*07dTWq8 z1H(%OUZp-(W2x;%3=IE)dy8QeDonFn&uIm;MVg`oaJg@aZ^xgV;T?V*3L={MUb=CiR5ItM2-Wnv| zB5*?Fims00M#FF?28RFj3=9g)Vhr*O^^EhGK=KR>S(fiSi=)10%_(PK*bmfc#5_kK z##YYHJ{=^lsoEkC)jgwi{KIbBL`};?ZWn03i8^ zvhmCjYO?w@${5mM{Z}n!hd$HrbX*gPUA~YPgH`w;#EyHBxNPe%HJh?N>lzScx8^na>+HAH_`BwyO6Dr9+7|M_$5 w5Rq1d$fLUuWIn|2xaE(kc<99VnCB?O z*vk3Yr-S4*Ra*ptyjBLjj`UB0>2F~EDF2iBzdr**Re6iRcB86t4zZO=JlYHx03<(A zHl8^`O;*1~8ABSZ|Ek68&}SN+j%z}(%NO#3{1Trm8^OgOZ+XOp!>=HHo56k4|I85k z&sk0hl1QFY9Ipd&AHsiN_bFEE$w*%iu~LJ{*P6(M{!f*!hUo8#ZO4FBsH7!;Vr7~~o18Rs*B2II!InqwM8JvYh~c;NdF|5{s!ic@;{mX`!g_9mA43NH>xV<5L>Clqs@Q;K=Ko1 zy8QeGh&kV8u zoaK}tiR3xO@j5W~A^Zn+pJKJ1jPwN&D>ayWt%+Rd|5W*Ei2klfzO+wO$nvQE^XJ$h wBCQCKM|UB}e2Cw1%O6$o)Lp9^tR!KNt{Y6DG#!*kQd~a_+;4#E(UqaBQ6|%1?k%i?wf+l1IeGWoDw9FJf}Eb z2j)J6|3LEp8ReP(GjC_G2l^M{euV!(e2(0;xrTMf@(BNd}Q@k1h*w&pKTryKP=SgFXY@j|yZI0WX(%HUIzs literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/mushroom_rocks/atardecer.mw3 b/worlds/smw/data/palettes/level/mushroom_rocks/atardecer.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..4540f32bf586fae9a2e499cf2a0db820a10a5a67 GIT binary patch literal 514 zcmZQz*k8=dn$F727Ra`ht(tvuF$2SIp4a*y`fh!_E(1{he?0@kgF1!!hWZEfAo0~z z|H1TZxq54mJOjf^h5)HzRtdRVW)Qv+^Hr8OR(ZC6Y!H5~?nm2FKgr~|K(!$CM$B^* zVr=F7?9)N~^`;CAKjY>)$%WU0`5^fq_8;8;*!PD+)NePs8_vZf%=}H50Rw=|>O$TQS4&S!$iKhS*;R4*EDWbX}=uQibi z{humd4U#`+$-p3yY*Ih9{s&MmM1KSGNBN)3|NSBQ???Ym=hV|x{-)1>0YLT_^4iw` zT_gOT8ABTEK5-3s2TfPbtWcm@bO5rikQd~a_+;4#E(UqaBQ6|%1?k%i?wf+l1IeGW zoDw9FJf}Eb2j)J6|3LEp8ReP(GjC_G2l^M{euV!(e2(0;xrTMf@(BNd^suztnviF9`*P6(M z{!f*!2FahZWMGg;HmRRl{{yHOqQ8Opqx?_i|NapD+l_vwGcYMIKVW9S03iDddF^X} zt`Yu^Ltb1%-a*rKZKOaNhIX)hg}flY#3#!}a52bR9&zFDD@fmFaNiVU9>_iCET;rX zB+n_1*MYeY;Xjc4e@1!c|IFJN?1BD;xF6v^5T7G=ZLVP*vOL0nAbCLsabS2sIN%G*rUrr+_O&C$Znh0&!Eph_oITz#Qy8QeDonFn&uIm;gH`w;#E$^U1RXa3K;oxvXHUx@n={sZwja@Xb>)*;Iy{0EX3WDp027epT2 vg&_F{j1QO|K+VS{pBYEXX}Zdc0m80$z%_n&)lNXiy0Vx^Sssv(Rb_XbwT9+dIkoC`iA-kKnN0FUG*PK z&z7sV2FWupyky{2>SHyQ+HS(Oup7cF7$t@ zd^Je^oFxN;M6yZ!)cPMlvmp8#m_N$@Wd83D(ZAj3cRB-;0`miA1`GhQzmV6y2Iv~$ z|2X8uHRK&MUDrkmq+w_W+gHd7@=JWOYy=mByyX!W4!?r*Z3g#ELFR$nbIx)~kVNvF z;&>gH`w;#E$^U1RXa3K;oxvXHUx@n={sZwja@Xb>)*;Iy{0EX3WDp027epT2g&_F{ rj1QO|K+VS{e^kX&cdc%)l7v0FEW|zQbdBt`dHoFf40Jy#_?-^`5!8Q# literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/mushroom_rocks/riesgo_de_chubascos_cafe.mw3 b/worlds/smw/data/palettes/level/mushroom_rocks/riesgo_de_chubascos_cafe.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..c8da0fa178818e329cfd38ba3fe45e3033c9cc65 GIT binary patch literal 514 zcmZQzFfZoT)iupGz33?HH7#m#F$2SIp4a*y`fh!_E(61rtpD{43<~uP^$&m$B)+=p zKbW2^S8vV0P*vU{a6;sYu8!hH!*C}C2C!;oF$Q^tddB%o5cvnX4}$7NW}p|3q2) zng}&n{TgKqX|VgQTFef8rs3(hCKS7TAuq@;@yW6gTnzG-M_f4k3evY3+&BHt46*;5 z<&+?arEvn>G&TYRqo literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/mushroom_rocks/riesgo_de_chubascos_negro.mw3 b/worlds/smw/data/palettes/level/mushroom_rocks/riesgo_de_chubascos_negro.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..868945e9f427713dd200f8dfebd814fc4f7484fd GIT binary patch literal 514 zcmZQzxRTW(vQ*-^il%P1=~~Ch#S9F;d0y*-=)3jxx(q=1|Md(E3iS>34}cIPzPjo^ zn4T?HZw-=f5jY`oMOR00qhYuc0|Qt!vlxRsLp|esCW!n4-3LMSqVY!d-Z1%E6S>g; zsq)nzc}>+8fgrDyfv+R|lVI`<%pc`{GXM8yV5ll@5!h~2Rn8%{Qi(^K0Rw>KC(7E_ zM5xK?*C=C1gY{pvm>v2|!_#q1D0cZmUXWknlVu~g800OFxN!Itq;E60Z~C7ZV*feI zDM1p+bBg12VD3Zs59~h0YCRe03nEr(FnNUkK=NIYd}*JmkmXVR=g+Z2L|PFdkM2T{ qeu&?3%O6$o)Lp9^tR!KNuA6}&vRGO5h^eYwo7;0gc?Wd)=NbTG*MEZm literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/mushroom_rocks/shuk_ft_reyn.mw3 b/worlds/smw/data/palettes/level/mushroom_rocks/shuk_ft_reyn.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..4fa3e7600a154feee12065d5cf90573876021953 GIT binary patch literal 514 zcmZQzxLdzeghSQKG)VHMY_;0tVg`oaJg@aZ^xgV;T@d-do`K;(okD#>{eyat`0A?v zV0yM(y){Ulf#IdWcUvFd4~gI77#KjR6_~{s^suztnviF9`*P6(M z{!f*!2FahZWMGg;{^K;ye}6hmzJd9p{7>fp{t*4&<9??zFexxUU}nGoAo~k>?Q4Lp z5&n-uUR*=oLDO|@q(B;mcCdR3c|m@OPnM0~Vvx5y;=LsJ19Kn3e<1n)jPlI?nYT081N{r}Kf-??K1c4_T*EqKd4&H!@`4QF!0>{|qq`6! s|A6rU(*vma*yN9@ct<8 literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/mushroom_stars/atardecer.mw3 b/worlds/smw/data/palettes/level/mushroom_stars/atardecer.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..d64a4bb2298285ab8361056cd7ae64d93e611e7c GIT binary patch literal 514 zcmZQzkoTXTFYgb7lZzP`e)GK62hn%y>vb6z=I1jo$W_m;o>~8`{!cwfe09}-Fg;tY z-Wnv|BJh%dS4l^4qhYuc1H=D%1_lLYF$Q^tddB%o5dFEjA8kwhe#O;iGcfE2nqb5{ zMm&d)v_B){I2f#GM|Tqn8kdLSPnAH@EH`yc!Ma0ow4?RPpClM(Y5W(EuZR?ivF zY^`K3J)avx8f@M*7F$+b*ZxSMH0<($ywOVkt>TkqBe)pkEswZx_!XpYGq`X1A7~%Q z{Pm`#ev-*^i|tim?z_qo$12bEj}5|?W4p%|FMNf=P6{SpYa$o=KUKaO!spBE&o!+> zmTzGGDF2iBzduC&0*e@D9VIN%G*rV%)#K$^a RBfD*0KZ8E&pv%kq0|5WQcJlxL literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/mushroom_stars/cool.mw3 b/worlds/smw/data/palettes/level/mushroom_stars/cool.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..326b693e141bde3e41e44aaa8bfaa10153da21a9 GIT binary patch literal 514 zcmZQzxLePrn_>ILw=n8zR%H3)Vg`oaJg@aZ^xgV;T@blcLaus#_00Nj^?&L?;;XCv zgX!6F_0|jwd&`$fyqDOnS)yoe^(zR%KWSDh6Qv_#8ZQOnGcb6Xo^>q@`<^xj$OfrD zX?8Qiwp6ajwi?7=Yr9m!BKuQOY57htA0)5rf5QB|`0sFt`t3%))1T{}G+PC<4;_Ha zE98x5u8_0QpKFXR3(-H*M8;9mb#0_T8g}^&g14mRImaikMcj6|NBGq`zu80)LKI1(On4gU$bJ1R;n>>`J*bHx@&cVl_c!Z XbwkY85B-okvB;>r8t8shkm(Bmpze(RERxTNO;cf%&8SPv-yr3=BWh85kZgJz##okie(_G!Gqs z>@VcCuK~J7_&?BmbP$!zz#y(6@6e*~+{7yoT^3?rAuq@;@yW6gTnzG-M_f4k3evY3 z+&2Z82lCH3%PBz;$#aV1bzts8_zxuipHZIqKl645d!YLu{zv!^#OKIen`>ByERXOX nNM4XZ92i~@d2|z^Pi2MWH2SN3s@kaLEF!@>& zxzPWq^3@>ubCwJY63Hg@Q|o^K^+NPFFn^T)$^73RqW{0v@AOPtcRzPy1`GhQzmV6y z2Iv~$|I8TDVE2h@$UA7du8kB(!;}ZvSI7(UOMJ3y1Q&z68_2KP-t=7HqT zSxyO(NS;$1uLE-*!haz7|BUj?|CzTl*aQ6waX-R;AU;R#+FZjrWO;=DK=OhN;=u5N x$fLUuB>#Z%0n-Dh`Pk%-s(9+I)eTmXut%4LxM!WNk=-`0pFy92?nebnB>d&P zAbAFc7Lnt+$5gT{-v=@<{0H(Cn8g_68R{A5GeP7Z=spN4m9f=~vxCXkn#hIzPnEA` zVAxZC&XR#aB6&iZPnAg&?rz+u=Es-J}^53;Y27vz`tWZ4KV26@XPE*yRZ>DvtMoBn5pxaXYZ zlpu-ZImPihF!v$+2h#taQJ(of^L7S%pnoCmNB9rK=g3`~YgmUYkMJKzUXVc?7+w&0 wbQgl;A22>(dH^*aoBUA~Pu;b;!AcVL=&}&^tkX5J+vfE%=rhp$sNksz0AXHy#{d8T literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/mushroom_stars/midas.mw3 b/worlds/smw/data/palettes/level/mushroom_stars/midas.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..9adffb69bd5f2a5705eb84d423da9e6d5a32daef GIT binary patch literal 514 zcmZQzxR?H#=L+X+E;;%6=KsAX7c(&Y=6S6TqVLw%>oNf485rcM=U30H|5pE}9wffH z>OYvCEmv<1k>_CDEOe1`x>k%k1H=D%1_lLYF$Q^tddB%o5czeoLPn)dKf~3ohTl{89cV^M8MceoO5+{%=^nuvM}%U;vQ&@;U8m zq^16H#Yc6Wj=B)cTA@b-h s1o`hI>qWLQcHHtuRXlaq>IN%G*rV%)hQF?n-8QeEL7#!{M+K8P0m+4a^#A|> literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/mushroom_stars/original_green.mw3 b/worlds/smw/data/palettes/level/mushroom_stars/original_green.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..9abb79150620ce048da970ef845b24068098187f GIT binary patch literal 514 zcmZQzxLeP_a8$)pcdc%)l7#)_Vg`oaJg@aZ^xgV;T@aZd&?vE3=7|iarnf3ce0A0T zdJsKZuHG6X&%p4Kfmf-I)mUn~5d*`2AYXx5j6t5Eo^d`CME-&9gP?lRcq4mnn0&2? zTgH`w;#E$^U1RXa3K;oxvXHUx@n={sZwja@Xb>)*;Iy{0EX3WDp027epT2 ng&_F{j1QO|K+VS{kBC2XS%`bq=^EK>^ZFU|8R&jgpdfp{t*4!jee&yFexxUU}nGoAomsW+SdSG zBm5tSytszEgQn}+NP#pA?O^)~c|m@OPnM0~Vvx5y;=LsJ19Kn3e<1n)jPlI?nYT081N{qeKf-??K1c4_T*EqKd4&H!@`4QF!0>{|qq`6! s|A6rU(*vma*yN9@cfp{t*2$>&)t3l=@U{sA9kXAo~k>?Q6uvs^#t& zVMv4BC$1sy@Y+PrvCtP&9^~FaUXWknlVu~g800OFxN!Itq;E60Z~C7Z;@)$XQ-UOt z=M=~5z}%1UA4vayMtSD{%-b34f&PW~AK^a`pCfl|u3;UrJi>ngPyZ1P7{JayOV1}jO}qsv0vvrgB@ZkyN7pwB?}qk;qx0FbA6`Tzg` literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/mushroom_stars/riesgo_de_chubascos.mw3 b/worlds/smw/data/palettes/level/mushroom_stars/riesgo_de_chubascos.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..b17323af65559ee0197747e00867e0adebd6ba25 GIT binary patch literal 514 zcmZQz(2vv9)Q^L~$;Au|zj z3{~YV0xubOm2?z08iqSDF#HFqS6~)nkY}i8oX-T&|3LRa&~4QkJKJEGe65LG=>Jst zYLNbH-4=ltBd4%IO2_BDvZE}tt~W@P0bpDY`}#UO8a#D&AJAbp#`ebfKU5c|(rP6?7o zo>LsJ19Kn3e<1s}D^}~tNM8`KQiI7O`>#cyE0QnmQx&p2s{i~sc8EwTLgdk12r|Eo rH&x6{9=kj!ypO7Q>aNudR+6ws*9~#cI$a~XZC*cvJ_Fs43iRUuum^qR literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/palettes.json b/worlds/smw/data/palettes/level/palettes.json new file mode 100644 index 000000000000..d936b0a6a51b --- /dev/null +++ b/worlds/smw/data/palettes/level/palettes.json @@ -0,0 +1,350 @@ +{ + "grass_hills": [ + "atardecer.mw3", + "brawler_green.mw3", + "crimson.mw3", + "electro.mw3", + "geo.mw3", + "miku.mw3", + "mogumogu.mw3", + "nocturno.mw3", + "original.mw3", + "sakura.mw3", + "snow.mw3", + "sunsetish_grass_hills.mw3", + "toothpaste.mw3" + ], + "grass_forest": [ + "atardecer.mw3", + "autumn.mw3", + "brawler.mw3", + "brawler_atardecer.mw3", + "brawler_green.mw3", + "crimson.mw3", + "deep_forest.mw3", + "electro.mw3", + "geo.mw3", + "miku.mw3", + "myon.mw3", + "original_aqua.mw3", + "original_green.mw3", + "pizza.mw3", + "sakura.mw3", + "snow_dark_leaves.mw3", + "snow_green.mw3", + "winter.mw3" + ], + "grass_rocks": [ + "atardecer.mw3", + "crimson.mw3", + "dark.mw3", + "electro.mw3", + "flat_brown_green.mw3", + "geo.mw3", + "ice.mw3", + "miku.mw3", + "napolitano.mw3", + "original_aqua.mw3", + "original_choco_volcanic.mw3", + "original_ice.mw3", + "original_volcanic.mw3", + "original_volcanic_green.mw3", + "original_white.mw3", + "original_white_2.mw3", + "recks.mw3", + "sakura.mw3", + "thanks_doc.mw3" + ], + "grass_clouds": [ + "atardecer.mw3", + "crimson.mw3", + "electro.mw3", + "geo.mw3", + "miku.mw3", + "original_blue.mw3", + "original_green.mw3", + "pizza.mw3", + "sakura.mw3", + "shukfr.mw3", + "snow_day.mw3", + "volcanic_rock.mw3" + ], + "grass_mountains": [ + "brawler_lifeless.mw3", + "classic_sm.mw3", + "crimson.mw3", + "dry_hills.mw3", + "electro.mw3", + "geo.mw3", + "late_sandish.mw3", + "miku.mw3", + "original_aqua.mw3", + "original_blue.mw3", + "original_green.mw3", + "original_white.mw3", + "recksfr.mw3", + "sakura_hills.mw3", + "snow_day.mw3" + ], + "cave": [ + "brawler_dark.mw3", + "brawler_purple.mw3", + "brawler_red.mw3", + "brawler_teal.mw3", + "bright_magma.mw3", + "dark_red.mw3", + "glowing_mushroom.mw3", + "green_depths.mw3", + "ice.mw3", + "magma_cave.mw3", + "original_chocolate.mw3", + "original_gray.mw3", + "original_ice.mw3", + "original_mustard.mw3", + "original_volcanic.mw3", + "snow.mw3", + "toxic.mw3", + "toxic_moss.mw3" + ], + "cave_rocks": [ + "bocchi_rock_hair_cube_things.mw3", + "brawler_volcanic.mw3", + "ice.mw3", + "layer_2.mw3", + "original_gray.mw3", + "original_mustard.mw3", + "pyra_mythra_ft_pneuma.mw3", + "snow.mw3", + "toxic.mw3" + ], + "water": [ + "dark_water.mw3", + "deep_aqua.mw3", + "deep_chocolate.mw3", + "harmless_magma.mw3", + "murky.mw3", + "oil_spill.mw3", + "original_brown.mw3", + "original_gray.mw3", + "original_green.mw3", + "original_mustard.mw3", + "original_volcanic.mw3", + "pickle_juice.mw3" + ], + "mushroom_rocks": [ + "atardecer.mw3", + "brightshroom.mw3", + "original_green.mw3", + "original_ice.mw3", + "original_volcanic.mw3", + "original_white.mw3", + "riesgo_de_chubascos_cafe.mw3", + "riesgo_de_chubascos_negro.mw3", + "shuk_ft_reyn.mw3" + ], + "mushroom_clouds": [ + "atardecer.mw3", + "greenshroom.mw3", + "oilshroom.mw3", + "original_aqua.mw3", + "original_blue.mw3", + "original_yellow.mw3", + "riesgo_de_chubascos.mw3" + ], + "mushroom_forest": [ + "atardecer.mw3", + "autumn.mw3", + "count_shroomcula.mw3", + "cursed_gold.mw3", + "dark_green.mw3", + "lifeless_gray.mw3", + "original.mw3", + "snow_dark.mw3", + "snow_green.mw3" + ], + "mushroom_hills": [ + "atardecer.mw3", + "atardecer_naranjo.mw3", + "atardecer_verde.mw3", + "future.mw3", + "original.mw3", + "riesgo_de_chubascos_azul.mw3", + "riesgo_de_chubascos_cafe.mw3", + "riesgo_de_chubascos_negro.mw3", + "watermelon_skies.mw3" + ], + "mushroom_stars": [ + "atardecer.mw3", + "cool.mw3", + "dark_night.mw3", + "halloween.mw3", + "light_pollution.mw3", + "midas.mw3", + "original_green.mw3", + "original_night.mw3", + "purpleish_night.mw3", + "riesgo_de_chubascos.mw3" + ], + "mushroom_cave": [ + "argent_cave.mw3", + "glowing_mushroom.mw3", + "green_aqua.mw3", + "ice.mw3", + "original.mw3", + "really_dark.mw3", + "toxic.mw3" + ], + "forest": [ + "agnian_queen.mw3", + "atardecer.mw3", + "frozen.mw3", + "halloween.mw3", + "kevesi_queen.mw3", + "original_dark.mw3", + "original_fall.mw3", + "original_green.mw3", + "sakura.mw3", + "snow_dark_leaves.mw3", + "snow_green_leaves.mw3" + ], + "logs": [ + "brawler.mw3", + "evening.mw3", + "mahogany.mw3", + "not_quite_dawnbreak.mw3", + "original.mw3", + "riesgo_de_chubascos.mw3" + ], + "clouds": [ + "atardecer.mw3", + "charcoal.mw3", + "cloudy.mw3", + "cotton_candy.mw3", + "original_green.mw3", + "original_orange.mw3" + ], + "castle_pillars": [ + "agnus_castle.mw3", + "cheese.mw3", + "chocolate_blue.mw3", + "dark_aqua_marine.mw3", + "dollhouse.mw3", + "gold_caslte.mw3", + "keves_castle.mw3", + "original_gray.mw3", + "original_green.mw3", + "original_mustard.mw3", + "original_white.mw3", + "pink_purple.mw3", + "purple_pink.mw3", + "sand_gray.mw3", + "sand_green.mw3", + "shenhe.mw3", + "whatsapp.mw3" + ], + "castle_windows": [ + "brawler_pink.mw3", + "cheese.mw3", + "dark_aqua_marine.mw3", + "dollhouse.mw3", + "original_brown.mw3", + "original_gray.mw3", + "original_water.mw3", + "red_castle.mw3", + "shenhe.mw3", + "underwater.mw3", + "water.mw3", + "whatsapp.mw3" + ], + "castle_wall": [ + "cheese.mw3", + "dollhouse.mw3", + "grand_marshall.mw3", + "hot_wall.mw3", + "original.mw3", + "sand_green.mw3", + "shenhe.mw3", + "water.mw3" + ], + "castle_small_windows": [ + "dark_lava.mw3", + "dark_purple.mw3", + "dollhouse.mw3", + "forgotten_temple.mw3", + "original_gray.mw3", + "original_volcanic.mw3", + "original_water.mw3", + "sand_gray.mw3", + "sand_green.mw3", + "shenhe.mw3", + "water.mw3", + "whatsapp.mw3" + ], + "ghost_house": [ + "brawler_cyan.mw3", + "brawler_orange.mw3", + "brawler_purple.mw3", + "creepypasta.mw3", + "crimson_house.mw3", + "golden_house.mw3", + "halloween_pallet.mw3", + "orange_lights.mw3", + "original_aqua.mw3", + "original_blue.mw3", + "original_dark.mw3", + "original_white.mw3" + ], + "ghost_house_exit": [ + "evening_exit.mw3", + "golden_house.mw3", + "original.mw3", + "original_blue_door.mw3", + "underwater.mw3" + ], + "ship_exterior": [ + "blue_purple.mw3", + "doc_ship.mw3", + "grey_ship.mw3", + "original.mw3", + "reddish.mw3" + ], + "ship_interior": [ + "blue_purple.mw3", + "bocchi_hitori.mw3", + "bocchi_rock.mw3", + "brawler.mw3", + "grey_ship.mw3", + "original.mw3" + ], + "switch_palace": [ + "blue_grid.mw3", + "brawler_brown.mw3", + "cafe_claro.mw3", + "color_del_gato_2.mw3", + "color_de_gato.mw3", + "green_grid.mw3", + "gris.mw3", + "mario_pants.mw3", + "monado.mw3", + "morado.mw3", + "negro.mw3", + "onigiria.mw3", + "original.mw3", + "original_bonus.mw3", + "pink.mw3", + "red_grid.mw3", + "verde.mw3", + "verde_agua.mw3", + "yellow_grid.mw3", + "youbonus.mw3" + ], + "yoshi_house": [ + "choco.mw3", + "monocromo.mw3", + "neon.mw3", + "nieve.mw3", + "night.mw3", + "original.mw3", + "strong_sun.mw3" + ] +} \ No newline at end of file diff --git a/worlds/smw/data/palettes/level/ship_exterior/blue_purple.mw3 b/worlds/smw/data/palettes/level/ship_exterior/blue_purple.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..2e098de76404e6c399e3b5e06fbd264d83c28b36 GIT binary patch literal 514 zcmZQzxLdzU=d6X0FPmkS@7c)7#S9F;d0y*-=)3jxx**b#CsAaP3POH$)&F{s{A{^; zYmhtx14NcT=}H*`!+#)Ofmw_}o}r#`J`+S9VFFCP)nNdBB91A|1eN&VFN zA3(hj{SC|?<$p5&_lM};ZuC2yfk}b+0W$*z0NLLlU|++a_`p^n9YY%IK5-3s2Tj+t zkpgL$@*w*Pc|m@OPnM0~Vvx5y;=%iQH@E=J2 zKchVJf9CBB_CWta+>h`dh|iI`HrKEYSsvj(kh~y+I54~*^5`xE$v)Z^(Ve+*ma-siI<*PyR z=PVf*B$7?)r`G=f>V@cUVE!oolli|tME`c9-{}lY3d|3f8886IP8MGK8i)%pq`~eJ z*N}J6bX^-MkcKG_vagUA*fj9JyK@zquT z>p}Evxq54mJOhK5=2}xjw<$rE=?o12fqVsKF$Q^tddB%o5c#Dd&t)KLVDhyla-siI z<*PyR=PVf*B$7?)r`G=f>V@cUVE!oolli|tME`c9-{}lY3d|3f8886I{%pnn>PA}E z&8odIq`~eJ*N}J6bX^-MkcKG_vagUA*fj9JygnDPLa{Cvs) literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/ship_exterior/original.mw3 b/worlds/smw/data/palettes/level/ship_exterior/original.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..20eec6ee80bedadf37912970c3927695055d3c49 GIT binary patch literal 514 zcmZQzxLbcB;7nw0(CY}F)C*CQiy0Vx^Sssv(Rb_XbwOl9tY!V=x)rG&VH)8e@zquT z>p}Evxq54mJOjf?4nN7uniY1k!3+%lfqVsKF$Q^tddB%o5cv}#oU%EZ=S_{AVDhyl za-siI<*PyR=PVf*B$7?)r`G=f>V@cUVE!oolli|tME`c9-{}lY3d|3f8886I{z6{+ z8lY>0|KpGs*N}J6bX^-MkcOchY+oTS$S?89vJqSi@|H(jIQ$CIw;9|w1(^qO&pFE} zK@!PxisN-)?nC$wB>$gLp7}rXb_RQ(e<05u<*e0E^2-)8^)2D0YpvLN>u>G67X2zV*xYM!^nlm`H@hI|kJ literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/ship_exterior/reddish.mw3 b/worlds/smw/data/palettes/level/ship_exterior/reddish.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..674aafd0c0a6a2dda0b9a295989935373b814a51 GIT binary patch literal 514 zcmZQzxLfZka9TlFH$&u|hMDc;Vg`oaJg@aZ^xgV;T@cw2Ygun@XlT04^_MS5e0A0T zdJsKZuHG6X&%lr&@lK`K^rvH;9|OaGAYXx5j6t5Eo^d`CM1F+~x2m7+2Gh^BF!@>& zxzPWq^3@>ubCwJY63Hg@Q|o^K^+NPFFn^T)$^73RqJO*5?{o$x1?C6L3>W}pXNH7* z4a5Z)(qQ+AYsfojx~`2BNW+u|*;mL5@=JWOYy=mByyX!W4!?r*Z3g#E{{!s<$)B^F z5+sp4r#M~*=01e~K=S_?<(dC8Z)dOv`WNDUg#SQ%j@-4mhIPpD2>*fP1sTMF;RTUL vcOgjr0pkOv2T=2|$!7=V`fc{#Zy;-qE(>yxkshyChk%!2uI71Q_@e^=o!@%I literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/ship_interior/blue_purple.mw3 b/worlds/smw/data/palettes/level/ship_interior/blue_purple.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..9ac0f022af3db2dcb4559286a7c215015b18d7a7 GIT binary patch literal 514 zcmZQzxLdzU=d6X0@Akx~ESciT#S9F;d0y*-=)3jxx**b#CsAaP3Y%q?@7YL@`0A?v z^&on-T)j0&o`C@(%b#?mjDg`lkgvcj#vsp7&p4k6B9AZuCSPkJ7y3U{z8WNd&XR#a zBH5&VYW)wOUWon%=8y6}ng9Dk^lvx%ozB3d!2E!j0Rw>SZxFDrVNiTvtB{T%4R)Wn zhP;EO>)J?xG)#GreTBRrzr-iYMsP96TOM)Y@GD5)W^mv1KhQpq{5i`hK@!PxisN-) z?nC$wB>$gLp7}rXb_RQ(e< a05u<*d_mpiIb3@`0A?v z^&on-T)j0&o`Io7=9qz|V|M7;R0f9sK)wRA7=t`RJ>z^Pi2O+bZc#ni0>$ZmF!@>& zxzPWq^3@>ubCwJY63Hg@Q|o^K^+NPFFn^T)$^73RqJO*5?{o$x1?C6L3>W}pe<81Z z4bU~h|8dBRYsfojx~`2BNW;($wy%&EJstYLNUnO9lpsWRv=-^*?}mA^IDbKg$1P{_hXbzuo9}Is=me^8;oE3;?pfkk`Hj z=o;bwION4O8_2KP-t=7HRE&T>kS zMDm>CcpaGg5dH(n|7VnE{?ELf!5-*ei2D)#1MxX>*XA15A}FR hAo&N3511Z6&BrERPz^Ph&-FDhhmrJ8$&-Un0&2? zTgH`w;#E$^U1RXa3K;oxvXHUx@n={sZwja@Xb>)*;Iy{0EX3WDp027epT2 ig&_F{j1QO|K+VS{Ur=|s&a8fBy}SduET;R>RR93Jdw87y literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/ship_interior/grey_ship.mw3 b/worlds/smw/data/palettes/level/ship_interior/grey_ship.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..786802304f335dde42c0a687bff76a19fc2d42ce GIT binary patch literal 514 zcmZQzxLe;U@KPpE_p@!8-_N+o#S9F;d0y*-=)3jxx*#%J^Sx!U*R?3i^f|>K@zquT z>p}Evxq54mJOhK5=2}xjw<$rE=?o12fqVsKF$Q^tddB%o5c#Dd&t)KLVDhyla-siI z<*PyR=PVf*B$7?)r`G=f>V@cUVE!oolli|tME`c9-{}lY3d|3f8886Ye%1f#=PZNV zzDHq5gWV^tA@88+x;9cE4O1RuUm-8ZFY(E;5nK%NmPcGT{0h>y8QeGh53~;?f6j7B zkVNvF;&>gH`w;#E$^U1RXa3K;oxvXHUx@n={sZwja@Xb>)*;Iy{0EX3WDp027epT2 ig&_F{j1QO|K+VS{Ur=|s&a8fBy}SduET;R>RR92&9Dc(9 literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/ship_interior/original.mw3 b/worlds/smw/data/palettes/level/ship_interior/original.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..a208db211f51dd7967c5d1e2d5702488d0b9d7ed GIT binary patch literal 514 zcmZQzxLeP_a8$)pcdc%)l7#)_Vg`oaJg@aZ^xgV;T@aZd&?vE3=7|iarnf3ce0A0T zdJsKZuHG6X&%kh!!%yFayJXAYXx5j6t5Eo^d`CME-;br)-Yqc~c`Nn0&2? zTgH`w;#E$^U1RXa3K;oxvXHUx@n={sZwja@Xb>)*;Iy{0EX3WDp027epT2 ig&_F{j1QO|K+VS{Ur=|s&a8fBy}SduET;R>RR91#$av}i literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/switch_palace/blue_grid.mw3 b/worlds/smw/data/palettes/level/switch_palace/blue_grid.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..d613b8061deb3310e59c1ff98d2adeb268aa28e4 GIT binary patch literal 514 zcmZQzxLcnj!tKid1RImet0xyTF#P6utq-E_*4OKTNCpPE>iN|(>%Z0isRxO#uKEwA zXUo-FL*!pF@GAAO8cS_AVqo|WRIk7+#vsp7&p4k6BL6`5K~TMDypg>(Oup7cF7$t@ zd^Je^oFxN;M6yZ!)cPMly%7Bk%pc`{GXM97=-+PiJDq_^f%yS5$epMFBY zg#TlaXJFv=71xk=K-Godf$S^f1^FdDSvG=;LEiF+3x{7p`Zk06rXce`^5-n41W6>% zDUR2Hxewt#koc-C!jNdvsZldz4j=n5x>fxjpy842Aj804FSX7XSbN literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/switch_palace/brawler_brown.mw3 b/worlds/smw/data/palettes/level/switch_palace/brawler_brown.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..a3073c31adca276933a73da4fe5187fd14cb73e7 GIT binary patch literal 514 zcmZQzxLcnj;%0i*uv>FuQhD{{Vg`oaJg@aZ^xgV;T@cB@AXh!VdS?B%`aks`@zquT z!SrmodTWUMO9o!0)0PHyo4ptq{sYx3FpDwBGt@KAXM)H-(0ve8FB)%T?+uf$HIWPb zpDJGsl0Rq3z#x%qQa`o+2T(6We*^PJ`Jc@H{UQ3d8~sjaU{YXyz|4RFK<+E#wXXrX zM)*Gtd2tPS2V=WXw`qPD+QIe}@`C&lpDY`}#UO8a#D&AJAbp#`eN&KmAorZJoDw9F zJf}Eb2j)J6|3LEp8ReP(GjC_G2l^M{euV!(e2(0;xrTMf@(BNd}Q@k1h*xkFx3!Q&qb*x95KH4(RgpqX8dweTD!4 literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/switch_palace/cafe_claro.mw3 b/worlds/smw/data/palettes/level/switch_palace/cafe_claro.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..90ffc5cf73f8caf0c9e92d7ce04a6b688c9b556a GIT binary patch literal 514 zcmZQzxLcnj;%2HNyHR&zQhD{{Vg`oaJg@aZ^xgV;T@cB@AXh!VdS?B%`aks`@zquT z!SrmodTWUMO9o!0K2~F??M4g?|AFcin8g_68R{A5GeP7Z=spOl7mYWv_lC*Wn#hIz zPnE9*$)B@iV30^Qsh?W^1E?3Gzk&Iq{7>fp{t*4!jee&yFexxUU}nGoAomsW+SdSG zBm5tSytszE1IUM=b{N{h_7(Di{1Trm8^OgOZ+XOp!>=HHo56ikka-~YoU@z~B#}I) zI9>+_kxeb;$Av|AFKM8N`9%1(8R0AxQoK r;{&D#Q1h|LA64#(3v!RL>Jd{_yEeDye)10J^7Eqswefr( literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/switch_palace/color_de_gato.mw3 b/worlds/smw/data/palettes/level/switch_palace/color_de_gato.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..b5ba743bfae9cf2bb8443b692f0b4f6ae023912d GIT binary patch literal 514 zcmZQzxLcnj;$|AlSj)6Asl0k}F$2SIp4a*y`fh!_E{J4ckgJ|wJ+uB>{hxY}`0A?v zV0yM(y){JsB?GTgAFHv{b|VIc|3LK$%wi1k4E2ojnIQ5HbRPuOi^dz-d&A^wP2@uV zr^;7@DvtMn}W;($)B^F5+sp4 zr#M~*=01e~K=S_?<(dC8Z)dOvnh$Y5!haw>NAB8O!#ZSng#SSDf(+uo@Pf!=bKe8T r2TTv3=3|pTs^Y1;RySBl!X8}~rE=SKqoqbPe_ literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/switch_palace/color_del_gato_2.mw3 b/worlds/smw/data/palettes/level/switch_palace/color_del_gato_2.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..9c52a56a872a27b8dff95fb1439873ffd3a28293 GIT binary patch literal 514 zcmZQzxLcnj;%53?pjvWcQhD{{Vg`oaJg@aZ^xgV;T@cB@AXh!VdS?B%`aks`@zquT z!SrmodTWUMO9o!0K2~F??M4g?|AFcin8g_68R{A5GeP7Z=spOl7mYWv_lC*Wn#hIz zPnE9*$)B@iV30^Qsh?W^1E?3Gzk&Iq{7>fp{t*4!jee&yFexxUU}nGoAomsW+SdSG zBm5tSytszE1IUN}fc`-TAo~h=L4Ju(mW|+IkheVI!r@ntzRlpiDabsK{5i`hK@!Px zisN-)?nC$wB>$gLp7}rXb_RQ(eIN%G*rUsW+@q{|#8lO;&F#6LyaT%Y{Ad8bl6{{5 literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/switch_palace/green_grid.mw3 b/worlds/smw/data/palettes/level/switch_palace/green_grid.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..3a8ded956b435a03b03666b57f3ea4cd54bcc57b GIT binary patch literal 514 zcmZQzxLcnj!tKid1RImet0xyTF#P6utq-E_*4OKTNCpPE>iN|(>%Z0isRxO#uKEwA zXUo-FL*!pF@GAAO8cS_AVqo|WRIk7+#vsp7&p4k6BL6`5K~TMDypg>(Oup7cF7$t@ zd^Je^oFxN;M6yZ!)cPMly%7Bk%pc`{GXM97=-+PiJDq_^f%yS5$epMFBY zg#Tla2dZWi*N}HW)rH`J>?`C2`6WJCHiC;m-tveGhhIVZHiP@7AoD=-=PaiLNhHrH zj@N;?58*$M{C`Gy=Ksvw8SH`ng}5K#KM;5h569{#y5As literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/switch_palace/gris.mw3 b/worlds/smw/data/palettes/level/switch_palace/gris.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..8e8df8008bb40d0a7d1988bb227c4fa1731010db GIT binary patch literal 514 zcmZQzxLcnj;$}J}NFsS-QhD{{Vg`oaJg@aZ^xgV;T@cB@AXh!VdS?B%`aks`@zquT z!SrmodTWUMO9o!0K2~F??M4g?|AFcin8g_68R{A5GeP7Z=spOl7mYWv_lC*Wn#hIz zPnE9*$)B@iV30^Qsh?W^1E?3Gzk&Iq{7>fp{t*4!jee&yFexxUU}nGoAomsW+SdSG zBm5tSytszE!#PVsw<$pw+QIe}@`C&lpDY`}#UO8a#D&AJAbp#`eN&KmAorZJ1clF> z;&>gH`w;#E$^U1RXa3K;oxvXHUx@n={sZwja@Xb>)*;Iy{0EX3WDp027epT2g&_F{ sj1QO|K+VS{e^kX&cdc%)l7v0FEXX~|sz*#!?b_U)`^h_?%g>Jn0OBZp0{{R3 literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/switch_palace/mario_pants.mw3 b/worlds/smw/data/palettes/level/switch_palace/mario_pants.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..b18aee2e184171a3b62dc46b3b9f725efe844799 GIT binary patch literal 514 zcmZQzxLcnj!tKk&AaA)bsl0k}F$2SIp4a*y`fh!_E{J4ckgJ|wJ+uB>{hxY}`0A?v zV0yM(y){JsB?GTgAFHv{b|VIc|3LK$%wi1k4E2ojnIQ5HbRPuOi^dz-d&A^wP2@uV zr^;7@+_kxeb;$Av|AFKM8N`9%1(8R0AxQoK;{&D# nQ1h|LA64#(3v!RL>Jd{_yEeDye)10J^7EqsawvPU literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/switch_palace/monado.mw3 b/worlds/smw/data/palettes/level/switch_palace/monado.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..c37acf989847366753986709d39c92b78c2dee1b GIT binary patch literal 514 zcmZQzxLcnj;%1sFpkcZ(sl0k}F$2SIp4a*y`fh!_E{J4ckgJ|wJ+uB>{hxY}`0A?v zV0yM(y){JsB?GTgAFHv{b|VIc|3LK$%wi1k4E2ojnIQ5HbRPuOi^dz-d&A^wP2@uV zr^;7@4{^34C4w=>uS{R?qF!haw>NAB8O!#ZSng#SSDf(+uo@Pf#r wyAUM*fbjv-1E~4faNudR+6wsmj$^;S@npis$HAgb3b_pbou$w0C>QBCIA2c literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/switch_palace/morado.mw3 b/worlds/smw/data/palettes/level/switch_palace/morado.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..ab495c8b33b658f4539317aa5dc7da23923d8cf5 GIT binary patch literal 514 zcmZQzxLcnj;%2Jn8xp!Psl0k}F$2SIp4a*y`fh!_E{J4ckgJ|wJ+uB>{hxY}`0A?v zV0yM(y){JsB?GTgAFHv{b|VIc|3LK$%wi1k4E2ojnIQ5HbRPuOi^dz-d&A^wP2@uV zr^;7@tGAkMJLe&yl+}*RT#*9^pTbydZ-(FuWl0=q?1w tKVW>o^Z;r;Hu<9}p1NywgOw!g(PcsIQC2--s%qEf_S{e20bPE6GyuHnd?)|_ literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/switch_palace/negro.mw3 b/worlds/smw/data/palettes/level/switch_palace/negro.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..dd9db46ffdea238a8bc241c3948f2fe143f2385e GIT binary patch literal 514 zcmZQzxLcnj;%0hGB3pN3QhD{{Vg`oaJg@aZ^xgV;T@cB@AXh!VdS?B%`aks`@zquT z!SrmodTWUMO9o!0K2~F??M4g?|AFcin8g_68R{A5GeP7Z=spOl7mYWv_lC*Wn#hIz zPnE9*$)B@iV30^Qsh?W^1E?3Gzk&Iq{7>fp{t*4!jee&yFexxUU}nGoAomsW+SdSG zBm5tSytszE0|UcS5lvML?O^)~c|m@OPnM0~Vvx5y;=LsJ19Kn3e<1n)jPlI?nYT081N{qeKf-??K1c4_T*EqKd4&H!@`4QF!0>{|qq`6! t|A6rU(*vma*yN9@cG*(EyN*d%FMt literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/switch_palace/onigiria.mw3 b/worlds/smw/data/palettes/level/switch_palace/onigiria.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..7632dc08b226eca8998e5e06798767184ed6748d GIT binary patch literal 514 zcmZQzxLcnj;%2I;tLwQjsl0k}F$2SIp4a*y`fh!_E{J4ckgJ|wJ+uB>{hxY}`0A?v zV0yM(y){JsB?GTgAFHv{b|VIc|3LK$%wi1k4E2ojnIQ5HbRPuOi^dz-d&A^wP2@uV zr^;7@LsJ19Kn3e<1n)jPlI?nYT081N{qeKf-??K1c4_T*EqKd4&H!@`4QF!0>{|qq`6! t|A6rU(*vma*yN9@cfp{t*4!jee&yFexxUU}nGoAomsW+SdSG zBm5tSytszEgQn}+NP#pA?O^)~c|m@OPnM0~Vvx5y;=LsJ19Kn3e<1n)jPlI?nYT081N{qeKf-??K1c4_T*EqKd4&H!@`4QF!0>{|qq`6! t|A6rU(*vma*yN9@cy8QeDonFn&uIm;~8`{!cwfe09}- zFg;tY-WnqRl7UyLkJVUeyAcD!f1r8=W-$hNhI+>NOc418x(|ZtMdOX^yZjKK0P2P4Z(#l?|C9N@KScj_qu=QaObW~om>Dnt$bE&p_BBA) z2>-_+FRmf)z;FA_=WYy!cCdYgydb~CC(A}~G00mUapCYQNZ)2~-xOpX$UWyQrvynP z&nb@Afw>RiKal)?MtSD{%-b34f&PWKAK^a`pCfl|u3;UrJi>ngPyZ1P7{JayOV1}jO}qsxNaqpW(wRMoD{?YW=41G@bDXaI5gdhP%K literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/switch_palace/red_grid.mw3 b/worlds/smw/data/palettes/level/switch_palace/red_grid.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..1336dc83468039d90876692cc112596cd79bd549 GIT binary patch literal 514 zcmZQzxLcnj!tKid1RImet0xyTF#P6utq-E_*4OKTNCpPE>iN|(>%Z0isRxO#uKEwA zXUo-FL*!pF@GAAO8cS_AVqo|WRIk7+#vsp7&p4k6BL6`5K~TMDypg>(Oup7cF7$t@ zd^Je^oFxN;M6yZ!)cPMly%7Bk%pc`{GXM97=-+PiJDq_^f%yS5$epMFBY zg#TlaX8^iHTtnUgRTqK>vagUA+_kxeb;$Av|AFKM8N`9EgvcXY24R8Z rA22>(dH^*aoBUA~Pu;b;!AcVL=&~U9D61YZRkdq#d+vuB3iG1@=e&2` literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/switch_palace/verde.mw3 b/worlds/smw/data/palettes/level/switch_palace/verde.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..92515d0c32f5169b0017cd26063b42750298e4be GIT binary patch literal 514 zcmZQzxLcnj;%3^;`;vEKQhD{{Vg`oaJg@aZ^xgV;T@cB@AXh!VdS?B%`aks`@zquT z!SrmodTWUMO9o!0K2~F??M4g?|AFcin8g_68R{A5GeP7Z=spOl7mYWv_lC*Wn#hIz zPnE9*$)B@iV30^Qsh?W^1E?3Gzk&Iq{7>fp{t*4!jee&yFexxUU}nGoAomsW+SdSG zBm5tSytszEgB$M(UM@Zi?O^)~c|m@OPnM0~Vvx5y;=LsJ19Kn3e<1n)jPlI?nYT081N{qeKf-??K1c4_T*EqKd4&H!@`4QF!0>{|qq`6! t|A6rU(*vma*yN9@cfp{t*4!jee&yFexxUU}nGoAomsW+SdSG zBm5tSytszE1IUL7ei+)p_7(Di{1Trm8^OgOZ+XOp!>=HHo56ikka-~YoU@z~B#}I) zI9>+_kxeb;$Av|AFKM8N`9%1(8R0AxQoK r;{&D#Q1h|LA64#(3v!RL>Jd{_yEeDye)10J^7Eqs$>Mz4 literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/switch_palace/yellow_grid.mw3 b/worlds/smw/data/palettes/level/switch_palace/yellow_grid.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..c41276492eb0ccc73add33198c80b001d1874c60 GIT binary patch literal 514 zcmZQzxLcnj!tKid1RImet0xyTF#P6utq-E_*4OKTNCpPE>iN|(>%Z0isRxO#uKEwA zXUo-FL*!pF@GAAO8cS_AVqo|WRIk7+#vsp7&p4k6BL6`5K~TMDypg>(Oup7cF7$t@ zd^Je^oFxN;M6yZ!)cPMly%7Bk%pc`{GXM97=-+PiJDq_^f%yS5$epMFBY zg#TlaXJDuo7T1t>K-Godf$S^f1^FdDSvG=;LEiF+3x{7p`Zk06rXce`^5-n41W6>% zDUR2Hxewt#koc-C!jNdvsZldz4j=n5x>fxjpy842Aj80BACJQ2+n{ literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/switch_palace/youbonus.mw3 b/worlds/smw/data/palettes/level/switch_palace/youbonus.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..b213f566079581f1d272ed2ce0207c6749b38fab GIT binary patch literal 514 zcmZQzxLcnj;%2ID$q}|Osl0k}F$2SIp4a*y`fh!_E{J4ckgJ|wJ+uB>{hxY}`0A?v zV0yM(y){JsB?GTgAFHv{b|VIc|3LK$%wi1k4E2ojnIQ5HbRPuOi^dz-d&A^wP2@uV zr^;7@LsJ19Kn3e<1n)jPlI?nYT081N{qeKf-??K1c4_T*EqKd4&H!@`4QF!0>{|qq`6! t|A6rU(*vma*yN9@cp}Evxq54mJOjf~6;It`I?HVH^B5TZ1NjQfVhr*O^^EhGAo5}i(hTv8@=Wr~F!@>& zxzPWq^3@>ubCwJY63Hg@Q|o^K^+NPFFn^T)$^73RqJO*5?{o$x1?C4p{pbK>e<81Z z4bU~h|8dBRYsfojx~`2BNJG~Rv9FL9JuvF%l%5xn}&z{i9#S9F;d0y*-=)3jxx(q=1hFHsbzPLpaZl=q9LE@{c z{?~)(*>d&PAbAD`4!?qQR?TIOE0Y)){?{`wC@_mL$TQS4&S!$ib2IQV7zutAHIstL z*P6(M{!f*!2FYuxGB5;rt<4k2E(e+g(ci%QQT`|Me}9Pn51PNz(?vCv)@U(c0FeEK zy!JJhWp}CBm}5wT-RCKjZ*a_n!_zAkyZmd8O}rI+@yW6gTnzG-M_fSu*=BIx^glDi zeofULLjk8^zsn9V_o4c4n`niQ75`b0uaYo%WdAWRyl~+RU6+Y0kLo``2613`LFCb0 r2=bq+=n2IvE!^_ifw_L0{r4NlV)eg~9lVAo0~z z|LZ~YY`J=CkURqehhIT@8_z3=Tulas|Md(E3d~{*@(lHi^O+#>+zh-7MuJ~O&7@%R zwI*_*|5N3wLGqfa3=BbDYx4xM%YkM=^fxenl>f>6-yfp?gXZt_bWu&EHChZ90Azn5 zuYJvB*gH`w;#E$^U1RXa3K;oxvXHUx@n={sZwja@Xb>)*;Iy{0EX3WDp027epT2 wg&_F{j1QO|K+VS{pBYEXX}Zdc0m80$z%_n&)lNb%7 literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/water/murky.mw3 b/worlds/smw/data/palettes/level/water/murky.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..57ea1ce44f5e72698c17e239141e7b54c163b17a GIT binary patch literal 514 zcmZQz*j2t*f=y9PHBd&PAo;~2shY% zUuz;4`ae~^8YKV5aj}S5`o!`r)jNQEi2erVkMcj6|NBGqZ#Vj#{!sUT-2-O^3;?qK zgP?uQExBm*+xi&NVE1k2u#)sJd>yD8hh08Ta)w^4b9}OF1Q&z68_2KP<> zGehj>aoQYamOi7n))nSHRR38E)$`xe4-ve>29rnj-(r!rK)<|?b;$Cl{_E$s#v{WE wkwF7s2x80&%YfeM-h096fzpa1{> literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/water/oil_spill.mw3 b/worlds/smw/data/palettes/level/water/oil_spill.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..ac1ffed27f62b1137ec363aebc34115fd4b19d87 GIT binary patch literal 514 zcmZQzxLcph1A#39EdrB^85n-^yw(TNckAnQL1aU$W&JUU7J;QAOGQB9tE>LkgXr0E z_0}MH28I)n=Zabcj!9^$GBErH@)elH7~~o18Rs)W(dH^*an|yX)uHR<={RXn;=&~U980qnPbqIJV=4zg|MVEKt002gCeFp#l literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/water/original_brown.mw3 b/worlds/smw/data/palettes/level/water/original_brown.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..5f5366cebd110b6b7a55f1fbf5a4f1665ef1d4db GIT binary patch literal 514 zcmZQzxLbcB;7nw0(CY}F)C*CQiy0Vx^Sssv(Rb_XbwOl9tY!V=x)rG&VH)8e@zquT z>p}Evxq54mJOjf?4nN7uniY1k!3+%lfqVsKF$Q^tddB%o5cv}#oU%EZ=S_{AVDhyl za-siI<*PyR=PVf*B$7?)r`G=f>V@cUVE!oolli|tME`c9-{}lY3d|3f8886I{z6{+ z8lY>0|KpGs*N}J6bX^-MkcOchY+oTS$S?89vJqSi@|H(jIQ$CIw;9|w1(^qO&pFE} zK@!PxisN-)?nC$wB>$gLp7}rXb_RQ(e<05u<*e0E^2-)8^)2D0YpvLN>u>G67X2zV*xYM!@6mv4v#0J7tJ?EnA( literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/water/original_gray.mw3 b/worlds/smw/data/palettes/level/water/original_gray.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..b5087eccbed5ca09f590dc7d4c7288b950064b7b GIT binary patch literal 514 zcmZQzxLbcB;7nw0(CY}F)C*CQiy0Vx^Sssv(Rb_XbwOl9tY!V=x)rG&VH)8e@zquT z>p}Evxq54mJOjgt$a6)fEe-58doeKl2l5q|#Teun>KW%VLFC04q#5EF<(cG}Ve+*m za-siI<*PyR=PVf*B$7?)r`G=f>V@cUVE!oolli|tME`c9-{}lY3d|3H`q2T%{z6{+ z8lY>0|KpGs*N}J6bX^-MkcO@sVqYOI$S?89vJqSi@|H(jIQ$CIw;9|w1(^qO&pFE} zK@!PxisN-)?nC$wB>$gLp7}rXb_RQ(e<05u<*e0E^2-)8^)2D0YpvLN>u>G67X2zV*xYM!@6mv4v#0I1}AC;$Ke literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/water/original_green.mw3 b/worlds/smw/data/palettes/level/water/original_green.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..6697f2839edc0baec036037589d7dc6746935572 GIT binary patch literal 514 zcmZQzxLbcB;7nw0(CY}F)C*CQiy0Vx^Sssv(Rb_XbwOl9tY!V=x)rG&VH)8e@zquT z>p}Evxq54mJOjf^#x+d(%rlw)1v4=G2l5q|#Teun>KW%VLF5^Lpx@?3VtpM+HAw!PB?E&*vPu2a`X4~O5d96zALV~C|M!RJ-){6foqtGAkMJLe&yl+}*RT#*9^pTbydZ-(FuWl0 x=q?1wKVW>o^Z;r;Hu>zpT))l!`we8x(PcsIG1BAp>Jac!%+)+^i!R>~3jj0+eLMgF literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/water/original_mustard.mw3 b/worlds/smw/data/palettes/level/water/original_mustard.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..bf14a8cb157e0ac7a87163cea6a81c71e0e9d307 GIT binary patch literal 514 zcmZQzxLbcB;7nw0(CY}F)C*CQiy0Vx^Sssv(Rb_XbwOl9tY!V=x)rG&VH)8e@zquT z>p}Evxq54mJOjf^241B;R%5B{Mhp!9fqVsKF$Q^tddB%o5cvnX4}$7NV@cUVE!oolli|tME`c9-{}lY3d|3f8886I{z6{+ z8lY>0|KpGs*N}J6bX^-MkcOchY+oTS$S?89vJqSi@|H(jIQ$CIw;9|w1(^qO&pFE} zK@!PxisN-)?nC$wB>$gLp7}rXb_RQ(e<05u<*e0E^2-)8^)2D0YpvLN>u>G67X2zV*xYM!@6mv4v#07%k(Qvd(} literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/water/original_volcanic.mw3 b/worlds/smw/data/palettes/level/water/original_volcanic.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..ef22bf7bf6a0f10c77cd5cc8c7e52859bfb75d04 GIT binary patch literal 514 zcmZQzxLbcB;7nw0(CY}F)C*CQiy0Vx^Sssv(Rb_XbwOl9tY!V=x)rG&VH)8e@zquT z>p}Evxq54mJOjf~6;Iu@y1_~k_6!XFfqVsKF$Q^tddB%o5P2~MX@+=4c_w*gn0&2? zTgH`w;#E$^U1RXa3K;oxvXHUx@n={sZwja@Xb>)*;Iy{0EX3WDp027epT2 wg&_F{j1QO|K+VS{pBYEXX}Zdc0m80$z%_n&)lN0F>W)X8-^I literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/water/pickle_juice.mw3 b/worlds/smw/data/palettes/level/water/pickle_juice.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..a27ebcfd89750ea2e47c9b4979b175c517aa673d GIT binary patch literal 514 zcmZQzxLePoR;kTzo+(u%7UDm-n1SIp&ue`UeYd_|7eqG1TGmI#rwFpky;K8ByERXOXNM4XZ z92i~@d2|LkgXr0E_0}MH z1_p>6NIwI^e;{8r7-S-Z50cN;eQ#UrCy_h{s0$>oz+7u07y3U{z8a+eoFxN;M6yZ! z)cPMlIf#4%^GErg%>Vr%=5IIpozB1{8~lKo0Rw={FXXkaf!T+y0Ns7)@*w*Pc|m@O zPnM0~Vvx5y;=1iQQfbFGP7=>JstYLNUnO9lpsWRv=-^*?}mLHZS#8<;=J|78B} z57EEf=yy5;)12Z5%nTR+WPc&AeGSC@7}6N-LstQ^uaFnym-uAa2rdSB%Ofrveg)~< z4DOr$2igacKW8~52oyT;I+*?g$wPb#3L%*L5&pw2kMJM5JT~_sn~zQYsEViVTHRnJ Z343%|kb9I>kC>|3wYfd_lXt+B2LL+cg=YW& literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/yoshi_house/neon.mw3 b/worlds/smw/data/palettes/level/yoshi_house/neon.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..caeba2d99f788f827a5a29e8759575cf1723d393 GIT binary patch literal 514 zcmZQzxLeOq!vF$ca&j>P!*8C~`XKsleZ4M-gvx^zfy7r={jUenv*qfoL4pd*U@15u z4`)FbsPg~oK{{$pB0%jee&y zFflMZK(h&C{@wcj%!R!65I>;VjLm*@B_R6>c|m@OPnM0~Vvx5y;=wt92qZsj@8KepXAmZr$1BM>dZOHNn|H;G6Lp2v-Cdkh)Ut^aC m*>_aMQ+KUyu#$v5Oc#RwU$3ls#8lO;&F#6LyaPfU#sUDf+*2k1 literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/level/yoshi_house/nieve.mw3 b/worlds/smw/data/palettes/level/yoshi_house/nieve.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..cb27961c6af50adc3dd84cd9a2c8234496789300 GIT binary patch literal 514 zcmZQzxLf}|bZg%CGRykv`n~m&iy0Vx^Sssv(Rb_XbwMOV9zue|S6BT9tD7xXZ;gx1J+6yYO74VI4$1Tlc+fv7bcp9H4HHyaIEriCpOaRQYO<{5eYo28m>o z`lB6JLG~5$ zg8UMnEE~baAa8lZg~P8PeVf63)BiyGK=S7-rv!mqAFqSyKal)?MtSD{%-b34nPBcm z_zxt{k-Ik6unt)s;XjbPAcHuAJOe}?-Tff>2aFGx9ze~vb8h$gi&YUk{R>Emv<1QpLdVT4jqXtEPpUyBh<; ze<0u8O^iXFp`LL*6GT2+_q}bgpG5K;pe~4ft%+Rd|5W*Eko-AI1_p^_llrOkKY)56 z@(s)%<$p5&_lM};ZuC2yfk}b+0W$*z0NG#2YhSa))xxdP4?`O4K5-3s2Tj+tkpgL$ z@*w*Pc|m@OPnM0~Vvx5y;=96M^!v^ f*XjlV?QRFn^T)$^73RqJO*5?{o$x1?C4p^U(pw{z6{+8lY>0|KpGs z*N}J6bX^-MkcO@sVqYOI$S?89vJqSi@|H(jIQ$CIw;9|w1(^qO&pFE}K_J)1>%iQH z@E=J2KchVJf9CBB_CWul`wztD$X%OjScfc+@E=HCkU<<6UJ!Y77lPy;Fg{><05u<* k{81H8-L<;GN)q;s~#~`wQF;G?kDenELF$2SIp4a*y`fh!_E{KH4Lr9SL>ZmJ$c6q-m9GZL zpR;6OkVrPEpIZL|s23vN!2D7EC-Z-Qi2m(Hztb6*6qp|X%|{0y`wMyPYk;m1{*Oam zTtnVL({*j6KpMJkh<$~;Aiu;X%SLc9$Xgz9;qWU+-)3;%6l5OAJ?AW^1c6*1uLI#L zAo&j@|DREw`9Je^2791?L3{;fg#SQ%j@-4mhIPpD2>*fP1sTMF;RTULcOgjr0pkOv o2T=2|$sbkm)Lp9^tR!KNE(>yxvg#32Rl7E~=YH}I=<@%w0RTUKFaQ7m literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/forest/atardecer.mw3 b/worlds/smw/data/palettes/map/forest/atardecer.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..5ce855399b9857bb393bf4cb8002786baa090204 GIT binary patch literal 514 zcmZQzKn0VF85sUETZd0BF0~UfTCa*K%fK+X*gE`wJ&0ytuny0uLzf5fpX+4XzV|JT z`<@3OrBfJ#bm_%g&D->QtH*i)c>D(f3bWGNZwkhnBA7uh|`O4GaHBx zF~45dTmPdw1H*oxPYQYKng9F8C(A}~G00mUapCYQNZ)2~-}FDwe31M*rnR-7n6Gfy zNrCjE0+75IXB{g??p@vZWK=m24Kp1G03qq}3=Gl? Sx^AE2TE!s#!88GXd;kDyk!$P# literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/forest/burnt_forest.mw3 b/worlds/smw/data/palettes/map/forest/burnt_forest.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..58b0648f18e36da4365a6d545a70ecf5a73d739a GIT binary patch literal 514 zcmZQzKn0VF85sUETZd0BF0~UfTCa*K%fK+X*gE`wJ&0ytuny0uLzf5fpX+4XzV|JT z`<@3K=gg*ZFCx z?h=uZi!tW}+h-W`Ep1M9tC+X`M|Y6=1TzJ1P1Ptrt6*gP|C#Sq%h!P9%fmEPx0v>u zg6skDA?DZXLiB^&P{>=){NF!5SvG=;LEiF+3x{7p`Zk06rvI6Np#hYCz__-yfq6TF zJrhVjDgeogF~~D;K=ggTb6T} zu?I@X#h7z~?K2GemNuulRm@xeqdQ1_f|-Ihhgp=LRWP#t|IGKQ>+4b>ov!Kp1G03qq}3=Gl? Qx^AE25aEGt2LAW}0O1;G(EtDd literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/forest/halloween.mw3 b/worlds/smw/data/palettes/map/forest/halloween.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..c3899751bf31b65cccd242e0402f0b9ea5c3c3be GIT binary patch literal 514 zcmZQzKn0VF85sUEU-p??+-1rP4qYC^f3A~l``))W z?t9++Pu#k}=Dx`X5s%x)&USBmnp3P#rd zpZQ+3d<{rG-u-66T*LcnAR9n@i23!p5d9$c6!O+H|M!nimW|+IkheVI!r@ntzRlpi zDabsK`~$|dwGGVMf$j$BM+G2xkZ(A0@9M@UqsoDJAo&KS2h1F~Qfildu**NFQ>bsK be*lD}%QG-YGw8Z~jzfe8x*4ePfi4RGbnI~U literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/forest/ice_forest.mw3 b/worlds/smw/data/palettes/map/forest/ice_forest.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..32d62829bd5c4e0a1a2f6e8c2b46efc9275d8f9a GIT binary patch literal 514 zcmZQzKn0VF85sUE7spL5e(#%Y`&W3-_OWUx1ad|^PhT%ytd=|(BPy}sh#z~)gaaWk`;D#;RK=ggTb2hW z1y@VR#h7z~?K2GemNuulRm@xeqdQ1_f?06Vd!;Bpt6*gP|C#Sq%h!P9f#xR7H4Lr> z*#qK3%&*sl=m)u>khh-szkhtPYy=mByyX!W4!?r*Z3g#E|1$$a11SH1acyk_^L7S% zCXjwq0FoDDkZ0h?y{j9aj4B7>f#e&Q9x!v{N~smcVV8eUr%>Ne{{RR{muFy*X3%x} N9ES)GbTjbB2LNimaKZop literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/forest/lost_woods.mw3 b/worlds/smw/data/palettes/map/forest/lost_woods.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..ba9486b627ba4eeeb266c7448b718355e9a0e136 GIT binary patch literal 514 zcmZQzKn0VF85sUETZd0BF0~UfTCa*K%fK+X*gE`wJ&0ytuny0uLzf5fpX+4XzV|JT z`<@3p>D%45QYyH3>X%a6ciW)7z7xE7#J8B94Igt2{14SIB2jJ2n@_C1okxo149b~ z3pbq%CYMY*$+CWZ|DArH0qW8bU?v@PBrnX;))aur_ZQ!M(7kikr|YPMneg1R^S$z* z?9zsWZqJ2}>gdR$)6q$Gr)I*CR;}z7ScgR3No92uhPAS<&zV*|A*TRXT4l*U?sfm3 z_gwNn?&O#D=r|So%ly-|^mB$$>A2@Sq^AE6=6PB5xlaxGnE;r}+tCT*Bzf+yi}~{+ pZ%(4iL(N!~`RJIJytRk9vgjtl57*L$T>sYvI9T99gg$qGBWaD}=Dbq~P$Ez934 zCDcmD#h7z~?K2GemNuulRm@xeqdQ1_f|-K%d!;Bpt6*gP|C#Sq%h!P9tBu|(Nh*G0 ze5Sj?48(_+U#|<%4{}2xZ$0yW|M+Ct2rdSB%Ofrveg)~<4DOr$X9k7_Q2qhq+S&%@ z?F{xzApNKSBrnDw&%lv;S2sQxRSv`h$u}@PVCKk`QnL=nF8`oTp}wL10T7Zd&%hwf QpzHQI4iO&cX5fzx0My@Y{r~^~ literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/forest/original_special.mw3 b/worlds/smw/data/palettes/map/forest/original_special.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..57fcf7dea59b1949ea5d66e58b10ea4d7744f92a GIT binary patch literal 514 zcmZQzKn0VF85sUETZd0BF0~UfTCa*K%fK+X*gE`wJ&0ytuny0uLzf5fpX+4XzV|JT z`<@3OD(0>K(H*2d!A!yXy;4<>RWP#t|IGKQ>+4b>ov!Kp1G03qq}3=Gl? Qx^AE25aEGt2LAW}057X;AOHXW literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/forest/sepia.mw3 b/worlds/smw/data/palettes/map/forest/sepia.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..b265f978060dd60e3aaea39f9a833111d1e074a7 GIT binary patch literal 514 zcmZQzKm|7O3=DI#ZQ^a>E1X1)Hmjn_GBAK-{?~(O5DvFPmk05A1t%(s8qIK$4hN}3 z2es*DW}8)GlEdxpmqX+yDt^%|w+pwkjt-CnsVn^eur%I$W#q3XY1e!qMZ*!?@*%I!9*el?r~bQMTF z#C$$ch<=b8CMnv)-!HGtE|kq+5jA=%a9LA2yim5>Zf-UM14v$9^oy>jS%74P6G%TQ z0Li}*(3cF547aNVsz(P9^TUBY2)Bc{7gYsF-pnlAZid@UKZt)xlV@Py6BRYO>4yjp JRQ-hF0{}_CVnYA` literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/forest/snow_day.mw3 b/worlds/smw/data/palettes/map/forest/snow_day.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..c76540325baea28db53e1f9d91a6201488a4219d GIT binary patch literal 514 zcmZQzKn0VF85sUETZd0BF0~UfTCa*K%fK+X*gE`wJ&0ytuny0uLzf5fpX+4XzV|JT z`<@3%#7e1I1Ko=bKwv9wZMk2Ld207+<08LEQteJWK>x6-*Cq{UBe+*C5No^!rOz*x7~G>w4>dbO-tt zXh$J$J@bG6_+;4#E(UqaBQ6|%1?k%i?wf+l0LedKTwB|~yq&?G31Kgc1(FwIkZ0h? zy{j9a3=>7rAo&KS2h1F~Qfk)W2yqw-Y<`_WeM9{NAcTn`XhQM~4AKm`ZlB{?#UTDc K=!CKG#|HpsNlw%N literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/main/atardecer.mw3 b/worlds/smw/data/palettes/map/main/atardecer.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..5252db002dfeecd918f3516f73a5f0e081367f95 GIT binary patch literal 514 zcmZQzKn0VF85sUETZd0BF0~UfTCa*K%fK+X*gE`wJ&0ytuny0uLzf5fpX+4XzV|JT z`<@3OrBfJ#bm_%g&EAZ`WaM{jjsPc^ZsJ_8j$?GYU^;2{v#Hj!0I99 z*Xw%ge{^SH*bnqcA#XkNfB*Po*$6HMdCMa%9DW7q+YIiT{s*cD$-iS-TlkK7{ouACg6_`0H{H5f&c&j literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/main/brawler.mw3 b/worlds/smw/data/palettes/map/main/brawler.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..731696fcfc8204cffabd03f308427fc880a45460 GIT binary patch literal 514 zcmZQzKn0VF85sUETZd0BF0~UfTCa*K%fK+X*gE`wJ&0ytuny0uLzf5fpX+4XzV|JT z`<@3o!k`;D#;RK=ggn-_dg%K9GvBM0uK~&5tM<(U=|5uOAq?U} z%&*sl=m)u>khh-szkhtPYy=mByyX!W4!?r*Z3g#E|1$$a11SH1acyk_^L7S%CXjwq z0FoDDkZ0h?y{j9aj4B7>f#e&Q9x!v{N~u|gW0!wWr%>Ne{{RR{muFy*X3%x}9ES)G JbTjbB2LL%pZ?pga literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/main/cake_frosting.mw3 b/worlds/smw/data/palettes/map/main/cake_frosting.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..aec0fd7e40c9db6eeb5d2ebf27bebc231a6535a5 GIT binary patch literal 514 zcmZQzKn0VF85sUETZd0BF0~UfTCa*K%fK+X*gE`wJ&0ytuny0uLzf5fpX+4XzV|JT z`<@3Vfj+|CvFi83uhzn^WB?=B@wH9mJoK6jgi=B#)y1Kl8n6`5KTsO#cxJ4`C1=Vt&0Y zL_f$4g}n95|NY~WWh1y4Xn(W@*gSv93Ol=Sg}MiI55W5GRa=K^ z)B)wq|1*P3GYtBcHmAB(%v=AXJBY6#v_i;37+wE==6luhH6VGI{v#G1!XQ4x{CZu8 zevlgqdFz?~`^P8CMsP96TOM)Y@GD5)W^msWWFJWW0pr@*2IlPy_DmrCr~o7{#vsqY zk$YD+J{eUG!~@AUFg;-A$dyvF4#zJ4piZH_q5c67k}l7{AkCob_Bjp_9_VJ^j}HK& Crfz}& literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/main/mono.mw3 b/worlds/smw/data/palettes/map/main/mono.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..d4d0f72d29550b6f60468a93058340f9db106760 GIT binary patch literal 514 zcmb7>ACtr|7{-GO3&BEVVWCh66ap)OLZI-%LSUs32owSbf&BuD#eRk2;^|?r7%eUy z?#(lSn^bP@oylaL`MrOhykRU4X&IZmw9@*HtGUT3V<7K4ZXD8k4t+R11Xm*!Ju>$Z z2GP!qain8Nd~RMB($DMX2Uo~;^+?7oQnagqj)62+&+FtT4=vj7+vFEH5?nCGmG7k8 z*T3&EB>yo;i~6r3`Az+|GS$PwLr5D#7+l>Sx!TG_7QL%|hk4-D`E}t+SH8o%JixcI pI_rvb7;*-c`jZAve)Ak~(UKl%HR-+otNGnWUjNsB`~ZFMY90Up literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/main/morning.mw3 b/worlds/smw/data/palettes/map/main/morning.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..b2fe88e2cf89d9ad5e4dc2e3e714a09ce015444e GIT binary patch literal 514 zcmZQzKn0VF85sUETZd0BF0~UfTCa*K%fK+X*gE`wJ&0ytuny0uLzf5fpX+4XzV|JT z`<@3K=gg$Jg(z z3@8oP+;9G$86D|DTroZU{TGfLzf5fpX+4XzV|JT z`=0l|9#j5f{eDJ_wGSIbk;rOV_AOccz;K8K z#D|z)uj{S<(Vc<8GM#~;khh-szkhtPYy=mByyX!W4!?r*Z3g#ELH2>J;i5>K_0h>GBK=(hRz8 QpW|A^ApXHL0e^e|0GO{{UjP6A literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/main/night_time.mw3 b/worlds/smw/data/palettes/map/main/night_time.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..13a5af30c2e5e2144df1c975df6449f31d7bbdc7 GIT binary patch literal 514 zcmZQzKn0VF85sUETZd0BF0~UfTCa*K%fK+X*gE`wJ&0ytuny0uLzf5fpX+4XzV|JT z`<@3FZHL`v$J=4gEkLUMB`fUg!WHTs)I9*}H_zve zdv3AWaliRSA&|Ub(6_WX)vaRQ`XAjvd~L%`uH`}K`u{WEtCp_;$;0#?)zCBp@ge5d z>q7K{+)&6{&-~v%K3O(`i$UJ`=SKPmvp zi!sPEaOB?AjZa3E1Mxue4NMQ1IdY}cti!R(Kd4ivZ>WC&grv(eFi11#x_ypAga^7A H_~Qcra8Pkk literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/main/original.mw3 b/worlds/smw/data/palettes/map/main/original.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..cb655d882e715528ba6092ec5ea9ca66a0d39290 GIT binary patch literal 514 zcmZQzKn0VF85sUETZd0BF0~UfTCa*K%fK+X*gE`wJ&0ytuny0uLzf5fpX+4XzV|JT z`<@3ZBBKon795%cMxC5sMO9n99{o^=6luhH6ZzW)z;x4{YNZ3gh70W z`SrRG{UA3K^42r|_m5AOjo@OCw>;v);a8Bp&EUQ%$Ucz#1ID$r4b0ma?3qCNQ2|I^ zj6t4(BloUud@`yWhzF8yV0ysJkt?NU9gbc8L7hTwk0y@gXd9{r{QoRm<0aq7K{+)&6{&-~v%K3O(`i$UJ`=%iKK=Kb5*VZ;LZ)dP)0_jHuAbBwc zc?OQ$ySnkosB$14NWOvT0W(Lgl$v!ocKHW&3iS>34}g$#c?Je)23@z$aft9hHv@ls F007$Aa)1B; literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/main/sepia.mw3 b/worlds/smw/data/palettes/map/main/sepia.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..3a6ece7743e941b78e5aa7daba2310af6678b62a GIT binary patch literal 514 zcmZQzKm|7O3=DI#ZQ^a>E1X1)Hmjn_GBAK-{?~(O5DvFPmk05A1t%(s8qIK$4hN}3 z2es*DW}8)GlEdxpmqX+?tA5c9x7+EquUOOwq`FXchFeVXWlb})n|>hv{qk@-QKOx1 zbF=4WgZO4vzk=rFU)G%A1abufgQ!sjkcF=Qe);|KO4ugxx$&0rBVdMj{QQ#!m*w%iV6A4pzb^oy>jS%74P6UaVP0Fr+rpf4F9 y8E#h#b|0qvB*kz$kUYe_nDS<3;dV3JZu&v|OPV|b1D~j<(M>-@c%bSh6dwSAuw_>O literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/main/snow_day.mw3 b/worlds/smw/data/palettes/map/main/snow_day.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..1ad307f078dc13fd67a195e16bc3b035c4f607d4 GIT binary patch literal 514 zcmZQzKn0VF85sUETZd0BF0~UfTCa*K%fK+X*gE`wJ&0ytuny0uLzf5fpX+4XzV|JT z`<@3v9wZMk2Ld201Rq%xrUqF(x;(0WkT2wGu&MW#tgy2Suh;d~|L6|%Ezk{xy!Fig z{o|8mBe)pkEswZx_!XpYGq`UGG6N+4fN^bY1M_wUdnSZCU@VZl7=t_mNA6wS_+*$U zf(FSqFg;-A$dyvF4o8T?SYY$(6zUu59{?dt6hRY`XJC+K&~^J9*D40_4?-u5g+D$3 DqS;Gn literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/palettes.json b/worlds/smw/data/palettes/map/palettes.json new file mode 100644 index 000000000000..91a79c4e17af --- /dev/null +++ b/worlds/smw/data/palettes/map/palettes.json @@ -0,0 +1,99 @@ +{ + "main": [ + "atardecer.mw3", + "brawler.mw3", + "cake_frosting.mw3", + "invertido.mw3", + "mono.mw3", + "morning.mw3", + "night.mw3", + "night_time.mw3", + "original.mw3", + "original_special.mw3", + "sepia.mw3", + "snow_day.mw3", + "virtual_boy.mw3" + ], + "yoshi": [ + "atardecer.mw3", + "gum.mw3", + "lava_island.mw3", + "mono.mw3", + "original.mw3", + "original_special.mw3", + "sepia.mw3", + "snow_day.mw3", + "sunset.mw3", + "tritanopia.mw3", + "virtual_boy.mw3", + "yochis_ailand.mw3" + ], + "vanilla": [ + "aqua_marine.mw3", + "dark cave.mw3", + "DOMO.mw3", + "fire cave.mw3", + "gold_mine.mw3", + "invertido.mw3", + "mono.mw3", + "original.mw3", + "original_special.mw3", + "purple.mw3", + "sepia.mw3", + "virtual_boy.mw3", + "witches_cauldron.mw3" + ], + "forest": [ + "atardecer.mw3", + "burnt_forest.mw3", + "dark_forest.mw3", + "halloween.mw3", + "ice_forest.mw3", + "lost_woods.mw3", + "mono.mw3", + "original.mw3", + "original_special.mw3", + "sepia.mw3", + "snow_day.mw3", + "virtual_boy.mw3" + ], + "valley": [ + "bowser.mw3", + "castle_colors.mw3", + "dark cave.mw3", + "dream_world.mw3", + "fire cave.mw3", + "invertido.mw3", + "mono.mw3", + "orange.mw3", + "original.mw3", + "original_special.mw3", + "purple_blue.mw3", + "sepia.mw3", + "snow.mw3", + "Tamaulipas.mw3", + "virtual_boy.mw3" + ], + "special": [ + "black_out.mw3", + "blood_star.mw3", + "brawler.mw3", + "green.mw3", + "light_pollution_map.mw3", + "original.mw3", + "purple.mw3", + "virtual_boy.mw3", + "white_special.mw3" + ], + "star": [ + "blood_moon.mw3", + "mono.mw3", + "mountain_top.mw3", + "original.mw3", + "original_special.mw3", + "pink_star.mw3", + "sepia.mw3", + "virtual_boy.mw3", + "yellow_star.mw3" + ] +} \ No newline at end of file diff --git a/worlds/smw/data/palettes/map/special/black_out.mw3 b/worlds/smw/data/palettes/map/special/black_out.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..52d4e6d4a40f6d6639aedb5eb3a2f3af30bdd33e GIT binary patch literal 514 zcmZQzKn0VF85sUEGcbT?YycwuzaB#8)L~QeTqoQ1y>D^c_q_l0nDQUtVt?vE^2c>P zWP((gqycRP%lS)I*x7|E)IF$s09OlAQP2F}9Yh-jeM_5D-74m-{}IU7ar}_EDeY>y zJW%&>9gsXk|9|Ft)$%nUK15!}@v7CFXoP&dE<``b&O%#}bH$E9v4#We=H!wY5=E#*&!<2=Z iU#C#tQ2zi3F;#%=$0N_cAkCob_Bjp~9+)QJj}HK$18D^S literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/special/blood_star.mw3 b/worlds/smw/data/palettes/map/special/blood_star.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..bc778b202b99d347451c6490fd02d5bd54e698ff GIT binary patch literal 514 zcmZQzKn0VF85sUETZd0BF0~UfTCa*K%fK+X*gE`wJ&0ytuny0uLzf5fpX+4XzV|JT z`<@3K*{)U3mBz zBpKp0?Um}8|GR@sGYtBcHmAB(%v=8>kgwzTA#+pO)pU7=|MkapK=Kg%|C#Sq%hy26 z2g&O=UbUJNjgYU`h3E&_S;z}C+dn>8HiC;m-tveGhhIVZHiP@7|CxcI0hE8hxVE-| zc{_tW6G%TQ0LhCn$TM){-qnpyMwJ8cK=KVt512V}rPQp$vCBWGQ>bsKe*lD}%QG-Y RGw8Z~j)R2f#e&Q9x!v{N~u|gW0!wWr%>Ne{{RR{muFy*X3%x} N90v;zOcU_O2LP5hbAD^c_q_l0nDQU%)s!~}EAggC z{iz4ZAJ_Si2~uT})^86{?=M+lXBVze_n__pSiiE^6TKGiQ^xho|J^|<4THX=&8cn` z^Va_e+JfBkVCkUT{Hf98AD@--knL|(`7s@0rmgnYd&L_f&RLSCTR z{_)AO5nK%NmPcGT{0h>y8QeDog#<|c0pr@*2IlPy_DmrCr~o7{#vsqYk$YD+J{eUG x!~@AUFg;-A$dyvVl!cmKr%>Ne{{RRvRe*bm2ng6?kR2l|-OPf>OD(0>K5y;nZ{E)dR?P|I_!~go@Iv{z7{{PJPs^x1S=7Z#Q z9Islq7K{+)&61G}}KuSvG=;LEiF+3x{7p`Zk06rvI6Np#hYCz__-yfq6TF zJrhVjDgeogF~~D;eRLT9;MN{NEj9o?+0pv^mwSV&3{6fqWgu51E_NuBOW~{I5T*1Cod6|Id7{TD}IP zA0n^gc-3l7G(x^!7os0zXCW`pZ2$OV*$6HMdCMa%9DW7q+YIiT{$~b;22lP1d#! z-;kEz%D_<1{NEj9nqknlv^mwSV&3{6fqWgu51E_NuBOW~{I5T*1Cod6|Id7{TD}Hi zK1g22@v7CFXoP&dE<``b&O%x4WRr3#{R1E*U7mqK RnnBm?a~v!@FipT89{?(kc+UU; literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/star/blood_moon.mw3 b/worlds/smw/data/palettes/map/star/blood_moon.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..42f155ef33e2d6114d8d27e32bbf88c02410d803 GIT binary patch literal 514 zcmZQzKn0VF85sUETZd0BF0~UfTCa*K%fK+X*gE`wJ&0ytuny0uLzf5fpX+4XzV|JT z`<@3-GjOZV0m4Z zU=Ax5dlo4Md9Y!ILEqBmRJV$G>wk1-VDRIB=$B`Zbkk%(=>N}ruUftaVg6~It5$QO z5%TrA5d9!G6!O+H|M!nimW|+IkheVI!r@ntzRlpi>3?QmXaMCOFs`j_VBXGP&jfY= z3IUQA1G{R1E*U7mqKnnBm?a~v!@ JFipT89{_h-X&?Xq literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/star/mono.mw3 b/worlds/smw/data/palettes/map/star/mono.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..15d33bdf3a2378819ebd2e249a570bab1abede53 GIT binary patch literal 514 zcmaixudc%&7{!qjS0E>9CMpmJ!~|ld0)ePNT!EOWKp-j*6^Ok+Wo2Js^2)wKW#w$; zAkPbK9HVoN_wLXOS`B93ATn2M zg}NTCH~JRA*Fvbj-`IwF>QcPtgRy>=LM;}2cetOX?s1lG>X1#S$9W9191ObfJo#Dq zysQOy@=JG%=>MJHb5!|op^_gpdx7ZKdfxodYAt5DZ#)n67zhDp<^4n}%|Z?TR%r%S nYG!oG|DX55XmIqK3x1)D9?W7fZ?10~`=-@m-}}h@-~QtTOEYd; literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/star/mountain_top.mw3 b/worlds/smw/data/palettes/map/star/mountain_top.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..d2b96b0e3dd2731c9f1deaf3a467747982cc250a GIT binary patch literal 514 zcmZQzKn0VF85sUETZd0BF0~UfTCa*K%fK+X*gE`wJ&0ytuny0uLzf5fpX+4XzV|JT z`<@3yYJbTJJG*d&x(9U+!1C&@ zetCh_GwO@-XHLek|K7^E3=-9E>` L!UNL;{P6(*Ay{!c literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/star/original.mw3 b/worlds/smw/data/palettes/map/star/original.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..2107a5555ebabc965facd1a3db5227009de6fa6d GIT binary patch literal 514 zcmZQzKn0VF85sUETZd0BF0~UfTCa*K%fK+X*gE`wJ&0ytuny0uLzf5fpX+4XzV|JT z`<@3$8|vR5dHs|?^Vm!Ak5csylOQk z8X;e=3(*gf#e&Q9x!v{N~u|gW0!wWr%>Ne{{RR{muFy*X3%x}90v;z JOcU_O2LQx1c!>Z2 literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/star/original_special.mw3 b/worlds/smw/data/palettes/map/star/original_special.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..d2bd439c97b52518cc44a75d80215d2e25a6b840 GIT binary patch literal 514 zcmZQzKn0VF85sUETZd0BF0~UfTCa*K%fK+X*gE`wJ&0ytuny0uLzf5fpX+4XzV|JT z`<@3O!=v&&H>Q*st{f|ICOuszC|N7@LAbE)X|IGKQLek|K7^E3=-9E>`!UNL; H{P6(*hNO1x literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/star/pink_star.mw3 b/worlds/smw/data/palettes/map/star/pink_star.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..55f68ecf6ce2615a7bcd845c124aba707d75d654 GIT binary patch literal 514 zcmZQzKn0VF85sUETZd0BF0~UfTCa*K%fK+X*gE`wJ&0ytuny0uLzf5fpX+4XzV|JT z`<@3E1X1)Hmjn_GBAK-{?~(O5DvFPmk05A1t%(s8qIK$4hN}3 z2es*DW}8)GlEdxpmxJWr3YeMgbgNA-x7$|?QC}!K!!0KHvZk5YO+S!4pXe9eefht` zY~uHogG@8C`V}-U|FY%`Cy*-&Wg+_YCI8pI6#&UY^jk;YFW&@oKg|3>*_~ds*$8v9wZMk2Ld207+<08LEQteegU8w5JXl5bx5gV6t<`Cher4MP67&Q+^9(Fpl^U5I{=8wz>r zng9F8C(A}~G00mUapCYQNZ)2~-}FB-Ff@Sj4;a_hHZX5zuxA44M+G2xF$Q@Cj@-Mt z@yV!iARb7*f$0G=N3N8bbvSnU2XzYd4fPLzkaT$l25AOex6g5~@W3-GjOZVEy~U?n}rp zvDvtMoBju?2gyHRTwB|~yq&?G z38WttfaJv(XT7St3JG*d&x(9U+!20i1+qy+@ z0Oif=bwMf&gTAHBscseX*8k`Z;=4++D?L{N>5t+7@ge&EGvBM0uL1GzRa=K2Gm2%a zXRc>P$k*#a^n=_`$Xn0+-#S7c6Q+kbr0$ufc4+2{;z(Y z2`Fz~uM1KEQQs=&t^d&-#D}N{>A%l};Qv>@S1n%y;@_*b4nJlj!BEd!&y0|lV1Vcc zxuKA^p83Cje6nl=7lXXz5f=`>g7j?$_f7u;)q~_8Fs`j_VBXGP4>liU1_FTO#Teun zICAgm#wR1hVJwh*1JeU$j$A1<>u{JTf(Dykr%>Ne{{RRP;xHB=c?Je)23@z$aftAM K>4eev;{yQC=xv+; literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/valley/dark cave.mw3 b/worlds/smw/data/palettes/map/valley/dark cave.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..2b6c0f57cc614371d8f7671f472885839564eab9 GIT binary patch literal 514 zcmZQzKn0VF85sUEU$UHBtfR`Mcw7QimVse%@g>Xu^&pyo;gV%e9lAV-|6C{A_PuX$ z-1j_?N_6nCem^5a-G1f=%zx@3^2;v);a8Bp&EUT2f1rAh`~$|dwGGVM8SI%r`cVN$ zUW`GWfg|^>ZhSJT9Eb;!Z(w@B%#kal2J<1ZDzN!=3iS>34}cI^2EryJ&%hwfpzHQI M4iO&cX5fzx0DOOM5dZ)H literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/valley/dream_world.mw3 b/worlds/smw/data/palettes/map/valley/dream_world.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..bcf8d9514213ab9280377dbbff6b92a1e9de38d9 GIT binary patch literal 514 zcmZQzKn0VF85sUETZd0BF0~UfTCa*K%fK+X*gE`wJ&0ytuny0uLzf5fpX+4XzV|JT z`<@3S7c6Q+kbr0$ufc4+2Hc8U; z1j?J&>w;7m27ODLQ{5`&t^d&-#D8NTr(y!|Y;zRWRXTDc0UjyRbtF{h5W^}@! zp1GbGAz!Zx(GPM%A#XkNfB*Po*$6HMdCMa%9DW7q+YIiT{s*cD$vc%Id%7J(w`39y3%pAE=YS!V{W07BB`85pD)blpD3 MA;JUQ4E*r{0L7wk*Z=?k literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/valley/fire cave.mw3 b/worlds/smw/data/palettes/map/valley/fire cave.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..2980210dd233eaa0bfa804389754055f6a03dcb9 GIT binary patch literal 514 zcmZQzKn0VF85sUEODRn*mKD9lvxNgymVse%v6RyPdJxUPAf=R3hb|A|KiA2&eeYWw z_dO4!5*>W3-_OWUx1ad|^PhT%JeOpy;zdn87VB_`T7St3JG*d&x(9U+!218!2MbEF z=&|fKuh#{sFbw*ZHmAB(%v=AXJBYu5;TwY$BS^m_3y2TV|G)TNwR{bT&&?vp0@7d4 zT+fV<-_Hoq4{}2xZ$0yW|M+Ct2rdSB%Ofrveg)~<4DOr$2dW3jKVV#2+rYe?!JY}E z9~FS)#TeunICAgm#wVl7fp{SK2Brth9Jx|zQcBq6AJi$-H`G4>Lek|K7^E3=-9E=5 L!UNq5{P6(*j&WwS literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/valley/invertido.mw3 b/worlds/smw/data/palettes/map/valley/invertido.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..37cf2e9f50d24ce7db77c7a9d4869aaad1eecbc5 GIT binary patch literal 514 zcmZQzKn0VF85sUETZd0BF0~UfTCa*K%fK+X*gE`wJ&0ytuny0uLzf5fpX+4XzV|JT z`<@3w;7m27ODLQ{5`&t^d&-#DC+d7xpm;q+bK<9*F+`%=fD0Ye4e%s;$G18L1i8 zGuJbN_z?MeU5I{=8wz>rng9F8C(A}~G00mUapCYQNZ)2~-}FCFJxKlmp>o6^6h)t`s6eh*Q-MH4AXXq^5C}vBq5@G9fj~qcRv`KVk&*d@l`HobA|qp0 zMpm|Shw1FFrqegWFqiW#T!5%96^Q1ff(of)`f{o%5y5b}qfKnVgS{l4kW-*|G{u3qB`lpr!fxnA4&rhZIDDk8*F} zXBxWrZ|5zS{J(x=e{jKz9~nle!j|(8oBoyQ`*Bf+J~pYF6A`%Jd&{&Hse`{R@cU74 oE1bmG1voSoe2%YFaH@!m|Y{_!5Q|F8e}0n&(NlK=n! literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/valley/orange.mw3 b/worlds/smw/data/palettes/map/valley/orange.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..c9f6ac2ff2e90232ae61bc93765512936b7f356a GIT binary patch literal 514 zcmZQzKn0VF85sUE2gpt?)|2EGJuZMM%fK+XI6!u%9f)RN2$0RGLzf5fpX+4XzV|JT z`=0l|o`K;m5N}hwW7W-ZiQ_v9&~zYQfmw_}o}r#`J`+g&WWn!(d*s#%)H#EA3=9yJ z3Uv?a9st!cFx;!Q=M-RAE3n_ZUKhlFD-s}jSrnoR#D}O~D{$8g;#>&-Kl8n6`5KTs zOn-{3hcH5Yy{@S7c6Q+kbr0$ufc4+2o*J%E z2b4Fj*9ECC4EmNfr@B?lTmPdwh_7bYY5T?#q+bK<9*F+`%=fD0Ye4e%s;$G18L1i8 zGuJbN_z?MeU5I{=8wz>rng9F8C(A}~G00mUapCYQNZ)2~-}FCFJxKlm5v0G#0K|vr|Id7{TD}IvzgG>C$<}Q$ z@DN7G*Xu&`gWOQaThIL8KR#JDf{Q`k@`wwEUqSjdgZrlcnSr4Jlz+guwzh$JJA*wF zNIxn7$%`?_GjQbI)s0U^l>_lW@(oN6m^pH#)U3m?%Ri`7sBfr$0EDE=GcZUq=(>H5 MLxcyq8TjJ^0H*kEoB#j- literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/valley/purple_blue.mw3 b/worlds/smw/data/palettes/map/valley/purple_blue.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..2342f0acd205d0d9fa52a0f1a66488a4d74c4eab GIT binary patch literal 514 zcmZQzKn0VF85sUE_XSKYo@mjl(J6r{%fK+XxG!K!6^LeF=nKfHLzf5fpX+4XzV|JT z`=0l|o`K;m5VLZw;7vAjaqkQVnhxYEFxQ&Mh5k>KuLh}aiD577EN=Mj$m=JmQDzPD|@@7F{xo4$Za5ggi7=t_mNA6wS_+(T$5Dz5Z!1REbBUehTF95szgF1!! ehWZCUNV+@&gEWJ#+vm7eF^GRKO+bwgba?>wk8^(j literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/valley/sepia.mw3 b/worlds/smw/data/palettes/map/valley/sepia.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..aa5aeb51d38b312a1873ec1334fd247f52534e2c GIT binary patch literal 514 zcmZQzKm|7O3=DI#ZQ^a>E1X1)Hmjn_GBAK-{?~(O5DvFPmk05A1t%(s8qIK$4hN}3 z2es*DW}8)GlEdxpmqX;g=$e`B^wJaER}4{GC_BR~Ci$|anb}Q0kjVXVn|M(pJ<++@ zW@aG1nbohLdHI($XE=de!N8y=I#Kb9E=a$q5r_}bzc2rO`6jUYVfsOCN670-LiB^& zFiFuS{(gCFcA;zri>T3CfypDVoIv_f0Z9IhfWBma zWVl@|P(3<;m>+Hjl84xjssbc$W)^NY!|kRY#J{A;GcfRpiW=SYLxcyaenRm90OQJG A%K!iX literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/valley/snow.mw3 b/worlds/smw/data/palettes/map/valley/snow.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..185d0d42c77a14450bf662802f4189397e97f64a GIT binary patch literal 514 zcmZQzKn0VF85sUETZd0BF0~UfTCa*K%fK+X*gE`wJ&0ytuny0uLzf5fpX+4XzV|JT z`<@32sC!WN04)E% z{&u}VeYD$)MDHq)d|;S(_TFk9`+V<9;UNC{ywdtRK>7X224M9N{r}_d)yvm_zV)i$0y51a52bR9&zFDD@fmF zaNqPlGeo{cYi(_+v8muZC6Inp0MZ|&Q){^*_O5O`*aw*MEn2C@D`KV8tby)D2cR%` kP^VDeQ2zi3(Pe?LK|r2?L7G9=?Q>kK7{ouACg6_`0M-+IhyVZp literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/valley/virtual_boy.mw3 b/worlds/smw/data/palettes/map/valley/virtual_boy.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..e6f051b5bfd371a2fb5b7ae3ebb9e3065d1c44a0 GIT binary patch literal 514 zcmZQzKn0VF85sUEGcbT?YycuI0F)O1O6SyJQ}bLW+xES0aoqR3|Mi&iAM5usGSuy7 ze!%>v9wZMk2Ld207+<08LEQteJWK>x6-*Cq{UBe+*C5No^!rOz*x7~G>w4>dbO-tt zXh$J$J@bG6_+;4#E(UqaBQ6|%1?k%i?wf+l0LedKTwB|~yq&?G31Kgc1(FwIkZ0h? zy{j9a3=>7rAo&KS2h1F~Qfk)W2yqw-Y<`_WeM9{NAcTn`XhQM~4AKm`ZlB{?#UTDc K=!CKG#|HpsNlw%N literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/vanilla/DOMO.mw3 b/worlds/smw/data/palettes/map/vanilla/DOMO.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..595638077050ab67064d7ce25977b4cd92cd9e71 GIT binary patch literal 514 zcmZQzKn0VF85sUETZd0BF0~UfTCa*K%fK+X*gE`wJ&0ytuny0uLzf5fpX+4XzV|JT z`<@3-GjOZVEy%e|7Bzt z+64BSFO3DMFbw*ZHmAB(%v=AXJBZ)Pb3%k$7NlPW#ASf!|Id7{TD}IvpU+g!D8s-l zThCn2jF7L_h3E&lp^&$p`M-aBvTOtwgS_Pt7Y@II^lb+BP5%ScgXAADuB~lg-p*jp z1k#TRK=NV?@(digcXi{FQRP59kbDEv17?m~DK+bG?D7xl6zUu59{?fg@(c{p47zTg N;}GG2ZU+AN005Z&YH0uf literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/vanilla/aqua_marine.mw3 b/worlds/smw/data/palettes/map/vanilla/aqua_marine.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..b382964de02c670e2c72b816639e5ed58d968d19 GIT binary patch literal 514 zcmZQzKn0VF85sUEzi^#gyxh=L^@$9sECa*j;uo&}>p?UF!wc7(I&^su|G7@K?R($i zxbJx&mFVDO{eDJOD(0>K(H+EhWNGGkA_3CxZVKW<^#5nRS1n%y;=}aUGuJaC z=HHo56k4|3LL1`3H<^Ya5uiGuShM^rHfh zycmN#14r&%-S}iwIS>yd-@x>MnIl(9?S(6L`3H3h^$qn8fRJ=~1_o&cUAND1i10u+ I1Alw~05OSj4gdfE literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/vanilla/dark cave.mw3 b/worlds/smw/data/palettes/map/vanilla/dark cave.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..2b6c0f57cc614371d8f7671f472885839564eab9 GIT binary patch literal 514 zcmZQzKn0VF85sUEU$UHBtfR`Mcw7QimVse%@g>Xu^&pyo;gV%e9lAV-|6C{A_PuX$ z-1j_?N_6nCem^5a-G1f=%zx@3^2;v);a8Bp&EUT2f1rAh`~$|dwGGVM8SI%r`cVN$ zUW`GWfg|^>ZhSJT9Eb;!Z(w@B%#kal2J<1ZDzN!=3iS>34}cI^2EryJ&%hwfpzHQI M4iO&cX5fzx0DOOM5dZ)H literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/vanilla/fire cave.mw3 b/worlds/smw/data/palettes/map/vanilla/fire cave.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..2980210dd233eaa0bfa804389754055f6a03dcb9 GIT binary patch literal 514 zcmZQzKn0VF85sUEODRn*mKD9lvxNgymVse%v6RyPdJxUPAf=R3hb|A|KiA2&eeYWw z_dO4!5*>W3-_OWUx1ad|^PhT%JeOpy;zdn87VB_`T7St3JG*d&x(9U+!218!2MbEF z=&|fKuh#{sFbw*ZHmAB(%v=AXJBYu5;TwY$BS^m_3y2TV|G)TNwR{bT&&?vp0@7d4 zT+fV<-_Hoq4{}2xZ$0yW|M+Ct2rdSB%Ofrveg)~<4DOr$2dW3jKVV#2+rYe?!JY}E z9~FS)#TeunICAgm#wVl7fp{SK2Brth9Jx|zQcBq6AJi$-H`G4>Lek|K7^E3=-9E=5 L!UNq5{P6(*j&WwS literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/vanilla/gold_mine.mw3 b/worlds/smw/data/palettes/map/vanilla/gold_mine.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..ad5460a75e503f52ea46f721ad81310114e94831 GIT binary patch literal 514 zcmZQzKn0VF85sUETZd0BF0~UfTCa*K%fK+X*gE`wJ&0ytuny0uLzf5fpX+4XzV|JT z`<@3BMkT7St3JG*d&x(9U+!20i1PYqx0 z29!6i*9ECC4EmNfr@B?lTmPdwh|eQAQTCf6NdIy-5FeudKl8n6`5F-aUbS`jF(XdV zdggj&gnYd&L_f$4g}n95|NY~WWh1y4#YMZEXYdb_RPU zkbYDEk{4r;XW+=as~ew;DhJ|$E!XJC+K&~^J9 MhX@aJGw{a;0KFq^6aWAK literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/vanilla/invertido.mw3 b/worlds/smw/data/palettes/map/vanilla/invertido.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..37cf2e9f50d24ce7db77c7a9d4869aaad1eecbc5 GIT binary patch literal 514 zcmZQzKn0VF85sUETZd0BF0~UfTCa*K%fK+X*gE`wJ&0ytuny0uLzf5fpX+4XzV|JT z`<@3w;7m27ODLQ{5`&t^d&-#DC+d7xpm;q+bK<9*F+`%=fD0Ye4e%s;$G18L1i8 zGuJbN_z?MeU5I{=8wz>rng9F8C(A}~G00mUapCYQNZ)2~-}FCFJxKlmp>o6^6h)t`s6eh*Q-MH4AXXq^5C}vBq5@G9fj~qcRv`KVk&*d@l`HobA|qp0 zMpm|Shw1FFrqegWFqiW#T!5%96^Q1ff(of)`f{o%5y5b}qfKnVgS{l4kW-*|G{u3qB`lpr!fxnA4&rhZIDDk8*F} zXBxWrZ|5zS{J(x=e{jKz9~nle!j|(8oBoyQ`*Bf+J~pYF6A`%Jd&{&Hse`{R@cU74 oE1bmG1voSoe2%YFaH@!m|Y{_!5Q|F8e}0n&(NlK=n! literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/vanilla/original.mw3 b/worlds/smw/data/palettes/map/vanilla/original.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..c165e81b818b54b39163774ae200a6a48ba7ac84 GIT binary patch literal 514 zcmZQzKn0VF85sUETZd0BF0~UfTCa*K%fK+X*gE`wJ&0ytuny0uLzf5fpX+4XzV|JT z`<@3S7c6Q+kbr0$ufc4+2o*J%E z2b4Fj*9ECC4EmNfr@B?lTmPdwh_7bYY5T?#q+bK<9*F+`%=fD0Ye4e%s;$G18L1i8 zGuJbN_z?MeU5I{=8wz>rng9F8C(A}~G00mUapCYQNZ)2~-}FCFJxKlm5v0G#0K|vr|Id7{TD}IvzgG>C$<}Q$ z@DN7G*Xu&`gWOQaThIL8KR#JDf{Q`k@`wwEUqSjdgZrlcnSr4Jlz+guwzh$JJA*wF zNIxn7$%`?_GjQbI)s0U^l>_lW@(oN6m^pH#)U3m?%Ri`7sBfr$0EDE=GcZUq=(>H5 MLxcyq8TjJ^0H*kEoB#j- literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/vanilla/purple.mw3 b/worlds/smw/data/palettes/map/vanilla/purple.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..db0008bca7cd3f70e23859b48b89c3b4b4578b05 GIT binary patch literal 514 zcmZQzKn0VF85sUETZd0BF0~UfTCa*K%fK+X*gE`wJ&0ytuny0uLzf5fpX+4XzV|JT z`<@3@0M8eH0?l}YKU5Y$qGBWaD}=Dbq~Pu_o{E# z8`NtD?l+e)1*tF$`j$4Qx>d|u|D!udzjvfS+LSEqz{+X^uze8y|C#Sq%h!P9?^Roe zA2ZSptY@xg2I+^$*Xu&`gWOQaThIL8KR#JDf{Q`k@`wwEUqSjdgZrlcf$Bl>4;a_h zHZX5zuxA44M+G2xF$Q@Cj@-Mt@yV!iARb7*f$0G=N3N8bbvSnU2XzYd4fPLzkaT$l T25AOex6g5~@W3E1X1)Hmjn_GBAK-{?~(O5DvFPmk05A1t%(s8qIK$4hN}3 z2es*DW}8)GlEdxpmqX;g=$e`B^wJaER}4{GC_BR~Ci$|anb}Q0kjVXVn|M(pJ<++@ zW@aG1nbohLdHI($XE=de!N8y=I#Kb9E=a$q5r_}bzc2rO`6jUYVfsOCN670-LiB^& zFiFuS{(gCFcA;zri>T3CfypDVoIv_f0Z9IhfWBma zWVl@|P(3<;m>+Hjl84xjssbc$W)^NY!|kRY#J{A;GcfRpiW=SYLxcyaenRm90OQJG A%K!iX literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/vanilla/virtual_boy.mw3 b/worlds/smw/data/palettes/map/vanilla/virtual_boy.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..54ad2b5fdfd1bc9ac9e0b599b8519ee7c8b8f365 GIT binary patch literal 514 zcmZQzKn0VF85sUEGcbT?YycuI0F)O1O6SyJQ}bLW+xES0aoqR3|Mi&iAM5usGSuy7 ze!%>v9wZMk2Ld207+<08LEQteJWK>x6-*Cq{UBe+*C5No^!rOz*x7~G>w4>dbO-tt zXh$J$J@bG6_+;4#E(UqaBQ6|%1?k%i?wf+l0LedKTwB|~yq&?G31Kgc1(FwIkZ0h? zy{j9a3=>7rAo&KS2h1F~QfdfM1Pg3_okD#>{R1FGh{ITfN&?W&-qGP}GXYW*cE?Cio7>K@cR0PDY39pJo5 zYpKkB^D0M>3d5jpX>+Pu#k}=Dx`X(~R6I;i+Jf}2(gN`z`u{WEtCp_;@$XezhaWRq zDpSu~&y0|-*M;Z@xuKA^p83Cje6nl=7lXXz5f=`>g7j?$_f7u;)q~_8Fs`j_VBXGP z&jiws3PAE=4Dt*dxp#HrlTqbBJdk_?(*tIXTq!l{aP0CA>J;i5>K_0h>GBK=(hRz8 OpW_hWfo=x=_y7Qrxo`#m literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/yoshi/atardecer.mw3 b/worlds/smw/data/palettes/map/yoshi/atardecer.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..a75c898cee98948eef7a1a386a507995b6a208b5 GIT binary patch literal 514 zcmZQzKn0VF85sUETZd0BF0~UfTCa*K%fK+X*gE`wJ&0ytuny0uLzf5fpX+4XzV|JT z`<@3OrBfJ#bm_%g&D->QtH*i)c>D(f3bWGNd8{6bvQ`>5sOb?^$_#x zb-ndJx-&5B2l}Ltx1RaGe|)lR1Q&z68_2KP<>1J#4%-!ZMN{lt8Q!%hlh z9x4FIi*eSma^&9CjZa3E1Mxue4NMQ1IdY}ctiv(oL1FNqPNBY`{s9n@F3-Rq&7kY{ PIj&U<;vY;C@W%%L&X;cj literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/yoshi/gum.mw3 b/worlds/smw/data/palettes/map/yoshi/gum.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..cfde2f53bba4254934a8accd29a5a692f093e3bb GIT binary patch literal 514 zcmZQzKn0VF85sUE>jg|M*0#|!P?bTIWnh?GtQWAR4n#9B=mq2eS(xCtPPXlP-{QFM zdH?G%Wk1&MXJn|`&-{S-Pd!9l!LuP%rS5%5bnzS;ka~Z~3Ol=Sg}MiI55W4Pi!JKr z*t`$fZ(gqplArEj>p7`=e|!J{C?0N@ literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/yoshi/lava_island.mw3 b/worlds/smw/data/palettes/map/yoshi/lava_island.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..570bdee3aa9cab8df90100b5c9a771a876d82314 GIT binary patch literal 514 zcmZQzKn0VF85sUETZd0BF0~UfTCa*K%fK+X*gE`wJ&0ytuny0uLzf5fpX+4XzV|JT z`<@3K=gg-w)m= zHdo+`#D4R7U68zC(6_WX)vaRQ`XAjv{G}q#WwLeu$JOT}>;KPuuUftaB!55HI($Lh zH^vo09>O3##Qb_)h<=b83VG|9|NF-$%SLc9$Xgz9;qWU+-)3;%^glB&G=TCC7}wS| zFmGqDX9DR*1t57b26+aK+`GE*$*6K59!S1{=>aoGu9TW}ICl95bqe(j^$&oMba@5_ SX$D=l&vA(GKsN(_d;kE?AaG6q literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/yoshi/mono.mw3 b/worlds/smw/data/palettes/map/yoshi/mono.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..62c9761b4673734aa0e4edc80f8ccd0e93d2af97 GIT binary patch literal 514 zcmaixp>o6^6h)C0704B9DpnvO5D|zN1OgH9#0o@B1OgF(s6g}wRz~s*kt_EXA|qp0 zMpm|S2hp$$BdV<4aJ*s;hya`aCx7s>TRhXKmR zN~1J$>jK#=6+X9nNA`NYy;%WuXeM%DQPQjq{g%jDaXsfK4SH!lUUOX3L`cEd-bq7N z`5b@xmETgyza{0l-aDKEeVH#!@gu`ULY>CY49{HOkBd4Cp^1HtjDd^O-f?Y3?BTBq s{C*TCE6Ap?X6VX%+yEJW=g2?N>dJj<4g7y`yf@dY`+kqw|KERn0Uyk0>Hq)$ literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/yoshi/original.mw3 b/worlds/smw/data/palettes/map/yoshi/original.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..eb9451b1fe5c3a345c8fe04cefd208358367b772 GIT binary patch literal 514 zcmZQzKn0VF85sUETZd0BF0~UfTCa*K%fK+X*gE`wJ&0ytuny0uLzf5fpX+4XzV|JT z`<@3j9wUd2>*|(&qvn(pZQ+3d<{tcUbS`jg1T>v zAX`9ui23!p5d9!G6!O+H|M!nimW|+IkheVI!r@ntzRlpi>3?QmXaMCOFs`j_VBXGP z&jiws3PAE=4Dt*dxp#HrlTqbBJdk_?(*tIXTq!l{aP0CA>J;i5>K_0h>GBK=(hRz8 OpW_hWfo=x=_y7QkXmBI| literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/yoshi/original_special.mw3 b/worlds/smw/data/palettes/map/yoshi/original_special.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..269b45db617113eea999a51d7ae3edc8b8b95543 GIT binary patch literal 514 zcmZQzKn0VF85sUETZd0BF0~UfTCa*K%fK+X*gE`wJ&0ytuny0uLzf5fpX+4XzV|JT z`<@3cLJ|9{Cf98AD@--lNp#E@>{uM$V!XQ4x z{CZu8evlgqdFz?~`^P8CMsP96TOM)Y@GD5)W^mv1KQk~ifbtI**VZ;LZ)dP)0_jHu zAbBwcc?OQ$ySnkosB$14NWOvT0W(Lgl$v!ocKHW&3iS>34}g$#c?Je)23@z$aft9h JHv@ls007S)aQpxO literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/yoshi/sepia.mw3 b/worlds/smw/data/palettes/map/yoshi/sepia.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..3cbf6b0390bf10ab608d5765f20df390d3d9d083 GIT binary patch literal 514 zcmZQzKm|7O3=DI#ZQ^a>E1X1)Hmjn_GBAK-{?~(O5DvFPmk05A1t%(s8qIK$4hN}3 z2es*DW}8)GlEdxpmqX+?tA5c9x7+EquQ)&wq`FXchFeVXWlb})n|>hv{qk_T0Lh(h zbFvv9i^Za4iP{zX*-(vMG`fq_p{)aa%k LB0Ny_6N(Q2DI#SY literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/yoshi/snow_day.mw3 b/worlds/smw/data/palettes/map/yoshi/snow_day.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..464b32bad17cfa0135d89d3cfaedc70423a89f08 GIT binary patch literal 514 zcmZQzKn0VF85sUETZd0BF0~UfTCa*K%fK+X*gE`wJ&0ytuny0uLzf5fpX+4XzV|JT z`<@3;v);a8Bp&EUT2e`bh$i`LrORAW=Yc}nQM zfyhVc)LO2Hy{j9aj9tD(E7f>KtdyEH(7osY6b29K6zUu59{?e`EHE|*$TKiVGw8Z~ Pj%yWz_y^Mj{P6(*tigW< literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/yoshi/sunset.mw3 b/worlds/smw/data/palettes/map/yoshi/sunset.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..9477a08cb8e69974c2be867e9e0d61af7474a796 GIT binary patch literal 514 zcmZQzKn0VF85sUETZd0BF0~UfTCa*K%fK+X*gE`wJ&0ytuny0uLzf5fpX+4XzV|JT z`<@3v zD}+3RL41h$^}62rAKihz1=>-_ThIL8KR#JDf{Q`k@`wwEUqSjdgZrlcnIZBI7}wS| zFmGqDX9DR*1t9%m4Dt*dxp#HrlTqbBJdk_?(*tIXTq!l{aP0CA>J;i5>K_0h>GBK= U(hRz8pW|A^ApXHL0e^e|0OlcVq5uE@ literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/yoshi/tritanopia.mw3 b/worlds/smw/data/palettes/map/yoshi/tritanopia.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..c90b7f9af0d2ad8b9261edccc53041384e0ac809 GIT binary patch literal 514 zcmZQzKn0VF85sUETZd0BF0~UfTCa*K%fK+X*gE`wJ&0ytuny0uLzf5fpX+4XzV|JT z`<@3=HHo56k4|IEP90LnjLTwB|~yq&?G z38WttfaJv(v9wZMk2Ld207+<08LEQteJWK>x6-*Cq{UBe+*C5No^!rOz*x7~G>w4>dbO-tt zXh$J$J@bG6_+;4#E(UqaBQ6|%1?k%i?wf+l0LedKTwB|~yq&?G31Kgc1(FwIkZ0h? zy{j9a3=>7rAo&KS2h1F~Qfk)W2yqw-Y<`_WeM9{NAcTn`XhQM~4AKm`ZlB{?#UTDc K=!CKG#|HpsNlw%N literal 0 HcmV?d00001 diff --git a/worlds/smw/data/palettes/map/yoshi/yochis_ailand.mw3 b/worlds/smw/data/palettes/map/yoshi/yochis_ailand.mw3 new file mode 100644 index 0000000000000000000000000000000000000000..3e1de6680d022c9073464291c3bd78d6877b2e9f GIT binary patch literal 514 zcmZQzKn0VF85sUETZd0BF0~UfTCa*K%fK+X*gE`wJ&0ytuny0uLzf5fpX+4XzV|JT z`<@3o!k`;D#;RK=gg->Y7y zrx8J;87bI^O^et^pb*q@S{zrEZAEN(%9IF2R%=fD0Ye4e%s;$Ep)O}-IA+(