import typing from BaseClasses import Location, MultiWorld from worlds.AutoWorld import World from .Names import LocationName from .Missions import stage_name_prefixes, mission_orders class SA2BLocation(Location): game: str = "Sonic Adventure 2: Battle" mission_location_table = { LocationName.city_escape_1: 0xFF0000, LocationName.wild_canyon_1: 0xFF0001, LocationName.prison_lane_1: 0xFF0002, LocationName.metal_harbor_1: 0xFF0003, LocationName.green_forest_1: 0xFF0004, LocationName.pumpkin_hill_1: 0xFF0005, LocationName.mission_street_1: 0xFF0006, LocationName.aquatic_mine_1: 0xFF0007, LocationName.route_101_1: 0xFF0008, LocationName.hidden_base_1: 0xFF0009, LocationName.pyramid_cave_1: 0xFF000A, LocationName.death_chamber_1: 0xFF000B, LocationName.eternal_engine_1: 0xFF000C, LocationName.meteor_herd_1: 0xFF000D, LocationName.crazy_gadget_1: 0xFF000E, LocationName.final_rush_1: 0xFF000F, LocationName.iron_gate_1: 0xFF0010, LocationName.dry_lagoon_1: 0xFF0011, LocationName.sand_ocean_1: 0xFF0012, LocationName.radical_highway_1: 0xFF0013, LocationName.egg_quarters_1: 0xFF0014, LocationName.lost_colony_1: 0xFF0015, LocationName.weapons_bed_1: 0xFF0016, LocationName.security_hall_1: 0xFF0017, LocationName.white_jungle_1: 0xFF0018, LocationName.route_280_1: 0xFF0019, LocationName.sky_rail_1: 0xFF001A, LocationName.mad_space_1: 0xFF001B, LocationName.cosmic_wall_1: 0xFF001C, LocationName.final_chase_1: 0xFF001D, LocationName.cannon_core_1: 0xFF001E, LocationName.city_escape_2: 0xFF0020, LocationName.wild_canyon_2: 0xFF0021, LocationName.prison_lane_2: 0xFF0022, LocationName.metal_harbor_2: 0xFF0023, LocationName.green_forest_2: 0xFF0024, LocationName.pumpkin_hill_2: 0xFF0025, LocationName.mission_street_2: 0xFF0026, LocationName.aquatic_mine_2: 0xFF0027, LocationName.route_101_2: 0xFF0028, LocationName.hidden_base_2: 0xFF0029, LocationName.pyramid_cave_2: 0xFF002A, LocationName.death_chamber_2: 0xFF002B, LocationName.eternal_engine_2: 0xFF002C, LocationName.meteor_herd_2: 0xFF002D, LocationName.crazy_gadget_2: 0xFF002E, LocationName.final_rush_2: 0xFF002F, LocationName.iron_gate_2: 0xFF0030, LocationName.dry_lagoon_2: 0xFF0031, LocationName.sand_ocean_2: 0xFF0032, LocationName.radical_highway_2: 0xFF0033, LocationName.egg_quarters_2: 0xFF0034, LocationName.lost_colony_2: 0xFF0035, LocationName.weapons_bed_2: 0xFF0036, LocationName.security_hall_2: 0xFF0037, LocationName.white_jungle_2: 0xFF0038, LocationName.route_280_2: 0xFF0039, LocationName.sky_rail_2: 0xFF003A, LocationName.mad_space_2: 0xFF003B, LocationName.cosmic_wall_2: 0xFF003C, LocationName.final_chase_2: 0xFF003D, LocationName.cannon_core_2: 0xFF003E, LocationName.city_escape_3: 0xFF0040, LocationName.wild_canyon_3: 0xFF0041, LocationName.prison_lane_3: 0xFF0042, LocationName.metal_harbor_3: 0xFF0043, LocationName.green_forest_3: 0xFF0044, LocationName.pumpkin_hill_3: 0xFF0045, LocationName.mission_street_3: 0xFF0046, LocationName.aquatic_mine_3: 0xFF0047, LocationName.route_101_3: 0xFF0048, LocationName.hidden_base_3: 0xFF0049, LocationName.pyramid_cave_3: 0xFF004A, LocationName.death_chamber_3: 0xFF004B, LocationName.eternal_engine_3: 0xFF004C, LocationName.meteor_herd_3: 0xFF004D, LocationName.crazy_gadget_3: 0xFF004E, LocationName.final_rush_3: 0xFF004F, LocationName.iron_gate_3: 0xFF0050, LocationName.dry_lagoon_3: 0xFF0051, LocationName.sand_ocean_3: 0xFF0052, LocationName.radical_highway_3: 0xFF0053, LocationName.egg_quarters_3: 0xFF0054, LocationName.lost_colony_3: 0xFF0055, LocationName.weapons_bed_3: 0xFF0056, LocationName.security_hall_3: 0xFF0057, LocationName.white_jungle_3: 0xFF0058, LocationName.route_280_3: 0xFF0059, LocationName.sky_rail_3: 0xFF005A, LocationName.mad_space_3: 0xFF005B, LocationName.cosmic_wall_3: 0xFF005C, LocationName.final_chase_3: 0xFF005D, LocationName.cannon_core_3: 0xFF005E, LocationName.city_escape_4: 0xFF0060, LocationName.wild_canyon_4: 0xFF0061, LocationName.prison_lane_4: 0xFF0062, LocationName.metal_harbor_4: 0xFF0063, LocationName.green_forest_4: 0xFF0064, LocationName.pumpkin_hill_4: 0xFF0065, LocationName.mission_street_4: 0xFF0066, LocationName.aquatic_mine_4: 0xFF0067, LocationName.route_101_4: 0xFF0068, LocationName.hidden_base_4: 0xFF0069, LocationName.pyramid_cave_4: 0xFF006A, LocationName.death_chamber_4: 0xFF006B, LocationName.eternal_engine_4: 0xFF006C, LocationName.meteor_herd_4: 0xFF006D, LocationName.crazy_gadget_4: 0xFF006E, LocationName.final_rush_4: 0xFF006F, LocationName.iron_gate_4: 0xFF0070, LocationName.dry_lagoon_4: 0xFF0071, LocationName.sand_ocean_4: 0xFF0072, LocationName.radical_highway_4: 0xFF0073, LocationName.egg_quarters_4: 0xFF0074, LocationName.lost_colony_4: 0xFF0075, LocationName.weapons_bed_4: 0xFF0076, LocationName.security_hall_4: 0xFF0077, LocationName.white_jungle_4: 0xFF0078, LocationName.route_280_4: 0xFF0079, LocationName.sky_rail_4: 0xFF007A, LocationName.mad_space_4: 0xFF007B, LocationName.cosmic_wall_4: 0xFF007C, LocationName.final_chase_4: 0xFF007D, LocationName.cannon_core_4: 0xFF007E, LocationName.city_escape_5: 0xFF0080, LocationName.wild_canyon_5: 0xFF0081, LocationName.prison_lane_5: 0xFF0082, LocationName.metal_harbor_5: 0xFF0083, LocationName.green_forest_5: 0xFF0084, LocationName.pumpkin_hill_5: 0xFF0085, LocationName.mission_street_5: 0xFF0086, LocationName.aquatic_mine_5: 0xFF0087, LocationName.route_101_5: 0xFF0088, LocationName.hidden_base_5: 0xFF0089, LocationName.pyramid_cave_5: 0xFF008A, LocationName.death_chamber_5: 0xFF008B, LocationName.eternal_engine_5: 0xFF008C, LocationName.meteor_herd_5: 0xFF008D, LocationName.crazy_gadget_5: 0xFF008E, LocationName.final_rush_5: 0xFF008F, LocationName.iron_gate_5: 0xFF0090, LocationName.dry_lagoon_5: 0xFF0091, LocationName.sand_ocean_5: 0xFF0092, LocationName.radical_highway_5: 0xFF0093, LocationName.egg_quarters_5: 0xFF0094, LocationName.lost_colony_5: 0xFF0095, LocationName.weapons_bed_5: 0xFF0096, LocationName.security_hall_5: 0xFF0097, LocationName.white_jungle_5: 0xFF0098, LocationName.route_280_5: 0xFF0099, LocationName.sky_rail_5: 0xFF009A, LocationName.mad_space_5: 0xFF009B, LocationName.cosmic_wall_5: 0xFF009C, LocationName.final_chase_5: 0xFF009D, LocationName.cannon_core_5: 0xFF009E, } upgrade_location_table = { LocationName.city_escape_upgrade: 0xFF00A0, LocationName.wild_canyon_upgrade: 0xFF00A1, LocationName.prison_lane_upgrade: 0xFF00A2, LocationName.metal_harbor_upgrade: 0xFF00A3, LocationName.green_forest_upgrade: 0xFF00A4, LocationName.pumpkin_hill_upgrade: 0xFF00A5, LocationName.mission_street_upgrade: 0xFF00A6, LocationName.aquatic_mine_upgrade: 0xFF00A7, LocationName.hidden_base_upgrade: 0xFF00A9, LocationName.pyramid_cave_upgrade: 0xFF00AA, LocationName.death_chamber_upgrade: 0xFF00AB, LocationName.eternal_engine_upgrade: 0xFF00AC, LocationName.meteor_herd_upgrade: 0xFF00AD, LocationName.crazy_gadget_upgrade: 0xFF00AE, LocationName.final_rush_upgrade: 0xFF00AF, LocationName.iron_gate_upgrade: 0xFF00B0, LocationName.dry_lagoon_upgrade: 0xFF00B1, LocationName.sand_ocean_upgrade: 0xFF00B2, LocationName.radical_highway_upgrade: 0xFF00B3, LocationName.egg_quarters_upgrade: 0xFF00B4, LocationName.lost_colony_upgrade: 0xFF00B5, LocationName.weapons_bed_upgrade: 0xFF00B6, LocationName.security_hall_upgrade: 0xFF00B7, LocationName.white_jungle_upgrade: 0xFF00B8, LocationName.sky_rail_upgrade: 0xFF00BA, LocationName.mad_space_upgrade: 0xFF00BB, LocationName.cosmic_wall_upgrade: 0xFF00BC, LocationName.final_chase_upgrade: 0xFF00BD, } chao_key_location_table = { LocationName.city_escape_chao_1: 0xFF0400, LocationName.wild_canyon_chao_1: 0xFF0401, LocationName.prison_lane_chao_1: 0xFF0402, LocationName.metal_harbor_chao_1: 0xFF0403, LocationName.green_forest_chao_1: 0xFF0404, LocationName.pumpkin_hill_chao_1: 0xFF0405, LocationName.mission_street_chao_1: 0xFF0406, LocationName.aquatic_mine_chao_1: 0xFF0407, LocationName.hidden_base_chao_1: 0xFF0409, LocationName.pyramid_cave_chao_1: 0xFF040A, LocationName.death_chamber_chao_1: 0xFF040B, LocationName.eternal_engine_chao_1: 0xFF040C, LocationName.meteor_herd_chao_1: 0xFF040D, LocationName.crazy_gadget_chao_1: 0xFF040E, LocationName.final_rush_chao_1: 0xFF040F, LocationName.iron_gate_chao_1: 0xFF0410, LocationName.dry_lagoon_chao_1: 0xFF0411, LocationName.sand_ocean_chao_1: 0xFF0412, LocationName.radical_highway_chao_1: 0xFF0413, LocationName.egg_quarters_chao_1: 0xFF0414, LocationName.lost_colony_chao_1: 0xFF0415, LocationName.weapons_bed_chao_1: 0xFF0416, LocationName.security_hall_chao_1: 0xFF0417, LocationName.white_jungle_chao_1: 0xFF0418, LocationName.sky_rail_chao_1: 0xFF041A, LocationName.mad_space_chao_1: 0xFF041B, LocationName.cosmic_wall_chao_1: 0xFF041C, LocationName.final_chase_chao_1: 0xFF041D, LocationName.cannon_core_chao_1: 0xFF041E, LocationName.city_escape_chao_2: 0xFF0420, LocationName.wild_canyon_chao_2: 0xFF0421, LocationName.prison_lane_chao_2: 0xFF0422, LocationName.metal_harbor_chao_2: 0xFF0423, LocationName.green_forest_chao_2: 0xFF0424, LocationName.pumpkin_hill_chao_2: 0xFF0425, LocationName.mission_street_chao_2: 0xFF0426, LocationName.aquatic_mine_chao_2: 0xFF0427, LocationName.hidden_base_chao_2: 0xFF0429, LocationName.pyramid_cave_chao_2: 0xFF042A, LocationName.death_chamber_chao_2: 0xFF042B, LocationName.eternal_engine_chao_2: 0xFF042C, LocationName.meteor_herd_chao_2: 0xFF042D, LocationName.crazy_gadget_chao_2: 0xFF042E, LocationName.final_rush_chao_2: 0xFF042F, LocationName.iron_gate_chao_2: 0xFF0430, LocationName.dry_lagoon_chao_2: 0xFF0431, LocationName.sand_ocean_chao_2: 0xFF0432, LocationName.radical_highway_chao_2: 0xFF0433, LocationName.egg_quarters_chao_2: 0xFF0434, LocationName.lost_colony_chao_2: 0xFF0435, LocationName.weapons_bed_chao_2: 0xFF0436, LocationName.security_hall_chao_2: 0xFF0437, LocationName.white_jungle_chao_2: 0xFF0438, LocationName.sky_rail_chao_2: 0xFF043A, LocationName.mad_space_chao_2: 0xFF043B, LocationName.cosmic_wall_chao_2: 0xFF043C, LocationName.final_chase_chao_2: 0xFF043D, LocationName.cannon_core_chao_2: 0xFF043E, LocationName.city_escape_chao_3: 0xFF0440, LocationName.wild_canyon_chao_3: 0xFF0441, LocationName.prison_lane_chao_3: 0xFF0442, LocationName.metal_harbor_chao_3: 0xFF0443, LocationName.green_forest_chao_3: 0xFF0444, LocationName.pumpkin_hill_chao_3: 0xFF0445, LocationName.mission_street_chao_3: 0xFF0446, LocationName.aquatic_mine_chao_3: 0xFF0447, LocationName.pyramid_cave_chao_3: 0xFF044A, LocationName.death_chamber_chao_3: 0xFF044B, LocationName.eternal_engine_chao_3: 0xFF044C, LocationName.meteor_herd_chao_3: 0xFF044D, LocationName.crazy_gadget_chao_3: 0xFF044E, LocationName.final_rush_chao_3: 0xFF044F, LocationName.iron_gate_chao_3: 0xFF0450, LocationName.dry_lagoon_chao_3: 0xFF0451, LocationName.sand_ocean_chao_3: 0xFF0452, LocationName.radical_highway_chao_3: 0xFF0453, LocationName.egg_quarters_chao_3: 0xFF0454, LocationName.lost_colony_chao_3: 0xFF0455, LocationName.weapons_bed_chao_3: 0xFF0456, LocationName.security_hall_chao_3: 0xFF0457, LocationName.white_jungle_chao_3: 0xFF0458, LocationName.sky_rail_chao_3: 0xFF045A, LocationName.mad_space_chao_3: 0xFF045B, LocationName.cosmic_wall_chao_3: 0xFF045C, LocationName.final_chase_chao_3: 0xFF045D, LocationName.cannon_core_chao_3: 0xFF045E, } pipe_location_table = { LocationName.city_escape_pipe_1: 0xFF0500, LocationName.wild_canyon_pipe_1: 0xFF0501, LocationName.prison_lane_pipe_1: 0xFF0502, LocationName.metal_harbor_pipe_1: 0xFF0503, LocationName.green_forest_pipe_1: 0xFF0504, LocationName.pumpkin_hill_pipe_1: 0xFF0505, LocationName.mission_street_pipe_1: 0xFF0506, LocationName.aquatic_mine_pipe_1: 0xFF0507, LocationName.hidden_base_pipe_1: 0xFF0509, LocationName.pyramid_cave_pipe_1: 0xFF050A, LocationName.death_chamber_pipe_1: 0xFF050B, LocationName.eternal_engine_pipe_1: 0xFF050C, LocationName.meteor_herd_pipe_1: 0xFF050D, LocationName.crazy_gadget_pipe_1: 0xFF050E, LocationName.final_rush_pipe_1: 0xFF050F, LocationName.iron_gate_pipe_1: 0xFF0510, LocationName.dry_lagoon_pipe_1: 0xFF0511, LocationName.sand_ocean_pipe_1: 0xFF0512, LocationName.radical_highway_pipe_1: 0xFF0513, LocationName.egg_quarters_pipe_1: 0xFF0514, LocationName.lost_colony_pipe_1: 0xFF0515, LocationName.weapons_bed_pipe_1: 0xFF0516, LocationName.security_hall_pipe_1: 0xFF0517, LocationName.white_jungle_pipe_1: 0xFF0518, LocationName.sky_rail_pipe_1: 0xFF051A, LocationName.mad_space_pipe_1: 0xFF051B, LocationName.cosmic_wall_pipe_1: 0xFF051C, LocationName.final_chase_pipe_1: 0xFF051D, LocationName.cannon_core_pipe_1: 0xFF051E, LocationName.city_escape_pipe_2: 0xFF0520, LocationName.wild_canyon_pipe_2: 0xFF0521, LocationName.prison_lane_pipe_2: 0xFF0522, LocationName.green_forest_pipe_2: 0xFF0524, LocationName.mission_street_pipe_2: 0xFF0526, LocationName.aquatic_mine_pipe_2: 0xFF0527, LocationName.hidden_base_pipe_2: 0xFF0529, LocationName.pyramid_cave_pipe_2: 0xFF052A, LocationName.death_chamber_pipe_2: 0xFF052B, LocationName.eternal_engine_pipe_2: 0xFF052C, LocationName.meteor_herd_pipe_2: 0xFF052D, LocationName.crazy_gadget_pipe_2: 0xFF052E, LocationName.final_rush_pipe_2: 0xFF052F, LocationName.iron_gate_pipe_2: 0xFF0530, LocationName.sand_ocean_pipe_2: 0xFF0532, LocationName.radical_highway_pipe_2: 0xFF0533, LocationName.egg_quarters_pipe_2: 0xFF0534, LocationName.lost_colony_pipe_2: 0xFF0535, LocationName.weapons_bed_pipe_2: 0xFF0536, LocationName.white_jungle_pipe_2: 0xFF0538, LocationName.sky_rail_pipe_2: 0xFF053A, LocationName.mad_space_pipe_2: 0xFF053B, LocationName.cosmic_wall_pipe_2: 0xFF053C, LocationName.final_chase_pipe_2: 0xFF053D, LocationName.cannon_core_pipe_2: 0xFF053E, LocationName.city_escape_pipe_3: 0xFF0540, LocationName.wild_canyon_pipe_3: 0xFF0541, LocationName.prison_lane_pipe_3: 0xFF0542, LocationName.mission_street_pipe_3: 0xFF0546, LocationName.aquatic_mine_pipe_3: 0xFF0547, LocationName.hidden_base_pipe_3: 0xFF0549, LocationName.pyramid_cave_pipe_3: 0xFF054A, LocationName.death_chamber_pipe_3: 0xFF054B, LocationName.eternal_engine_pipe_3: 0xFF054C, LocationName.meteor_herd_pipe_3: 0xFF054D, LocationName.crazy_gadget_pipe_3: 0xFF054E, LocationName.iron_gate_pipe_3: 0xFF0550, LocationName.sand_ocean_pipe_3: 0xFF0552, LocationName.radical_highway_pipe_3: 0xFF0553, LocationName.weapons_bed_pipe_3: 0xFF0556, LocationName.white_jungle_pipe_3: 0xFF0558, LocationName.sky_rail_pipe_3: 0xFF055A, LocationName.mad_space_pipe_3: 0xFF055B, LocationName.cosmic_wall_pipe_3: 0xFF055C, LocationName.final_chase_pipe_3: 0xFF055D, LocationName.cannon_core_pipe_3: 0xFF055E, LocationName.city_escape_pipe_4: 0xFF0560, LocationName.hidden_base_pipe_4: 0xFF0569, LocationName.pyramid_cave_pipe_4: 0xFF056A, LocationName.eternal_engine_pipe_4: 0xFF056C, LocationName.crazy_gadget_pipe_4: 0xFF056E, LocationName.iron_gate_pipe_4: 0xFF0570, LocationName.sand_ocean_pipe_4: 0xFF0572, LocationName.weapons_bed_pipe_4: 0xFF0576, LocationName.white_jungle_pipe_4: 0xFF0578, LocationName.sky_rail_pipe_4: 0xFF057A, LocationName.mad_space_pipe_4: 0xFF057B, LocationName.cosmic_wall_pipe_4: 0xFF057C, LocationName.cannon_core_pipe_4: 0xFF057E, LocationName.hidden_base_pipe_5: 0xFF0589, LocationName.eternal_engine_pipe_5: 0xFF058C, LocationName.iron_gate_pipe_5: 0xFF0590, LocationName.sand_ocean_pipe_5: 0xFF0592, LocationName.weapons_bed_pipe_5: 0xFF0596, LocationName.sky_rail_pipe_5: 0xFF059A, LocationName.cosmic_wall_pipe_5: 0xFF059C, LocationName.cannon_core_pipe_5: 0xFF059E, LocationName.sky_rail_pipe_6: 0xFF05BA, } hidden_whistle_location_table = { LocationName.city_escape_hidden_1: 0xFF0700, LocationName.prison_lane_hidden_1: 0xFF0702, LocationName.green_forest_hidden_1: 0xFF0704, LocationName.pumpkin_hill_hidden_1: 0xFF0705, LocationName.mission_street_hidden_1: 0xFF0706, LocationName.death_chamber_hidden_1: 0xFF070B, LocationName.crazy_gadget_hidden_1: 0xFF070E, LocationName.dry_lagoon_hidden_1: 0xFF0711, LocationName.radical_highway_hidden_1: 0xFF0713, LocationName.egg_quarters_hidden_1: 0xFF0714, LocationName.lost_colony_hidden_1: 0xFF0715, LocationName.security_hall_hidden_1: 0xFF0717, LocationName.white_jungle_hidden_1: 0xFF0718, LocationName.cannon_core_hidden_1: 0xFF071E, LocationName.city_escape_hidden_2: 0xFF0720, LocationName.prison_lane_hidden_2: 0xFF0722, LocationName.green_forest_hidden_2: 0xFF0724, LocationName.mission_street_hidden_2: 0xFF0726, LocationName.death_chamber_hidden_2: 0xFF072B, LocationName.radical_highway_hidden_2: 0xFF0733, LocationName.egg_quarters_hidden_2: 0xFF0734, LocationName.white_jungle_hidden_2: 0xFF0738, LocationName.city_escape_hidden_3: 0xFF0740, LocationName.prison_lane_hidden_3: 0xFF0742, LocationName.green_forest_hidden_3: 0xFF0744, LocationName.mission_street_hidden_3: 0xFF0746, LocationName.radical_highway_hidden_3: 0xFF0753, LocationName.white_jungle_hidden_3: 0xFF0758, LocationName.city_escape_hidden_4: 0xFF0760, LocationName.green_forest_hidden_4: 0xFF0764, LocationName.mission_street_hidden_4: 0xFF0766, LocationName.city_escape_hidden_5: 0xFF0780, } beetle_location_table = { LocationName.city_escape_beetle: 0xFF0600, LocationName.wild_canyon_beetle: 0xFF0601, LocationName.prison_lane_beetle: 0xFF0602, LocationName.metal_harbor_beetle: 0xFF0603, LocationName.green_forest_beetle: 0xFF0604, LocationName.mission_street_beetle: 0xFF0606, LocationName.aquatic_mine_beetle: 0xFF0607, LocationName.hidden_base_beetle: 0xFF0609, LocationName.pyramid_cave_beetle: 0xFF060A, LocationName.death_chamber_beetle: 0xFF060B, LocationName.eternal_engine_beetle: 0xFF060C, LocationName.meteor_herd_beetle: 0xFF060D, LocationName.crazy_gadget_beetle: 0xFF060E, LocationName.final_rush_beetle: 0xFF060F, LocationName.iron_gate_beetle: 0xFF0610, LocationName.dry_lagoon_beetle: 0xFF0611, LocationName.sand_ocean_beetle: 0xFF0612, LocationName.radical_highway_beetle: 0xFF0613, LocationName.egg_quarters_beetle: 0xFF0614, LocationName.lost_colony_beetle: 0xFF0615, LocationName.security_hall_beetle: 0xFF0617, LocationName.white_jungle_beetle: 0xFF0618, LocationName.sky_rail_beetle: 0xFF061A, LocationName.mad_space_beetle: 0xFF061B, LocationName.cosmic_wall_beetle: 0xFF061C, LocationName.final_chase_beetle: 0xFF061D, LocationName.cannon_core_beetle: 0xFF061E, } omochao_location_table = { LocationName.city_escape_omo_1: 0xFF0800, LocationName.wild_canyon_omo_1: 0xFF0801, LocationName.prison_lane_omo_1: 0xFF0802, LocationName.metal_harbor_omo_1: 0xFF0803, LocationName.pumpkin_hill_omo_1: 0xFF0805, LocationName.mission_street_omo_1: 0xFF0806, LocationName.aquatic_mine_omo_1: 0xFF0807, LocationName.hidden_base_omo_1: 0xFF0809, LocationName.pyramid_cave_omo_1: 0xFF080A, LocationName.death_chamber_omo_1: 0xFF080B, LocationName.eternal_engine_omo_1: 0xFF080C, LocationName.meteor_herd_omo_1: 0xFF080D, LocationName.crazy_gadget_omo_1: 0xFF080E, LocationName.final_rush_omo_1: 0xFF080F, LocationName.iron_gate_omo_1: 0xFF0810, LocationName.dry_lagoon_omo_1: 0xFF0811, LocationName.sand_ocean_omo_1: 0xFF0812, LocationName.radical_highway_omo_1: 0xFF0813, LocationName.egg_quarters_omo_1: 0xFF0814, LocationName.lost_colony_omo_1: 0xFF0815, LocationName.weapons_bed_omo_1: 0xFF0816, LocationName.security_hall_omo_1: 0xFF0817, LocationName.white_jungle_omo_1: 0xFF0818, LocationName.mad_space_omo_1: 0xFF081B, LocationName.cosmic_wall_omo_1: 0xFF081C, LocationName.final_chase_omo_1: 0xFF081D, LocationName.cannon_core_omo_1: 0xFF081E, LocationName.city_escape_omo_2: 0xFF0820, LocationName.wild_canyon_omo_2: 0xFF0821, LocationName.prison_lane_omo_2: 0xFF0822, LocationName.metal_harbor_omo_2: 0xFF0823, LocationName.pumpkin_hill_omo_2: 0xFF0825, LocationName.mission_street_omo_2: 0xFF0826, LocationName.aquatic_mine_omo_2: 0xFF0827, LocationName.hidden_base_omo_2: 0xFF0829, LocationName.pyramid_cave_omo_2: 0xFF082A, LocationName.death_chamber_omo_2: 0xFF082B, LocationName.eternal_engine_omo_2: 0xFF082C, LocationName.meteor_herd_omo_2: 0xFF082D, LocationName.crazy_gadget_omo_2: 0xFF082E, LocationName.final_rush_omo_2: 0xFF082F, LocationName.iron_gate_omo_2: 0xFF0830, LocationName.dry_lagoon_omo_2: 0xFF0831, LocationName.sand_ocean_omo_2: 0xFF0832, LocationName.radical_highway_omo_2: 0xFF0833, LocationName.egg_quarters_omo_2: 0xFF0834, LocationName.lost_colony_omo_2: 0xFF0835, LocationName.weapons_bed_omo_2: 0xFF0836, LocationName.security_hall_omo_2: 0xFF0837, LocationName.white_jungle_omo_2: 0xFF0838, LocationName.mad_space_omo_2: 0xFF083B, LocationName.cannon_core_omo_2: 0xFF083E, LocationName.city_escape_omo_3: 0xFF0840, LocationName.wild_canyon_omo_3: 0xFF0841, LocationName.prison_lane_omo_3: 0xFF0842, LocationName.metal_harbor_omo_3: 0xFF0843, LocationName.pumpkin_hill_omo_3: 0xFF0845, LocationName.mission_street_omo_3: 0xFF0846, LocationName.aquatic_mine_omo_3: 0xFF0847, LocationName.hidden_base_omo_3: 0xFF0849, LocationName.pyramid_cave_omo_3: 0xFF084A, LocationName.death_chamber_omo_3: 0xFF084B, LocationName.eternal_engine_omo_3: 0xFF084C, LocationName.meteor_herd_omo_3: 0xFF084D, LocationName.crazy_gadget_omo_3: 0xFF084E, LocationName.final_rush_omo_3: 0xFF084F, LocationName.iron_gate_omo_3: 0xFF0850, LocationName.dry_lagoon_omo_3: 0xFF0851, LocationName.radical_highway_omo_3: 0xFF0853, LocationName.egg_quarters_omo_3: 0xFF0854, LocationName.lost_colony_omo_3: 0xFF0855, LocationName.weapons_bed_omo_3: 0xFF0856, LocationName.security_hall_omo_3: 0xFF0857, LocationName.white_jungle_omo_3: 0xFF0858, LocationName.mad_space_omo_3: 0xFF085B, LocationName.cannon_core_omo_3: 0xFF085E, LocationName.city_escape_omo_4: 0xFF0860, LocationName.wild_canyon_omo_4: 0xFF0861, LocationName.prison_lane_omo_4: 0xFF0862, LocationName.metal_harbor_omo_4: 0xFF0863, LocationName.pumpkin_hill_omo_4: 0xFF0865, LocationName.mission_street_omo_4: 0xFF0866, LocationName.aquatic_mine_omo_4: 0xFF0867, LocationName.hidden_base_omo_4: 0xFF0869, LocationName.pyramid_cave_omo_4: 0xFF086A, LocationName.death_chamber_omo_4: 0xFF086B, LocationName.eternal_engine_omo_4: 0xFF086C, LocationName.crazy_gadget_omo_4: 0xFF086E, LocationName.iron_gate_omo_4: 0xFF0870, LocationName.dry_lagoon_omo_4: 0xFF0871, LocationName.radical_highway_omo_4: 0xFF0873, LocationName.egg_quarters_omo_4: 0xFF0874, LocationName.lost_colony_omo_4: 0xFF0875, LocationName.security_hall_omo_4: 0xFF0877, LocationName.white_jungle_omo_4: 0xFF0878, LocationName.mad_space_omo_4: 0xFF087B, LocationName.cannon_core_omo_4: 0xFF087E, LocationName.city_escape_omo_5: 0xFF0880, LocationName.wild_canyon_omo_5: 0xFF0881, LocationName.prison_lane_omo_5: 0xFF0882, LocationName.metal_harbor_omo_5: 0xFF0883, LocationName.pumpkin_hill_omo_5: 0xFF0885, LocationName.mission_street_omo_5: 0xFF0886, LocationName.aquatic_mine_omo_5: 0xFF0887, LocationName.death_chamber_omo_5: 0xFF088B, LocationName.eternal_engine_omo_5: 0xFF088C, LocationName.crazy_gadget_omo_5: 0xFF088E, LocationName.iron_gate_omo_5: 0xFF0890, LocationName.dry_lagoon_omo_5: 0xFF0891, LocationName.radical_highway_omo_5: 0xFF0893, LocationName.egg_quarters_omo_5: 0xFF0894, LocationName.lost_colony_omo_5: 0xFF0895, LocationName.security_hall_omo_5: 0xFF0897, LocationName.white_jungle_omo_5: 0xFF0898, LocationName.mad_space_omo_5: 0xFF089B, LocationName.cannon_core_omo_5: 0xFF089E, LocationName.city_escape_omo_6: 0xFF08A0, LocationName.wild_canyon_omo_6: 0xFF08A1, LocationName.prison_lane_omo_6: 0xFF08A2, LocationName.pumpkin_hill_omo_6: 0xFF08A5, LocationName.mission_street_omo_6: 0xFF08A6, LocationName.aquatic_mine_omo_6: 0xFF08A7, LocationName.death_chamber_omo_6: 0xFF08AB, LocationName.eternal_engine_omo_6: 0xFF08AC, LocationName.crazy_gadget_omo_6: 0xFF08AE, LocationName.iron_gate_omo_6: 0xFF08B0, LocationName.dry_lagoon_omo_6: 0xFF08B1, LocationName.radical_highway_omo_6: 0xFF08B3, LocationName.egg_quarters_omo_6: 0xFF08B4, LocationName.lost_colony_omo_6: 0xFF08B5, LocationName.security_hall_omo_6: 0xFF08B7, LocationName.cannon_core_omo_6: 0xFF08BE, LocationName.city_escape_omo_7: 0xFF08C0, LocationName.wild_canyon_omo_7: 0xFF08C1, LocationName.prison_lane_omo_7: 0xFF08C2, LocationName.pumpkin_hill_omo_7: 0xFF08C5, LocationName.mission_street_omo_7: 0xFF08C6, LocationName.aquatic_mine_omo_7: 0xFF08C7, LocationName.death_chamber_omo_7: 0xFF08CB, LocationName.eternal_engine_omo_7: 0xFF08CC, LocationName.crazy_gadget_omo_7: 0xFF08CE, LocationName.dry_lagoon_omo_7: 0xFF08D1, LocationName.radical_highway_omo_7: 0xFF08D3, LocationName.egg_quarters_omo_7: 0xFF08D4, LocationName.lost_colony_omo_7: 0xFF08D5, LocationName.security_hall_omo_7: 0xFF08D7, LocationName.cannon_core_omo_7: 0xFF08DE, LocationName.city_escape_omo_8: 0xFF08E0, LocationName.wild_canyon_omo_8: 0xFF08E1, LocationName.prison_lane_omo_8: 0xFF08E2, LocationName.pumpkin_hill_omo_8: 0xFF08E5, LocationName.mission_street_omo_8: 0xFF08E6, LocationName.death_chamber_omo_8: 0xFF08EB, LocationName.eternal_engine_omo_8: 0xFF08EC, LocationName.crazy_gadget_omo_8: 0xFF08EE, LocationName.dry_lagoon_omo_8: 0xFF08F1, LocationName.radical_highway_omo_8: 0xFF08F3, LocationName.lost_colony_omo_8: 0xFF08F5, LocationName.security_hall_omo_8: 0xFF08F7, LocationName.cannon_core_omo_8: 0xFF08FE, LocationName.city_escape_omo_9: 0xFF0900, LocationName.wild_canyon_omo_9: 0xFF0901, LocationName.prison_lane_omo_9: 0xFF0902, LocationName.pumpkin_hill_omo_9: 0xFF0905, LocationName.death_chamber_omo_9: 0xFF090B, LocationName.eternal_engine_omo_9: 0xFF090C, LocationName.crazy_gadget_omo_9: 0xFF090E, LocationName.dry_lagoon_omo_9: 0xFF0911, LocationName.security_hall_omo_9: 0xFF0917, LocationName.cannon_core_omo_9: 0xFF091E, LocationName.city_escape_omo_10: 0xFF0920, LocationName.wild_canyon_omo_10: 0xFF0921, LocationName.prison_lane_omo_10: 0xFF0922, LocationName.pumpkin_hill_omo_10: 0xFF0925, LocationName.eternal_engine_omo_10: 0xFF092C, LocationName.crazy_gadget_omo_10: 0xFF092E, LocationName.dry_lagoon_omo_10: 0xFF0931, LocationName.security_hall_omo_10: 0xFF0937, LocationName.city_escape_omo_11: 0xFF0940, LocationName.pumpkin_hill_omo_11: 0xFF0945, LocationName.eternal_engine_omo_11: 0xFF094C, LocationName.crazy_gadget_omo_11: 0xFF094E, LocationName.dry_lagoon_omo_11: 0xFF0951, LocationName.security_hall_omo_11: 0xFF0957, LocationName.city_escape_omo_12: 0xFF0960, LocationName.eternal_engine_omo_12: 0xFF096C, LocationName.crazy_gadget_omo_12: 0xFF096E, LocationName.dry_lagoon_omo_12: 0xFF0971, LocationName.security_hall_omo_12: 0xFF0977, LocationName.city_escape_omo_13: 0xFF0980, LocationName.crazy_gadget_omo_13: 0xFF098E, LocationName.city_escape_omo_14: 0xFF09A0, } animal_location_table = { LocationName.city_escape_animal_1: 0xFF0B00, LocationName.wild_canyon_animal_1: 0xFF0B01, LocationName.prison_lane_animal_1: 0xFF0B02, LocationName.metal_harbor_animal_1: 0xFF0B03, LocationName.green_forest_animal_1: 0xFF0B04, LocationName.pumpkin_hill_animal_1: 0xFF0B05, LocationName.mission_street_animal_1: 0xFF0B06, LocationName.aquatic_mine_animal_1: 0xFF0B07, LocationName.hidden_base_animal_1: 0xFF0B09, LocationName.pyramid_cave_animal_1: 0xFF0B0A, LocationName.death_chamber_animal_1: 0xFF0B0B, LocationName.eternal_engine_animal_1: 0xFF0B0C, LocationName.meteor_herd_animal_1: 0xFF0B0D, LocationName.crazy_gadget_animal_1: 0xFF0B0E, LocationName.final_rush_animal_1: 0xFF0B0F, LocationName.iron_gate_animal_1: 0xFF0B10, LocationName.dry_lagoon_animal_1: 0xFF0B11, LocationName.sand_ocean_animal_1: 0xFF0B12, LocationName.radical_highway_animal_1: 0xFF0B13, LocationName.egg_quarters_animal_1: 0xFF0B14, LocationName.lost_colony_animal_1: 0xFF0B15, LocationName.weapons_bed_animal_1: 0xFF0B16, LocationName.security_hall_animal_1: 0xFF0B17, LocationName.white_jungle_animal_1: 0xFF0B18, LocationName.sky_rail_animal_1: 0xFF0B1A, LocationName.mad_space_animal_1: 0xFF0B1B, LocationName.cosmic_wall_animal_1: 0xFF0B1C, LocationName.final_chase_animal_1: 0xFF0B1D, LocationName.cannon_core_animal_1: 0xFF0B1E, LocationName.city_escape_animal_2: 0xFF0B20, LocationName.wild_canyon_animal_2: 0xFF0B21, LocationName.prison_lane_animal_2: 0xFF0B22, LocationName.metal_harbor_animal_2: 0xFF0B23, LocationName.green_forest_animal_2: 0xFF0B24, LocationName.pumpkin_hill_animal_2: 0xFF0B25, LocationName.mission_street_animal_2: 0xFF0B26, LocationName.aquatic_mine_animal_2: 0xFF0B27, LocationName.hidden_base_animal_2: 0xFF0B29, LocationName.pyramid_cave_animal_2: 0xFF0B2A, LocationName.death_chamber_animal_2: 0xFF0B2B, LocationName.eternal_engine_animal_2: 0xFF0B2C, LocationName.meteor_herd_animal_2: 0xFF0B2D, LocationName.crazy_gadget_animal_2: 0xFF0B2E, LocationName.final_rush_animal_2: 0xFF0B2F, LocationName.iron_gate_animal_2: 0xFF0B30, LocationName.dry_lagoon_animal_2: 0xFF0B31, LocationName.sand_ocean_animal_2: 0xFF0B32, LocationName.radical_highway_animal_2: 0xFF0B33, LocationName.egg_quarters_animal_2: 0xFF0B34, LocationName.lost_colony_animal_2: 0xFF0B35, LocationName.weapons_bed_animal_2: 0xFF0B36, LocationName.security_hall_animal_2: 0xFF0B37, LocationName.white_jungle_animal_2: 0xFF0B38, LocationName.sky_rail_animal_2: 0xFF0B3A, LocationName.mad_space_animal_2: 0xFF0B3B, LocationName.cosmic_wall_animal_2: 0xFF0B3C, LocationName.final_chase_animal_2: 0xFF0B3D, LocationName.cannon_core_animal_2: 0xFF0B3E, LocationName.city_escape_animal_3: 0xFF0B40, LocationName.wild_canyon_animal_3: 0xFF0B41, LocationName.prison_lane_animal_3: 0xFF0B42, LocationName.metal_harbor_animal_3: 0xFF0B43, LocationName.green_forest_animal_3: 0xFF0B44, LocationName.pumpkin_hill_animal_3: 0xFF0B45, LocationName.mission_street_animal_3: 0xFF0B46, LocationName.aquatic_mine_animal_3: 0xFF0B47, LocationName.hidden_base_animal_3: 0xFF0B49, LocationName.pyramid_cave_animal_3: 0xFF0B4A, LocationName.death_chamber_animal_3: 0xFF0B4B, LocationName.eternal_engine_animal_3: 0xFF0B4C, LocationName.meteor_herd_animal_3: 0xFF0B4D, LocationName.crazy_gadget_animal_3: 0xFF0B4E, LocationName.final_rush_animal_3: 0xFF0B4F, LocationName.iron_gate_animal_3: 0xFF0B50, LocationName.dry_lagoon_animal_3: 0xFF0B51, LocationName.sand_ocean_animal_3: 0xFF0B52, LocationName.radical_highway_animal_3: 0xFF0B53, LocationName.egg_quarters_animal_3: 0xFF0B54, LocationName.lost_colony_animal_3: 0xFF0B55, LocationName.weapons_bed_animal_3: 0xFF0B56, LocationName.security_hall_animal_3: 0xFF0B57, LocationName.white_jungle_animal_3: 0xFF0B58, LocationName.sky_rail_animal_3: 0xFF0B5A, LocationName.mad_space_animal_3: 0xFF0B5B, LocationName.cosmic_wall_animal_3: 0xFF0B5C, LocationName.final_chase_animal_3: 0xFF0B5D, LocationName.cannon_core_animal_3: 0xFF0B5E, LocationName.city_escape_animal_4: 0xFF0B60, LocationName.wild_canyon_animal_4: 0xFF0B61, LocationName.prison_lane_animal_4: 0xFF0B62, LocationName.metal_harbor_animal_4: 0xFF0B63, LocationName.green_forest_animal_4: 0xFF0B64, LocationName.pumpkin_hill_animal_4: 0xFF0B65, LocationName.mission_street_animal_4: 0xFF0B66, LocationName.aquatic_mine_animal_4: 0xFF0B67, LocationName.hidden_base_animal_4: 0xFF0B69, LocationName.pyramid_cave_animal_4: 0xFF0B6A, LocationName.death_chamber_animal_4: 0xFF0B6B, LocationName.eternal_engine_animal_4: 0xFF0B6C, LocationName.meteor_herd_animal_4: 0xFF0B6D, LocationName.crazy_gadget_animal_4: 0xFF0B6E, LocationName.final_rush_animal_4: 0xFF0B6F, LocationName.iron_gate_animal_4: 0xFF0B70, LocationName.dry_lagoon_animal_4: 0xFF0B71, LocationName.sand_ocean_animal_4: 0xFF0B72, LocationName.radical_highway_animal_4: 0xFF0B73, LocationName.egg_quarters_animal_4: 0xFF0B74, LocationName.lost_colony_animal_4: 0xFF0B75, LocationName.weapons_bed_animal_4: 0xFF0B76, LocationName.security_hall_animal_4: 0xFF0B77, LocationName.white_jungle_animal_4: 0xFF0B78, LocationName.sky_rail_animal_4: 0xFF0B7A, LocationName.mad_space_animal_4: 0xFF0B7B, LocationName.cosmic_wall_animal_4: 0xFF0B7C, LocationName.final_chase_animal_4: 0xFF0B7D, LocationName.cannon_core_animal_4: 0xFF0B7E, LocationName.city_escape_animal_5: 0xFF0B80, LocationName.wild_canyon_animal_5: 0xFF0B81, LocationName.prison_lane_animal_5: 0xFF0B82, LocationName.metal_harbor_animal_5: 0xFF0B83, LocationName.green_forest_animal_5: 0xFF0B84, LocationName.pumpkin_hill_animal_5: 0xFF0B85, LocationName.mission_street_animal_5: 0xFF0B86, LocationName.aquatic_mine_animal_5: 0xFF0B87, LocationName.hidden_base_animal_5: 0xFF0B89, LocationName.pyramid_cave_animal_5: 0xFF0B8A, LocationName.death_chamber_animal_5: 0xFF0B8B, LocationName.eternal_engine_animal_5: 0xFF0B8C, LocationName.meteor_herd_animal_5: 0xFF0B8D, LocationName.crazy_gadget_animal_5: 0xFF0B8E, LocationName.final_rush_animal_5: 0xFF0B8F, LocationName.iron_gate_animal_5: 0xFF0B90, LocationName.dry_lagoon_animal_5: 0xFF0B91, LocationName.sand_ocean_animal_5: 0xFF0B92, LocationName.radical_highway_animal_5: 0xFF0B93, LocationName.egg_quarters_animal_5: 0xFF0B94, LocationName.lost_colony_animal_5: 0xFF0B95, LocationName.weapons_bed_animal_5: 0xFF0B96, LocationName.security_hall_animal_5: 0xFF0B97, LocationName.white_jungle_animal_5: 0xFF0B98, LocationName.sky_rail_animal_5: 0xFF0B9A, LocationName.mad_space_animal_5: 0xFF0B9B, LocationName.cosmic_wall_animal_5: 0xFF0B9C, LocationName.final_chase_animal_5: 0xFF0B9D, LocationName.cannon_core_animal_5: 0xFF0B9E, LocationName.city_escape_animal_6: 0xFF0BA0, LocationName.wild_canyon_animal_6: 0xFF0BA1, LocationName.prison_lane_animal_6: 0xFF0BA2, LocationName.metal_harbor_animal_6: 0xFF0BA3, LocationName.green_forest_animal_6: 0xFF0BA4, LocationName.pumpkin_hill_animal_6: 0xFF0BA5, LocationName.mission_street_animal_6: 0xFF0BA6, LocationName.aquatic_mine_animal_6: 0xFF0BA7, LocationName.hidden_base_animal_6: 0xFF0BA9, LocationName.pyramid_cave_animal_6: 0xFF0BAA, LocationName.death_chamber_animal_6: 0xFF0BAB, LocationName.eternal_engine_animal_6: 0xFF0BAC, LocationName.meteor_herd_animal_6: 0xFF0BAD, LocationName.crazy_gadget_animal_6: 0xFF0BAE, LocationName.final_rush_animal_6: 0xFF0BAF, LocationName.iron_gate_animal_6: 0xFF0BB0, LocationName.dry_lagoon_animal_6: 0xFF0BB1, LocationName.sand_ocean_animal_6: 0xFF0BB2, LocationName.radical_highway_animal_6: 0xFF0BB3, LocationName.egg_quarters_animal_6: 0xFF0BB4, LocationName.lost_colony_animal_6: 0xFF0BB5, LocationName.weapons_bed_animal_6: 0xFF0BB6, LocationName.security_hall_animal_6: 0xFF0BB7, LocationName.white_jungle_animal_6: 0xFF0BB8, LocationName.sky_rail_animal_6: 0xFF0BBA, LocationName.mad_space_animal_6: 0xFF0BBB, LocationName.cosmic_wall_animal_6: 0xFF0BBC, LocationName.final_chase_animal_6: 0xFF0BBD, LocationName.cannon_core_animal_6: 0xFF0BBE, LocationName.city_escape_animal_7: 0xFF0BC0, LocationName.wild_canyon_animal_7: 0xFF0BC1, LocationName.prison_lane_animal_7: 0xFF0BC2, LocationName.metal_harbor_animal_7: 0xFF0BC3, LocationName.green_forest_animal_7: 0xFF0BC4, LocationName.pumpkin_hill_animal_7: 0xFF0BC5, LocationName.mission_street_animal_7: 0xFF0BC6, LocationName.aquatic_mine_animal_7: 0xFF0BC7, LocationName.hidden_base_animal_7: 0xFF0BC9, LocationName.pyramid_cave_animal_7: 0xFF0BCA, LocationName.death_chamber_animal_7: 0xFF0BCB, LocationName.eternal_engine_animal_7: 0xFF0BCC, LocationName.meteor_herd_animal_7: 0xFF0BCD, LocationName.crazy_gadget_animal_7: 0xFF0BCE, LocationName.final_rush_animal_7: 0xFF0BCF, LocationName.iron_gate_animal_7: 0xFF0BD0, LocationName.dry_lagoon_animal_7: 0xFF0BD1, LocationName.sand_ocean_animal_7: 0xFF0BD2, LocationName.radical_highway_animal_7: 0xFF0BD3, LocationName.egg_quarters_animal_7: 0xFF0BD4, LocationName.lost_colony_animal_7: 0xFF0BD5, LocationName.weapons_bed_animal_7: 0xFF0BD6, LocationName.security_hall_animal_7: 0xFF0BD7, LocationName.white_jungle_animal_7: 0xFF0BD8, LocationName.sky_rail_animal_7: 0xFF0BDA, LocationName.mad_space_animal_7: 0xFF0BDB, LocationName.cosmic_wall_animal_7: 0xFF0BDC, LocationName.final_chase_animal_7: 0xFF0BDD, LocationName.cannon_core_animal_7: 0xFF0BDE, LocationName.city_escape_animal_8: 0xFF0BE0, LocationName.wild_canyon_animal_8: 0xFF0BE1, LocationName.prison_lane_animal_8: 0xFF0BE2, LocationName.metal_harbor_animal_8: 0xFF0BE3, LocationName.green_forest_animal_8: 0xFF0BE4, LocationName.pumpkin_hill_animal_8: 0xFF0BE5, LocationName.mission_street_animal_8: 0xFF0BE6, LocationName.aquatic_mine_animal_8: 0xFF0BE7, LocationName.hidden_base_animal_8: 0xFF0BE9, LocationName.pyramid_cave_animal_8: 0xFF0BEA, LocationName.death_chamber_animal_8: 0xFF0BEB, LocationName.eternal_engine_animal_8: 0xFF0BEC, LocationName.meteor_herd_animal_8: 0xFF0BED, LocationName.crazy_gadget_animal_8: 0xFF0BEE, LocationName.final_rush_animal_8: 0xFF0BEF, LocationName.iron_gate_animal_8: 0xFF0BF0, LocationName.dry_lagoon_animal_8: 0xFF0BF1, LocationName.sand_ocean_animal_8: 0xFF0BF2, LocationName.radical_highway_animal_8: 0xFF0BF3, LocationName.egg_quarters_animal_8: 0xFF0BF4, LocationName.lost_colony_animal_8: 0xFF0BF5, LocationName.weapons_bed_animal_8: 0xFF0BF6, LocationName.security_hall_animal_8: 0xFF0BF7, LocationName.white_jungle_animal_8: 0xFF0BF8, LocationName.sky_rail_animal_8: 0xFF0BFA, LocationName.mad_space_animal_8: 0xFF0BFB, LocationName.cosmic_wall_animal_8: 0xFF0BFC, LocationName.final_chase_animal_8: 0xFF0BFD, LocationName.cannon_core_animal_8: 0xFF0BFE, LocationName.city_escape_animal_9: 0xFF0C00, LocationName.wild_canyon_animal_9: 0xFF0C01, LocationName.prison_lane_animal_9: 0xFF0C02, LocationName.metal_harbor_animal_9: 0xFF0C03, LocationName.green_forest_animal_9: 0xFF0C04, LocationName.pumpkin_hill_animal_9: 0xFF0C05, LocationName.mission_street_animal_9: 0xFF0C06, LocationName.aquatic_mine_animal_9: 0xFF0C07, LocationName.hidden_base_animal_9: 0xFF0C09, LocationName.pyramid_cave_animal_9: 0xFF0C0A, LocationName.death_chamber_animal_9: 0xFF0C0B, LocationName.eternal_engine_animal_9: 0xFF0C0C, LocationName.meteor_herd_animal_9: 0xFF0C0D, LocationName.crazy_gadget_animal_9: 0xFF0C0E, LocationName.final_rush_animal_9: 0xFF0C0F, LocationName.iron_gate_animal_9: 0xFF0C10, LocationName.dry_lagoon_animal_9: 0xFF0C11, LocationName.sand_ocean_animal_9: 0xFF0C12, LocationName.radical_highway_animal_9: 0xFF0C13, LocationName.egg_quarters_animal_9: 0xFF0C14, LocationName.lost_colony_animal_9: 0xFF0C15, LocationName.weapons_bed_animal_9: 0xFF0C16, LocationName.white_jungle_animal_9: 0xFF0C18, LocationName.sky_rail_animal_9: 0xFF0C1A, LocationName.mad_space_animal_9: 0xFF0C1B, LocationName.cosmic_wall_animal_9: 0xFF0C1C, LocationName.final_chase_animal_9: 0xFF0C1D, LocationName.cannon_core_animal_9: 0xFF0C1E, LocationName.city_escape_animal_10: 0xFF0C20, LocationName.wild_canyon_animal_10: 0xFF0C21, LocationName.prison_lane_animal_10: 0xFF0C22, LocationName.metal_harbor_animal_10: 0xFF0C23, LocationName.green_forest_animal_10: 0xFF0C24, LocationName.pumpkin_hill_animal_10: 0xFF0C25, LocationName.mission_street_animal_10: 0xFF0C26, LocationName.aquatic_mine_animal_10: 0xFF0C27, LocationName.hidden_base_animal_10: 0xFF0C29, LocationName.pyramid_cave_animal_10: 0xFF0C2A, LocationName.death_chamber_animal_10: 0xFF0C2B, LocationName.eternal_engine_animal_10: 0xFF0C2C, LocationName.meteor_herd_animal_10: 0xFF0C2D, LocationName.crazy_gadget_animal_10: 0xFF0C2E, LocationName.final_rush_animal_10: 0xFF0C2F, LocationName.iron_gate_animal_10: 0xFF0C30, LocationName.dry_lagoon_animal_10: 0xFF0C31, LocationName.sand_ocean_animal_10: 0xFF0C32, LocationName.radical_highway_animal_10: 0xFF0C33, LocationName.egg_quarters_animal_10: 0xFF0C34, LocationName.lost_colony_animal_10: 0xFF0C35, LocationName.weapons_bed_animal_10: 0xFF0C36, LocationName.white_jungle_animal_10: 0xFF0C38, LocationName.sky_rail_animal_10: 0xFF0C3A, LocationName.mad_space_animal_10: 0xFF0C3B, LocationName.cosmic_wall_animal_10: 0xFF0C3C, LocationName.final_chase_animal_10: 0xFF0C3D, LocationName.cannon_core_animal_10: 0xFF0C3E, LocationName.city_escape_animal_11: 0xFF0C40, LocationName.prison_lane_animal_11: 0xFF0C42, LocationName.metal_harbor_animal_11: 0xFF0C43, LocationName.green_forest_animal_11: 0xFF0C44, LocationName.pumpkin_hill_animal_11: 0xFF0C45, LocationName.mission_street_animal_11: 0xFF0C46, LocationName.hidden_base_animal_11: 0xFF0C49, LocationName.pyramid_cave_animal_11: 0xFF0C4A, LocationName.eternal_engine_animal_11: 0xFF0C4C, LocationName.meteor_herd_animal_11: 0xFF0C4D, LocationName.crazy_gadget_animal_11: 0xFF0C4E, LocationName.final_rush_animal_11: 0xFF0C4F, LocationName.iron_gate_animal_11: 0xFF0C50, LocationName.dry_lagoon_animal_11: 0xFF0C51, LocationName.sand_ocean_animal_11: 0xFF0C52, LocationName.radical_highway_animal_11: 0xFF0C53, LocationName.lost_colony_animal_11: 0xFF0C55, LocationName.weapons_bed_animal_11: 0xFF0C56, LocationName.white_jungle_animal_11: 0xFF0C58, LocationName.sky_rail_animal_11: 0xFF0C5A, LocationName.cosmic_wall_animal_11: 0xFF0C5C, LocationName.final_chase_animal_11: 0xFF0C5D, LocationName.cannon_core_animal_11: 0xFF0C5E, LocationName.city_escape_animal_12: 0xFF0C60, LocationName.prison_lane_animal_12: 0xFF0C62, LocationName.metal_harbor_animal_12: 0xFF0C63, LocationName.green_forest_animal_12: 0xFF0C64, LocationName.mission_street_animal_12: 0xFF0C66, LocationName.hidden_base_animal_12: 0xFF0C69, LocationName.pyramid_cave_animal_12: 0xFF0C6A, LocationName.eternal_engine_animal_12: 0xFF0C6C, LocationName.crazy_gadget_animal_12: 0xFF0C6E, LocationName.final_rush_animal_12: 0xFF0C6F, LocationName.iron_gate_animal_12: 0xFF0C70, LocationName.sand_ocean_animal_12: 0xFF0C72, LocationName.radical_highway_animal_12: 0xFF0C73, LocationName.lost_colony_animal_12: 0xFF0C75, LocationName.weapons_bed_animal_12: 0xFF0C76, LocationName.white_jungle_animal_12: 0xFF0C78, LocationName.sky_rail_animal_12: 0xFF0C7A, LocationName.cosmic_wall_animal_12: 0xFF0C7C, LocationName.final_chase_animal_12: 0xFF0C7D, LocationName.cannon_core_animal_12: 0xFF0C7E, LocationName.city_escape_animal_13: 0xFF0C80, LocationName.prison_lane_animal_13: 0xFF0C82, LocationName.metal_harbor_animal_13: 0xFF0C83, LocationName.green_forest_animal_13: 0xFF0C84, LocationName.mission_street_animal_13: 0xFF0C86, LocationName.hidden_base_animal_13: 0xFF0C89, LocationName.pyramid_cave_animal_13: 0xFF0C8A, LocationName.eternal_engine_animal_13: 0xFF0C8C, LocationName.crazy_gadget_animal_13: 0xFF0C8E, LocationName.final_rush_animal_13: 0xFF0C8F, LocationName.iron_gate_animal_13: 0xFF0C90, LocationName.sand_ocean_animal_13: 0xFF0C92, LocationName.radical_highway_animal_13: 0xFF0C93, LocationName.lost_colony_animal_13: 0xFF0C95, LocationName.weapons_bed_animal_13: 0xFF0C96, LocationName.white_jungle_animal_13: 0xFF0C98, LocationName.sky_rail_animal_13: 0xFF0C9A, LocationName.cosmic_wall_animal_13: 0xFF0C9C, LocationName.final_chase_animal_13: 0xFF0C9D, LocationName.cannon_core_animal_13: 0xFF0C9E, LocationName.city_escape_animal_14: 0xFF0CA0, LocationName.prison_lane_animal_14: 0xFF0CA2, LocationName.metal_harbor_animal_14: 0xFF0CA3, LocationName.green_forest_animal_14: 0xFF0CA4, LocationName.mission_street_animal_14: 0xFF0CA6, LocationName.hidden_base_animal_14: 0xFF0CA9, LocationName.pyramid_cave_animal_14: 0xFF0CAA, LocationName.eternal_engine_animal_14: 0xFF0CAC, LocationName.crazy_gadget_animal_14: 0xFF0CAE, LocationName.final_rush_animal_14: 0xFF0CAF, LocationName.iron_gate_animal_14: 0xFF0CB0, LocationName.sand_ocean_animal_14: 0xFF0CB2, LocationName.radical_highway_animal_14: 0xFF0CB3, LocationName.lost_colony_animal_14: 0xFF0CB5, LocationName.weapons_bed_animal_14: 0xFF0CB6, LocationName.white_jungle_animal_14: 0xFF0CB8, LocationName.sky_rail_animal_14: 0xFF0CBA, LocationName.cosmic_wall_animal_14: 0xFF0CBC, LocationName.final_chase_animal_14: 0xFF0CBD, LocationName.cannon_core_animal_14: 0xFF0CBE, LocationName.city_escape_animal_15: 0xFF0CC0, LocationName.prison_lane_animal_15: 0xFF0CC2, LocationName.green_forest_animal_15: 0xFF0CC4, LocationName.mission_street_animal_15: 0xFF0CC6, LocationName.hidden_base_animal_15: 0xFF0CC9, LocationName.pyramid_cave_animal_15: 0xFF0CCA, LocationName.eternal_engine_animal_15: 0xFF0CCC, LocationName.crazy_gadget_animal_15: 0xFF0CCE, LocationName.final_rush_animal_15: 0xFF0CCF, LocationName.iron_gate_animal_15: 0xFF0CD0, LocationName.sand_ocean_animal_15: 0xFF0CD2, LocationName.radical_highway_animal_15: 0xFF0CD3, LocationName.weapons_bed_animal_15: 0xFF0CD6, LocationName.white_jungle_animal_15: 0xFF0CD8, LocationName.sky_rail_animal_15: 0xFF0CDA, LocationName.cosmic_wall_animal_15: 0xFF0CDC, LocationName.final_chase_animal_15: 0xFF0CDD, LocationName.cannon_core_animal_15: 0xFF0CDE, LocationName.city_escape_animal_16: 0xFF0CE0, LocationName.green_forest_animal_16: 0xFF0CE4, LocationName.mission_street_animal_16: 0xFF0CE6, LocationName.pyramid_cave_animal_16: 0xFF0CEA, LocationName.crazy_gadget_animal_16: 0xFF0CEE, LocationName.final_rush_animal_16: 0xFF0CEF, LocationName.radical_highway_animal_16: 0xFF0CF3, LocationName.white_jungle_animal_16: 0xFF0CF8, LocationName.sky_rail_animal_16: 0xFF0CFA, LocationName.final_chase_animal_16: 0xFF0CFD, LocationName.cannon_core_animal_16: 0xFF0CFE, LocationName.city_escape_animal_17: 0xFF0D00, LocationName.green_forest_animal_17: 0xFF0D04, LocationName.pyramid_cave_animal_17: 0xFF0D0A, LocationName.radical_highway_animal_17: 0xFF0D13, LocationName.sky_rail_animal_17: 0xFF0D1A, LocationName.final_chase_animal_17: 0xFF0D1D, LocationName.cannon_core_animal_17: 0xFF0D1E, LocationName.city_escape_animal_18: 0xFF0D20, LocationName.green_forest_animal_18: 0xFF0D24, LocationName.pyramid_cave_animal_18: 0xFF0D2A, LocationName.radical_highway_animal_18: 0xFF0D33, LocationName.sky_rail_animal_18: 0xFF0D3A, LocationName.cannon_core_animal_18: 0xFF0D3E, LocationName.city_escape_animal_19: 0xFF0D40, LocationName.pyramid_cave_animal_19: 0xFF0D4A, LocationName.radical_highway_animal_19: 0xFF0D53, LocationName.sky_rail_animal_19: 0xFF0D5A, LocationName.cannon_core_animal_19: 0xFF0D5E, LocationName.city_escape_animal_20: 0xFF0D60, LocationName.radical_highway_animal_20: 0xFF0D73, LocationName.sky_rail_animal_20: 0xFF0D7A, } boss_gate_location_table = { LocationName.gate_1_boss: 0xFF0100, LocationName.gate_2_boss: 0xFF0101, LocationName.gate_3_boss: 0xFF0102, LocationName.gate_4_boss: 0xFF0103, LocationName.gate_5_boss: 0xFF0104, } boss_rush_location_table = { LocationName.boss_rush_1: 0xFF0105, LocationName.boss_rush_2: 0xFF0106, LocationName.boss_rush_3: 0xFF0107, LocationName.boss_rush_4: 0xFF0108, LocationName.boss_rush_5: 0xFF0109, LocationName.boss_rush_6: 0xFF010A, LocationName.boss_rush_7: 0xFF010B, LocationName.boss_rush_8: 0xFF010C, LocationName.boss_rush_9: 0xFF010D, LocationName.boss_rush_10: 0xFF010E, LocationName.boss_rush_11: 0xFF010F, LocationName.boss_rush_12: 0xFF0110, LocationName.boss_rush_13: 0xFF0111, LocationName.boss_rush_14: 0xFF0112, LocationName.boss_rush_15: 0xFF0113, LocationName.boss_rush_16: 0xFF0114, } chao_race_beginner_location_table = { LocationName.chao_race_crab_pool_1: 0xFF0200, LocationName.chao_race_crab_pool_2: 0xFF0201, LocationName.chao_race_crab_pool_3: 0xFF0202, LocationName.chao_race_stump_valley_1: 0xFF0203, LocationName.chao_race_stump_valley_2: 0xFF0204, LocationName.chao_race_stump_valley_3: 0xFF0205, LocationName.chao_race_mushroom_forest_1: 0xFF0206, LocationName.chao_race_mushroom_forest_2: 0xFF0207, LocationName.chao_race_mushroom_forest_3: 0xFF0208, LocationName.chao_race_block_canyon_1: 0xFF0209, LocationName.chao_race_block_canyon_2: 0xFF020A, LocationName.chao_race_block_canyon_3: 0xFF020B, } chao_karate_beginner_location_table = { LocationName.chao_beginner_karate_1: 0xFF0300, LocationName.chao_beginner_karate_2: 0xFF0301, LocationName.chao_beginner_karate_3: 0xFF0302, LocationName.chao_beginner_karate_4: 0xFF0303, LocationName.chao_beginner_karate_5: 0xFF0304, } chao_race_intermediate_location_table = { LocationName.chao_race_challenge_1: 0xFF022A, LocationName.chao_race_challenge_2: 0xFF022B, LocationName.chao_race_challenge_3: 0xFF022C, LocationName.chao_race_challenge_4: 0xFF022D, LocationName.chao_race_challenge_5: 0xFF022E, LocationName.chao_race_challenge_6: 0xFF022F, LocationName.chao_race_challenge_7: 0xFF0230, LocationName.chao_race_challenge_8: 0xFF0231, LocationName.chao_race_challenge_9: 0xFF0232, LocationName.chao_race_challenge_10: 0xFF0233, LocationName.chao_race_challenge_11: 0xFF0234, LocationName.chao_race_challenge_12: 0xFF0235, LocationName.chao_race_hero_1: 0xFF0236, LocationName.chao_race_hero_2: 0xFF0237, LocationName.chao_race_hero_3: 0xFF0238, LocationName.chao_race_hero_4: 0xFF0239, LocationName.chao_race_dark_1: 0xFF023A, LocationName.chao_race_dark_2: 0xFF023B, LocationName.chao_race_dark_3: 0xFF023C, LocationName.chao_race_dark_4: 0xFF023D, } chao_karate_intermediate_location_table = { LocationName.chao_standard_karate_1: 0xFF0305, LocationName.chao_standard_karate_2: 0xFF0306, LocationName.chao_standard_karate_3: 0xFF0307, LocationName.chao_standard_karate_4: 0xFF0308, LocationName.chao_standard_karate_5: 0xFF0309, } chao_race_expert_location_table = { LocationName.chao_race_aquamarine_1: 0xFF020C, LocationName.chao_race_aquamarine_2: 0xFF020D, LocationName.chao_race_aquamarine_3: 0xFF020E, LocationName.chao_race_aquamarine_4: 0xFF020F, LocationName.chao_race_aquamarine_5: 0xFF0210, LocationName.chao_race_topaz_1: 0xFF0211, LocationName.chao_race_topaz_2: 0xFF0212, LocationName.chao_race_topaz_3: 0xFF0213, LocationName.chao_race_topaz_4: 0xFF0214, LocationName.chao_race_topaz_5: 0xFF0215, LocationName.chao_race_peridot_1: 0xFF0216, LocationName.chao_race_peridot_2: 0xFF0217, LocationName.chao_race_peridot_3: 0xFF0218, LocationName.chao_race_peridot_4: 0xFF0219, LocationName.chao_race_peridot_5: 0xFF021A, LocationName.chao_race_garnet_1: 0xFF021B, LocationName.chao_race_garnet_2: 0xFF021C, LocationName.chao_race_garnet_3: 0xFF021D, LocationName.chao_race_garnet_4: 0xFF021E, LocationName.chao_race_garnet_5: 0xFF021F, LocationName.chao_race_onyx_1: 0xFF0220, LocationName.chao_race_onyx_2: 0xFF0221, LocationName.chao_race_onyx_3: 0xFF0222, LocationName.chao_race_onyx_4: 0xFF0223, LocationName.chao_race_onyx_5: 0xFF0224, LocationName.chao_race_diamond_1: 0xFF0225, LocationName.chao_race_diamond_2: 0xFF0226, LocationName.chao_race_diamond_3: 0xFF0227, LocationName.chao_race_diamond_4: 0xFF0228, LocationName.chao_race_diamond_5: 0xFF0229, } chao_karate_expert_location_table = { LocationName.chao_expert_karate_1: 0xFF030A, LocationName.chao_expert_karate_2: 0xFF030B, LocationName.chao_expert_karate_3: 0xFF030C, LocationName.chao_expert_karate_4: 0xFF030D, LocationName.chao_expert_karate_5: 0xFF030E, } chao_karate_super_location_table = { LocationName.chao_super_karate_1: 0xFF030F, LocationName.chao_super_karate_2: 0xFF0310, LocationName.chao_super_karate_3: 0xFF0311, LocationName.chao_super_karate_4: 0xFF0312, LocationName.chao_super_karate_5: 0xFF0313, } chao_stat_swim_table = { LocationName.chao_stat_swim_base + str(index): (0xFF0E00 + index) for index in range(1,100) } chao_stat_fly_table = { LocationName.chao_stat_fly_base + str(index): (0xFF0E80 + index) for index in range(1,100) } chao_stat_run_table = { LocationName.chao_stat_run_base + str(index): (0xFF0F00 + index) for index in range(1,100) } chao_stat_power_table = { LocationName.chao_stat_power_base + str(index): (0xFF0F80 + index) for index in range(1,100) } chao_stat_stamina_table = { LocationName.chao_stat_stamina_base + str(index): (0xFF1000 + index) for index in range(1,100) } chao_stat_luck_table = { LocationName.chao_stat_luck_base + str(index): (0xFF1080 + index) for index in range(1,100) } chao_stat_intelligence_table = { LocationName.chao_stat_intelligence_base + str(index): (0xFF1100 + index) for index in range(1,100) } chao_animal_event_location_table = { LocationName.animal_penguin: None, LocationName.animal_seal: None, LocationName.animal_otter: None, LocationName.animal_rabbit: None, LocationName.animal_cheetah: None, LocationName.animal_warthog: None, LocationName.animal_bear: None, LocationName.animal_tiger: None, LocationName.animal_gorilla: None, LocationName.animal_peacock: None, LocationName.animal_parrot: None, LocationName.animal_condor: None, LocationName.animal_skunk: None, LocationName.animal_sheep: None, LocationName.animal_raccoon: None, LocationName.animal_halffish: None, LocationName.animal_skeleton_dog: None, LocationName.animal_bat: None, LocationName.animal_dragon: None, LocationName.animal_unicorn: None, LocationName.animal_phoenix: None, } chao_animal_part_location_table = { LocationName.chao_penguin_arms: 0xFF1220, LocationName.chao_penguin_forehead: 0xFF1222, LocationName.chao_penguin_legs: 0xFF1224, LocationName.chao_seal_arms: 0xFF1228, LocationName.chao_seal_tail: 0xFF122E, LocationName.chao_otter_arms: 0xFF1230, LocationName.chao_otter_ears: 0xFF1231, LocationName.chao_otter_face: 0xFF1233, LocationName.chao_otter_legs: 0xFF1234, LocationName.chao_otter_tail: 0xFF1236, LocationName.chao_rabbit_arms: 0xFF1238, LocationName.chao_rabbit_ears: 0xFF1239, LocationName.chao_rabbit_legs: 0xFF123C, LocationName.chao_rabbit_tail: 0xFF123E, LocationName.chao_cheetah_arms: 0xFF1240, LocationName.chao_cheetah_ears: 0xFF1241, LocationName.chao_cheetah_legs: 0xFF1244, LocationName.chao_cheetah_tail: 0xFF1246, LocationName.chao_warthog_arms: 0xFF1248, LocationName.chao_warthog_ears: 0xFF1249, LocationName.chao_warthog_face: 0xFF124B, LocationName.chao_warthog_legs: 0xFF124C, LocationName.chao_warthog_tail: 0xFF124E, LocationName.chao_bear_arms: 0xFF1250, LocationName.chao_bear_ears: 0xFF1251, LocationName.chao_bear_legs: 0xFF1254, LocationName.chao_tiger_arms: 0xFF1258, LocationName.chao_tiger_ears: 0xFF1259, LocationName.chao_tiger_legs: 0xFF125C, LocationName.chao_tiger_tail: 0xFF125E, LocationName.chao_gorilla_arms: 0xFF1260, LocationName.chao_gorilla_ears: 0xFF1261, LocationName.chao_gorilla_forehead: 0xFF1262, LocationName.chao_gorilla_legs: 0xFF1264, LocationName.chao_peacock_forehead: 0xFF126A, LocationName.chao_peacock_legs: 0xFF126C, LocationName.chao_peacock_tail: 0xFF126E, LocationName.chao_peacock_wings: 0xFF126F, LocationName.chao_parrot_forehead: 0xFF1272, LocationName.chao_parrot_legs: 0xFF1274, LocationName.chao_parrot_tail: 0xFF1276, LocationName.chao_parrot_wings: 0xFF1277, LocationName.chao_condor_ears: 0xFF1279, LocationName.chao_condor_legs: 0xFF127C, LocationName.chao_condor_tail: 0xFF127E, LocationName.chao_condor_wings: 0xFF127F, LocationName.chao_skunk_arms: 0xFF1280, LocationName.chao_skunk_forehead: 0xFF1282, LocationName.chao_skunk_legs: 0xFF1284, LocationName.chao_skunk_tail: 0xFF1286, LocationName.chao_sheep_arms: 0xFF1288, LocationName.chao_sheep_ears: 0xFF1289, LocationName.chao_sheep_legs: 0xFF128C, LocationName.chao_sheep_horn: 0xFF128D, LocationName.chao_sheep_tail: 0xFF128E, LocationName.chao_raccoon_arms: 0xFF1290, LocationName.chao_raccoon_ears: 0xFF1291, LocationName.chao_raccoon_legs: 0xFF1294, LocationName.chao_dragon_arms: 0xFF12A0, LocationName.chao_dragon_ears: 0xFF12A1, LocationName.chao_dragon_legs: 0xFF12A4, LocationName.chao_dragon_horn: 0xFF12A5, LocationName.chao_dragon_tail: 0xFF12A6, LocationName.chao_dragon_wings: 0xFF12A7, LocationName.chao_unicorn_arms: 0xFF12A8, LocationName.chao_unicorn_ears: 0xFF12A9, LocationName.chao_unicorn_forehead: 0xFF12AA, LocationName.chao_unicorn_legs: 0xFF12AC, LocationName.chao_unicorn_tail: 0xFF12AE, LocationName.chao_phoenix_forehead: 0xFF12B2, LocationName.chao_phoenix_legs: 0xFF12B4, LocationName.chao_phoenix_tail: 0xFF12B6, LocationName.chao_phoenix_wings: 0xFF12B7, } chao_kindergarten_location_table = { LocationName.chao_kindergarten_drawing_1: 0xFF12D0, LocationName.chao_kindergarten_drawing_2: 0xFF12D1, LocationName.chao_kindergarten_drawing_3: 0xFF12D2, LocationName.chao_kindergarten_drawing_4: 0xFF12D3, LocationName.chao_kindergarten_drawing_5: 0xFF12D4, LocationName.chao_kindergarten_shake_dance: 0xFF12D8, LocationName.chao_kindergarten_spin_dance: 0xFF12D9, LocationName.chao_kindergarten_step_dance: 0xFF12DA, LocationName.chao_kindergarten_gogo_dance: 0xFF12DB, LocationName.chao_kindergarten_exercise: 0xFF12DC, LocationName.chao_kindergarten_song_1: 0xFF12E0, LocationName.chao_kindergarten_song_2: 0xFF12E1, LocationName.chao_kindergarten_song_3: 0xFF12E2, LocationName.chao_kindergarten_song_4: 0xFF12E3, LocationName.chao_kindergarten_song_5: 0xFF12E4, LocationName.chao_kindergarten_bell: 0xFF12E8, LocationName.chao_kindergarten_castanets: 0xFF12E9, LocationName.chao_kindergarten_cymbals: 0xFF12EA, LocationName.chao_kindergarten_drum: 0xFF12EB, LocationName.chao_kindergarten_flute: 0xFF12EC, LocationName.chao_kindergarten_maracas: 0xFF12ED, LocationName.chao_kindergarten_trumpet: 0xFF12EE, LocationName.chao_kindergarten_tambourine: 0xFF12EF, } chao_kindergarten_basics_location_table = { LocationName.chao_kindergarten_any_drawing: 0xFF12F0, LocationName.chao_kindergarten_any_dance: 0xFF12F1, LocationName.chao_kindergarten_any_song: 0xFF12F2, LocationName.chao_kindergarten_any_instrument: 0xFF12F3, } black_market_location_table = { LocationName.chao_black_market_base + str(index): (0xFF1300 + index) for index in range(1,65) } kart_race_beginner_location_table = { LocationName.kart_race_beginner_sonic: 0xFF0A00, LocationName.kart_race_beginner_tails: 0xFF0A01, LocationName.kart_race_beginner_knuckles: 0xFF0A02, LocationName.kart_race_beginner_shadow: 0xFF0A03, LocationName.kart_race_beginner_eggman: 0xFF0A04, LocationName.kart_race_beginner_rouge: 0xFF0A05, } kart_race_standard_location_table = { LocationName.kart_race_standard_sonic: 0xFF0A06, LocationName.kart_race_standard_tails: 0xFF0A07, LocationName.kart_race_standard_knuckles: 0xFF0A08, LocationName.kart_race_standard_shadow: 0xFF0A09, LocationName.kart_race_standard_eggman: 0xFF0A0A, LocationName.kart_race_standard_rouge: 0xFF0A0B, } kart_race_expert_location_table = { LocationName.kart_race_expert_sonic: 0xFF0A0C, LocationName.kart_race_expert_tails: 0xFF0A0D, LocationName.kart_race_expert_knuckles: 0xFF0A0E, LocationName.kart_race_expert_shadow: 0xFF0A0F, LocationName.kart_race_expert_eggman: 0xFF0A10, LocationName.kart_race_expert_rouge: 0xFF0A11, } kart_race_mini_location_table = { LocationName.kart_race_beginner: 0xFF0A12, LocationName.kart_race_standard: 0xFF0A13, LocationName.kart_race_expert: 0xFF0A14, } green_hill_location_table = { LocationName.green_hill: 0xFF001F, } green_hill_chao_location_table = { LocationName.green_hill_chao_1: 0xFF041F, } green_hill_animal_location_table = { #LocationName.green_hill_animal_1: 0xFF0B1F, # Disabled for technical reasons, may return } final_boss_location_table = { # LocationName.biolizard: 0xFF003F, LocationName.finalhazard: 0xFF005F, } grand_prix_location_table = { LocationName.grand_prix: 0xFF007F, } chaos_chao_location_table = { LocationName.chaos_chao: 0xFF009F, } all_locations = { **mission_location_table, **upgrade_location_table, **boss_gate_location_table, **boss_rush_location_table, **chao_key_location_table, **pipe_location_table, **hidden_whistle_location_table, **beetle_location_table, **omochao_location_table, **animal_location_table, **chao_race_beginner_location_table, **chao_karate_beginner_location_table, **chao_race_intermediate_location_table, **chao_karate_intermediate_location_table, **chao_race_expert_location_table, **chao_karate_expert_location_table, **chao_karate_super_location_table, **kart_race_beginner_location_table, **kart_race_standard_location_table, **kart_race_expert_location_table, **kart_race_mini_location_table, **green_hill_location_table, **green_hill_chao_location_table, **green_hill_animal_location_table, **final_boss_location_table, **grand_prix_location_table, **chaos_chao_location_table, **chao_stat_swim_table, **chao_stat_fly_table, **chao_stat_run_table, **chao_stat_power_table, **chao_stat_stamina_table, **chao_stat_luck_table, **chao_stat_intelligence_table, **chao_animal_part_location_table, **chao_kindergarten_location_table, **chao_kindergarten_basics_location_table, **black_market_location_table, } boss_gate_set = [ LocationName.gate_1_boss, LocationName.gate_2_boss, LocationName.gate_3_boss, LocationName.gate_4_boss, LocationName.gate_5_boss, ] chao_race_prize_set = [ LocationName.chao_race_crab_pool_3, LocationName.chao_race_stump_valley_3, LocationName.chao_race_mushroom_forest_3, LocationName.chao_race_block_canyon_3, LocationName.chao_race_aquamarine_5, LocationName.chao_race_topaz_5, LocationName.chao_race_peridot_5, LocationName.chao_race_garnet_5, LocationName.chao_race_onyx_5, LocationName.chao_race_diamond_5, LocationName.chao_race_challenge_4, LocationName.chao_race_challenge_8, LocationName.chao_race_challenge_12, LocationName.chao_race_hero_2, LocationName.chao_race_hero_4, LocationName.chao_race_dark_2, LocationName.chao_race_dark_4, LocationName.chao_beginner_karate_5, LocationName.chao_standard_karate_5, LocationName.chao_expert_karate_5, LocationName.chao_super_karate_5, ] def setup_locations(world: World, player: int, mission_map: typing.Dict[int, int], mission_count_map: typing.Dict[int, int]): location_table = {} chao_location_table = {} if world.options.goal == 3: if world.options.kart_race_checks == 2: location_table.update({**kart_race_beginner_location_table}) location_table.update({**kart_race_standard_location_table}) location_table.update({**kart_race_expert_location_table}) elif world.options.kart_race_checks == 1: location_table.update({**kart_race_mini_location_table}) location_table.update({**grand_prix_location_table}) else: for i in range(31): mission_count = mission_count_map[i] mission_order: typing.List[int] = mission_orders[mission_map[i]] stage_prefix: str = stage_name_prefixes[i] for j in range(mission_count): mission_number = mission_order[j] location_name: str = stage_prefix + str(mission_number) location_table[location_name] = mission_location_table[location_name] location_table.update({**upgrade_location_table}) if world.options.keysanity: location_table.update({**chao_key_location_table}) if world.options.whistlesanity.value == 1: location_table.update({**pipe_location_table}) elif world.options.whistlesanity.value == 2: location_table.update({**hidden_whistle_location_table}) elif world.options.whistlesanity.value == 3: location_table.update({**pipe_location_table}) location_table.update({**hidden_whistle_location_table}) if world.options.beetlesanity: location_table.update({**beetle_location_table}) if world.options.omosanity: location_table.update({**omochao_location_table}) if world.options.animalsanity: location_table.update({**animal_location_table}) if world.options.kart_race_checks == 2: location_table.update({**kart_race_beginner_location_table}) location_table.update({**kart_race_standard_location_table}) location_table.update({**kart_race_expert_location_table}) elif world.options.kart_race_checks == 1: location_table.update({**kart_race_mini_location_table}) if world.options.goal.value in [0, 2, 4, 5, 6]: location_table.update({**final_boss_location_table}) elif world.options.goal.value in [7]: location_table.update({**chaos_chao_location_table}) if world.options.goal.value in [1, 2]: location_table.update({**green_hill_location_table}) if world.options.keysanity: location_table.update({**green_hill_chao_location_table}) if world.options.animalsanity: location_table.update({**green_hill_animal_location_table}) if world.options.goal.value in [4, 5, 6]: location_table.update({**boss_rush_location_table}) if world.options.chao_race_difficulty.value >= 1: chao_location_table.update({**chao_race_beginner_location_table}) if world.options.chao_race_difficulty.value >= 2: chao_location_table.update({**chao_race_intermediate_location_table}) if world.options.chao_race_difficulty.value >= 3: chao_location_table.update({**chao_race_expert_location_table}) if world.options.chao_karate_difficulty.value >= 1: chao_location_table.update({**chao_karate_beginner_location_table}) if world.options.chao_karate_difficulty.value >= 2: chao_location_table.update({**chao_karate_intermediate_location_table}) if world.options.chao_karate_difficulty.value >= 3: chao_location_table.update({**chao_karate_expert_location_table}) if world.options.chao_karate_difficulty.value >= 4: chao_location_table.update({**chao_karate_super_location_table}) for key, value in chao_location_table.items(): if key not in chao_race_prize_set: if world.options.chao_stadium_checks == "all": location_table[key] = value else: location_table[key] = value for index in range(1, world.options.chao_stats.value + 1): if (index % world.options.chao_stats_frequency.value) == (world.options.chao_stats.value % world.options.chao_stats_frequency.value): location_table[LocationName.chao_stat_swim_base + str(index)] = chao_stat_swim_table[ LocationName.chao_stat_swim_base + str(index)] location_table[LocationName.chao_stat_fly_base + str(index)] = chao_stat_fly_table[ LocationName.chao_stat_fly_base + str(index)] location_table[LocationName.chao_stat_run_base + str(index)] = chao_stat_run_table[ LocationName.chao_stat_run_base + str(index)] location_table[LocationName.chao_stat_power_base + str(index)] = chao_stat_power_table[ LocationName.chao_stat_power_base + str(index)] if world.options.chao_stats_stamina: location_table[LocationName.chao_stat_stamina_base + str(index)] = chao_stat_stamina_table[LocationName.chao_stat_stamina_base + str(index)] if world.options.chao_stats_hidden: location_table[LocationName.chao_stat_luck_base + str(index)] = chao_stat_luck_table[ LocationName.chao_stat_luck_base + str(index)] location_table[LocationName.chao_stat_intelligence_base + str(index)] = chao_stat_intelligence_table[LocationName.chao_stat_intelligence_base + str(index)] if world.options.chao_animal_parts: location_table.update({**chao_animal_part_location_table}) if world.options.chao_kindergarten.value == 1: location_table.update({**chao_kindergarten_basics_location_table}) elif world.options.chao_kindergarten.value == 2: location_table.update({**chao_kindergarten_location_table}) for index in range(1, world.options.black_market_slots.value + 1): location_table[LocationName.chao_black_market_base + str(index)] = black_market_location_table[LocationName.chao_black_market_base + str(index)] for x in range(len(boss_gate_set)): if x < world.options.number_of_level_gates.value: location_table[boss_gate_set[x]] = boss_gate_location_table[boss_gate_set[x]] return location_table lookup_id_to_name: typing.Dict[int, str] = {id: name for name, _ in all_locations.items()}