From fe3508f9f4ebcee87bc5fc18007ac7f8d96a0695 Mon Sep 17 00:00:00 2001
From: XyFreak <xyfreak@tenyx.de>
Date: Thu, 23 May 2019 19:21:49 +0200
Subject: [PATCH 1/7] Found and added appropriate offset to apply NoOfflineTag
 patch version 1.0.1U

---
 Mods/XenobladeX_NoOfflineTag/patches.txt | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/Mods/XenobladeX_NoOfflineTag/patches.txt b/Mods/XenobladeX_NoOfflineTag/patches.txt
index 6652cc7d..1fa56dba 100644
--- a/Mods/XenobladeX_NoOfflineTag/patches.txt
+++ b/Mods/XenobladeX_NoOfflineTag/patches.txt
@@ -10,6 +10,10 @@ moduleMatches = 0x7672271D
 moduleMatches = 0x218F6E07, 0xF882D5CF
 0x100B0B50 = nop # frameIn
 
+[XCXNOFFV101U]
+moduleMatches = 0xAB97DE6B
+0x100B0AA0 = nop # frameIn
+
 [XCXNOFFV102U]
 moduleMatches = 0x30B6E091
 0x100B0B38 = nop #
\ No newline at end of file
-- 
2.30.2


From 871d76ba00746025772e7095e41d732646fee288 Mon Sep 17 00:00:00 2001
From: XyFreak <xyfreak@tenyx.de>
Date: Sun, 19 May 2019 11:37:18 +0200
Subject: [PATCH 2/7] Reduce volume of BGM and possibly other "noisy" audio
 since voice audio can't be increased.

Overwrites parts of the setup code in fw::CSoundManager::setupCategory() to not call GetCategoryVolume but instead use values we control. Parts of the original code (calls to GetCategoryIndex) have to still happen!

We're quite limited with the amount of space we have available to us. There has to be a better way...
---
 .../XenobladeX_mod_RebalanceAudio/patches.txt | 50 +++++++++++++++++++
 Mods/XenobladeX_mod_RebalanceAudio/rules.txt  |  7 +++
 2 files changed, 57 insertions(+)
 create mode 100644 Mods/XenobladeX_mod_RebalanceAudio/patches.txt
 create mode 100644 Mods/XenobladeX_mod_RebalanceAudio/rules.txt

