28 Commits

Author SHA1 Message Date
1d4a77b8e7 Update baserom 2026-06-08 16:15:01 -05:00
1e10673e31 Update baserom, fix starting value for PikitItem 2026-06-07 13:38:38 -05:00
f1374daf96 Update baserom 2026-06-07 01:36:17 -05:00
bcdc8ce726 Merge branch 'beta' into pikit 2026-06-07 01:35:50 -05:00
df928f0378 Text updates 2026-06-07 01:35:25 -05:00
4415ef5cfb Merge branch 'beta' into pikit 2026-06-06 12:56:24 -05:00
1644535557 Update baserom 2026-06-06 12:36:17 -05:00
db87f57c4f Update intro check 2026-06-05 19:33:02 -05:00
626a37ea4b Update baserom 2026-06-05 01:07:07 -05:00
dcc4121c43 Separate map and hud loot icons 2026-06-03 20:52:25 -05:00
444ebda072 Up triforce count before triforces become lower priority 2026-06-01 18:00:38 -05:00
2055ed6d96 Minor gfx/patch updates 2026-05-29 19:21:17 -05:00
1a9cea452d Zora/Bottle Vendor ask about item before taking money when hints are on 2026-05-28 21:03:10 -05:00
8451a64984 Update baserom 2026-05-28 18:20:57 -05:00
f5dde931dc cave pots show on HUD 2026-05-28 17:20:17 -05:00
b82ec31f98 Update baserom 2026-05-28 06:30:13 -05:00
2ff19b3781 Update baserom 2026-05-27 23:16:45 -05:00
5278f9f2c6 Change more Dark Palace to Palace of Darkness to Appease Fouton 2026-05-25 10:51:55 -05:00
be35ed4451 Update baserom 2026-02-08 00:33:43 -06:00
0a18bda341 Update baserom 2026-02-07 23:53:17 -06:00
1e2097c3dc Update baserom 2026-02-07 21:23:53 -06:00
f4e6308a5d Enemy shuffle working 2026-02-07 18:13:47 -06:00
2738f61c0d Update baserom 2026-02-07 16:52:00 -06:00
b189de00c6 Update baserom 2026-02-07 14:18:11 -06:00
f3dd0319ed Merge branch 'beta' into pikit 2026-02-03 17:48:52 -06:00
077ba85e9d Update baserom 2026-02-03 17:45:20 -06:00
3c6239fe95 Update baserom 2026-02-01 23:17:04 -06:00
3bb0d82cab Start of pikit mode 2026-02-01 21:42:11 -06:00
18 changed files with 86 additions and 601 deletions

View File

@@ -65,6 +65,7 @@ class InitialSram:
equip[0x36C] = 0x18 equip[0x36C] = 0x18
equip[0x36D] = 0x18 equip[0x36D] = 0x18
equip[0x379] = 0x68 equip[0x379] = 0x68
self._initial_sram_bytes[0x3C0] = 0x04 # PikitItem starts as shield
starting_bomb_cap_upgrades = 10 if not world.bombbag[player] else 0 starting_bomb_cap_upgrades = 10 if not world.bombbag[player] else 0
starting_arrow_cap_upgrades = 30 starting_arrow_cap_upgrades = 30
starting_bombs = 0 starting_bombs = 0

View File

