Refactored Locations, added heart beep setting.
This commit is contained in:
parent
bbd52c780d
commit
e4e0304b40
|
@ -350,6 +350,7 @@ class Region(object):
|
|||
self.exits = []
|
||||
self.locations = []
|
||||
self.spot_type = 'Region'
|
||||
self.hint_text = 'Hyrule'
|
||||
|
||||
def can_reach(self, state):
|
||||
for entrance in self.entrances:
|
||||
|
@ -357,14 +358,6 @@ class Region(object):
|
|||
return True
|
||||
return False
|
||||
|
||||
def add_locations(self, *locations):
|
||||
for location in locations:
|
||||
self.locations.append(Location(location, self))
|
||||
|
||||
def add_exits(self, *exits):
|
||||
for exit in exits:
|
||||
self.exits.append(Entrance(exit, self))
|
||||
|
||||
def __str__(self):
|
||||
return str(self.__unicode__())
|
||||
|
||||
|
@ -404,15 +397,14 @@ class Entrance(object):
|
|||
|
||||
class Location(object):
|
||||
|
||||
def __init__(self, name='', parent=None, access=None, item_rule=None):
|
||||
def __init__(self, name='', address=None, crystal=False, hint_text=None, parent=None):
|
||||
self.name = name
|
||||
self.parent_region = parent
|
||||
self.item = None
|
||||
self.crystal = crystal
|
||||
self.address = address
|
||||
self.spot_type = 'Location'
|
||||
if access is not None:
|
||||
self.access_rule = access
|
||||
if item_rule is not None:
|
||||
self.item_rule = item_rule
|
||||
self.hint_text = hint_text if hint_text is not None else 'Hyrule'
|
||||
|
||||
def access_rule(self, state):
|
||||
return True
|
||||
|
|
12
Dungeons.py
12
Dungeons.py
|
@ -67,3 +67,15 @@ def fill_dungeons(world):
|
|||
world.push_item(di_location, dungeon_item, False)
|
||||
|
||||
world.state._clear_cache()
|
||||
|
||||
|
||||
dungeon_music_addresses = {'Armos - Pendant': [0x1559A],
|
||||
'Lanmolas - Pendant': [0x1559B, 0x1559C, 0x1559D, 0x1559E],
|
||||
'Moldorm - Pendant': [0x155C5, 0x1107A, 0x10B8C],
|
||||
'Helmasaur - Crystal': [0x155B8],
|
||||
'Arrghus - Crystal': [0x155B7],
|
||||
'Blind - Crystal': [0x155C6],
|
||||
'Mothula - Crystal': [0x155BA, 0x155BB, 0x155BC, 0x155BD, 0x15608, 0x15609, 0x1560A, 0x1560B],
|
||||
'Kholdstare - Crystal': [0x155BF],
|
||||
'Vitreous - Crystal': [0x155B9],
|
||||
'Trinexx - Crystal': [0x155C7, 0x155A7, 0x155AA, 0x155AB]}
|
||||
|
|
4
Main.py
4
Main.py
|
@ -62,7 +62,7 @@ def main(args, seed=None):
|
|||
logger.info('Patching ROM.')
|
||||
|
||||
rom = bytearray(open(args.rom, 'rb').read())
|
||||
patched_rom = patch_rom(world, rom, args.quickswap)
|
||||
patched_rom = patch_rom(world, rom, args.quickswap, args.heartbeep)
|
||||
|
||||
outfilebase = 'ER_%s_%s_%s_%s' % (world.mode, world.goal, world.shuffle, world.seed)
|
||||
|
||||
|
@ -369,6 +369,8 @@ if __name__ == '__main__':
|
|||
parser.add_argument('--count', help='Use to batch generate multiple seeds with same settings. If --seed is provided, it will be used for the first seed, then used to derive the next seed (i.e. generating 10 seeds with --seed given will produce the same 10 (different) roms each time).', type=int)
|
||||
parser.add_argument('--quickswap', help='Enable quick item swapping with L and R.', action='store_true')
|
||||
parser.add_argument('--nodungeonitems', help='Remove Maps and Compasses from Itempool, replacing them by empty slots.', action='store_true')
|
||||
parser.add_argument('--heartbeep', default='normal', const='normal', nargs='?', choices=['normal', 'half', 'quarter', 'off'],
|
||||
help='Select the rate at which the heart beep sound is played at low health.')
|
||||
args = parser.parse_args()
|
||||
|
||||
if not os.path.isfile(args.rom):
|
||||
|
|
500
Regions.py
500
Regions.py
|
@ -1,10 +1,19 @@
|
|||
from BaseClasses import Region
|
||||
from BaseClasses import Region, Location, Entrance
|
||||
|
||||
|
||||
def create_regions(world):
|
||||
|
||||
world.regions = [
|
||||
LightWorld(),
|
||||
create_region('Light World', ['Mushroom', 'Bottle Vendor', 'Haunted Grove', 'Piece of Heart (Dam)', 'Purple Chest'],
|
||||
["Thiefs Hut", "Hyrule Castle Secret Entrance Drop", "Hyrule Castle Secret Entrance Stairs", 'Zoras River', 'Kings Grave', 'Dam',
|
||||
'Links House', 'Tavern North', 'Chicken House', 'Aginahs Cave', 'Sahasrahlas Hut', 'Kakariko Well Drop', 'Kakariko Well Cave',
|
||||
'Blacksmiths Hut', 'Bat Cave Drop Ledge', 'Bat Cave Cave', 'Sick Kids House', 'Hobo Bridge', 'Thieves Forest Hideout Drop', 'Thieves Forest Hideout Stump',
|
||||
'Lumberjack Tree Tree', 'Lumberjack Tree Cave', 'Lake Hylia Cave', 'Ice Cave',
|
||||
'Bonk Rock Cave', 'Library', 'Witch Hut', 'Two Brothers House (East)', 'Desert Palace Stairs', 'Eastern Palace', 'Master Sword Meadow', 'Hyrule Castle Entrance (South)',
|
||||
'Sanctuary', 'Sanctuary Grave', 'Old Man Cave (West)', 'Flute Spot 1', 'Ice Palace', 'Dark Desert Teleporter', 'East Hyrule Teleporter', 'South Hyrule Teleporter', 'Kakariko Teleporter',
|
||||
'Elder House (East)', 'Elder House (West)', 'North Fairy Cave', 'North Fairy Cave Drop', 'Lost Woods Gamble', 'Snitch Lady (East)', 'Snitch Lady (West)', 'Tavern (Front)',
|
||||
'Bush Covered House', 'Light World Bomb Hut', 'Kakariko Shop', 'Long Fairy Cave', 'Good Bee Cave', '20 Rupee Cave', 'Cave Shop (Lake Hylia)', 'Waterfall of Wishing',
|
||||
'Capacity Upgrade', 'Bonk Fairy (Light)', '50 Rupee Cave', 'Fortune Teller (Light)', 'Lake Hylia Fairy', 'Swamp Fairy', 'Desert Fairy', 'Lumberjack House', 'Lake Hylia Fortune Teller', 'Kakariko Gamble Game']),
|
||||
create_region('Thiefs Hut', ["[cave-022-B1] Thiefs hut [top chest]",
|
||||
"[cave-022-B1] Thiefs hut [top left chest]",
|
||||
"[cave-022-B1] Thiefs hut [top right chest]",
|
||||
|
@ -262,262 +271,237 @@ def create_region(name, locations=None, exits=None):
|
|||
locations = []
|
||||
if exits is None:
|
||||
exits = []
|
||||
ret.add_exits(*exits)
|
||||
ret.add_locations(*locations)
|
||||
|
||||
for exit in exits:
|
||||
ret.exits.append(Entrance(exit, ret))
|
||||
for location in locations:
|
||||
address, crystal, hint_text = location_table[location]
|
||||
ret.locations.append(Location(location, address, crystal, hint_text, ret))
|
||||
return ret
|
||||
|
||||
|
||||
class LightWorld(Region):
|
||||
|
||||
def __init__(self):
|
||||
super(LightWorld, self).__init__('Light World')
|
||||
self.add_exits("Thiefs Hut", "Hyrule Castle Secret Entrance Drop", "Hyrule Castle Secret Entrance Stairs", 'Zoras River', 'Kings Grave', 'Dam',
|
||||
'Links House', 'Tavern North', 'Chicken House', 'Aginahs Cave', 'Sahasrahlas Hut', 'Kakariko Well Drop', 'Kakariko Well Cave',
|
||||
'Blacksmiths Hut', 'Bat Cave Drop Ledge', 'Bat Cave Cave', 'Sick Kids House', 'Hobo Bridge', 'Thieves Forest Hideout Drop', 'Thieves Forest Hideout Stump',
|
||||
'Lumberjack Tree Tree', 'Lumberjack Tree Cave', 'Lake Hylia Cave', 'Ice Cave',
|
||||
'Bonk Rock Cave', 'Library', 'Witch Hut', 'Two Brothers House (East)', 'Desert Palace Stairs', 'Eastern Palace', 'Master Sword Meadow', 'Hyrule Castle Entrance (South)',
|
||||
'Sanctuary', 'Sanctuary Grave', 'Old Man Cave (West)', 'Flute Spot 1', 'Ice Palace', 'Dark Desert Teleporter', 'East Hyrule Teleporter', 'South Hyrule Teleporter', 'Kakariko Teleporter',
|
||||
'Elder House (East)', 'Elder House (West)', 'North Fairy Cave', 'North Fairy Cave Drop', 'Lost Woods Gamble', 'Snitch Lady (East)', 'Snitch Lady (West)', 'Tavern (Front)',
|
||||
'Bush Covered House', 'Light World Bomb Hut', 'Kakariko Shop', 'Long Fairy Cave', 'Good Bee Cave', '20 Rupee Cave', 'Cave Shop (Lake Hylia)', 'Waterfall of Wishing',
|
||||
'Capacity Upgrade', 'Bonk Fairy (Light)', '50 Rupee Cave', 'Fortune Teller (Light)', 'Lake Hylia Fairy', 'Swamp Fairy', 'Desert Fairy', 'Lumberjack House', 'Lake Hylia Fortune Teller', 'Kakariko Gamble Game')
|
||||
self.add_locations('Mushroom', 'Bottle Vendor', 'Haunted Grove', 'Piece of Heart (Dam)', 'Purple Chest')
|
||||
|
||||
|
||||
location_addresses = {'Mushroom': 0x180013,
|
||||
'Bottle Vendor': 0x2EB18,
|
||||
'Haunted Grove': 0x18014A,
|
||||
'Piece of Heart (Dam)': 0x180145,
|
||||
'Purple Chest': 0x33D68,
|
||||
'[cave-022-B1] Thiefs hut [top chest]': 0xEB0F,
|
||||
'[cave-022-B1] Thiefs hut [top left chest]': 0xEB12,
|
||||
'[cave-022-B1] Thiefs hut [top right chest]': 0xEB15,
|
||||
'[cave-022-B1] Thiefs hut [bottom left chest]': 0xEB18,
|
||||
'[cave-022-B1] Thiefs hut [bottom right chest]': 0xEB1B,
|
||||
'Uncle': 0x2DF45,
|
||||
'[cave-034] Hyrule Castle Secret Entrance': 0xE971,
|
||||
'King Zora': 0xEE1C3,
|
||||
'Piece of Heart (Zoras River)': 0x180149,
|
||||
'[cave-018] Graveyard - top right grave': 0xE97A,
|
||||
'[cave-047] Dam': 0xE98C,
|
||||
'[cave-040] Links House': 0xE9BC,
|
||||
'[cave-031] Tavern': 0xE9CE,
|
||||
'[cave-026] Chicken House': 0xE9E9,
|
||||
'[cave-044] Aginahs Cave': 0xE9F2,
|
||||
'[cave-035] Sahasrahlas Hut [left chest]': 0xEA82,
|
||||
'[cave-035] Sahasrahlas Hut [center chest]': 0xEA85,
|
||||
'[cave-035] Sahasrahlas Hut [right chest]': 0xEA88,
|
||||
'Sahasrahla': 0x2F1FC,
|
||||
'[cave-021] Kakariko Well [top chest]': 0xEA8E,
|
||||
'[cave-021] Kakariko Well [left chest row of 3]': 0xEA91,
|
||||
'[cave-021] Kakariko Well [center chest row of 3]': 0xEA94,
|
||||
'[cave-021] Kakariko Well [right chest row of 3]': 0xEA97,
|
||||
'[cave-021] Kakariko Well [bottom chest]': 0xEA9A,
|
||||
'Blacksmiths': 0x18002A,
|
||||
'Magic Bat': 0x180015,
|
||||
'Sick Kid': 0x339CF,
|
||||
'Hobo': 0x33E7D,
|
||||
'Piece of Heart (Thieves Forest Hideout)': 0x180000,
|
||||
'Piece of Heart (Lumberjack Tree)': 0x180001,
|
||||
'Piece of Heart (Cave South of Haunted Grove)': 0x180003,
|
||||
'Piece of Heart (Graveyard Cave)': 0x180004,
|
||||
'Piece of Heart (Desert Cave)': 0x180005,
|
||||
'[cave-050] Lake Hylia Cave [bottom left chest]': 0xEB42,
|
||||
'[cave-050] Lake Hylia Cave [top left chest]': 0xEB45,
|
||||
'[cave-050] Lake Hylia Cave [top right chest]': 0xEB48,
|
||||
'[cave-050] Lake Hylia Cave [bottom right chest]': 0xEB4B,
|
||||
'[cave-050] Lake Hylia Cave [generous guy]': 0x180010,
|
||||
'[cave-051] Ice Cave': 0xEB4E,
|
||||
'[cave-016] Bonk Rock Cave': 0xEB3F,
|
||||
'Library': 0x180012,
|
||||
'Witch': 0x180014,
|
||||
'Piece of Heart (Lake Hylia)': 0x180144,
|
||||
'Piece of Heart (Maze Race)': 0x180142,
|
||||
'Piece of Heart (Desert - west side)': 0x180143,
|
||||
'[dungeon-L2-B1] Desert Palace - Big Chest': 0xE98F,
|
||||
'[dungeon-L2-B1] Desert Palace - Torch': 0x180160,
|
||||
'[dungeon-L2-B1] Desert Palace - Map Room': 0xE9B6,
|
||||
'[dungeon-L2-B1] Desert Palace - Compass Room': 0xE9CB,
|
||||
'[dungeon-L2-B1] Desert Palace - Big Key Room': 0xE9C2,
|
||||
'Lanmolas - Heart Container': 0x180151,
|
||||
'[dungeon-L1-1F] Eastern Palace - Compass Room': 0xE977,
|
||||
'[dungeon-L1-1F] Eastern Palace - Big Chest': 0xE97D,
|
||||
'[dungeon-L1-1F] Eastern Palace - Big Ball Room': 0xE9B3,
|
||||
'[dungeon-L1-1F] Eastern Palace - Big Key Room': 0xE9B9,
|
||||
'[dungeon-L1-1F] Eastern Palace - Map Room': 0xE9F5,
|
||||
'Armos - Heart Container': 0x180150,
|
||||
'Altar': 0x289B0,
|
||||
'[dungeon-C-B1] Hyrule Castle - Boomerang Room': 0xE974,
|
||||
'[dungeon-C-B1] Hyrule Castle - Map Room': 0xEB0C,
|
||||
'[dungeon-C-B1] Hyrule Castle - Next To Zelda': 0xEB09,
|
||||
'[dungeon-C-B1] Escape - First B1 Room': 0xE96E,
|
||||
'[dungeon-C-B1] Escape - Final Basement Room [left chest]': 0xEB5D,
|
||||
'[dungeon-C-B1] Escape - Final Basement Room [middle chest]': 0xEB60,
|
||||
'[dungeon-C-B1] Escape - Final Basement Room [right chest]': 0xEB63,
|
||||
'[dungeon-C-1F] Sanctuary': 0xEA79,
|
||||
'[dungeon-A1-2F] Hyrule Castle Tower - 2 Knife Guys Room': 0xEAB5,
|
||||
'[dungeon-A1-3F] Hyrule Castle Tower - Maze Room': 0xEAB2,
|
||||
'Old Mountain Man': 0xF69FA,
|
||||
'Piece of Heart (Spectacle Rock Cave)': 0x180002,
|
||||
'[cave-009-1F] Death Mountain - right cave [top left chest]': 0xEB2A,
|
||||
'[cave-009-1F] Death Mountain - right cave [top left middle chest]': 0xEB2D,
|
||||
'[cave-009-1F] Death Mountain - right cave [top right middle chest]': 0xEB30,
|
||||
'[cave-009-1F] Death Mountain - right cave [top right chest]': 0xEB33,
|
||||
'[cave-009-1F] Death Mountain - right cave [bottom chest]': 0xEB36,
|
||||
'[cave-009-B1] Death Mountain - right cave [left chest]': 0xEB39,
|
||||
'[cave-009-B1] Death Mountain - right cave [right chest]': 0xEB3C,
|
||||
'[cave-012-1F] Death Mountain - left cave]': 0xE9BF,
|
||||
'Ether Tablet': 0x180016,
|
||||
'Piece of Heart (Spectacle Rock)': 0x180140,
|
||||
'[dungeon-L3-1F] Tower of Hera - Freestanding Key': 0x180162,
|
||||
'[dungeon-L3-1F] Tower of Hera - Entrance': 0xE9AD,
|
||||
'[dungeon-L3-1F] Tower of Hera - Basement': 0xE9E6,
|
||||
'[dungeon-L3-1F] Tower of Hera - 4F [small chest]': 0xE9FB,
|
||||
'[dungeon-L3-1F] Tower of Hera - Big Chest': 0xE9F8,
|
||||
'Moldorm - Heart Container': 0x180152,
|
||||
'Piece of Heart (Pyramid)': 0x180147,
|
||||
'Catfish': 0xEE185,
|
||||
'Flute Boy': 0x330C7,
|
||||
'Piece of Heart (Digging Game)': 0x180148,
|
||||
'Bombos Tablet': 0x180017,
|
||||
'[cave-073] Cave Northeast of Swamp Palace [top chest]': 0xEB1E,
|
||||
'[cave-073] Cave Northeast of Swamp Palace [top middle chest]': 0xEB21,
|
||||
'[cave-073] Cave Northeast of Swamp Palace [bottom middle chest]': 0xEB24,
|
||||
'[cave-073] Cave Northeast of Swamp Palace [bottom chest]': 0xEB27,
|
||||
'[cave-073] Cave Northeast of Swamp Palace [generous guy]': 0x180011,
|
||||
'Piece of Heart (Dark World Blacksmith Pegs)': 0x180006,
|
||||
'Pyramid Fairy [left chest]': 0xE980,
|
||||
'Pyramid Fairy [right chest]': 0xE983,
|
||||
'[cave-063] Doorless Hut': 0xE9EC,
|
||||
'[cave-062] C-Shaped House': 0xE9EF,
|
||||
'Piece of Heart (Treasure Chest Game)': 0xEDA8,
|
||||
'Piece of Heart (Bumper Cave)': 0x180146,
|
||||
'[cave-071] Misery Mire West Area [left chest]': 0xEA73,
|
||||
'[cave-071] Misery Mire West Area [right chest]': 0xEA76,
|
||||
'[cave-057-1F] Dark World Death Mountain Climb [top chest]': 0xEA7C,
|
||||
'[cave-057-1F] Dark World Death Mountain Climb [bottom chest]': 0xEA7F,
|
||||
'[cave-055] Spike Cave': 0xEA8B,
|
||||
'[cave-056] Hookshot Cave [top right chest]': 0xEB51,
|
||||
'[cave-056] Hookshot Cave [top left chest]': 0xEB54,
|
||||
'[cave-056] Hookshot Cave [bottom right chest]': 0xEB5A,
|
||||
'[cave-056] Hookshot Cave [bottom left chest]': 0xEB57,
|
||||
'Piece of Heart (Death Mountain - Floating Island)': 0x180141,
|
||||
'[cave-013] Mimic Cave': 0xE9C5,
|
||||
'[dungeon-D2-1F] Swamp Palace - First Room': 0xEA9D,
|
||||
'[dungeon-D2-1F] Swamp Palace - Map Room': 0xE986,
|
||||
'[dungeon-D2-B1] Swamp Palace - Big Chest': 0xE989,
|
||||
'[dungeon-D2-B1] Swamp Palace - South of Hookshot Room': 0xEAA0,
|
||||
'[dungeon-D2-B1] Swamp Palace - Big Key Chest': 0xEAA6,
|
||||
'[dungeon-D2-B1] Swamp Palace - Compass Chest': 0xEAA3,
|
||||
'[dungeon-D2-B2] Swamp Palace - Flooded Room [left chest]': 0xEAA9,
|
||||
'[dungeon-D2-B2] Swamp Palace - Flooded Room [right chest]': 0xEAAC,
|
||||
'[dungeon-D2-B2] Swamp Palace - Waterfall Room': 0xEAAF,
|
||||
'Arrghus - Heart Container': 0x180154,
|
||||
'[dungeon-D4-B1] Thieves Town - Bottom Left of Huge Room [bottom right chest]': 0xEA04,
|
||||
'[dungeon-D4-B1] Thieves Town - Bottom Left of Huge Room [top left chest]': 0xEA01,
|
||||
'[dungeon-D4-B1] Thieves Town - Bottom Right of Huge Room': 0xEA07,
|
||||
'[dungeon-D4-B1] Thieves Town - Top Left of Huge Room': 0xEA0A,
|
||||
'[dungeon-D4-1F] Thieves Town - Room above Boss': 0xEA0D,
|
||||
'[dungeon-D4-B2] Thieves Town - Big Chest': 0xEA10,
|
||||
'[dungeon-D4-B2] Thieves Town - Chest next to Blind': 0xEA13,
|
||||
'Blind - Heart Container': 0x180156,
|
||||
'[dungeon-D3-B1] Skull Woods - Compass Room': 0xE992,
|
||||
'[dungeon-D3-B1] Skull Woods - East of Big Chest': 0xE99B,
|
||||
'[dungeon-D3-B1] Skull Woods - Big Chest': 0xE998,
|
||||
'[dungeon-D3-B1] Skull Woods - Map Room': 0xE9A1,
|
||||
'[dungeon - D3 - B1] Skull Woods - South of Big Chest': 0xE9C8,
|
||||
'[dungeon-D3-B1] Skull Woods - Big Key Room': 0xE99E,
|
||||
'[dungeon-D3-B1] Skull Woods - Final Section Entrance': 0xE9FE,
|
||||
'Mothula - Heart Container': 0x180155,
|
||||
'[dungeon-D5-B1] Ice Palace - Compass Room': 0xE9D4,
|
||||
'[dungeon-D5-B4] Ice Palace - Above Big Chest': 0xE995,
|
||||
'[dungeon-D5-B5] Ice Palace - Big Chest': 0xE9AA,
|
||||
'[dungeon-D5-B5] Ice Palace - Jellyfish Room': 0xE9E3,
|
||||
'[dungeon-D5-B3] Ice Palace - Spike Room': 0xE9E0,
|
||||
'[dungeon-D5-B1] Ice Palace - Big Key Room': 0xE9A4,
|
||||
'[dungeon-D5-B2] Ice Palace - Map Room': 0xE9DD,
|
||||
'Kholdstare - Heart Container': 0x180157,
|
||||
'[dungeon-D6-B1] Misery Mire - Big Chest': 0xEA67,
|
||||
'[dungeon-D6-B1] Misery Mire - Map Room': 0xEA6A,
|
||||
'[dungeon-D6-B1] Misery Mire - Hub Room': 0xEA5E,
|
||||
'[dungeon-D6-B1] Misery Mire - End of Bridge': 0xEA61,
|
||||
'[dungeon-D6-B1] Misery Mire - Spike Room': 0xE9DA,
|
||||
'[dungeon-D6-B1] Misery Mire - Compass Room': 0xEA64,
|
||||
'[dungeon-D6-B1] Misery Mire - Big Key Room':0xEA6D ,
|
||||
'Vitreous - Heart Container': 0x180158,
|
||||
'[dungeon-D7-1F] Turtle Rock - Compass Room': 0xEA22,
|
||||
'[dungeon-D7-1F] Turtle Rock - Map Room [left chest]': 0xEA1C,
|
||||
'[dungeon-D7-1F] Turtle Rock - Map Room [right chest]': 0xEA1F,
|
||||
'[dungeon-D7-1F] Turtle Rock - Chain Chomp Room': 0xEA16,
|
||||
'[dungeon-D7-B1] Turtle Rock - Big Key Room': 0xEA25,
|
||||
'[dungeon-D7-B1] Turtle Rock - Big Chest': 0xEA19,
|
||||
'[dungeon-D7-B1] Turtle Rock - Roller Switch Room': 0xEA34,
|
||||
'[dungeon-D7-B2] Turtle Rock - Eye Bridge Room [bottom left chest]': 0xEA31,
|
||||
'[dungeon-D7-B2] Turtle Rock - Eye Bridge Room [bottom right chest]': 0xEA2E,
|
||||
'[dungeon-D7-B2] Turtle Rock - Eye Bridge Room [top left chest]': 0xEA2B,
|
||||
'[dungeon-D7-B2] Turtle Rock - Eye Bridge Room [top right chest]': 0xEA28,
|
||||
'Trinexx - Heart Container': 0x180159,
|
||||
'[dungeon-D1-B1] Dark Palace - Shooter Room': 0xEA5B,
|
||||
'[dungeon-D1-1F] Dark Palace - Jump Room [left chest]': 0xEA3A,
|
||||
'[dungeon-D1-B1] Dark Palace - Turtle Stalfos Room': 0xEA49,
|
||||
'[dungeon-D1-1F] Dark Palace - Big Key Room': 0xEA37,
|
||||
'[dungeon-D1-1F] Dark Palace - Jump Room [right chest]': 0xEA3D,
|
||||
'[dungeon-D1-1F] Dark Palace - Statue Push Room': 0xEA52,
|
||||
'[dungeon-D1-1F] Dark Palace - Compass Room': 0xEA43,
|
||||
'[dungeon-D1-B1] Dark Palace - Dark Room [left chest]': 0xEA4C,
|
||||
'[dungeon-D1-B1] Dark Palace - Dark Room [right chest]': 0xEA4F,
|
||||
'[dungeon-D1-1F] Dark Palace - Maze Room [top chest]': 0xEA55,
|
||||
'[dungeon-D1-1F] Dark Palace - Maze Room [bottom chest]': 0xEA58,
|
||||
'[dungeon-D1-1F] Dark Palace - Big Chest': 0xEA40,
|
||||
'[dungeon-D1-1F] Dark Palace - Spike Statue Room': 0xEA46,
|
||||
'Helmasaur - Heart Container': 0x180153,
|
||||
'[dungeon-A2-1F] Ganons Tower - Torch': 0x180161,
|
||||
'[dungeon-A2-1F] Ganons Tower - Right Staircase [left chest]': 0xEAD9,
|
||||
'[dungeon-A2-1F] Ganons Tower - Right Staircase [right chest]': 0xEADC,
|
||||
'[dungeon-A2-1F] Ganons Tower - Tile Room': 0xEAE2,
|
||||
'[dungeon-A2-1F] Ganons Tower - Compass Room [top left chest]': 0xEAE5,
|
||||
'[dungeon-A2-1F] Ganons Tower - Compass Room [top right chest]': 0xEAE8,
|
||||
'[dungeon-A2-1F] Ganons Tower - Compass Room [bottom left chest]': 0xEAEB,
|
||||
'[dungeon-A2-1F] Ganons Tower - Compass Room [bottom right chest]': 0xEAEE,
|
||||
'[dungeon-A2-1F] Ganons Tower - North of Hookshot Room [top left chest]': 0xEAB8,
|
||||
'[dungeon-A2-1F] Ganons Tower - North of Hookshot Room [top right chest]': 0xEABB,
|
||||
'[dungeon-A2-1F] Ganons Tower - North of Hookshot Room [bottom left chest]': 0xEABE,
|
||||
'[dungeon-A2-1F] Ganons Tower - North of Hookshot Room [bottom right chest]': 0xEAC1,
|
||||
'[dungeon-A2-1F] Ganons Tower - Map Room': 0xEAD3,
|
||||
'[dungeon-A2-1F] Ganons Tower - Firesnake Room': 0xEAD0,
|
||||
'[dungeon-A2-1F] Ganons Tower - Teleport Room [top left chest]': 0xEAC4,
|
||||
'[dungeon-A2-1F] Ganons Tower - Teleport Room [top right chest]': 0xEAC7,
|
||||
'[dungeon-A2-1F] Ganons Tower - Teleport Room [bottom left chest]': 0xEACA,
|
||||
'[dungeon-A2-1F] Ganons Tower - Teleport Room [bottom right chest]': 0xEACD,
|
||||
'[dungeon-A2-1F] Ganons Tower - above Armos': 0xEADF,
|
||||
'[dungeon-A2-1F] Ganons Tower - Big Chest': 0xEAD6,
|
||||
'[dungeon-A2-B1] Ganons Tower - Armos Room [left chest]': 0xEAF4,
|
||||
'[dungeon-A2-B1] Ganons Tower - Armos Room [right chest]': 0xEAF7,
|
||||
'[dungeon-A2-B1] Ganons Tower - Armos Room [bottom chest]': 0xEAF1,
|
||||
'[dungeon-A2-6F] Ganons Tower - Mini Helmasaur Room [left chest]': 0xEAFD,
|
||||
'[dungeon-A2-6F] Ganons Tower - Mini Helmasaur Room [right chest]': 0xEB00,
|
||||
'[dungeon-A2-6F] Ganons Tower - Room before Moldorm': 0xEB03,
|
||||
'[dungeon-A2-6F] Ganons Tower - Moldorm Room': 0xEB06}
|
||||
|
||||
|
||||
crystal_locations = {'Armos - Pendant': [0x1209D, 0x53EF8, 0x53EF9, 0x180052, 0x18007C, 0xC6FE],
|
||||
'Lanmolas - Pendant': [0x1209E, 0x53F1C, 0x53F1D, 0x180053, 0x180078, 0xC6FF],
|
||||
'Moldorm - Pendant': [0x120A5, 0x53F0A, 0x53F0B, 0x18005A, 0x18007A, 0xC706],
|
||||
'Helmasaur - Crystal': [0x120A1, 0x53F00, 0x53F01, 0x180056, 0x18007D, 0xC702],
|
||||
'Arrghus - Crystal': [0x120A0, 0x53F6C, 0x53F6D, 0x180055, 0x180071, 0xC701],
|
||||
'Blind - Crystal': [0x120A6, 0x53F36, 0x53F37, 0x18005B, 0x180077, 0xC707],
|
||||
'Mothula - Crystal': [0x120A3, 0x53F12, 0x53F13, 0x180058, 0x18007B, 0xC704],
|
||||
'Kholdstare - Crystal': [0x120A4, 0x53F5A, 0x53F5B, 0x180059, 0x180073, 0xC705],
|
||||
'Vitreous - Crystal': [0x120A2, 0x53F48, 0x53F49, 0x180057, 0x180075, 0xC703],
|
||||
'Trinexx - Crystal': [0x120A7, 0x53F24, 0x53F25, 0x18005C, 0x180079, 0xC708]}
|
||||
|
||||
|
||||
dungeon_music_addresses = {'Armos - Pendant': [0x1559A],
|
||||
'Lanmolas - Pendant': [0x1559B, 0x1559C, 0x1559D, 0x1559E],
|
||||
'Moldorm - Pendant': [0x155C5, 0x1107A, 0x10B8C],
|
||||
'Helmasaur - Crystal': [0x155B8],
|
||||
'Arrghus - Crystal': [0x155B7],
|
||||
'Blind - Crystal': [0x155C6],
|
||||
'Mothula - Crystal': [0x155BA, 0x155BB, 0x155BC, 0x155BD, 0x15608, 0x15609, 0x1560A, 0x1560B],
|
||||
'Kholdstare - Crystal': [0x155BF],
|
||||
'Vitreous - Crystal': [0x155B9],
|
||||
'Trinexx - Crystal': [0x155C7, 0x155A7, 0x155AA, 0x155AB]}
|
||||
location_table = {'Mushroom': (0x180013, False, 'Light World'),
|
||||
'Bottle Vendor': (0x2EB18, False, 'Light World'),
|
||||
'Haunted Grove': (0x18014A, False, 'Light World'),
|
||||
'Piece of Heart (Dam)': (0x180145, False, 'Light World'),
|
||||
'Purple Chest': (0x33D68, False, 'Light World'),
|
||||
'[cave-022-B1] Thiefs hut [top chest]': (0xEB0F, False, None),
|
||||
'[cave-022-B1] Thiefs hut [top left chest]': (0xEB12, False, None),
|
||||
'[cave-022-B1] Thiefs hut [top right chest]': (0xEB15, False, None),
|
||||
'[cave-022-B1] Thiefs hut [bottom left chest]': (0xEB18, False, None),
|
||||
'[cave-022-B1] Thiefs hut [bottom right chest]': (0xEB1B, False, None),
|
||||
'Uncle': (0x2DF45, False, None),
|
||||
'[cave-034] Hyrule Castle Secret Entrance': (0xE971, False, None),
|
||||
'King Zora': (0xEE1C3, False, 'Light World'),
|
||||
'Piece of Heart (Zoras River)': (0x180149, False, 'Light World'),
|
||||
'[cave-018] Graveyard - top right grave': (0xE97A, False, None),
|
||||
'[cave-047] Dam': (0xE98C, False, None),
|
||||
'[cave-040] Links House': (0xE9BC, False, 'Light World'),
|
||||
'[cave-031] Tavern': (0xE9CE, False, None),
|
||||
'[cave-026] Chicken House': (0xE9E9, False, None),
|
||||
'[cave-044] Aginahs Cave': (0xE9F2, False, None),
|
||||
'[cave-035] Sahasrahlas Hut [left chest]': (0xEA82, False, None),
|
||||
'[cave-035] Sahasrahlas Hut [center chest]': (0xEA85, False, None),
|
||||
'[cave-035] Sahasrahlas Hut [right chest]': (0xEA88, False, None),
|
||||
'Sahasrahla': (0x2F1FC, False, None),
|
||||
'[cave-021] Kakariko Well [top chest]': (0xEA8E, False, None),
|
||||
'[cave-021] Kakariko Well [left chest row of 3]': (0xEA91, False, None),
|
||||
'[cave-021] Kakariko Well [center chest row of 3]': (0xEA94, False, None),
|
||||
'[cave-021] Kakariko Well [right chest row of 3]': (0xEA97, False, None),
|
||||
'[cave-021] Kakariko Well [bottom chest]': (0xEA9A, False, None),
|
||||
'Blacksmiths': (0x18002A, False, None),
|
||||
'Magic Bat': (0x180015, False, None),
|
||||
'Sick Kid': (0x339CF, False, None),
|
||||
'Hobo': (0x33E7D, False, 'Light World'),
|
||||
'Piece of Heart (Thieves Forest Hideout)': (0x180000, False, None),
|
||||
'Piece of Heart (Lumberjack Tree)': (0x180001, False, None),
|
||||
'Piece of Heart (Cave South of Haunted Grove)': (0x180003, False, None),
|
||||
'Piece of Heart (Graveyard Cave)': (0x180004, False, None),
|
||||
'Piece of Heart (Desert Cave)': (0x180005, False, None),
|
||||
'[cave-050] Lake Hylia Cave [bottom left chest]': (0xEB42, False, None),
|
||||
'[cave-050] Lake Hylia Cave [top left chest]': (0xEB45, False, None),
|
||||
'[cave-050] Lake Hylia Cave [top right chest]': (0xEB48, False, None),
|
||||
'[cave-050] Lake Hylia Cave [bottom right chest]': (0xEB4B, False, None),
|
||||
'[cave-050] Lake Hylia Cave [generous guy]': (0x180010, False, None),
|
||||
'[cave-051] Ice Cave': (0xEB4E, False, None),
|
||||
'[cave-016] Bonk Rock Cave': (0xEB3F, False, None),
|
||||
'Library': (0x180012, False, None),
|
||||
'Witch': (0x180014, False, None),
|
||||
'Piece of Heart (Lake Hylia)': (0x180144, False, 'Light World'),
|
||||
'Piece of Heart (Maze Race)': (0x180142, False, 'Light World'),
|
||||
'Piece of Heart (Desert - west side)': (0x180143, False, 'Light World'),
|
||||
'[dungeon-L2-B1] Desert Palace - Big Chest': (0xE98F, False, 'Desert Palace'),
|
||||
'[dungeon-L2-B1] Desert Palace - Torch': (0x180160, False, 'Desert Palace'),
|
||||
'[dungeon-L2-B1] Desert Palace - Map Room': (0xE9B6, False, 'Desert Palace'),
|
||||
'[dungeon-L2-B1] Desert Palace - Compass Room': (0xE9CB, False, 'Desert Palace'),
|
||||
'[dungeon-L2-B1] Desert Palace - Big Key Room': (0xE9C2, False, 'Desert Palace'),
|
||||
'Lanmolas - Heart Container': (0x180151, False, 'Desert Palace'),
|
||||
'[dungeon-L1-1F] Eastern Palace - Compass Room': (0xE977, False, 'Eastern Palace'),
|
||||
'[dungeon-L1-1F] Eastern Palace - Big Chest': (0xE97D, False, 'Eastern Palace'),
|
||||
'[dungeon-L1-1F] Eastern Palace - Big Ball Room': (0xE9B3, False, 'Eastern Palace'),
|
||||
'[dungeon-L1-1F] Eastern Palace - Big Key Room': (0xE9B9, False, 'Eastern Palace'),
|
||||
'[dungeon-L1-1F] Eastern Palace - Map Room': (0xE9F5, False, 'Eastern Palace'),
|
||||
'Armos - Heart Container': (0x180150, False, 'Eastern Palace'),
|
||||
'Altar': (0x289B0, False, 'Light World'),
|
||||
'[dungeon-C-B1] Hyrule Castle - Boomerang Room': (0xE974, False, 'Hyrule Castle'),
|
||||
'[dungeon-C-B1] Hyrule Castle - Map Room': (0xEB0C, False, 'Hyrule Castle'),
|
||||
'[dungeon-C-B1] Hyrule Castle - Next To Zelda': (0xEB09, False, 'Hyrule Castle'),
|
||||
'[dungeon-C-B1] Escape - First B1 Room': (0xE96E, False, 'Hyrule Castle'),
|
||||
'[dungeon-C-B1] Escape - Final Basement Room [left chest]': (0xEB5D, False, 'Hyrule Castle'),
|
||||
'[dungeon-C-B1] Escape - Final Basement Room [middle chest]': (0xEB60, False, 'Hyrule Castle'),
|
||||
'[dungeon-C-B1] Escape - Final Basement Room [right chest]': (0xEB63, False, 'Hyrule Castle'),
|
||||
'[dungeon-C-1F] Sanctuary': (0xEA79, False, 'Hyrule Castle'),
|
||||
'[dungeon-A1-2F] Hyrule Castle Tower - 2 Knife Guys Room': (0xEAB5, False, 'Hyrule Castle'),
|
||||
'[dungeon-A1-3F] Hyrule Castle Tower - Maze Room': (0xEAB2, False, 'Hyrule Castle'),
|
||||
'Old Mountain Man': (0xF69FA, False, 'Light World'),
|
||||
'Piece of Heart (Spectacle Rock Cave)': (0x180002, False, None),
|
||||
'[cave-009-1F] Death Mountain - right cave [top left chest]': (0xEB2A, False, None),
|
||||
'[cave-009-1F] Death Mountain - right cave [top left middle chest]': (0xEB2D, False, None),
|
||||
'[cave-009-1F] Death Mountain - right cave [top right middle chest]': (0xEB30, False, None),
|
||||
'[cave-009-1F] Death Mountain - right cave [top right chest]': (0xEB33, False, None),
|
||||
'[cave-009-1F] Death Mountain - right cave [bottom chest]': (0xEB36, False, None),
|
||||
'[cave-009-B1] Death Mountain - right cave [left chest]': (0xEB39, False, None),
|
||||
'[cave-009-B1] Death Mountain - right cave [right chest]': (0xEB3C, False, None),
|
||||
'[cave-012-1F] Death Mountain - left cave]': (0xE9BF, False, None),
|
||||
'Ether Tablet': (0x180016, False, 'Light World'),
|
||||
'Piece of Heart (Spectacle Rock)': (0x180140, False, 'Light World'),
|
||||
'[dungeon-L3-1F] Tower of Hera - Freestanding Key': (0x180162, False, 'Tower of Hera'),
|
||||
'[dungeon-L3-1F] Tower of Hera - Entrance': (0xE9AD, False, 'Tower of Hera'),
|
||||
'[dungeon-L3-1F] Tower of Hera - Basement': (0xE9E6, False, 'Tower of Hera'),
|
||||
'[dungeon-L3-1F] Tower of Hera - 4F [small chest]': (0xE9FB, False, 'Tower of Hera'),
|
||||
'[dungeon-L3-1F] Tower of Hera - Big Chest': (0xE9F8, False, 'Tower of Hera'),
|
||||
'Moldorm - Heart Container': (0x180152, False, 'Tower of Hera'),
|
||||
'Piece of Heart (Pyramid)': (0x180147, False, 'Dark World'),
|
||||
'Catfish': (0xEE185, False, 'Dark World'),
|
||||
'Flute Boy': (0x330C7, False, 'Dark World'),
|
||||
'Piece of Heart (Digging Game)': (0x180148, False, 'Dark World'),
|
||||
'Bombos Tablet': (0x180017, False, 'Light World'),
|
||||
'[cave-073] Cave Northeast of Swamp Palace [top chest]': (0xEB1E, False, None),
|
||||
'[cave-073] Cave Northeast of Swamp Palace [top middle chest]': (0xEB21, False, None),
|
||||
'[cave-073] Cave Northeast of Swamp Palace [bottom middle chest]': (0xEB24, False, None),
|
||||
'[cave-073] Cave Northeast of Swamp Palace [bottom chest]': (0xEB27, False, None),
|
||||
'[cave-073] Cave Northeast of Swamp Palace [generous guy]': (0x180011, False, None),
|
||||
'Piece of Heart (Dark World Blacksmith Pegs)': (0x180006, False, None),
|
||||
'Pyramid Fairy [left chest]': (0xE980, False, None),
|
||||
'Pyramid Fairy [right chest]': (0xE983, False, None),
|
||||
'[cave-063] Doorless Hut': (0xE9EC, False, None),
|
||||
'[cave-062] C-Shaped House': (0xE9EF, False, None),
|
||||
'Piece of Heart (Treasure Chest Game)': (0xEDA8, False, None),
|
||||
'Piece of Heart (Bumper Cave)': (0x180146, False, 'Dark World'),
|
||||
'[cave-071] Misery Mire West Area [left chest]': (0xEA73, False, None),
|
||||
'[cave-071] Misery Mire West Area [right chest]': (0xEA76, False, None),
|
||||
'[cave-057-1F] Dark World Death Mountain Climb [top chest]': (0xEA7C, False, None),
|
||||
'[cave-057-1F] Dark World Death Mountain Climb [bottom chest]': (0xEA7F, False, None),
|
||||
'[cave-055] Spike Cave': (0xEA8B, False, None),
|
||||
'[cave-056] Hookshot Cave [top right chest]': (0xEB51, False, None),
|
||||
'[cave-056] Hookshot Cave [top left chest]': (0xEB54, False, None),
|
||||
'[cave-056] Hookshot Cave [bottom right chest]': (0xEB5A, False, None),
|
||||
'[cave-056] Hookshot Cave [bottom left chest]': (0xEB57, False, None),
|
||||
'Piece of Heart (Death Mountain - Floating Island)': (0x180141, False, 'Light World'),
|
||||
'[cave-013] Mimic Cave': (0xE9C5, False, None),
|
||||
'[dungeon-D2-1F] Swamp Palace - First Room': (0xEA9D, False, 'Swamp Palace'),
|
||||
'[dungeon-D2-1F] Swamp Palace - Map Room': (0xE986, False, 'Swamp Palace'),
|
||||
'[dungeon-D2-B1] Swamp Palace - Big Chest': (0xE989, False, 'Swamp Palace'),
|
||||
'[dungeon-D2-B1] Swamp Palace - South of Hookshot Room': (0xEAA0, False, 'Swamp Palace'),
|
||||
'[dungeon-D2-B1] Swamp Palace - Big Key Chest': (0xEAA6, False, 'Swamp Palace'),
|
||||
'[dungeon-D2-B1] Swamp Palace - Compass Chest': (0xEAA3, False, 'Swamp Palace'),
|
||||
'[dungeon-D2-B2] Swamp Palace - Flooded Room [left chest]': (0xEAA9, False, 'Swamp Palace'),
|
||||
'[dungeon-D2-B2] Swamp Palace - Flooded Room [right chest]': (0xEAAC, False, 'Swamp Palace'),
|
||||
'[dungeon-D2-B2] Swamp Palace - Waterfall Room': (0xEAAF, False, 'Swamp Palace'),
|
||||
'Arrghus - Heart Container': (0x180154, False, 'Swamp Palace'),
|
||||
'[dungeon-D4-B1] Thieves Town - Bottom Left of Huge Room [bottom right chest]': (0xEA04, False, 'Thieves\' Town'),
|
||||
'[dungeon-D4-B1] Thieves Town - Bottom Left of Huge Room [top left chest]': (0xEA01, False, 'Thieves\' Town'),
|
||||
'[dungeon-D4-B1] Thieves Town - Bottom Right of Huge Room': (0xEA07, False, 'Thieves\' Town'),
|
||||
'[dungeon-D4-B1] Thieves Town - Top Left of Huge Room': (0xEA0A, False, 'Thieves\' Town'),
|
||||
'[dungeon-D4-1F] Thieves Town - Room above Boss': (0xEA0D, False, 'Thieves\' Town'),
|
||||
'[dungeon-D4-B2] Thieves Town - Big Chest': (0xEA10, False, 'Thieves\' Town'),
|
||||
'[dungeon-D4-B2] Thieves Town - Chest next to Blind': (0xEA13, False, 'Thieves\' Town'),
|
||||
'Blind - Heart Container': (0x180156, False, 'Thieves\' Town'),
|
||||
'[dungeon-D3-B1] Skull Woods - Compass Room': (0xE992, False, 'Skull Woods'),
|
||||
'[dungeon-D3-B1] Skull Woods - East of Big Chest': (0xE99B, False, 'Skull Woods'),
|
||||
'[dungeon-D3-B1] Skull Woods - Big Chest': (0xE998, False, 'Skull Woods'),
|
||||
'[dungeon-D3-B1] Skull Woods - Map Room': (0xE9A1, False, 'Skull Woods'),
|
||||
'[dungeon - D3 - B1] Skull Woods - South of Big Chest': (0xE9C8, False, 'Skull Woods'),
|
||||
'[dungeon-D3-B1] Skull Woods - Big Key Room': (0xE99E, False, 'Skull Woods'),
|
||||
'[dungeon-D3-B1] Skull Woods - Final Section Entrance': (0xE9FE, False, 'Skull Woods'),
|
||||
'Mothula - Heart Container': (0x180155, False, 'Skull Woods'),
|
||||
'[dungeon-D5-B1] Ice Palace - Compass Room': (0xE9D4, False, 'Ice Palace'),
|
||||
'[dungeon-D5-B4] Ice Palace - Above Big Chest': (0xE995, False, 'Ice Palace'),
|
||||
'[dungeon-D5-B5] Ice Palace - Big Chest': (0xE9AA, False, 'Ice Palace'),
|
||||
'[dungeon-D5-B5] Ice Palace - Jellyfish Room': (0xE9E3, False, 'Ice Palace'),
|
||||
'[dungeon-D5-B3] Ice Palace - Spike Room': (0xE9E0, False, 'Ice Palace'),
|
||||
'[dungeon-D5-B1] Ice Palace - Big Key Room': (0xE9A4, False, 'Ice Palace'),
|
||||
'[dungeon-D5-B2] Ice Palace - Map Room': (0xE9DD, False, 'Ice Palace'),
|
||||
'Kholdstare - Heart Container': (0x180157, False, 'Ice Palace'),
|
||||
'[dungeon-D6-B1] Misery Mire - Big Chest': (0xEA67, False, 'Misery Mire'),
|
||||
'[dungeon-D6-B1] Misery Mire - Map Room': (0xEA6A, False, 'Misery Mire'),
|
||||
'[dungeon-D6-B1] Misery Mire - Hub Room': (0xEA5E, False, 'Misery Mire'),
|
||||
'[dungeon-D6-B1] Misery Mire - End of Bridge': (0xEA61, False, 'Misery Mire'),
|
||||
'[dungeon-D6-B1] Misery Mire - Spike Room': (0xE9DA, False, 'Misery Mire'),
|
||||
'[dungeon-D6-B1] Misery Mire - Compass Room': (0xEA64, False, 'Misery Mire'),
|
||||
'[dungeon-D6-B1] Misery Mire - Big Key Room': (0xEA6D, False, 'Misery Mire'),
|
||||
'Vitreous - Heart Container': (0x180158, False, 'Misery Mire'),
|
||||
'[dungeon-D7-1F] Turtle Rock - Compass Room': (0xEA22, False, 'Turtle Rock'),
|
||||
'[dungeon-D7-1F] Turtle Rock - Map Room [left chest]': (0xEA1C, False, 'Turtle Rock'),
|
||||
'[dungeon-D7-1F] Turtle Rock - Map Room [right chest]': (0xEA1F, False, 'Turtle Rock'),
|
||||
'[dungeon-D7-1F] Turtle Rock - Chain Chomp Room': (0xEA16, False, 'Turtle Rock'),
|
||||
'[dungeon-D7-B1] Turtle Rock - Big Key Room': (0xEA25, False, 'Turtle Rock'),
|
||||
'[dungeon-D7-B1] Turtle Rock - Big Chest': (0xEA19, False, 'Turtle Rock'),
|
||||
'[dungeon-D7-B1] Turtle Rock - Roller Switch Room': (0xEA34, False, 'Turtle Rock'),
|
||||
'[dungeon-D7-B2] Turtle Rock - Eye Bridge Room [bottom left chest]': (0xEA31, False, 'Turtle Rock'),
|
||||
'[dungeon-D7-B2] Turtle Rock - Eye Bridge Room [bottom right chest]': (0xEA2E, False, 'Turtle Rock'),
|
||||
'[dungeon-D7-B2] Turtle Rock - Eye Bridge Room [top left chest]': (0xEA2B, False, 'Turtle Rock'),
|
||||
'[dungeon-D7-B2] Turtle Rock - Eye Bridge Room [top right chest]': (0xEA28, False, 'Turtle Rock'),
|
||||
'Trinexx - Heart Container': (0x180159, False, 'Turtle Rock'),
|
||||
'[dungeon-D1-B1] Dark Palace - Shooter Room': (0xEA5B, False, 'Palace of Darkness'),
|
||||
'[dungeon-D1-1F] Dark Palace - Jump Room [left chest]': (0xEA3A, False, 'Palace of Darkness'),
|
||||
'[dungeon-D1-B1] Dark Palace - Turtle Stalfos Room': (0xEA49, False, 'Palace of Darkness'),
|
||||
'[dungeon-D1-1F] Dark Palace - Big Key Room': (0xEA37, False, 'Palace of Darkness'),
|
||||
'[dungeon-D1-1F] Dark Palace - Jump Room [right chest]': (0xEA3D, False, 'Palace of Darkness'),
|
||||
'[dungeon-D1-1F] Dark Palace - Statue Push Room': (0xEA52, False, 'Palace of Darkness'),
|
||||
'[dungeon-D1-1F] Dark Palace - Compass Room': (0xEA43, False, 'Palace of Darkness'),
|
||||
'[dungeon-D1-B1] Dark Palace - Dark Room [left chest]': (0xEA4C, False, 'Palace of Darkness'),
|
||||
'[dungeon-D1-B1] Dark Palace - Dark Room [right chest]': (0xEA4F, False, 'Palace of Darkness'),
|
||||
'[dungeon-D1-1F] Dark Palace - Maze Room [top chest]': (0xEA55, False, 'Palace of Darkness'),
|
||||
'[dungeon-D1-1F] Dark Palace - Maze Room [bottom chest]': (0xEA58, False, 'Palace of Darkness'),
|
||||
'[dungeon-D1-1F] Dark Palace - Big Chest': (0xEA40, False, 'Palace of Darkness'),
|
||||
'[dungeon-D1-1F] Dark Palace - Spike Statue Room': (0xEA46, False, 'Palace of Darkness'),
|
||||
'Helmasaur - Heart Container': (0x180153, False, 'Palace of Darkness'),
|
||||
'[dungeon-A2-1F] Ganons Tower - Torch': (0x180161, False, 'My Tower'),
|
||||
'[dungeon-A2-1F] Ganons Tower - Right Staircase [left chest]': (0xEAD9, False, 'My Tower'),
|
||||
'[dungeon-A2-1F] Ganons Tower - Right Staircase [right chest]': (0xEADC, False, 'My Tower'),
|
||||
'[dungeon-A2-1F] Ganons Tower - Tile Room': (0xEAE2, False, 'My Tower'),
|
||||
'[dungeon-A2-1F] Ganons Tower - Compass Room [top left chest]': (0xEAE5, False, 'My Tower'),
|
||||
'[dungeon-A2-1F] Ganons Tower - Compass Room [top right chest]': (0xEAE8, False, 'My Tower'),
|
||||
'[dungeon-A2-1F] Ganons Tower - Compass Room [bottom left chest]': (0xEAEB, False, 'My Tower'),
|
||||
'[dungeon-A2-1F] Ganons Tower - Compass Room [bottom right chest]': (0xEAEE, False, 'My Tower'),
|
||||
'[dungeon-A2-1F] Ganons Tower - North of Hookshot Room [top left chest]': (0xEAB8, False, 'My Tower'),
|
||||
'[dungeon-A2-1F] Ganons Tower - North of Hookshot Room [top right chest]': (0xEABB, False, 'My Tower'),
|
||||
'[dungeon-A2-1F] Ganons Tower - North of Hookshot Room [bottom left chest]': (0xEABE, False, 'My Tower'),
|
||||
'[dungeon-A2-1F] Ganons Tower - North of Hookshot Room [bottom right chest]': (0xEAC1, False, 'My Tower'),
|
||||
'[dungeon-A2-1F] Ganons Tower - Map Room': (0xEAD3, False, 'My Tower'),
|
||||
'[dungeon-A2-1F] Ganons Tower - Firesnake Room': (0xEAD0, False, 'My Tower'),
|
||||
'[dungeon-A2-1F] Ganons Tower - Teleport Room [top left chest]': (0xEAC4, False, 'My Tower'),
|
||||
'[dungeon-A2-1F] Ganons Tower - Teleport Room [top right chest]': (0xEAC7, False, 'My Tower'),
|
||||
'[dungeon-A2-1F] Ganons Tower - Teleport Room [bottom left chest]': (0xEACA, False, 'My Tower'),
|
||||
'[dungeon-A2-1F] Ganons Tower - Teleport Room [bottom right chest]': (0xEACD, False, 'My Tower'),
|
||||
'[dungeon-A2-1F] Ganons Tower - above Armos': (0xEADF, False, 'My Tower'),
|
||||
'[dungeon-A2-1F] Ganons Tower - Big Chest': (0xEAD6, False, 'My Tower'),
|
||||
'[dungeon-A2-B1] Ganons Tower - Armos Room [left chest]': (0xEAF4, False, 'My Tower'),
|
||||
'[dungeon-A2-B1] Ganons Tower - Armos Room [right chest]': (0xEAF7, False, 'My Tower'),
|
||||
'[dungeon-A2-B1] Ganons Tower - Armos Room [bottom chest]': (0xEAF1, False, 'My Tower'),
|
||||
'[dungeon-A2-6F] Ganons Tower - Mini Helmasaur Room [left chest]': (0xEAFD, False, 'My Tower'),
|
||||
'[dungeon-A2-6F] Ganons Tower - Mini Helmasaur Room [right chest]': (0xEB00, False, 'My Tower'),
|
||||
'[dungeon-A2-6F] Ganons Tower - Room before Moldorm': (0xEB03, False, 'My Tower'),
|
||||
'[dungeon-A2-6F] Ganons Tower - Moldorm Room': (0xEB06, False, 'My Tower'),
|
||||
'Ganon': (None, False, None),
|
||||
'Armos - Pendant': ([0x1209D, 0x53EF8, 0x53EF9, 0x180052, 0x18007C, 0xC6FE], True, 'Eastern Palace'),
|
||||
'Lanmolas - Pendant': ([0x1209E, 0x53F1C, 0x53F1D, 0x180053, 0x180078, 0xC6FF], True, 'Desert Palace'),
|
||||
'Moldorm - Pendant': ([0x120A5, 0x53F0A, 0x53F0B, 0x18005A, 0x18007A, 0xC706], True, 'Tower of Hera'),
|
||||
'Helmasaur - Crystal': ([0x120A1, 0x53F00, 0x53F01, 0x180056, 0x18007D, 0xC702], True, 'Palace of Darkness'),
|
||||
'Arrghus - Crystal': ([0x120A0, 0x53F6C, 0x53F6D, 0x180055, 0x180071, 0xC701], True, 'Swamp Palace'),
|
||||
'Blind - Crystal': ([0x120A6, 0x53F36, 0x53F37, 0x18005B, 0x180077, 0xC707], True, 'Thieves\' Town'),
|
||||
'Mothula - Crystal': ([0x120A3, 0x53F12, 0x53F13, 0x180058, 0x18007B, 0xC704], True, 'Skull Woods'),
|
||||
'Kholdstare - Crystal': ([0x120A4, 0x53F5A, 0x53F5B, 0x180059, 0x180073, 0xC705], True, 'Ice Palace'),
|
||||
'Vitreous - Crystal': ([0x120A2, 0x53F48, 0x53F49, 0x180057, 0x180075, 0xC703], True, 'Misery Mire'),
|
||||
'Trinexx - Crystal': ([0x120A7, 0x53F24, 0x53F25, 0x18005C, 0x180079, 0xC708], True, 'Turtle Rock')}
|
||||
|
|
31
Rom.py
31
Rom.py
|
@ -1,4 +1,4 @@
|
|||
from Regions import location_addresses, crystal_locations, dungeon_music_addresses
|
||||
from Dungeons import dungeon_music_addresses
|
||||
from EntranceShuffle import door_addresses, single_doors
|
||||
from Text import string_to_alttp_text, text_addresses, credits_addresses, string_to_credits
|
||||
from Text import Uncle_texts, Ganon1_texts, PyramidFairy_texts, TavernMan_texts, Sahasrahla2_texts, Triforce_texts, Blind_texts, BombShop2_texts
|
||||
|
@ -6,7 +6,7 @@ from Text import KingsReturn_texts, Sanctuary_texts, Kakariko_texts, Blacksmiths
|
|||
import random
|
||||
|
||||
|
||||
def patch_rom(world, rom, quickswap=False):
|
||||
def patch_rom(world, rom, quickswap=False, beep='normal'):
|
||||
# patch items
|
||||
for location in world.get_locations():
|
||||
if location.name == 'Ganon':
|
||||
|
@ -15,13 +15,12 @@ def patch_rom(world, rom, quickswap=False):
|
|||
|
||||
itemid = location.item.code if location.item is not None else 0x5A
|
||||
|
||||
try:
|
||||
locationaddress = location.address
|
||||
if not location.crystal:
|
||||
# regular items
|
||||
locationaddress = location_addresses[location.name]
|
||||
write_byte(rom, locationaddress, itemid)
|
||||
except KeyError:
|
||||
else:
|
||||
# crystals
|
||||
locationaddress = crystal_locations[location.name]
|
||||
for address, value in zip(locationaddress, itemid):
|
||||
write_byte(rom, address, value)
|
||||
|
||||
|
@ -221,6 +220,12 @@ def patch_rom(world, rom, quickswap=False):
|
|||
|
||||
write_strings(rom, world)
|
||||
|
||||
# set rom name
|
||||
write_bytes(rom, 0x7FC0, [0x45, 0x6E, 0x74, 0x72, 0x61, 0x6E, 0x63, 0x65, 0x52, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x69, 0x7A, 0x65, 0x72, 0x00, 0x00, 0x00])
|
||||
|
||||
# set heart beep rate
|
||||
write_byte(rom, 0x180033, {'off': 0x00, 'half': 0x40, 'quarter': 0x80, 'normal': 0x20}[beep])
|
||||
|
||||
return rom
|
||||
|
||||
|
||||
|
@ -244,10 +249,16 @@ def write_credits_string_to_rom(rom, target, string):
|
|||
|
||||
|
||||
def write_strings(rom, world):
|
||||
# ToDo should read location of items and give hint
|
||||
write_string_to_rom(rom, 'Ganon2', 'Did you find the silver arrows in Hyrule?')
|
||||
write_string_to_rom(rom, 'BombShop1', 'Big Bomb?\nI Uh … Never heard of that. Move along.')
|
||||
write_string_to_rom(rom, 'Sahasrahla1', 'How Did you Find me?')
|
||||
silverarrows = world.find_items('Silver Arrows')
|
||||
silverarrow_hint = ('in %s?' % silverarrows[0].hint_text) if silverarrows else '?\nI think not!'
|
||||
write_string_to_rom(rom, 'Ganon2', 'Did you find the silver arrows %s' % silverarrow_hint)
|
||||
|
||||
crystal5 = world.find_items('Crystal 5')[0]
|
||||
crystal6 = world.find_items('Crystal 6')[0]
|
||||
write_string_to_rom(rom, 'BombShop1', 'Big Bomb?\nMy supply is blocked until you clear %s and %s.' % (crystal5.hint_text, crystal6.hint_text))
|
||||
|
||||
greenpendant = world.find_items('Green Pendant')[0]
|
||||
write_string_to_rom(rom, 'Sahasrahla1', 'I lost my family heirloom in %s' % greenpendant.hint_text)
|
||||
|
||||
write_string_to_rom(rom, 'Uncle', Uncle_texts[random.randint(0, len(Uncle_texts) - 1)])
|
||||
write_string_to_rom(rom, 'Triforce', Triforce_texts[random.randint(0, len(Triforce_texts) - 1)])
|
||||
|
|
17
Text.py
17
Text.py
|
@ -28,13 +28,16 @@ credits_addresses = {'KingsReturn': (0x76928, 22),
|
|||
'LostWoods': (0x76C51, 16),
|
||||
'Altar': (0x76C81, 20)}
|
||||
|
||||
Uncle_texts = ['Good Luck!\nYou will need it.']
|
||||
Triforce_texts = ['Product has Hole in center. Bad seller, 0 out of 5.']
|
||||
Uncle_texts = ['Good Luck!\nYou will need it.',
|
||||
'10\n9\n8\n7\n6\n5\n4\n3\n2\n1\nGo!']
|
||||
Triforce_texts = ['Product has Hole in center. Bad seller, 0 out of 5.',
|
||||
'\n Well Done!']
|
||||
BombShop2_texts = ['Bombs!\nBombs!\nBiggest!\nBestest!\nGreatest!\nBoomest!']
|
||||
PyramidFairy_texts = ['May I talk to you about our lord and savior, Ganon?']
|
||||
Sahasrahla2_texts = ['You already got my item, idiot.']
|
||||
Blind_texts = ['I bet you expected a vision related pun?\n\nNot Today.\n Didn\'t see that coming, did you?']
|
||||
Ganon1_texts = ['\n\n\n\n\n\n\n\n\nWhy are you reading an empty textbox?']
|
||||
Ganon1_texts = ['\n\n\n\n\n\n\n\n\nWhy are you reading an empty textbox?',
|
||||
'Hi']
|
||||
TavernMan_texts = ['Did you know that talking to random NPCs wastes time in a race? I hope this information may be of use to you in the future.']
|
||||
|
||||
KingsReturn_texts = ['Who is this even']
|
||||
|
@ -54,14 +57,6 @@ MagicShop_texts = ['Drug deal']
|
|||
FluteBoy_texts = ['Stumped']
|
||||
|
||||
|
||||
def write_texts_to_rom(rom, world):
|
||||
pass
|
||||
|
||||
|
||||
def write_credits_to_rom(rom, world):
|
||||
pass
|
||||
|
||||
|
||||
def string_to_credits(s, length):
|
||||
buf = bytearray()
|
||||
|
||||
|
|
Loading…
Reference in New Issue