diff --git a/Mods/XenobladeX_mod_RebalanceAudio/patches.txt b/Mods/XenobladeX_mod_RebalanceAudio/patches.txt
new file mode 100644
index 00000000..06accb8c
--- /dev/null
+++ b/Mods/XenobladeX_mod_RebalanceAudio/patches.txt
@@ -0,0 +1,50 @@
+[XCXRebalanceAudioV101U]
+moduleMatches = 0xAB97DE6B
+
+_normalAudio = 0x028933EC
+_louderAudio = 0x028933F0
+_GetCategoryIndex = 0x030F201C
+_AfterEverythingIsDone = 0x28933F8
+
+0x02893350 = bl        _GetCategoryIndex
+0x02893354 = stw       r3, 0x1240(r29)
+0x02893358 = lwz       r3, 0x101A0004@l(r27)
+0x0289335C = bl        _GetCategoryIndex
+0x02893360 = stw       r3, 0x1248(r29)
+0x02893364 = lwz       r3, 0x101A0008@l(r27)
+0x02893368 = bl        _GetCategoryIndex
+0x0289336C = stw       r3, 0x1250(r29)
+0x02893370 = lwz       r3, 0x101A000C@l(r27)
+0x02893374 = bl        _GetCategoryIndex
+0x02893378 = stw       r3, 0x1258(r29)
+0x0289337C = lwz       r3, 0x101A0010@l(r27)
+0x02893380 = bl        _GetCategoryIndex
+0x02893384 = stw       r3, 0x1260(r29)
+0x02893388 = lwz       r3, 0x101A0014@l(r27)
+0x0289338C = bl        _GetCategoryIndex
+0x02893390 = stw       r3, 0x1268(r29)
+0x02893394 = lwz       r3, 0x101A0018@l(r27)
+0x02893398 = bl        _GetCategoryIndex
+0x0289339C = stw       r3, 0x1270(r29)
+0x028933A0 = lwz       r3, 0x101A001C@l(r27)
+0x028933A4 = bl        _GetCategoryIndex
+0x028933A8 = stw       r3, 0x1278(r29)
+0x028933AC = lis       r11, _normalAudio@ha
+0x028933B0 = lfs       f1, _normalAudio@l(r11)
+0x028933B4 = stfs      f1, 0x1244(r29) #BGM
+0x028933B8 = stfs      f1, 0x1254(r29) #BATTLE
+0x028933BC = stfs      f1, 0x125C(r29) #FIELD
+0x028933C0 = stfs      f1, 0x1264(r29) #GIMMICK
+0x028933C4 = stfs      f1, 0x126C(r29) #SYSTEM
+0x028933C8 = lis       r11, _louderAudio@ha
+0x028933CC = lfs       f1, _louderAudio@l(r11)
+0x028933D0 = stfs      f1, 0x1274(r29) #ENVIRONMENT
+0x028933D4 = stfs      f1, 0x127C(r29) #WEATHER
+0x028933D8 = stfs      f1, 0x124C(r29) #VOICE
+0x028933DC = li        r28, 3
+0x028933E0 = li        r30, 0x20
+0x028933E4 = addi      r31, r31, -8
+0x028933E8 = b         _AfterEverythingIsDone
+0x028933EC = .float    0.7
+0x028933F0 = .float    1.0
+0x028933F4 = nop
\ No newline at end of file
diff --git a/Mods/XenobladeX_mod_RebalanceAudio/rules.txt b/Mods/XenobladeX_mod_RebalanceAudio/rules.txt
new file mode 100644
index 00000000..a3875d35
--- /dev/null
+++ b/Mods/XenobladeX_mod_RebalanceAudio/rules.txt
@@ -0,0 +1,7 @@
+[Definition]
+titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
+name = Rebalance Audio
+path = "Xenoblade Chronicles X/Mods/RebalanceAudio"
+description = Edit presets for preference. Settings become active once past the title screen.
+version = 3
+
-- 
2.30.2


From aa9ddb10921811d4dd60c1e8bbc0c6aee74ac5ee Mon Sep 17 00:00:00 2001
From: XyFreak <xyfreak@tenyx.de>
Date: Sun, 19 May 2019 13:19:41 +0200
Subject: [PATCH 3/7] Less intrusive approach using codecave.

Instead of overwriting half the original function, we just replace the calls to GetCategoryVolume with calls to our hooking functions located in a codecave (thank god what an awesome feature). Also makes it easier to maintain this patch and gives us volume control for each category independently.
---
 .../XenobladeX_mod_RebalanceAudio/patches.txt | 133 ++++++++++++------
 1 file changed, 87 insertions(+), 46 deletions(-)

diff --git a/Mods/XenobladeX_mod_RebalanceAudio/patches.txt b/Mods/XenobladeX_mod_RebalanceAudio/patches.txt
index 06accb8c..789d8b2a 100644
--- a/Mods/XenobladeX_mod_RebalanceAudio/patches.txt
+++ b/Mods/XenobladeX_mod_RebalanceAudio/patches.txt
@@ -1,50 +1,91 @@
 [XCXRebalanceAudioV101U]
 moduleMatches = 0xAB97DE6B
+codeCaveSize = 0x200
 
-_normalAudio = 0x028933EC
-_louderAudio = 0x028933F0
-_GetCategoryIndex = 0x030F201C
-_AfterEverythingIsDone = 0x28933F8
+##
+# You may change these floats
+##
 