@@ -1191,10 +1191,10 @@ def get_pool_core(world, player, progressive, shuffle, difficulty, treasure_hunt
thisbottle = random.choice(diff.bottles) thisbottle = random.choice(diff.bottles)
pool.append(thisbottle) pool.append(thisbottle)
if want_progressives(): # if want_progressives():
pool.extend(diff.progressiveshield) # pool.extend(diff.progressiveshield)
else: # else:
pool.extend(diff.basicshield) # pool.extend(diff.basicshield)
if want_progressives(): if want_progressives():
pool.extend(diff.progressivearmor) pool.extend(diff.progressivearmor)

View File

@@ -134,9 +134,9 @@ item_table = {'Bow': (True, False, None, 0x0B, 200, 'Bow!\nJoin the archer class
'Big Key (Agahnims Tower)': (False, False, 'BigKey', 0x9B, 60, 'A big key for\nAgahnim\'s Tower', 'and the big key', 'the big-unlock kid', 'big key for sale', 'face key fungus', 'key boy opens chest again', 'a big key to Castle Tower'), 'Big Key (Agahnims Tower)': (False, False, 'BigKey', 0x9B, 60, 'A big key for\nAgahnim\'s Tower', 'and the big key', 'the big-unlock kid', 'big key for sale', 'face key fungus', 'key boy opens chest again', 'a big key to Castle Tower'),
'Compass (Agahnims Tower)': (False, True, 'Compass', 0x8B, 10, 'A compass for\nAgahnim\'s Tower', 'and the compass', 'the magnetic kid', 'compass for sale', 'magnetic fungus', 'compass boy finds null again', 'a compass to Castle Tower'), 'Compass (Agahnims Tower)': (False, True, 'Compass', 0x8B, 10, 'A compass for\nAgahnim\'s Tower', 'and the compass', 'the magnetic kid', 'compass for sale', 'magnetic fungus', 'compass boy finds null again', 'a compass to Castle Tower'),
'Map (Agahnims Tower)': (False, True, 'Map', 0x7B, 10, 'A tightly folded map rests here', 'and the map', 'cartography kid', 'map for sale', 'a map to shrooms', 'map boy navigates again', 'a map to Castle Tower'), 'Map (Agahnims Tower)': (False, True, 'Map', 0x7B, 10, 'A tightly folded map rests here', 'and the map', 'cartography kid', 'map for sale', 'a map to shrooms', 'map boy navigates again', 'a map to Castle Tower'),
'Small Key (Palace of Darkness)': (False, False, 'SmallKey', 0xA6, 40, 'A small key for\nDark Palace', 'and the key', 'the unlocking kid', 'keys for sale', 'unlock the fungus', 'key boy opens door again', 'a small key to Palace of Darkness'), 'Small Key (Palace of Darkness)': (False, False, 'SmallKey', 0xA6, 40, 'A small key for\nPalace of Darkness', 'and the key', 'the unlocking kid', 'keys for sale', 'unlock the fungus', 'key boy opens door again', 'a small key to Palace of Darkness'),
'Big Key (Palace of Darkness)': (False, False, 'BigKey', 0x99, 60, 'A big key for\nDark Palace', 'and the big key', 'the big-unlock kid', 'big key for sale', 'face key fungus', 'key boy opens chest again', 'a big key to Palace of Darkness'), 'Big Key (Palace of Darkness)': (False, False, 'BigKey', 0x99, 60, 'A big key for\nPalace of Darkness', 'and the big key', 'the big-unlock kid', 'big key for sale', 'face key fungus', 'key boy opens chest again', 'a big key to Palace of Darkness'),
'Compass (Palace of Darkness)': (False, True, 'Compass', 0x89, 10, 'A compass for\nDark Palace', 'and the compass', 'the magnetic kid', 'compass for sale', 'magnetic fungus', 'compass boy finds boss again', 'a compass to Palace of Darkness'), 'Compass (Palace of Darkness)': (False, True, 'Compass', 0x89, 10, 'A compass for\nPalace of Darkness', 'and the compass', 'the magnetic kid', 'compass for sale', 'magnetic fungus', 'compass boy finds boss again', 'a compass to Palace of Darkness'),
'Map (Palace of Darkness)': (False, True, 'Map', 0x79, 20, 'A tightly folded map rests here', 'and the map', 'cartography kid', 'map for sale', 'a map to shrooms', 'map boy navigates again', 'a map to Palace of Darkness'), 'Map (Palace of Darkness)': (False, True, 'Map', 0x79, 20, 'A tightly folded map rests here', 'and the map', 'cartography kid', 'map for sale', 'a map to shrooms', 'map boy navigates again', 'a map to Palace of Darkness'),
'Small Key (Thieves Town)': (False, False, 'SmallKey', 0xAB, 40, 'A small key for\nThieves Town', 'and the key', 'the unlocking kid', 'keys for sale', 'unlock the fungus', 'key boy opens door again', 'a small key to Thieves\' Town'), 'Small Key (Thieves Town)': (False, False, 'SmallKey', 0xAB, 40, 'A small key for\nThieves Town', 'and the key', 'the unlocking kid', 'keys for sale', 'unlock the fungus', 'key boy opens door again', 'a small key to Thieves\' Town'),
'Big Key (Thieves Town)': (False, False, 'BigKey', 0x94, 60, 'A big key for\nThieves Town', 'and the big key', 'the big-unlock kid', 'big key for sale', 'face key fungus', 'key boy opens chest again', 'a big key to Thieves\' Town'), 'Big Key (Thieves Town)': (False, False, 'BigKey', 0x94, 60, 'A big key for\nThieves Town', 'and the big key', 'the big-unlock kid', 'big key for sale', 'face key fungus', 'key boy opens chest again', 'a big key to Thieves\' Town'),

View File

@@ -1291,9 +1291,6 @@ def create_playthrough(world):
for location in sphere: for location in sphere:
if world.goal[location.player] == 'completionist': if world.goal[location.player] == 'completionist':
continue # every location for that player is required continue # every location for that player is required
if location.item.type == "SmallKey":
continue
# we remove the item at location and check if game is still beatable # we remove the item at location and check if game is still beatable
logging.getLogger('').debug('Checking if %s (Player %d) is required to beat the game.', location.item.name, location.item.player) logging.getLogger('').debug('Checking if %s (Player %d) is required to beat the game.', location.item.name, location.item.player)
old_item = location.item old_item = location.item

View File

@@ -509,7 +509,7 @@ boots_clips = [
mirror_clips_local = [ mirror_clips_local = [
('Desert East Mirror Clip', 'Mire Area', 'Desert Mouth'), ('Desert East Mirror Clip', 'Mire Area', 'Desert Mouth'),
('EDDM Mirror Clip', 'East Dark Death Mountain (Bottom Left)', 'East Dark Death Mountain (Bottom)'), ('EDDM Bridge Mirror Clip', 'East Dark Death Mountain (Bottom Left)', 'East Dark Death Mountain (Bottom)'),
('EDDM Mirror Clip', 'East Dark Death Mountain (Top)', 'Dark Death Mountain Ledge') ('EDDM Mirror Clip', 'East Dark Death Mountain (Top)', 'Dark Death Mountain Ledge')
] ]
@@ -520,4 +520,4 @@ mirror_clips = [
mirror_offsets = [ mirror_offsets = [
(['DM Offset Mirror', 'DDM Offset Mirror'], ['West Death Mountain (Bottom)', 'West Dark Death Mountain (Bottom)'], ['Hyrule Castle Courtyard Northeast', 'Pyramid Crack'], ['Pyramid Area', 'Hyrule Castle Courtyard']), (['DM Offset Mirror', 'DDM Offset Mirror'], ['West Death Mountain (Bottom)', 'West Dark Death Mountain (Bottom)'], ['Hyrule Castle Courtyard Northeast', 'Pyramid Crack'], ['Pyramid Area', 'Hyrule Castle Courtyard']),
(['DM To HC Ledge Offset Mirror', 'DDM To Pyramid Offset Mirror'], ['West Death Mountain (Bottom)', 'West Dark Death Mountain (Bottom)'], ['Hyrule Castle Ledge', 'Pyramid Area'], ['Pyramid Area', 'Hyrule Castle Area']) (['DM To HC Ledge Offset Mirror', 'DDM To Pyramid Offset Mirror'], ['West Death Mountain (Bottom)', 'West Dark Death Mountain (Bottom)'], ['Hyrule Castle Ledge', 'Pyramid Area'], ['Pyramid Area', 'Hyrule Castle Area'])
] ]

View File

@@ -1178,7 +1178,7 @@ def create_shops(world, player):
if (world.is_tile_swapped(0x35, player) and region_name == 'Dark Lake Hylia Shop') \ if (world.is_tile_swapped(0x35, player) and region_name == 'Dark Lake Hylia Shop') \
or (not world.is_tile_swapped(0x35, player) and region_name == 'Lake Hylia Shop'): or (not world.is_tile_swapped(0x35, player) and region_name == 'Lake Hylia Shop'):
locked = True locked = True
inventory = [('Blue Potion', 160), ('Blue Shield', 50), ('Bombs (10)', 50)] inventory = [('Blue Potion', 160), ('Small Heart', 10), ('Bombs (10)', 50)]
custom = True custom = True
region = world.get_region(region_name, player) region = world.get_region(region_name, player)
shop = Shop(region, room_id, type, shopkeeper, custom, locked, sram) shop = Shop(region, room_id, type, shopkeeper, custom, locked, sram)
@@ -1366,11 +1366,11 @@ bonk_table_by_location = {y: x for x, y in bonk_table_by_location_id.items()}
# (room_id, type, shopkeeper, custom, locked, [items]) # (room_id, type, shopkeeper, custom, locked, [items])
# item = (item, price, max=0, replacement=None, replacement_price=0) # item = (item, price, max=0, replacement=None, replacement_price=0)
_basic_shop_defaults = [('Red Potion', 150), ('Small Heart', 10), ('Bombs (10)', 50)] _basic_shop_defaults = [('Red Potion', 150), ('Small Heart', 10), ('Bombs (10)', 50)]
_dark_world_shop_defaults = [('Red Potion', 150), ('Blue Shield', 50), ('Bombs (10)', 50)] _dark_world_shop_defaults = [('Red Potion', 150), ('Small Heart', 10), ('Bombs (10)', 50)]
shop_table = { shop_table = {
'Dark Death Mountain Shop': (0x0112, ShopType.Shop, 0xC1, False, False, _basic_shop_defaults, 0), 'Dark Death Mountain Shop': (0x0112, ShopType.Shop, 0xC1, False, False, _basic_shop_defaults, 0),
'Red Shield Shop': (0x0110, ShopType.Shop, 0xC1, False, False, 'Red Shield Shop': (0x0110, ShopType.Shop, 0xC1, False, False,
[('Red Shield', 500), ('Bee', 10), ('Arrows (10)', 30)], 3), [('Bombs (10)', 50), ('Bee', 10), ('Arrows (10)', 30)], 3),
'Dark Lake Hylia Shop': (0x010F, ShopType.Shop, 0xC1, False, False, _dark_world_shop_defaults, 6), 'Dark Lake Hylia Shop': (0x010F, ShopType.Shop, 0xC1, False, False, _dark_world_shop_defaults, 6),
'Dark Lumberjack Shop': (0x010F, ShopType.Shop, 0xC1, False, False, _dark_world_shop_defaults, 9), 'Dark Lumberjack Shop': (0x010F, ShopType.Shop, 0xC1, False, False, _dark_world_shop_defaults, 9),
'Village of Outcasts Shop': (0x010F, ShopType.Shop, 0xC1, False, False, _dark_world_shop_defaults, 12), 'Village of Outcasts Shop': (0x010F, ShopType.Shop, 0xC1, False, False, _dark_world_shop_defaults, 12),

68
Rom.py
View File

@@ -85,7 +85,7 @@ from Utils import int16_as_bytes, int32_as_bytes, local_path, snes_to_pc
from Versions import DRVersion, GKVersion, ORVersion from Versions import DRVersion, GKVersion, ORVersion
JAP10HASH = '03a63945398191337e896e5771f77173' JAP10HASH = '03a63945398191337e896e5771f77173'
RANDOMIZERBASEHASH = '100c3e1da68680a0f3d8e1fc94568de6' RANDOMIZERBASEHASH = '13a0b87bf037dbc378073f6b5b97d297'
class JsonRom(object): class JsonRom(object):
@@ -737,8 +737,8 @@ def patch_rom(world, rom, player, team, is_mystery=False, rom_header=None):
dr_flags = DROptions.NoOptions dr_flags = DROptions.NoOptions
if world.mirrorscroll[player] or world.doorShuffle[player] != 'vanilla': if world.mirrorscroll[player] or world.doorShuffle[player] != 'vanilla':
dr_flags |= DROptions.Town_Portal dr_flags |= DROptions.Town_Portal
if world.doorShuffle[player] == 'vanilla': # if world.doorShuffle[player] == 'vanilla':
dr_flags |= DROptions.Eternal_Mini_Bosses # dr_flags |= DROptions.Eternal_Mini_Bosses
if world.doorShuffle[player] not in ['vanilla', 'basic']: if world.doorShuffle[player] not in ['vanilla', 'basic']:
dr_flags |= DROptions.Map_Info dr_flags |= DROptions.Map_Info
if ((world.collection_rate[player] or world.goal[player] == 'completionist') if ((world.collection_rate[player] or world.goal[player] == 'completionist')
@@ -948,7 +948,7 @@ def patch_rom(world, rom, player, team, is_mystery=False, rom_header=None):
rom.write_byte(cr_pc+0x1e, 0xEE) # slash rom.write_byte(cr_pc+0x1e, 0xEE) # slash
rom.write_byte(cr_pc+0x1f, thousands_bot) rom.write_byte(cr_pc+0x1f, thousands_bot)
# modify stat config # modify stat config
stat_address = 0x23983E stat_address = 0x2398B0
stat_pc = snes_to_pc(stat_address) stat_pc = snes_to_pc(stat_address)
rom.write_byte(stat_pc, 0xa9) # change to pos 21 (from b1) rom.write_byte(stat_pc, 0xa9) # change to pos 21 (from b1)
rom.write_byte(stat_pc+2, 0xc0) # change to 12 bits (from a0) rom.write_byte(stat_pc+2, 0xc0) # change to 12 bits (from a0)
@@ -1007,6 +1007,10 @@ def patch_rom(world, rom, player, team, is_mystery=False, rom_header=None):
rom.write_bytes(0x6D31B, [0x00, 0x00, 0xe4, 0xff, 0x08, 0x0E]) rom.write_bytes(0x6D31B, [0x00, 0x00, 0xe4, 0xff, 0x08, 0x0E])
rom.write_bytes(0x6D323, [0x00, 0x00, 0xe4, 0xff, 0x08, 0x0E]) rom.write_bytes(0x6D323, [0x00, 0x00, 0xe4, 0xff, 0x08, 0x0E])
bridge_item = world.get_location("Hobo", player).item
if bridge_item is None or not bridge_item.name.startswith("Bottle"):
rom.write_bytes(0x1E9C0, [0xFB, 0xFF, 0x03, 0x00, 0xAB, 0x00, 0x00, 0x00])
# set light cones # set light cones
if world.dark_rooms[player] == 'no_dark_rooms': if world.dark_rooms[player] == 'no_dark_rooms':
light_cone = 0x20 light_cone = 0x20
@@ -1497,37 +1501,40 @@ def patch_rom(world, rom, player, team, is_mystery=False, rom_header=None):
loot_source = 0x09 loot_source = 0x09
if world.prizeshuffle[player] != 'none': if world.prizeshuffle[player] != 'none':
loot_source |= 0x10 loot_source |= 0x10
if world.pottery[player] not in ['none', 'cave']: if world.pottery[player] != 'none':
loot_source |= 0x02 loot_source |= 0x02
if world.dropshuffle[player] != 'none': if world.dropshuffle[player] != 'none':
loot_source |= 0x04 loot_source |= 0x04
rom.write_byte(0x1CFF10, loot_source) rom.write_byte(0x1CFF20, loot_source)
if world.loothud[player] == 'never': if world.loothud[player] == 'never':
rom.write_byte(0x1CFF12, 0x00) rom.write_bytes(0x1CFF10, [0x00, 0x00, 0x00, 0x00])
rom.write_byte(0x1CFF17, 0x00)
elif world.loothud[player] == 'presence': elif world.loothud[player] == 'presence':
rom.write_byte(0x1CFF12, 0x01) rom.write_bytes(0x1CFF10, [0x01, 0x01, 0x00, 0x00])
rom.write_bytes(0x1CFF0E, [0x01, 0x01]) rom.write_byte(0x1CFF17, 0x01)
elif world.loothud[player] == 'value': elif world.loothud[player] == 'value':
rom.write_byte(0x1CFF12, 0x01) rom.write_bytes(0x1CFF10, [0x03, 0x03, 0x00, 0x00])
rom.write_bytes(0x1CFF0E, [0xFF, 0xFF]) rom.write_byte(0x1CFF17, 0x01)
elif world.loothud[player] == 'dungeon_value': elif world.loothud[player] == 'dungeon_value':
rom.write_byte(0x1CFF12, 0x01) rom.write_bytes(0x1CFF10, [0x01, 0x03, 0x00, 0x00])
rom.write_bytes(0x1CFF0E, [0xFF, 0x01]) rom.write_byte(0x1CFF17, 0x01)
elif world.loothud[player] == 'cave_value':
rom.write_bytes(0x1CFF10, [0x03, 0x01, 0x00, 0x00])
rom.write_byte(0x1CFF17, 0x01)
if world.showloot[player] == 'never': if world.showloot[player] == 'never':
rom.write_bytes(0x1CFF08, [0x00, 0x00, 0x00, 0x00]) rom.write_bytes(0x1CFF08, [0x00, 0x00, 0x00, 0x00])
rom.write_byte(0x1CFF11, 0x00) rom.write_byte(0x1CFF0F, 0x00)
rom.write_byte(0x1CFF12, 0x00) # turn off hud icon too just to be safe
elif world.showloot[player] == 'presence': elif world.showloot[player] == 'presence':
rom.write_bytes(0x1CFF08, [0x01, 0x00, 0x00, 0x00]) rom.write_bytes(0x1CFF08, [0x01, 0x00, 0x00, 0x00])
rom.write_byte(0x1CFF11, 0x00) rom.write_byte(0x1CFF0F, 0x01)
elif world.showloot[player] == 'compass': elif world.showloot[player] == 'compass':
rom.write_bytes(0x1CFF08, [0x01, 0x00, 0x02, 0x00]) rom.write_bytes(0x1CFF08, [0x02, 0x00, 0x03, 0x00])
rom.write_byte(0x1CFF11, 0x01) rom.write_byte(0x1CFF0F, 0x01)
elif world.showloot[player] == 'always': elif world.showloot[player] == 'always':
rom.write_bytes(0x1CFF08, [0x02, 0x00, 0x00, 0x00]) rom.write_bytes(0x1CFF08, [0x03, 0x00, 0x00, 0x00])
rom.write_byte(0x1CFF11, 0x00) rom.write_byte(0x1CFF0F, 0x01)
if world.showmap[player] == 'visited': if world.showmap[player] == 'visited':
rom.write_bytes(0x1CFF00, [0x01, 0x00, 0x00, 0x05]) rom.write_bytes(0x1CFF00, [0x01, 0x00, 0x00, 0x05])
@@ -1541,7 +1548,7 @@ def patch_rom(world, rom, player, team, is_mystery=False, rom_header=None):
rom.write_byte(loot_icons + 0x52, 0x0B) # bomb bag is major rom.write_byte(loot_icons + 0x52, 0x0B) # bomb bag is major
triforce_piece_ids = [0x6B, 0x6C] triforce_piece_ids = [0x6B, 0x6C]
if world.treasure_hunt_count[player] > 20: if world.treasure_hunt_count[player] > 100:
for triforce_piece_id in triforce_piece_ids: for triforce_piece_id in triforce_piece_ids:
rom.write_byte(loot_icons + triforce_piece_id, 0x04) rom.write_byte(loot_icons + triforce_piece_id, 0x04)
@@ -1779,7 +1786,7 @@ def patch_rom(world, rom, player, team, is_mystery=False, rom_header=None):
rom.write_byte(0x180358, 0x01 if glitches_enabled else 0x00) rom.write_byte(0x180358, 0x01 if glitches_enabled else 0x00)
rom.write_byte(0x18008B, 0x01 if glitches_enabled else 0x00) rom.write_byte(0x18008B, 0x01 if glitches_enabled else 0x00)
if uncle_location.item is None or uncle_location.item.name not in ['Sword and Shield']: if uncle_location.item is None or uncle_location.item.name not in ['Blue Shield', 'Red Shield', 'Mirror Shield', 'Progressive Shield', 'Sword and Shield']:
# remove shield from uncle # remove shield from uncle
rom.write_bytes(0x6D253, [0x00, 0x00, 0xf6, 0xff, 0x00, 0x0E]) rom.write_bytes(0x6D253, [0x00, 0x00, 0xf6, 0xff, 0x00, 0x0E])
rom.write_bytes(0x6D25B, [0x00, 0x00, 0xf6, 0xff, 0x00, 0x0E]) rom.write_bytes(0x6D25B, [0x00, 0x00, 0xf6, 0xff, 0x00, 0x0E])
@@ -2485,6 +2492,15 @@ def write_strings(rom, world, player, team, is_mystery=False):
# For hints, first we write hints about entrances, some from the inconvenient list others from all reasonable entrances. # For hints, first we write hints about entrances, some from the inconvenient list others from all reasonable entrances.
if world.hints[player]: if world.hints[player]:
zoraitem = world.get_location('King Zora', player).item.hint_text
if len(zoraitem) <= 15:
tt['zora_meeting'] = f"Whaddaya want?\n{zoraitem.title()}\n Nothin'{{CHOICE}}"
else:
tt['zora_meeting'] = f"Do you want {zoraitem}?\n ≥ I'll pay\n No thanks{{CHOICE}}"
bottleitem = world.get_location('Bottle Merchant', player).item.hint_text
tt['bottle_vendor_choice'] = f"Do you want {bottleitem}?\n ≥ I'll take it\n No thanks!\n{{CHOICE}}"
tt['sign_north_of_links_house'] = '> Randomizer The telepathic tiles can have hints!' tt['sign_north_of_links_house'] = '> Randomizer The telepathic tiles can have hints!'
hint_locations = HintLocations.copy() hint_locations = HintLocations.copy()
random.shuffle(hint_locations) random.shuffle(hint_locations)
@@ -2962,7 +2978,7 @@ def write_strings(rom, world, player, team, is_mystery=False):
+ "{PAUSE3} {CHANGEPIC}\nGanon has moved around all the items in Hyrule." + "{PAUSE3} {CHANGEPIC}\nGanon has moved around all the items in Hyrule."
+ "{PAUSE7}\nYou will have to find all the items necessary to achieve your goal." + "{PAUSE7}\nYou will have to find all the items necessary to achieve your goal."
+ "{PAUSE7}\nThis is your chance to be a hero." + "{PAUSE7}\nThis is your chance to be a hero."
+ "{PAUSE3} {CHANGEPIC}\nYou must determine and achieve your goal." + "{PAUSE3} {CHANGEPIC}\nGood luck out there, and try not to die."
+ "{PAUSE9} {CHANGEPIC}", False) + "{PAUSE9} {CHANGEPIC}", False)
elif world.mode[player] == 'inverted': elif world.mode[player] == 'inverted':
tt['intro_main'] = CompressedTextMapper.convert( tt['intro_main'] = CompressedTextMapper.convert(
@@ -3037,9 +3053,9 @@ def text_for_item(item, world, player, team):
def init_open_mode_sram(rom): def init_open_mode_sram(rom):
rom.initial_sram.pre_open_castle_gate() rom.initial_sram.pre_open_castle_gate()
rom.initial_sram.set_progress_indicator(0x02) rom.initial_sram.set_progress_indicator(0x00)
rom.initial_sram.set_progress_flags(0x14) rom.initial_sram.set_progress_flags(0x04)
rom.initial_sram.set_starting_entrance(0x01) rom.initial_sram.set_starting_entrance(0x00)
def init_standard_mode_sram(rom): def init_standard_mode_sram(rom):
rom.initial_sram.set_progress_indicator(0x00) rom.initial_sram.set_progress_indicator(0x00)

53
Text.py
View File

@@ -376,31 +376,30 @@ Sahasrahla_names = [
Kakariko_texts = ["{}'s homecoming"] Kakariko_texts = ["{}'s homecoming"]
Blacksmiths_texts = [ Blacksmiths_texts = [
'frogs for bread', "Frogs for bread",
'That\'s not a sword', "That's not a sword",
'The Rupeesmiths' "The rupeesmiths",
] * 1 + [ "The dwarven breadsmiths",
"the dwarven breadsmiths"
] ]
DeathMountain_texts = [ DeathMountain_texts = [
"the lost old man", "The lost old man",
"gary the old man", "Gary the old man",
"Your ad here" "Your ad here",
] ]
LostWoods_texts = [ LostWoods_texts = [
'thieves\' stump', "Thieves' stump",
] * 2 + [ "Thieves' stump",
"the forest thief", "The forest thief",
"dancing pickles", "Dancing pickles",
"flying crows", "Flying crows",
] ]
WishingWell_texts = [ WishingWell_texts = [
"venus. queen of faeries", "Venus, Queen of Faeries",
"Venus was her name", "Venus was her name",
"I'm your Venus", "I'm your Venus",
"Yeah, baby, shes got it", "Yeah, baby, she's got it",
"Venus, I'm your fire", "Venus, I'm your fire",
"Venus, At your desire", "Venus, at your desire",
"Venus Love Chain", "Venus Love Chain",
"Venus Crescent Beam", "Venus Crescent Beam",
] ]
@@ -1566,7 +1565,6 @@ class TextTable(object):
'hylian_text_2', 'hylian_text_2',
'desert_entry_translated', 'desert_entry_translated',
'uncle_dying_sewer', 'uncle_dying_sewer',
'telepathic_intro',
'desert_thief_sitting', 'desert_thief_sitting',
'desert_thief_following', 'desert_thief_following',
'desert_thief_question', 'desert_thief_question',
@@ -1610,7 +1608,7 @@ class TextTable(object):
text['zelda_save_sewers'] = CompressedTextMapper.convert("You saved me!") text['zelda_save_sewers'] = CompressedTextMapper.convert("You saved me!")
text['priest_info'] = CompressedTextMapper.convert("So, I'm the dude that will protect Zelda. Don't worry, I got this covered.") text['priest_info'] = CompressedTextMapper.convert("So, I'm the dude that will protect Zelda. Don't worry, I got this covered.")
text['zelda_sanctuary_before_leave'] = CompressedTextMapper.convert("Be careful!") text['zelda_sanctuary_before_leave'] = CompressedTextMapper.convert("Be careful!")
text['telepathic_intro'] = CompressedTextMapper.convert("{NOBORDER}\n{SPEED6}\nHey, come find me and help me!") text['telepathic_intro'] = CompressedTextMapper.convert("{NOBORDER}\n{SPEED6}\n\nBring me shields...")
# 20 # 20
text['telepathic_reminder'] = CompressedTextMapper.convert("{NOBORDER}\n{SPEED6}\nI'm in the castle basement.") text['telepathic_reminder'] = CompressedTextMapper.convert("{NOBORDER}\n{SPEED6}\nI'm in the castle basement.")
text['zelda_go_to_throne'] = CompressedTextMapper.convert("Go north to the throne.") text['zelda_go_to_throne'] = CompressedTextMapper.convert("Go north to the throne.")
@@ -1766,7 +1764,7 @@ class TextTable(object):
text['sign_catfish'] = CompressedTextMapper.convert("Toss rocks\nToss items\nToss cookies") text['sign_catfish'] = CompressedTextMapper.convert("Toss rocks\nToss items\nToss cookies")
text['sign_north_village_of_outcasts'] = CompressedTextMapper.convert("↑ Skull Woods\n\n↓ Steve's Town") text['sign_north_village_of_outcasts'] = CompressedTextMapper.convert("↑ Skull Woods\n\n↓ Steve's Town")
text['sign_south_of_bumper_cave'] = CompressedTextMapper.convert("\n→ Karkats cave") text['sign_south_of_bumper_cave'] = CompressedTextMapper.convert("\n→ Karkats cave")
text['sign_east_of_pyramid'] = CompressedTextMapper.convert("\n Dark Palace") text['sign_east_of_pyramid'] = CompressedTextMapper.convert("\n→ Palace of Darkness")
text['sign_east_of_bomb_shop'] = CompressedTextMapper.convert("\n← Bomb Shoppe") text['sign_east_of_bomb_shop'] = CompressedTextMapper.convert("\n← Bomb Shoppe")
text['sign_east_of_mire'] = CompressedTextMapper.convert("\n← Misery Mire\n no way in.\n no way out.") text['sign_east_of_mire'] = CompressedTextMapper.convert("\n← Misery Mire\n no way in.\n no way out.")
text['sign_village_of_outcasts'] = CompressedTextMapper.convert("Have a Trulie Awesome Day!") text['sign_village_of_outcasts'] = CompressedTextMapper.convert("Have a Trulie Awesome Day!")
@@ -1870,7 +1868,7 @@ class TextTable(object):
# 100 # 100
text['dark_sanctuary_no'] = CompressedTextMapper.convert("Then go away!") text['dark_sanctuary_no'] = CompressedTextMapper.convert("Then go away!")
text['dark_sanctuary_hint_1'] = CompressedTextMapper.convert("There is a thief in the desert, he can open creepy chests that follow you. But now that we have that out of the way, Do you like my hair? I've spent eons getting it this way.") text['dark_sanctuary_hint_1'] = CompressedTextMapper.convert("There is a thief in the desert, he can open creepy chests that follow you. But now that we have that out of the way, Do you like my hair? I've spent eons getting it this way.")
text['dark_sanctuary_yes'] = CompressedTextMapper.convert("With Crystals 5&6, you can find a great fairy in the pyramid.\n\nFlomp Flomp, Whizzle Whomp") text['dark_sanctuary_yes'] = CompressedTextMapper.convert("With crystals 5 and 6, you can find a great fairy in the pyramid.\n\nFlomp Flomp, Whizzle Whomp")
text['dark_sanctuary_hint_2'] = CompressedTextMapper.convert( text['dark_sanctuary_hint_2'] = CompressedTextMapper.convert(
"All I can say is that my life is pretty plain,\n" "All I can say is that my life is pretty plain,\n"
+ "I like watchin' the puddles gather rain,\n" + "I like watchin' the puddles gather rain,\n"
@@ -1897,13 +1895,13 @@ class TextTable(object):
+ "{PAUSE3}\n A Link to the Past" + "{PAUSE3}\n A Link to the Past"
+ "{PAUSE3}\n Randomizer" + "{PAUSE3}\n Randomizer"
+ "{PAUSE3}\n\n\n" + "{PAUSE3}\n\n\n"
+ "{PAUSE3}\nAfter mostly disregarding what happened in the first two games," + "{PAUSE3}\nAfter mostly disregarding and abandoning all sense of reason,"
+ "{PAUSE3}\nLink awakens to his uncle leaving the house." + "{PAUSE3}\nLink awakens to find a hungry pikit."
+ "{PAUSE3}\nHe just runs out the door, into the rainy night." + "{PAUSE3}\n\nHe must go look for shields, out in the rainy night."
+ "{PAUSE3} {CHANGEPIC}\nGanon has moved around all the items in Hyrule." + "{PAUSE3} {CHANGEPIC}\n\nGanon has hidden all the items inside shields."
+ "{PAUSE7}\nYou will have to find all the items necessary to beat Ganon." + "{PAUSE7}\n\nYou will have to collect the shields to feed your pikit."
+ "{PAUSE7}\nThis is your chance to be a hero." + "{PAUSE7}\n\nThis is your chance to be a hero.\n"
+ "{PAUSE3} {CHANGEPIC}\nYou must get the 7 crystals to beat Ganon." + "{PAUSE3} {CHANGEPIC}\nYou must keep your pikit well-fed.\n\n"
+ "{PAUSE9} {CHANGEPIC}", False) + "{PAUSE9} {CHANGEPIC}", False)
text['intro_throne_room'] = CompressedTextMapper.convert("{IBOX}\nLook at this Stalfos on the throne.", False) text['intro_throne_room'] = CompressedTextMapper.convert("{IBOX}\nLook at this Stalfos on the throne.", False)
text['intro_zelda_cell'] = CompressedTextMapper.convert("{IBOX}\nIt is your time to shine!", False) text['intro_zelda_cell'] = CompressedTextMapper.convert("{IBOX}\nIt is your time to shine!", False)
@@ -2058,5 +2056,6 @@ class TextTable(object):
text['ganon_phase_3_silvers'] = CompressedTextMapper.convert("Oh no! Silver! My one true weakness!") text['ganon_phase_3_silvers'] = CompressedTextMapper.convert("Oh no! Silver! My one true weakness!")
text['murahdahla'] = CompressedTextMapper.convert("Hello @. I\nam Murahdahla, brother of\nSahasrahla and Aginah. Behold the power of\ninvisibility.\n{PAUSE3}\n… … …\nWait! You can see me? I knew I should have\nhidden in a hollow tree.") text['murahdahla'] = CompressedTextMapper.convert("Hello @. I\nam Murahdahla, brother of\nSahasrahla and Aginah. Behold the power of\ninvisibility.\n{PAUSE3}\n… … …\nWait! You can see me? I knew I should have\nhidden in a hollow tree.")
text['mastersword_pedestal_goal'] = CompressedTextMapper.convert("To claim thy reward, you must present all 3 Pendants of Virtue.") text['mastersword_pedestal_goal'] = CompressedTextMapper.convert("To claim thy reward, you must present all 3 Pendants of Virtue.")
text['already_have_shield'] = CompressedTextMapper.convert("You can't carry another shield...\nCome back later.")
text['end_pad_data'] = bytearray([0xfb]) text['end_pad_data'] = bytearray([0xfb])
text['terminator'] = bytearray([0xFF, 0xFF]) text['terminator'] = bytearray([0xFF, 0xFF])

Binary file not shown.

BIN
patches/2way_mirror.ips Normal file

Binary file not shown.

Binary file not shown.

BIN
patches/colordorm.ips Normal file

Binary file not shown.

BIN
patches/quiet_zora.ips Normal file

Binary file not shown.

View File

@@ -491,7 +491,8 @@
"never", "never",
"presence", "presence",
"value", "value",
"dungeon_value" "dungeon_value",
"cave_value"
] ]
}, },
"showmap": { "showmap": {

View File

@@ -1998,7 +1998,7 @@ def init_vanilla_sprites():
create_sprite(0x0103, EnemySprite.Drunkard, 0x00, 0, 0x06, 0x15) create_sprite(0x0103, EnemySprite.Drunkard, 0x00, 0, 0x06, 0x15)
create_sprite(0x0103, EnemySprite.AdultNpc, 0x00, 0, 0x0a, 0x1b) create_sprite(0x0103, EnemySprite.AdultNpc, 0x00, 0, 0x0a, 0x1b)
create_sprite(0x0103, EnemySprite.Innkeeper, 0x00, 0, 0x17, 0x17) create_sprite(0x0103, EnemySprite.Innkeeper, 0x00, 0, 0x17, 0x17)
create_sprite(0x0104, EnemySprite.UnclePriest, 0x00, 0, 0x1a, 0x17) create_sprite(0x0104, EnemySprite.Pikit, 0x00, 0, 0x1a, 0x18, never_drop=True, fix=True)
create_sprite(0x0105, EnemySprite.Wiseman, 0x00, 0, 0x07, 0x18) create_sprite(0x0105, EnemySprite.Wiseman, 0x00, 0, 0x07, 0x18)
create_sprite(0x0106, EnemySprite.Shopkeeper, 0x00, 0, 0x08, 0x1b) create_sprite(0x0106, EnemySprite.Shopkeeper, 0x00, 0, 0x08, 0x1b)
create_sprite(0x0107, EnemySprite.BonkItem, 0x00, 0, 0x03, 0x15) create_sprite(0x0107, EnemySprite.BonkItem, 0x00, 0, 0x03, 0x15)

View File

@@ -456,7 +456,7 @@ vanilla_sheets = [
(0x47, 0x49, 0x2B, 0x2D), (0x46, 0x49, 0x1C, 0x52), (0x00, 0x49, 0x1C, 0x52), (0x5D, 0x49, 0x00, 0x52), (0x47, 0x49, 0x2B, 0x2D), (0x46, 0x49, 0x1C, 0x52), (0x00, 0x49, 0x1C, 0x52), (0x5D, 0x49, 0x00, 0x52),
(0x46, 0x49, 0x13, 0x52), (0x4B, 0x4D, 0x4A, 0x5A), (0x47, 0x49, 0x1C, 0x52), (0x4B, 0x4D, 0x39, 0x36), (0x46, 0x49, 0x13, 0x52), (0x4B, 0x4D, 0x4A, 0x5A), (0x47, 0x49, 0x1C, 0x52), (0x4B, 0x4D, 0x39, 0x36),
(0x1F, 0x2C, 0x2E, 0x52), (0x1F, 0x2C, 0x2E, 0x1D), (0x2F, 0x2C, 0x2E, 0x52), (0x2F, 0x2C, 0x2E, 0x31), (0x1F, 0x2C, 0x2E, 0x52), (0x1F, 0x2C, 0x2E, 0x1D), (0x2F, 0x2C, 0x2E, 0x52), (0x2F, 0x2C, 0x2E, 0x31),
(0x1F, 0x1E, 0x30, 0x52), (0x51, 0x49, 0x13, 0x00), (0x4F, 0x49, 0x13, 0x50), (0x4F, 0x4D, 0x4A, 0x50), (0x1F, 0x1E, 0x30, 0x52), (0x51, 0x49, 0x13, 0x1B), (0x4F, 0x49, 0x13, 0x50), (0x4F, 0x4D, 0x4A, 0x50),
(0x4B, 0x49, 0x4C, 0x2B), (0x1F, 0x20, 0x22, 0x53), (0x55, 0x3D, 0x42, 0x43), (0x1F, 0x1E, 0x23, 0x52), (0x4B, 0x49, 0x4C, 0x2B), (0x1F, 0x20, 0x22, 0x53), (0x55, 0x3D, 0x42, 0x43), (0x1F, 0x1E, 0x23, 0x52),
(0x1F, 0x1E, 0x39, 0x3A), (0x1F, 0x1E, 0x3A, 0x3E), (0x1F, 0x1E, 0x3C, 0x3D), (0x40, 0x1E, 0x27, 0x3F), (0x1F, 0x1E, 0x39, 0x3A), (0x1F, 0x1E, 0x3A, 0x3E), (0x1F, 0x1E, 0x3C, 0x3D), (0x40, 0x1E, 0x27, 0x3F),
@@ -566,7 +566,7 @@ def setup_required_dungeon_groups(sheets, data_tables):
sheets[did(5)].add_sprite_to_sheet([75, 77, 74, 90], {0xf3, 0xff, 0x109, 0x10e, 0x10f, 0x110, 0x111, 0x112, sheets[did(5)].add_sprite_to_sheet([75, 77, 74, 90], {0xf3, 0xff, 0x109, 0x10e, 0x10f, 0x110, 0x111, 0x112,
0x11a, 0x11c, 0x11f, 0x122}) 0x11a, 0x11c, 0x11f, 0x122})
sheets[did(7)].add_sprite_to_sheet([75, 77, 57, 54], {0x8, 0x2c, 0x114, 0x115, 0x116}) # big fairies sheets[did(7)].add_sprite_to_sheet([75, 77, 57, 54], {0x8, 0x2c, 0x114, 0x115, 0x116}) # big fairies
sheets[did(13)].add_sprite_to_sheet([81, None, None, None], {0x55, 0x102, 0x104}) # uncle, sick kid sheets[did(13)].add_sprite_to_sheet([81, None, None, 27], {0x55, 0x102, 0x104}) # uncle, sick kid
sheets[did(14)].add_sprite_to_sheet([71, 73, 76, 80], {0x12, 0x105, 0x10a}) # wisemen sheets[did(14)].add_sprite_to_sheet([71, 73, 76, 80], {0x12, 0x105, 0x10a}) # wisemen
sheets[did(15)].add_sprite_to_sheet([79, 77, 74, 80], {0xf4, 0xf5, 0x101, 0x103, 0x106, 0x118, 0x119}) # more npcs sheets[did(15)].add_sprite_to_sheet([79, 77, 74, 80], {0xf4, 0xf5, 0x101, 0x103, 0x106, 0x118, 0x119}) # more npcs
sheets[did(18)].add_sprite_to_sheet([85, 61, 66, 67], {0x20, 0x30}) # aga alter, aga1 sheets[did(18)].add_sprite_to_sheet([85, 61, 66, 67], {0x20, 0x30}) # aga alter, aga1

View File

@@ -1,264 +0,0 @@
item_pool_adjust:
1:
"Bottle (Random)": -4
"Bottle": 4
"Fighter Sword": -1
"Blue Shield": -1
"Sword and Shield": 1
"Bombs (10)": -1
"Bombs (3)": 1
"Arrows (10)": -1
"Rupees (20)": 2
placements:
1:
"Master Sword Pedestal": Master Sword
"Mushroom": Mushroom
"Ether Tablet": Ether
"Spectacle Rock": Piece of Heart
"Old Man": Magic Mirror
"Floating Island": Piece of Heart
"King Zora": Flippers
"Zora's Ledge": Piece of Heart
"Bottle Merchant": Bottle
"Maze Race": Piece of Heart
"Flute Spot": Ocarina
"Hobo": Bottle
"Desert Ledge": Piece of Heart
"Bombos Tablet": Bombos
"Lake Hylia Island": Piece of Heart
"Purple Chest": Bottle
"Sunken Treasure": Piece of Heart
"Bumper Cave Ledge": Piece of Heart
"Catfish": Quake
"Pyramid": Piece of Heart
"Digging Game": Piece of Heart
"Stumpy": Shovel
"Lost Woods Hideout": Piece of Heart
"Lumberjack Tree": Piece of Heart
"Spectacle Rock Cave": Piece of Heart
"Spiral Cave": Rupees (50)
"Mimic Cave": Piece of Heart
"Paradox Cave Lower - Far Left": Rupees (20)
"Paradox Cave Lower - Left": Rupees (20)
"Paradox Cave Lower - Right": Rupees (20)
"Paradox Cave Lower - Far Right": Rupees (20)
"Paradox Cave Lower - Middle": Rupees (20)
"Paradox Cave Upper - Left": Bombs (3)
"Paradox Cave Upper - Right": Arrows (10)
"Waterfall Fairy - Left": Red Boomerang
"Waterfall Fairy - Right": Red Shield
"Bonk Rock Cave": Piece of Heart
"Graveyard Cave": Piece of Heart
"King's Tomb": Cape
"Potion Shop": Magic Powder
"Kakariko Well - Left": Rupees (20)
"Kakariko Well - Middle": Rupees (20)
"Kakariko Well - Right": Rupees (20)
"Kakariko Well - Bottom": Bombs (3)
"Kakariko Well - Top": Piece of Heart
"Blind's Hideout - Left": Rupees (20)
"Blind's Hideout - Right": Rupees (20)
"Blind's Hideout - Far Left": Rupees (20)
"Blind's Hideout - Far Right": Rupees (20)
"Blind's Hideout - Top": Piece of Heart
"Chicken House": Arrows (10) # Blue Boomerang that turns into 10 arrows
"Sick Kid": Bug Catching Net
"Kakariko Tavern": Bottle
"Link's Uncle": Sword and Shield
"Secret Passage": Rupees (5) # Lamp that turns into blue rupee
"Sahasrahla's Hut - Left": Rupees (50)
"Sahasrahla's Hut - Middle": Bombs (3)
"Sahasrahla's Hut - Right": Rupees (50)
"Sahasrahla": Pegasus Boots
"Blacksmith": Tempered Sword
"Magic Bat": Magic Upgrade (1/2)
"Library": Book of Mudora
"Link's House": Rupees (5) # Lamp that turns into blue rupee
"Checkerboard Cave": Piece of Heart
"Aginah's Cave": Piece of Heart
"Cave 45": Piece of Heart
"Mini Moldorm Cave - Far Left": Bombs (3)
"Mini Moldorm Cave - Left": Rupees (20)
"Mini Moldorm Cave - Right": Rupees (20)
"Mini Moldorm Cave - Far Right": Arrows (10)
"Mini Moldorm Cave - Generous Guy": Rupees (300)
"Ice Rod Cave": Ice Rod
"Floodgate Chest": Bombs (3)
"Spike Cave": Cane of Byrna
"Hookshot Cave - Bottom Right": Rupees (50)
"Hookshot Cave - Top Right": Rupees (50)
"Hookshot Cave - Top Left": Rupees (50)
"Hookshot Cave - Bottom Left": Rupees (50)
"Superbunny Cave - Top": Bombs (3)
"Superbunny Cave - Bottom": Rupees (20)
"Chest Game": Piece of Heart
"C-Shaped House": Rupees (300)
"Brewery": Rupees (300) # Red Boomerang that turns into 300 rupees
"Pyramid Fairy - Left": Golden Sword
"Pyramid Fairy - Right": Silver Arrows
"Peg Cave": Piece of Heart
"Mire Shed - Left": Piece of Heart
"Mire Shed - Right": Rupees (20)
"Hype Cave - Top": Rupees (20)
"Hype Cave - Middle Right": Rupees (20)
"Hype Cave - Middle Left": Rupees (20)
"Hype Cave - Bottom": Rupees (20)
"Hype Cave - Generous Guy": Rupees (300)
"Hyrule Castle - Map Chest": Map (Escape)
"Hyrule Castle - Boomerang Chest": Blue Boomerang
"Hyrule Castle - Zelda's Chest": Lamp
"Sewers - Dark Cross": Small Key (Escape)
"Sewers - Secret Room - Left": Bombs (3)
"Sewers - Secret Room - Middle": Rupees (300)
"Sewers - Secret Room - Right": Arrows (10)
"Sanctuary": Sanctuary Heart Container
"Eastern Palace - Cannonball Chest": Rupees (100)
"Eastern Palace - Map Chest": Map (Eastern Palace)
"Eastern Palace - Compass Chest": Compass (Eastern Palace)
"Eastern Palace - Big Chest": Bow
"Eastern Palace - Big Key Chest": Big Key (Eastern Palace)
"Eastern Palace - Boss": Boss Heart Container
"Eastern Palace - Prize": Green Pendant
"Desert Palace - Compass Chest": Compass (Desert Palace)
"Desert Palace - Big Key Chest": Big Key (Desert Palace)
"Desert Palace - Map Chest": Map (Desert Palace)
"Desert Palace - Torch": Small Key (Desert Palace)
"Desert Palace - Big Chest": Power Glove
"Desert Palace - Boss": Boss Heart Container
"Desert Palace - Prize": Blue Pendant
"Tower of Hera - Map Chest": Map (Tower of Hera)
"Tower of Hera - Basement Cage": Small Key (Tower of Hera)
"Tower of Hera - Big Key Chest": Big Key (Tower of Hera)
"Tower of Hera - Compass Chest": Compass (Tower of Hera)
"Tower of Hera - Big Chest": Moon Pearl
"Tower of Hera - Boss": Boss Heart Container
"Tower of Hera - Prize": Red Pendant
"Castle Tower - Room 03": Small Key (Agahnims Tower)
"Castle Tower - Dark Maze": Small Key (Agahnims Tower)
"Palace of Darkness - Shooter Room": Small Key (Palace of Darkness)
"Palace of Darkness - The Arena - Bridge": Small Key (Palace of Darkness)
"Palace of Darkness - The Arena - Ledge": Small Key (Palace of Darkness)
"Palace of Darkness - Map Chest": Map (Palace of Darkness)
"Palace of Darkness - Stalfos Basement": Small Key (Palace of Darkness)
"Palace of Darkness - Big Key Chest": Big Key (Palace of Darkness)
"Palace of Darkness - Dark Maze - Top": Bombs (3)
"Palace of Darkness - Dark Maze - Bottom": Rupees (5)
# "Palace of Darkness - Dark Maze - Bottom": Small Key (Palace of Darkness)
"Palace of Darkness - Big Chest": Hammer
"Palace of Darkness - Compass Chest": Compass (Palace of Darkness)
"Palace of Darkness - Dark Basement - Left": Single Arrow
"Palace of Darkness - Dark Basement - Right": Small Key (Palace of Darkness)
"Palace of Darkness - Harmless Hellway": Small Key (Palace of Darkness)
# "Palace of Darkness - Harmless Hellway": Rupees (5)
"Palace of Darkness - Boss": Boss Heart Container
"Palace of Darkness - Prize": Crystal 1
"Swamp Palace - Entrance": Small Key (Swamp Palace)
"Swamp Palace - Map Chest": Map (Swamp Palace)
"Swamp Palace - Big Chest": Hookshot
"Swamp Palace - Compass Chest": Compass (Swamp Palace)
"Swamp Palace - Big Key Chest": Big Key (Swamp Palace)
"Swamp Palace - West Chest": Rupees (20)
"Swamp Palace - Flooded Room - Left": Rupees (20)
"Swamp Palace - Flooded Room - Right": Rupees (20)
"Swamp Palace - Waterfall Room": Rupees (20)
"Swamp Palace - Boss": Boss Heart Container
"Swamp Palace - Prize": Crystal 2
"Skull Woods - Map Chest": Map (Skull Woods)
"Skull Woods - Big Chest": Fire Rod
"Skull Woods - Pinball Room": Small Key (Skull Woods)
"Skull Woods - Pot Prison": Small Key (Skull Woods)
"Skull Woods - Compass Chest": Compass (Skull Woods)
"Skull Woods - Big Key Chest": Big Key (Skull Woods)
"Skull Woods - Bridge Room": Small Key (Skull Woods)
"Skull Woods - Boss": Boss Heart Container
"Skull Woods - Prize": Crystal 3
"Thieves' Town - Map Chest": Map (Thieves Town)
"Thieves' Town - Ambush Chest": Rupees (20)
"Thieves' Town - Compass Chest": Compass (Thieves Town)
"Thieves' Town - Big Key Chest": Big Key (Thieves Town)
"Thieves' Town - Attic": Bombs (3)
"Thieves' Town - Blind's Cell": Small Key (Thieves Town)
"Thieves' Town - Big Chest": Titans Mitts
"Thieves' Town - Boss": Boss Heart Container
"Thieves' Town - Prize": Crystal 4
"Ice Palace - Compass Chest": Compass (Ice Palace)
"Ice Palace - Big Key Chest": Big Key (Ice Palace)
"Ice Palace - Spike Room": Small Key (Ice Palace)
"Ice Palace - Map Chest": Map (Ice Palace)
"Ice Palace - Freezor Chest": Bombs (3)
"Ice Palace - Iced T Room": Small Key (Ice Palace)
"Ice Palace - Big Chest": Blue Mail
"Ice Palace - Boss": Boss Heart Container
"Ice Palace - Prize": Crystal 5
"Misery Mire - Main Lobby": Small Key (Misery Mire)
"Misery Mire - Big Chest": Cane of Somaria
"Misery Mire - Map Chest": Map (Misery Mire)
"Misery Mire - Spike Chest": Small Key (Misery Mire)
"Misery Mire - Bridge Chest": Small Key (Misery Mire)
"Misery Mire - Compass Chest": Compass (Misery Mire)
"Misery Mire - Big Key Chest": Big Key (Misery Mire)
"Misery Mire - Boss": Boss Heart Container
"Misery Mire - Prize": Crystal 6
"Turtle Rock - Compass Chest": Compass (Turtle Rock)
"Turtle Rock - Roller Room - Left": Map (Turtle Rock)
"Turtle Rock - Roller Room - Right": Small Key (Turtle Rock)
"Turtle Rock - Chain Chomps": Small Key (Turtle Rock)
"Turtle Rock - Big Key Chest": Big Key (Turtle Rock)
"Turtle Rock - Big Chest": Mirror Shield
"Turtle Rock - Crystaroller Room": Small Key (Turtle Rock)
"Turtle Rock - Eye Bridge - Bottom Left": Small Key (Turtle Rock)
"Turtle Rock - Eye Bridge - Bottom Right": Rupees (20)
"Turtle Rock - Eye Bridge - Top Left": Rupees (5)
"Turtle Rock - Eye Bridge - Top Right": Rupee (1)
"Turtle Rock - Boss": Boss Heart Container
"Turtle Rock - Prize": Crystal 7
"Ganons Tower - Bob's Torch": Small Key (Ganons Tower)
"Ganons Tower - Hope Room - Left": Arrows (10)
"Ganons Tower - Hope Room - Right": Bombs (3)
"Ganons Tower - Big Chest": Red Mail
"Ganons Tower - Bob's Chest": Arrows (10)
"Ganons Tower - Tile Room": Small Key (Ganons Tower)
"Ganons Tower - Compass Room - Top Left": Compass (Ganons Tower)
"Ganons Tower - Compass Room - Top Right": Rupee (1)
"Ganons Tower - Compass Room - Bottom Left": Rupees (20)
"Ganons Tower - Compass Room - Bottom Right": Arrows (10)
"Ganons Tower - Map Chest": Map (Ganons Tower)
"Ganons Tower - Firesnake Room": Small Key (Ganons Tower)
"Ganons Tower - DMs Room - Top Left": Bombs (3)
"Ganons Tower - DMs Room - Top Right": Arrows (10)
"Ganons Tower - DMs Room - Bottom Left": Rupees (20)
"Ganons Tower - DMs Room - Bottom Right": Rupees (20)
"Ganons Tower - Randomizer Room - Top Left": Arrows (10)
"Ganons Tower - Randomizer Room - Top Right": Arrows (10)
"Ganons Tower - Randomizer Room - Bottom Left": Bombs (3)
"Ganons Tower - Randomizer Room - Bottom Right": Bombs (3)
"Ganons Tower - Big Key Room - Left": Arrows (10)
"Ganons Tower - Big Key Room - Right": Bombs (3)
"Ganons Tower - Big Key Chest": Big Key (Ganons Tower)
"Ganons Tower - Mini Helmasaur Room - Left": Bombs (3)
"Ganons Tower - Mini Helmasaur Room - Right": Bombs (3)
"Ganons Tower - Pre-Moldorm Chest": Small Key (Ganons Tower)
"Ganons Tower - Validation Chest": Rupees (20)
drops:
1:
Pack 1: ["Small Heart", "Small Heart", "Small Heart", "Small Heart", "Rupee (1)", "Small Heart", "Small Heart", "Rupee (1)"]
Pack 2: ["Rupees (5)", "Rupee (1)", "Rupees (5)", "Rupees (20)", "Rupees (5)", "Rupee (1)", "Rupees (5)", "Rupees (5)"]
Pack 3: ["Big Magic", "Small Magic", "Small Magic", "Rupees (5)", "Big Magic", "Small Magic", "Small Heart", "Small Magic"]
Pack 4: ["Single Bomb", "Single Bomb", "Single Bomb", "Bombs (4)", "Single Bomb", "Single Bomb", "Bombs (8)", "Single Bomb"]
Pack 5: ["Arrows (5)", "Small Heart", "Arrows (5)", "Arrows (10)", "Arrows (5)", "Small Heart", "Arrows (5)", "Arrows (10)"]
Pack 6: ["Small Magic", "Rupee (1)", "Small Heart", "Arrows (5)", "Small Magic", "Single Bomb", "Rupee (1)", "Small Heart"]
Pack 7: ["Small Heart", "Fairy", "Big Magic", "Rupees (20)", "Bombs (8)", "Small Heart", "Rupees (20)", "Arrows (10)"]
Tree Pull Tier 1: "Rupee (1)"
Tree Pull Tier 2: "Rupees (5)"
Tree Pull Tier 3: "Rupees (20)"
Crab Normal: "Rupee (1)"
Crab Special: "Rupees (20)"
Stun Prize: "Rupee (1)"
Fish: "Rupees (20)"
medallions:
1:
"Misery Mire": Ether
"Turtle Rock": Quake

View File

@@ -1,265 +0,0 @@
item_pool_adjust:
1:
"Bottle (Random)": -4
"Bottle": 4
"Fighter Sword": -1
"Blue Shield": -1
"Sword and Shield": 1
"Bombs (10)": -1
"Bombs (3)": 1
"Arrows (10)": -1
"Rupees (20)": -8
"Small Key (Universal)": 5
placements:
1:
"Master Sword Pedestal": Master Sword
"Mushroom": Mushroom
"Ether Tablet": Ether
"Spectacle Rock": Piece of Heart
"Old Man": Magic Mirror
"Floating Island": Piece of Heart
"King Zora": Flippers
"Zora's Ledge": Piece of Heart
"Bottle Merchant": Bottle
"Maze Race": Piece of Heart
"Flute Spot": Ocarina
"Hobo": Bottle
"Desert Ledge": Piece of Heart
"Bombos Tablet": Bombos
"Lake Hylia Island": Piece of Heart
"Purple Chest": Bottle
"Sunken Treasure": Piece of Heart
"Bumper Cave Ledge": Piece of Heart
"Catfish": Quake
"Pyramid": Piece of Heart
"Digging Game": Piece of Heart
"Stumpy": Shovel
"Lost Woods Hideout": Piece of Heart
"Lumberjack Tree": Piece of Heart
"Spectacle Rock Cave": Piece of Heart
"Spiral Cave": Rupees (50)
"Mimic Cave": Piece of Heart
"Paradox Cave Lower - Far Left": Rupees (20)
"Paradox Cave Lower - Left": Rupees (20)
"Paradox Cave Lower - Right": Rupees (20)
"Paradox Cave Lower - Far Right": Rupees (20)
"Paradox Cave Lower - Middle": Rupees (20)
"Paradox Cave Upper - Left": Bombs (3)
"Paradox Cave Upper - Right": Arrows (10)
"Waterfall Fairy - Left": Red Boomerang
"Waterfall Fairy - Right": Red Shield
"Bonk Rock Cave": Piece of Heart
"Graveyard Cave": Piece of Heart
"King's Tomb": Cape
"Potion Shop": Magic Powder
"Kakariko Well - Left": Rupees (20)
"Kakariko Well - Middle": Rupees (20)
"Kakariko Well - Right": Rupees (20)
"Kakariko Well - Bottom": Bombs (3)
"Kakariko Well - Top": Piece of Heart
"Blind's Hideout - Left": Rupees (20)
"Blind's Hideout - Right": Rupees (20)
"Blind's Hideout - Far Left": Rupees (20)
"Blind's Hideout - Far Right": Rupees (20)
"Blind's Hideout - Top": Piece of Heart
"Chicken House": Arrows (10) # Blue Boomerang that turns into 10 arrows
"Sick Kid": Bug Catching Net
"Kakariko Tavern": Bottle
"Link's Uncle": Sword and Shield
"Secret Passage": Rupees (5) # Lamp that turns into blue rupee
"Sahasrahla's Hut - Left": Rupees (50)
"Sahasrahla's Hut - Middle": Bombs (3)
"Sahasrahla's Hut - Right": Rupees (50)
"Sahasrahla": Pegasus Boots
"Blacksmith": Tempered Sword
"Magic Bat": Magic Upgrade (1/2)
"Library": Book of Mudora
"Link's House": Rupees (5) # Lamp that turns into blue rupee
"Checkerboard Cave": Piece of Heart
"Aginah's Cave": Piece of Heart
"Cave 45": Piece of Heart
"Mini Moldorm Cave - Far Left": Bombs (3)
"Mini Moldorm Cave - Left": Rupees (20)
"Mini Moldorm Cave - Right": Rupees (20)
"Mini Moldorm Cave - Far Right": Arrows (10)
"Mini Moldorm Cave - Generous Guy": Rupees (300)
"Ice Rod Cave": Ice Rod
"Floodgate Chest": Bombs (3)
"Spike Cave": Cane of Byrna
"Hookshot Cave - Bottom Right": Rupees (50)
"Hookshot Cave - Top Right": Rupees (50)
"Hookshot Cave - Top Left": Rupees (50)
"Hookshot Cave - Bottom Left": Rupees (50)
"Superbunny Cave - Top": Bombs (3)
"Superbunny Cave - Bottom": Rupees (20)
"Chest Game": Piece of Heart
"C-Shaped House": Rupees (300)
"Brewery": Rupees (300) # Red Boomerang that turns into 300 rupees
"Pyramid Fairy - Left": Golden Sword
"Pyramid Fairy - Right": Silver Arrows
"Peg Cave": Piece of Heart
"Mire Shed - Left": Piece of Heart
"Mire Shed - Right": Rupees (20)
"Hype Cave - Top": Rupees (20)
"Hype Cave - Middle Right": Rupees (20)
"Hype Cave - Middle Left": Rupees (20)
"Hype Cave - Bottom": Rupees (20)
"Hype Cave - Generous Guy": Rupees (300)
"Hyrule Castle - Map Chest": Map (Escape)
"Hyrule Castle - Boomerang Chest": Blue Boomerang
"Hyrule Castle - Zelda's Chest": Lamp
"Sewers - Dark Cross": Small Key (Universal)
"Sewers - Secret Room - Left": Bombs (3)
"Sewers - Secret Room - Middle": Rupees (300)
"Sewers - Secret Room - Right": Arrows (10)
"Sanctuary": Sanctuary Heart Container
"Eastern Palace - Cannonball Chest": Rupees (100)
"Eastern Palace - Map Chest": Map (Eastern Palace)
"Eastern Palace - Compass Chest": Compass (Eastern Palace)
"Eastern Palace - Big Chest": Bow
"Eastern Palace - Big Key Chest": Big Key (Eastern Palace)
"Eastern Palace - Boss": Boss Heart Container
"Eastern Palace - Prize": Green Pendant
"Desert Palace - Compass Chest": Compass (Desert Palace)
"Desert Palace - Big Key Chest": Big Key (Desert Palace)
"Desert Palace - Map Chest": Map (Desert Palace)
"Desert Palace - Torch": Small Key (Universal)
"Desert Palace - Big Chest": Power Glove
"Desert Palace - Boss": Boss Heart Container
"Desert Palace - Prize": Blue Pendant
"Tower of Hera - Map Chest": Map (Tower of Hera)
"Tower of Hera - Basement Cage": Small Key (Universal)
"Tower of Hera - Big Key Chest": Big Key (Tower of Hera)
"Tower of Hera - Compass Chest": Compass (Tower of Hera)
"Tower of Hera - Big Chest": Moon Pearl
"Tower of Hera - Boss": Boss Heart Container
"Tower of Hera - Prize": Red Pendant
"Castle Tower - Room 03": Small Key (Universal)
"Castle Tower - Dark Maze": Small Key (Universal)
"Palace of Darkness - Shooter Room": Small Key (Universal)
"Palace of Darkness - The Arena - Bridge": Small Key (Universal)
"Palace of Darkness - The Arena - Ledge": Small Key (Universal)
"Palace of Darkness - Map Chest": Map (Palace of Darkness)
"Palace of Darkness - Stalfos Basement": Small Key (Universal)
"Palace of Darkness - Big Key Chest": Big Key (Palace of Darkness)
"Palace of Darkness - Dark Maze - Top": Bombs (3)
"Palace of Darkness - Dark Maze - Bottom": Small Key (Universal)
"Palace of Darkness - Big Chest": Hammer
"Palace of Darkness - Compass Chest": Compass (Palace of Darkness)
"Palace of Darkness - Dark Basement - Left": Single Arrow
"Palace of Darkness - Dark Basement - Right": Small Key (Universal)
"Palace of Darkness - Harmless Hellway": Rupees (5)
"Palace of Darkness - Boss": Boss Heart Container
"Palace of Darkness - Prize": Crystal 1
"Swamp Palace - Entrance": Small Key (Universal)
"Swamp Palace - Map Chest": Map (Swamp Palace)
"Swamp Palace - Big Chest": Hookshot
"Swamp Palace - Compass Chest": Compass (Swamp Palace)
"Swamp Palace - Big Key Chest": Big Key (Swamp Palace)
"Swamp Palace - West Chest": Rupees (20)
"Swamp Palace - Flooded Room - Left": Rupees (20)
"Swamp Palace - Flooded Room - Right": Rupees (20)
"Swamp Palace - Waterfall Room": Rupees (20)
"Swamp Palace - Boss": Boss Heart Container
"Swamp Palace - Prize": Crystal 2
"Skull Woods - Map Chest": Map (Skull Woods)
"Skull Woods - Big Chest": Fire Rod
"Skull Woods - Pinball Room": Small Key (Universal)
"Skull Woods - Pot Prison": Small Key (Universal)
"Skull Woods - Compass Chest": Compass (Skull Woods)
"Skull Woods - Big Key Chest": Big Key (Skull Woods)
"Skull Woods - Bridge Room": Small Key (Universal)
"Skull Woods - Boss": Boss Heart Container
"Skull Woods - Prize": Crystal 3
"Thieves' Town - Map Chest": Map (Thieves Town)
"Thieves' Town - Ambush Chest": Rupees (20)
"Thieves' Town - Compass Chest": Compass (Thieves Town)
"Thieves' Town - Big Key Chest": Big Key (Thieves Town)
"Thieves' Town - Attic": Bombs (3)
"Thieves' Town - Blind's Cell": Small Key (Universal)
"Thieves' Town - Big Chest": Titans Mitts
"Thieves' Town - Boss": Boss Heart Container
"Thieves' Town - Prize": Crystal 4
"Ice Palace - Compass Chest": Compass (Ice Palace)
"Ice Palace - Big Key Chest": Big Key (Ice Palace)
"Ice Palace - Spike Room": Small Key (Universal)
"Ice Palace - Map Chest": Map (Ice Palace)
"Ice Palace - Freezor Chest": Bombs (3)
"Ice Palace - Iced T Room": Small Key (Universal)
"Ice Palace - Big Chest": Blue Mail
"Ice Palace - Boss": Boss Heart Container
"Ice Palace - Prize": Crystal 5
"Misery Mire - Main Lobby": Small Key (Universal)
"Misery Mire - Big Chest": Cane of Somaria
"Misery Mire - Map Chest": Map (Misery Mire)
"Misery Mire - Spike Chest": Small Key (Universal)
"Misery Mire - Bridge Chest": Small Key (Universal)
"Misery Mire - Compass Chest": Compass (Misery Mire)
"Misery Mire - Big Key Chest": Big Key (Misery Mire)
"Misery Mire - Boss": Boss Heart Container
"Misery Mire - Prize": Crystal 6
"Turtle Rock - Compass Chest": Compass (Turtle Rock)
"Turtle Rock - Roller Room - Left": Map (Turtle Rock)
"Turtle Rock - Roller Room - Right": Small Key (Universal)
"Turtle Rock - Chain Chomps": Small Key (Universal)
"Turtle Rock - Big Key Chest": Big Key (Turtle Rock)
"Turtle Rock - Big Chest": Mirror Shield
"Turtle Rock - Crystaroller Room": Small Key (Universal)
"Turtle Rock - Eye Bridge - Bottom Left": Small Key (Universal)
"Turtle Rock - Eye Bridge - Bottom Right": Rupees (20)
"Turtle Rock - Eye Bridge - Top Left": Rupees (5)
"Turtle Rock - Eye Bridge - Top Right": Rupee (1)
"Turtle Rock - Boss": Boss Heart Container
"Turtle Rock - Prize": Crystal 7
"Ganons Tower - Bob's Torch": Small Key (Universal)
"Ganons Tower - Hope Room - Left": Arrows (10)
"Ganons Tower - Hope Room - Right": Bombs (3)
"Ganons Tower - Big Chest": Red Mail
"Ganons Tower - Bob's Chest": Arrows (10)
"Ganons Tower - Tile Room": Small Key (Universal)
"Ganons Tower - Compass Room - Top Left": Compass (Ganons Tower)
"Ganons Tower - Compass Room - Top Right": Rupee (1)
"Ganons Tower - Compass Room - Bottom Left": Rupees (20)
"Ganons Tower - Compass Room - Bottom Right": Arrows (10)
"Ganons Tower - Map Chest": Map (Ganons Tower)
"Ganons Tower - Firesnake Room": Small Key (Universal)
"Ganons Tower - DMs Room - Top Left": Bombs (3)
"Ganons Tower - DMs Room - Top Right": Arrows (10)
"Ganons Tower - DMs Room - Bottom Left": Rupees (20)
"Ganons Tower - DMs Room - Bottom Right": Rupees (20)
"Ganons Tower - Randomizer Room - Top Left": Arrows (10)
"Ganons Tower - Randomizer Room - Top Right": Arrows (10)
"Ganons Tower - Randomizer Room - Bottom Left": Bombs (3)
"Ganons Tower - Randomizer Room - Bottom Right": Bombs (3)
"Ganons Tower - Big Key Room - Left": Arrows (10)
"Ganons Tower - Big Key Room - Right": Bombs (3)
"Ganons Tower - Big Key Chest": Big Key (Ganons Tower)
"Ganons Tower - Mini Helmasaur Room - Left": Bombs (3)
"Ganons Tower - Mini Helmasaur Room - Right": Bombs (3)
"Ganons Tower - Pre-Moldorm Chest": Small Key (Universal)
"Ganons Tower - Validation Chest": Rupees (20)
drops:
1:
Pack 1: ["Small Heart", "Small Heart", "Small Heart", "Small Heart", "Rupee (1)", "Small Heart", "Small Heart", "Rupee (1)"]
Pack 2: ["Rupees (5)", "Rupee (1)", "Rupees (5)", "Rupees (20)", "Rupees (5)", "Rupee (1)", "Rupees (5)", "Rupees (5)"]
Pack 3: ["Big Magic", "Small Magic", "Small Magic", "Rupees (5)", "Big Magic", "Small Magic", "Small Heart", "Small Magic"]
Pack 4: ["Single Bomb", "Single Bomb", "Single Bomb", "Bombs (4)", "Single Bomb", "Single Bomb", "Bombs (8)", "Single Bomb"]
Pack 5: ["Arrows (5)", "Small Heart", "Arrows (5)", "Arrows (10)", "Arrows (5)", "Small Heart", "Arrows (5)", "Arrows (10)"]
Pack 6: ["Small Magic", "Rupee (1)", "Small Heart", "Arrows (5)", "Small Magic", "Single Bomb", "Rupee (1)", "Small Heart"]
Pack 7: ["Small Heart", "Fairy", "Big Magic", "Rupees (20)", "Bombs (8)", "Small Heart", "Rupees (20)", "Arrows (10)"]
Tree Pull Tier 1: "Rupee (1)"
Tree Pull Tier 2: "Rupees (5)"
Tree Pull Tier 3: "Rupees (20)"
Crab Normal: "Rupee (1)"
Crab Special: "Rupees (20)"
Stun Prize: "Rupee (1)"
Fish: "Rupees (20)"
medallions:
1:
"Misery Mire": Ether
"Turtle Rock": Quake