338 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			338 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import typing
 | |
| 
 | |
| from BaseClasses import Location
 | |
| from .Names import LocationName
 | |
| from worlds.AutoWorld import World
 | |
| 
 | |
| 
 | |
| class DKC3Location(Location):
 | |
|     game: str = "Donkey Kong Country 3"
 | |
| 
 | |
|     progress_byte: int = 0x000000
 | |
|     progress_bit:  int = 0
 | |
|     inverted_bit: bool = False
 | |
| 
 | |
|     def __init__(self, player: int, name: str = '', address: int = None, parent=None, prog_byte: int = None, prog_bit: int = None, invert: bool = False):
 | |
|         super().__init__(player, name, address, parent)
 | |
|         self.progress_byte = prog_byte
 | |
|         self.progress_bit  = prog_bit
 | |
|         self.inverted_bit  = invert
 | |
| 
 | |
| 
 | |
| level_location_table = {
 | |
|     LocationName.lakeside_limbo_flag:    0xDC3000,
 | |
|     LocationName.lakeside_limbo_bonus_1: 0xDC3001,
 | |
|     LocationName.lakeside_limbo_bonus_2: 0xDC3002,
 | |
|     LocationName.lakeside_limbo_dk:      0xDC3003,
 | |
| 
 | |
|     LocationName.doorstop_dash_flag:    0xDC3004,
 | |
|     LocationName.doorstop_dash_bonus_1: 0xDC3005,
 | |
|     LocationName.doorstop_dash_bonus_2: 0xDC3006,
 | |
|     LocationName.doorstop_dash_dk:      0xDC3007,
 | |
|     
 | |
|     LocationName.tidal_trouble_flag:    0xDC3008,
 | |
|     LocationName.tidal_trouble_bonus_1: 0xDC3009,
 | |
|     LocationName.tidal_trouble_bonus_2: 0xDC300A,
 | |
|     LocationName.tidal_trouble_dk:      0xDC300B,
 | |
| 
 | |
|     LocationName.skiddas_row_flag:    0xDC300C,
 | |
|     LocationName.skiddas_row_bonus_1: 0xDC300D,
 | |
|     LocationName.skiddas_row_bonus_2: 0xDC300E,
 | |
|     LocationName.skiddas_row_dk:      0xDC300F,
 | |
|     
 | |
|     LocationName.murky_mill_flag:    0xDC3010,
 | |
|     LocationName.murky_mill_bonus_1: 0xDC3011,
 | |
|     LocationName.murky_mill_bonus_2: 0xDC3012,
 | |
|     LocationName.murky_mill_dk:      0xDC3013,
 | |
| 
 | |
|     LocationName.barrel_shield_bust_up_flag:    0xDC3014,
 | |
|     LocationName.barrel_shield_bust_up_bonus_1: 0xDC3015,
 | |
|     LocationName.barrel_shield_bust_up_bonus_2: 0xDC3016,
 | |
|     LocationName.barrel_shield_bust_up_dk:      0xDC3017,
 | |
|     
 | |
|     LocationName.riverside_race_flag:    0xDC3018,
 | |
|     LocationName.riverside_race_bonus_1: 0xDC3019,
 | |
|     LocationName.riverside_race_bonus_2: 0xDC301A,
 | |
|     LocationName.riverside_race_dk:      0xDC301B,
 | |
| 
 | |
|     LocationName.squeals_on_wheels_flag:    0xDC301C,
 | |
|     LocationName.squeals_on_wheels_bonus_1: 0xDC301D,
 | |
|     LocationName.squeals_on_wheels_bonus_2: 0xDC301E,
 | |
|     LocationName.squeals_on_wheels_dk:      0xDC301F,
 | |
|     
 | |
|     LocationName.springin_spiders_flag:    0xDC3020,
 | |
|     LocationName.springin_spiders_bonus_1: 0xDC3021,
 | |
|     LocationName.springin_spiders_bonus_2: 0xDC3022,
 | |
|     LocationName.springin_spiders_dk:      0xDC3023,
 | |
| 
 | |
|     LocationName.bobbing_barrel_brawl_flag:    0xDC3024,
 | |
|     LocationName.bobbing_barrel_brawl_bonus_1: 0xDC3025,
 | |
|     LocationName.bobbing_barrel_brawl_bonus_2: 0xDC3026,
 | |
|     LocationName.bobbing_barrel_brawl_dk:      0xDC3027,
 | |
|     
 | |
|     LocationName.bazzas_blockade_flag:    0xDC3028,
 | |
|     LocationName.bazzas_blockade_bonus_1: 0xDC3029,
 | |
|     LocationName.bazzas_blockade_bonus_2: 0xDC302A,
 | |
|     LocationName.bazzas_blockade_dk:      0xDC302B,
 | |
| 
 | |
|     LocationName.rocket_barrel_ride_flag:    0xDC302C,
 | |
|     LocationName.rocket_barrel_ride_bonus_1: 0xDC302D,
 | |
|     LocationName.rocket_barrel_ride_bonus_2: 0xDC302E,
 | |
|     LocationName.rocket_barrel_ride_dk:      0xDC302F,
 | |
|     
 | |
|     LocationName.kreeping_klasps_flag:    0xDC3030,
 | |
|     LocationName.kreeping_klasps_bonus_1: 0xDC3031,
 | |
|     LocationName.kreeping_klasps_bonus_2: 0xDC3032,
 | |
|     LocationName.kreeping_klasps_dk:      0xDC3033,
 | |
| 
 | |
|     LocationName.tracker_barrel_trek_flag:    0xDC3034,
 | |
|     LocationName.tracker_barrel_trek_bonus_1: 0xDC3035,
 | |
|     LocationName.tracker_barrel_trek_bonus_2: 0xDC3036,
 | |
|     LocationName.tracker_barrel_trek_dk:      0xDC3037,
 | |
|     
 | |
|     LocationName.fish_food_frenzy_flag:    0xDC3038,
 | |
|     LocationName.fish_food_frenzy_bonus_1: 0xDC3039,
 | |
|     LocationName.fish_food_frenzy_bonus_2: 0xDC303A,
 | |
|     LocationName.fish_food_frenzy_dk:      0xDC303B,
 | |
| 
 | |
|     LocationName.fire_ball_frenzy_flag:    0xDC303C,
 | |
|     LocationName.fire_ball_frenzy_bonus_1: 0xDC303D,
 | |
|     LocationName.fire_ball_frenzy_bonus_2: 0xDC303E,
 | |
|     LocationName.fire_ball_frenzy_dk:      0xDC303F,
 | |
|     
 | |
|     LocationName.demolition_drain_pipe_flag:    0xDC3040,
 | |
|     LocationName.demolition_drain_pipe_bonus_1: 0xDC3041,
 | |
|     LocationName.demolition_drain_pipe_bonus_2: 0xDC3042,
 | |
|     LocationName.demolition_drain_pipe_dk:      0xDC3043,
 | |
| 
 | |
|     LocationName.ripsaw_rage_flag:    0xDC3044,
 | |
|     LocationName.ripsaw_rage_bonus_1: 0xDC3045,
 | |
|     LocationName.ripsaw_rage_bonus_2: 0xDC3046,
 | |
|     LocationName.ripsaw_rage_dk:      0xDC3047,
 | |
|     
 | |
|     LocationName.blazing_bazookas_flag:    0xDC3048,
 | |
|     LocationName.blazing_bazookas_bonus_1: 0xDC3049,
 | |
|     LocationName.blazing_bazookas_bonus_2: 0xDC304A,
 | |
|     LocationName.blazing_bazookas_dk:      0xDC304B,
 | |
| 
 | |
|     LocationName.low_g_labyrinth_flag:    0xDC304C,
 | |
|     LocationName.low_g_labyrinth_bonus_1: 0xDC304D,
 | |
|     LocationName.low_g_labyrinth_bonus_2: 0xDC304E,
 | |
|     LocationName.low_g_labyrinth_dk:      0xDC304F,
 | |
|     
 | |
|     LocationName.krevice_kreepers_flag:    0xDC3050,
 | |
|     LocationName.krevice_kreepers_bonus_1: 0xDC3051,
 | |
|     LocationName.krevice_kreepers_bonus_2: 0xDC3052,
 | |
|     LocationName.krevice_kreepers_dk:      0xDC3053,
 | |
| 
 | |
|     LocationName.tearaway_toboggan_flag:    0xDC3054,
 | |
|     LocationName.tearaway_toboggan_bonus_1: 0xDC3055,
 | |
|     LocationName.tearaway_toboggan_bonus_2: 0xDC3056,
 | |
|     LocationName.tearaway_toboggan_dk:      0xDC3057,
 | |
|     
 | |
|     LocationName.barrel_drop_bounce_flag:    0xDC3058,
 | |
|     LocationName.barrel_drop_bounce_bonus_1: 0xDC3059,
 | |
|     LocationName.barrel_drop_bounce_bonus_2: 0xDC305A,
 | |
|     LocationName.barrel_drop_bounce_dk:      0xDC305B,
 | |
| 
 | |
|     LocationName.krack_shot_kroc_flag:    0xDC305C,
 | |
|     LocationName.krack_shot_kroc_bonus_1: 0xDC305D,
 | |
|     LocationName.krack_shot_kroc_bonus_2: 0xDC305E,
 | |
|     LocationName.krack_shot_kroc_dk:      0xDC305F,
 | |
|     
 | |
|     LocationName.lemguin_lunge_flag:    0xDC3060,
 | |
|     LocationName.lemguin_lunge_bonus_1: 0xDC3061,
 | |
|     LocationName.lemguin_lunge_bonus_2: 0xDC3062,
 | |
|     LocationName.lemguin_lunge_dk:      0xDC3063,
 | |
| 
 | |
|     LocationName.buzzer_barrage_flag:    0xDC3064,
 | |
|     LocationName.buzzer_barrage_bonus_1: 0xDC3065,
 | |
|     LocationName.buzzer_barrage_bonus_2: 0xDC3066,
 | |
|     LocationName.buzzer_barrage_dk:      0xDC3067,
 | |
|     
 | |
|     LocationName.kong_fused_cliffs_flag:    0xDC3068,
 | |
|     LocationName.kong_fused_cliffs_bonus_1: 0xDC3069,
 | |
|     LocationName.kong_fused_cliffs_bonus_2: 0xDC306A,
 | |
|     LocationName.kong_fused_cliffs_dk:      0xDC306B,
 | |
| 
 | |
|     LocationName.floodlit_fish_flag:    0xDC306C,
 | |
|     LocationName.floodlit_fish_bonus_1: 0xDC306D,
 | |
|     LocationName.floodlit_fish_bonus_2: 0xDC306E,
 | |
|     LocationName.floodlit_fish_dk:      0xDC306F,
 | |
|     
 | |
|     LocationName.pothole_panic_flag:    0xDC3070,
 | |
|     LocationName.pothole_panic_bonus_1: 0xDC3071,
 | |
|     LocationName.pothole_panic_bonus_2: 0xDC3072,
 | |
|     LocationName.pothole_panic_dk:      0xDC3073,
 | |
| 
 | |
|     LocationName.ropey_rumpus_flag:    0xDC3074,
 | |
|     LocationName.ropey_rumpus_bonus_1: 0xDC3075,
 | |
|     LocationName.ropey_rumpus_bonus_2: 0xDC3076,
 | |
|     LocationName.ropey_rumpus_dk:      0xDC3077,
 | |
|     
 | |
|     LocationName.konveyor_rope_clash_flag:    0xDC3078,
 | |
|     LocationName.konveyor_rope_clash_bonus_1: 0xDC3079,
 | |
|     LocationName.konveyor_rope_clash_bonus_2: 0xDC307A,
 | |
|     LocationName.konveyor_rope_clash_dk:      0xDC307B,
 | |
| 
 | |
|     LocationName.creepy_caverns_flag:    0xDC307C,
 | |
|     LocationName.creepy_caverns_bonus_1: 0xDC307D,
 | |
|     LocationName.creepy_caverns_bonus_2: 0xDC307E,
 | |
|     LocationName.creepy_caverns_dk:      0xDC307F,
 | |
|     
 | |
|     LocationName.lightning_lookout_flag:    0xDC3080,
 | |
|     LocationName.lightning_lookout_bonus_1: 0xDC3081,
 | |
|     LocationName.lightning_lookout_bonus_2: 0xDC3082,
 | |
|     LocationName.lightning_lookout_dk:      0xDC3083,
 | |
| 
 | |
|     LocationName.koindozer_klamber_flag:    0xDC3084,
 | |
|     LocationName.koindozer_klamber_bonus_1: 0xDC3085,
 | |
|     LocationName.koindozer_klamber_bonus_2: 0xDC3086,
 | |
|     LocationName.koindozer_klamber_dk:      0xDC3087,
 | |
|     
 | |
|     LocationName.poisonous_pipeline_flag:    0xDC3088,
 | |
|     LocationName.poisonous_pipeline_bonus_1: 0xDC3089,
 | |
|     LocationName.poisonous_pipeline_bonus_2: 0xDC308A,
 | |
|     LocationName.poisonous_pipeline_dk:      0xDC308B,
 | |
| 
 | |
|     LocationName.stampede_sprint_flag:    0xDC308C,
 | |
|     LocationName.stampede_sprint_bonus_1: 0xDC308D,
 | |
|     LocationName.stampede_sprint_bonus_2: 0xDC308E,
 | |
|     LocationName.stampede_sprint_bonus_3: 0xDC308F,
 | |
|     LocationName.stampede_sprint_dk:      0xDC3090,
 | |
|     
 | |
|     LocationName.criss_cross_cliffs_flag:    0xDC3091,
 | |
|     LocationName.criss_cross_cliffs_bonus_1: 0xDC3092,
 | |
|     LocationName.criss_cross_cliffs_bonus_2: 0xDC3093,
 | |
|     LocationName.criss_cross_cliffs_dk:      0xDC3094,
 | |
| 
 | |
|     LocationName.tyrant_twin_tussle_flag:    0xDC3095,
 | |
|     LocationName.tyrant_twin_tussle_bonus_1: 0xDC3096,
 | |
|     LocationName.tyrant_twin_tussle_bonus_2: 0xDC3097,
 | |
|     LocationName.tyrant_twin_tussle_bonus_3: 0xDC3098,
 | |
|     LocationName.tyrant_twin_tussle_dk:      0xDC3099,
 | |
|     
 | |
|     LocationName.swoopy_salvo_flag:    0xDC309A,
 | |
|     LocationName.swoopy_salvo_bonus_1: 0xDC309B,
 | |
|     LocationName.swoopy_salvo_bonus_2: 0xDC309C,
 | |
|     LocationName.swoopy_salvo_bonus_3: 0xDC309D,
 | |
|     LocationName.swoopy_salvo_dk:      0xDC309E,
 | |
| 
 | |
|     LocationName.rocket_rush_flag:    0xDC309F,
 | |
|     LocationName.rocket_rush_dk:      0xDC30A0,
 | |
| }
 | |