-0x02893350 = bl        _GetCategoryIndex
-0x02893354 = stw       r3, 0x1240(r29)
-0x02893358 = lwz       r3, 0x101A0004@l(r27)
-0x0289335C = bl        _GetCategoryIndex
-0x02893360 = stw       r3, 0x1248(r29)
-0x02893364 = lwz       r3, 0x101A0008@l(r27)
-0x02893368 = bl        _GetCategoryIndex
-0x0289336C = stw       r3, 0x1250(r29)
-0x02893370 = lwz       r3, 0x101A000C@l(r27)
-0x02893374 = bl        _GetCategoryIndex
-0x02893378 = stw       r3, 0x1258(r29)
-0x0289337C = lwz       r3, 0x101A0010@l(r27)
-0x02893380 = bl        _GetCategoryIndex
-0x02893384 = stw       r3, 0x1260(r29)
-0x02893388 = lwz       r3, 0x101A0014@l(r27)
-0x0289338C = bl        _GetCategoryIndex
-0x02893390 = stw       r3, 0x1268(r29)
-0x02893394 = lwz       r3, 0x101A0018@l(r27)
-0x02893398 = bl        _GetCategoryIndex
-0x0289339C = stw       r3, 0x1270(r29)
-0x028933A0 = lwz       r3, 0x101A001C@l(r27)
-0x028933A4 = bl        _GetCategoryIndex
-0x028933A8 = stw       r3, 0x1278(r29)
-0x028933AC = lis       r11, _normalAudio@ha
-0x028933B0 = lfs       f1, _normalAudio@l(r11)
-0x028933B4 = stfs      f1, 0x1244(r29) #BGM
-0x028933B8 = stfs      f1, 0x1254(r29) #BATTLE
-0x028933BC = stfs      f1, 0x125C(r29) #FIELD
-0x028933C0 = stfs      f1, 0x1264(r29) #GIMMICK
-0x028933C4 = stfs      f1, 0x126C(r29) #SYSTEM
-0x028933C8 = lis       r11, _louderAudio@ha
-0x028933CC = lfs       f1, _louderAudio@l(r11)
-0x028933D0 = stfs      f1, 0x1274(r29) #ENVIRONMENT
-0x028933D4 = stfs      f1, 0x127C(r29) #WEATHER
-0x028933D8 = stfs      f1, 0x124C(r29) #VOICE
-0x028933DC = li        r28, 3
-0x028933E0 = li        r30, 0x20
-0x028933E4 = addi      r31, r31, -8
-0x028933E8 = b         _AfterEverythingIsDone
-0x028933EC = .float    0.7
-0x028933F0 = .float    1.0
-0x028933F4 = nop
\ No newline at end of file
+0x000001A0 = .float 0.7 ; BGM
+0x000001A4 = .float 1.0 ; VOICE
+0x000001A8 = .float 0.7 ; BATTLE
+0x000001AC = .float 0.7 ; FIELD
+0x000001B0 = .float 0.7 ; GIMMICK
+0x000001B4 = .float 0.7 ; SYSTEM
+0x000001B8 = .float 1.0 ; ENVIRONMENT
+0x000001BC = .float 1.0 ; WEATHER
+
+##
+# Do not touch anything below if you don't know what you are doing!
+##
+
+# Labels for individual volume floats
+_audioVolumeDefault     = 0x1006CF30 ; Also used by the fallback branch of setupCategory
+_audioVolumeBgm         = 0x000001A0
+_audioVolumeVoice       = 0x000001A4
+_audioVolumeBattle      = 0x000001A8
+_audioVolumeField       = 0x000001AC
+_audioVolumeGimmick     = 0x000001B0
+_audioVolumeSystem      = 0x000001B4
+_audioVolumeEnvironment = 0x000001B8
+_audioVolumeWeather     = 0x000001BC
+
+##
+# Hook routines start here
+##
+
+# Override BGM volume
+_hookSetBgmVolume = 0x00000000
+0x00000000 = lis       r11, _audioVolumeBgm@ha
+0x00000004 = lfs       f1, _audioVolumeBgm@l(r11)
+0x00000008 = blr
+0x02893358 = bla       _hookSetBgmVolume ; Install Hook
+
+# Override Voice volume
+_hookSetVoiceVolume = 0x00000010
+0x00000010 = lis       r11, _audioVolumeVoice@ha
+0x00000014 = lfs       f1, _audioVolumeVoice@l(r11)
+0x00000018 = blr
+0x0289336C = bla       _hookSetVoiceVolume ; Install Hook
+
+# Override Battle volume
+_hookSetBattleVolume = 0x00000020
+0x00000020 = lis       r11, _audioVolumeBattle@ha
+0x00000024 = lfs       f1, _audioVolumeBattle@l(r11)
+0x00000028 = blr
+0x02893380 = bla       _hookSetBattleVolume ; Install Hook
+
+# Override Field volume
+_hookSetFieldVolume = 0x00000030
+0x00000030 = lis       r11, _audioVolumeField@ha
+0x00000034 = lfs       f1, _audioVolumeField@l(r11)
+0x00000038 = blr
+0x02893394 = bla       _hookSetFieldVolume ; Install Hook
+
+# Override Gimmick volume
+_hookSetGimmickVolume = 0x00000040
+0x00000040 = lis       r11, _audioVolumeGimmick@ha
+0x00000044 = lfs       f1, _audioVolumeGimmick@l(r11)
+0x00000048 = blr
+0x028933A8 = bla       _hookSetGimmickVolume ; Install Hook
+
+# Override System volume
+_hookSetSystemVolume = 0x00000050
+0x00000050 = lis       r11, _audioVolumeSystem@ha
+0x00000054 = lfs       f1, _audioVolumeSystem@l(r11)
+0x00000058 = blr
+0x028933BC = bla       _hookSetSystemVolume ; Install Hook
+
+# Override Environment volume
+_hookSetEnvironmentVolume = 0x00000060
+0x00000060 = lis       r11, _audioVolumeEnvironment@ha
+0x00000064 = lfs       f1, _audioVolumeEnvironment@l(r11)
+0x00000068 = blr
+0x028933D0 = bla       _hookSetEnvironmentVolume ; Install Hook
+
+# Override Weather volume
+_hookSetWeatherVolume = 0x00000070
+0x00000070 = lis       r11, _audioVolumeWeather@ha
+0x00000074 = lfs       f1, _audioVolumeWeather@l(r11)
+0x00000078 = blr
+0x028933E4 = bla       _hookSetWeatherVolume ; Install Hook
-- 
2.30.2


