From e7bcb5744926f983feced50ee01e676957361a12 Mon Sep 17 00:00:00 2001 From: XyFreak Date: Thu, 23 May 2019 20:00:08 +0200 Subject: [PATCH 1/8] Found and added appropriate offset to apply Static60fps patch version 1.0.1U --- Mods/XenobladeX_Static60fps/patches.txt | 30 ++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/Mods/XenobladeX_Static60fps/patches.txt b/Mods/XenobladeX_Static60fps/patches.txt index 2ecea480..40698777 100644 --- a/Mods/XenobladeX_Static60fps/patches.txt +++ b/Mods/XenobladeX_Static60fps/patches.txt @@ -90,6 +90,34 @@ _fullRate = 0x100D03E8 # swapInterval 60 0x02FD8A94 = li r3, 1 +[XCX60fpsV101U] +moduleMatches = 0xAB97DE6B + +#Default as of 0.51 - Limit logic/2d animation to 30 fps Less timing issues +0x100D0330 = .float 0.5 # .float 1.0 # GUI animations * +0x100598E4 = .float 0.5 # .float 1.0 #Title screen cutscene - +0x10014528 = .float 0.05 # controller acceleration - +0x10171980 = .float 2.0 # arbitrary 2.0 float +#0x10095598 = .float 30.0 + +_halfRate = 0x10171980 +_fullRate = 0x100D0330 +# +# +0x02739854 = lis r11, _halfRate@ha # Double updateEventParam cutscene - +0x02739860 = lfs f1, _halfRate@l(r11) # - +0x027A3378 = lis r10, _fullRate@ha # half SyncFrame cinematic cutscene, fixes timing issues with cinematic cutscenes - +0x027A337C = lfs f1, _fullRate@l(r10) # but introduces Shake and stutter issue. CODE XREF: ev::CEvtManager::startPage((float,bool))+6Cj - +0x025F292C = lis r12, _fullRate@h ### Move__11CfSceneTaskFv #Filter CPU, 30 fps logic +0x025F2934 = lfs f31, _fullRate@l(r12) ### Move__11CfSceneTaskFv # +0x0276A7FC = lis r8, _fullRate@ha # sync in game cut scene +0x0276A800 = lfs f31, _fullRate@l(r8) # +0x0273E36C = lis r7, _fullRate@ha # sync elevator, vehicles etc +0x0273E370 = lfs f31, _fullRate@l(r7) # Ç + +# swapInterval 60 +0x02FD88BC = li r3, 1 + [XCX60fpsV102U] moduleMatches = 0x30B6E091 @@ -143,4 +171,4 @@ _fullRate = 0x100D03D0 # swapInterval 60 0x02FD8A34 = li r3, 1 -#SNESticleNGCVERIONPP71Copyright - Sardu you magnificent bastard, we salute you! \ No newline at end of file +#SNESticleNGCVERIONPP71Copyright - Sardu you magnificent bastard, we salute you! -- 2.30.2 From b05b11c061f6fde5d82340e167a58cd1615733a1 Mon Sep 17 00:00:00 2001 From: XyFreak Date: Tue, 28 May 2019 23:21:54 +0200 Subject: [PATCH 2/8] Removed some leftovers --- Mods/XenobladeX_Static60fps/patches.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Mods/XenobladeX_Static60fps/patches.txt b/Mods/XenobladeX_Static60fps/patches.txt index 40698777..11d4169e 100644 --- a/Mods/XenobladeX_Static60fps/patches.txt +++ b/Mods/XenobladeX_Static60fps/patches.txt @@ -98,7 +98,6 @@ moduleMatches = 0xAB97DE6B 0x100598E4 = .float 0.5 # .float 1.0 #Title screen cutscene - 0x10014528 = .float 0.05 # controller acceleration - 0x10171980 = .float 2.0 # arbitrary 2.0 float -#0x10095598 = .float 30.0 _halfRate = 0x10171980 _fullRate = 0x100D0330 @@ -171,4 +170,4 @@ _fullRate = 0x100D03D0 # swapInterval 60 0x02FD8A34 = li r3, 1 -#SNESticleNGCVERIONPP71Copyright - Sardu you magnificent bastard, we salute you! +#SNESticleNGCVERIONPP71Copyright - Sardu you magnificent bastard, we salute you! \ No newline at end of file -- 2.30.2 From 871d76ba00746025772e7095e41d732646fee288 Mon Sep 17 00:00:00 2001 From: XyFreak Date: Sun, 19 May 2019 11:37:18 +0200 Subject: [PATCH 3/8] 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 Date: Sun, 19 May 2019 13:19:41 +0200 Subject: [PATCH 4/8] 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 Date: Sun, 19 May 2019 13:32:08 +0200 Subject: [PATCH 5/8] 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 Date: Sun, 19 May 2019 13:40:30 +0200 Subject: [PATCH 6/8] 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 Date: Sun, 19 May 2019 14:13:48 +0200 Subject: [PATCH 7/8] 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 Date: Tue, 28 May 2019 22:06:14 +0200 Subject: [PATCH 8/8] 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