| 
 | |
| kong_location_table = {
 | |
|     LocationName.lakeside_limbo_kong: 0xDC3100,
 | |
|     LocationName.doorstop_dash_kong:  0xDC3104,
 | |
|     LocationName.tidal_trouble_kong:  0xDC3108,
 | |
|     LocationName.skiddas_row_kong:    0xDC310C,
 | |
|     LocationName.murky_mill_kong:     0xDC3110,
 | |
| 
 | |
|     LocationName.barrel_shield_bust_up_kong: 0xDC3114,
 | |
|     LocationName.riverside_race_kong:        0xDC3118,
 | |
|     LocationName.squeals_on_wheels_kong:     0xDC311C,
 | |
|     LocationName.springin_spiders_kong:      0xDC3120,
 | |
|     LocationName.bobbing_barrel_brawl_kong:  0xDC3124,
 | |
| 
 | |
|     LocationName.bazzas_blockade_kong:     0xDC3128,
 | |
|     LocationName.rocket_barrel_ride_kong:  0xDC312C,
 | |
|     LocationName.kreeping_klasps_kong:     0xDC3130,
 | |
|     LocationName.tracker_barrel_trek_kong: 0xDC3134,
 | |
|     LocationName.fish_food_frenzy_kong:    0xDC3138,
 | |
| 
 | |
|     LocationName.fire_ball_frenzy_kong:      0xDC313C,
 | |
|     LocationName.demolition_drain_pipe_kong: 0xDC3140,
 | |
|     LocationName.ripsaw_rage_kong:           0xDC3144,
 | |
|     LocationName.blazing_bazookas_kong:      0xDC3148,
 | |
|     LocationName.low_g_labyrinth_kong:       0xDC314C,
 | |
| 
 | |
|     LocationName.krevice_kreepers_kong:   0xDC3150,
 | |
|     LocationName.tearaway_toboggan_kong:  0xDC3154,
 | |
|     LocationName.barrel_drop_bounce_kong: 0xDC3158,
 | |
|     LocationName.krack_shot_kroc_kong:    0xDC315C,
 | |
|     LocationName.lemguin_lunge_kong:      0xDC3160,
 | |
| 
 | |
|     LocationName.buzzer_barrage_kong:    0xDC3164,
 | |
|     LocationName.kong_fused_cliffs_kong: 0xDC3168,
 | |
|     LocationName.floodlit_fish_kong:     0xDC316C,
 | |
|     LocationName.pothole_panic_kong:     0xDC3170,
 | |
|     LocationName.ropey_rumpus_kong:      0xDC3174,
 | |
| 
 | |
|     LocationName.konveyor_rope_clash_kong: 0xDC3178,
 | |
|     LocationName.creepy_caverns_kong:      0xDC317C,
 | |
|     LocationName.lightning_lookout_kong:   0xDC3180,
 | |
|     LocationName.koindozer_klamber_kong:   0xDC3184,
 | |
|     LocationName.poisonous_pipeline_kong:  0xDC3188,
 | |
| 
 | |
|     LocationName.stampede_sprint_kong:    0xDC318C,
 | |
|     LocationName.criss_cross_cliffs_kong: 0xDC3191,
 | |
|     LocationName.tyrant_twin_tussle_kong: 0xDC3195,
 | |
|     LocationName.swoopy_salvo_kong:       0xDC319A,
 | |
| }
 | |