From d650bbedf8d20fa88a062b46a82d963aba57b56f Mon Sep 17 00:00:00 2001
From: XyFreak <xyfreak@tenyx.de>
Date: Sun, 19 May 2019 13:32:08 +0200
Subject: [PATCH 4/7] Hook GetCategoryVolume in loop as well

---
 .../XenobladeX_mod_RebalanceAudio/patches.txt | 43 +++++++++++++++++++
 1 file changed, 43 insertions(+)

diff --git a/Mods/XenobladeX_mod_RebalanceAudio/patches.txt b/Mods/XenobladeX_mod_RebalanceAudio/patches.txt
index 789d8b2a..81e4956d 100644
--- a/Mods/XenobladeX_mod_RebalanceAudio/patches.txt
+++ b/Mods/XenobladeX_mod_RebalanceAudio/patches.txt
@@ -14,6 +14,9 @@ codeCaveSize = 0x200
 0x000001B4 = .float 0.7 ; SYSTEM
 0x000001B8 = .float 1.0 ; ENVIRONMENT
 0x000001BC = .float 1.0 ; WEATHER
+0x000001C0 = .float 1.0 ; EVENT_CS
+0x000001C4 = .float 1.0 ; EVENT_VOICE
+0x000001C8 = .float 1.0 ; EVENT_SE
 
 ##
 # Do not touch anything below if you don't know what you are doing!
@@ -29,6 +32,10 @@ _audioVolumeGimmick     = 0x000001B0
 _audioVolumeSystem      = 0x000001B4
 _audioVolumeEnvironment = 0x000001B8
 _audioVolumeWeather     = 0x000001BC
+_audioVolumeEventCs     = 0x000001C0
+_audioVolumeEventVoice  = 0x000001C4
+_audioVolumeEventSe     = 0x000001C8
+_audioVolumeUnknown     = 0x000001F0
 
 ##
 # Hook routines start here
@@ -89,3 +96,39 @@ _hookSetWeatherVolume = 0x00000070
 0x00000074 = lfs       f1, _audioVolumeWeather@l(r11)
 0x00000078 = blr
 0x028933E4 = bla       _hookSetWeatherVolume ; Install Hook
