diff --git a/OverworldShuffle.py b/OverworldShuffle.py index 9b40b7a6..8abb8aa5 100644 --- a/OverworldShuffle.py +++ b/OverworldShuffle.py @@ -2540,46 +2540,107 @@ isolated_regions = [ flute_data = { #OWID LW Region DW Region Slot VRAM BG Y BG X Link Y Link X Cam Y Cam X Unk1 Unk2 IconY IconX AltY AltX AltVRAM AltBGY AltBGX AltCamY AltCamX AltUnk1 AltUnk2 AltIconY AltIconX 0x00: (['Lost Woods East Area', 'Skull Woods Forest'], 0x09, 0x1042, 0x022e, 0x0202, 0x0290, 0x0288, 0x029b, 0x028f, 0xfff2, 0x000e, 0x0290, 0x0288, 0x0290, 0x0290), - 0x02: (['Lumberjack Area', 'Dark Lumberjack Area'], 0x02, 0x059c, 0x00d6, 0x04e6, 0x0138, 0x0558, 0x0143, 0x0563, 0xfffa, 0xfffa, 0x0138, 0x0550), - 0x03: (['West Death Mountain (Bottom)', 'West Dark Death Mountain (Top)'], 0x0b, 0x1600, 0x02ca, 0x060e, 0x0328, 0x0678, 0x0337, 0x0683, 0xfff6, 0xfff2, 0x035b, 0x0680, 0x0118, 0x0860, 0x05c0, 0x00b8, 0x07ec, 0x0127, 0x086b, 0xfff8, 0x0004, 0x0148, 0x0850), - 0x05: (['East Death Mountain (Bottom)', 'East Dark Death Mountain (Bottom)'], 0x0e, 0x1860, 0x031e, 0x0d00, 0x0388, 0x0da8, 0x038d, 0x0d7d, 0x0000, 0x0000, 0x0388, 0x0da8), - 0x07: (['Death Mountain TR Pegs Area', 'Turtle Rock Area'], 0x07, 0x0804, 0x0102, 0x0e1a, 0x0160, 0x0e90, 0x016f, 0x0e97, 0xfffe, 0x0006, 0x0160, 0x0f20), - 0x0a: (['Mountain Pass Area', 'Bumper Cave Area'], 0x0a, 0x0180, 0x0220, 0x0406, 0x0280, 0x0488, 0x028f, 0x0493, 0x0000, 0xfffa, 0x0280, 0x0488), - 0x0f: (['Zora Waterfall Area', 'Catfish Area'], 0x0f, 0x0316, 0x025c, 0x0eb2, 0x02c0, 0x0f28, 0x02cb, 0x0f2f, 0x0002, 0xfffe, 0x02d0, 0x0f38), - 0x10: (['Lost Woods Pass West Area', 'Skull Woods Pass West Area'], 0x10, 0x0080, 0x0400, 0x0000, 0x0448, 0x0058, 0x046f, 0x0085, 0x0000, 0x0000, 0x0448, 0x0058), - 0x11: (['Kakariko Fortune Area', 'Dark Fortune Area'], 0x11, 0x0912, 0x051e, 0x0292, 0x0588, 0x0318, 0x058d, 0x031f, 0x0000, 0xfffe, 0x0588, 0x0318), - 0x12: (['Kakariko Pond Area', 'Outcast Pond Area'], 0x12, 0x0890, 0x051a, 0x0476, 0x0578, 0x04f8, 0x0587, 0x0503, 0xfff6, 0x000a, 0x0578, 0x04f8), - 0x13: (['Sanctuary Area', 'Dark Chapel Area'], 0x13, 0x051c, 0x04aa, 0x06de, 0x0508, 0x0758, 0x0517, 0x0763, 0xfff6, 0x0002, 0x0508, 0x0758), - 0x14: (['Graveyard Area', 'Dark Graveyard Area'], 0x14, 0x089c, 0x051e, 0x08e6, 0x0580, 0x0958, 0x058b, 0x0963, 0x0000, 0xfffa, 0x0580, 0x0928, 0x0580, 0x0948), - 0x15: (['River Bend East Bank', 'Qirn Jump East Bank'], 0x15, 0x041a, 0x0486, 0x0ad2, 0x04e8, 0x0b48, 0x04f3, 0x0b4f, 0x0008, 0xfffe, 0x04f8, 0x0b60), - 0x16: (['Potion Shop Area', 'Dark Witch Area'], 0x16, 0x0888, 0x0516, 0x0c4e, 0x0578, 0x0cc8, 0x0583, 0x0cd3, 0xfffa, 0xfff2, 0x0598, 0x0ccf), - 0x17: (['Zora Approach Ledge', 'Catfish Approach Ledge'], 0x17, 0x039e, 0x047e, 0x0ef2, 0x04e0, 0x0f68, 0x04eb, 0x0f6f, 0x0000, 0xfffe, 0x04e0, 0x0f68), - 0x18: (['Kakariko Village', 'Village of Outcasts'], 0x18, 0x0b30, 0x0759, 0x017e, 0x07b7, 0x0200, 0x07c6, 0x020b, 0x0007, 0x0002, 0x07c0, 0x0210, 0x07c8, 0x01f8), - 0x1a: (['Forgotten Forest Area', 'Shield Shop Fence'], 0x1a, 0x081a, 0x070f, 0x04d2, 0x0770, 0x0548, 0x077c, 0x054f, 0xffff, 0xfffe, 0x0770, 0x0548), - 0x1b: (['Hyrule Castle Courtyard', 'Pyramid Area'], 0x1b, 0x0c30, 0x077a, 0x0786, 0x07d8, 0x07f8, 0x07e7, 0x0803, 0x0006, 0xfffa, 0x07d8, 0x07f8), - 0x1d: (['Wooden Bridge Area', 'Broken Bridge Northeast'], 0x1d, 0x0602, 0x06c2, 0x0a0e, 0x0720, 0x0a80, 0x072f, 0x0a8b, 0xfffe, 0x0002, 0x0720, 0x0a80), - 0x1e: (['Eastern Palace Area', 'Palace of Darkness Area'], 0x26, 0x1802, 0x091e, 0x0c0e, 0x09c0, 0x0c80, 0x098b, 0x0c8b, 0x0000, 0x0002, 0x09c0, 0x0c80), - 0x22: (['Blacksmith Area', 'Hammer Pegs Area'], 0x22, 0x058c, 0x08aa, 0x0462, 0x0908, 0x04d8, 0x0917, 0x04df, 0x0006, 0xfffe, 0x0908, 0x04d8), - 0x25: (['Sand Dunes Area', 'Dark Dunes Area'], 0x25, 0x030e, 0x085a, 0x0a76, 0x08b8, 0x0ae8, 0x08c7, 0x0af3, 0x0006, 0xfffa, 0x08b8, 0x0b08), - 0x28: (['Maze Race Area', 'Dig Game Area'], 0x28, 0x0908, 0x0b1e, 0x003a, 0x0b88, 0x00b8, 0x0b8d, 0x00bf, 0x0000, 0x0006, 0x0b88, 0x00b8), - 0x29: (['Kakariko Suburb Area', 'Frog Area'], 0x29, 0x0408, 0x0a7c, 0x0242, 0x0ae0, 0x02c0, 0x0aeb, 0x02c7, 0x0002, 0xfffe, 0x0ae0, 0x02c0), - 0x2a: (['Flute Boy Area', 'Stumpy Area'], 0x2a, 0x058e, 0x0aac, 0x046e, 0x0b10, 0x04e8, 0x0b1b, 0x04f3, 0x0002, 0x0002, 0x0b10, 0x04e8), - 0x2b: (['Central Bonk Rocks Area', 'Dark Bonk Rocks Area'], 0x2b, 0x0620, 0x0acc, 0x0700, 0x0b30, 0x0790, 0x0b3b, 0x0785, 0xfff2, 0x0000, 0x0b30, 0x0770), - 0x2c: (['Links House Area', 'Big Bomb Shop Area'], 0x2c, 0x0588, 0x0ab9, 0x0840, 0x0b17, 0x08b8, 0x0b26, 0x08bf, 0xfff7, 0x0000, 0x0b20, 0x08b8), - 0x2d: (['Stone Bridge South Area', 'Hammer Bridge South Area'], 0x2d, 0x0886, 0x0b1e, 0x0a2a, 0x0ba0, 0x0aa8, 0x0b8b, 0x0aaf, 0x0000, 0x0006, 0x0bc4, 0x0ad0), - 0x2e: (['Tree Line Area', 'Dark Tree Line Area'], 0x2e, 0x0100, 0x0a1a, 0x0c00, 0x0a78, 0x0c30, 0x0a87, 0x0c7d, 0x0006, 0x0000, 0x0a78, 0x0c58), - 0x2f: (['Eastern Nook Area', 'Darkness Nook Area'], 0x2f, 0x0798, 0x0afa, 0x0eb2, 0x0b58, 0x0f30, 0x0b67, 0x0f37, 0xfff6, 0x000e, 0x0b50, 0x0f30), - 0x30: (['Desert Teleporter Ledge', 'Mire Teleporter Ledge'], 0x38, 0x1880, 0x0f1e, 0x0000, 0x0fa8, 0x0078, 0x0f8d, 0x008d, 0x0000, 0x0000, 0x0fb0, 0x0070), - 0x32: (['Flute Boy Approach Area', 'Stumpy Approach Area'], 0x32, 0x03a0, 0x0c6c, 0x0500, 0x0cd0, 0x05a8, 0x0cdb, 0x0585, 0x0002, 0x0000, 0x0cd6, 0x0568), - 0x33: (['C Whirlpool Outer Area', 'Dark C Whirlpool Outer Area'], 0x33, 0x0180, 0x0c20, 0x0600, 0x0c80, 0x0628, 0x0c8f, 0x067d, 0x0000, 0x0000, 0x0c80, 0x0628), - 0x34: (['Statues Area', 'Hype Cave Area'], 0x34, 0x088e, 0x0d00, 0x0866, 0x0d60, 0x08d8, 0x0d6f, 0x08e3, 0x0000, 0x000a, 0x0d60, 0x08d8), - #0x35: (['Lake Hylia Northwest Bank', 'Ice Lake Northwest Bank'], 0x35, 0x0d00, 0x0da6, 0x0a06, 0x0e08, 0x0a80, 0x0e13, 0x0a8b, 0xfffa, 0xfffa, 0x0d88, 0x0a88), - 0x35: (['Lake Hylia South Shore', 'Ice Lake Southeast Ledge'], 0x3e, 0x1860, 0x0f1e, 0x0d00, 0x0f98, 0x0da8, 0x0f8b, 0x0d85, 0x0000, 0x0000, 0x0f90, 0x0da4), - 0x37: (['Ice Cave Area', 'Shopping Mall Area'], 0x37, 0x0786, 0x0cf6, 0x0e2e, 0x0d58, 0x0ea0, 0x0d63, 0x0eab, 0x000a, 0x0002, 0x0d48, 0x0ed0), - 0x3a: (['Desert Pass Area', 'Swamp Nook Area'], 0x3a, 0x001a, 0x0e08, 0x04c6, 0x0e70, 0x0540, 0x0e7d, 0x054b, 0x0006, 0x000a, 0x0e70, 0x0540), - 0x3b: (['Dam Area', 'Swamp Area'], 0x3b, 0x069e, 0x0edf, 0x06f2, 0x0f3d, 0x0778, 0x0f4c, 0x077f, 0xfff1, 0xfffe, 0x0f30, 0x0770), - 0x3c: (['South Pass Area', 'Dark South Pass Area'], 0x3c, 0x0584, 0x0ed0, 0x081e, 0x0f38, 0x0898, 0x0f45, 0x08a3, 0xfffe, 0x0002, 0x0f38, 0x0898), - 0x3f: (['Octoballoon Area', 'Bomber Corner Area'], 0x3f, 0x0810, 0x0f05, 0x0e75, 0x0f67, 0x0ef3, 0x0f72, 0x0efa, 0xfffb, 0x000b, 0x0f80, 0x0ef0) + 0x02: (['Lumberjack Area', 'Dark Lumberjack Area'], 0x02, 0x059c, 0x00d6, 0x04e6, 0x0138, 0x0558, 0x0143, 0x0563, 0xfffa, 0xfffa, 0x01d8, 0x0518), + 0x03: (['West Death Mountain (Bottom)', 'West Dark Death Mountain (Top)'], 0x0b, 0x1600, 0x02ca, 0x060e, 0x0328, 0x0678, 0x0337, 0x0683, 0xfff6, 0xfff2, 0x03bb, 0x0680, 0x0118, 0x0860, 0x05c0, 0x00b8, 0x07ec, 0x0127, 0x086b, 0xfff8, 0x0004, 0x0148, 0x0850), + 0x05: (['East Death Mountain (Bottom)', 'East Dark Death Mountain (Bottom)'], 0x0e, 0x1860, 0x031e, 0x0d00, 0x0388, 0x0da8, 0x038d, 0x0d7d, 0x0000, 0x0000, 0x03c8, 0x0d98), + 0x07: (['Death Mountain TR Pegs Area', 'Turtle Rock Area'], 0x07, 0x0804, 0x0102, 0x0e1a, 0x0160, 0x0e90, 0x016f, 0x0e97, 0xfffe, 0x0006, 0x0150, 0x0ea0), + 0x0a: (['Mountain Pass Area', 'Bumper Cave Area'], 0x0a, 0x0180, 0x0220, 0x0406, 0x0280, 0x0488, 0x028f, 0x0493, 0x0000, 0xfffa, 0x0390, 0x04d8), + 0x0f: (['Zora Waterfall Area', 'Catfish Area'], 0x0f, 0x0316, 0x025c, 0x0eb2, 0x02c0, 0x0f28, 0x02cb, 0x0f2f, 0x0002, 0xfffe, 0x0360, 0x0f58), + 0x10: (['Lost Woods Pass West Area', 'Skull Woods Pass West Area'], 0x10, 0x0080, 0x0400, 0x0000, 0x0448, 0x0058, 0x046f, 0x0085, 0x0000, 0x0000, 0x04f8, 0x0088), + 0x11: (['Kakariko Fortune Area', 'Dark Fortune Area'], 0x11, 0x0912, 0x051e, 0x0292, 0x0588, 0x0318, 0x058d, 0x031f, 0x0000, 0xfffe, 0x05f8, 0x0318), + 0x12: (['Kakariko Pond Area', 'Outcast Pond Area'], 0x12, 0x0890, 0x051a, 0x0476, 0x0578, 0x04f8, 0x0587, 0x0503, 0xfff6, 0x000a, 0x05b8, 0x04f8), + 0x13: (['Sanctuary Area', 'Dark Chapel Area'], 0x13, 0x051c, 0x04aa, 0x06de, 0x0508, 0x0758, 0x0517, 0x0763, 0xfff6, 0x0002, 0x05b8, 0x0738), + 0x14: (['Graveyard Area', 'Dark Graveyard Area'], 0x14, 0x089c, 0x051e, 0x08e6, 0x0580, 0x0958, 0x058b, 0x0963, 0x0000, 0xfffa, 0x05f0, 0x0918, 0x0580, 0x0948), + 0x15: (['River Bend East Bank', 'Qirn Jump East Bank'], 0x15, 0x041a, 0x0486, 0x0ad2, 0x04e8, 0x0b48, 0x04f3, 0x0b4f, 0x0008, 0xfffe, 0x0548, 0x0b78), + 0x16: (['Potion Shop Area', 'Dark Witch Area'], 0x16, 0x0888, 0x0516, 0x0c4e, 0x0578, 0x0cc8, 0x0583, 0x0cd3, 0xfffa, 0xfff2, 0x05e8, 0x0c9f), + 0x17: (['Zora Approach Ledge', 'Catfish Approach Ledge'], 0x17, 0x039e, 0x047e, 0x0ef2, 0x04e0, 0x0f68, 0x04eb, 0x0f6f, 0x0000, 0xfffe, 0x0580, 0x0f48), + 0x18: (['Kakariko Village', 'Village of Outcasts'], 0x18, 0x0b30, 0x0759, 0x017e, 0x07b7, 0x0200, 0x07c6, 0x020b, 0x0007, 0x0002, 0x0830, 0x0240, 0x07c8, 0x01f8), + 0x1a: (['Forgotten Forest Area', 'Shield Shop Fence'], 0x1a, 0x081a, 0x070f, 0x04d2, 0x0770, 0x0548, 0x077c, 0x054f, 0xffff, 0xfffe, 0x0770, 0x0518), + 0x1b: (['Hyrule Castle Courtyard', 'Pyramid Area'], 0x1b, 0x0c30, 0x077a, 0x0786, 0x07d8, 0x07f8, 0x07e7, 0x0803, 0x0006, 0xfffa, 0x07f8, 0x07f8), + 0x1d: (['Wooden Bridge Area', 'Broken Bridge Northeast'], 0x1d, 0x0602, 0x06c2, 0x0a0e, 0x0720, 0x0a80, 0x072f, 0x0a8b, 0xfffe, 0x0002, 0x0750, 0x0a70), + 0x1e: (['Eastern Palace Area', 'Palace of Darkness Area'], 0x26, 0x1802, 0x091e, 0x0c0e, 0x09c0, 0x0c80, 0x098b, 0x0c8b, 0x0000, 0x0002, 0x09a0, 0x0cb0), + 0x22: (['Blacksmith Area', 'Hammer Pegs Area'], 0x22, 0x058c, 0x08aa, 0x0462, 0x0908, 0x04d8, 0x0917, 0x04df, 0x0006, 0xfffe, 0x0978, 0x04e8), + 0x25: (['Sand Dunes Area', 'Dark Dunes Area'], 0x25, 0x030e, 0x085a, 0x0a76, 0x08b8, 0x0ae8, 0x08c7, 0x0af3, 0x0006, 0xfffa, 0x0918, 0x0b18), + 0x28: (['Maze Race Area', 'Dig Game Area'], 0x28, 0x0908, 0x0b1e, 0x003a, 0x0b88, 0x00b8, 0x0b8d, 0x00bf, 0x0000, 0x0006, 0x0ba8, 0x00b8), + 0x29: (['Kakariko Suburb Area', 'Frog Area'], 0x29, 0x0408, 0x0a7c, 0x0242, 0x0ae0, 0x02c0, 0x0aeb, 0x02c7, 0x0002, 0xfffe, 0x0b30, 0x02e0), + 0x2a: (['Flute Boy Area', 'Stumpy Area'], 0x2a, 0x058e, 0x0aac, 0x046e, 0x0b10, 0x04e8, 0x0b1b, 0x04f3, 0x0002, 0x0002, 0x0b60, 0x04f8), + 0x2b: (['Central Bonk Rocks Area', 'Dark Bonk Rocks Area'], 0x2b, 0x0620, 0x0acc, 0x0700, 0x0b30, 0x0790, 0x0b3b, 0x0785, 0xfff2, 0x0000, 0x0b80, 0x0760), + 0x2c: (['Links House Area', 'Big Bomb Shop Area'], 0x2c, 0x0588, 0x0ab9, 0x0840, 0x0b17, 0x08b8, 0x0b26, 0x08bf, 0xfff7, 0x0000, 0x0bb0, 0x08a8), + 0x2d: (['Stone Bridge South Area', 'Hammer Bridge South Area'], 0x2d, 0x0886, 0x0b1e, 0x0a2a, 0x0ba0, 0x0aa8, 0x0b8b, 0x0aaf, 0x0000, 0x0006, 0x0bf0, 0x0ab8), + 0x2e: (['Tree Line Area', 'Dark Tree Line Area'], 0x2e, 0x0100, 0x0a1a, 0x0c00, 0x0a78, 0x0c30, 0x0a87, 0x0c7d, 0x0006, 0x0000, 0x0ac8, 0x0c70), + 0x2f: (['Eastern Nook Area', 'Darkness Nook Area'], 0x2f, 0x0798, 0x0afa, 0x0eb2, 0x0b58, 0x0f30, 0x0b67, 0x0f37, 0xfff6, 0x000e, 0x0bc0, 0x0f00), + 0x30: (['Desert Teleporter Ledge', 'Mire Teleporter Ledge'], 0x38, 0x1880, 0x0f1e, 0x0000, 0x0fa8, 0x0078, 0x0f8d, 0x008d, 0x0000, 0x0000, 0x0ff0, 0x0070), + 0x32: (['Flute Boy Approach Area', 'Stumpy Approach Area'], 0x32, 0x03a0, 0x0c6c, 0x0500, 0x0cd0, 0x05a8, 0x0cdb, 0x0585, 0x0002, 0x0000, 0x0d00, 0x0528), + 0x33: (['C Whirlpool Outer Area', 'Dark C Whirlpool Outer Area'], 0x33, 0x0180, 0x0c20, 0x0600, 0x0c80, 0x0628, 0x0c8f, 0x067d, 0x0000, 0x0000, 0x0ce0, 0x0688), + 0x34: (['Statues Area', 'Hype Cave Area'], 0x34, 0x088e, 0x0d00, 0x0866, 0x0d60, 0x08d8, 0x0d6f, 0x08e3, 0x0000, 0x000a, 0x0dd0, 0x08e8), + #0x35: (['Lake Hylia Northwest Bank', 'Ice Lake Northwest Bank'], 0x35, 0x0d00, 0x0da6, 0x0a06, 0x0e08, 0x0a80, 0x0e13, 0x0a8b, 0xfffa, 0xfffa, 0x0dc8, 0x0a90), + 0x35: (['Lake Hylia South Shore', 'Ice Lake Southeast Ledge'], 0x3e, 0x1860, 0x0f1e, 0x0d00, 0x0f98, 0x0da8, 0x0f8b, 0x0d85, 0x0000, 0x0000, 0x0fd8, 0x0da8), + 0x37: (['Ice Cave Area', 'Shopping Mall Area'], 0x37, 0x0786, 0x0cf6, 0x0e2e, 0x0d58, 0x0ea0, 0x0d63, 0x0eab, 0x000a, 0x0002, 0x0d98, 0x0ed0), + 0x3a: (['Desert Pass Area', 'Swamp Nook Area'], 0x3a, 0x001a, 0x0e08, 0x04c6, 0x0e70, 0x0540, 0x0e7d, 0x054b, 0x0006, 0x000a, 0x0ee0, 0x0570), + 0x3b: (['Dam Area', 'Swamp Area'], 0x3b, 0x069e, 0x0edf, 0x06f2, 0x0f3d, 0x0778, 0x0f4c, 0x077f, 0xfff1, 0xfffe, 0x0fd0, 0x0770), + 0x3c: (['South Pass Area', 'Dark South Pass Area'], 0x3c, 0x0584, 0x0ed0, 0x081e, 0x0f38, 0x0898, 0x0f45, 0x08a3, 0xfffe, 0x0002, 0x0fa8, 0x0898), + 0x3f: (['Octoballoon Area', 'Bomber Corner Area'], 0x3f, 0x0810, 0x0f05, 0x0e75, 0x0f67, 0x0ef3, 0x0f72, 0x0efa, 0xfffb, 0x000b, 0x0fd0, 0x0ef0) +} + +ow_loc_prize_table = { + 'Master Sword Pedestal': (0x06d, 0x070), + 'Hobo': (0xb80, 0xb90), + 'Mushroom': (0x180, 0x140), + 'Lost Woods Hideout Tree': (0x200, 0x320), + 'Ether Tablet': (0x728, 0x017), + 'Spectacle Rock': (0x7F8, 0x128), + 'Old Man': (0x6A8, 0x3FF), + 'Floating Island': (0xD38, 0x038), + 'Death Mountain Bonk Rocks': (0xD48, 0x107), + 'Mountain Pass Pull Tree': (0x4E0, 0x380), + 'Mountain Pass Southeast Tree': (0x5A0, 0x3FF), + 'Lost Woods Pass West Tree': (0x080, 0x540), + 'Kakariko Portal Tree': (0x190, 0x540), + 'Fortune Bonk Rocks': (0x288, 0x558), + 'Bonk Rocks Tree': (0x680, 0x520), + 'Sanctuary Tree': (0x788, 0x594), + 'River Bend West Tree': (0xA38, 0x5FF), + 'River Bend East Tree': (0xB88, 0x558), + 'Bottle Merchant': (0x178, 0x7E8), + 'Blinds Hideout Tree': (0x118, 0x6F7), + 'Kakariko Welcome Tree': (0x358, 0x988), + 'Hyrule Castle Tree': (0x730, 0x780), + 'Wooden Bridge Tree': (0xA78, 0x6F0), + 'Eastern Palace Tree': (0xEC0, 0x968), + 'Maze Race': (0x0C0, 0xB00), + 'Flute Spot': (0x480, 0xAC0), + 'Flute Boy East Tree': (0x540, 0xB80), + 'Flute Boy South Tree': (0x540, 0xB80), + 'Central Bonk Rocks Tree': (0x768, 0xB37), + 'Tree Line Tree 2': (0xCD8, 0xB00), + 'Tree Line Tree 4': (0xCD8, 0xB00), + 'Desert Ledge': (0x018, 0xE88), + 'Bombos Tablet': (0x3E8, 0xEF8), + 'Flute Boy Approach North Tree': (0x588, 0xD07), + 'Flute Boy Approach South Tree': (0x588, 0xD07), + 'Lake Hylia Island': (0xB98, 0xD88), + 'Purple Chest': (0x588, 0xE96), + 'Sunken Treasure': (0x6F8, 0xF48), + + 'Dark Lumberjack Tree': (0x438, 0x1F7), + 'Bumper Cave Ledge': (0x538, 0x277), + 'Catfish': (0xE80, 0x368), + 'Dark Fortune Bonk Rocks (Drop 1)': (0x288, 0x558), + 'Dark Fortune Bonk Rocks (Drop 2)': (0x288, 0x558), + 'Dark Graveyard West Bonk Rocks': (0x900, 0x580), + 'Dark Graveyard North Bonk Rocks': (0x900, 0x580), + 'Dark Graveyard Tomb Bonk Rocks': (0x900, 0x580), + 'Qirn Jump West Tree': (0xA98, 0x5FF), + 'Qirn Jump East Tree': (0xB88, 0x558), + 'Dark Witch Tree': (0xC28, 0x558), + 'Pyramid': (0x998, 0x778), + 'Pyramid Tree': (0x738, 0x908), + 'Palace of Darkness Tree': (0xEC0, 0x968), + 'Digging Game': (0x0C0, 0xB00), + 'Dark Tree Line Tree 2': (0xCD8, 0xB00), + 'Dark Tree Line Tree 3': (0xCD8, 0xB00), + 'Dark Tree Line Tree 4': (0xCD8, 0xB00), + 'Hype Cave Statue': (0x900, 0xDB0) } tile_swap_spoiler_table = \ diff --git a/Rom.py b/Rom.py index 687805ab..06d31130 100644 --- a/Rom.py +++ b/Rom.py @@ -43,7 +43,7 @@ from source.enemizer.Enemizer import write_enemy_shuffle_settings JAP10HASH = '03a63945398191337e896e5771f77173' -RANDOMIZERBASEHASH = 'b2b8b42d575dd9825f2d8c424a4abb21' +RANDOMIZERBASEHASH = '5af87240955d04dfbbab1087de73d4c7' class JsonRom(object): @@ -527,35 +527,27 @@ def patch_rom(world, rom, player, team, is_mystery=False, rom_header=None): if world.is_tile_swapped(owid, player): offset = 0x40 - + write_int16(rom, snes_to_pc(0x02E849 + (o * 2)), owid + offset) # owid write_int16(rom, snes_to_pc(0x02E8D1 + (o * 2)), data[13] if offset > 0 and len(data) > 13 else data[5]) # link Y write_int16(rom, snes_to_pc(0x02E8F3 + (o * 2)), data[14] if offset > 0 and len(data) > 13 else data[6]) # link X - - if offset == 0 or len(data) <= 15: - write_int16(rom, snes_to_pc(0x02E86B + (o * 2)), data[2]) # vram - write_int16(rom, snes_to_pc(0x02E88D + (o * 2)), data[3]) # BG scroll Y - write_int16(rom, snes_to_pc(0x02E8AF + (o * 2)), data[4]) # BG scroll X - write_int16(rom, snes_to_pc(0x02E915 + (o * 2)), data[7]) # cam Y - write_int16(rom, snes_to_pc(0x02E937 + (o * 2)), data[8]) # cam X - write_int16(rom, snes_to_pc(0x02E959 + (o * 2)), data[9]) # unknown 1 - write_int16(rom, snes_to_pc(0x02E97B + (o * 2)), data[10]) # unknown 2 - rom.write_byte(snes_to_pc(0x0AB783 + o), data[12] & 0xff) # flute menu blip - X low byte - rom.write_byte(snes_to_pc(0x0AB78B + o), data[12] // 0x100) # flute menu blip - X high byte - rom.write_byte(snes_to_pc(0x0AB793 + o), data[11] & 0xff) # flute menu blip - Y low byte - rom.write_byte(snes_to_pc(0x0AB79B + o), data[11] // 0x100) # flute menu blip - Y high byte - else: # use alternate flute data - write_int16(rom, snes_to_pc(0x02E86B + (o * 2)), data[15]) # vram - write_int16(rom, snes_to_pc(0x02E88D + (o * 2)), data[16]) # BG scroll Y - write_int16(rom, snes_to_pc(0x02E8AF + (o * 2)), data[17]) # BG scroll X - write_int16(rom, snes_to_pc(0x02E915 + (o * 2)), data[18]) # cam Y - write_int16(rom, snes_to_pc(0x02E937 + (o * 2)), data[19]) # cam X - write_int16(rom, snes_to_pc(0x02E959 + (o * 2)), data[20]) # unknown 1 - write_int16(rom, snes_to_pc(0x02E97B + (o * 2)), data[21]) # unknown 2 - rom.write_byte(snes_to_pc(0x0AB783 + o), data[23] & 0xff) # flute menu blip - X low byte - rom.write_byte(snes_to_pc(0x0AB78B + o), data[23] // 0x100) # flute menu blip - X high byte - rom.write_byte(snes_to_pc(0x0AB793 + o), data[22] & 0xff) # flute menu blip - Y low byte - rom.write_byte(snes_to_pc(0x0AB79B + o), data[22] // 0x100) # flute menu blip - Y high byte + + base_index = 0 + if not (offset == 0 or len(data) <= 15): + base_index = 13 # use alternate flute data + write_int16(rom, snes_to_pc(0x02E86B + (o * 2)), data[base_index + 2]) # vram + write_int16(rom, snes_to_pc(0x02E88D + (o * 2)), data[base_index + 3]) # BG scroll Y + write_int16(rom, snes_to_pc(0x02E8AF + (o * 2)), data[base_index + 4]) # BG scroll X + if base_index > 0: + base_index -= 2 + write_int16(rom, snes_to_pc(0x02E915 + (o * 2)), data[base_index + 7]) # cam Y + write_int16(rom, snes_to_pc(0x02E937 + (o * 2)), data[base_index + 8]) # cam X + write_int16(rom, snes_to_pc(0x02E959 + (o * 2)), data[base_index + 9]) # unknown 1 + write_int16(rom, snes_to_pc(0x02E97B + (o * 2)), data[base_index + 10]) # unknown 2 + rom.write_byte(snes_to_pc(0x0AB783 + o), data[base_index + 12] & 0xff) # flute menu blip - X low byte + rom.write_byte(snes_to_pc(0x0AB78B + o), data[base_index + 12] // 0x100) # flute menu blip - X high byte + rom.write_byte(snes_to_pc(0x0AB793 + o), data[base_index + 11] & 0xff) # flute menu blip - Y low byte + rom.write_byte(snes_to_pc(0x0AB79B + o), data[base_index + 11] // 0x100) # flute menu blip - Y high byte # patch whirlpools if world.owWhirlpoolShuffle[player]: @@ -1412,34 +1404,45 @@ def patch_rom(world, rom, player, team, is_mystery=False, rom_header=None): rom.write_byte(0x18003C, compass_mode) def get_entrance_coords(ent): - if ent is None: - owid_map = [0x1E, 0x30, 0xFF, 0x7B, 0x5E, 0x70, 0x40, 0x75, 0x03, 0x58, 0x47] - x_map_position_generic = [0x03c0, 0x0740, 0xff00, 0x03c0, 0x01c0, 0x0bc0, 0x05c0, 0x09c0, 0x0ac0, 0x07c0, 0x0dc0] - y_map_position_generic = [0xff00, 0xff00, 0xff00, 0x0fc0, 0x0fc0, 0x0fc0, 0x0fc0, 0x0fc0, 0xff00, 0x0fc0, 0x0fc0] - world_indicator = 0x0000 - idx = int((map_index-2)/2) + if ent is None or isinstance(ent, int): + owid_map = [ 0x1E, 0x30, 0xFF, 0x7B, 0x5E, 0x70, 0x40, 0x75, 0x03, 0x58, 0x47 ] + coord_flags = 0x0000 + if ent is None: + # HUD-style dislocated icons + x_map_position = [0x0050, 0x0080, 0xFF00, 0x0040, 0x0020, 0x00C0, 0x0060, 0x00A0, 0x00B0, 0x0080, 0x00E0] + y_map_position = [0x000C, 0x000C, 0xFF00, 0x00D4, 0x00D4, 0x00D4, 0x00D4, 0x00D4, 0x000C, 0x00D4, 0x00D4] + coord_flags = 0x4000 # raw OAM coord flag + idx = int((map_index-2)/2) + elif isinstance(ent, int): + # vanilla icon positions + x_map_position = [0x0F30, 0x0170, 0xFF00, 0x0790, 0x0F30, 0x0160, 0x00F0, 0x0CB0, 0x0900, 0x0240, 0x0F30] + y_map_position = [0x06E0, 0x0E50, 0xFF00, 0x0FD0, 0x06E0, 0x0D80, 0x0160, 0x0E80, 0x0130, 0x0840, 0x01B0] + idx = ent owid = owid_map[idx] if owid != 0xFF: if (owid < 0x40) == (world.is_tile_swapped(owid, player)): - world_indicator = 0x8000 - return [world_indicator | x_map_position_generic[idx], y_map_position_generic[idx]] - if type(ent) is Location: - from OverworldShuffle import OWTileRegions - if ent.name == 'Hobo': - coords = (0xb80, 0xb80) - elif ent.name == 'Master Sword Pedestal': - coords = (0x06d, 0x070) + coord_flags |= 0x8000 # world indicator flag + return (coord_flags | x_map_position[idx], y_map_position[idx]) + elif type(ent) is Location: + from OverworldShuffle import OWTileRegions, ow_loc_prize_table + if ent.name in ow_loc_prize_table: + coords = ow_loc_prize_table[ent.name] else: owid = OWTileRegions[ent.parent_region.name] if owid == 0x81: - coords = (0x220, 0xf40) + coords = (0xF60, 0x280) else: owid = owid % 0x40 coords = (0x200 * (owid % 0x08) + 0x100, 0x200 * int(owid / 0x08) + 0x100) - if owid in [0x00, 0x03, 0x05, 0x18, 0x1b, 0x1e, 0x30, 0x35]: + if owid in [0x00, 0x03, 0x05, 0x18, 0x1B, 0x1E, 0x30, 0x35]: coords = (coords[0] + 0x100, coords[1] + 0x100) else: - coords = ow_prize_table[ent.name] + if ent.name in ow_prize_table: + coords = ow_prize_table[ent.name] + elif door_addresses[ent.name][1] is not None: + coords = (door_addresses[ent.name][1][6], door_addresses[ent.name][1][5]) + else: + raise Exception(f"No overworld map coordinates for entrance {ent.name}") coords = ((0x8000 if ent.parent_region.type == RegionType.DarkWorld else 0x0000) | coords[0], coords[1]) return coords if world.overworld_map[player] == 'default': @@ -1468,16 +1471,16 @@ def patch_rom(world, rom, player, team, is_mystery=False, rom_header=None): # prize location write_int16s(rom, snes_to_pc(0x0ABE2E)+(map_index*6)+8, coords) if world.shuffle[player] == 'vanilla' or world.overworld_map[player] == 'default': - # TODO: I think this is logically the same as some of the vanilla stuff below - vanilla_entrances = { 'Hyrule Castle': 'Hyrule Castle Entrance (South)', - 'Desert Palace': 'Desert Palace Entrance (North)', - 'Skull Woods': 'Skull Woods Final Section' } - entrance_name = vanilla_entrances[dungeon] if dungeon in vanilla_entrances else dungeon - if world.is_atgt_swapped(player): - swap_entrances = { 'Agahnims Tower': 'Ganons Tower', - 'Ganons Tower': 'Agahnims Tower' } - entrance_name = swap_entrances[dungeon] if dungeon in swap_entrances else entrance_name - entrance = world.get_entrance(entrance_name, player) + swap_entrances = { 'Agahnims Tower': 'Ganons Tower', + 'Ganons Tower': 'Agahnims Tower' } + if dungeon in swap_entrances: + entrance_name = dungeon + if world.is_atgt_swapped(player): + entrance_name = swap_entrances[dungeon] + entrance = world.get_entrance(entrance_name, player) + coords = get_entrance_coords(entrance) + else: + coords = get_entrance_coords(int((map_index-2)/2)) else: if len(portal_list) == 1: portal_idx = 0 @@ -1497,7 +1500,7 @@ def patch_rom(world, rom, player, team, is_mystery=False, rom_header=None): offset += 4 portal = world.get_portal(portal_list[portal_idx], player) entrance = portal.find_portal_entrance() - coords = get_entrance_coords(entrance) + coords = get_entrance_coords(entrance) # figure out compass entrances and what world (light/dark) write_int16s(rom, snes_to_pc(0x0ABE2E)+(map_index*6), coords) diff --git a/data/base2current.bps b/data/base2current.bps index 5ec6d04b..df5de37e 100644 Binary files a/data/base2current.bps and b/data/base2current.bps differ diff --git a/source/overworld/EntranceData.py b/source/overworld/EntranceData.py index f4dcb362..095615e1 100644 --- a/source/overworld/EntranceData.py +++ b/source/overworld/EntranceData.py @@ -147,149 +147,149 @@ door_addresses = {'Links House': (0x00, (0x0104, 0x2c 'Lake Hylia Fortune Teller': (0x72, (0x0122, 0x35, 0x0380, 0x0c6a, 0x0a00, 0x0cb8, 0x0a58, 0x0cd7, 0x0a85, 0x06, 0xfa, 0x0000, 0x0000), 0x00), 'Kakariko Gamble Game': (0x66, (0x0118, 0x29, 0x069e, 0x0ac4, 0x02ea, 0x0b18, 0x0368, 0x0b33, 0x036f, 0x0a, 0xf6, 0x09AC, 0x0000), 0x00)} -ow_prize_table = {'Lost Woods Gamble': (0x240, 0x080), - 'Lost Woods Hideout Drop': (0x290, 0x200), - 'Lost Woods Hideout Stump': (0x240, 0x280), - 'Lumberjack House': (0x580, 0x100), - 'Lumberjack Tree Tree': (0x4e0, 0x140), - 'Lumberjack Tree Cave': (0x560, 0x004), - 'Tower of Hera': (0x8D0, 0x080), - 'Spectacle Rock Cave Peak': (0x720, 0x0a0), - 'Spectacle Rock Cave (Bottom)': (0x710, 0x0a0), - 'Death Mountain Return Cave (East)': (0x600, 0x220), - 'Old Man Cave (East)': (0x620, 0x2c0), - 'Old Man House (Top)': (0x820, 0x220), - 'Old Man House (Bottom)': (0x720, 0x320), - 'Paradox Cave (Top)': (0xd80, 0x020), - 'Paradox Cave (Bottom)': (0xd80, 0x180), - 'Paradox Cave (Middle)': (0xd80, 0x380), - 'Fairy Ascension Cave (Top)': (0xc00, 0x240), - 'Fairy Ascension Cave (Bottom)': (0xcc8, 0x2a0), - 'Spiral Cave': (0xb80, 0x180), - 'Spiral Cave (Bottom)': (0xb80, 0x2c0), - 'Mimic Cave': (0xc80, 0x180), - 'Hookshot Fairy': (0xd00, 0x180), - 'Death Mountain Return Cave (West)': (0x500, 0x1c0), - 'Old Man Cave (West)': (0x580, 0x2c0), - 'Waterfall of Wishing': (0xe80, 0x280), - 'Fortune Teller (Light)': (0x2c0, 0x4c0), - 'Bonk Rock Cave': (0x5f0, 0x460), - 'Sanctuary': (0x720, 0x4a0), - 'Spectacle Rock Cave': (0x790, 0x1a0), - 'Sanctuary Grave': (0x820, 0x4c0), - 'Graveyard Cave': (0x8f0, 0x430), - 'Kings Grave': (0x920, 0x520), - 'North Fairy Cave Drop': (0xa40, 0x500), - 'North Fairy Cave': (0xa80, 0x440), - 'Potion Shop': (0xc80, 0x4c0), - 'Kakariko Well Drop': (0x030, 0x680), - 'Kakariko Well Cave': (0x060, 0x680), - 'Blinds Hideout': (0x190, 0x6c0), - 'Elder House (West)': (0x230, 0x6a0), - 'Elder House (East)': (0x2b0, 0x6a0), - 'Snitch Lady (West)': (0x080, 0x7a0), - 'Snitch Lady (East)': (0x310, 0x7a0), - 'Chicken House': (0x120, 0x880), - 'Sick Kids House': (0x220, 0x880), - 'Bush Covered House': (0x2e0, 0x880), - 'Light World Bomb Hut': (0x070, 0x980), - 'Kakariko Shop': (0x170, 0x980), - 'Tavern North': (0x270, 0x900), - 'Tavern (Front)': (0x270, 0x980), - 'Agahnims Tower': (0x820, 0x5D0), - 'Hyrule Castle Entrance (South)': (0x820, 0x730), - 'Hyrule Castle Entrance (West)': (0x740, 0x5D0), - 'Hyrule Castle Entrance (East)': (0x8f0, 0x5D0), +ow_prize_table = {'Lost Woods Gamble': (0x2A0, 0x080), + 'Lost Woods Hideout Drop': (0x338, 0x218), + 'Lost Woods Hideout Stump': (0x2A0, 0x2E0), + 'Lumberjack House': (0x538, 0x158), + 'Lumberjack Tree Tree': (0x4A0, 0x160), + 'Lumberjack Tree Cave': (0x550, 0x004), + 'Tower of Hera': (0x900, 0x0E0), + 'Spectacle Rock Cave Peak': (0x758, 0x1B7), + 'Spectacle Rock Cave (Bottom)': (0x6F0, 0x257), + 'Spectacle Rock Cave': (0x7C8, 0x257), + 'Death Mountain Return Cave (East)': (0x648, 0x278), + 'Old Man Cave (East)': (0x658, 0x387), + 'Old Man House (Top)': (0x8C8, 0x2D8), + 'Old Man House (Bottom)': (0x728, 0x3A7), + 'Paradox Cave (Top)': (0xDE0, 0x100), + 'Paradox Cave (Bottom)': (0xDC8, 0x358), + 'Paradox Cave (Middle)': (0xDDF, 0x3FF), + 'Fairy Ascension Cave (Top)': (0xCD8, 0x2B8), + 'Fairy Ascension Cave (Bottom)': (0xC78, 0x358), + 'Spiral Cave': (0xC78, 0x207), + 'Spiral Cave (Bottom)': (0xBC8, 0x2F7), + 'Mimic Cave': (0xD38, 0x207), + 'Hookshot Fairy': (0xD38, 0x358), + 'Death Mountain Return Cave (West)': (0x5B8, 0x247), + 'Old Man Cave (West)': (0x5B8, 0x348), + 'Waterfall of Wishing': (0xE80, 0x2C7), + 'Fortune Teller (Light)': (0x308, 0x5A8), + 'Bonk Rock Cave': (0x600, 0x517), + 'Sanctuary': (0x748, 0x4F4), + 'Sanctuary Grave': (0x860, 0x550), + 'Graveyard Cave': (0x8F8, 0x4A6), + 'Kings Grave': (0x978, 0x566), + 'North Fairy Cave Drop': (0xA40, 0x580), + 'North Fairy Cave': (0xAA8, 0x4A8), + 'Potion Shop': (0xCB8, 0x598), + 'Kakariko Well Drop': (0x030, 0x6C0), + 'Kakariko Well Cave': (0x0D8, 0x6F7), + 'Blinds Hideout': (0x1B8, 0x6F7), + 'Elder House (West)': (0x258, 0x6F7), + 'Elder House (East)': (0x2E8, 0x6F7), + 'Snitch Lady (West)': (0x0C8, 0x7E8), + 'Snitch Lady (East)': (0x338, 0x7E8), + 'Chicken House': (0x188, 0x8E8), + 'Sick Kids House': (0x278, 0x8E8), + 'Bush Covered House': (0x338, 0x8E8), + 'Light World Bomb Hut': (0x068, 0x9D7), + 'Kakariko Shop': (0x1C8, 0x9D7), + 'Tavern North': (0x2B8, 0x977), + 'Tavern (Front)': (0x2B8, 0x9F7), + 'Agahnims Tower': (0x7F0, 0x630), + 'Hyrule Castle Entrance (South)': (0x7F0, 0x750), + 'Hyrule Castle Entrance (West)': (0x758, 0x644), + 'Hyrule Castle Entrance (East)': (0x8E8, 0x644), 'Hyrule Castle Secret Entrance Drop': (0x9D0, 0x680), - 'Hyrule Castle Secret Entrance Stairs': (0x8D0, 0x700), - 'Inverted Pyramid Hole': (0x820, 0x680), - 'Inverted Pyramid Entrance': (0x6C0, 0x5D0), - 'Sahasrahlas Hut': (0xcf0, 0x6c0), - 'Eastern Palace': (0xf31, 0x620), - 'Blacksmiths Hut': (0x4a0, 0x880), - 'Bat Cave Drop': (0x520, 0x8f0), - 'Bat Cave Cave': (0x560, 0x940), - 'Two Brothers House (West)': (0x180, 0x0b60), - 'Two Brothers House (East)': (0x200, 0x0b60), - 'Library': (0x270, 0xaa0), - 'Kakariko Gamble Game': (0x2f0, 0xaf0), - 'Bonk Fairy (Light)': (0x740, 0xa80), - 'Links House': (0x8b1, 0xb2d), - 'Lake Hylia Fairy': (0xd40, 0x9f0), - 'Long Fairy Cave': (0xf60, 0xb00), - 'Desert Palace Entrance (North)': (0x0e1, 0xba0), - 'Desert Palace Entrance (West)': (0x031, 0xca0), - 'Desert Palace Entrance (East)': (0x191, 0xca0), - 'Desert Palace Entrance (South)': (0x108, 0xd70), - 'Checkerboard Cave': (0x260, 0xc00), - 'Aginahs Cave': (0x2e0, 0xd00), - 'Cave 45': (0x440, 0xca0), - 'Light Hype Fairy': (0x940, 0xc80), - 'Lake Hylia Fortune Teller': (0xa40, 0xc40), - 'Lake Hylia Shop': (0xbc0, 0xc00), - 'Capacity Upgrade': (0xca0, 0xda0), - 'Mini Moldorm Cave': (0xa40, 0xe80), - 'Ice Rod Cave': (0xe00, 0xc00), - 'Good Bee Cave': (0xec0, 0xc00), - '20 Rupee Cave': (0xe80, 0xca0), - 'Desert Fairy': (0x420, 0xe00), - '50 Rupee Cave': (0x4d0, 0xed0), - 'Dam': (0x759, 0xED0), + 'Hyrule Castle Secret Entrance Stairs': (0x8C8, 0x718), + 'Inverted Pyramid Hole': (0x7F0, 0x6B0), + 'Inverted Pyramid Entrance': (0x6E8, 0x644), + 'Sahasrahlas Hut': (0xCF0, 0x747), + 'Eastern Palace': (0xF40, 0x680), + 'Blacksmiths Hut': (0x4E8, 0x8C8), + 'Bat Cave Drop': (0x538, 0x9A8), + 'Bat Cave Cave': (0x510, 0x930), + 'Two Brothers House (West)': (0x1B8, 0xB88), + 'Two Brothers House (East)': (0x238, 0xB88), + 'Library': (0x2B8, 0xAA7), + 'Kakariko Gamble Game': (0x348, 0xB78), + 'Bonk Fairy (Light)': (0x788, 0xA87), + 'Links House': (0x8B8, 0xB58), + 'Lake Hylia Fairy': (0xD58, 0xA57), + 'Long Fairy Cave': (0xF68, 0xB58), + 'Desert Palace Entrance (North)': (0x148, 0xC28), + 'Desert Palace Entrance (West)': (0x088, 0xCF8), + 'Desert Palace Entrance (East)': (0x1E8, 0xCF8), + 'Desert Palace Entrance (South)': (0x138, 0xD18), + 'Checkerboard Cave': (0x2E8, 0xCF7), + 'Aginahs Cave': (0x388, 0xDE8), + 'Cave 45': (0x448, 0xD86), + 'Light Hype Fairy': (0x988, 0xCF8), + 'Lake Hylia Fortune Teller': (0xA68, 0xCC8), + 'Lake Hylia Shop': (0xBF8, 0xC66), + 'Capacity Upgrade': (0xCC8, 0xDE8), + 'Mini Moldorm Cave': (0xA88, 0xEF8), + 'Ice Rod Cave': (0xE68, 0xC37), + 'Good Bee Cave': (0xEF8, 0xC36), + '20 Rupee Cave': (0xEB8, 0xCC6), + 'Desert Fairy': (0x488, 0xE76), + '50 Rupee Cave': (0x4F8, 0xF47), + 'Dam': (0x778, 0xF68), - 'Skull Woods Final Section': (0x082, 0x0b0), - 'Skull Woods Second Section Door (West)': (0x0c0, 0x1c0), - 'Skull Woods Second Section Hole': (0x0f0, 0x0b0), - 'Skull Woods Second Section Door (East)': (0x200, 0x240), - 'Skull Woods First Section Door': (0x2e0, 0x280), + 'Skull Woods Final Section': (0x078, 0x0A8), + 'Skull Woods Second Section Door (West)': (0x0E0, 0x1C0), + 'Skull Woods Second Section Hole': (0x150, 0x120), + 'Skull Woods Second Section Door (East)': (0x208, 0x208), + 'Skull Woods First Section Door': (0x2C8, 0x2A8), 'Skull Woods First Section Hole (North)': (0x320, 0x1e0), - 'Skull Woods First Section Hole (West)': (0x200, 0x2b0), - 'Skull Woods First Section Hole (East)': (0x340, 0x2e0), - 'Dark Lumberjack Shop': (0x4e0, 0x0d0), - 'Ganons Tower': (0x8D0, 0x080), - 'Dark Death Mountain Fairy': (0x620, 0x2c0), - 'Spike Cave': (0x860, 0x180), - 'Hookshot Cave Back Entrance': (0xcf0, 0x004), - 'Hookshot Cave': (0xc80, 0x0c0), - 'Superbunny Cave (Top)': (0xd80, 0x020), - 'Superbunny Cave (Bottom)': (0xd00, 0x180), - 'Dark Death Mountain Ledge (West)': (0xb80, 0x180), - 'Dark Death Mountain Ledge (East)': (0xc80, 0x180), - 'Turtle Rock Isolated Ledge Entrance': (0xc00, 0x240), - 'Dark Death Mountain Shop': (0xd80, 0x180), - 'Turtle Rock': (0xf11, 0x103), - 'Bumper Cave (Top)': (0x500, 0x1c0), - 'Bumper Cave (Bottom)': (0x580, 0x2c0), - 'Fortune Teller (Dark)': (0x2c0, 0x4c0), - 'Dark Sanctuary Hint': (0x720, 0x4a0), - 'Dark Potion Shop': (0xc80, 0x4c0), - 'Chest Game': (0x080, 0x7a0), - 'Thieves Town': (0x1d0, 0x780), - 'C-Shaped House': (0x310, 0x7a0), - 'Brewery': (0x170, 0x980), - 'Dark World Shop': (0x2e0, 0x880), - 'Red Shield Shop': (0x500, 0x680), - 'Pyramid Hole': (0x820, 0x680), - 'Pyramid Entrance': (0x640, 0x7c0), - 'Pyramid Fairy': (0x740, 0x740), - 'Palace of Darkness': (0xf40, 0x620), - 'Palace of Darkness Hint': (0xd60, 0x7c0), - 'Hammer Peg Cave': (0x4c0, 0x940), - 'Archery Game': (0x2f0, 0xaf0), - 'Bonk Fairy (Dark)': (0x740, 0xa80), - 'Big Bomb Shop': (0x8b1, 0xb2d), - 'Dark Lake Hylia Fairy': (0xd40, 0x9f0), - 'East Dark World Hint': (0xf60, 0xb00), - 'Mire Shed': (0x060, 0xc90), - 'Misery Mire': (0x100, 0xca0), - 'Mire Fairy': (0x1c0, 0xc90), - 'Mire Hint': (0x2e0, 0xd00), - 'Hype Cave': (0x940, 0xc80), - 'Dark Lake Hylia Shop': (0xa40, 0xc40), - 'Ice Palace': (0xca0, 0xda0), - 'Dark Lake Hylia Ledge Fairy': (0xe00, 0xc00), - 'Dark Lake Hylia Ledge Hint': (0xec0, 0xc00), - 'Dark Lake Hylia Ledge Spike Cave': (0xe80, 0xca0), - 'Swamp Palace': (0x759, 0xED0)} + 'Skull Woods First Section Hole (West)': (0x240, 0x380), + 'Skull Woods First Section Hole (East)': (0x340, 0x380), + 'Dark Lumberjack Shop': (0x538, 0x177), + 'Ganons Tower': (0x900, 0x0E0), + 'Dark Death Mountain Fairy': (0x658, 0x387), + 'Spike Cave': (0x9F8, 0x268), + 'Hookshot Cave Back Entrance': (0xD38, 0x038), + 'Hookshot Cave': (0xD48, 0x107), + 'Superbunny Cave (Top)': (0xDE0, 0x100), + 'Superbunny Cave (Bottom)': (0xD38, 0x358), + 'Dark Death Mountain Ledge (West)': (0xC78, 0x207), + 'Dark Death Mountain Ledge (East)': (0xD38, 0x207), + 'Turtle Rock Isolated Ledge Entrance': (0xCD8, 0x2B8), + 'Dark Death Mountain Shop': (0xDC8, 0x358), + 'Turtle Rock': (0xF48, 0x108), + 'Bumper Cave (Top)': (0x5B8, 0x247), + 'Bumper Cave (Bottom)': (0x5B8, 0x348), + 'Fortune Teller (Dark)': (0x308, 0x5A8), + 'Dark Sanctuary Hint': (0x748, 0x4F4), + 'Dark Potion Shop': (0xCB8, 0x598), + 'Chest Game': (0x0C8, 0x7E8), + 'Thieves Town': (0x1F0, 0x7E8), + 'C-Shaped House': (0x338, 0x7E8), + 'Brewery': (0x1C8, 0x9D7), + 'Dark World Shop': (0x338, 0x8E8), + 'Red Shield Shop': (0x538, 0x778), + 'Pyramid Hole': (0x800, 0x680), + 'Pyramid Entrance': (0x718, 0x7A8), + 'Pyramid Fairy': (0x7B8, 0x7A8), + 'Palace of Darkness': (0xF40, 0x680), + 'Palace of Darkness Hint': (0xD70, 0x878), + 'Hammer Peg Cave': (0x528, 0x9B6), + 'Archery Game': (0x348, 0xB78), + 'Bonk Fairy (Dark)': (0x788, 0xA87), + 'Big Bomb Shop': (0x8B8, 0xB58), + 'Dark Lake Hylia Fairy': (0xD58, 0xA57), + 'East Dark World Hint': (0xF68, 0xB58), + 'Mire Shed': (0x0A8, 0xCC7), + 'Misery Mire': (0x148, 0xCC7), + 'Mire Fairy': (0x1E8, 0xCC7), + 'Mire Hint': (0x388, 0xDE8), + 'Hype Cave': (0x988, 0xCF8), + 'Dark Lake Hylia Shop': (0xA68, 0xCC8), + 'Ice Palace': (0xCA8, 0xE28), + 'Dark Lake Hylia Ledge Fairy': (0xE68, 0xC37), + 'Dark Lake Hylia Ledge Hint': (0xEF8, 0xC36), + 'Dark Lake Hylia Ledge Spike Cave': (0xEB8, 0xCC6), + 'Swamp Palace': (0x778, 0xF68)} default_connector_connections = [('Death Mountain Return Cave (West)', 'Death Mountain Return Cave Exit (West)'), ('Death Mountain Return Cave (East)', 'Death Mountain Return Cave Exit (East)'),