| 
 | |
| 
 | |
| boss_location_table = {
 | |
|     LocationName.belchas_barn:     0xDC30A1,
 | |
|     LocationName.arichs_ambush:    0xDC30A2,
 | |
|     LocationName.squirts_showdown: 0xDC30A3,
 | |
|     LocationName.kaos_karnage:     0xDC30A4,
 | |
|     LocationName.bleaks_house:     0xDC30A5,
 | |
|     LocationName.barboss_barrier:  0xDC30A6,
 | |
|     LocationName.kastle_kaos:      0xDC30A7,
 | |
|     LocationName.knautilus:        0xDC30A8,
 | |
| }
 | |
| 
 | |
| secret_cave_location_table = {
 | |
|     LocationName.belchas_burrow:  0xDC30A9,
 | |
|     LocationName.kong_cave:       0xDC30AA,
 | |
|     LocationName.undercover_cove: 0xDC30AB,
 | |
|     LocationName.ks_cache:        0xDC30AC,
 | |
|     LocationName.hill_top_hoard:  0xDC30AD,
 | |
|     LocationName.bounty_beach:    0xDC30AE,
 | |
|     LocationName.smugglers_cove:  0xDC30AF,
 | |
|     LocationName.arichs_hoard:    0xDC30B0,
 | |
|     LocationName.bounty_bay:      0xDC30B1,
 | |
|     LocationName.sky_high_secret: 0xDC30B2,
 | |
|     LocationName.glacial_grotto:  0xDC30B3,
 | |
|     LocationName.cifftop_cache:   0xDC30B4,
 | |
|     LocationName.sewer_stockpile: 0xDC30B5,
 | |
|     LocationName.banana_bird_mother: 0xDC30B6,
 | |
| }
 | |