+
+# EVENT_* is initialized in a loop so we have to identify the current loop
+# iteration and return the desired value
+
+_eventHookStart   = 0x00000080
+_eventHookVoice   = 0x00000094
+_eventHookSe      = 0x00000108
+_eventHookDefault = 0x0000011C
+
+# EVENT_CS
+0x00000080 = cmpwi     r28, 3
+0x00000084 = bne       _eventHookVoice
+0x00000088 = lis       r11, _audioVolumeEventCs@ha
+0x0000008C = lfs       f1, _audioVolumeEventCs@l(r11)
+0x00000090 = blr
+
+# EVENT_VOICE
+0x00000094 = cmpwi     r28, 2
+0x00000098 = bne       _eventHookSe
+0x0000009C = lis       r11, _audioVolumeEventVoice@ha
+0x00000100 = lfs       f1, _audioVolumeEventVoice@l(r11)
+0x00000104 = blr
+
+# EVENT_SE
+0x00000108 = cmpwi     r28, 1
+0x0000010C = bne       _eventHookDefault
+0x00000110 = lis       r11, _audioVolumeEventSe@ha
+0x00000114 = lfs       f1, _audioVolumeEventSe@l(r11)
+0x00000118 = blr
+
+# Anything else
+0x0000011C = lis       r11, _audioVolumeDefault@ha
+0x00000120 = lfs       f1, _audioVolumeDefault@l(r11)
+0x00000124 = blr
+
+0x02893404 = bla       _eventHookStart ; Install Hook
-- 
2.30.2


From d247cb4a30518d6f9bc8b3bb5b0537c7ad5e7417 Mon Sep 17 00:00:00 2001
From: XyFreak <xyfreak@tenyx.de>
Date: Sun, 19 May 2019 13:40:30 +0200
Subject: [PATCH 5/7] Add support for versions 1.0.1E and (propably) 1.0.0E.

I don't have access to 1.0.0E right now but since every other patch for 1.0.1E also works with 1.0.0E I'll just assume this one is gonna work as well.
---
 .../XenobladeX_mod_RebalanceAudio/patches.txt | 135 ++++++++++++++++++
 1 file changed, 135 insertions(+)

diff --git a/Mods/XenobladeX_mod_RebalanceAudio/patches.txt b/Mods/XenobladeX_mod_RebalanceAudio/patches.txt
index 81e4956d..2332933c 100644
--- a/Mods/XenobladeX_mod_RebalanceAudio/patches.txt
+++ b/Mods/XenobladeX_mod_RebalanceAudio/patches.txt
@@ -132,3 +132,138 @@ _eventHookDefault = 0x0000011C
 0x00000124 = blr
 
 0x02893404 = bla       _eventHookStart ; Install Hook
