diff --git a/Regions.py b/Regions.py index 459b42ca..bdef78ac 100644 --- a/Regions.py +++ b/Regions.py @@ -397,6 +397,23 @@ shop_table = { 'Capacity Upgrade': (0x0115, ShopType.UpgradeShop, 0x04, True, True, [('Bomb Upgrade (+5)', 100, 7), ('Arrow Upgrade (+5)', 100, 7)]) } +old_location_address_to_new_location_address = { + 0x2eb18: 0x18001b, # Bottle Merchant + 0x33d68: 0x18001a, # Purple Chest + 0x2df45: 0x18001d, # Link's Uncle + 0x2f1fc: 0x180008, # Sahasrahla + 0x18002a: 0x18001c, # Black Smith + 0x339cf: 0x180009, # Sick Kid + 0x33e7d: 0x180019, # Hobo + 0x180160: 0x18000b, # Desert Palace - Desert Torch + 0x289b0: 0x180018, # Master Sword Pedestal + 0xf69fa: 0x180007, # Old Man + 0x180162: 0x18000d, # Tower of Hera - Basement Cage + 0x330c7: 0x18000a, # Stumpy + 0x180161: 0x18000c # Ganons Tower - Bob's Torch +} + + key_drop_data = { 'Hyrule Castle - Map Guard Key Drop': [0x140036, 0x140037], 'Hyrule Castle - Boomerang Guard Key Drop': [0x140033, 0x140034], diff --git a/Rom.py b/Rom.py index 7616a1bd..10e01ec5 100644 --- a/Rom.py +++ b/Rom.py @@ -1,7 +1,7 @@ from __future__ import annotations JAP10HASH = '03a63945398191337e896e5771f77173' -RANDOMIZERBASEHASH = '0fc63d72970ab96ffb18699f4d12a594' +RANDOMIZERBASEHASH = '8021a943f940a0bb5800c013138c02e8' import io import json @@ -19,7 +19,7 @@ from typing import Optional from BaseClasses import CollectionState, ShopType, Region, Location from Dungeons import dungeon_music_addresses -from Regions import location_table +from Regions import location_table, old_location_address_to_new_location_address from Text import MultiByteTextMapper, CompressedTextMapper, text_addresses, Credits, TextTable from Text import Uncle_texts, Ganon1_texts, TavernMan_texts, Sahasrahla2_texts, Triforce_texts, Blind_texts, \ BombShop2_texts, junk_texts @@ -93,8 +93,10 @@ class LocalRom(object): self.write_bytes(0x186140, [0] * 0x150) self.write_bytes(0x186140 + 0x150, itemplayertable) self.encrypt_range(0x186140 + 0x150, 168, key) + self.encrypt_range(0x186338, 56, key) self.encrypt_range(0x180000, 32, key) self.encrypt_range(0x180140, 32, key) + self.encrypt_range(0xEDA1, 8, key) def write_to_file(self, file, hide_enemizer=False): with open(file, 'wb') as outfile: @@ -661,7 +663,8 @@ def patch_rom(world, rom, player, team, enemized): rom.write_byte(location.player_address, location.item.player) else: itemid = 0x5A - rom.write_byte(location.address, itemid) + location_address = old_location_address_to_new_location_address.get(location.address, location.address) + rom.write_byte(location_address, itemid) else: # crystals for address, value in zip(location.address, itemid): @@ -1476,7 +1479,7 @@ def patch_rom(world, rom, player, team, enemized): write_strings(rom, world, player, team) - rom.write_byte(0x18636C, 1 if world.remote_items[player] else 0) + rom.write_byte(0x18637C, 1 if world.remote_items[player] else 0) # set rom name # 21 bytes diff --git a/data/basepatch.bmbp b/data/basepatch.bmbp index 8759fd51..5f3abef1 100644 Binary files a/data/basepatch.bmbp and b/data/basepatch.bmbp differ