From b12fa9b64fd4f3969ecf4a8a4c0322f5d4f8caab Mon Sep 17 00:00:00 2001 From: Torphedo <73564623+Torphedo@users.noreply.github.com> Date: Sun, 1 Aug 2021 07:12:08 -0400 Subject: [PATCH] [BotW] Master Mode Options mod (#529) * Added Master Mode Options pack * Remove default = true * Mention that a reboot is needed after making changes * Tiny code comment tweak * Make requested changes --- .../patch_MasterModeTweaks.asm | 18 +++ .../Cheats/MasterModeTweaks/rules.txt | 111 ++++++++++++++++++ 2 files changed, 129 insertions(+) create mode 100644 src/BreathOfTheWild/Cheats/MasterModeTweaks/patch_MasterModeTweaks.asm create mode 100644 src/BreathOfTheWild/Cheats/MasterModeTweaks/rules.txt diff --git a/src/BreathOfTheWild/Cheats/MasterModeTweaks/patch_MasterModeTweaks.asm b/src/BreathOfTheWild/Cheats/MasterModeTweaks/patch_MasterModeTweaks.asm new file mode 100644 index 00000000..68f27ad9 --- /dev/null +++ b/src/BreathOfTheWild/Cheats/MasterModeTweaks/patch_MasterModeTweaks.asm @@ -0,0 +1,18 @@ +[BotwMasterModeTweaksV208] +moduleMatches = 0x6267BFD0 + +# Constants + +merge0x129 = $bit0 + $bit1 + $bit3 + $bit5 + $bit8 +;Combines bits set by the user in rules.txt to a bitmask. Split between 2 patches because vanilla compiled it to 2 hex values instead of 1 for some +;reason. There's no overlap in vanilla between the 2 hex values, so I made sure each bit was set by the same instruction as in vanilla. +;(Variable names are the hex values that were in that location in vanilla) + +merge0xd0 = $bit4 + $bit6 + $bit7 +;Bit 2 is excluded from the logic because it does absolutely nothing. Bits 0 and 1 are connected to other parts of the game code, but don't actually +;do anything in-game. + +# Patches + +0x031696B8 = ori r9, r0, merge0x129 +0x031696C4 = ori r0, r9, merge0xd0 diff --git a/src/BreathOfTheWild/Cheats/MasterModeTweaks/rules.txt b/src/BreathOfTheWild/Cheats/MasterModeTweaks/rules.txt new file mode 100644 index 00000000..bbef8254 --- /dev/null +++ b/src/BreathOfTheWild/Cheats/MasterModeTweaks/rules.txt @@ -0,0 +1,111 @@ +[Definition] +titleIds = 00050000101C9300,00050000101C9400,00050000101C9500 +name = "Master Mode Tweaks" +path = "The Legend of Zelda: Breath of the Wild/Cheats/Master Mode Tweaks" +description = Allows you to pick and choose which of Nintendo's tweaks are applied to Master Mode (Does nothing in Normal Mode). A reboot is required to apply changes made while the game is running. ||By Torphedo and Fleevoid, with lots of help from Exzap and leoetlino. +version = 7 + +[Default] +$debug:int = 0 +$bit0:int = 0x1 +$bit1:int = 0x0 +$bit3:int = 0x8 +$bit4:int = 0x10 +$bit5:int = 0x20 +$bit6:int = 0x40 +$bit7:int = 0x80 +$bit8:int = 0x100 + +[Preset] +name = Disabled (Default) +category = Show Debug Options +$debug:int = 0 + +[Preset] +name = Enabled (shows broken options) +category = Show Debug Options +$debug:int = 1 + +[Preset] +name = Disabled (Default) +category = 1-Hit-Kill Protection +$bit3:int = 0x8 + +[Preset] +name = Enabled +category = 1-Hit-Kill Protection +$bit3:int = 0x0 + +[Preset] +name = Enabled (Default) +category = No Ganon Stun Lock +$bit4:int = 0x10 + +[Preset] +name = Disabled +category = No Ganon Stun Lock +$bit4:int = 0x0 + +[Preset] +Name = Enabled (Default) +category = Health Regeneration +$bit5:int = 0x20 + +[Preset] +Name = Disabled +category = Health Regeneration +$bit5:int = 0x0 + +[Preset] +name = Enabled (Default) +category = Randomized Guardian Fire Timing +$bit6:int = 0x40 + +[Preset] +name = Disabled +category = Randomized Guardian Fire Timing +$bit6:int = 0x0 + +[Preset] +name = Enabled (Default) +category = 1.5x Damage Multiplier from Bosses and Tests of Strength +$bit7:int = 0x80 + +[Preset] +name = Disabled +category = 1.5x Damage Multiplier from Bosses and Tests of Strength +$bit7:int = 0x0 + +[Preset] +name = Enabled (Default) +category = Shorter Enemy Notice +$bit8:int = 0x100 + +[Preset] +name = Disabled +category = Shorter Enemy Notice +$bit8:int = 0x0 + +[Preset] +name = Enabled (Default) +category = IsLastPlayHardMode (Does nothing) +condition = $debug == 1 +$bit0:int = 0x1 + +[Preset] +name = Disabled +category = IsLastPlayHardMode (Does nothing) +condition = $debug == 1 +$bit0:int = 0x0 + +[Preset] +name = Disabled (Default) +category = Nerf Cooking (Appears to be broken or unimplemented) +condition = $debug == 1 +$bit1:int = 0x0 + +[Preset] +name = Enabled +category = Nerf Cooking (Appears to be broken or unimplemented) +condition = $debug == 1 +$bit1:int = 0x2