+
+[XCXRebalanceAudioV100E_V101E]
+moduleMatches = 0x218F6E07, 0xF882D5CF
+codeCaveSize = 0x200
+
+##
+# You may change these floats
+##
+
+0x000001A0 = .float 0.7 ; BGM
+0x000001A4 = .float 1.0 ; VOICE
+0x000001A8 = .float 0.7 ; BATTLE
+0x000001AC = .float 0.7 ; FIELD
+0x000001B0 = .float 0.7 ; GIMMICK
+0x000001B4 = .float 0.7 ; SYSTEM
+0x000001B8 = .float 1.0 ; ENVIRONMENT
+0x000001BC = .float 1.0 ; WEATHER
+0x000001C0 = .float 1.0 ; EVENT_CS
+0x000001C4 = .float 1.0 ; EVENT_VOICE
+0x000001C8 = .float 1.0 ; EVENT_SE
+
+##
+# Do not touch anything below if you don't know what you are doing!
+##
+
+# Labels for individual volume floats
+_audioVolumeDefault     = 0x1006CF88 ; Also used by the fallback branch of setupCategory
+_audioVolumeBgm         = 0x000001A0
+_audioVolumeVoice       = 0x000001A4
+_audioVolumeBattle      = 0x000001A8
+_audioVolumeField       = 0x000001AC
+_audioVolumeGimmick     = 0x000001B0
+_audioVolumeSystem      = 0x000001B4
+_audioVolumeEnvironment = 0x000001B8
+_audioVolumeWeather     = 0x000001BC
+_audioVolumeEventCs     = 0x000001C0
+_audioVolumeEventVoice  = 0x000001C4
+_audioVolumeEventSe     = 0x000001C8
+_audioVolumeUnknown     = 0x000001F0
+
+##
+# Hook routines start here
+##
+
+# Override BGM volume
+_hookSetBgmVolume = 0x00000000
+0x00000000 = lis       r11, _audioVolumeBgm@ha
+0x00000004 = lfs       f1, _audioVolumeBgm@l(r11)
+0x00000008 = blr
+0x028933D4 = bla       _hookSetBgmVolume ; Install Hook
+
+# Override Voice volume
+_hookSetVoiceVolume = 0x00000010
+0x00000010 = lis       r11, _audioVolumeVoice@ha
+0x00000014 = lfs       f1, _audioVolumeVoice@l(r11)
+0x00000018 = blr
+0x028933E8 = bla       _hookSetVoiceVolume ; Install Hook
+
+# Override Battle volume
+_hookSetBattleVolume = 0x00000020
+0x00000020 = lis       r11, _audioVolumeBattle@ha
+0x00000024 = lfs       f1, _audioVolumeBattle@l(r11)
+0x00000028 = blr
+0x028933FC = bla       _hookSetBattleVolume ; Install Hook
+
+# Override Field volume
+_hookSetFieldVolume = 0x00000030
+0x00000030 = lis       r11, _audioVolumeField@ha
+0x00000034 = lfs       f1, _audioVolumeField@l(r11)
+0x00000038 = blr
+0x02893410 = bla       _hookSetFieldVolume ; Install Hook
+
+# Override Gimmick volume
+_hookSetGimmickVolume = 0x00000040
+0x00000040 = lis       r11, _audioVolumeGimmick@ha
+0x00000044 = lfs       f1, _audioVolumeGimmick@l(r11)
+0x00000048 = blr
+0x02893424 = bla       _hookSetGimmickVolume ; Install Hook
+
+# Override System volume
+_hookSetSystemVolume = 0x00000050
+0x00000050 = lis       r11, _audioVolumeSystem@ha
+0x00000054 = lfs       f1, _audioVolumeSystem@l(r11)
+0x00000058 = blr
+0x02893438 = bla       _hookSetSystemVolume ; Install Hook
+
+# Override Environment volume
+_hookSetEnvironmentVolume = 0x00000060
+0x00000060 = lis       r11, _audioVolumeEnvironment@ha
+0x00000064 = lfs       f1, _audioVolumeEnvironment@l(r11)
+0x00000068 = blr
+0x0289344C = bla       _hookSetEnvironmentVolume ; Install Hook
+
+# Override Weather volume
+_hookSetWeatherVolume = 0x00000070
+0x00000070 = lis       r11, _audioVolumeWeather@ha
+0x00000074 = lfs       f1, _audioVolumeWeather@l(r11)
+0x00000078 = blr
+0x02893460 = bla       _hookSetWeatherVolume ; Install Hook
+
+# EVENT_* is initialized in a loop so we have to identify the current loop
+# iteration and return the desired value
+
+_eventHookStart   = 0x00000080
+_eventHookVoice   = 0x00000094
+_eventHookSe      = 0x00000108
+_eventHookDefault = 0x0000011C
+
+# EVENT_CS
+0x00000080 = cmpwi     r28, 3
+0x00000084 = bne       _eventHookVoice
+0x00000088 = lis       r11, _audioVolumeEventCs@ha
+0x0000008C = lfs       f1, _audioVolumeEventCs@l(r11)
+0x00000090 = blr
+
+# EVENT_VOICE
+0x00000094 = cmpwi     r28, 2
+0x00000098 = bne       _eventHookSe
+0x0000009C = lis       r11, _audioVolumeEventVoice@ha
+0x00000100 = lfs       f1, _audioVolumeEventVoice@l(r11)
+0x00000104 = blr
+
+# EVENT_SE
+0x00000108 = cmpwi     r28, 1
+0x0000010C = bne       _eventHookDefault
+0x00000110 = lis       r11, _audioVolumeEventSe@ha
+0x00000114 = lfs       f1, _audioVolumeEventSe@l(r11)
+0x00000118 = blr
+
+# Anything else
+0x0000011C = lis       r11, _audioVolumeDefault@ha
+0x00000120 = lfs       f1, _audioVolumeDefault@l(r11)
+0x00000124 = blr
+
+0x02893480 = bla       _eventHookStart ; Install Hook
-- 
2.30.2


