Ocarina of Time 7.0 (#1277)

## What is this fixing or adding?
- Adds the majority of OoTR 7.0 features:
  - Pot shuffle, Freestanding item shuffle, Crate shuffle, Beehive shuffle
  - Key rings mode
  - Dungeon shortcuts to speed up dungeons
  - "Regional" shuffle for dungeon items
  - New options for shop pricing in shopsanity
  - Expanded Ganon's Boss Key shuffle options
  - Pre-planted beans
  - Improved Chest Appearance Matches Contents mode
  - Blue Fire Arrows
  - Bonk self-damage
  - Finer control over MQ dungeons and spawn position randomization
- Several bugfixes as a result of the update:
  - Items recognized by the server and valid starting items are now in a 1-to-1 correspondence. In particular, starting with keys is now supported.
  - Entrance randomization success rate improved. Hopefully it is now at 100%. 

Co-authored-by: Zach Parks <zach@alliware.com>
This commit is contained in:
espeon65536
2022-12-10 21:11:40 -06:00
committed by GitHub
parent 2cdd03f786
commit aee0df5359
110 changed files with 37691 additions and 18648 deletions

View File

@@ -39,6 +39,13 @@ def patch_dpad(rom, ootworld, symbols):
rom.write_byte(symbols['CFG_DISPLAY_DPAD'], 0x00)
def patch_dpad_info(rom, ootworld, symbols):
# Display D-Pad HUD in pause menu for either dungeon info or equips
if ootworld.dpad_dungeon_menu:
rom.write_byte(symbols['CFG_DPAD_DUNGEON_INFO_ENABLE'], 0x01)
else:
rom.write_byte(symbols['CFG_DPAD_DUNGEON_INFO_ENABLE'], 0x00)
def patch_music(rom, ootworld, symbols):
# patch music
@@ -648,6 +655,7 @@ legacy_cosmetic_data_headers = [
0x03480810,
]
patch_sets = {}
global_patch_sets = [
patch_targeting,
patch_music,
@@ -656,115 +664,108 @@ global_patch_sets = [
patch_sword_trails,
patch_gauntlet_colors,
patch_shield_frame_colors,
# patch_voices,
patch_sfx,
patch_instrument,
]
patch_sets = {
0x1F04FA62: {
"patches": [
patch_dpad,
patch_sword_trails,
],
"symbols": {
"CFG_DISPLAY_DPAD": 0x0004,
"CFG_RAINBOW_SWORD_INNER_ENABLED": 0x0005,
"CFG_RAINBOW_SWORD_OUTER_ENABLED": 0x0006,
},
},
0x1F05D3F9: {
"patches": [
patch_dpad,
patch_sword_trails,
],
"symbols": {
"CFG_DISPLAY_DPAD": 0x0004,
"CFG_RAINBOW_SWORD_INNER_ENABLED": 0x0005,
"CFG_RAINBOW_SWORD_OUTER_ENABLED": 0x0006,
},
},
0x1F0693FB: {
"patches": [
patch_dpad,
patch_sword_trails,
patch_heart_colors,
patch_magic_colors,
],
"symbols": {
"CFG_MAGIC_COLOR": 0x0004,
"CFG_HEART_COLOR": 0x000A,
"CFG_DISPLAY_DPAD": 0x0010,
"CFG_RAINBOW_SWORD_INNER_ENABLED": 0x0011,
"CFG_RAINBOW_SWORD_OUTER_ENABLED": 0x0012,
}
},
0x1F073FC9: {
"patches": [
patch_dpad,
patch_sword_trails,
patch_heart_colors,
patch_magic_colors,
patch_button_colors,
],
"symbols": {
"CFG_MAGIC_COLOR": 0x0004,
"CFG_HEART_COLOR": 0x000A,
"CFG_A_BUTTON_COLOR": 0x0010,
"CFG_B_BUTTON_COLOR": 0x0016,
"CFG_C_BUTTON_COLOR": 0x001C,
"CFG_TEXT_CURSOR_COLOR": 0x0022,
"CFG_SHOP_CURSOR_COLOR": 0x0028,
"CFG_A_NOTE_COLOR": 0x002E,
"CFG_C_NOTE_COLOR": 0x0034,
"CFG_DISPLAY_DPAD": 0x003A,
"CFG_RAINBOW_SWORD_INNER_ENABLED": 0x003B,
"CFG_RAINBOW_SWORD_OUTER_ENABLED": 0x003C,
}
},
0x1F073FD8: {
"patches": [
patch_dpad,
patch_navi_colors,
patch_sword_trails,
patch_heart_colors,
patch_magic_colors,
patch_button_colors,
patch_boomerang_trails,
patch_bombchu_trails,
],
"symbols": {
"CFG_MAGIC_COLOR": 0x0004,
"CFG_HEART_COLOR": 0x000A,
"CFG_A_BUTTON_COLOR": 0x0010,
"CFG_B_BUTTON_COLOR": 0x0016,
"CFG_C_BUTTON_COLOR": 0x001C,
"CFG_TEXT_CURSOR_COLOR": 0x0022,
"CFG_SHOP_CURSOR_COLOR": 0x0028,
"CFG_A_NOTE_COLOR": 0x002E,
"CFG_C_NOTE_COLOR": 0x0034,
"CFG_BOOM_TRAIL_INNER_COLOR": 0x003A,
"CFG_BOOM_TRAIL_OUTER_COLOR": 0x003D,
"CFG_BOMBCHU_TRAIL_INNER_COLOR": 0x0040,
"CFG_BOMBCHU_TRAIL_OUTER_COLOR": 0x0043,
"CFG_DISPLAY_DPAD": 0x0046,
"CFG_RAINBOW_SWORD_INNER_ENABLED": 0x0047,
"CFG_RAINBOW_SWORD_OUTER_ENABLED": 0x0048,
"CFG_RAINBOW_BOOM_TRAIL_INNER_ENABLED": 0x0049,
"CFG_RAINBOW_BOOM_TRAIL_OUTER_ENABLED": 0x004A,
"CFG_RAINBOW_BOMBCHU_TRAIL_INNER_ENABLED": 0x004B,
"CFG_RAINBOW_BOMBCHU_TRAIL_OUTER_ENABLED": 0x004C,
"CFG_RAINBOW_NAVI_IDLE_INNER_ENABLED": 0x004D,
"CFG_RAINBOW_NAVI_IDLE_OUTER_ENABLED": 0x004E,
"CFG_RAINBOW_NAVI_ENEMY_INNER_ENABLED": 0x004F,
"CFG_RAINBOW_NAVI_ENEMY_OUTER_ENABLED": 0x0050,
"CFG_RAINBOW_NAVI_NPC_INNER_ENABLED": 0x0051,
"CFG_RAINBOW_NAVI_NPC_OUTER_ENABLED": 0x0052,
"CFG_RAINBOW_NAVI_PROP_INNER_ENABLED": 0x0053,
"CFG_RAINBOW_NAVI_PROP_OUTER_ENABLED": 0x0054,
}
# 3.14.1
patch_sets[0x1F04FA62] = {
"patches": [
patch_dpad,
patch_sword_trails,
],
"symbols": {
"CFG_DISPLAY_DPAD": 0x0004,
"CFG_RAINBOW_SWORD_INNER_ENABLED": 0x0005,
"CFG_RAINBOW_SWORD_OUTER_ENABLED": 0x0006,
},
}
# 3.14.11
patch_sets[0x1F05D3F9] = {
"patches": patch_sets[0x1F04FA62]["patches"] + [],
"symbols": {**patch_sets[0x1F04FA62]["symbols"]},
}
# 4.5.7
patch_sets[0x1F0693FB] = {
"patches": patch_sets[0x1F05D3F9]["patches"] + [
patch_heart_colors,
patch_magic_colors,
],
"symbols": {
"CFG_MAGIC_COLOR": 0x0004,
"CFG_HEART_COLOR": 0x000A,
"CFG_DISPLAY_DPAD": 0x0010,
"CFG_RAINBOW_SWORD_INNER_ENABLED": 0x0011,
"CFG_RAINBOW_SWORD_OUTER_ENABLED": 0x0012,
}
}
# 5.2.6
patch_sets[0x1F073FC9] = {
"patches": patch_sets[0x1F0693FB]["patches"] + [
patch_button_colors,
],
"symbols": {
"CFG_MAGIC_COLOR": 0x0004,
"CFG_HEART_COLOR": 0x000A,
"CFG_A_BUTTON_COLOR": 0x0010,
"CFG_B_BUTTON_COLOR": 0x0016,
"CFG_C_BUTTON_COLOR": 0x001C,
"CFG_TEXT_CURSOR_COLOR": 0x0022,
"CFG_SHOP_CURSOR_COLOR": 0x0028,
"CFG_A_NOTE_COLOR": 0x002E,
"CFG_C_NOTE_COLOR": 0x0034,
"CFG_DISPLAY_DPAD": 0x003A,
"CFG_RAINBOW_SWORD_INNER_ENABLED": 0x003B,
"CFG_RAINBOW_SWORD_OUTER_ENABLED": 0x003C,
}
}
# 5.2.76
patch_sets[0x1F073FD8] = {
"patches": patch_sets[0x1F073FC9]["patches"] + [
patch_navi_colors,
patch_boomerang_trails,
patch_bombchu_trails,
],
"symbols": {
**patch_sets[0x1F073FC9]["symbols"],
"CFG_BOOM_TRAIL_INNER_COLOR": 0x003A,
"CFG_BOOM_TRAIL_OUTER_COLOR": 0x003D,
"CFG_BOMBCHU_TRAIL_INNER_COLOR": 0x0040,
"CFG_BOMBCHU_TRAIL_OUTER_COLOR": 0x0043,
"CFG_DISPLAY_DPAD": 0x0046,
"CFG_RAINBOW_SWORD_INNER_ENABLED": 0x0047,
"CFG_RAINBOW_SWORD_OUTER_ENABLED": 0x0048,
"CFG_RAINBOW_BOOM_TRAIL_INNER_ENABLED": 0x0049,
"CFG_RAINBOW_BOOM_TRAIL_OUTER_ENABLED": 0x004A,
"CFG_RAINBOW_BOMBCHU_TRAIL_INNER_ENABLED": 0x004B,
"CFG_RAINBOW_BOMBCHU_TRAIL_OUTER_ENABLED": 0x004C,
"CFG_RAINBOW_NAVI_IDLE_INNER_ENABLED": 0x004D,
"CFG_RAINBOW_NAVI_IDLE_OUTER_ENABLED": 0x004E,
"CFG_RAINBOW_NAVI_ENEMY_INNER_ENABLED": 0x004F,
"CFG_RAINBOW_NAVI_ENEMY_OUTER_ENABLED": 0x0050,
"CFG_RAINBOW_NAVI_NPC_INNER_ENABLED": 0x0051,
"CFG_RAINBOW_NAVI_NPC_OUTER_ENABLED": 0x0052,
"CFG_RAINBOW_NAVI_PROP_INNER_ENABLED": 0x0053,
"CFG_RAINBOW_NAVI_PROP_OUTER_ENABLED": 0x0054,
}
}
# 6.2.218
patch_sets[0x1F073FD9] = {
"patches": patch_sets[0x1F073FD8]["patches"] + [
patch_dpad_info,
],
"symbols": {
**patch_sets[0x1F073FD8]["symbols"],
"CFG_DPAD_DUNGEON_INFO_ENABLE": 0x0055,
}
}
def patch_cosmetics(ootworld, rom):
# Use the world's slot seed for cosmetics