From 940b7f59fd7aed6393431fa65df5f1a2f779a416 Mon Sep 17 00:00:00 2001 From: cassidoxa Date: Mon, 7 Aug 2023 13:47:52 -0400 Subject: [PATCH] Free Crystals Zelda mirror fix Use free dungeon items always --- Items.py | 14 +++++++------- Regions.py | 20 ++++++++++---------- Rom.py | 9 +-------- 3 files changed, 18 insertions(+), 25 deletions(-) diff --git a/Items.py b/Items.py index 5ae4e15c..8e2cfe80 100644 --- a/Items.py +++ b/Items.py @@ -67,13 +67,13 @@ item_table = {'Bow': (True, False, None, 0x0B, 'You have\nchosen the\narcher cla 'Triforce': (True, False, None, 0x6A, '\n YOU WIN!', 'and the triforce', 'victorious kid', 'victory for sale', 'fungus for the win', 'greedy boy wins game again', 'The Triforce'), 'Power Star': (True, False, None, 0x6B, 'a small victory', 'and the power star', 'star-struck kid', 'star for sale', 'see stars with shroom', 'mario powers up again', 'A Power Star'), 'Triforce Piece': (True, False, None, 0x6C, 'a small victory', 'and the thirdforce', 'triangular kid', 'triangle for sale', 'fungus for triangle', 'wise boy has triangle again', 'A Triforce Piece'), - 'Crystal 1': (True, False, 'Crystal', [0x02, 0x34, 0x64, 0x40, 0x7F, 0x06], None, None, None, None, None, None, None), - 'Crystal 2': (True, False, 'Crystal', [0x10, 0x34, 0x64, 0x40, 0x79, 0x06], None, None, None, None, None, None, None), - 'Crystal 3': (True, False, 'Crystal', [0x40, 0x34, 0x64, 0x40, 0x6C, 0x06], None, None, None, None, None, None, None), - 'Crystal 4': (True, False, 'Crystal', [0x20, 0x34, 0x64, 0x40, 0x6D, 0x06], None, None, None, None, None, None, None), - 'Crystal 5': (True, False, 'Crystal', [0x04, 0x32, 0x64, 0x40, 0x6E, 0x06], None, None, None, None, None, None, None), - 'Crystal 6': (True, False, 'Crystal', [0x01, 0x32, 0x64, 0x40, 0x6F, 0x06], None, None, None, None, None, None, None), - 'Crystal 7': (True, False, 'Crystal', [0x08, 0x34, 0x64, 0x40, 0x7C, 0x06], None, None, None, None, None, None, None), + 'Crystal 1': (True, False, 'Crystal', [0x02, 0x34, 0x64, 0x40, 0x7F, 0x20], None, None, None, None, None, None, None), + 'Crystal 2': (True, False, 'Crystal', [0x10, 0x34, 0x64, 0x40, 0x79, 0x20], None, None, None, None, None, None, None), + 'Crystal 3': (True, False, 'Crystal', [0x40, 0x34, 0x64, 0x40, 0x6C, 0x20], None, None, None, None, None, None, None), + 'Crystal 4': (True, False, 'Crystal', [0x20, 0x34, 0x64, 0x40, 0x6D, 0x20], None, None, None, None, None, None, None), + 'Crystal 5': (True, False, 'Crystal', [0x04, 0x32, 0x64, 0x40, 0x6E, 0x20], None, None, None, None, None, None, None), + 'Crystal 6': (True, False, 'Crystal', [0x01, 0x32, 0x64, 0x40, 0x6F, 0x20], None, None, None, None, None, None, None), + 'Crystal 7': (True, False, 'Crystal', [0x08, 0x34, 0x64, 0x40, 0x7C, 0x20], None, None, None, None, None, None, None), 'Single Arrow': (False, False, None, 0x43, 'a lonely arrow\nsits here.', 'and the arrow', 'stick-collecting kid', 'sewing needle for sale', 'fungus for arrow', 'archer boy sews again', 'An arrow'), 'Arrows (10)': (False, False, None, 0x44, 'This will give\nyou ten shots\nwith your bow!', 'and the arrow pack', 'stick-collecting kid', 'sewing kit for sale', 'fungus for arrows', 'archer boy sews again', 'Ten arrows'), 'Arrow Upgrade (+10)': (False, False, None, 0x54, 'increase arrow\nstorage, low\nlow price', 'and the quiver', 'quiver-enlarging kid', 'arrow boost for sale', 'witch and more skewers', 'upgrade boy sews more again', 'An arrow capacity upgrade'), diff --git a/Regions.py b/Regions.py index 2bd237b0..0409b24e 100644 --- a/Regions.py +++ b/Regions.py @@ -621,13 +621,13 @@ location_table = {'Mushroom': (0x180013, False, 'in the woods'), 'Frog': (None, False, None), 'Missing Smith': (None, False, None), 'Dark Blacksmith Ruins': (None, False, None), - 'Eastern Palace - Prize': ([0x1209D, 0x53EF8, 0x53EF9, 0x180052, 0x18007C, 0xC6FE], True, 'Eastern Palace'), - 'Desert Palace - Prize': ([0x1209E, 0x53F1C, 0x53F1D, 0x180053, 0x180078, 0xC6FF], True, 'Desert Palace'), - 'Tower of Hera - Prize': ([0x120A5, 0x53F0A, 0x53F0B, 0x18005A, 0x18007A, 0xC706], True, 'Tower of Hera'), - 'Palace of Darkness - Prize': ([0x120A1, 0x53F00, 0x53F01, 0x180056, 0x18007D, 0xC702], True, 'Palace of Darkness'), - 'Swamp Palace - Prize': ([0x120A0, 0x53F6C, 0x53F6D, 0x180055, 0x180071, 0xC701], True, 'Swamp Palace'), - 'Thieves\' Town - Prize': ([0x120A6, 0x53F36, 0x53F37, 0x18005B, 0x180077, 0xC707], True, 'Thieves\' Town'), - 'Skull Woods - Prize': ([0x120A3, 0x53F12, 0x53F13, 0x180058, 0x18007B, 0xC704], True, 'Skull Woods'), - 'Ice Palace - Prize': ([0x120A4, 0x53F5A, 0x53F5B, 0x180059, 0x180073, 0xC705], True, 'Ice Palace'), - 'Misery Mire - Prize': ([0x120A2, 0x53F48, 0x53F49, 0x180057, 0x180075, 0xC703], True, 'Misery Mire'), - 'Turtle Rock - Prize': ([0x120A7, 0x53F24, 0x53F25, 0x18005C, 0x180079, 0xC708], True, 'Turtle Rock')} + 'Eastern Palace - Prize': ([0x1209D, 0x53E76, 0x53E77, 0x180052, 0x180070, 0xC6FE], True, 'Eastern Palace'), + 'Desert Palace - Prize': ([0x1209E, 0x53E78, 0x53E79, 0x180053, 0x180072, 0xC6FF], True, 'Desert Palace'), + 'Tower of Hera - Prize': ([0x120A5, 0x53E7A, 0x53E7B, 0x18005A, 0x180071, 0xC706], True, 'Tower of Hera'), + 'Palace of Darkness - Prize': ([0x120A1, 0x53E7C, 0x53E7D, 0x180056, 0x180073, 0xC702], True, 'Palace of Darkness'), + 'Swamp Palace - Prize': ([0x120A0, 0x53E7E, 0x53E7F, 0x180055, 0x180079, 0xC701], True, 'Swamp Palace'), + 'Thieves\' Town - Prize': ([0x120A6, 0x53E80, 0x53E81, 0x18005B, 0x180076, 0xC707], True, 'Thieves\' Town'), + 'Skull Woods - Prize': ([0x120A3, 0x53E82, 0x53E83, 0x180058, 0x180074, 0xC704], True, 'Skull Woods'), + 'Ice Palace - Prize': ([0x120A4, 0x53E84, 0x53E85, 0x180059, 0x180078, 0xC705], True, 'Ice Palace'), + 'Misery Mire - Prize': ([0x120A2, 0x53E86, 0x53E87, 0x180057, 0x180077, 0xC703], True, 'Misery Mire'), + 'Turtle Rock - Prize': ([0x120A7, 0x53E88, 0x53E89, 0x18005C, 0x180075, 0xC708], True, 'Turtle Rock')} diff --git a/Rom.py b/Rom.py index f383ddee..8130a58a 100644 --- a/Rom.py +++ b/Rom.py @@ -462,14 +462,6 @@ def patch_rom(world, player, rom): continue if not location.crystal: - # Keys in their native dungeon should use the orignal item code for keys - if location.parent_region.dungeon: - dungeon = location.parent_region.dungeon - if location.item is not None and location.item.key and dungeon.is_dungeon_item(location.item): - if location.item.type == "BigKey": - itemid = 0x32 - if location.item.type == "SmallKey": - itemid = 0x24 rom.write_byte(location.address, itemid) else: # crystals @@ -882,6 +874,7 @@ def patch_rom(world, player, rom): rom.write_byte(0x18017E, 0x01) # Fairy fountains only trade in bottles if world.pseudoboots[player]: rom.write_byte(0x18008E, 0x01) + rom.write_byte(0x159A8, 0x04 if world.logic == 'noglitches' else 0x02) # Zelda escape mirror fix rom.initial_sram.set_starting_equipment(world, player) rom.write_byte(0x18004A, 0x00 if world.mode != 'inverted' else 0x01) # Inverted mode