From 647d871c56589104f5f21393aa9f5cb6d87172af Mon Sep 17 00:00:00 2001
From: XyFreak <xyfreak@tenyx.de>
Date: Sun, 19 May 2019 14:13:48 +0200
Subject: [PATCH 6/7] Use presets instead of hardcoded values

---
 .../XenobladeX_mod_RebalanceAudio/patches.txt | 48 ++++++-------
 Mods/XenobladeX_mod_RebalanceAudio/rules.txt  | 69 +++++++++++++++++++
 2 files changed, 93 insertions(+), 24 deletions(-)

diff --git a/Mods/XenobladeX_mod_RebalanceAudio/patches.txt b/Mods/XenobladeX_mod_RebalanceAudio/patches.txt
index 2332933c..b7ab5175 100644
--- a/Mods/XenobladeX_mod_RebalanceAudio/patches.txt
+++ b/Mods/XenobladeX_mod_RebalanceAudio/patches.txt
@@ -3,20 +3,20 @@ moduleMatches = 0xAB97DE6B
 codeCaveSize = 0x200
 
 ##
-# You may change these floats
+# Floats for individual volume levels. Use presets to change.
 ##
 
-0x000001A0 = .float 0.7 ; BGM
-0x000001A4 = .float 1.0 ; VOICE
-0x000001A8 = .float 0.7 ; BATTLE
-0x000001AC = .float 0.7 ; FIELD
-0x000001B0 = .float 0.7 ; GIMMICK
-0x000001B4 = .float 0.7 ; SYSTEM
-0x000001B8 = .float 1.0 ; ENVIRONMENT
-0x000001BC = .float 1.0 ; WEATHER
-0x000001C0 = .float 1.0 ; EVENT_CS
-0x000001C4 = .float 1.0 ; EVENT_VOICE
-0x000001C8 = .float 1.0 ; EVENT_SE
+0x000001A0 = .float $volBgm         ; BGM
+0x000001A4 = .float $volVoice       ; VOICE
+0x000001A8 = .float $volBattle      ; BATTLE
+0x000001AC = .float $volField       ; FIELD
+0x000001B0 = .float $volGimmick     ; GIMMICK
+0x000001B4 = .float $volSystem      ; SYSTEM
+0x000001B8 = .float $volEnvironment ; ENVIRONMENT
+0x000001BC = .float $volWeather     ; WEATHER
+0x000001C0 = .float $volEventCs     ; EVENT_CS
+0x000001C4 = .float $volEventVoice  ; EVENT_VOICE
+0x000001C8 = .float $volEventSe     ; EVENT_SE
 
 ##
 # Do not touch anything below if you don't know what you are doing!
@@ -138,20 +138,20 @@ moduleMatches = 0x218F6E07, 0xF882D5CF
 codeCaveSize = 0x200
 
 ##
-# You may change these floats
+# Floats for individual volume levels. Use presets to change.
 ##
 
-0x000001A0 = .float 0.7 ; BGM
-0x000001A4 = .float 1.0 ; VOICE
-0x000001A8 = .float 0.7 ; BATTLE
-0x000001AC = .float 0.7 ; FIELD
-0x000001B0 = .float 0.7 ; GIMMICK
-0x000001B4 = .float 0.7 ; SYSTEM
-0x000001B8 = .float 1.0 ; ENVIRONMENT
-0x000001BC = .float 1.0 ; WEATHER
-0x000001C0 = .float 1.0 ; EVENT_CS
-0x000001C4 = .float 1.0 ; EVENT_VOICE
-0x000001C8 = .float 1.0 ; EVENT_SE
+0x000001A0 = .float $volBgm         ; BGM
+0x000001A4 = .float $volVoice       ; VOICE
+0x000001A8 = .float $volBattle      ; BATTLE
+0x000001AC = .float $volField       ; FIELD
+0x000001B0 = .float $volGimmick     ; GIMMICK
+0x000001B4 = .float $volSystem      ; SYSTEM
+0x000001B8 = .float $volEnvironment ; ENVIRONMENT
+0x000001BC = .float $volWeather     ; WEATHER
+0x000001C0 = .float $volEventCs     ; EVENT_CS
+0x000001C4 = .float $volEventVoice  ; EVENT_VOICE
+0x000001C8 = .float $volEventSe     ; EVENT_SE
 
 ##
 # Do not touch anything below if you don't know what you are doing!