| 
 | |
| brothers_bear_location_table = {
 | |
|     LocationName.bazaars_general_store_1: 0xDC30B7,
 | |
|     LocationName.bazaars_general_store_2: 0xDC30B8,
 | |
|     LocationName.brambles_bungalow:       0xDC30B9,
 | |
|     LocationName.flower_spot:             0xDC30BA,
 | |
|     LocationName.barters_swap_shop:       0xDC30BB,
 | |
|     LocationName.barnacles_island:        0xDC30BC,
 | |
|     LocationName.blues_beach_hut:         0xDC30BD,
 | |
|     LocationName.blizzards_basecamp:      0xDC30BE,
 | |
| }
 | |
| 
 | |
| all_locations = {
 | |
|     **level_location_table,
 | |
|     **boss_location_table,
 | |
|     **secret_cave_location_table,
 | |
|     **brothers_bear_location_table,
 | |
|     **kong_location_table,
 | |
| }
 | |
| 
 | |
| location_table = {}
 | |
| 
 | |
| 
 | |
| def setup_locations(world: World):
 | |
|     location_table = {**level_location_table, **boss_location_table, **secret_cave_location_table}
 | |
| 
 | |
|     if False:#world.options.include_trade_sequence:
 | |
|         location_table.update({**brothers_bear_location_table})
 | |
| 
 | |
|     if world.options.kongsanity:
 | |
|         location_table.update({**kong_location_table})
 | |
| 
 | |
|     return location_table
 | |
| 
 | |
| 
 | |
| lookup_id_to_name: typing.Dict[int, str] = {id: name for name, _ in all_locations.items()}
 | 
