137 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			137 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | 
 | ||
|  | class EntranceInfo: | ||
|  |     def __init__(self, room, alt_room=None, *, type=None, dungeon=None, index=None, instrument_room=None, target=None): | ||
|  |         if type is None and dungeon is not None: | ||
|  |             type = "dungeon" | ||
|  |         assert type is not None, "Missing entrance type" | ||
|  |         self.type = type | ||
|  |         self.room = room | ||
|  |         self.alt_room = alt_room | ||
|  |         self.dungeon = dungeon | ||
|  |         self.index = index | ||
|  |         self.instrument_room = instrument_room | ||
|  |         self.target = target | ||
|  | 
 | ||
|  | 
 | ||
|  | ENTRANCE_INFO = { | ||
|  |     # Row0-1 | ||
|  |     "d8":                           EntranceInfo(0x10, target=0x25d, dungeon=8, instrument_room=0x230), | ||
|  |     "phone_d8":                     EntranceInfo(0x11, target=0x299, type="dummy"), | ||
|  |     "fire_cave_exit":               EntranceInfo(0x03, target=0x1ee, type="connector"), | ||
|  |     "fire_cave_entrance":           EntranceInfo(0x13, target=0x1fe, type="connector"), | ||
|  |     "madbatter_taltal":             EntranceInfo(0x04, target=0x1e2, type="single"), | ||
|  |     "left_taltal_entrance":         EntranceInfo(0x15, target=0x2ea, type="connector"), | ||
|  |     "obstacle_cave_entrance":       EntranceInfo(0x17, target=0x2b6, type="connector"), | ||
|  |     "left_to_right_taltalentrance": EntranceInfo(0x07, target=0x2ee, type="connector"), | ||
|  |     "obstacle_cave_outside_chest":  EntranceInfo(0x18, target=0x2bb, type="connector", index=0), | ||
|  |     "obstacle_cave_exit":           EntranceInfo(0x18, target=0x2bc, type="connector", index=1), | ||
|  |     "papahl_entrance":              EntranceInfo(0x19, target=0x289, type="connector"), | ||
|  |     "papahl_exit":                  EntranceInfo(0x0A, target=0x28b, type="connector", index=0), | ||
|  |     "rooster_house":                EntranceInfo(0x0A, target=0x29f, type="dummy", index=2), | ||
|  |     "bird_cave":                    EntranceInfo(0x0A, target=0x27e, type="single", index=1), | ||
|  |     "multichest_left":              EntranceInfo(0x1D, target=0x2f9, type="connector", index=0), | ||
|  |     "multichest_right":             EntranceInfo(0x1D, target=0x2fa, type="connector", index=1), | ||
|  |     "multichest_top":               EntranceInfo(0x0D, target=0x2f2, type="connector"), | ||
|  |     "right_taltal_connector1":      EntranceInfo(0x1E, target=0x280, type="connector", index=0), | ||
|  |     "right_taltal_connector2":      EntranceInfo(0x1F, target=0x282, type="connector", index=0), | ||
|  |     "right_taltal_connector3":      EntranceInfo(0x1E, target=0x283, type="connector", index=1), | ||
|  |     "right_taltal_connector4":      EntranceInfo(0x1F, target=0x287, type="connector", index=2), | ||
|  |     "right_taltal_connector5":      EntranceInfo(0x1F, target=0x28c, type="connector", index=1), | ||
|  |     "right_taltal_connector6":      EntranceInfo(0x0F, target=0x28e, type="connector"), | ||
|  |     "right_fairy":                  EntranceInfo(0x1F, target=0x1fb, type="dummy", index=3), | ||
|  |     "d7":                           EntranceInfo(0x0E, "Alt0E", target=0x20e, dungeon=7, instrument_room=0x22C), | ||
|  |     # Row 2-3 | ||
|  |     "writes_cave_left":             EntranceInfo(0x20, target=0x2ae, type="connector"), | ||
|  |     "writes_cave_right":            EntranceInfo(0x21, target=0x2af, type="connector"), | ||
|  |     "writes_house":                 EntranceInfo(0x30, target=0x2a8, type="trade"), | ||
|  |     "writes_phone":                 EntranceInfo(0x31, target=0x29b, type="dummy"), | ||
|  |     "d2":                           EntranceInfo(0x24, target=0x136, dungeon=2, instrument_room=0x12A), | ||
|  |     "moblin_cave":                  EntranceInfo(0x35, target=0x2f0, type="single"), | ||
|  |     "photo_house":                  EntranceInfo(0x37, target=0x2b5, type="dummy"), | ||
|  |     "mambo":                        EntranceInfo(0x2A, target=0x2fd, type="single"), | ||
|  |     "d4":                           EntranceInfo(0x2B, "Alt2B", target=0x17a, dungeon=4, index=0, instrument_room=0x162), | ||
|  |     # TODO | ||
|  |     #  "d4_connector":                 EntranceInfo(0x2B, "Alt2B", index=1), | ||
|  |     #  "d4_connector_exit":            EntranceInfo(0x2D), | ||
|  |     "heartpiece_swim_cave":         EntranceInfo(0x2E, target=0x1f2, type="single"), | ||
|  |     "raft_return_exit":             EntranceInfo(0x2F, target=0x1e7, type="connector"), | ||
|  |     "raft_house":                   EntranceInfo(0x3F, target=0x2b0, type="insanity"), | ||
|  |     "raft_return_enter":            EntranceInfo(0x8F, target=0x1f7, type="connector"), | ||
|  |     # Forest and everything right of it | ||
|  |     "hookshot_cave":                EntranceInfo(0x42, target=0x2b3, type="single"), | ||
|  |     "toadstool_exit":               EntranceInfo(0x50, target=0x2ab, type="connector"), | ||
|  |     "forest_madbatter":             EntranceInfo(0x52, target=0x1e1, type="single"), | ||
|  |     "toadstool_entrance":           EntranceInfo(0x62, target=0x2bd, type="connector"), | ||
|  |     "crazy_tracy":                  EntranceInfo(0x45, target=0x2ad, type="dummy"), | ||
|  |     "witch":                        EntranceInfo(0x65, target=0x2a2, type="single"), | ||
|  |     "graveyard_cave_left":          EntranceInfo(0x75, target=0x2de, type="connector"), | ||
|  |     "graveyard_cave_right":         EntranceInfo(0x76, target=0x2df, type="connector"), | ||
|  |     "d0":                           EntranceInfo(0x77, target=0x312, dungeon=9, index="all", instrument_room=0x301), | ||
|  |     # Castle | ||
|  |     "castle_jump_cave":             EntranceInfo(0x78, target=0x1fd, type="single"), | ||
|  |     "castle_main_entrance":         EntranceInfo(0x69, target=0x2d3, type="connector"), | ||
|  |     "castle_upper_left":            EntranceInfo(0x59, target=0x2d5, type="connector", index=0), | ||
|  |     "castle_upper_right":           EntranceInfo(0x59, target=0x2d6, type="single", index=1), | ||
|  |     "castle_secret_exit":           EntranceInfo(0x49, target=0x1eb, type="connector"), | ||
|  |     "castle_secret_entrance":       EntranceInfo(0x4A, target=0x1ec, type="connector"), | ||
|  |     "castle_phone":                 EntranceInfo(0x4B, target=0x2cc, type="dummy"), | ||
|  |     # Mabe village | ||
|  |     "papahl_house_left":            EntranceInfo(0x82, target=0x2a5, type="connector", index=0), | ||
|  |     "papahl_house_right":           EntranceInfo(0x82, target=0x2a6, type="connector", index=1), | ||
|  |     "dream_hut":                    EntranceInfo(0x83, target=0x2aa, type="single"), | ||
|  |     "rooster_grave":                EntranceInfo(0x92, target=0x1f4, type="single"), | ||
|  |     "shop":                         EntranceInfo(0x93, target=0x2a1, type="single"), | ||
|  |     "madambowwow":                  EntranceInfo(0xA1, target=0x2a7, type="dummy", index=1), | ||
|  |     "kennel":                       EntranceInfo(0xA1, target=0x2b2, type="single", index=0), | ||
|  |     "start_house":                  EntranceInfo(0xA2, target=0x2a3, type="start"), | ||
|  |     "library":                      EntranceInfo(0xB0, target=0x1fa, type="dummy"), | ||
|  |     "ulrira":                       EntranceInfo(0xB1, target=0x2a9, type="dummy"), | ||
|  |     "mabe_phone":                   EntranceInfo(0xB2, target=0x2cb, type="dummy"), | ||
|  |     "trendy_shop":                  EntranceInfo(0xB3, target=0x2a0, type="trade"), | ||
|  |     # Ukuku Prairie | ||
|  |     "prairie_left_phone":           EntranceInfo(0xA4, target=0x2b4, type="dummy"), | ||
|  |     "prairie_left_cave1":           EntranceInfo(0x84, target=0x2cd, type="single"), | ||
|  |     "prairie_left_cave2":           EntranceInfo(0x86, target=0x2f4, type="single"), | ||
|  |     "prairie_left_fairy":           EntranceInfo(0x87, target=0x1f3, type="dummy"), | ||
|  |     "mamu":                         EntranceInfo(0xD4, target=0x2fb, type="insanity"), | ||
|  |     "d3":                           EntranceInfo(0xB5, target=0x152, dungeon=3, instrument_room=0x159), | ||
|  |     "prairie_right_phone":          EntranceInfo(0x88, target=0x29c, type="dummy"), | ||
|  |     "seashell_mansion":             EntranceInfo(0x8A, target=0x2e9, type="single"), | ||
|  |     "prairie_right_cave_top":       EntranceInfo(0xB8, target=0x292, type="connector", index=1), | ||
|  |     "prairie_right_cave_bottom":    EntranceInfo(0xC8, target=0x293, type="connector"), | ||
|  |     "prairie_right_cave_high":      EntranceInfo(0xB8, target=0x295, type="connector", index=0), | ||
|  |     "prairie_to_animal_connector":  EntranceInfo(0xAA, target=0x2d0, type="connector"), | ||
|  |     "animal_to_prairie_connector":  EntranceInfo(0xAB, target=0x2d1, type="connector"), | ||
|  |      | ||
|  |     "d6":                           EntranceInfo(0x8C, "Alt8C", target=0x1d4, dungeon=6, instrument_room=0x1B5), | ||
|  |     "d6_connector_exit":            EntranceInfo(0x9C, target=0x1f0, type="connector"), | ||
|  |     "d6_connector_entrance":        EntranceInfo(0x9D, target=0x1f1, type="connector"), | ||
|  |     "armos_fairy":                  EntranceInfo(0x8D, target=0x1ac, type="dummy"), | ||
|  |     "armos_maze_cave":              EntranceInfo(0xAE, target=0x2fc, type="single"), | ||
|  |     "armos_temple":                 EntranceInfo(0xAC, target=0x28f, type="single"), | ||
|  |     # Beach area | ||
|  |     "d1":                           EntranceInfo(0xD3, target=0x117, dungeon=1, instrument_room=0x102), | ||
|  |     "boomerang_cave":               EntranceInfo(0xF4, target=0x1f5, type="single", instrument_room="Alt1F5"),  # instrument_room is to configure the exit on the alt room layout | ||
|  |     "banana_seller":                EntranceInfo(0xE3, target=0x2fe, type="trade"), | ||
|  |     "ghost_house":                  EntranceInfo(0xF6, target=0x1e3, type="single"), | ||
|  | 
 | ||
|  |     # Lower prairie | ||
|  |     "richard_house":                EntranceInfo(0xD6, target=0x2c7, type="connector"), | ||
|  |     "richard_maze":                 EntranceInfo(0xC6, target=0x2c9, type="connector"), | ||
|  |     "prairie_low_phone":            EntranceInfo(0xE8, target=0x29d, type="dummy"), | ||
|  |     "prairie_madbatter_connector_entrance": EntranceInfo(0xF9, target=0x1f6, type="connector"), | ||
|  |     "prairie_madbatter_connector_exit": EntranceInfo(0xE7, target=0x1e5, type="connector"), | ||
|  |     "prairie_madbatter":            EntranceInfo(0xE6, target=0x1e0, type="single"), | ||
|  | 
 | ||
|  |     "d5":                           EntranceInfo(0xD9, target=0x1a1, dungeon=5, instrument_room=0x182), | ||
|  |     # Animal village | ||
|  |     "animal_phone":                 EntranceInfo(0xDB, target=0x2e3, type="dummy"), | ||
|  |     "animal_house1":                EntranceInfo(0xCC, target=0x2db, type="dummy", index=0), | ||
|  |     "animal_house2":                EntranceInfo(0xCC, target=0x2dd, type="dummy", index=1), | ||
|  |     "animal_house3":                EntranceInfo(0xCD, target=0x2d9, type="trade", index=1), | ||
|  |     "animal_house4":                EntranceInfo(0xCD, target=0x2da, type="dummy", index=2), | ||
|  |     "animal_house5":                EntranceInfo(0xDD, target=0x2d7, type="trade"), | ||
|  |     "animal_cave":                  EntranceInfo(0xCD, target=0x2f7, type="single", index=0), | ||
|  |     "desert_cave":                  EntranceInfo(0xCF, target=0x1f9, type="single"), | ||
|  | } |