diff --git a/Mods/XenobladeX_mod_RebalanceAudio/rules.txt b/Mods/XenobladeX_mod_RebalanceAudio/rules.txt
index a3875d35..08026c2b 100644
--- a/Mods/XenobladeX_mod_RebalanceAudio/rules.txt
+++ b/Mods/XenobladeX_mod_RebalanceAudio/rules.txt
@@ -5,3 +5,72 @@ path = "Xenoblade Chronicles X/Mods/RebalanceAudio"
 description = Edit presets for preference. Settings become active once past the title screen.
 version = 3
 
+[Preset]
+name = "Default"
+$volBgm = 1.0
+$volVoice = 1.0
+$volBattle = 1.0
+$volField = 1.0
+$volGimmick = 1.0
+$volSystem = 1.0
+$volEnvironment = 1.0
+$volWeather = 1.0
+$volEventCs = 1.0
+$volEventVoice = 1.0
+$volEventSe = 1.0
+
+[Preset]
+name = "Voice +10%"
+$volBgm = 0.91
+$volVoice = 1.0
+$volBattle = 0.91
+$volField = 0.91
+$volGimmick = 0.91
+$volSystem = 0.91
+$volEnvironment = 0.91
+$volWeather = 0.91
+$volEventCs = 1.0
+$volEventVoice = 1.0
+$volEventSe = 1.0
+
+[Preset]
+name = "Voice +20%"
+$volBgm = 0.83
+$volVoice = 1.0
+$volBattle = 0.83
+$volField = 0.83
+$volGimmick = 0.83
+$volSystem = 0.83
+$volEnvironment = 0.83
+$volWeather = 0.83
+$volEventCs = 1.0
+$volEventVoice = 1.0
+$volEventSe = 1.0
+
+[Preset]
+name = "XyFreak's recommendation"
+$volBgm = 0.7
+$volVoice = 1.0
+$volBattle = 0.7
+$volField = 0.7
+$volGimmick = 0.7
+$volSystem = 0.7
+$volEnvironment = 1.0
+$volWeather = 1.0
+$volEventCs = 1.0
+$volEventVoice = 1.0
+$volEventSe = 1.0
+
+[Preset]
+name = "Silence (for testing)"
+$volBgm = 0.0
+$volVoice = 0.0
+$volBattle = 0.0
+$volField = 0.0
+$volGimmick = 0.0
+$volSystem = 0.0
+$volEnvironment = 0.0
+$volWeather = 0.0
+$volEventCs = 0.0
+$volEventVoice = 0.0
+$volEventSe = 0.0
-- 
2.30.2


From 25e4a015c1e41833c8cbc4bfbcc303939236102a Mon Sep 17 00:00:00 2001
From: XyFreak <xyfreak@tenyx.de>
Date: Tue, 28 May 2019 22:06:14 +0200
Subject: [PATCH 7/7] Use more refined values for recommendation

---
 Mods/XenobladeX_mod_RebalanceAudio/rules.txt | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/Mods/XenobladeX_mod_RebalanceAudio/rules.txt b/Mods/XenobladeX_mod_RebalanceAudio/rules.txt
index 08026c2b..de79aa57 100644
--- a/Mods/XenobladeX_mod_RebalanceAudio/rules.txt
+++ b/Mods/XenobladeX_mod_RebalanceAudio/rules.txt
@@ -49,12 +49,12 @@ $volEventSe = 1.0
 
 [Preset]
 name = "XyFreak's recommendation"
-$volBgm = 0.7
+$volBgm = 0.75
 $volVoice = 1.0
-$volBattle = 0.7
-$volField = 0.7
-$volGimmick = 0.7
-$volSystem = 0.7
+$volBattle = 0.91
+$volField = 0.91
+$volGimmick = 0.91
+$volSystem = 0.8
 $volEnvironment = 1.0
 $volWeather = 1.0
 $volEventCs = 1.0
-- 
2.30.2