Zero out more door frame tables, prepare structure for proper fix once understood.
This commit is contained in:
parent
2d81e87e7f
commit
57a6ba73c1
|
@ -35,6 +35,8 @@ class World(object):
|
|||
self.clock_mode = 'off'
|
||||
self.aga_randomness = 'off'
|
||||
self.lock_aga_door_in_escape = False
|
||||
self.fix_door_frames = self.shuffle not in ['vanilla', 'dungeonssimple', 'dungeonsfull']
|
||||
self.fix_trock_doors = self.shuffle != 'vanilla'
|
||||
|
||||
def get_region(self, regionname):
|
||||
if isinstance(regionname, Region):
|
||||
|
@ -417,6 +419,7 @@ class Entrance(object):
|
|||
self.addresses = None
|
||||
self.spot_type = 'Entrance'
|
||||
self.recursion_count = 0
|
||||
self.vanilla = None
|
||||
|
||||
def access_rule(self, state):
|
||||
return True
|
||||
|
@ -427,10 +430,11 @@ class Entrance(object):
|
|||
|
||||
return False
|
||||
|
||||
def connect(self, region, addresses=None, target=None):
|
||||
def connect(self, region, addresses=None, target=None, vanilla=None):
|
||||
self.connected_region = region
|
||||
self.target = target
|
||||
self.addresses = addresses
|
||||
self.vanilla = vanilla
|
||||
region.entrances.append(self)
|
||||
|
||||
def __str__(self):
|
||||
|
|
|
@ -694,9 +694,14 @@ def connect_entrance(world, entrancename, exitname):
|
|||
entrance.connected_region.entrances.remove(entrance)
|
||||
|
||||
target = exit_ids[exit.name][0] if exit is not None else exit_ids.get(region.name, None)
|
||||
addresses = door_addresses[entrance.name][0] if exit is not None else door_addresses[entrance.name]
|
||||
addresses = door_addresses[entrance.name][0][0] if exit is not None else door_addresses[entrance.name][0]
|
||||
try:
|
||||
vanilla_ref = door_addresses[entrance.name][1]
|
||||
vanilla = exit_ids[vanilla_ref]
|
||||
except IndexError:
|
||||
vanilla = None
|
||||
|
||||
entrance.connect(region, addresses, target)
|
||||
entrance.connect(region, addresses, target, vanilla)
|
||||
return '%s => %s' % (entrance.name, exit.name if exit is not None else region.name)
|
||||
|
||||
|
||||
|
@ -708,7 +713,7 @@ def connect_exit(world, exitname, entrancename):
|
|||
if exit.connected_region is not None:
|
||||
exit.connected_region.entrances.remove(exit)
|
||||
|
||||
exit.connect(entrance.parent_region, door_addresses[entrance.name][1], exit_ids[exit.name][1])
|
||||
exit.connect(entrance.parent_region, door_addresses[entrance.name][0][1], exit_ids[exit.name][1])
|
||||
return '%s <= %s' % (entrance.name, exit.name)
|
||||
|
||||
|
||||
|
@ -722,8 +727,8 @@ def connect_two_way(world, entrancename, exitname):
|
|||
if exit.connected_region is not None:
|
||||
exit.connected_region.entrances.remove(exit)
|
||||
|
||||
entrance.connect(exit.parent_region, door_addresses[entrance.name][0], exit_ids[exit.name][0])
|
||||
exit.connect(entrance.parent_region, door_addresses[entrance.name][1], exit_ids[exit.name][1])
|
||||
entrance.connect(exit.parent_region, door_addresses[entrance.name][0][0], exit_ids[exit.name][0])
|
||||
exit.connect(entrance.parent_region, door_addresses[entrance.name][0][1], exit_ids[exit.name][1])
|
||||
return '%s <=> %s' % (entrance.name, exit.name)
|
||||
|
||||
|
||||
|
@ -1231,10 +1236,10 @@ mandatory_connections = [('Links House', 'Links House'), # unshuffled. For now
|
|||
('South Hyrule Teleporter', 'South Dark World'),
|
||||
('Kakariko Teleporter', 'West Dark World'),
|
||||
('Death Mountain Teleporter', 'Dark Death Mountain (West Bottom)'),
|
||||
('7 Chest Cave Push Block Reverse', '7 Chest Cave Cave Chest Area'),
|
||||
('7 Chest Cave Push Block', '7 Chest Cave Cave Front'),
|
||||
('7 Chest Cave Bomb Jump', '7 Chest Cave Cave'),
|
||||
('7 Chest Cave Drop', '7 Chest Cave Cave Chest Area'),
|
||||
('7 Chest Cave Push Block Reverse', '7 Chest Cave Chest Area'),
|
||||
('7 Chest Cave Push Block', '7 Chest Cave Front'),
|
||||
('7 Chest Cave Bomb Jump', '7 Chest Cave'),
|
||||
('7 Chest Cave Drop', '7 Chest Cave Chest Area'),
|
||||
('Fairy Ascension Rocks', 'Fairy Ascension Plateau'),
|
||||
('Fairy Ascension Mirror Spot', 'Fairy Ascension Plateau'),
|
||||
('Fairy Ascension Drop', 'East Death Mountain (Bottom)'),
|
||||
|
@ -1408,9 +1413,9 @@ default_connections = [('Waterfall of Wishing', 'Waterfall of Wishing'),
|
|||
('Spectacle Rock Cave Exit', 'Death Mountain'),
|
||||
('Spectacle Rock Cave Exit (Top)', 'Death Mountain'),
|
||||
('Spectacle Rock Cave Exit (Peak)', 'Death Mountain'),
|
||||
('7 Chest Cave (Bottom)', '7 Chest Cave Cave Front'),
|
||||
('7 Chest Cave (Middle)', '7 Chest Cave Cave'),
|
||||
('7 Chest Cave (Top)', '7 Chest Cave Cave'),
|
||||
('7 Chest Cave (Bottom)', '7 Chest Cave Front'),
|
||||
('7 Chest Cave (Middle)', '7 Chest Cave'),
|
||||
('7 Chest Cave (Top)', '7 Chest Cave'),
|
||||
('7 Chest Cave Exit (Bottom)', 'East Death Mountain (Bottom)'),
|
||||
('7 Chest Cave Exit (Middle)', 'East Death Mountain (Bottom)'),
|
||||
('7 Chest Cave Exit (Top)', 'East Death Mountain (Top)'),
|
||||
|
@ -1527,145 +1532,145 @@ default_dungeon_connections = [('Desert Palace Entrance (South)', 'Desert Palace
|
|||
|
||||
|
||||
# ToDo somehow merge this with creation of the locations
|
||||
door_addresses = {'Desert Palace Entrance (South)': (0xDBB7B, 0x15B02),
|
||||
'Desert Palace Entrance (West)': (0xDBB7D, 0x15B06),
|
||||
'Desert Palace Entrance (North)': (0xDBB7E, 0x15B08),
|
||||
'Desert Palace Entrance (East)': (0xDBB7C, 0x15B04),
|
||||
'Eastern Palace': (0xDBB7A, 0x15B00),
|
||||
'Tower of Hera': (0xDBBA5, 0x15B48),
|
||||
'Hyrule Castle Entrance (South)': (0xDBB76, 0x15AF4),
|
||||
'Hyrule Castle Entrance (West)': (0xDBB75, 0x15AF2),
|
||||
'Hyrule Castle Entrance (East)': (0xDBB77, 0x15AF6),
|
||||
'Agahnims Tower': (0xDBB96, 0x15B38),
|
||||
'Thieves Town': (0xDBBA6, 0x15B58),
|
||||
'Skull Woods First Section Door': (0xDBB9C, 0x15B44),
|
||||
'Skull Woods Second Section Door (East)': (0xDBB9B, 0x15B42),
|
||||
'Skull Woods Second Section Door (West)': (0xDBB9A, 0x15B40),
|
||||
'Skull Woods Final Section': (0xDBB9D, 0x15B46),
|
||||
'Ice Palace': (0xDBB9F, 0x15B4A),
|
||||
'Misery Mire': (0xDBB99, 0x15B3E),
|
||||
'Palace of Darkness': (0xDBB98, 0x15B3C),
|
||||
'Swamp Palace': (0xDBB97, 0x15B3A),
|
||||
'Turtle Rock': (0xDBBA7, 0x15B56),
|
||||
'Dark Death Mountain Ledge (West)': (0xDBB87, 0x15B1A),
|
||||
'Dark Death Mountain Ledge (East)': (0xDBB8B, 0x15B22),
|
||||
'Turtle Rock Isolated Ledge Entrance': (0xDBB8A, 0x15B20),
|
||||
'Hyrule Castle Secret Entrance Stairs': (0xDBBA4, 0x15B54),
|
||||
'Kakariko Well Cave': (0xDBBAB, 0x15B62),
|
||||
'Bat Cave Cave': (0xDBB83, 0x15B12),
|
||||
'Elder House (East)': (0xDBB80, 0x15B0C),
|
||||
'Elder House (West)': (0xDBB7F, 0x15B0A),
|
||||
'North Fairy Cave': (0xDBBAA, 0x15B60),
|
||||
'Thieves Forest Hideout Stump': (0xDBB9E, 0x15B5A),
|
||||
'Lumberjack Tree Cave': (0xDBB84, 0x15B14),
|
||||
'Two Brothers House (East)': (0xDBB82, 0x15B10),
|
||||
'Two Brothers House (West)': (0xDBB81, 0x15B0E),
|
||||
'Sanctuary': (0xDBB74, 0x15AF0),
|
||||
'Old Man Cave (West)': (0xDBB78, 0x15AFC),
|
||||
'Old Man Cave (East)': (0xDBB79, 0x15AFE),
|
||||
'Old Man House (Bottom)': (0xDBBA2, 0x15B50),
|
||||
'Old Man House (Top)': (0xDBBA3, 0x15B52),
|
||||
'Death Mountain Return Cave (East)': (0xDBBA1, 0x15B4E),
|
||||
'Death Mountain Return Cave (West)': (0xDBBA0, 0x15B4C),
|
||||
'Spectacle Rock Cave Peak': (0xDBB95, 0x15B36),
|
||||
'Spectacle Rock Cave': (0xDBB94, 0x15B34),
|
||||
'Spectacle Rock Cave (Bottom)': (0xDBB93, 0x15B32),
|
||||
'7 Chest Cave (Bottom)': (0xDBB90, 0x15B2C),
|
||||
'7 Chest Cave (Middle)': (0xDBB91, 0x15B2E),
|
||||
'7 Chest Cave (Top)': (0xDBB92, 0x15B30),
|
||||
'Fairy Ascension Cave (Bottom)': (0xDBB8C, 0x15B24),
|
||||
'Fairy Ascension Cave (Top)': (0xDBB8D, 0x15B26),
|
||||
'Spiral Cave': (0xDBB8F, 0x15B2A),
|
||||
'Spiral Cave (Bottom)': (0xDBB8E, 0x15B28),
|
||||
'Bumper Cave (Bottom)': (0xDBB88, 0x15B1C),
|
||||
'Bumper Cave (Top)': (0xDBB89, 0x15B1E),
|
||||
'Dark Death Mountain Ascend (Top)': (0xDBB86, 0x15B18),
|
||||
'Dark Death Mountain Ascend (Bottom)': (0xDBB85, 0x15B16),
|
||||
'Hookshot Cave': (0xDBBAC, 0x15B64),
|
||||
'Hookshot Cave Back Entrance': (0xDBBAD, 0x15B66),
|
||||
'Ganons Tower': (0xDBBA9, 0x15B5E),
|
||||
'Pyramid Entrance': (0xDBBA8, 0x15B5C),
|
||||
'Skull Woods First Section Hole (East)': (0xDB84D, 0xDB84E),
|
||||
'Skull Woods First Section Hole (West)': (0xDB84F, 0xDB850),
|
||||
'Skull Woods First Section Hole (North)': 0xDB84C,
|
||||
'Skull Woods Second Section Hole': (0xDB851, 0xDB852),
|
||||
'Pyramid Hole': (0xDB854, 0xDB855, 0xDB856),
|
||||
'Waterfall of Wishing': 0xDBBCE,
|
||||
'Dam': 0xDBBC0,
|
||||
'Thiefs Hut': 0xDBBD3,
|
||||
'Hyrule Castle Secret Entrance Drop': 0xDB858,
|
||||
'Bonk Fairy (Light)': 0xDBBE9,
|
||||
'Lake Hylia Fairy': 0xDBBD0,
|
||||
'Swamp Fairy': 0xDBBDE,
|
||||
'Desert Fairy': 0xDBBE4,
|
||||
'Kings Grave': 0xDBBCD,
|
||||
'Tavern North': 0xDBBB5, # do not use, buggy
|
||||
'Chicken House': 0xDBBBD,
|
||||
'Aginahs Cave': 0xDBBE3,
|
||||
'Sahasrahlas Hut': 0xDBBB7,
|
||||
'Cave Shop (Lake Hylia)': 0xDBBCA,
|
||||
'Capacity Upgrade': 0xDBBCF,
|
||||
'Kakariko Well Drop': (0xDB85C, 0xDB85D),
|
||||
'Blacksmiths Hut': 0xDBBD6,
|
||||
'Bat Cave Drop': (0xDB859, 0xDB85A),
|
||||
'Sick Kids House': 0xDBBB2,
|
||||
'North Fairy Cave Drop': 0xDB857,
|
||||
'Lost Woods Gamble': 0xDBBAE,
|
||||
'Fortune Teller (Light)': 0xDBBD7,
|
||||
'Snitch Lady (East)': 0xDBBB0,
|
||||
'Snitch Lady (West)': 0xDBBB1,
|
||||
'Bush Covered House': 0xDBBB6,
|
||||
'Tavern (Front)': 0xDBBB4,
|
||||
'Light World Bomb Hut': 0xDBBBC,
|
||||
'Kakariko Shop': 0xDBBB8,
|
||||
'Thieves Forest Hideout Drop': 0xDB853,
|
||||
'Lumberjack Tree Tree': 0xDB85B,
|
||||
'Cave South of Haunted Grove': 0xDBBC3,
|
||||
'Graveyard Cave': 0xDBBC4,
|
||||
'Checkerboard Cave': 0xDBBF0,
|
||||
'Mini Moldorm Cave': 0xDBBEF,
|
||||
'Long Fairy Cave': 0xDBBC7,
|
||||
'Good Bee Cave': 0xDBBDD,
|
||||
'20 Rupee Cave': 0xDBBED,
|
||||
'50 Rupee Cave': 0xDBBEB,
|
||||
'Ice Cave': 0xDBBF2,
|
||||
'Bonk Rock Cave': 0xDBBEC,
|
||||
'Library': 0xDBBBB,
|
||||
'Witch Hut': 0xDBBBE,
|
||||
'Sanctuary Grave': 0xDB85E,
|
||||
'Hookshot Fairy': 0xDBBC2,
|
||||
'Pyramid Fairy': 0xDBBD5,
|
||||
'East Dark World Hint': 0xDBBDB,
|
||||
'Palace of Darkness Hint': 0xDBBDA,
|
||||
'Dark Lake Hylia Fairy': 0xDBBDF,
|
||||
'Dark Lake Hylia Ledge Fairy': 0xDBBF3,
|
||||
'Dark Lake Hylia Ledge Spike Cave': 0xDBBEE,
|
||||
'Dark Lake Hylia Ledge Hint': 0xDBBDC,
|
||||
'Dark Swamp Cave': 0xDBBAF,
|
||||
'Bonk Fairy (Dark)': 0xDBBEA,
|
||||
'Doorless Hut': 0xDBBBA,
|
||||
'C-Shaped House': 0xDBBC6,
|
||||
'Chest Game': 0xDBBB9,
|
||||
'Dark World Hammer Peg Cave': 0xDBBF1,
|
||||
'Red Shield Shop': 0xDBBE7,
|
||||
'Dark Sanctuary Hint': 0xDBBCC,
|
||||
'Fortune Teller (Dark)': 0xDBBD8,
|
||||
'Dark World Shop': 0xDBBD2,
|
||||
'Dark World Lumberjack Shop': 0xDBBC9,
|
||||
'Dark World Potion Shop': 0xDBBE1,
|
||||
'Archery Game': 0xDBBCB,
|
||||
'Dark Desert Cave': 0xDBBD1,
|
||||
'Dark Desert Hint': 0xDBBD4,
|
||||
'Dark Desert Fairy': 0xDBBC8,
|
||||
'Spike Cave': 0xDBBB3,
|
||||
'Cave Shop (Dark Death Mountain)': 0xDBBE0,
|
||||
'Dark Death Mountain Fairy': 0xDBBE2,
|
||||
'Mimic Cave Mirror Spot': 0xDBBC1,
|
||||
'Big Bomb Shop': 0xDBBC5,
|
||||
'Dark Lake Hylia Shop': 0xDBBE6,
|
||||
'Lumberjack House': 0xDBBE8,
|
||||
'Lake Hylia Fortune Teller': 0xDBBE5,
|
||||
'Kakariko Gamble Game': 0xDBBD9}
|
||||
door_addresses = {'Desert Palace Entrance (South)': ((0xDBB7B, 0x15B02),),
|
||||
'Desert Palace Entrance (West)': ((0xDBB7D, 0x15B06),),
|
||||
'Desert Palace Entrance (North)': ((0xDBB7E, 0x15B08),),
|
||||
'Desert Palace Entrance (East)': ((0xDBB7C, 0x15B04),),
|
||||
'Eastern Palace': ((0xDBB7A, 0x15B00),),
|
||||
'Tower of Hera': ((0xDBBA5, 0x15B48),),
|
||||
'Hyrule Castle Entrance (South)': ((0xDBB76, 0x15AF4),),
|
||||
'Hyrule Castle Entrance (West)': ((0xDBB75, 0x15AF2),),
|
||||
'Hyrule Castle Entrance (East)': ((0xDBB77, 0x15AF6),),
|
||||
'Agahnims Tower': ((0xDBB96, 0x15B38),),
|
||||
'Thieves Town': ((0xDBBA6, 0x15B58),),
|
||||
'Skull Woods First Section Door': ((0xDBB9C, 0x15B44),),
|
||||
'Skull Woods Second Section Door (East)': ((0xDBB9B, 0x15B42),),
|
||||
'Skull Woods Second Section Door (West)': ((0xDBB9A, 0x15B40),),
|
||||
'Skull Woods Final Section': ((0xDBB9D, 0x15B46),),
|
||||
'Ice Palace': ((0xDBB9F, 0x15B4A),),
|
||||
'Misery Mire': ((0xDBB99, 0x15B3E),),
|
||||
'Palace of Darkness': ((0xDBB98, 0x15B3C),),
|
||||
'Swamp Palace': ((0xDBB97, 0x15B3A),),
|
||||
'Turtle Rock': ((0xDBBA7, 0x15B56),),
|
||||
'Dark Death Mountain Ledge (West)': ((0xDBB87, 0x15B1A),),
|
||||
'Dark Death Mountain Ledge (East)': ((0xDBB8B, 0x15B22),),
|
||||
'Turtle Rock Isolated Ledge Entrance': ((0xDBB8A, 0x15B20),),
|
||||
'Hyrule Castle Secret Entrance Stairs': ((0xDBBA4, 0x15B54),),
|
||||
'Kakariko Well Cave': ((0xDBBAB, 0x15B62),),
|
||||
'Bat Cave Cave': ((0xDBB83, 0x15B12),),
|
||||
'Elder House (East)': ((0xDBB80, 0x15B0C),),
|
||||
'Elder House (West)': ((0xDBB7F, 0x15B0A),),
|
||||
'North Fairy Cave': ((0xDBBAA, 0x15B60),),
|
||||
'Thieves Forest Hideout Stump': ((0xDBB9E, 0x15B5A),),
|
||||
'Lumberjack Tree Cave': ((0xDBB84, 0x15B14),),
|
||||
'Two Brothers House (East)': ((0xDBB82, 0x15B10),),
|
||||
'Two Brothers House (West)': ((0xDBB81, 0x15B0E),),
|
||||
'Sanctuary': ((0xDBB74, 0x15AF0),),
|
||||
'Old Man Cave (West)': ((0xDBB78, 0x15AFC),),
|
||||
'Old Man Cave (East)': ((0xDBB79, 0x15AFE),),
|
||||
'Old Man House (Bottom)': ((0xDBBA2, 0x15B50),),
|
||||
'Old Man House (Top)': ((0xDBBA3, 0x15B52),),
|
||||
'Death Mountain Return Cave (East)': ((0xDBBA1, 0x15B4E),),
|
||||
'Death Mountain Return Cave (West)': ((0xDBBA0, 0x15B4C),),
|
||||
'Spectacle Rock Cave Peak': ((0xDBB95, 0x15B36),),
|
||||
'Spectacle Rock Cave': ((0xDBB94, 0x15B34),),
|
||||
'Spectacle Rock Cave (Bottom)': ((0xDBB93, 0x15B32),),
|
||||
'7 Chest Cave (Bottom)': ((0xDBB90, 0x15B2C),),
|
||||
'7 Chest Cave (Middle)': ((0xDBB91, 0x15B2E),),
|
||||
'7 Chest Cave (Top)': ((0xDBB92, 0x15B30),),
|
||||
'Fairy Ascension Cave (Bottom)': ((0xDBB8C, 0x15B24),),
|
||||
'Fairy Ascension Cave (Top)': ((0xDBB8D, 0x15B26),),
|
||||
'Spiral Cave': ((0xDBB8F, 0x15B2A),),
|
||||
'Spiral Cave (Bottom)': ((0xDBB8E, 0x15B28),),
|
||||
'Bumper Cave (Bottom)': ((0xDBB88, 0x15B1C),),
|
||||
'Bumper Cave (Top)': ((0xDBB89, 0x15B1E),),
|
||||
'Dark Death Mountain Ascend (Top)': ((0xDBB86, 0x15B18),),
|
||||
'Dark Death Mountain Ascend (Bottom)': ((0xDBB85, 0x15B16),),
|
||||
'Hookshot Cave': ((0xDBBAC, 0x15B64),),
|
||||
'Hookshot Cave Back Entrance': ((0xDBBAD, 0x15B66),),
|
||||
'Ganons Tower': ((0xDBBA9, 0x15B5E),),
|
||||
'Pyramid Entrance': ((0xDBBA8, 0x15B5C),),
|
||||
'Skull Woods First Section Hole (East)': ((0xDB84D, 0xDB84E),),
|
||||
'Skull Woods First Section Hole (West)': ((0xDB84F, 0xDB850),),
|
||||
'Skull Woods First Section Hole (North)': (0xDB84C,),
|
||||
'Skull Woods Second Section Hole': ((0xDB851, 0xDB852),),
|
||||
'Pyramid Hole': ((0xDB854, 0xDB855, 0xDB856),),
|
||||
'Waterfall of Wishing': (0xDBBCE, 'Waterfall of Wishing'),
|
||||
'Dam': (0xDBBC0, 'Dam'),
|
||||
'Thiefs Hut': (0xDBBD3, 'Thiefs Hut'),
|
||||
'Hyrule Castle Secret Entrance Drop': (0xDB858,),
|
||||
'Bonk Fairy (Light)': (0xDBBE9, 'Bonk Fairy'),
|
||||
'Lake Hylia Fairy': (0xDBBD0, 'Healer Fairy'),
|
||||
'Swamp Fairy': (0xDBBDE, 'Healer Fairy'),
|
||||
'Desert Fairy': (0xDBBE4, 'Healer Fairy'),
|
||||
'Kings Grave': (0xDBBCD, 'Kings Grave'),
|
||||
'Tavern North': (0xDBBB5, 'Tavern'), # do not use, buggy
|
||||
'Chicken House': (0xDBBBD, 'Chicken House'),
|
||||
'Aginahs Cave': (0xDBBE3, 'Aginahs Cave'),
|
||||
'Sahasrahlas Hut': (0xDBBB7, 'Sahasrahlas Hut'),
|
||||
'Cave Shop (Lake Hylia)': (0xDBBCA, 'Cave Shop'),
|
||||
'Capacity Upgrade': (0xDBBCF, 'Capacity Upgrade'),
|
||||
'Kakariko Well Drop': ((0xDB85C, 0xDB85D),),
|
||||
'Blacksmiths Hut': (0xDBBD6, 'Blacksmiths Hut'),
|
||||
'Bat Cave Drop': ((0xDB859, 0xDB85A),),
|
||||
'Sick Kids House': (0xDBBB2, 'Sick Kids House'),
|
||||
'North Fairy Cave Drop': (0xDB857,),
|
||||
'Lost Woods Gamble': (0xDBBAE, 'Lost Woods Gamble'),
|
||||
'Fortune Teller (Light)': (0xDBBD7, 'Fortune Teller (Light)'),
|
||||
'Snitch Lady (East)': (0xDBBB0, 'Snitch Lady (East)'),
|
||||
'Snitch Lady (West)': (0xDBBB1, 'Snitch Lady (West)'),
|
||||
'Bush Covered House': (0xDBBB6, 'Bush Covered House'),
|
||||
'Tavern (Front)': (0xDBBB4, 'Tavern (Front)'),
|
||||
'Light World Bomb Hut': (0xDBBBC, 'Light World Bomb Hut'),
|
||||
'Kakariko Shop': (0xDBBB8, 'Kakariko Shop'),
|
||||
'Thieves Forest Hideout Drop': (0xDB853,),
|
||||
'Lumberjack Tree Tree': (0xDB85B,),
|
||||
'Cave South of Haunted Grove': (0xDBBC3, 'Cave South of Haunted Grove'),
|
||||
'Graveyard Cave': (0xDBBC4, 'Graveyard Cave'),
|
||||
'Checkerboard Cave': (0xDBBF0, 'Checkerboard Cave'),
|
||||
'Mini Moldorm Cave': (0xDBBEF, 'Mini Moldorm Cave'),
|
||||
'Long Fairy Cave': (0xDBBC7, 'Long Fairy Cave'),
|
||||
'Good Bee Cave': (0xDBBDD, 'Good Bee Cave'),
|
||||
'20 Rupee Cave': (0xDBBED, '20 Rupee Cave'),
|
||||
'50 Rupee Cave': (0xDBBEB, '50 Rupee Cave'),
|
||||
'Ice Cave': (0xDBBF2, 'Ice Cave'),
|
||||
'Bonk Rock Cave': (0xDBBEC, 'Bonk Rock Cave'),
|
||||
'Library': (0xDBBBB, 'Library'),
|
||||
'Witch Hut': (0xDBBBE, 'Witch Hut'),
|
||||
'Sanctuary Grave': (0xDB85E,),
|
||||
'Hookshot Fairy': (0xDBBC2, 'Hookshot Fairy'),
|
||||
'Pyramid Fairy': (0xDBBD5, 'Pyramid Fairy'),
|
||||
'East Dark World Hint': (0xDBBDB, 'East Dark World Hint'),
|
||||
'Palace of Darkness Hint': (0xDBBDA, 'Palace of Darkness Hint'),
|
||||
'Dark Lake Hylia Fairy': (0xDBBDF, 'Healer Fairy'),
|
||||
'Dark Lake Hylia Ledge Fairy': (0xDBBF3, 'Healer Fairy'),
|
||||
'Dark Lake Hylia Ledge Spike Cave': (0xDBBEE, 'Dark Lake Hylia Ledge Spike Cave'),
|
||||
'Dark Lake Hylia Ledge Hint': (0xDBBDC, 'Dark Lake Hylia Ledge Hint'),
|
||||
'Dark Swamp Cave': (0xDBBAF, 'Dark Swamp Cave'),
|
||||
'Bonk Fairy (Dark)': (0xDBBEA, 'Bonk Fairy'),
|
||||
'Doorless Hut': (0xDBBBA, 'Doorless Hut'),
|
||||
'C-Shaped House': (0xDBBC6, 'C-Shaped House'),
|
||||
'Chest Game': (0xDBBB9, 'Chest Game'),
|
||||
'Dark World Hammer Peg Cave': (0xDBBF1, 'Dark World Hammer Peg Cave'),
|
||||
'Red Shield Shop': (0xDBBE7, 'Red Shield Shop'),
|
||||
'Dark Sanctuary Hint': (0xDBBCC, 'Dark Sanctuary Hint'),
|
||||
'Fortune Teller (Dark)': (0xDBBD8, 'Fortune Teller (Dark)'),
|
||||
'Dark World Shop': (0xDBBD2, 'Dark World Shop'),
|
||||
'Dark World Lumberjack Shop': (0xDBBC9, 'Dark World Shop'),
|
||||
'Dark World Potion Shop': (0xDBBE1, 'Dark World Shop'),
|
||||
'Archery Game': (0xDBBCB, 'Archery Game'),
|
||||
'Dark Desert Cave': (0xDBBD1, 'Dark Desert Cave'),
|
||||
'Dark Desert Hint': (0xDBBD4, 'Dark Desert Hint'),
|
||||
'Dark Desert Fairy': (0xDBBC8, 'Healer Fairy'),
|
||||
'Spike Cave': (0xDBBB3, 'Spike Cave'),
|
||||
'Cave Shop (Dark Death Mountain)': (0xDBBE0, 'Cave Shop'),
|
||||
'Dark Death Mountain Fairy': (0xDBBE2, 'Healer Fairy'),
|
||||
'Mimic Cave Mirror Spot': (0xDBBC1, 'Mimic Cave'),
|
||||
'Big Bomb Shop': (0xDBBC5, 'Big Bomb Shop'),
|
||||
'Dark Lake Hylia Shop': (0xDBBE6, 'Dark World Shop'),
|
||||
'Lumberjack House': (0xDBBE8, 'Lumberjack House'),
|
||||
'Lake Hylia Fortune Teller': (0xDBBE5, 'Fortune Teller (Light)'),
|
||||
'Kakariko Gamble Game': (0xDBBD9, 'Kakariko Gamble Game')}
|
||||
|
||||
exit_ids = {'Desert Palace Exit (South)': (0x09, 0x84),
|
||||
'Desert Palace Exit (West)': (0x0B, 0x83),
|
||||
|
|
|
@ -108,8 +108,8 @@ def create_regions(world):
|
|||
create_region('Spectacle Rock Cave (Peak)', None, ['Spectacle Rock Cave Peak Drop', 'Spectacle Rock Cave Exit (Peak)']),
|
||||
create_region('East Death Mountain (Bottom)', None, ['Broken Bridge (East)', '7 Chest Cave (Bottom)', '7 Chest Cave (Middle)', 'East Death Mountain Teleporter', 'Hookshot Fairy', 'Fairy Ascension Rocks', 'Spiral Cave (Bottom)']),
|
||||
create_region('Hookshot Fairy'),
|
||||
create_region('7 Chest Cave Cave Front', None, ['7 Chest Cave Push Block Reverse', '7 Chest Cave Exit (Bottom)']),
|
||||
create_region('7 Chest Cave Cave Chest Area', ['[cave-009-1F] Death Mountain - right cave [top left chest]',
|
||||
create_region('7 Chest Cave Front', None, ['7 Chest Cave Push Block Reverse', '7 Chest Cave Exit (Bottom)']),
|
||||
create_region('7 Chest Cave Chest Area', ['[cave-009-1F] Death Mountain - right cave [top left chest]',
|
||||
'[cave-009-1F] Death Mountain - right cave [top left middle chest]',
|
||||
'[cave-009-1F] Death Mountain - right cave [top right middle chest]',
|
||||
'[cave-009-1F] Death Mountain - right cave [top right chest]',
|
||||
|
@ -117,7 +117,7 @@ def create_regions(world):
|
|||
'[cave-009-B1] Death Mountain - right cave [left chest]',
|
||||
'[cave-009-B1] Death Mountain - right cave [right chest]'],
|
||||
['7 Chest Cave Push Block', '7 Chest Cave Bomb Jump']),
|
||||
create_region('7 Chest Cave Cave', None, ['7 Chest Cave Exit (Middle)', '7 Chest Cave Exit (Top)', '7 Chest Cave Drop']),
|
||||
create_region('7 Chest Cave', None, ['7 Chest Cave Exit (Middle)', '7 Chest Cave Exit (Top)', '7 Chest Cave Drop']),
|
||||
create_region('East Death Mountain (Top)', None, ['7 Chest Cave (Top)', 'Death Mountain (Top)', 'Spiral Cave Ledge Access', 'East Death Mountain Drop', 'Turtle Rock Teleporter', 'Fairy Ascension Ledge']),
|
||||
create_region('Spiral Cave Ledge', None, ['Spiral Cave', 'Spiral Cave Ledge Drop']),
|
||||
create_region('Spiral Cave (Top)', ['[cave-012-1F] Death Mountain - left cave]'], ['Spiral Cave (top to bottom)', 'Spiral Cave Exit (Top)']),
|
||||
|
|
18
Rom.py
18
Rom.py
|
@ -35,6 +35,9 @@ def patch_rom(world, rom, hashtable, quickswap=False, beep='normal', sprite=None
|
|||
for music_address in music_addresses:
|
||||
write_byte(rom, music_address, music)
|
||||
|
||||
# store old door overlay table
|
||||
door_overlays = bytearray(rom[0x15488:0x15488+0x10A])
|
||||
|
||||
# patch entrances
|
||||
for region in world.regions:
|
||||
for exit in region.exits:
|
||||
|
@ -43,6 +46,12 @@ def patch_rom(world, rom, hashtable, quickswap=False, beep='normal', sprite=None
|
|||
for address in addresses:
|
||||
write_byte(rom, address, exit.target)
|
||||
|
||||
# this does not yet seem to fix our door headaches ...
|
||||
if world.fix_door_frames and exit.vanilla is not None:
|
||||
# patch door overlay table. The value of where this now leads is patched into the location where this entrance would lead in vanilla
|
||||
write_byte(rom, 0x15488 + (2*exit.vanilla), door_overlays[2*exit.target])
|
||||
write_byte(rom, 0x15489 + (2 * exit.vanilla), door_overlays[(2 * exit.target) + 1])
|
||||
|
||||
# patch medallion requirements
|
||||
if world.required_medallions[0] == 'Bombos':
|
||||
write_byte(rom, 0x180022, 0x00) # requirement
|
||||
|
@ -236,12 +245,17 @@ def patch_rom(world, rom, hashtable, quickswap=False, beep='normal', sprite=None
|
|||
|
||||
# disable open door sprites when exiting caves
|
||||
# this does not seem to work completely yet
|
||||
if world.shuffle not in ['vanilla', 'dungeonssimple', 'dungeonsfull']:
|
||||
if world.fix_door_frames:
|
||||
for i in range(0x85):
|
||||
write_byte(rom, 0x15274 + i, 0x00)
|
||||
for i in range(0x86):
|
||||
write_byte(rom, 0x15488 + i, 0x02)
|
||||
# leave the entry marking tavern north a north facing exit
|
||||
for i in range(0x82):
|
||||
write_byte(rom, 0x15510 + i, 0x02)
|
||||
|
||||
# fix trock doors for reverse entrances
|
||||
if world.shuffle != 'vanilla':
|
||||
if world.fix_trock_doors:
|
||||
write_byte(rom, 0xFED31, 0x0E) # preopen bombable exit
|
||||
write_byte(rom, 0xFEE41, 0x0E) # preopen bombable exit
|
||||
write_byte(rom, 0xFE465, 0x1E) # remove small key door on backside of big key door
|
||||
|
|
Loading…
Reference in New Issue