diff --git a/Enhancements/XenobladeX_AnisotropicFiltering/rules.txt b/Enhancements/XenobladeX_AnisotropicFiltering/rules.txt deleted file mode 100644 index b7531e19..00000000 --- a/Enhancements/XenobladeX_AnisotropicFiltering/rules.txt +++ /dev/null @@ -1,48 +0,0 @@ -[Definition] -titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 -name = Anisotropic Filtering -path = "Xenoblade Chronicles X/Enhancements/Anisotropic Filtering" -description = Requires Cemu 1.21.3 or above|Enables x16 anisotropic filtering for ground, wall and vegetation textures.|Has a minimal performance impact. -version = 6 - -[TextureRedefine] # Mountain Textures -width = 2048 -height = 1024 -formats = 0x031 -overwriteAnisotropy = 16 - -[TextureRedefine] # Ground/Rock Textures -width = 1024 -height = 1024 -formats = 0x031 -overwriteAnisotropy = 16 - -[TextureRedefine] # Ground/Sand Textures -width = 512 -height = 512 -formats = 0x031 -overwriteAnisotropy = 16 - -[TextureRedefine] # Tree Textures -width = 128 -height = 512 -formats = 0x031 -overwriteAnisotropy = 16 - -[TextureRedefine] # Ground/Sand/Plant Textures -width = 256 -height = 256 -formats = 0x031 -overwriteAnisotropy = 16 - -[TextureRedefine] # Grass/Plant Textures -width = 256 -height = 128 -formats = 0x031 -overwriteAnisotropy = 16 - -[TextureRedefine] # Grass/Plant Textures -width = 128 -height = 128 -formats = 0x033 -overwriteAnisotropy = 16 \ No newline at end of file diff --git a/Mods/XenobladeX/XenobladeX_60FPS/patches.txt b/Mods/XenobladeX/XenobladeX_60FPS/patches.txt deleted file mode 100644 index d616feaa..00000000 --- a/Mods/XenobladeX/XenobladeX_60FPS/patches.txt +++ /dev/null @@ -1,189 +0,0 @@ -[XCX60fpsV16J] -moduleMatches = 0x785CA8A9 -#Default as of 0.51 - Limit logic/2d animation to 30 fps Less timing issues, more jitter -#0x100D0604 = .float 0.5 # .float 1.0 # GUI animations -0x100CFAE8 = .float 0.5 # .float 1.0 # GUI animations * -0x10059514 = .float 0.5 # .float 1.0 #Title screen cutscene - -0x100144F0 = .float 0.1 # controller acceleration -0x10171070 = .float 2.0 # arbitrary 2.0 float -0x1017117C = .float 0.5 # .5 float -_halfRate = 0x10171070 -_fullRate = 0x1017117C - -0x027370B8 = lis r11, _halfRate@ha # Double updateEventParam cutscene -0x027370C4 = lfs f1, _halfRate@l(r11) # - -0x027A0180 = lis r10, _fullRate@ha # half SyncFrame cinematic cutscene, fixes timing issues with cinematic cutscenes - -0x027A0184 = lfs f1, _fullRate@l(r10) # but introduces Shake and stutter issue. CODE XREF: ev::CEvtManager::startPage((float,bool))+6C j - - -0x025F149C = lis r12, _fullRate@h ### Move__11CfSceneTaskFv #Filter CPU, 30 fps logic -0x025F14A4 = lfs f31, _fullRate@l(r12) ### Move__11CfSceneTaskFv # -0x02768064 = lis r8, _fullRate@ha # sync in game cut scene -0x02768068 = lfs f31, _fullRate@l(r8) # -0x0273BBD0 = lis r7, _fullRate@ha # sync elevator, vehicles etc -0x0273BBD4 = lfs f31, _fullRate@l(r7) # Ç - -# swapInterval 60 -0x02FCEB9C = li r3, 1 - -[XCX60fpsV48J] -moduleMatches = 0x7672271D -#Default as of 0.51 - Limit logic/2d animation to 30 fps Less timing issues, more jitter -#0x100D0604 = .float 0.5 # .float 1.0 # GUI animations * -#0x1005989C = .float 0.5 # .float 1.0 #Title screen cutscene - -#0x10014528 = .float 0.1 # controller acceleration - -#0x10171980 = .float 2.0 # arbitrary 2.0 float - -0x100D0070 = .float 0.5 -0x1005989C = .float 0.5 -0x10014528 = .float 0.1 -0x10171570 = .float 2.0 - -_halfRate = 0x10171570 -_fullRate = 0x100D0070 - -0x0273802C = lis r11, _halfRate@ha # Double updateEventParam cutscene, ver -0x02738038 = lfs f1, _halfRate@l(r11) # - -0x027A1120 = lis r10, _fullRate@ha # half SyncFrame cinematic cutscene, fixes timing issues with cinematic cutscenes - -0x027A1124 = lfs f1, _fullRate@l(r10) # but introduces Shake and stutter issue. CODE XREF: ev::CEvtManager::startPage((float,bool))+6C j - - -0x025F1F78 = lis r12, _fullRate@h ### Move__11CfSceneTaskFv #Filter CPU, 30 fps logic -0x025F1F80 = lfs f31, _fullRate@l(r12) ### Move__11CfSceneTaskFv # -0x02768FD4 = lis r8, _fullRate@ha # sync in game cut scene -0x02768FD8 = lfs f31, _fullRate@l(r8) # -0x0273CB44 = lis r7, _fullRate@ha # sync elevator, vehicles etc -0x0273CB48 = lfs f31, _fullRate@l(r7) # Ç - -# swapInterval 60 -0x02FD3F5C= li r3, 1 - -[XCX60fpsV100E_V101E] -moduleMatches = 0x218F6E07, 0xF882D5CF -#Default as of 0.51 - Limit logic/2d animation to 30 fps Less timing issues -0x100D03E8 = .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 - -_halfRate = 0x10171980 -_fullRate = 0x100D03E8 -# -# -0x027398B4 = lis r11, _halfRate@ha # Double updateEventParam cutscene - -0x027398C0 = lfs f1, _halfRate@l(r11) # - -0x027A33D8 = lis r10, _fullRate@ha # half SyncFrame cinematic cutscene, fixes timing issues with cinematic cutscenes - -0x027A33DC = lfs f1, _fullRate@l(r10) # but introduces Shake and stutter issue. CODE XREF: ev::CEvtManager::startPage((float,bool))+6Cj - - -#0x02707478 = lis r7, _tmp@ha # ALT calcAdxSkip__Q2_2ev13CFrameManagerFv -#0x0270747C = lfs f1, _tmp@l(r7) # calcAdxSkip__Q2_2ev13CFrameManagerFv -#0x02707660 = lis r9, _tmp@ha # calcCpuSkip__Q2_2ev13CFrameManagerFv # SLOW down scene -#0x02707668 = lfs f31, _tmp@l(r9) # calcCpuSkip__Q2_2ev13CFrameManagerFv - - -0x025F299C = lis r12, _fullRate@h ### Move__11CfSceneTaskFv #Filter CPU, 30 fps logic -0x025F29A4 = lfs f31, _fullRate@l(r12) ### Move__11CfSceneTaskFv # -0x0276A85C = lis r8, _fullRate@ha # sync in game cut scene -0x0276A860 = lfs f31, _fullRate@l(r8) # -0x0273E3CC = lis r7, _fullRate@ha # sync elevator, vehicles etc -0x0273E3D0 = lfs f31, _fullRate@l(r7) # Ç - -# swapInterval 60 -0x02FD8A94 = li r3, 1 - -0x10012644 = .float 15.0 ; fix for soulvoices (not sure it's safe) - -codeCaveSize = 0x30 - -; menu::MenuButtonChallenge::setup -0x00000000 = .float 15.0 ; reduces speed of animation -_setup = 0x00000000 -0x02ACE40C = lis r7, _setup@ha -0x02ACE414 = lfs f0, _setup@l(r7) - -_justFrame1 = 0x00000010 -0x00000010 = lwz r12, 0x47C(r29) -0x00000014 = mulli r12, r12, 2 -0x00000018 = blr -0x02ACE6E4 = bla _justFrame1 - -_justFrame2 = 0x00000020 -0x00000020 = lwz r0, 0x478(r29) -0x00000024 = mulli r0, r0, 2 -0x00000028 = blr -0x02ACE700 = bla _justFrame2 - -[XCX60fpsV102U] -moduleMatches = 0x30B6E091 - -#Default as of 0.51 - Limit logic/2d animation to 30 fps Less timing issues -0x100D03D0 = .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 -_halfRate = 0x10171980 -_fullRate = 0x100D03D0 - - -0x027398B4 = lis r11, _halfRate@ha # Double updateEventParam cutscene -0x027398C0 = lfs f1, _halfRate@l(r11) # -0x027A33D8 = lis r10, _fullRate@ha # half SyncFrame cinematic cutscene, fixes timing issues with cinematic cutscenes -0x027A33DC = lfs f1, _fullRate@l(r10) # but introduces Shake and stutter issue. -0x025F299C = lis r12, _fullRate@h ### Move__11CfSceneTaskFv #Filter CPU, 30 fps logic -0x025F29A4 = lfs f31, _fullRate@l(r12) ### Move__11CfSceneTaskFv # -0x0276A85C = lis r8, _fullRate@ha # sync in game cut scene -0x0276A860 = lfs f31, _fullRate@l(r8) # -0x0273E3CC = lis r7, _fullRate@ha # sync elevator, vehicles etc -0x0273E3D0 = lfs f31, _fullRate@l(r7) # Ç - - -#Disabled, original per feature approach, severe timing issues -#0x101231F0 = .float 0.5 # .float 1.0 # ingame animation timing -#0x100D03D0 = .float 0.5 # .float 1.0 # GUI animations -#0x100598E4 = .float 0.5 # .float 1.0 #Title screen cutscene -#0x1003C3A0 = .float 15.0 # .float 30.0 fight 3d animations -#0x1000F7A8 = .float 0.1 # RegistDamage_ButtonChallenge -#0x10014528 = .float 0.05 # controller acceleration -#0x100211D8 = .float 15.0 # .float 30.0 fade in -#0x10034804 = .float 15.0 # .float 30.0 bullets -#0x10035D84 = .float 15.0 # walk acceleration -#0x1003C3A0 = .float 15.0 # arts frame to sec -#0x10012368 = .float 45.0 # respawn -#0x10012644 = .float 15.0 # soulvoice -#0x1000C448 = .float 15.0 # init battle -#0x1000CB90 = .float 15.0 # init battle -#0x1003E538 = .float 0.33333335 #birds, falling leaves -#0x10171980 = .float 2.0 # arbitrary 2.0 float -#0x100955F0 = .float 60.0 # 30.0 Create avatar cam rotation - -# JFF -#0x101123B4 = .float 0.03333335 # .float 0.016666668 superfast (vsync) -#0x10035D7C = .float 0.25 # .float 1.0 fast run -#0x10035E00 = .float 2.0 # jump high.float 0.5 -#0x10190C7C = .float 0.75 # master FOV -#0x10012368 = .float 45.0 # seconds before respawn "cheat" - -# swapInterval 60 -0x02FD8A34 = li r3, 1 - -0x10012644 = .float 15.0 ; fix for soulvoices (not sure it's safe) - -codeCaveSize = 0x30 - -0x00000000 = .float 15.0 ; reduces speed of animation -_setup = 0x00000000 -0x02ACE3FC = lis r7, _setup@ha -0x02ACE404 = lfs f0, _setup@l(r7) - - -_justFrame1 = 0x00000010 -0x00000010 = lwz r12, 0x47C(r29) -0x00000014 = mulli r12, r12, 2 -0x00000018 = blr -0x02ACE6D4 = bla _justFrame1 - -_justFrame2 = 0x00000020 -0x00000020 = lwz r0, 0x478(r29) -0x00000024 = mulli r0, r0, 2 -0x00000028 = blr -0x02ACE6F0 = bla _justFrame2 - -#SNESticleNGCVERIONPP71Copyright - Sardu you magnificent bastard, we salute you! \ No newline at end of file diff --git a/Mods/XenobladeX/XenobladeX_NoOfflineTag/patches.txt b/Mods/XenobladeX/XenobladeX_NoOfflineTag/patches.txt deleted file mode 100644 index 6652cc7d..00000000 --- a/Mods/XenobladeX/XenobladeX_NoOfflineTag/patches.txt +++ /dev/null @@ -1,15 +0,0 @@ -[XCXNOOFFV16J] -moduleMatches = 0x785CA8A9 -0x100B06DC = nop # frameIn - -[XCXNOFFV102J] -moduleMatches = 0x7672271D -0x100B0B28 = nop # frameIn - -[XCXNOFFV100E_V101E] -moduleMatches = 0x218F6E07, 0xF882D5CF -0x100B0B50 = nop # frameIn - -[XCXNOFFV102U] -moduleMatches = 0x30B6E091 -0x100B0B38 = nop # \ No newline at end of file diff --git a/Mods/XenobladeX/XenobladeX_NoOfflineTag/rules.txt b/Mods/XenobladeX/XenobladeX_NoOfflineTag/rules.txt deleted file mode 100644 index e7a03c05..00000000 --- a/Mods/XenobladeX/XenobladeX_NoOfflineTag/rules.txt +++ /dev/null @@ -1,6 +0,0 @@ -[Definition] -titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 -name = No offline tag -path = "Xenoblade Chronicles X/Mods/offline tag" -description = Removes offline blinking tag - Does not change actual offline state -version = 4 \ No newline at end of file diff --git a/Mods/XenobladeX/XenobladeX_mod_BattleDamageModGround/patches.txt b/Mods/XenobladeX/XenobladeX_mod_BattleDamageModGround/patches.txt deleted file mode 100644 index e744275f..00000000 --- a/Mods/XenobladeX/XenobladeX_mod_BattleDamageModGround/patches.txt +++ /dev/null @@ -1,39 +0,0 @@ -[XCX_DAMAGES] -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U - -codeCaveSize = 0x14 - -; ---------------------------------------------------------------------------- -; WHO : cfs::CfCompoPropertyEnemy::addDamage((int)) -; WHAT : Multiply the ground damage (skells not included) given to enemy - -0x00000000 = .byte $mult -_multiplicator = 0x00000000 - -_damages = 0x00000004 -0x00000004 = lis r4, _multiplicator@ha -0x00000008 = lbz r4, _multiplicator@l(r4) -0x0000000C = mullw r4, r4, r31 -0x00000010 = blr - -0x025D896C = bla _damages - -[XCX_DAMAGES_1U] ###################################################################### -moduleMatches = 0xAB97DE6B ; 1.0.1U - -codeCaveSize = 0x14 - -; ---------------------------------------------------------------------------- -; WHO : cfs::CfCompoPropertyEnemy::addDamage((int)) -; WHAT : Multiply the ground damage (skells not included) given to enemy - -0x00000000 = .byte $mult -_multiplicator = 0x00000000 - -_damages = 0x00000004 -0x00000004 = lis r4, _multiplicator@ha -0x00000008 = lbz r4, _multiplicator@l(r4) -0x0000000C = mullw r4, r4, r31 -0x00000010 = blr - -0x025D88FC = bla _damages \ No newline at end of file diff --git a/Mods/XenobladeX/XenobladeX_mod_BattleNoQTE/patches.txt b/Mods/XenobladeX/XenobladeX_mod_BattleNoQTE/patches.txt deleted file mode 100644 index fccee723..00000000 --- a/Mods/XenobladeX/XenobladeX_mod_BattleNoQTE/patches.txt +++ /dev/null @@ -1,15 +0,0 @@ -[XCX_CHALLENGE] -moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U - -; ---------------------------------------------------------------------------- -; WHO : Battle::CSoulVoiceButtonChallenge::updateInternal((float)) -; WHAT : Disable QTE (calling Battle::CButtonChallengeManager::CallUI) - -# Battle::CSoulVoiceButtonChallenge::applyResult((void)) -# |- SoulVoice::CSoulVoice::addStageLevel((unsigned int, float)) -0x0209BA38 = li r9, 1 ; always good result - -; Auto Apply QTE -_apply = 0x0209D764 -0x0209D6F0 = b _apply -0x0209D720 = b _apply diff --git a/Mods/XenobladeX/XenobladeX_mod_BattleNoQTE/rules.txt b/Mods/XenobladeX/XenobladeX_mod_BattleNoQTE/rules.txt deleted file mode 100644 index 736fcb8f..00000000 --- a/Mods/XenobladeX/XenobladeX_mod_BattleNoQTE/rules.txt +++ /dev/null @@ -1,6 +0,0 @@ -[Definition] -titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 -name = "Automatic Soul Challenges" -path = "Xenoblade Chronicles X/Mods/Battle/Automatic Soul Challenges" -description = The Soul Challenges QTE are hidden and automatically successful (no preset needed).|More info and help at reddit.com/r/cemu_xenoblade. -version = 4 diff --git a/Mods/XenobladeX/XenobladeX_mod_BladeGainTicketsFromMissions/patches.txt b/Mods/XenobladeX/XenobladeX_mod_BladeGainTicketsFromMissions/patches.txt deleted file mode 100644 index 69fbc93a..00000000 --- a/Mods/XenobladeX/XenobladeX_mod_BladeGainTicketsFromMissions/patches.txt +++ /dev/null @@ -1,135 +0,0 @@ -[XCX_TICKETS_DLC_1E] -moduleMatches = 0xF882D5CF ; 1.0.1E - -codeCaveSize = 0x60 - -0x0000005C = .byte $mission -_mission = 0x0000005C - -; ---------------------------------------------------------------------------- -; WHO : menu::MenuMultiQuestInfoWindow::displayInfo((menu::MenuObject *,bool)) -; menu::MenuMultiQuestResult::setup((void)) -; addReward__Q2_3cfs11CfSquadUtilSFUiT1 -; WHAT : Override the Tickets rewarded for a DLC mission. -; By default, the number of tickets is the money divided by 100. - -_shareAddr = 0x1039C180 - -_ticketsDispBefore = 0x00000000 -0x00000000 = lwz r24, 0x47C(r30) -0x00000004 = lwz r24, 8(r24) -0x00000008 = lis r26, _mission@ha -0x0000000C = lbz r26, _mission@l(r26) -0x00000010 = cmplw r24, r26 -0x00000014 = li r26, 0 -0x00000018 = lis r21, _shareAddr@ha -0x0000001C = stw r26, _shareAddr@l(r21) -0x00000020 = bnelr -0x00000024 = mr r26, r23 -0x00000028 = cmpwi r24, 5 -0x0000002C = bne .+0xC -0x00000030 = li r24, 100 -0x00000034 = divw r26, r22, r24 ; r23 = exp, r22 = money -0x00000038 = lis r21, _shareAddr@ha -0x0000003C = stw r26, _shareAddr@l(r21) -0x00000040 = blr - -_ticketsDispAfter = 0x00000044 -0x00000044 = lis r5, _shareAddr@ha -0x00000048 = lwz r5, _shareAddr@l(r5) -0x0000004C = blr - -_ticketsValue = 0x00000050 -0x00000050 = lis r27, _shareAddr@ha -0x00000054 = lwz r27, _shareAddr@l(r27) -0x00000058 = blr - -0x02B94718 = bla _ticketsDispBefore -0x02B9FE2C = bla _ticketsDispAfter -0x023CC654 = bla _ticketsValue - -[XCX_TICKETS_DLC_2U] ############################################################################################ -moduleMatches = 0x30B6E091 ; 1.0.2U - -codeCaveSize = 0x60 - -0x0000005C = .byte $mission -_mission = 0x0000005C - -_shareAddr = 0x1039C180 - -_ticketsDispBefore = 0x00000000 -0x00000000 = lwz r24, 0x47C(r30) -0x00000004 = lwz r24, 8(r24) -0x00000008 = lis r26, _mission@ha -0x0000000C = lbz r26, _mission@l(r26) -0x00000010 = cmplw r24, r26 -0x00000014 = li r26, 0 -0x00000018 = lis r21, _shareAddr@ha -0x0000001C = stw r26, _shareAddr@l(r21) -0x00000020 = bnelr -0x00000024 = mr r26, r23 -0x00000028 = cmpwi r24, 5 -0x0000002C = bne .+0xC -0x00000030 = li r24, 100 -0x00000034 = divw r26, r22, r24 ; r23 = exp, r22 = money -0x00000038 = lis r21, _shareAddr@ha -0x0000003C = stw r26, _shareAddr@l(r21) -0x00000040 = blr - -_ticketsDispAfter = 0x00000044 -0x00000044 = lis r5, _shareAddr@ha -0x00000048 = lwz r5, _shareAddr@l(r5) -0x0000004C = blr - -_ticketsValue = 0x00000050 -0x00000050 = lis r27, _shareAddr@ha -0x00000054 = lwz r27, _shareAddr@l(r27) -0x00000058 = blr - -0x02B94708 = bla _ticketsDispBefore -0x02B9FE1C = bla _ticketsDispAfter -0x023CC654 = bla _ticketsValue - -[XCX_TICKETS_DLC_1U] ############################################################################################ -moduleMatches = 0xAB97DE6B ; 1.0.1U - -codeCaveSize = 0x60 - -0x0000005C = .byte $mission -_mission = 0x0000005C - -_shareAddr = 0x1039C080 - -_ticketsDispBefore = 0x00000000 -0x00000000 = lwz r24, 0x47C(r30) -0x00000004 = lwz r24, 8(r24) -0x00000008 = lis r26, _mission@ha -0x0000000C = lbz r26, _mission@l(r26) -0x00000010 = cmplw r24, r26 -0x00000014 = li r26, 0 -0x00000018 = lis r21, _shareAddr@ha -0x0000001C = stw r26, _shareAddr@l(r21) -0x00000020 = bnelr -0x00000024 = mr r26, r23 -0x00000028 = cmpwi r24, 5 -0x0000002C = bne .+0xC -0x00000030 = li r24, 100 -0x00000034 = divw r26, r22, r24 ; r23 = exp, r22 = money -0x00000038 = lis r21, _shareAddr@ha -0x0000003C = stw r26, _shareAddr@l(r21) -0x00000040 = blr - -_ticketsDispAfter = 0x00000044 -0x00000044 = lis r5, _shareAddr@ha -0x00000048 = lwz r5, _shareAddr@l(r5) -0x0000004C = blr - -_ticketsValue = 0x00000050 -0x00000050 = lis r27, _shareAddr@ha -0x00000054 = lwz r27, _shareAddr@l(r27) -0x00000058 = blr - -0x02B9468C = bla _ticketsDispBefore -0x02B9FD2C = bla _ticketsDispAfter -0x023CC5E4 = bla _ticketsValue diff --git a/Mods/XenobladeX/XenobladeX_mod_BladeLv60SkellsUnlocked/patches.txt b/Mods/XenobladeX/XenobladeX_mod_BladeLv60SkellsUnlocked/patches.txt deleted file mode 100644 index 0ff89ba7..00000000 --- a/Mods/XenobladeX/XenobladeX_mod_BladeLv60SkellsUnlocked/patches.txt +++ /dev/null @@ -1,86 +0,0 @@ -[XCX_UNLOCKPOSTSKELLS_1E] ################################################################ -moduleMatches = 0xF882D5CF ; 1.0.1E - -codeCaveSize = 0x1C - -# menu::MenuArmsCompany::IsDollLicense(const(void)) -0x02A6B838 = li r3, 1 ; always returns true - -# menu::MenuArmsCompanyDevelopSelectBlueprint::InitializeItemData((void)) -0x02A7B220 = li r30, 0 ; unlock everything - -# menu::MenuArmsCompanyDevelopSelectBlueprint::CheckEnableDevelop(const(int, bool)) -0x00000000 = .byte $miranium -0x00000001 = .byte $resource -_miranium = 0x00000000 -_resource = 0x00000001 - -_checkMir = 0x00000004 -0x00000004 = lis r3, _miranium@ha -0x00000008 = lbz r3, _miranium@l(r3) -0x0000000C = blr -0x02A7A784 = bla _checkMir - -_checkRes = 0x00000010 -0x00000010 = lis r3, _resource@ha -0x00000014 = lbz r3, _resource@l(r3) -0x00000018 = blr -0x02A7A954 = bla _checkRes -;0x02A7A6E8 = li r3, 0 ; 1 -;0x02A7A70C = li r3, 0 ; 6 -;0x02A7A75C = li r3, 0 ; 7 -;0x02A7A9FC = li r3, 0 ; 4 -;0x02A7AA24 = li r3, 0 ; 5 - -[XCX_UNLOCKPOSTSKELLS_2U] ################################################################ -moduleMatches = 0x30B6E091 ; 1.0.2U - -codeCaveSize = 0x1C - -# menu::MenuArmsCompany::IsDollLicense(const(void)) -0x02A6B828 = li r3, 1 ; always returns true - -# menu::MenuArmsCompanyDevelopSelectBlueprint::InitializeItemData((void)) -0x02A7B210 = li r30, 0 ; unlock everything - -0x00000000 = .byte $miranium -0x00000001 = .byte $resource -_miranium = 0x00000000 -_resource = 0x00000001 - -_checkMir = 0x00000004 -0x00000004 = lis r3, _miranium@ha -0x00000008 = lbz r3, _miranium@l(r3) -0x0000000C = blr -0x02A7A774 = bla _checkMir - -_checkRes = 0x00000010 -0x00000010 = lis r3, _resource@ha -0x00000014 = lbz r3, _resource@l(r3) -0x00000018 = blr -0x02A7A944 = bla _checkRes - -[XCX_UNLOCKPOSTSKELLS_1U] ################################################################ -moduleMatches = 0xAB97DE6B ; 1.0.1U - -codeCaveSize = 0x1C - -0x02A6B7AC = li r3, 1 ; always returns true -0x02A7B194 = li r30, 0 ; unlock everything - -0x00000000 = .byte $miranium -0x00000001 = .byte $resource -_miranium = 0x00000000 -_resource = 0x00000001 - -_checkMir = 0x00000004 -0x00000004 = lis r3, _miranium@ha -0x00000008 = lbz r3, _miranium@l(r3) -0x0000000C = blr -0x02A7A6F8 = bla _checkMir - -_checkRes = 0x00000010 -0x00000010 = lis r3, _resource@ha -0x00000014 = lbz r3, _resource@l(r3) -0x00000018 = blr -0x02A7A8C8 = bla _checkRes diff --git a/Mods/XenobladeX/XenobladeX_mod_BladeMoreTickets/patches.txt b/Mods/XenobladeX/XenobladeX_mod_BladeMoreTickets/patches.txt deleted file mode 100644 index 7d29aea3..00000000 --- a/Mods/XenobladeX/XenobladeX_mod_BladeMoreTickets/patches.txt +++ /dev/null @@ -1,134 +0,0 @@ -[XCX_BLADE_MORETICKETS] -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U - -codeCaveSize = 0x40 - -0x00000000 = .short $mult -_mult = 0x00000000 -0x00000004 = .byte $uncap -_uncap = 0x00000004 - -; ---------------------------------------------------------------------------- -; WHO : cfs::CfSocialManager::addTradeTicket((int, unsigned int)) -; WHAT : Multiply the reward tickets given in many occasions - -_moreTickets = 0x00000008 -0x00000008 = mr r30, r3 -0x0000000C = lis r28, _mult@ha -0x00000010 = lhz r28, _mult@l(r28) -0x00000014 = cmpwi r4, 0 -0x00000018 = bltlr -0x0000001C = mullw r4, r4, r28 -0x00000020 = blr - -0x022CA86C = bla _moreTickets - -; ---------------------------------------------------------------------------- -; WHO : cfs::CfSocialManager::addTradeTicket((int, unsigned int)) -; WHAT : Ignore the max number of tickets we can get - -_uncapTickets = 0x00000024 -0x00000024 = lis r5, _uncap@ha -0x00000028 = lbz r5, _uncap@l(r5) -0x0000002C = cmpwi r5, 1 -0x00000030 = beqlr -0x00000034 = mr r3, r25 -0x00000038 = blr - -0x022CAC5C = bla _uncapTickets - -##################################################################################################### -[XCX_BLADE_MORETICKETS_1E] -moduleMatches = 0xF882D5CF ; 1.0.1E - -codeCaveSize = 0x40 - -0x00000000 = .short $mult -_mult = 0x00000000 - -; ---------------------------------------------------------------------------- -; WHO : menu::MenuMultiQuestInfoWindow::displayInfo((menu::MenuObject *,bool)) -; WHAT : - -_dispBefore = 0x00000004 -0x00000004 = lhz r26, 0x8C(r1) -0x00000008 = lis r24, _mult@ha -0x0000000C = lhz r24, _mult@l(r24) -0x00000010 = mullw r26, r26, r24 -0x00000014 = blr - -0x02B94718 = bla _dispBefore - -; ---------------------------------------------------------------------------- -; WHO : menu::MenuMultiQuestResult::setup((void)) -; WHAT : - -_dispAfter = 0x00000018 -0x00000018 = lhz r5, 0x5778(r29) -0x0000001C = lis r3, _mult@ha -0x00000020 = lhz r3, _mult@l(r3) -0x00000024 = mullw r5, r5, r3 -0x00000028 = blr - -0x02B9FE2C = bla _dispAfter - -; ---------------------------------------------------------------------------- -; WHO : writeListTicket__Q2_4menu19MenuMultiQuestOrderFPQ2_4menu10MenuObjectiQ3_2fw9CItemType4TypeUsUiT5 -; WHAT : multiply tickets from piece exchange - -_pieceExchange = 0x0000002C -0x0000002C = mr r5, r29 -0x00000030 = lis r29, _mult@ha -0x00000034 = lhz r29, _mult@l(r29) -0x00000038 = mullw r5, r5, r29 -0x0000003C = blr - -0x02B9796C = bla _pieceExchange - -##################################################################################################### -[XCX_BLADE_MORETICKETS_2U] -moduleMatches = 0x30B6E091 ; 1.0.2U - -codeCaveSize = 0x40 - -0x00000000 = .short $mult -_mult = 0x00000000 - -; ---------------------------------------------------------------------------- -; WHO : menu::MenuMultiQuestInfoWindow::displayInfo((menu::MenuObject *,bool)) -; WHAT : - -_dispBefore = 0x00000004 -0x00000004 = lhz r26, 0x8C(r1) -0x00000008 = lis r24, _mult@ha -0x0000000C = lhz r24, _mult@l(r24) -0x00000010 = mullw r26, r26, r24 -0x00000014 = blr - -0x02B94708 = bla _dispBefore - -; ---------------------------------------------------------------------------- -; WHO : menu::MenuMultiQuestResult::setup((void)) -; WHAT : - -_dispAfter = 0x00000018 -0x00000018 = lhz r5, 0x5778(r29) -0x0000001C = lis r3, _mult@ha -0x00000020 = lhz r3, _mult@l(r3) -0x00000024 = mullw r5, r5, r3 -0x00000028 = blr - -0x02B9FE1C = bla _dispAfter - -; ---------------------------------------------------------------------------- -; WHO : writeListTicket__Q2_4menu19MenuMultiQuestOrderFPQ2_4menu10MenuObjectiQ3_2fw9CItemType4TypeUsUiT5 -; WHAT : multiply tickets from piece exchange - -_pieceExchange = 0x0000002C -0x0000002C = mr r5, r29 -0x00000030 = lis r29, _mult@ha -0x00000034 = lhz r29, _mult@l(r29) -0x00000038 = mullw r5, r5, r29 -0x0000003C = blr - -0x02B975C = bla _pieceExchange diff --git a/Mods/XenobladeX/XenobladeX_mod_CollectiblesCatchRange/patches.txt b/Mods/XenobladeX/XenobladeX_mod_CollectiblesCatchRange/patches.txt deleted file mode 100644 index 0294f31f..00000000 --- a/Mods/XenobladeX/XenobladeX_mod_CollectiblesCatchRange/patches.txt +++ /dev/null @@ -1,131 +0,0 @@ -[XCX_COLLECTIBLESRANGE] -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U - -codeCaveSize = 0x100 - -; ---------------------------------------------------------------------------- -; WHO : cfs::CfPopManagerItem::updateTouchItem((void)) -; WHAT : Initialize collectibles distance - -0x00000060 = .float 40.0 ; _rangeInnerConst -0x00000064 = .float 8.0 ; _heightInnerConst -0x00000068 = .float 64.0 ; _rangeDollConst -0x0000006C = .float 64.0 ; _heightDollConst -0x00000070 = .float 64.0 ; _rangeFlightConst -0x00000074 = .float 52.0 ; _heightFlightConst - -_rangeInnerConst = 0x00000060 -_heightInnerConst = 0x00000064 -_rangeDollConst = 0x00000068 -_heightDollConst = 0x0000006C -_rangeFlightConst = 0x00000070 -_heightFlightConst = 0x00000074 - -_itemRangeInner = 0x00000000 -0x00000000 = lis r5, _rangeInnerConst@ha -0x00000004 = lfs f10, _rangeInnerConst@l(r5) -0x00000008 = fadd f10, f9, f10 -0x0000000C = blr - -_itemHeightInner = 0x00000010 -0x00000010 = lis r5, _heightInnerConst@ha -0x00000014 = lfs f12, _heightInnerConst@l(r5) -0x00000018 = fadd f12, f10, f12 -0x0000001C = blr - -_itemRangeDoll = 0x00000020 -0x00000020 = lis r5, _rangeDollConst@ha -0x00000024 = lfs f9, _rangeDollConst@l(r5) -0x00000028 = fadd f9, f6, f9 -0x0000002C = blr - -_itemHeightDoll = 0x00000030 -0x00000030 = lis r5, _heightDollConst@ha -0x00000034 = lfs f10, _heightDollConst@l(r5) -0x00000038 = fadd f10, f7, f10 -0x0000003C = blr - -_itemRangeFlight = 0x00000040 -0x00000040 = lis r5, _rangeFlightConst@ha -0x00000044 = lfs f10, _rangeFlightConst@l(r5) -0x00000048 = fadd f10, f12, f10 -0x0000004C = blr - -_itemHeightFlight = 0x00000050 -0x00000050 = lis r5, _heightFlightConst@ha -0x00000054 = lfs f0, _heightFlightConst@l(r5) -0x00000058 = fadd f0, f13, f0 -0x0000005C = blr - -0x02389B80 = bla _itemRangeInner -0x02389BB8 = bla _itemHeightInner -0x02389C3C = bla _itemRangeDoll -0x02389C74 = bla _itemHeightDoll -0x02389CEC = bla _itemRangeFlight -0x02389D30 = bla _itemHeightFlight -################################################################################################# -[XCX_COLLECTIBLESRANGE_1U] -moduleMatches = 0xAB97DE6B ; 1.0.1U - -codeCaveSize = 0x100 - -; ---------------------------------------------------------------------------- -; WHO : cfs::CfPopManagerItem::updateTouchItem((void)) -; WHAT : Initialize collectibles distance - -0x00000060 = .float 40.0 ; _rangeInnerConst -0x00000064 = .float 8.0 ; _heightInnerConst -0x00000068 = .float 64.0 ; _rangeDollConst -0x0000006C = .float 64.0 ; _heightDollConst -0x00000070 = .float 64.0 ; _rangeFlightConst -0x00000074 = .float 52.0 ; _heightFlightConst - -_rangeInnerConst = 0x00000060 -_heightInnerConst = 0x00000064 -_rangeDollConst = 0x00000068 -_heightDollConst = 0x0000006C -_rangeFlightConst = 0x00000070 -_heightFlightConst = 0x00000074 - -_itemRangeInner = 0x00000000 -0x00000000 = lis r5, _rangeInnerConst@ha -0x00000004 = lfs f10, _rangeInnerConst@l(r5) -0x00000008 = fadd f10, f9, f10 -0x0000000C = blr - -_itemHeightInner = 0x00000010 -0x00000010 = lis r5, _heightInnerConst@ha -0x00000014 = lfs f12, _heightInnerConst@l(r5) -0x00000018 = fadd f12, f10, f12 -0x0000001C = blr - -_itemRangeDoll = 0x00000020 -0x00000020 = lis r5, _rangeDollConst@ha -0x00000024 = lfs f9, _rangeDollConst@l(r5) -0x00000028 = fadd f9, f6, f9 -0x0000002C = blr - -_itemHeightDoll = 0x00000030 -0x00000030 = lis r5, _heightDollConst@ha -0x00000034 = lfs f10, _heightDollConst@l(r5) -0x00000038 = fadd f10, f7, f10 -0x0000003C = blr - -_itemRangeFlight = 0x00000040 -0x00000040 = lis r5, _rangeFlightConst@ha -0x00000044 = lfs f10, _rangeFlightConst@l(r5) -0x00000048 = fadd f10, f12, f10 -0x0000004C = blr - -_itemHeightFlight = 0x00000050 -0x00000050 = lis r5, _heightFlightConst@ha -0x00000054 = lfs f0, _heightFlightConst@l(r5) -0x00000058 = fadd f0, f13, f0 -0x0000005C = blr - -0x02389B10 = bla _itemRangeInner -0x02389B48 = bla _itemHeightInner -0x02389BCC = bla _itemRangeDoll -0x02389C04 = bla _itemHeightDoll -0x02389C7C = bla _itemRangeFlight -0x02389CC0 = bla _itemHeightFlight diff --git a/Mods/XenobladeX/XenobladeX_mod_EquipmentUnlimitedAugmentUpgrades/patches.txt b/Mods/XenobladeX/XenobladeX_mod_EquipmentUnlimitedAugmentUpgrades/patches.txt deleted file mode 100644 index b2202302..00000000 --- a/Mods/XenobladeX/XenobladeX_mod_EquipmentUnlimitedAugmentUpgrades/patches.txt +++ /dev/null @@ -1,87 +0,0 @@ -[XCX_UPGRADENOLIMIT_1E] -moduleMatches = 0xF882D5CF ; 1.0.1E - -codeCaveSize = 0x1C - -0x00000000 = .byte $checkSelectItem -0x00000001 = .byte $checkStrengthen -_selectItem = 0x00000000 -_strengthen = 0x00000001 - -_checkSelectItem = 0x00000004 -0x00000004 = lis r4, _selectItem@ha -0x00000008 = lbz r3, _selectItem@l(r4) -0x0000000C = blr - -_checkStrengthen = 0x00000010 -0x00000010 = lis r3, _strengthen@ha -0x00000014 = lbz r3, _strengthen@l(r3) -0x00000018 = blr - -; ---------------------------------------------------------------------------- -; WHO : menu::MenuArmsCompanyAffixSelectItem::CheckAffixStrengthen -; WHAT : Unlimited upgrades (equipment selection menu) - -0x02A6DCA8 = li r3, 0 ; Ignore upgrades counter -0x02A6DFFC = bla _checkSelectItem - -; ---------------------------------------------------------------------------- -; WHO : menu::MenuArmsCompanyAffixStrengthen::CheckAffixStrengthen -; WHAT : Unlimited upgrades (affix selection menu) - -0x02A72134 = li r10, 99 ; Ignore upgrades counter -0x02A723B4 = bla _checkStrengthen - -##################################################################################### -[XCX_UPGRADENOLIMIT_2U] -moduleMatches = 0x30B6E091 ; 1.0.2U - -codeCaveSize = 0x1C - -0x00000000 = .byte $checkSelectItem -0x00000001 = .byte $checkStrengthen -_selectItem = 0x00000000 -_strengthen = 0x00000001 - -_checkSelectItem = 0x00000004 -0x00000004 = lis r4, _selectItem@ha -0x00000008 = lbz r3, _selectItem@l(r4) -0x0000000C = blr - -_checkStrengthen = 0x00000010 -0x00000010 = lis r3, _strengthen@ha -0x00000014 = lbz r3, _strengthen@l(r3) -0x00000018 = blr - -0x02A6DC98 = li r3, 0 ; Ignore upgrades counter -0x02A6DFEC = bla _checkSelectItem - -0x02A72124 = li r10, 99 ; Ignore upgrades counter -0x02A723A4 = bla _checkStrengthen - -##################################################################################### -[XCX_UPGRADENOLIMIT_1U] -moduleMatches = 0xAB97DE6B ; 1.0.1U - -codeCaveSize = 0x1C - -0x00000000 = .byte $checkSelectItem -0x00000001 = .byte $checkStrengthen -_selectItem = 0x00000000 -_strengthen = 0x00000001 - -_checkSelectItem = 0x00000004 -0x00000004 = lis r4, _selectItem@ha -0x00000008 = lbz r3, _selectItem@l(r4) -0x0000000C = blr - -_checkStrengthen = 0x00000010 -0x00000010 = lis r3, _strengthen@ha -0x00000014 = lbz r3, _strengthen@l(r3) -0x00000018 = blr - -0x02A6DC1C = li r3, 0 ; Ignore upgrades counter -0x02A6DF70 = bla _checkSelectItem - -0x02A720A8 = li r10, 99 ; Ignore upgrades counter -0x02A72328 = bla _checkStrengthen diff --git a/Mods/XenobladeX/XenobladeX_mod_EquipmentUnlockAugments/patches.txt b/Mods/XenobladeX/XenobladeX_mod_EquipmentUnlockAugments/patches.txt deleted file mode 100644 index 106e3be1..00000000 --- a/Mods/XenobladeX/XenobladeX_mod_EquipmentUnlockAugments/patches.txt +++ /dev/null @@ -1,77 +0,0 @@ -[XCX_UNLOCKAUGMENTS_1E] -moduleMatches = 0xF882D5CF ; 1.0.1E - -codeCaveSize = 0x1C - -0x00000000 = .byte $checkIgnore -0x00000001 = .byte $checkIgnoreEnd -_ignore = 0x00000000 -_end = 0x00000001 - -_checkIgnore = 0x00000004 -0x00000004 = lis r4, _ignore@ha -0x00000008 = lbz r3, _ignore@l(r4) -0x0000000C = blr - -_checkIgnoreEnd = 0x00000010 -0x00000010 = lis r3, _end@ha -0x00000014 = lbz r3, _end@l(r3) -0x00000018 = blr - -; ---------------------------------------------------------------------------- -; WHO : menu::MenuArmsCompanyDeviceList::CheckEnableCreateByDeviceID -; WHAT : Unlimited augments - -0x02A817A0 = li r3, 0 ; all augments are known -0x02A817C8 = bla _checkIgnore ; ignore requirements -0x02A81A3C = bla _checkIgnoreEnd ; ignore requirements (end game) - -##################################################################################### -[XCX_UNLOCKAUGMENTS_2U] -moduleMatches = 0x30B6E091 ; 1.0.2U - -codeCaveSize = 0x1C - -0x00000000 = .byte $checkIgnore -0x00000001 = .byte $checkIgnoreEnd -_ignore = 0x00000000 -_end = 0x00000001 - -_checkIgnore = 0x00000004 -0x00000004 = lis r4, _ignore@ha -0x00000008 = lbz r3, _ignore@l(r4) -0x0000000C = blr - -_checkIgnoreEnd = 0x00000010 -0x00000010 = lis r3, _end@ha -0x00000014 = lbz r3, _end@l(r3) -0x00000018 = blr - -0x02A81790 = li r3, 0 ; all augments are known -0x02A817B8 = bla _checkIgnore ; ignore requirements -0x02A81A2C = bla _checkIgnoreEnd ; ignore requirements (end game) - -##################################################################################### -[XCX_UNLOCKAUGMENTS_1U] -moduleMatches = 0xAB97DE6B ; 1.0.1U - -codeCaveSize = 0x1C - -0x00000000 = .byte $checkIgnore -0x00000001 = .byte $checkIgnoreEnd -_ignore = 0x00000000 -_end = 0x00000001 - -_checkIgnore = 0x00000004 -0x00000004 = lis r4, _ignore@ha -0x00000008 = lbz r3, _ignore@l(r4) -0x0000000C = blr - -_checkIgnoreEnd = 0x00000010 -0x00000010 = lis r3, _end@ha -0x00000014 = lbz r3, _end@l(r3) -0x00000018 = blr - -0x02A81714 = li r3, 0 ; all augments are known -0x02A8173C = bla _checkIgnore ; ignore requirements -0x02A819B0 = bla _checkIgnoreEnd ; ignore requirements (end game) diff --git a/Mods/XenobladeX/XenobladeX_mod_ExpBattlePointsX/patches.txt b/Mods/XenobladeX/XenobladeX_mod_ExpBattlePointsX/patches.txt deleted file mode 100644 index a2518bf9..00000000 --- a/Mods/XenobladeX/XenobladeX_mod_ExpBattlePointsX/patches.txt +++ /dev/null @@ -1,214 +0,0 @@ -[XCX_BATTLEPOINTSX] -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U - -codeCaveSize = 0x50 - -0x00000000 = .short $mod -_mod = 0x00000000 - -; ---------------------------------------------------------------------------- -; WHO : addClassExpChara__Q2_6Battle14CBattleManagerFUiT1 -; WHAT : Multiply the battle points gained when a new class level is reached - -_exp = 0x00000004 -0x00000004 = lis r3, _mod@ha -0x00000008 = lhz r3, _mod@l(r3) -0x0000000C = mullw r0, r0, r3 -0x00000010 = mulli r0, r0, 3 -0x00000014 = blr - -0x020C4A74 = bla _exp - -; ---------------------------------------------------------------------------- -; WHO : addInnerExpChara__Q2_6Battle14CBattleManagerFUiN21 -; WHAT : Multiply the battle points gained when a new level is reached - -_exp2 = 0x00000018 -0x00000018 = lis r4, _mod@ha -0x0000001C = lhz r4, _mod@l(r4) -0x00000020 = mullw r9, r9, r4 -0x00000024 = add r11, r11, r9 -0x00000028 = blr - -0x020C1C48 = bla _exp2 - -; ---------------------------------------------------------------------------- -; WHO : addTreasure__Q2_3cfs10CfTBoxUtilSFUib -; WHAT : Multiply the battle points given by treasures or exploration - -_expTreasure = 0x0000002C -0x0000002C = lis r3, _mod@ha -0x00000030 = lhz r3, _mod@l(r3) -0x00000034 = mullw r3, r31, r3 -0x00000038 = blr - -0x022D8EDC = bla _expTreasure - -; ---------------------------------------------------------------------------- -; WHO : addReward__Q2_3cfs11CfSquadUtilSFUiT1 -; WHAT : Multiply the experience points given by Squad missions - -_expSquadValue = 0x0000003C -0x0000003C = lis r4, _mod@ha -0x00000040 = lhz r4, _mod@l(r4) -0x00000044 = mullw r3, r3, r4 -0x00000048 = stw r3, 0x1C(r1) -0x0000004C = blr - -0x023CC770 = bla _expSquadValue -0x023CC834 = bla _expSquadValue - -[XCX_BATTLEPOINTSX_1E] ############################################################################ -moduleMatches = 0xF882D5CF ; 1.0.1E - -codeCaveSize = 0x30 - -0x00000028 = .short $mod -_mod = 0x00000028 - -; ---------------------------------------------------------------------------- -; WHO : menu::MenuMultiQuestInfoWindow::displayInfo((menu::MenuObject *,bool)) -; WHAT : Multiply the battle points displayed in quest popup information. - -_dispBefore = 0x00000000 -0x00000000 = lhz r24, 0x90(r1) -0x00000004 = lis r25, _mod@ha -0x00000008 = lhz r25, _mod@l(r25) -0x0000000C = mullw r24, r24, r25 -0x00000010 = blr - -0x02B94730 = bla _dispBefore - -; ---------------------------------------------------------------------------- -; WHO : menu::MenuMultiQuestResult::setup((void)) -; WHAT : Multiply the battle points displayed in quest popup results. - -_dispAfter = 0x00000014 -0x00000014 = lis r5, _mod@ha -0x00000018 = lhz r5, _mod@l(r5) -0x0000001C = mullw r3, r3, r5 -0x00000020 = stw r3, 0x7C(r1) -0x00000024 = blr - -0x02B9FEE0 = bla _dispAfter - -[XCX_BATTLEPOINTSX_2U] ############################################################################ -moduleMatches = 0x30B6E091 ; 1.0.1E, 1.0.2U - -codeCaveSize = 0x30 - -0x00000028 = .short $mod -_mod = 0x00000028 - -; ---------------------------------------------------------------------------- -; WHO : menu::MenuMultiQuestInfoWindow::displayInfo((menu::MenuObject *,bool)) -; WHAT : Multiply the battle points displayed in quest popup information. - -_dispBefore = 0x00000000 -0x00000000 = lhz r24, 0x90(r1) -0x00000004 = lis r25, _mod@ha -0x00000008 = lhz r25, _mod@l(r25) -0x0000000C = mullw r24, r24, r25 -0x00000010 = blr - -0x02B94720 = bla _dispBefore - -; ---------------------------------------------------------------------------- -; WHO : menu::MenuMultiQuestResult::setup((void)) -; WHAT : Multiply the battle points displayed in quest popup results. - -_dispAfter = 0x00000014 -0x00000014 = lis r5, _mod@ha -0x00000018 = lhz r5, _mod@l(r5) -0x0000001C = mullw r3, r3, r5 -0x00000020 = stw r3, 0x7C(r1) -0x00000024 = blr - -0x02B9FED0 = bla _dispAfter - -[XCX_BATTLEPOINTSX_1U] ############################################################################ -moduleMatches = 0xAB97DE6B ; 1.0.1U - -codeCaveSize = 0x9C - -0x00000000 = .short $mod -_mod = 0x00000000 - -; ---------------------------------------------------------------------------- -; WHO : addClassExpChara__Q2_6Battle14CBattleManagerFUiT1 -; WHAT : Multiply the battle points gained when a new class level is reached - -_exp = 0x00000004 -0x00000004 = lis r3, _mod@ha -0x00000008 = lhz r3, _mod@l(r3) -0x0000000C = mullw r0, r0, r3 -0x00000010 = mulli r0, r0, 3 -0x00000014 = blr - -0x020C4A74 = bla _exp - -; ---------------------------------------------------------------------------- -; WHO : addInnerExpChara__Q2_6Battle14CBattleManagerFUiN21 -; WHAT : Multiply the battle points gained when a new level is reached - -_exp2 = 0x00000018 -0x00000018 = lis r4, _mod@ha -0x0000001C = lhz r4, _mod@l(r4) -0x00000020 = mullw r9, r9, r4 -0x00000024 = add r11, r11, r9 -0x00000028 = blr - -0x020C1C48 = bla _exp2 - - -; ---------------------------------------------------------------------------- -; WHO : addTreasure__Q2_3cfs10CfTBoxUtilSFUib -; WHAT : Multiply the battle points given by treasures or exploration - -_expTreasure = 0x00000050 -0x00000050 = lis r3, _mod@ha -0x00000054 = lhz r3, _mod@l(r3) -0x00000058 = mullw r3, r31, r3 -0x0000005C = blr - -0x022D8E6C = bla _expTreasure - -; ---------------------------------------------------------------------------- -; WHO : menu::MenuMultiQuestInfoWindow::displayInfo((menu::MenuObject *,bool)) -; WHAT : Multiply the battle points displayed in quest popup information. - -_dispBefore = 0x00000060 -0x00000060 = lhz r24, 0x90(r1) -0x00000064 = lis r25, _mod@ha -0x00000068 = lhz r25, _mod@l(r25) -0x0000006C = mullw r24, r24, r25 -0x00000070 = blr - -0x02B946A4 = bla _dispBefore - -; ---------------------------------------------------------------------------- -; WHO : menu::MenuMultiQuestResult::setup((void)) -; WHAT : Multiply the battle points displayed in quest popup results. - -_dispAfter = 0x00000074 -0x00000074 = lis r5, _mod@ha -0x00000078 = lhz r5, _mod@l(r5) -0x0000007C = mullw r3, r3, r5 -0x00000080 = stw r3, 0x7C(r1) -0x00000084 = blr - -0x02B9FDE0 = bla _dispAfter - -; ---------------------------------------------------------------------------- -; WHO : addReward__Q2_3cfs11CfSquadUtilSFUiT1 -; WHAT : Multiply the experience points given by Squad missions - -_expSquadValue = 0x00000088 -0x00000088 = lis r4, _mod@ha -0x0000008C = lhz r4, _mod@l(r4) -0x00000090 = mullw r3, r3, r4 -0x00000094 = stw r3, 0x1C(r1) -0x00000098 = blr - -0x023CC700 = bla _expSquadValue -0x023CC700 = bla _expSquadValue diff --git a/Mods/XenobladeX/XenobladeX_mod_ExpBladePointsX/patches.txt b/Mods/XenobladeX/XenobladeX_mod_ExpBladePointsX/patches.txt deleted file mode 100644 index 126177cb..00000000 --- a/Mods/XenobladeX/XenobladeX_mod_ExpBladePointsX/patches.txt +++ /dev/null @@ -1,39 +0,0 @@ -[XCX_BLADEX] -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U - -codeCaveSize = 0x10 - -0x00000000 = .byte $mod -_mod = 0x00000000 - -_exp = 0x00000004 -0x00000004 = lis r3, _mod@ha -0x00000008 = lbz r3, _mod@l(r3) -0x0000000C = blr - -; ---------------------------------------------------------------------------- -; WHO : fw::SocialUnion::getUnionBasePoint((int)) -; WHAT : Multiply the BLADE points rewarded - -0x0288E610 = nop -0x0288E614 = bla _exp - -[XCX_BLADEX_1U] ###################################################################### -moduleMatches = 0xAB97DE6B ; 1.0.1U - -codeCaveSize = 0x10 - -0x00000000 = .byte $mod -_mod = 0x00000000 - -_exp = 0x00000004 -0x00000004 = lis r3, _mod@ha -0x00000008 = lbz r3, _mod@l(r3) -0x0000000C = blr - -; ---------------------------------------------------------------------------- -; WHO : fw::SocialUnion::getUnionBasePoint((int)) -; WHAT : Multiply the BLADE points rewarded - -0x0288E594 = nop -0x0288E598 = bla _exp \ No newline at end of file diff --git a/Mods/XenobladeX/XenobladeX_mod_ExpClassExpPointsX/patches.txt b/Mods/XenobladeX/XenobladeX_mod_ExpClassExpPointsX/patches.txt deleted file mode 100644 index 772c2f19..00000000 --- a/Mods/XenobladeX/XenobladeX_mod_ExpClassExpPointsX/patches.txt +++ /dev/null @@ -1,101 +0,0 @@ -[XCX_CLASSEXPX] -moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U - -codeCaveSize = 0x30 - -0x00000000 = .byte $mod -_mod = 0x00000000 - -_expBattle = 0x00000004 -0x00000004 = lis r12, _mod@ha -0x00000008 = lbz r12, _mod@l(r12) -0x0000000C = mullw r31, r3, r12 -0x00000010 = blr - -; ---------------------------------------------------------------------------- -; WHO : addClassExpChara__Q2_6Battle14CBattleManagerFUiT1 -; WHAT : Multiply the class experience given during combat - -0x020C4A28 = bla _expBattle - -; ---------------------------------------------------------------------------- -; WHO : addReward__Q2_3cfs11CfSquadUtilSFUiT1 -; WHAT : Multiply the experience points given by Squad missions - -_expSquadValue = 0x00000014 -0x00000014 = lis r4, _mod@ha -0x00000018 = lbz r4, _mod@l(r4) -0x0000001C = mullw r3, r3, r4 -0x00000020 = stw r3, 0x18(r1) -0x00000024 = blr - -0x023CC750 = bla _expSquadValue -0x023CC814 = bla _expSquadValue - -[XCX_CLASSEXPX_1E] ############################################################################ -moduleMatches = 0xF882D5CF ; 1.0.1E - -codeCaveSize = 0x30 - -0x00000028 = .byte $mod -_mod = 0x00000028 - -; ---------------------------------------------------------------------------- -; WHO : menu::MenuMultiQuestInfoSub::displayInfoDL((menu::MenuObject *)) -; WHAT : - -_dispBefore = 0x00000000 -0x00000000 = lis r5, _mod@ha -0x00000004 = lbz r5, _mod@l(r5) -0x00000008 = mullw r3, r3, r5 -0x0000000C = stw r3, 0x34(r1) -0x00000010 = blr - -0x02B91324 = bla _dispBefore - -; ---------------------------------------------------------------------------- -; WHO : menu::MenuMultiQuestResult::setup((void)) -; WHAT : - -_dispAfter = 0x00000014 -0x00000014 = lis r5, _mod@ha -0x00000018 = lbz r5, _mod@l(r5) -0x0000001C = mullw r3, r3, r5 -0x00000020 = stw r3, 0x80(r1) -0x00000024 = blr - -0x02B9FF44 = bla _dispAfter - -[XCX_CLASSEXPX_2U] ############################################################################ -moduleMatches = 0x30B6E091 ; 1.0.1E, 1.0.2U - -codeCaveSize = 0x30 - -0x00000028 = .byte $mod -_mod = 0x00000028 - -; ---------------------------------------------------------------------------- -; WHO : menu::MenuMultiQuestInfoSub::displayInfoDL((menu::MenuObject *)) -; WHAT : - -_dispBefore = 0x00000000 -0x00000000 = lis r5, _mod@ha -0x00000004 = lbz r5, _mod@l(r5) -0x00000008 = mullw r3, r3, r5 -0x0000000C = stw r3, 0x34(r1) -0x00000010 = blr - -0x02B91314 = bla _dispBefore - -; ---------------------------------------------------------------------------- -; WHO : menu::MenuMultiQuestResult::setup((void)) -; WHAT : - -_dispAfter = 0x00000014 -0x00000014 = lis r5, _mod@ha -0x00000018 = lbz r5, _mod@l(r5) -0x0000001C = mullw r3, r3, r5 -0x00000020 = stw r3, 0x80(r1) -0x00000024 = blr - -0x02B9FF34 = bla _dispAfter diff --git a/Mods/XenobladeX/XenobladeX_mod_ExpInnerExpPointsX/patches.txt b/Mods/XenobladeX/XenobladeX_mod_ExpInnerExpPointsX/patches.txt deleted file mode 100644 index 73e7e115..00000000 --- a/Mods/XenobladeX/XenobladeX_mod_ExpInnerExpPointsX/patches.txt +++ /dev/null @@ -1,220 +0,0 @@ -[XCX_EXPX] -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U - -codeCaveSize = 0x60 - -0x00000000 = .byte $mod -_mod = 0x00000000 - -; ---------------------------------------------------------------------------- -; WHO : cfs::CfCompoCtrlEnemy::execRequestCommon -; WHAT : Multiply the experience points given in battles - -_expBattle = 0x00000004 -0x00000004 = lis r30, _mod@ha -0x00000008 = lbz r30, _mod@l(r30) -0x0000000C = lwz r3, 0x3184(r28) -0x00000010 = mullw r3, r3, r30 -0x00000014 = stw r3, 0x3184(r28) -0x00000018 = mr r3, r28 -0x0000001C = blr - -0x025624D4 = bla _expBattle - -; ---------------------------------------------------------------------------- -; WHO : addTreasure__Q2_3cfs10CfTBoxUtilSFUib -; WHAT : Multiply the experience points given by treasures or exploration - -_expTreasure = 0x00000020 -0x00000020 = lis r3, _mod@ha -0x00000024 = lbz r3, _mod@l(r3) -0x00000028 = lhz r31, 0x1C(r1) -0x0000002C = mullw r31, r31, r3 -0x00000030 = blr - -0x022D8E64 = bla _expTreasure - -; ---------------------------------------------------------------------------- -; WHO : addReward__Q2_3cfs11CfQuestUtilSFUiQ2_3cfs17CfQuestRewardType -; WHAT : Multiply the experience points given by quests ? - -_expQuest = 0x00000034 -0x00000034 = lis r4, _mod@ha -0x00000038 = lbz r4, _mod@l(r4) -0x0000003C = mullw r3, r3, r4 -0x00000040 = stw r3, 0x60(r1) -0x00000044 = blr - -0x0229560C = bla _expQuest - -; ---------------------------------------------------------------------------- -; WHO : addReward__Q2_3cfs11CfSquadUtilSFUiT1 -; WHAT : Multiply the experience points given by Squad missions - -_expSquadValue = 0x00000048 -0x00000048 = lis r4, _mod@ha -0x0000004C = lbz r4, _mod@l(r4) -0x00000050 = mullw r3, r3, r4 -0x00000054 = stw r3, 0x10(r1) -0x00000058 = blr - -0x023CC6D4 = bla _expSquadValue - -; TEST : unlimited exp (no 9999 limit) -;0x020C1BC4 = nop - -[XCX_EXPX_1E] ############################################################################ -moduleMatches = 0xF882D5CF ; 1.0.1E - -codeCaveSize = 0x30 - -0x00000028 = .byte $mod -_mod = 0x00000028 - -; ---------------------------------------------------------------------------- -; WHO : menu::MenuMultiQuestInfoWindow::displayInfo((menu::MenuObject *,bool)) -; WHAT : - -_dispBefore = 0x00000000 -0x00000000 = lwz r23, 0x88(r1) -0x00000004 = lis r24, _mod@ha -0x00000008 = lbz r24, _mod@l(r24) -0x0000000C = mullw r23, r23, r24 -0x00000010 = blr - -0x02B94700 = bla _dispBefore - -; ---------------------------------------------------------------------------- -; WHO : menu::MenuMultiQuestResult::setup((void)) -; WHAT : - -_dispAfter = 0x00000014 -0x00000014 = lis r5, _mod@ha -0x00000018 = lbz r5, _mod@l(r5) -0x0000001C = mullw r3, r3, r5 -0x00000020 = stw r3, 0x78(r1) -0x00000024 = blr - -0x02B9FDD4 = bla _dispAfter - -[XCX_EXPX_2U] ############################################################################ -moduleMatches = 0x30B6E091 ; 1.0.1E, 1.0.2U - -codeCaveSize = 0x30 - -0x00000028 = .byte $mod -_mod = 0x00000028 - -; ---------------------------------------------------------------------------- -; WHO : menu::MenuMultiQuestInfoWindow::displayInfo((menu::MenuObject *,bool)) -; WHAT : - -_dispBefore = 0x00000000 -0x00000000 = lwz r23, 0x88(r1) -0x00000004 = lis r24, _mod@ha -0x00000008 = lbz r24, _mod@l(r24) -0x0000000C = mullw r23, r23, r24 -0x00000010 = blr - -0x02B946F0 = bla _dispBefore - -; ---------------------------------------------------------------------------- -; WHO : menu::MenuMultiQuestResult::setup((void)) -; WHAT : - -_dispAfter = 0x00000014 -0x00000014 = lis r5, _mod@ha -0x00000018 = lbz r5, _mod@l(r5) -0x0000001C = mullw r3, r3, r5 -0x00000020 = stw r3, 0x78(r1) -0x00000024 = blr - -0x02B9FDC4 = bla _dispAfter - -[XCX_EXPX_1U] ############################################################################ -moduleMatches = 0xAB97DE6B ; 1.0.1U - -codeCaveSize = 0x90 - -0x00000000 = .byte $mod -_mod = 0x00000000 - -; ---------------------------------------------------------------------------- -; WHO : cfs::CfCompoCtrlEnemy::execRequestCommon -; WHAT : Multiply the experience points given in battles - -_expBattle = 0x00000004 -0x00000004 = lis r30, _mod@ha -0x00000008 = lbz r30, _mod@l(r30) -0x0000000C = lwz r3, 0x3184(r28) -0x00000010 = mullw r3, r3, r30 -0x00000014 = stw r3, 0x3184(r28) -0x00000018 = mr r3, r28 -0x0000001C = blr - -0x02562464 = bla _expBattle - -; ---------------------------------------------------------------------------- -; WHO : addTreasure__Q2_3cfs10CfTBoxUtilSFUib -; WHAT : Multiply the experience points given by treasures or exploration - -_expTreasure = 0x00000020 -0x00000020 = lis r3, _mod@ha -0x00000024 = lbz r3, _mod@l(r3) -0x00000028 = lhz r31, 0x1C(r1) -0x0000002C = mullw r31, r31, r3 -0x00000030 = blr - -0x022D8DF4 = bla _expTreasure - -; ---------------------------------------------------------------------------- -; WHO : addReward__Q2_3cfs11CfQuestUtilSFUiQ2_3cfs17CfQuestRewardType -; WHAT : Multiply the experience points given by quests ? - -_expQuest = 0x00000034 -0x00000034 = lis r4, _mod@ha -0x00000038 = lbz r4, _mod@l(r4) -0x0000003C = mullw r3, r3, r4 -0x00000040 = stw r3, 0x60(r1) -0x00000044 = blr - -0x0229559C = bla _expQuest - -; ---------------------------------------------------------------------------- -; WHO : menu::MenuMultiQuestInfoWindow::displayInfo((menu::MenuObject *,bool)) -; WHAT : - -_dispBefore = 0x00000048 -0x00000048 = lwz r23, 0x88(r1) -0x0000004C = lis r24, _mod@ha -0x00000050 = lbz r24, _mod@l(r24) -0x00000054 = mullw r23, r23, r24 -0x00000058 = blr - -0x02B94674 = bla _dispBefore - -; ---------------------------------------------------------------------------- -; WHO : menu::MenuMultiQuestResult::setup((void)) -; WHAT : - -_dispAfter = 0x0000005C -0x0000005C = lis r5, _mod@ha -0x00000060 = lbz r5, _mod@l(r5) -0x00000064 = mullw r3, r3, r5 -0x00000068 = stw r3, 0x78(r1) -0x0000006C = blr - -0x02B9FCD4 = bla _dispAfter - -; ---------------------------------------------------------------------------- -; WHO : addReward__Q2_3cfs11CfSquadUtilSFUiT1 -; WHAT : Multiply the experience points given by Squad missions - -_expSquadValue = 0x00000070 -0x00000070 = lis r4, _mod@ha -0x00000074 = lbz r4, _mod@l(r4) -0x00000078 = mullw r3, r3, r4 -0x0000007C = stw r3, 0x10(r1) -0x00000080 = blr - -0x023CC664 = bla _expSquadValue diff --git a/Mods/XenobladeX/XenobladeX_mod_FrontierNavProbeMiraniumFrequency/patches.txt b/Mods/XenobladeX/XenobladeX_mod_FrontierNavProbeMiraniumFrequency/patches.txt deleted file mode 100644 index 58befe29..00000000 --- a/Mods/XenobladeX/XenobladeX_mod_FrontierNavProbeMiraniumFrequency/patches.txt +++ /dev/null @@ -1,49 +0,0 @@ -[XCX_FN_MIR_FREQ] -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U - -codeCaveSize = 0x24 - -0x00000000 = .byte $mod -_mod = 0x00000000 - -; ---------------------------------------------------------------------------- -; WHAT : changeTime__Q2_4fnet9CFnetTaskFUiT1 -; WHY : Affect the frequency of the FrontierNav income for the Miranium -; Frequency unit is 1 minute (so by default income is every 30 minutes) - -_miranium = 0x00000004 -0x00000004 = lis r8, _mod@ha -0x00000008 = lbz r8, _mod@l(r8) -0x0000000C = addi r10, r3, 1 -0x00000010 = divwu r0, r10, r8 -0x00000014 = mullw r0, r0, r8 -0x00000018 = subf r3, r0, r10 -0x0000001C = cmpwi r3, 0 -0x00000020 = blr - -0x027D5250 = bla _miranium - -[XCX_FN_MIR_FREQ_1U] ################################################################## -moduleMatches = 0xAB97DE6B ; 1.0.1U - -codeCaveSize = 0x24 - -0x00000000 = .byte $mod -_mod = 0x00000000 - -; ---------------------------------------------------------------------------- -; WHAT : changeTime__Q2_4fnet9CFnetTaskFUiT1 -; WHY : Affect the frequency of the FrontierNav income for the Miranium -; Frequency unit is 1 minute (so by default income is every 30 minutes) - -_miranium = 0x00000004 -0x00000004 = lis r8, _mod@ha -0x00000008 = lbz r8, _mod@l(r8) -0x0000000C = addi r10, r3, 1 -0x00000010 = divwu r0, r10, r8 -0x00000014 = mullw r0, r0, r8 -0x00000018 = subf r3, r0, r10 -0x0000001C = cmpwi r3, 0 -0x00000020 = blr - -0x027D51F0 = bla _miranium \ No newline at end of file diff --git a/Mods/XenobladeX/XenobladeX_mod_FrontierNavProbeMiraniumQuantity/patches.txt b/Mods/XenobladeX/XenobladeX_mod_FrontierNavProbeMiraniumQuantity/patches.txt deleted file mode 100644 index 02717a1a..00000000 --- a/Mods/XenobladeX/XenobladeX_mod_FrontierNavProbeMiraniumQuantity/patches.txt +++ /dev/null @@ -1,93 +0,0 @@ -[XCX_FN_MIR_QTY] -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U - -codeCaveSize = 0x50 - -0x00000000 = .short $mod -_mod = 0x00000000 - -_miranium = 0x00000004 -0x00000004 = lwzx r31, r3, r28 -0x00000008 = lis r4, _mod@ha -0x0000000C = lhz r4, _mod@l(r4) -0x00000010 = mullw r31, r31, r4 -0x00000014 = blr - -; ---------------------------------------------------------------------------- -; WHO : changeTime__Q2_4fnet9CFnetTaskFUiT1 -; WHAT : Affect the quantity of the NavFrontier income for the Miranium - -0x027D526C = bla _miranium - -; ---------------------------------------------------------------------------- -; WHO : fnet::CFnetData::toStorage(const(unsigned int)) -; WHAT : Ignore max quantity - -0x00000018 = .byte $uncap -_uncap = 0x00000018 - -0x027D0FF8 = bla _getMiranium -_getMiranium = 0x0000001C -0x0000001C = lis r12, _uncap@ha -0x00000020 = lbz r12, _uncap@l(r12) -0x00000024 = cmpwi r12, 0 -0x00000028 = addis r12, r30, 1 -0x0000002C = beqlr -0x00000030 = li r3, 0 -0x00000034 = blr - -0x027D1030 = bla _ignoreMax -_ignoreMax = 0x00000038 -0x00000038 = lis r12, _uncap@ha -0x0000003C = lbz r12, _uncap@l(r12) -0x00000040 = cmpwi r12, 1 -0x00000044 = beqlr -0x00000048 = mr r31, r0 -0x0000004C = blr - -[XCX_FN_MIR_QTY_1U] ###################################################################### -moduleMatches = 0xAB97DE6B ; 1.0.1U - -codeCaveSize = 0x50 - -0x00000000 = .short $mod -_mod = 0x00000000 - -_miranium = 0x00000004 -0x00000004 = lwzx r31, r3, r28 -0x00000008 = lis r4, _mod@ha -0x0000000C = lhz r4, _mod@l(r4) -0x00000010 = mullw r31, r31, r4 -0x00000014 = blr - -; ---------------------------------------------------------------------------- -; WHO : changeTime__Q2_4fnet9CFnetTaskFUiT1 -; WHAT : Affect the quantity of the NavFrontier income for the Miranium - -0x027D520C = bla _miranium - -; ---------------------------------------------------------------------------- -; WHO : fnet::CFnetData::toStorage(const(unsigned int)) -; WHAT : Ignore max quantity - -0x00000018 = .byte $uncap -_uncap = 0x00000018 - -0x027D0F98 = bla _getMiranium -_getMiranium = 0x0000001C -0x0000001C = lis r12, _uncap@ha -0x00000020 = lbz r12, _uncap@l(r12) -0x00000024 = cmpwi r12, 0 -0x00000028 = addis r12, r30, 1 -0x0000002C = beqlr -0x00000030 = li r3, 0 -0x00000034 = blr - -0x027D0FD0 = bla _ignoreMax -_ignoreMax = 0x00000038 -0x00000038 = lis r12, _uncap@ha -0x0000003C = lbz r12, _uncap@l(r12) -0x00000040 = cmpwi r12, 1 -0x00000044 = beqlr -0x00000048 = mr r31, r0 -0x0000004C = blr diff --git a/Mods/XenobladeX/XenobladeX_mod_FrontierNavProbeMoneyFrequency/patches.txt b/Mods/XenobladeX/XenobladeX_mod_FrontierNavProbeMoneyFrequency/patches.txt deleted file mode 100644 index d17284be..00000000 --- a/Mods/XenobladeX/XenobladeX_mod_FrontierNavProbeMoneyFrequency/patches.txt +++ /dev/null @@ -1,40 +0,0 @@ -[XCX_FN_MNY_FREQ] -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U - -codeCaveSize = 0x10 - -0x00000000 = .byte $mod -_mod = 0x00000000 - -_money = 0x00000004 -0x00000004 = lis r12, _mod@ha -0x00000008 = lbz r12, _mod@l(r12) -0x0000000C = blr - -; ---------------------------------------------------------------------------- -; WHAT : changeTime__Q2_4fnet9CFnetTaskFUiT1 -; WHY : Affect the frequency of the NavFrontier income for the money -; Frequency unit is 1 minute (so by default income is every 15 minutes) - -0x027D554C = bla _money - -[XCX_FN_MNY_FREQ_1U] ###################################################################### -moduleMatches = 0xAB97DE6B ; 1.0.1U -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U - -codeCaveSize = 0x10 - -0x00000000 = .byte $mod -_mod = 0x00000000 - -_money = 0x00000004 -0x00000004 = lis r12, _mod@ha -0x00000008 = lbz r12, _mod@l(r12) -0x0000000C = blr - -; ---------------------------------------------------------------------------- -; WHAT : changeTime__Q2_4fnet9CFnetTaskFUiT1 -; WHY : Affect the frequency of the NavFrontier income for the money -; Frequency unit is 1 minute (so by default income is every 15 minutes) - -0x027D54EC = bla _money \ No newline at end of file diff --git a/Mods/XenobladeX/XenobladeX_mod_FrontierNavProbeMoneyQuantity/patches.txt b/Mods/XenobladeX/XenobladeX_mod_FrontierNavProbeMoneyQuantity/patches.txt deleted file mode 100644 index b70dcd81..00000000 --- a/Mods/XenobladeX/XenobladeX_mod_FrontierNavProbeMoneyQuantity/patches.txt +++ /dev/null @@ -1,31 +0,0 @@ -[XCX_FN_MNY_QTY] -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U - -codeCaveSize = 0x14 - -0x00000000 = .byte $mod -_mod = 0x00000000 - -_money = 0x00000004 -0x00000004 = lis r31, _mod@ha -0x00000008 = lbz r31, _mod@l(r31) -0x0000000C = mullw. r31, r31, r3 -0x00000010 = blr - -0x027D5588 = bla _money - -[XCX_FN_MNY_QTY_1U] ###################################################################### -moduleMatches = 0xAB97DE6B ; 1.0.1U - -codeCaveSize = 0x14 - -0x00000000 = .byte $mod -_mod = 0x00000000 - -_money = 0x00000004 -0x00000004 = lis r31, _mod@ha -0x00000008 = lbz r31, _mod@l(r31) -0x0000000C = mullw. r31, r31, r3 -0x00000010 = blr - -0x027D5528 = bla _money diff --git a/Mods/XenobladeX/XenobladeX_mod_FrontierNavProbeResourceFrequency/patches.txt b/Mods/XenobladeX/XenobladeX_mod_FrontierNavProbeResourceFrequency/patches.txt deleted file mode 100644 index 645e65c4..00000000 --- a/Mods/XenobladeX/XenobladeX_mod_FrontierNavProbeResourceFrequency/patches.txt +++ /dev/null @@ -1,39 +0,0 @@ -[XCX_FN_RES_FREQ] -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U - -codeCaveSize = 0x10 - -0x00000000 = .byte $mod -_mod = 0x00000000 - -_res = 0x00000004 -0x00000004 = lis r12, _mod@ha -0x00000008 = lbz r12, _mod@l(r12) -0x0000000C = blr - -; ---------------------------------------------------------------------------- -; WHAT : changeTime__Q2_4fnet9CFnetTaskFUiT1 -; WHY : Affect the frequency of the NavFrontier income for the resources -; Frequency unit is 1 minute (so by default income is every 5 minutes) - -0x027D534C = bla _res - -[XCX_FN_RES_FREQ_1U] ###################################################################### -moduleMatches = 0xAB97DE6B ; 1.0.1U - -codeCaveSize = 0x10 - -0x00000000 = .byte $mod -_mod = 0x00000000 - -_res = 0x00000004 -0x00000004 = lis r12, _mod@ha -0x00000008 = lbz r12, _mod@l(r12) -0x0000000C = blr - -; ---------------------------------------------------------------------------- -; WHAT : changeTime__Q2_4fnet9CFnetTaskFUiT1 -; WHY : Affect the frequency of the NavFrontier income for the resources -; Frequency unit is 1 minute (so by default income is every 5 minutes) - -0x027D52EC = bla _res diff --git a/Mods/XenobladeX/XenobladeX_mod_FrontierNavProbeResourceQuantity/patches.txt b/Mods/XenobladeX/XenobladeX_mod_FrontierNavProbeResourceQuantity/patches.txt deleted file mode 100644 index c46eda37..00000000 --- a/Mods/XenobladeX/XenobladeX_mod_FrontierNavProbeResourceQuantity/patches.txt +++ /dev/null @@ -1,43 +0,0 @@ -[XCX_FN_RES_QTY] -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U - -codeCaveSize = 0x1C - -0x00000000 = .byte $mod -_mod = 0x00000000 - -; ---------------------------------------------------------------------------- -; WHAT : changeTime__Q2_4fnet9CFnetTaskFUiT1 -; WHY : - -_multCount = 0x00000004 -0x00000004 = lbz r0, 6(r31) -0x00000008 = lis r3, _mod@ha -0x0000000C = lbz r3, _mod@l(r3) -0x00000010 = mullw r0, r0, r3 -0x00000014 = stb r0, 6(r31) -0x00000018 = blr - -0x027D5428 = bla _multCount - -[XCX_FN_RES_QTY_1U] ###################################################################### -moduleMatches = 0xAB97DE6B ; 1.0.1U - -codeCaveSize = 0x1C - -0x00000000 = .byte $mod -_mod = 0x00000000 - -; ---------------------------------------------------------------------------- -; WHAT : changeTime__Q2_4fnet9CFnetTaskFUiT1 -; WHY : - -_multCount = 0x00000004 -0x00000004 = lbz r0, 6(r31) -0x00000008 = lis r3, _mod@ha -0x0000000C = lbz r3, _mod@l(r3) -0x00000010 = mullw r0, r0, r3 -0x00000014 = stb r0, 6(r31) -0x00000018 = blr - -0x027D53C8 = bla _multCount diff --git a/Mods/XenobladeX/XenobladeX_mod_GraphicsCameraDistance/patches.txt b/Mods/XenobladeX/XenobladeX_mod_GraphicsCameraDistance/patches.txt deleted file mode 100644 index 56c2f348..00000000 --- a/Mods/XenobladeX/XenobladeX_mod_GraphicsCameraDistance/patches.txt +++ /dev/null @@ -1,12 +0,0 @@ -[XCX_CAMERA_DIST] -moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U - -codeCaveSize = 0x4 - -0x00000000 = .float $mod ; zoom (default is 0.0) -_zoom = 0x00000000 - -# CamData::CCamDataManager::getParamsZoomDefault((CamData::eTargetTypes, unsigned char)) -0x0222A19C = lis r12, _zoom@ha -0x0222A1B0 = lfs f1, _zoom@l(r12) -0x0222A1CC = nop diff --git a/Mods/XenobladeX/XenobladeX_mod_GraphicsNpcInfoBubblesDistance/patches.txt b/Mods/XenobladeX/XenobladeX_mod_GraphicsNpcInfoBubblesDistance/patches.txt deleted file mode 100644 index 2cf73258..00000000 --- a/Mods/XenobladeX/XenobladeX_mod_GraphicsNpcInfoBubblesDistance/patches.txt +++ /dev/null @@ -1,106 +0,0 @@ -[XCX_DISTMOBINFO] -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U - -codeCaveSize = 0x100 - -; ---------------------------------------------------------------------------- -; WHAT : cfs::CfPopManagerMobInfo::setupZone((cfs::ZoneTypes)) -; WHY : Initialize view distance for ALL the Mob information to a very high value (filter will be done in setup function) - -_init_react = 0x00000000 -0x00000000 = lis r3, 0x4300 -0x00000004 = addi r3, r3, 0x0000 -0x00000008 = mr r5, r27 -0x0000000C = blr - -0x02387260 = bla _init_react - -; ---------------------------------------------------------------------------- -; WHAT : cfs::CfMobInfo::setup((void)) -; WHY : Adjust the view distance based on the information type - -_info_default = 0x00000020 -0x00000020 = cmpwi r6, 2 -0x00000024 = beq .+0x20 -0x00000028 = lhz r8, 0x20(r29) -0x0000002C = cmpwi r8, 0x4300 -0x00000030 = blt .+0x14 -0x00000034 = lis r8, 0x4120 -0x00000038 = addi r8, r8, 0x0000 -0x0000003C = stw r8, 0x20(r29) -0x00000040 = li r6, 0 -0x00000044 = stw r6, 0x40(r29) -0x00000048 = blr - -_info_obtained = 0x00000060 -0x00000060 = lhz r8, 0x20(r29) -0x00000064 = cmpwi r8, 0x4300 -0x00000068 = blt .+0x14 -0x0000006C = lis r8, 0x4120 -0x00000070 = addi r8, r8, 0x0000 -0x00000074 = stw r8, 0x20(r29) -0x00000078 = li r10, 0 -0x0000007C = stw r10, 0x40(r29) -0x00000080 = blr - -0x02386F04 = bla _info_obtained -0x02386F34 = bla _info_default - -; ---------------------------------------------------------------------------- -; WHAT : cfs::CfPopManagerMobInfo::updatePop((ml::CVec3 const &, bool)) - -0x0238EEC0 = nop ; Disable the call of cfs::CfMobInfo::update function (may have side effects) -0x0238EF30 = nop ; Disable altitude check - - -; ---------------------------------------------------------------------------- -; WHAT : cfs::CfPopManager::isCheckDoll(const(void)) -; WHY : display bubbles even in skell - -0x0238745C = li r3, 0 - -[XCX_DISTMOBINFO_1U] ########################################################### -moduleMatches = 0xAB97DE6B ; 1.0.1U - -codeCaveSize = 0x100 - -_init_react = 0x00000000 -0x00000000 = lis r3, 0x4300 -0x00000004 = addi r3, r3, 0x0000 -0x00000008 = mr r5, r27 -0x0000000C = blr - -0x023871F0 = bla _init_react - -_info_default = 0x00000020 -0x00000020 = cmpwi r6, 2 -0x00000024 = beq .+0x20 -0x00000028 = lhz r8, 0x20(r29) -0x0000002C = cmpwi r8, 0x4300 -0x00000030 = blt .+0x14 -0x00000034 = lis r8, 0x4120 -0x00000038 = addi r8, r8, 0x0000 -0x0000003C = stw r8, 0x20(r29) -0x00000040 = li r6, 0 -0x00000044 = stw r6, 0x40(r29) -0x00000048 = blr - -_info_obtained = 0x00000060 -0x00000060 = lhz r8, 0x20(r29) -0x00000064 = cmpwi r8, 0x4300 -0x00000068 = blt .+0x14 -0x0000006C = lis r8, 0x4120 -0x00000070 = addi r8, r8, 0x0000 -0x00000074 = stw r8, 0x20(r29) -0x00000078 = li r10, 0 -0x0000007C = stw r10, 0x40(r29) -0x00000080 = blr - - -0x02386E94 = bla _info_obtained -0x02386EC4 = bla _info_default - -0x0238EE50 = nop ; Disable the call of cfs::CfMobInfo::update function (may have side effects) -0x0238EEC0 = nop ; Disable altitude check - -0x023873EC = li r3, 0 diff --git a/Mods/XenobladeX/XenobladeX_mod_LootEquipmentsForceCount/patches.txt b/Mods/XenobladeX/XenobladeX_mod_LootEquipmentsForceCount/patches.txt deleted file mode 100644 index 7e7b2c30..00000000 --- a/Mods/XenobladeX/XenobladeX_mod_LootEquipmentsForceCount/patches.txt +++ /dev/null @@ -1,34 +0,0 @@ -[XCX_LOOT_EQUIPMENT_COUNT] -moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U - -codeCaveSize = 0x30 - -0x00000000 = .byte $cnt3 -0x00000004 = .byte $cnt2 -0x00000008 = .byte $cnt1 -_cnt3 = 0x00000000 -_cnt2 = 0x00000004 -_cnt1 = 0x00000008 - -_forceLot_3 = 0x0000000C -0x0000000C = lis r3, _cnt3@ha -0x00000010 = lbz r3, _cnt3@l(r3) -0x00000014 = blr - -_forceLot_2 = 0x00000018 -0x00000018 = lis r3, _cnt2@ha -0x0000001C = lbz r3, _cnt2@l(r3) -0x00000020 = blr - -_forceLot_1 = 0x00000024 -0x00000024 = lis r3, _cnt1@ha -0x00000028 = lbz r3, _cnt1@l(r3) -0x0000002C = blr - -; ---------------------------------------------------------------------------- -; WHO : ItemDrop::CItemDropManager::calcItemNum((uchar)) -; WHAT : Chances to loot multiples equipments (3 max) - -0x021AB218 = bla _forceLot_3 -0x021AB268 = bla _forceLot_2 -0x021AB2B8 = bla _forceLot_1 diff --git a/Mods/XenobladeX/XenobladeX_mod_LootEquipmentsForceType/patches.txt b/Mods/XenobladeX/XenobladeX_mod_LootEquipmentsForceType/patches.txt deleted file mode 100644 index 0529a320..00000000 --- a/Mods/XenobladeX/XenobladeX_mod_LootEquipmentsForceType/patches.txt +++ /dev/null @@ -1,71 +0,0 @@ -[XCX_LOOT_EQUIPMENT_TYPE] -moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U - -codeCaveSize = 0x7C - -; ---------------------------------------------------------------------------- -; WHO : __CPR98__calcItemTableID__Q2_8ItemDrop16CItemDropManagerFUcRCQ3_J20JJ29J11SCreateInfoRUs -; WHAT : Force some kind of equipment to be looted in Gold chests -; 2 = Ground weapons -; 4 = Ground armors -; 6 = Skell weapons -; 8 = Skell armors - -0x00000000 = .byte $type -_type = 0x00000000 - -_setEquipR4 = 0x00000004 -0x00000004 = lis r4, _type@ha -0x00000008 = lbz r4, _type@l(r4) -0x0000000C = blr - -0x021AEB88 = bla _setEquipR4 - -_setEquipR27 = 0x00000010 -0x00000010 = lis r27, _type@ha -0x00000014 = lbz r27, _type@l(r27) -0x00000018 = blr - -0x021AEB5C = bla _setEquipR27 - -0x0000001C = .byte $sub -_sub = 0x0000001C - -; Ground Weapons -_notRand = 0x00000020 -0x00000020 = clrlwi r3, r3, 24 -0x00000024 = lis r4, _sub@ha -0x00000028 = lbz r4, _sub@l(r4) -0x0000002C = cmpwi r4, 0 -0x00000030 = beqlr -0x00000034 = li r3, 0x64 -0x00000038 = blr - -0x021AC27C = bla _notRand - -_setSubGW = 0x0000003C -0x0000003C = clrlwi r30, r3, 24 -0x00000040 = lis r3, _sub@ha -0x00000044 = lbz r3, _sub@l(r3) -0x00000048 = cmpwi r3, 0 -0x0000004C = beqlr -0x00000050 = subi r3, r3, 1 -0x00000054 = clrlwi r30, r3, 24 -0x00000058 = blr - -0x021AD6D8 = bla _setSubGW - -_setSubGA = 0x0000005C -0x0000005C = clrlwi r4, r3, 24 -0x00000060 = lis r3, _sub@ha -0x00000064 = lbz r3, _sub@l(r3) -0x00000068 = cmpwi r3, 0 -0x0000006C = beqlr -0x00000070 = subi r3, r3, 1 -0x00000074 = clrlwi r4, r3, 24 -0x00000078 = blr - -0x021ADD24 = bla _setSubGA - -0x021AE41C = bla _setSubGA - diff --git a/Mods/XenobladeX/XenobladeX_mod_LootEquipmentsForceType/rules.txt b/Mods/XenobladeX/XenobladeX_mod_LootEquipmentsForceType/rules.txt deleted file mode 100644 index 55a4e703..00000000 --- a/Mods/XenobladeX/XenobladeX_mod_LootEquipmentsForceType/rules.txt +++ /dev/null @@ -1,139 +0,0 @@ -[Definition] -titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 -name = "Equipment - Force Type" -path = "Xenoblade Chronicles X/Mods/Loot/Equipment - Force Type" -description = Force the type of equipment looted.|More info and help at reddit.com/r/cemu_xenoblade. -version = 4 - -[Preset] ########################################### -name = "Ground weapons - ANY ____________________________________________" -$type = 2 -$sub = 0 - -[Preset] -name = "Ground weapons - Photon Sabers" -$type = 2 -$sub = 1 - -[Preset] -name = "Ground weapons - Assault Rifles" -$type = 2 -$sub = 2 - -[Preset] -name = "Ground weapons - Sniper Rifles" -$type = 2 -$sub = 3 - -[Preset] -name = "Ground weapons - Dual Guns" -$type = 2 -$sub = 4 - -[Preset] -name = "Ground weapons - Gatling Guns" -$type = 2 -$sub = 5 - -[Preset] -name = "Ground weapons - Rayguns" -$type = 2 -$sub = 6 - -[Preset] -name = "Ground weapons - Psycho Launchers" -$type = 2 -$sub = 7 - -[Preset] -name = "Ground weapons - Longswords" -$type = 2 -$sub = 8 - -[Preset] -name = "Ground weapons - Javelins" -$type = 2 -$sub = 9 - -[Preset] -name = "Ground weapons - Dual Swords" -$type = 2 -$sub = 10 - -[Preset] -name = "Ground weapons - Shields" -$type = 2 -$sub = 11 - -[Preset] -name = "Ground weapons - Knives" -$type = 2 -$sub = 12 - -[Preset] ########################################### -name = "Ground armors - ANY ____________________________________________" -$type = 4 -$sub = 0 - -[Preset] -name = "Ground armors - Head" -$type = 4 -$sub = 1 - -[Preset] -name = "Ground armors - Torso" -$type = 4 -$sub = 2 - -[Preset] -name = "Ground armors - Right arm" -$type = 4 -$sub = 3 - -[Preset] -name = "Ground armors - Left arm" -$type = 4 -$sub = 4 - -[Preset] -name = "Ground armors - Leg" -$type = 4 -$sub = 5 - -[Preset] ########################################### -name = "Skell weapons - ANY ____________________________________________" -$type = 6 -$sub = 0 - -[Preset] ########################################### -name = "Skell armors - ANY ____________________________________________" -$type = 8 -$sub = 0 - -[Preset] -name = "Skell armors - Head" -$type = 8 -$sub = 1 - -[Preset] -name = "Skell armors - Torso" -$type = 8 -$sub = 2 - -[Preset] -name = "Skell armors - Right arm" -$type = 8 -$sub = 3 - -[Preset] -name = "Skell armors - Left arm" -$type = 8 -$sub = 4 - -[Preset] -name = "Skell armors - Leg" -$type = 8 -$sub = 5 - - - diff --git a/Mods/XenobladeX/XenobladeX_mod_LootMaterialsDrop/patches.txt b/Mods/XenobladeX/XenobladeX_mod_LootMaterialsDrop/patches.txt deleted file mode 100644 index c7b1e274..00000000 --- a/Mods/XenobladeX/XenobladeX_mod_LootMaterialsDrop/patches.txt +++ /dev/null @@ -1,62 +0,0 @@ -[XCX_LOOT_MATERIALS] -moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U - -codeCaveSize = 0x90 - -; ---------------------------------------------------------------------------- -; WHO : __CPR90__calcItemBronze__Q2_8ItemDrop16CItemDropManagerFRQ3_J19JJ28J9SDropInfoUc -; WHAT : Affect the drop ratio of materials - -0x00000000 = .byte $mod -_ratio = 0x00000000 - -_minDropRate = 0x00000004 -0x00000004 = lis r11, _ratio@ha -0x00000008 = lbz r11, _ratio@l(r11) -0x0000000C = li r31, 0 -0x00000010 = cmpwi r11, 0 -0x00000014 = beqlr -0x00000018 = cmpw r31, r11 ; this value is the default drop ratio under which we want to set a new drop ratio (logically equal or greater) -0x0000001C = blt .+0x8 -0x00000020 = b .+0x8 -0x00000024 = mr r31, r11 ; here you set the new drop ratio -0x00000028 = cmpw r3, r31 -0x0000002C = blr - -0x021AF5DC = bla _minDropRate ; modify drop ratio for bronze chests -0x021AF614 = bla _minDropRate ; modify drop ratio for silver chests -0x021AF5F8 = bla _minDropRate ; modify drop ratio for gold chests - -; ---------------------------------------------------------------------------- -; WHO : __CPR90__calcItemBronze__Q2_8ItemDrop16CItemDropManagerFRQ3_J19JJ28J9SDropInfoUc -; WHAT : random selection when all materials at 100% and more than 5 - -_saveEquipCnt = 0x00000030 -0x00000030 = mr r30, r4 -0x00000034 = lwz r13, 0xE0(r30) -0x00000038 = blr -0x021AF334 = bla _saveEquipCnt - -_mtRand = 0x030FA650 - -_fixit = 0x00000040 -0x00000040 = li r12, 0 -0x00000044 = sub r3, r4, r13 ; r13 = equipment count, r4 = all item count, r3 = material count -0x00000048 = li r8, 4 -0x0000004C = sub r8, r8, r13 -0x00000050 = cmpw r3, r8 ; slots 0 to 4-r13 are used by equipment -0x00000054 = blelr -0x00000058 = li r3, 6 -0x0000005C = mflr r31 -0x00000060 = lis r8, _mtRand@ha -0x00000064 = addi r8, r8, _mtRand@l -0x00000068 = mtctr r8 -0x0000006C = bctrl -0x00000070 = mtlr r31 -0x00000074 = add r3, r3, r13 ; 0+r13 to 4 -0x00000078 = cmpwi r3, 4 ; r13 to 4 are the possible slots, others are ignored -0x0000007C = bgtlr -0x00000080 = mr r4, r3 -0x00000084 = blr - -0x021AF620 = bla _fixit diff --git a/Mods/XenobladeX/XenobladeX_mod_LootTreasureQuality/rules.txt b/Mods/XenobladeX/XenobladeX_mod_LootTreasureQuality/rules.txt deleted file mode 100644 index e18bd304..00000000 --- a/Mods/XenobladeX/XenobladeX_mod_LootTreasureQuality/rules.txt +++ /dev/null @@ -1,41 +0,0 @@ -[Definition] -titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 -name = "Treasure Quality" -path = "Xenoblade Chronicles X/Mods/Loot/Treasure Quality" -description = Select the preferred treasure quality you want to loot (see readme.txt for explanation).|More info and help at reddit.com/r/cemu_xenoblade. -version = 4 - -[Preset] -name = "Gold quality" -$treasure = 1 -$forced = -1 - -[Preset] -name = "Silver quality" -$treasure = 2 -$forced = -1 - -[Preset] -name = "Bronze quality" -$treasure = 3 -$forced = -1 - -[Preset] -name = "Gold quality (FORCED)" -$treasure = 1 -$forced = 1 - -[Preset] -name = "Silver quality (FORCED)" -$treasure = 2 -$forced = 2 - -[Preset] -name = "Bronze quality (FORCED)" -$treasure = 3 -$forced = 3 - -[Preset] -name = "No treasure (FORCED)" -$treasure = 0 -$forced = 0 diff --git a/Mods/XenobladeX/XenobladeX_mod_PhysicsJumpToTheMoon/patches.txt b/Mods/XenobladeX/XenobladeX_mod_PhysicsJumpToTheMoon/patches.txt deleted file mode 100644 index a00dfc26..00000000 --- a/Mods/XenobladeX/XenobladeX_mod_PhysicsJumpToTheMoon/patches.txt +++ /dev/null @@ -1,55 +0,0 @@ -[XCX_MOONJUMP] -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U - -codeCaveSize = 0x28 - -0x00000020 = .float $vert ; vertical velocity (default is 1.00, speedrun is 1.05) -0x00000024 = .float $horz ; horizontal velocity (default is 1.00, speedrun is 2.0) - -_velocity = 0x00000020 -_hvelocity = 0x00000024 - -_setVelocity = 0x00000000 -0x00000000 = lis r3, _velocity@ha -0x00000004 = lfs f30, _velocity@l(r3) -0x00000008 = fdivs f30, f1, f30 -0x0000000C = blr -0x0264A700 = bla _setVelocity - -_setHorizVelocity = 0x00000010 -0x00000010 = lis r12, _hvelocity@ha -0x00000014 = lfs f31, _hvelocity@l(r12) -0x00000018 = fdivs f31, f1, f31 -0x0000001C = blr -0x0264C0EC = bla _setHorizVelocity - -# chr::CIL_BaseJump::decideLandingType((void)) -0x024714E0 = li r3, 5 - -[XCX_MOONJUMP_1U] ###################################################################### -moduleMatches = 0xAB97DE6B ; 1.0.1U - -codeCaveSize = 0x28 - -0x00000020 = .float $vert ; vertical velocity (default is 1.00, speedrun is 1.05) -0x00000024 = .float $horz ; horizontal velocity (default is 1.00, speedrun is 2.0) - -_velocity = 0x00000020 -_hvelocity = 0x00000024 - -_setVelocity = 0x00000000 -0x00000000 = lis r3, _velocity@ha -0x00000004 = lfs f30, _velocity@l(r3) -0x00000008 = fdivs f30, f1, f30 -0x0000000C = blr -0x0264A690 = bla _setVelocity - -_setHorizVelocity = 0x00000010 -0x00000010 = lis r12, _hvelocity@ha -0x00000014 = lfs f31, _hvelocity@l(r12) -0x00000018 = fdivs f31, f1, f31 -0x0000001C = blr -0x0264C07C = bla _setHorizVelocity - -# chr::CIL_BaseJump::decideLandingType((void)) -0x02471470 = li r3, 5 \ No newline at end of file diff --git a/Mods/XenobladeX/XenobladeX_mod_PhysicsJumpToTheMoon/rules.txt b/Mods/XenobladeX/XenobladeX_mod_PhysicsJumpToTheMoon/rules.txt deleted file mode 100644 index 716cee8e..00000000 --- a/Mods/XenobladeX/XenobladeX_mod_PhysicsJumpToTheMoon/rules.txt +++ /dev/null @@ -1,72 +0,0 @@ -[Definition] -titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 -name = "Jump higher" -path = "Xenoblade Chronicles X/Mods/Physics/Jump to the Moon!" -description = Increase horizontal and vertical velocity of jump (Vanilla values are 1.0 for both).|More info and help at reddit.com/r/cemu_xenoblade. -version = 4 - -[Preset] -name = "Horizontal 3.0 / Vertical 1.10" -$horz = 3.0 -$vert = 1.10 - -[Preset] -name = "Horizontal 2.0 / Vertical 1.10" -$horz = 2.0 -$vert = 1.10 - -[Preset] -name = "Horizontal 1.5 / Vertical 1.10" -$horz = 1.5 -$vert = 1.10 - -[Preset] -name = "Horizontal 1.5 / Vertical 1.05" -$horz = 1.5 -$vert = 1.05 - -[Preset] -name = "Horizontal 1.5 / Vertical 1.03" -$horz = 1.5 -$vert = 1.03 - -[Preset] -name = "Horizontal 2.0 / Vertical 1.05" -$horz = 2.0 -$vert = 1.05 - - -[Preset] -name = "[TEST] Horizontal 1.0 / Vertical 1.02" -$horz = 1.0 -$vert = 1.02 - -[Preset] -name = "[TEST] Horizontal 1.0 / Vertical 1.05" -$horz = 1.0 -$vert = 1.05 - -[Preset] -name = "[TEST] Horizontal 1.0 / Vertical 1.10" -$horz = 1.0 -$vert = 1.10 - -[Preset] -name = "[TEST] Horizontal 1.0 / Vertical 2.0" -$horz = 1.0 -$vert = 2.0 - -[Preset] -name = "[TEST] Horizontal 1.5 / Vertical 1.0" -$horz = 1.5 -$vert = 1.0 - -[Preset] -name = "[TEST] Horizontal 2.0 / Vertical 1.0" -$horz = 2.0 -$vert = 1.0 - -[Preset] -name = "[TEST] Horizontal 3.0 / Vertical 1.0" -$horz = 3.0 -$vert = 1.0 diff --git a/Mods/XenobladeX/XenobladeX_mod_PhysicsRunForrestRun/patches.txt b/Mods/XenobladeX/XenobladeX_mod_PhysicsRunForrestRun/patches.txt deleted file mode 100644 index 26698290..00000000 --- a/Mods/XenobladeX/XenobladeX_mod_PhysicsRunForrestRun/patches.txt +++ /dev/null @@ -1,35 +0,0 @@ -[XCX_MOVESPEED] -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U - -codeCaveSize = 0x18 - -0x00000000 = .float $mod ; dash speed (smallest means fastest, default is 1.0) -_speed = 0x00000000 - -_setSpeed = 0x00000004 -0x00000004 = lis r3, _speed@ha -0x00000008 = lfs f13, _speed@l(r3) -0x0000000C = fdivs f1, f1, f13 -0x00000010 = lwz r3, 0(r31) -0x00000014 = blr - -# chr::CInnerLabelState::applyFieldMoveWeight((float)) -0x02643330 = bla _setSpeed ; SetVariableFloat(0xBD,float) - -[XCX_MOVESPEED_1U] ###################################################################### -moduleMatches = 0xAB97DE6B ; 1.0.1U - -codeCaveSize = 0x18 - -0x00000000 = .float $mod ; dash speed (smallest means fastest, default is 1.0) -_speed = 0x00000000 - -_setSpeed = 0x00000004 -0x00000004 = lis r3, _speed@ha -0x00000008 = lfs f13, _speed@l(r3) -0x0000000C = fdivs f1, f1, f13 -0x00000010 = lwz r3, 0(r31) -0x00000014 = blr - -# chr::CInnerLabelState::applyFieldMoveWeight((float)) -0x026432C0 = bla _setSpeed ; SetVariableFloat(0xBD,float) diff --git a/Mods/XenobladeX/XenobladeX_mod_WeatherForceWeather/patches.txt b/Mods/XenobladeX/XenobladeX_mod_WeatherForceWeather/patches.txt deleted file mode 100644 index d161a4ba..00000000 --- a/Mods/XenobladeX/XenobladeX_mod_WeatherForceWeather/patches.txt +++ /dev/null @@ -1,39 +0,0 @@ -[XCX_CHANGEWEATHER] -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U - -codeCaveSize = 0x10 - -0x00000000 = .byte $wtr -_weather = 0x00000000 - -; cfs::CfWtrManager::setWeatherID((unsigned int, int)) - -0x0229F0FC = bla _forceWeather - -_forceWeather = 0x00000004 -0x00000004 = lis r28, _weather@ha -0x00000008 = lbz r28, _weather@l(r28) -0x0000000C = blr - -; cfs::CfWtrManager::update((float)) -0x022B587C = nop - -[XCX_CHANGEWEATHER_1U] ###################################################################### -moduleMatches = 0xAB97DE6B ; 1.0.1U - -codeCaveSize = 0x10 - -0x00000000 = .byte $wtr -_weather = 0x00000000 - -; cfs::CfWtrManager::setWeatherID((unsigned int, int)) - -0x0229F08C = bla _forceWeather - -_forceWeather = 0x00000004 -0x00000004 = lis r28, _weather@ha -0x00000008 = lbz r28, _weather@l(r28) -0x0000000C = blr - -; cfs::CfWtrManager::update((float)) -0x022B580C = nop diff --git a/Mods/XenobladeX/XenobladeX_mod_WeatherForceWeather/rules.txt b/Mods/XenobladeX/XenobladeX_mod_WeatherForceWeather/rules.txt deleted file mode 100644 index 9a3977de..00000000 --- a/Mods/XenobladeX/XenobladeX_mod_WeatherForceWeather/rules.txt +++ /dev/null @@ -1,154 +0,0 @@ -[Definition] -titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 -name = "Force Weather" -path = "Xenoblade Chronicles X/Mods/Weather/Force Weather" -description = Force selected weather. Just select a preset and unload/reload the pack.|More info and help at reddit.com/r/cemu_xenoblade. -version = 4 - -[Preset] -name = "Primordia - Clear" -$wtr = 1 - -[Preset] -name = "Primordia - Rain" -$wtr = 2 - -;[Preset] -;name = "Primordia - Lightning" -;$wtr = 3 - -[Preset] -name = "Primordia - Heavy Rain" -$wtr = 4 - -[Preset] -name = "Primordia - Thunderstorms" -$wtr = 5 - -[Preset] -name = "Primordia - Aurora" -$wtr = 6 - -[Preset] -name = "Primordia - Meteor Showers" -$wtr = 7 - -[Preset] -name = "Primordia - Rainbow" -$wtr = 8 - -########################################## - -[Preset] -name = "Noctilum - Clear" -$wtr = 1 - -[Preset] -name = "Noctilum - Dense Fog" -$wtr = 2 - -[Preset] -name = "Noctilum - Rain" -$wtr = 3 - -[Preset] -name = "Noctilum - Thunderstorms" -$wtr = 4 - -[Preset] -name = "Noctilum - Energy Mist" -$wtr = 5 - -;[Preset] -;name = "Noctilum - Rainbow1?" -;$wtr = 13 - -########################################## - -[Preset] -name = "Oblivia - Clear" -$wtr = 1 - -[Preset] -name = "Oblivia - Rain" -$wtr = 2 - -[Preset] -name = "Oblivia - Heat Wave" -$wtr = 3 - -[Preset] -name = "Oblivia - Sandstorms" -$wtr = 4 - -;[Preset] -;name = "Oblivia - Thunderstorms (*)" -;$wtr = 5 - -[Preset] -name = "Oblivia - Electromagnetic Storms" -$wtr = 6 - -[Preset] -name = "Oblivia - Aurora" -$wtr = 7 - -[Preset] -name = "Oblivia - Meteor Showers" -$wtr = 8 - -[Preset] -name = "Oblivia - Rainbow" -$wtr = 9 - -########################################## - -[Preset] -name = "Sylvalum - Cloudy" -$wtr = 1 - -;[Preset] -;name = "Sylvalum - Thunderstorms (*)" -;$wtr = 2 - -[Preset] -name = "Sylvalum - Rising Energy Mist" -$wtr = 3 - -[Preset] -name = "Sylvalum - Spores" -$wtr = 4 - -[Preset] -name = "Sylvalum - Crimson Aurora" -$wtr = 5 - -;[Preset] -;name = "Sylvalum - Brimstone Rain (*)" -;$wtr = 6 - -########################################## - -[Preset] -name = "Cauldros - Clear" -$wtr = 1 - -[Preset] -name = "Cauldros - Cloudy" -$wtr = 2 - -;[Preset] -;name = "Cauldros - Thunderstorms (*)" -;$wtr = 3 - -[Preset] -name = "Cauldros - Electromagnetic Storms" -$wtr = 4 - -[Preset] -name = "Cauldros - Brimstone Rain" -$wtr = 5 - -[Preset] -name = "Cauldros - Rainbow" -$wtr = 6 diff --git a/Resolutions/XenobladeX_Performance_Resolution/rules.txt b/Resolutions/XenobladeX_Performance_Resolution/rules.txt deleted file mode 100644 index db9d281f..00000000 --- a/Resolutions/XenobladeX_Performance_Resolution/rules.txt +++ /dev/null @@ -1,28 +0,0 @@ -[Definition] -titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 -name = Resolution -path = "Xenoblade Chronicles X/Graphics/Performance Resolution" -description = Changes the resolution of the game. Made by getdls. -version = 4 - -[Preset] -name = 320x180 -$width = 320 -$height = 180 -$gameWidth = 1280 -$gameHeight = 720 - -[Preset] -name = 640x360 -$width = 640 -$height = 360 -$gameWidth = 1280 -$gameHeight = 720 - -[TextureRedefine] -width = 1280 -height = 720 -formatsExcluded = 0x031,0x431,0x035,0x034,0x033 #dialog prompt fixes, XCX Logo NLA -tileModesExcluded = 0x001 -overwriteWidth = ($width/$gameWidth) * 1280 -overwriteHeight = ($height/$gameHeight) * 720 diff --git a/Resolutions/XenobladeX_Resolution/rules.txt b/Resolutions/XenobladeX_Resolution/rules.txt deleted file mode 100644 index 066a6548..00000000 --- a/Resolutions/XenobladeX_Resolution/rules.txt +++ /dev/null @@ -1,462 +0,0 @@ -[Definition] -titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 -name = Resolution -path = "Xenoblade Chronicles X/Graphics/Resolution" -description = Changes the resolution of the game. Made by getdls. -version = 4 - - -[Preset] -name = 1280x720 (Default) -$width = 1280 -$height = 720 -$gameWidth = 1280 -$gameHeight = 720 -$internalRes = 1.0 -$dither = 0.01 -$scaleShader = 1.0 -$scaleBlur = 0.05 - -// Quality - -[Preset] -name = 1600x900 -$width = 1600 -$height = 900 -$gameWidth = 1280 -$gameHeight = 720 -$internalRes = 1.0 -$dither = 0.1 -$scaleShader = (720.0/900.0) # factor for any shader that can't handle fractional scaling -$scaleBlur = 0.5 - -[Preset] -name = 1920x1080 (HD) -$width = 1920 -$height = 1080 -$gameWidth = 1280 -$gameHeight = 720 -$internalRes = (720.0/1080.0) -$dither = 0.15 -$scaleShader = 1.0 #(1440.0/1080.0) -$scaleBlur = 0.5 - -[Preset] -name = 2560x1080 (21:9 HD) -$width = 2560 -$height = 1080 -$gameWidth = 1280 -$gameHeight = 720 -$internalRes = 1.0 -$dither = 0.15 -$scaleShader = (1440.0/1080.0) -$scaleBlur = 0.5 - -[Preset] -name = 1920x1200 (10:9 HD) -$width = 1920 -$height = 1200 -$gameWidth = 1280 -$gameHeight = 720 -$internalRes = 1.0 -$dither = 0.15 -$scaleShader = (1440.0/1200.0) -$scaleBlur = 0.5 - - -[Preset] -name = 2560x1440 -$width = 2560 -$height = 1440 -$gameWidth = 1280 -$gameHeight = 720 -$internalRes = 0.75 -$dither = 0.15 -$scaleShader = (1440.0/1080.0) -$scaleBlur = 0.5 - - -[Preset] -name = 3440x1440 (21:9) -$width = 3440 -$height = 1440 -$gameWidth = 1280 -$gameHeight = 720 -$internalRes = 1.0 -$dither = 0.1 -$scaleShader = 1.0 -$scaleBlur = 0.5 - -[Preset] -name = 3840x1620 (21:9 4k panel 1:1 pix mapping, transition fix) -$width = 3840 -$height = 1620 -$gameWidth = 1280 -$gameHeight = 720 -$internalRes = 0.5 -$dither = 0.25 -$scaleShader = (1440.0/1620.0) #round 1. shadow to 2.0 -$scaleBlur = 1.0 - - -[Preset] -name = 3200x1800 -$width = 3200 -$height = 1800 -$gameWidth = 1280 -$gameHeight = 720 -$internalRes = 2.0 -$dither = 0.2 -$scaleShader = (1440.0/1800.0) -$scaleBlur = 0.5 - - -[Preset] -name = 3840x2160 -$width = 3840 -$height = 2160 -$gameWidth = 1280 -$gameHeight = 720 -$internalRes = 0.5 -$dither = 0.25 -$scaleShader = (1440.0/1080.0) #round 1.5 shadow to 2.0 -$scaleBlur = 1.0 - -[Preset] -name = 5120x2160 (4k 21:9) -$width = 5120 -$height = 2160 -$gameWidth = 1280 -$gameHeight = 720 -$internalRes = 0.5 -$dither = 0.2 -$scaleShader = (1440.0/1080.0) #round 1.5 shadow to 2.0 -$scaleBlur = 1.0 - - -[Preset] -name = 5120x2880 -$width = 5120 -$height = 2880 -$gameWidth = 1280 -$gameHeight = 720 -$internalRes = 0.375 -$dither = 0.25 -$scaleShader = (1440.0/1080.0) -$scaleBlur = 1.0 - -#[Preset] -#name = 7680x4320 -#$width = 7680 -#$height = 4320 -#$gameWidth = 1280 -#$gameHeight = 720 -#$internalRes = 0.5 -#$dither = 0.25 -#$scaleShader = 1.0 -#$scaleBlur = 1.0 -# -#[Preset] -#name = 10240x5760 -#$width = 10240 -#$height = 5760 -#$gameWidth = 1280 -#$gameHeight = 720 -#$internalRes = 0.5 -#$dither = 0.25 -#$scaleShader = 1.0 -#$scaleBlur = 1.0 - -#[TextureRedefine] #moved to fancy gfx for better compatibility -#width = 1280 -#height = 720 -#formats = 0x816 -#overwriteFormat = 0x820 - - -#[TextureRedefine] -#width = 640 -#height = 368 -#formats = 0x816 -#overwriteFormat = 0x820 - -#[TextureRedefine] -#width = 640 -#height = 360 -#formats = 0x816 -#overwriteFormat = 0x820 - -#[TextureRedefine] # Bloom, DOF -#width = 320 -#height = 192 -#formats = 0x816 -#overwriteFormat = 0x820 - -#[TextureRedefine] # Bloom, DOF -#width = 320 -#height = 180 -#formats = 0x816 -#overwriteFormat = 0x820 - -[TextureRedefine] -width = 1280 -height = 720 -formatsExcluded = 0x031,0x431,0x035,0x034,0x033 #dialog prompt fixes, XCX Logo NLA -tileModesExcluded = 0x001 -overwriteWidth = ($width/$gameWidth) * 1280 -overwriteHeight = ($height/$gameHeight) * 720 - -[TextureRedefine] # shadows -width = 1024 -height = 1024 -formats = 0x005 -overwriteWidth = ($height/$gameHeight)* (1024*$scaleShader*$internalRes) -overwriteHeight = ($height/$gameHeight) * (1024*$scaleShader*$internalRes) - -[TextureRedefine] #ingame menu -width = 1024 -height = 720 -tileModesExcluded = 0x001 -overwriteWidth = ($width/$gameWidth) * 1024 -overwriteHeight = ($height/$gameHeight) * 720 - -[TextureRedefine] -width = 864 -height = 480 -#formats = -formatsExcluded = 0x431,0x035,0x034,0x033,0x031 -overwriteWidth = ($width/$gameWidth) * 864 -overwriteHeight = ($height/$gameHeight) * 480 - -[TextureRedefine] -width = 854 -height = 480 -#formats = -formatsExcluded = 0x431,0x035,0x034,0x033,0x031 -overwriteWidth = ($width/$gameWidth) * 854 -overwriteHeight = ($height/$gameHeight) * 480 - -[TextureRedefine] -width = 640 -height = 368 -overwriteWidth = ($width/$gameWidth) * (640*$internalRes) -overwriteHeight = ($height/$gameHeight) * (368*$internalRes) - -[TextureRedefine] -width = 640 -height = 360 -formatsExcluded = 0x033,0x031 #dialog prompt fixes, XCX Logo NLA -tileModesExcluded = 0x001 # fmv sub colour -overwriteWidth = ($width/$gameWidth) * (640*$internalRes) -overwriteHeight = ($height/$gameHeight) * (360*$internalRes) - -[TextureRedefine] # shadows 1024 for smoother transition -width = 512 -height = 512 -formats = 0x005 -overwriteWidth = ($height/$gameHeight) * (1024*$scaleShader*$internalRes) -overwriteHeight = ($height/$gameHeight) * (1024*$scaleShader*$internalRes) - -[TextureRedefine] -width = 512 -height = 288 -overwriteWidth = ($width/$gameWidth) * (512*$internalRes) -overwriteHeight = ($height/$gameHeight) * (288*$internalRes) - -[TextureRedefine] # fog 1.5 match stencil -width = 448 -height = 240 -overwriteWidth = ($width/$gameWidth) * (448*$internalRes) -overwriteHeight = ($height/$gameHeight) * (240*$internalRes) - -[TextureRedefine] # fog -width = 426 -height = 240 -overwriteWidth = ($width/$gameWidth) * (426*$internalRes) -overwriteHeight = ($height/$gameHeight) * (240*$internalRes) - -[TextureRedefine] # #Bloom, DOF -width = 320 -height = 192 -overwriteWidth = ($width/$gameWidth) * (320*$internalRes) -overwriteHeight = ($height/$gameHeight) * (192*$internalRes) - -[TextureRedefine] # Bloom, DOF -width = 384 -height = 192 -#formats = 0x001 -overwriteWidth = ($width/$gameWidth) * (384*$internalRes) -overwriteHeight = ($height/$gameHeight) * (192*$internalRes) - -[TextureRedefine] # Bloom, DOF -width = 320 -height = 180 -overwriteWidth = ($width/$gameWidth) * (320*$internalRes) -overwriteHeight = ($height/$gameHeight) * (180*$internalRes) - -[TextureRedefine] -width = 256 -height = 144 -formatsExcluded = 0x431,0x035,0x034,0x033,0x031 -overwriteWidth = ($width/$gameWidth) * (256*$internalRes) -overwriteHeight = ($height/$gameHeight) * (144*$internalRes) - -[TextureRedefine] # PR screen -width = 256 -height = 256 -formats = 0x810,0x01a,0x816,0x011 -overwriteWidth = ($width/$gameWidth) * (256*$internalRes) -overwriteHeight = ($height/$gameHeight) * (256*$internalRes) - -[TextureRedefine]# sky, pr screen -width = 255 -height = 255 -formats = 0x810,0x01a,0x41a,0x816,0x011 -#formatsExcluded = 0x431,0x035,0x034,0x033,0x031 -overwriteWidth = ($width/$gameWidth) * (255*$internalRes) -overwriteHeight = ($height/$gameHeight) * (255*$internalRes) - -[TextureRedefine] # skell depth -width = 192 -height = 96 -overwriteWidth = ($width/$gameWidth) * (192*$internalRes) -overwriteHeight = ($height/$gameHeight) * (96*$internalRes) - -[TextureRedefine] # Bloom 2nd -width = 160 -height = 96 -formatsExcluded = 0x431,0x035,0x034,0x033,0x031 -overwriteWidth = ($width/$gameWidth) * (160*$internalRes) -overwriteHeight = ($height/$gameHeight) * (96*$internalRes) - -[TextureRedefine] #bloom 2nd -width = 160 -height = 90 -###formats = 0x816 -formatsExcluded = 0x431,0x035,0x034,0x033,0x031 -overwriteWidth = ($width/$gameWidth) * (160*$internalRes) -overwriteHeight = ($height/$gameHeight) * (90*$internalRes) - -[TextureRedefine] # -width = 128 -height = 128 -formats = 0x806 #,0x035,0x034,0x033,0x031 -formatsExcluded = 0x431,0x035,0x034,0x033,0x031 -overwriteWidth = ($width/$gameWidth) * 128 -overwriteHeight = ($height/$gameHeight) * 128 - -[TextureRedefine] # skell view 8 -width = 128 -height = 80 -formats = 0x816 #,0x035,0x034,0x033,0x031 -formatsExcluded = 0x431,0x035,0x034,0x033,0x031 -overwriteWidth = ($width/$gameWidth) * 128 -overwriteHeight = ($height/$gameHeight) * 128 - -[TextureRedefine] # skell view -width = 128 -height = 72 -formats = 0x816 #,0x035,0x034,0x033,0x031 -formatsExcluded = 0x431,0x035,0x034,0x033,0x031 -overwriteWidth = ($width/$gameWidth) * 128 -overwriteHeight = ($height/$gameHeight) * 128 - -#[TextureRedefine] -#width = 127 -#height = 127 -#formats = 0x80e # 0x820,0x816 #,0x035,0x034,0x033,0x032,0x031 -#overwriteWidth = ($width/$gameWidth) * 127 -#overwriteHeight = ($height/$gameHeight) * 127 - -[TextureRedefine] #bloom 3rd level -width = 96 -height = 48 -overwriteWidth = ($width/$gameWidth) * (96*$internalRes) -overwriteHeight = ($height/$gameHeight) * (48*$internalRes) - -[TextureRedefine] #bloom 3rd level -width = 80 -height = 46 -overwriteWidth = ($width/$gameWidth) * (80*$internalRes) -overwriteHeight = ($height/$gameHeight) * (46*$internalRes) - -[TextureRedefine] -width = 64 -height = 64 -dept = 1 -formats = 0x820,0x816 #,0x035,0x034,0x033,0x032,0x031 -#formatsExcluded = 0x431,0x035,0x034,0x033,0x031 -overwriteWidth = ($width/$gameWidth) * (64*$internalRes) -overwriteHeight = ($height/$gameHeight) * (64*$internalRes) - -[TextureRedefine] #skell cockpit bloom 3rd level -width = 64 -height = 32 -formats = 0x816,0x806 #0x820,0x816 #,0x035,0x034,0x033,0x032,0x031 -overwriteWidth = ($width/$gameWidth) * (64*$internalRes) -overwriteHeight = ($height/$gameHeight) * (32*$internalRes) - -[TextureRedefine] #skell view -width = 40 -height = 24 -#formats = -overwriteWidth = ($width/$gameWidth) * (40*$internalRes) -overwriteHeight = ($height/$gameHeight) * (24*$internalRes) - -[TextureRedefine] -width = 32 -height = 32 -dept = 1 -formats = 0x806 #,0x035,0x034,0x033,0x032,0x031 -#formatsExcluded = 0x431,0x035,0x034,0x033,0x031 -overwriteWidth = ($width/$gameWidth) * (32*$internalRes) -overwriteHeight = ($height/$gameHeight) * (32*$internalRes) -# -#[TextureRedefine] # -#width = 32 -#height = 16 -#formats = 0x816 -##formatsExcluded = 0x431,0x035,0x034,0x033,0x031 -#overwriteWidth = ($width/$gameWidth) * (32*$internalRes) -#overwriteHeight = ($height/$gameHeight) * (16*$internalRes) -# -#[TextureRedefine] #don't scale 0x01a -#width = 16 -#height = 16 -#dept = 1 -#formats = 0x816 #0x008 ,0x431,0x031 -###formatsExcluded = 0x431,0x035,0x034,0x033,0x031,0x806 -#overwriteWidth = ($width/$gameWidth) * (16*$internalRes) -#overwriteHeight = ($height/$gameHeight) * (8*$internalRes) -# -#[TextureRedefine] # tilemode 2 -#width = 16 -#height = 8 -#formats = 0x81e,0x80e,0x806 0x008 #,0x431,0x031 -##formatsExcluded = 0x431,0x035,0x034,0x033,0x031,0x806 -#overwriteWidth = ($width/$gameWidth) * (16*$internalRes) -#overwriteHeight = ($height/$gameHeight) * (8*$internalRes) - -#[TextureRedefine] # tilemode 2 -#width = 8 -#height = 8 -#formats = 0x806 #,0x81e,0x80e # ,0x431,0x031 -###formatsExcluded = 0x431,0x035,0x034,0x033,0x031,0x806 -#overwriteWidth = ($width/$gameWidth) * (8*$internalRes) -#overwriteHeight = ($height/$gameHeight) * (8*$internalRes) - -#[TextureRedefine] -#width = 4 -#height = 4 -####formats = 0x81e,0x80e -#formatsExcluded = 0x431,0x035,0x034,0x033,0x031 -#overwriteWidth = ($width/$gameWidth) * (4*$internalRes) -#overwriteHeight = ($height/$gameHeight) * (4*$internalRes) -# -#[TextureRedefine] -#width = 1 -#height = 1 -####formats = 0x008,0x81e,0x01a -#formatsExcluded = 0x431,0x035,0x034,0x033,0x031 -#overwriteWidth = ($width/$gameWidth) * (1*$internalRes) -#overwriteHeight = ($height/$gameHeight) * (1*$internalRes) diff --git a/Workarounds/XenobladeX_Brightness/rules.txt b/Workarounds/XenobladeX_Brightness/rules.txt deleted file mode 100644 index 264436a1..00000000 --- a/Workarounds/XenobladeX_Brightness/rules.txt +++ /dev/null @@ -1,323 +0,0 @@ -[Definition] -titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 -name = Brightness fix with colour and contrast -path = "Xenoblade Chronicles X/Workarounds/Brightness" -description = Fixes overbright day and too dark night. |Optionally tweaks colour and contrast. -version = 4 - -#[Default] # -#$contrastCurve:float = 0.0 # 0.0 no extra contrast to mix in -#$exposure:float = 1.0 # 1.0 Full range without clipping pre mix - brightness fixed -#$postExposure:float = 1.0 # 1.0 Full range without clipping - 1.1 -> slight clipping but nice -#$vibrance:float = 0.0 # 0.0 no extra vibrance -#$mixBalance:float = 1.0 # FXAA, bicubic sharpen or smooth pass -> Reserved for FX / Contrasty rework -#$glare:float = 0.95 # Reflection shader raise/lower to balance clipping -> Reserved for FX / Contrasty rework -#$lift:float = 0.002 # Raise shadows -> Reserved for FX / Contrasty rework -#$isCustom:int = 0 - -##Pre packed settings -[Preset] -name = WiiU default - Brightness fix only -category = Standard presets -$contrastCurve:float = 0.0 -$exposure:float = 1.0 -$postExposure:float = 1.0 -$vibrance:float = 0.0 - -[Preset] -name = Increased brightness levels 1.15 -category = Standard presets -$contrastCurve:float = 0 -$exposure:float = 1.15 -$postExposure:float = 1.0 -$vibrance:float = 0.0 - -[Preset] -name = Increased contrast no colour change -category = Standard presets -$contrastCurve:float = 0.2 -$exposure:float = 1.1 -$postExposure:float = 1.05 -$vibrance:float = 0.0 - -[Preset] -name = Saturation and contrast 1.25 - Darker nights -category = Standard presets -$contrastCurve:float = 0 -$exposure:float = 1.3 -$postExposure:float = 1.1 -$vibrance:float = 0.3 - -[Preset] -name = Saturation and contrast 1.5 - Darker Nights -category = Standard presets -$contrastCurve:float = 0.0 -$exposure:float = 1.55 -$postExposure:float = 1.15 -$vibrance:float = 0.45 - -#[Preset] -#name = Custom -#category = Standard presets -#$isCustom:int = 1 -# -# -###exposure -#[Preset] -#name = No extra exposure - Only brightness fix -#category = Exposure and brightness fix -#condition = $isCustom == 1 -#$exposure:float = 1.0 -# -#[Preset] -#name = 10% less exposure -#category = Exposure and brightness fix -#condition = $isCustom == 1 -#$exposure:float = 0.9 -# -#[Preset] -#name = 15% less exposure -#category = Exposure and brightness fix -#condition = $isCustom == 1 -#$exposure:float = 0.85 -# -#[Preset] -#name = 20% less exposure -#category = Exposure and brightness fix -#condition = $isCustom == 1 -#$exposure:float = 0.8 -# -#[Preset] -#name = 5% more exposure -#category = Exposure and brightness fix -#condition = $isCustom == 1 -#$exposure:float = 1.05 -# -#[Preset] -#name = 10% more exposure -#category = Exposure and brightness fix -#condition = $isCustom == 1 -#$exposure:float = 1.1 -# -#[Preset] -#name = 15% more exposure -#category = Exposure and brightness fix -#condition = $isCustom == 1 -#$exposure:float = 1.15 -# -#[Preset] -#name = 20% more exposure -#category = Exposure and brightness fix -#condition = $isCustom == 1 -#$exposure:float = 1.2 -# -#[Preset] -#name = 30% more exposure -#category = Exposure and brightness fix -#condition = $isCustom == 1 -#$exposure:float = 1.3 -# -#[Preset] -#name = 40% more exposure -#category = Exposure and brightness fix -#condition = $isCustom == 1 -#$exposure:float = 1.4 -# -#[Preset] -#name = 50% more exposure -#category = Exposure and brightness fix -#condition = $isCustom == 1 -#$exposure:float = 1.5 -# -#[Preset] -#name = 75% more exposure -#category = Exposure and brightness fix -#condition = $isCustom == 1 -#$exposure:float = 1.5 -# -# -###Saturation -#[Preset] -#name = No extra saturation -#category = Saturation - Darkens image -#condition = $isCustom == 1 -#$vibrance:float = 0.0 -# -#[Preset] -#name = 5% more saturation -#category = Saturation - Darkens image -#condition = $isCustom == 1 -#$vibrance:float = 0.05 -# -#[Preset] -#name = 10% more saturation -#category = Saturation - Darkens image -#condition = $isCustom == 1 -#$vibrance:float = 0.1 -# -#[Preset] -#name = 15% more saturation -#category = Saturation - Darkens image -#condition = $isCustom == 1 -#$vibrance:float = 0.15 -# -#[Preset] -#name = 20% more saturation -#category = Saturation - Darkens image -#condition = $isCustom == 1 -#$vibrance:float = 0.2 -# -#[Preset] -#name = 30% more saturation -#category = Saturation - Darkens image -#condition = $isCustom == 1 -#$vibrance:float = 0.3 -# -#[Preset] -#name = 40% more saturation -#category = Saturation - Darkens image -#condition = $isCustom == 1 -#$vibrance:float = 0.4 -# -#[Preset] -#name = 50% more saturation -#category = Saturation - Darkens image -#condition = $isCustom == 1 -#$vibrance:float = 0.5 -# -#[Preset] -#name = 75% more saturation -#category = Saturation - Darkens image -#condition = $isCustom == 1 -#$vibrance:float = 0.75 -# -# -###Contrast curve -#[Preset] -#name = No extra contrast -#category = Contrast -#condition = $isCustom == 1 -#$contrastCurve:float = 0.0 -# -# -# -#[Preset] -#name = 20 % less contrast -#category = Contrast -#condition = $isCustom == 1 -#$contrastCurve:float = -0.2 -# -#[Preset] -#name = 5% more contrast -#category = Contrast -#condition = $isCustom == 1 -#$contrastCurve:float = 0.05 -# -#[Preset] -#name = 10% more contrast -#category = Contrast -#condition = $isCustom == 1 -#$contrastCurve:float = 0.1 -# -#[Preset] -#name = 15% more contrast -#category = Contrast -#condition = $isCustom == 1 -#$contrastCurve:float = 0.15 -# -#[Preset] -#name = 20% more contrast -#category = Contrast -#condition = $isCustom == 1 -#$contrastCurve:float = 0.2 -# -#[Preset] -#name = 30% more contrast -#category = Contrast -#condition = $isCustom == 1 -#$contrastCurve:float = 0.3 -# -#[Preset] -#name = 40% more contrast -#category = Contrast -#condition = $isCustom == 1 -#$contrastCurve:float = 0.4 -# -#[Preset] -#name = 50% more contrast -#category = Contrast -#condition = $isCustom == 1 -#$contrastCurve:float = 0.5 -# -#[Preset] -#name = 75% more contrast -#category = Contrast -#condition = $isCustom == 1 -#$contrastCurve:float = 0.75 -# -###postExposure curve -#[Preset] -#name = No post postExposure -#category = Exposure after colour grading -#condition = $isCustom == 1 -#$postExposure:float = 1.0 -# -#[Preset] -#name = 10% less post Exposure -#category = Exposure after colour grading -#condition = $isCustom == 1 -#$postExposure:float = 0.9 -# -#[Preset] -#name = 15% less post Exposure -#category = Exposure after colour grading -#condition = $isCustom == 1 -#$postExposure:float = 0.85 -# -#[Preset] -#name = 20% less post Exposure -#category = Exposure after colour grading -#condition = $isCustom == 1 -#$postExposure:float = 0.8 -# -#[Preset] -#name = 5% more post Exposure -#category = Exposure after colour grading -#condition = $isCustom == 1 -#$postExposure:float = 1.05 -# -#[Preset] -#name = 10% more post Exposure -#category = Exposure after colour grading -#condition = $isCustom == 1 -#$postExposure:float = 1.1 -# -#[Preset] -#name = 15% more post Exposure -#category = Exposure after colour grading -#condition = $isCustom == 1 -#$postExposure:float = 1.15 -# -#[Preset] -#name = 20% more post Exposure -#category = Exposure after colour grading -#condition = $isCustom == 1 -#$postExposure:float = 1.2 -# -#[Preset] -#name = 30% more post Exposure -#category = Exposure after colour grading -#condition = $isCustom == 1 -#$postExposure:float = 1.3 -# -#[Preset] -#name = 40% more post Exposure -#category = Exposure after colour grading -#condition = $isCustom == 1 -#$postExposure:float = 1.4 -# -#[Preset] -#name = 50% more post Exposure -#category = Exposure after colour grading -#condition = $isCustom == 1 -#$postExposure:float = 1.5 \ No newline at end of file diff --git a/Enhancements/XenobladeX_AntiAliasing/59df1c7e1806366c_00000000000003c9_ps.txt b/src/XenobladeChroniclesX/Enhancements/AntiAliasing/59df1c7e1806366c_00000000000003c9_ps.txt similarity index 100% rename from Enhancements/XenobladeX_AntiAliasing/59df1c7e1806366c_00000000000003c9_ps.txt rename to src/XenobladeChroniclesX/Enhancements/AntiAliasing/59df1c7e1806366c_00000000000003c9_ps.txt diff --git a/Enhancements/XenobladeX_AntiAliasing/rules.txt b/src/XenobladeChroniclesX/Enhancements/AntiAliasing/rules.txt similarity index 100% rename from Enhancements/XenobladeX_AntiAliasing/rules.txt rename to src/XenobladeChroniclesX/Enhancements/AntiAliasing/rules.txt diff --git a/Enhancements/XenobladeX_Contrasty/59df1c7e1806366c_00000000000003c9_ps.txt b/src/XenobladeChroniclesX/Enhancements/Contrasty/59df1c7e1806366c_00000000000003c9_ps.txt similarity index 100% rename from Enhancements/XenobladeX_Contrasty/59df1c7e1806366c_00000000000003c9_ps.txt rename to src/XenobladeChroniclesX/Enhancements/Contrasty/59df1c7e1806366c_00000000000003c9_ps.txt diff --git a/Enhancements/XenobladeX_Contrasty/_497a209b49886520_0000000000000000_vs.txt b/src/XenobladeChroniclesX/Enhancements/Contrasty/_497a209b49886520_0000000000000000_vs.txt similarity index 100% rename from Enhancements/XenobladeX_Contrasty/_497a209b49886520_0000000000000000_vs.txt rename to src/XenobladeChroniclesX/Enhancements/Contrasty/_497a209b49886520_0000000000000000_vs.txt diff --git a/Enhancements/XenobladeX_Contrasty/rules.txt b/src/XenobladeChroniclesX/Enhancements/Contrasty/rules.txt similarity index 94% rename from Enhancements/XenobladeX_Contrasty/rules.txt rename to src/XenobladeChroniclesX/Enhancements/Contrasty/rules.txt index 6a2c1573..9239c174 100644 --- a/Enhancements/XenobladeX_Contrasty/rules.txt +++ b/src/XenobladeChroniclesX/Enhancements/Contrasty/rules.txt @@ -3,7 +3,7 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = Contrasty path = "Xenoblade Chronicles X/Enhancements/Contrasty" description = This pack tweaks the colours and contrast to whatever preset you set it as. You can also make your own preset by editing the Default preset in the Contrasty folder from the game's graphic packs. Enabling will ignore your other AA settings. Made by getdls. -version = 4 +version = 5 [Preset] name = High Contrasty - shadow lift @@ -14,7 +14,7 @@ $redMid = 0.99 $greenMid = 0.99 $blueMid = 0.99 $redHilight = 1.0 -$greenHilight =1.0 +$greenHilight = 1.0 $blueHilight = 1.0 $contrastCurve = 0.4 @@ -50,7 +50,7 @@ $bleach = 0.85 $sharp_mix = 0.05 [Preset] -name = Colourful +name = Colorful $redShadows = 1.0 $greenShadows = 1.0 $blueSadows = 1.0 @@ -58,7 +58,7 @@ $redMid = 0.99 $greenMid = 0.98 $blueMid = 0.99 $redHilight = 1.0 -$greenHilight =0.99 +$greenHilight = 0.99 $blueHilight = 1.0 $contrastCurve = 0.333 @@ -80,7 +80,7 @@ $redMid = 1.0 $greenMid = 1.0 $blueMid = 1.0 $redHilight = 0.99 -$greenHilight =0.99 +$greenHilight = 0.99 $blueHilight = 0.99 $contrastCurve = 0.25 @@ -102,7 +102,7 @@ $redMid = 1.0 $greenMid = 1.0 $blueMid = 1.0 $redHilight = 1.0 -$greenHilight =1.0 +$greenHilight = 1.0 $blueHilight = 1.0 $contrastCurve = 0.0 diff --git a/Enhancements/XenobladeX_FancyFX/5eb82314ffb8484e_00000000000007f9_ps.txt b/src/XenobladeChroniclesX/Enhancements/FancyFX/5eb82314ffb8484e_00000000000007f9_ps.txt similarity index 100% rename from Enhancements/XenobladeX_FancyFX/5eb82314ffb8484e_00000000000007f9_ps.txt rename to src/XenobladeChroniclesX/Enhancements/FancyFX/5eb82314ffb8484e_00000000000007f9_ps.txt diff --git a/Enhancements/XenobladeX_FancyFX/840947e29015aa9a_00000000000003c9_ps.txt b/src/XenobladeChroniclesX/Enhancements/FancyFX/840947e29015aa9a_00000000000003c9_ps.txt similarity index 100% rename from Enhancements/XenobladeX_FancyFX/840947e29015aa9a_00000000000003c9_ps.txt rename to src/XenobladeChroniclesX/Enhancements/FancyFX/840947e29015aa9a_00000000000003c9_ps.txt diff --git a/Enhancements/XenobladeX_FancyFX/_810cde937ebbdf9f_000000000000000f_ps.txt b/src/XenobladeChroniclesX/Enhancements/FancyFX/_810cde937ebbdf9f_000000000000000f_ps.txt similarity index 100% rename from Enhancements/XenobladeX_FancyFX/_810cde937ebbdf9f_000000000000000f_ps.txt rename to src/XenobladeChroniclesX/Enhancements/FancyFX/_810cde937ebbdf9f_000000000000000f_ps.txt diff --git a/Enhancements/XenobladeX_FancyFX/_b253dca415790207_0000000000000079_ps.txt b/src/XenobladeChroniclesX/Enhancements/FancyFX/_b253dca415790207_0000000000000079_ps.txt similarity index 100% rename from Enhancements/XenobladeX_FancyFX/_b253dca415790207_0000000000000079_ps.txt rename to src/XenobladeChroniclesX/Enhancements/FancyFX/_b253dca415790207_0000000000000079_ps.txt diff --git a/Enhancements/XenobladeX_FancyFX/_ed70de7fe7542f87_00000000000003c9_ps.txt b/src/XenobladeChroniclesX/Enhancements/FancyFX/_ed70de7fe7542f87_00000000000003c9_ps.txt similarity index 100% rename from Enhancements/XenobladeX_FancyFX/_ed70de7fe7542f87_00000000000003c9_ps.txt rename to src/XenobladeChroniclesX/Enhancements/FancyFX/_ed70de7fe7542f87_00000000000003c9_ps.txt diff --git a/Enhancements/XenobladeX_FancyFX/b3fb199c73caa796_00000000000003c9_ps.txt b/src/XenobladeChroniclesX/Enhancements/FancyFX/b3fb199c73caa796_00000000000003c9_ps.txt similarity index 100% rename from Enhancements/XenobladeX_FancyFX/b3fb199c73caa796_00000000000003c9_ps.txt rename to src/XenobladeChroniclesX/Enhancements/FancyFX/b3fb199c73caa796_00000000000003c9_ps.txt diff --git a/Enhancements/XenobladeX_FancyFX/d8e69e8df8c227f5_00000000000003c9_ps.txt b/src/XenobladeChroniclesX/Enhancements/FancyFX/d8e69e8df8c227f5_00000000000003c9_ps.txt similarity index 100% rename from Enhancements/XenobladeX_FancyFX/d8e69e8df8c227f5_00000000000003c9_ps.txt rename to src/XenobladeChroniclesX/Enhancements/FancyFX/d8e69e8df8c227f5_00000000000003c9_ps.txt diff --git a/Enhancements/XenobladeX_FancyFX/e412d30f981be3b5_0000000000000000_vs.txt b/src/XenobladeChroniclesX/Enhancements/FancyFX/e412d30f981be3b5_0000000000000000_vs.txt similarity index 100% rename from Enhancements/XenobladeX_FancyFX/e412d30f981be3b5_0000000000000000_vs.txt rename to src/XenobladeChroniclesX/Enhancements/FancyFX/e412d30f981be3b5_0000000000000000_vs.txt diff --git a/Enhancements/XenobladeX_FancyFX/rules.txt b/src/XenobladeChroniclesX/Enhancements/FancyFX/rules.txt similarity index 97% rename from Enhancements/XenobladeX_FancyFX/rules.txt rename to src/XenobladeChroniclesX/Enhancements/FancyFX/rules.txt index c304c861..955f0dc4 100644 --- a/Enhancements/XenobladeX_FancyFX/rules.txt +++ b/src/XenobladeChroniclesX/Enhancements/FancyFX/rules.txt @@ -1,6 +1,6 @@ [Definition] titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 -name = Fancy GFX # I would have called this RTX on, but Nvidia has trademarked it ;) +name = Fancy GFX path = "Xenoblade Chronicles X/Enhancements/Fancy FX" description = Pretty blur, de-band sky, re-align cinematic etc, maintained on Nvidia. Made by getdls. version = 4 diff --git a/Enhancements/XenobladeX_NegativeLOD/rules.txt b/src/XenobladeChroniclesX/Enhancements/NegativeLOD/rules.txt similarity index 100% rename from Enhancements/XenobladeX_NegativeLOD/rules.txt rename to src/XenobladeChroniclesX/Enhancements/NegativeLOD/rules.txt diff --git a/Resolutions/XenobladeX_Resolution/007148d1db7f78e7_0000000000000000_vs.txt b/src/XenobladeChroniclesX/Graphics/007148d1db7f78e7_0000000000000000_vs.txt similarity index 100% rename from Resolutions/XenobladeX_Resolution/007148d1db7f78e7_0000000000000000_vs.txt rename to src/XenobladeChroniclesX/Graphics/007148d1db7f78e7_0000000000000000_vs.txt diff --git a/Resolutions/XenobladeX_Resolution/0b8b33c2f133a514_0000000000000000_vs.txt b/src/XenobladeChroniclesX/Graphics/0b8b33c2f133a514_0000000000000000_vs.txt similarity index 100% rename from Resolutions/XenobladeX_Resolution/0b8b33c2f133a514_0000000000000000_vs.txt rename to src/XenobladeChroniclesX/Graphics/0b8b33c2f133a514_0000000000000000_vs.txt diff --git a/Resolutions/XenobladeX_Resolution/0dbac1e3ebdc5c02_0000000000000000_vs.txt b/src/XenobladeChroniclesX/Graphics/0dbac1e3ebdc5c02_0000000000000000_vs.txt similarity index 100% rename from Resolutions/XenobladeX_Resolution/0dbac1e3ebdc5c02_0000000000000000_vs.txt rename to src/XenobladeChroniclesX/Graphics/0dbac1e3ebdc5c02_0000000000000000_vs.txt diff --git a/Resolutions/XenobladeX_Resolution/14f760ff4d6b05f5_0000000000000000_vs.txt b/src/XenobladeChroniclesX/Graphics/14f760ff4d6b05f5_0000000000000000_vs.txt similarity index 100% rename from Resolutions/XenobladeX_Resolution/14f760ff4d6b05f5_0000000000000000_vs.txt rename to src/XenobladeChroniclesX/Graphics/14f760ff4d6b05f5_0000000000000000_vs.txt diff --git a/Resolutions/XenobladeX_Resolution/1f915b133a255dab_0000000000000000_vs.txt b/src/XenobladeChroniclesX/Graphics/1f915b133a255dab_0000000000000000_vs.txt similarity index 100% rename from Resolutions/XenobladeX_Resolution/1f915b133a255dab_0000000000000000_vs.txt rename to src/XenobladeChroniclesX/Graphics/1f915b133a255dab_0000000000000000_vs.txt diff --git a/Resolutions/XenobladeX_Resolution/20075cc6cf058a84_0000000000000000_vs.txt b/src/XenobladeChroniclesX/Graphics/20075cc6cf058a84_0000000000000000_vs.txt similarity index 100% rename from Resolutions/XenobladeX_Resolution/20075cc6cf058a84_0000000000000000_vs.txt rename to src/XenobladeChroniclesX/Graphics/20075cc6cf058a84_0000000000000000_vs.txt diff --git a/Resolutions/XenobladeX_Resolution/21eafb6c514a4b35_0000000000000000_vs.txt b/src/XenobladeChroniclesX/Graphics/21eafb6c514a4b35_0000000000000000_vs.txt similarity index 100% rename from Resolutions/XenobladeX_Resolution/21eafb6c514a4b35_0000000000000000_vs.txt rename to src/XenobladeChroniclesX/Graphics/21eafb6c514a4b35_0000000000000000_vs.txt diff --git a/Resolutions/XenobladeX_Resolution/2716141e287247da_0000000000000000_vs.txt b/src/XenobladeChroniclesX/Graphics/2716141e287247da_0000000000000000_vs.txt similarity index 100% rename from Resolutions/XenobladeX_Resolution/2716141e287247da_0000000000000000_vs.txt rename to src/XenobladeChroniclesX/Graphics/2716141e287247da_0000000000000000_vs.txt diff --git a/Resolutions/XenobladeX_Resolution/330acac562ddee2b_0000000000000000_vs.txt b/src/XenobladeChroniclesX/Graphics/330acac562ddee2b_0000000000000000_vs.txt similarity index 100% rename from Resolutions/XenobladeX_Resolution/330acac562ddee2b_0000000000000000_vs.txt rename to src/XenobladeChroniclesX/Graphics/330acac562ddee2b_0000000000000000_vs.txt diff --git a/Resolutions/XenobladeX_Resolution/3fae14064195391b_0000000000000000_vs.txt b/src/XenobladeChroniclesX/Graphics/3fae14064195391b_0000000000000000_vs.txt similarity index 100% rename from Resolutions/XenobladeX_Resolution/3fae14064195391b_0000000000000000_vs.txt rename to src/XenobladeChroniclesX/Graphics/3fae14064195391b_0000000000000000_vs.txt diff --git a/Resolutions/XenobladeX_Resolution/4c66e611ad14aabe_0000000000000000_vs.txt b/src/XenobladeChroniclesX/Graphics/4c66e611ad14aabe_0000000000000000_vs.txt similarity index 100% rename from Resolutions/XenobladeX_Resolution/4c66e611ad14aabe_0000000000000000_vs.txt rename to src/XenobladeChroniclesX/Graphics/4c66e611ad14aabe_0000000000000000_vs.txt diff --git a/Resolutions/XenobladeX_Resolution/5a41baf724c1cff3_0000000000000000_vs.txt b/src/XenobladeChroniclesX/Graphics/5a41baf724c1cff3_0000000000000000_vs.txt similarity index 100% rename from Resolutions/XenobladeX_Resolution/5a41baf724c1cff3_0000000000000000_vs.txt rename to src/XenobladeChroniclesX/Graphics/5a41baf724c1cff3_0000000000000000_vs.txt diff --git a/Resolutions/XenobladeX_Resolution/6093720c5ca6289c_0000000000000000_vs.txt b/src/XenobladeChroniclesX/Graphics/6093720c5ca6289c_0000000000000000_vs.txt similarity index 100% rename from Resolutions/XenobladeX_Resolution/6093720c5ca6289c_0000000000000000_vs.txt rename to src/XenobladeChroniclesX/Graphics/6093720c5ca6289c_0000000000000000_vs.txt diff --git a/Resolutions/XenobladeX_Resolution/610a9c4cb60b0bdf_0000000000000000_vs.txt b/src/XenobladeChroniclesX/Graphics/610a9c4cb60b0bdf_0000000000000000_vs.txt similarity index 100% rename from Resolutions/XenobladeX_Resolution/610a9c4cb60b0bdf_0000000000000000_vs.txt rename to src/XenobladeChroniclesX/Graphics/610a9c4cb60b0bdf_0000000000000000_vs.txt diff --git a/Resolutions/XenobladeX_Resolution/622450648ddbf1b2_0000000000000000_vs.txt b/src/XenobladeChroniclesX/Graphics/622450648ddbf1b2_0000000000000000_vs.txt similarity index 100% rename from Resolutions/XenobladeX_Resolution/622450648ddbf1b2_0000000000000000_vs.txt rename to src/XenobladeChroniclesX/Graphics/622450648ddbf1b2_0000000000000000_vs.txt diff --git a/Resolutions/XenobladeX_Resolution/738c509776f2c113_0000000000000000_vs.txt b/src/XenobladeChroniclesX/Graphics/738c509776f2c113_0000000000000000_vs.txt similarity index 100% rename from Resolutions/XenobladeX_Resolution/738c509776f2c113_0000000000000000_vs.txt rename to src/XenobladeChroniclesX/Graphics/738c509776f2c113_0000000000000000_vs.txt diff --git a/Resolutions/XenobladeX_Resolution/7d2d26ba00a66735_0000000000000000_vs.txt b/src/XenobladeChroniclesX/Graphics/7d2d26ba00a66735_0000000000000000_vs.txt similarity index 100% rename from Resolutions/XenobladeX_Resolution/7d2d26ba00a66735_0000000000000000_vs.txt rename to src/XenobladeChroniclesX/Graphics/7d2d26ba00a66735_0000000000000000_vs.txt diff --git a/Resolutions/XenobladeX_Resolution/7ec11ebc6ad99936_0000000000000000_vs.txt b/src/XenobladeChroniclesX/Graphics/7ec11ebc6ad99936_0000000000000000_vs.txt similarity index 100% rename from Resolutions/XenobladeX_Resolution/7ec11ebc6ad99936_0000000000000000_vs.txt rename to src/XenobladeChroniclesX/Graphics/7ec11ebc6ad99936_0000000000000000_vs.txt diff --git a/Resolutions/XenobladeX_Resolution/8236d4df96d36e25_0000000000000000_vs.txt b/src/XenobladeChroniclesX/Graphics/8236d4df96d36e25_0000000000000000_vs.txt similarity index 100% rename from Resolutions/XenobladeX_Resolution/8236d4df96d36e25_0000000000000000_vs.txt rename to src/XenobladeChroniclesX/Graphics/8236d4df96d36e25_0000000000000000_vs.txt diff --git a/Resolutions/XenobladeX_Resolution/90bdbafc1c764ae6_0000000000000000_vs.txt b/src/XenobladeChroniclesX/Graphics/90bdbafc1c764ae6_0000000000000000_vs.txt similarity index 100% rename from Resolutions/XenobladeX_Resolution/90bdbafc1c764ae6_0000000000000000_vs.txt rename to src/XenobladeChroniclesX/Graphics/90bdbafc1c764ae6_0000000000000000_vs.txt diff --git a/Resolutions/XenobladeX_Resolution/948500d0191d1ed8_0000000000000000_vs.txt b/src/XenobladeChroniclesX/Graphics/948500d0191d1ed8_0000000000000000_vs.txt similarity index 100% rename from Resolutions/XenobladeX_Resolution/948500d0191d1ed8_0000000000000000_vs.txt rename to src/XenobladeChroniclesX/Graphics/948500d0191d1ed8_0000000000000000_vs.txt diff --git a/Resolutions/XenobladeX_Resolution/9bc5e526132c9534_0000000000000000_vs.txt b/src/XenobladeChroniclesX/Graphics/9bc5e526132c9534_0000000000000000_vs.txt similarity index 100% rename from Resolutions/XenobladeX_Resolution/9bc5e526132c9534_0000000000000000_vs.txt rename to src/XenobladeChroniclesX/Graphics/9bc5e526132c9534_0000000000000000_vs.txt diff --git a/Resolutions/XenobladeX_Resolution/9dc2d340255dee89_0000000000000000_vs.txt b/src/XenobladeChroniclesX/Graphics/9dc2d340255dee89_0000000000000000_vs.txt similarity index 100% rename from Resolutions/XenobladeX_Resolution/9dc2d340255dee89_0000000000000000_vs.txt rename to src/XenobladeChroniclesX/Graphics/9dc2d340255dee89_0000000000000000_vs.txt diff --git a/Resolutions/XenobladeX_Resolution/a225baec4db6d89e_0000000000000000_vs.txt b/src/XenobladeChroniclesX/Graphics/a225baec4db6d89e_0000000000000000_vs.txt similarity index 100% rename from Resolutions/XenobladeX_Resolution/a225baec4db6d89e_0000000000000000_vs.txt rename to src/XenobladeChroniclesX/Graphics/a225baec4db6d89e_0000000000000000_vs.txt diff --git a/Resolutions/XenobladeX_Resolution/ba529c2c3078fff0_0000000000000000_vs.txt b/src/XenobladeChroniclesX/Graphics/ba529c2c3078fff0_0000000000000000_vs.txt similarity index 100% rename from Resolutions/XenobladeX_Resolution/ba529c2c3078fff0_0000000000000000_vs.txt rename to src/XenobladeChroniclesX/Graphics/ba529c2c3078fff0_0000000000000000_vs.txt diff --git a/Resolutions/XenobladeX_Resolution/c01cc5b7af21f689_0000000000000000_vs.txt b/src/XenobladeChroniclesX/Graphics/c01cc5b7af21f689_0000000000000000_vs.txt similarity index 100% rename from Resolutions/XenobladeX_Resolution/c01cc5b7af21f689_0000000000000000_vs.txt rename to src/XenobladeChroniclesX/Graphics/c01cc5b7af21f689_0000000000000000_vs.txt diff --git a/Resolutions/XenobladeX_Resolution/ccc475eb7e537add_0000000000000000_vs.txt b/src/XenobladeChroniclesX/Graphics/ccc475eb7e537add_0000000000000000_vs.txt similarity index 100% rename from Resolutions/XenobladeX_Resolution/ccc475eb7e537add_0000000000000000_vs.txt rename to src/XenobladeChroniclesX/Graphics/ccc475eb7e537add_0000000000000000_vs.txt diff --git a/Resolutions/XenobladeX_Resolution/ccc6fb8b53f5f651_0000000000000000_vs.txt b/src/XenobladeChroniclesX/Graphics/ccc6fb8b53f5f651_0000000000000000_vs.txt similarity index 100% rename from Resolutions/XenobladeX_Resolution/ccc6fb8b53f5f651_0000000000000000_vs.txt rename to src/XenobladeChroniclesX/Graphics/ccc6fb8b53f5f651_0000000000000000_vs.txt diff --git a/Resolutions/XenobladeX_Resolution/d0664898dbf28dfa_0000000000000000_vs.txt b/src/XenobladeChroniclesX/Graphics/d0664898dbf28dfa_0000000000000000_vs.txt similarity index 100% rename from Resolutions/XenobladeX_Resolution/d0664898dbf28dfa_0000000000000000_vs.txt rename to src/XenobladeChroniclesX/Graphics/d0664898dbf28dfa_0000000000000000_vs.txt diff --git a/Resolutions/XenobladeX_Resolution/d321199dc854621f_0000000000000000_vs.txt b/src/XenobladeChroniclesX/Graphics/d321199dc854621f_0000000000000000_vs.txt similarity index 100% rename from Resolutions/XenobladeX_Resolution/d321199dc854621f_0000000000000000_vs.txt rename to src/XenobladeChroniclesX/Graphics/d321199dc854621f_0000000000000000_vs.txt diff --git a/Resolutions/XenobladeX_Resolution/d7074f19f5ca3b20_0000000000000000_vs.txt b/src/XenobladeChroniclesX/Graphics/d7074f19f5ca3b20_0000000000000000_vs.txt similarity index 100% rename from Resolutions/XenobladeX_Resolution/d7074f19f5ca3b20_0000000000000000_vs.txt rename to src/XenobladeChroniclesX/Graphics/d7074f19f5ca3b20_0000000000000000_vs.txt diff --git a/Resolutions/XenobladeX_Resolution/df832bc2e6d22e45_0000000000000000_vs.txt b/src/XenobladeChroniclesX/Graphics/df832bc2e6d22e45_0000000000000000_vs.txt similarity index 100% rename from Resolutions/XenobladeX_Resolution/df832bc2e6d22e45_0000000000000000_vs.txt rename to src/XenobladeChroniclesX/Graphics/df832bc2e6d22e45_0000000000000000_vs.txt diff --git a/Resolutions/XenobladeX_Resolution/dfacd3f8f448aeaa_0000000000000000_vs.txt b/src/XenobladeChroniclesX/Graphics/dfacd3f8f448aeaa_0000000000000000_vs.txt similarity index 100% rename from Resolutions/XenobladeX_Resolution/dfacd3f8f448aeaa_0000000000000000_vs.txt rename to src/XenobladeChroniclesX/Graphics/dfacd3f8f448aeaa_0000000000000000_vs.txt diff --git a/Resolutions/XenobladeX_Resolution/e082c1f638f8e81e_0000000000000000_vs.txt b/src/XenobladeChroniclesX/Graphics/e082c1f638f8e81e_0000000000000000_vs.txt similarity index 100% rename from Resolutions/XenobladeX_Resolution/e082c1f638f8e81e_0000000000000000_vs.txt rename to src/XenobladeChroniclesX/Graphics/e082c1f638f8e81e_0000000000000000_vs.txt diff --git a/Resolutions/XenobladeX_Resolution/e99ed318f647e1cf_0000000000000000_vs.txt b/src/XenobladeChroniclesX/Graphics/e99ed318f647e1cf_0000000000000000_vs.txt similarity index 100% rename from Resolutions/XenobladeX_Resolution/e99ed318f647e1cf_0000000000000000_vs.txt rename to src/XenobladeChroniclesX/Graphics/e99ed318f647e1cf_0000000000000000_vs.txt diff --git a/Resolutions/XenobladeX_Resolution/ec248df3384d3d18_0000000000000000_vs.txt b/src/XenobladeChroniclesX/Graphics/ec248df3384d3d18_0000000000000000_vs.txt similarity index 100% rename from Resolutions/XenobladeX_Resolution/ec248df3384d3d18_0000000000000000_vs.txt rename to src/XenobladeChroniclesX/Graphics/ec248df3384d3d18_0000000000000000_vs.txt diff --git a/Resolutions/XenobladeX_Resolution/eec2c2cee7a1d42f_0000000000000000_vs.txt b/src/XenobladeChroniclesX/Graphics/eec2c2cee7a1d42f_0000000000000000_vs.txt similarity index 100% rename from Resolutions/XenobladeX_Resolution/eec2c2cee7a1d42f_0000000000000000_vs.txt rename to src/XenobladeChroniclesX/Graphics/eec2c2cee7a1d42f_0000000000000000_vs.txt diff --git a/Resolutions/XenobladeX_Resolution/fa7054d25fd49999_0000000000000000_vs.txt b/src/XenobladeChroniclesX/Graphics/fa7054d25fd49999_0000000000000000_vs.txt similarity index 100% rename from Resolutions/XenobladeX_Resolution/fa7054d25fd49999_0000000000000000_vs.txt rename to src/XenobladeChroniclesX/Graphics/fa7054d25fd49999_0000000000000000_vs.txt diff --git a/Resolutions/XenobladeX_Resolution/fdb5a87dd0368c6b_000000000000f249_ps.txt b/src/XenobladeChroniclesX/Graphics/fdb5a87dd0368c6b_000000000000f249_ps.txt similarity index 100% rename from Resolutions/XenobladeX_Resolution/fdb5a87dd0368c6b_000000000000f249_ps.txt rename to src/XenobladeChroniclesX/Graphics/fdb5a87dd0368c6b_000000000000f249_ps.txt diff --git a/Resolutions/XenobladeX_Resolution/patches.txt b/src/XenobladeChroniclesX/Graphics/patches.txt similarity index 100% rename from Resolutions/XenobladeX_Resolution/patches.txt rename to src/XenobladeChroniclesX/Graphics/patches.txt diff --git a/src/XenobladeChroniclesX/Graphics/rules.txt b/src/XenobladeChroniclesX/Graphics/rules.txt new file mode 100644 index 00000000..09aaf064 --- /dev/null +++ b/src/XenobladeChroniclesX/Graphics/rules.txt @@ -0,0 +1,666 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = Graphics +path = "Xenoblade Chronicles X/Graphics" +description = Changes the resolution of the game.||Made by getdls and Lemon King. +version = 5 + +[Default] +$width = 1280 +$height = 720 +$padWidth = 854 +$padHeight = 480 +$gameWidth = 1280 +$gameHeight = 720 +$gamePadWidth = 854 +$gamePadHeight = 480 +$internalScale = 1.0 +$shadowScale = 1 +$skellViewScale = 1.0 + + +# TV Resolution + +[Preset] +category = TV Resolution +name = 320x180 +$width = 320 +$height = 180 + +[Preset] +category = TV Resolution +name = 640x360 +$width = 640 +$height = 360 + +[Preset] +category = TV Resolution +name = 960x540 +$width = 960 +$height = 540 + +[Preset] +category = TV Resolution +name = 1280x720 (Default) +default = 1 + +[Preset] +category = TV Resolution +name = 1600x900 +$width = 1600 +$height = 900 + +[Preset] +category = TV Resolution +name = 1920x1080 +$width = 1920 +$height = 1080 + +[Preset] +category = TV Resolution +name = 2560x1440 (2k) +$width = 2560 +$height = 1440 + +[Preset] +category = TV Resolution +name = 3200x1800 +$width = 3200 +$height = 1800 + +[Preset] +category = TV Resolution +name = 3840x2160 (4k) +$width = 3840 +$height = 2160 + +[Preset] +category = TV Resolution +name = 5120x2880 +$width = 5120 +$height = 2880 + +[Preset] +category = TV Resolution +name = 7680x4320 +$width = 7680 +$height = 4320 + +[Preset] +category = TV Resolution +name = 10240x5760 +$width = 10240 +$height = 5760 + +[Preset] +category = TV Resolution +name = 2560x1080 (21:9) +$width = 2560 +$height = 1080 + +[Preset] +category = TV Resolution +name = 3440x1440 (21:9) +$width = 3440 +$height = 1440 + +[Preset] +category = TV Resolution +name = 3840x1600 (21:10) +$width = 3840 +$height = 1600 + +[Preset] +category = TV Resolution +name = 4300x1800 (21:9) +$width = 4300 +$height = 1800 + +[Preset] +category = TV Resolution +name = 6880x2880 (21:9) +$width = 6880 +$height = 2880 + +[Preset] +category = TV Resolution +name = 10240x4320 (21:9) +$width = 10240 +$height = 4320 + +[Preset] +category = TV Resolution +name = 1440x900 (16:10) +$width = 1440 +$height = 900 + +[Preset] +category = TV Resolution +name = 1680x1050 (16:10) +$width = 1680 +$height = 1050 + +[Preset] +category = TV Resolution +name = 1920x1200 (16:10) +$width = 1920 +$height = 1200 + +[Preset] +category = TV Resolution +name = 2560x1600 (16:10) +$width = 2560 +$height = 1600 + +[Preset] +category = TV Resolution +name = 2880x1800 (16:10) +$width = 2880 +$height = 1800 + +[Preset] +category = TV Resolution +name = 3840x2400 (16:10) +$width = 3840 +$height = 2400 + +[Preset] +category = TV Resolution +name = 5120x3200 (16:10) +$width = 5120 +$height = 3200 + + +# Gamepad Resolution + +[Preset] +category = Gamepad Resolution +name = 320x180 +$padWidth = 320 +$padHeight = 180 + +[Preset] +category = Gamepad Resolution +name = 640x360 +$padWidth = 640 +$padHeight = 360 + +[Preset] +category = Gamepad Resolution +name = 960x540 +$padWidth = 960 +$padHeight = 540 + +[Preset] +category = Gamepad Resolution +name = 854x480 (Default) +default = 1 + +[Preset] +category = Gamepad Resolution +name = 1280x720 +$padWidth = 1280 +$padHeight = 720 + +[Preset] +category = Gamepad Resolution +name = 1600x900 +$padWidth = 1600 +$padHeight = 900 + +[Preset] +category = Gamepad Resolution +name = 1920x1080 +$padWidth = 1920 +$padHeight = 1080 + +[Preset] +category = Gamepad Resolution +name = 2560x1440 +$padWidth = 2560 +$padHeight = 1440 + +[Preset] +category = Gamepad Resolution +name = 3200x1800 +$padWidth = 3200 +$padHeight = 1800 + +[Preset] +category = Gamepad Resolution +name = 3840x2160 +$padWidth = 3840 +$padHeight = 2160 + +[Preset] +category = Gamepad Resolution +name = 5120x2880 +$padWidth = 5120 +$padHeight = 2880 + +[Preset] +category = Gamepad Resolution +name = 7680x4320 +$padWidth = 7680 +$padHeight = 4320 + +[Preset] +category = Gamepad Resolution +name = 2560x1080 (21:9) +$padWidth = 2560 +$padHeight = 1080 + +[Preset] +category = Gamepad Resolution +name = 3440x1440 (21:9) +$padWidth = 3440 +$padHeight = 1440 + +[Preset] +category = Gamepad Resolution +name = 3840x1600 (21:10) +$padWidth = 3840 +$padHeight = 1600 + +[Preset] +category = Gamepad Resolution +name = 4300x1800 (21:9) +$padWidth = 4300 +$padHeight = 1800 + +[Preset] +category = Gamepad Resolution +name = 6880x2880 (21:9) +$padWidth = 6880 +$padHeight = 2880 + +[Preset] +category = Gamepad Resolution +name = 1440x900 (16:10) +$padWidth = 1440 +$padHeight = 900 + +[Preset] +category = Gamepad Resolution +name = 1680x1050 (16:10) +$padWidth = 1680 +$padHeight = 1050 + +[Preset] +category = Gamepad Resolution +name = 1920x1200 (16:10) +$padWidth = 1920 +$padHeight = 1200 + +[Preset] +category = Gamepad Resolution +name = 2560x1600 (16:10) +$padWidth = 2560 +$padHeight = 1600 + + +[Preset] +category = Gamepad Resolution +name = 3840x2400 (16:10) +$padWidth = 3840 +$padHeight = 2400 + + +# Shadow Quality + +[Preset] +category = Shadow Quality +name = Low (50%) +$shadowScale = 0.5 + +[Preset] +category = Shadow Quality +name = Medium (100%, Default) +default = 1 + +[Preset] +category = Shadow Quality +name = High (200%) +$shadowScale = 2 + +[Preset] +category = Shadow Quality +name = Ultra (300%) +$shadowScale = 3 + +[Preset] +category = Shadow Quality +name = Extreme (400%, Unstable) +$shadowScale = 4 + + +# Post-Processing Effect Quality + +[Preset] +category = Post-Processing Effect Quality +name = Very Low (50%) +$internalScale = 0.5 + +[Preset] +category = Post-Processing Effect Quality +name = Low (75%) +$internalScale = 0.75 + +[Preset] +category = Post-Processing Effect Quality +name = Medium (100%, Default) +default = 1 +$internalScale = 1.0 + +[Preset] +category = Post-Processing Effect Quality +name = High (125%) +$internalScale = 1.25 + +[Preset] +category = Post-Processing Effect Quality +name = Ultra (150%) +$internalScale = 1.50 + +[Preset] +category = Post-Processing Effect Quality +name = Extreme (200%) +$internalScale = 2.0 + + +# Skell View Resolution + +[Preset] +category = Skell Combat View Resolution +name = Very Low (50%) +$skellViewScale = 0.50 + +[Preset] +category = Skell Combat View Resolution +name = Low (75%) +$skellViewScale = 0.75 + +[Preset] +category = Skell Combat View Resolution +name = Medium (100%, Default) +default = 1 +$skellViewScale = 1.0 + +[Preset] +category = Skell Combat View Resolution +name = High (125%) +$skellViewScale = 1.25 + +[Preset] +category = Skell Combat View Resolution +name = Ultra (150%) +$skellViewScale = 1.50 + +[Preset] +category = Skell Combat View Resolution +name = Extreme (200%) +$skellViewScale = 2.0 + + +# Texture Redefines + +[TextureRedefine] +width = 1280 +height = 720 +formatsExcluded = 0x031,0x431,0x035,0x034,0x033 # Fixes dialog prompts and the XCX Logo NLA +tileModesExcluded = 0x001 +overwriteWidth = ($width/$gameWidth) * 1280 +overwriteHeight = ($height/$gameHeight) * 720 + +[TextureRedefine] # Shadows +width = 1024 +height = 1024 +formats = 0x005 +overwriteWidth = $shadowScale * 1024 +overwriteHeight = $shadowScale * 1024 + +[TextureRedefine] # In-game menu +width = 1024 +height = 720 +tileModesExcluded = 0x001 +overwriteWidth = ($width/$gameWidth) * 1024 +overwriteHeight = ($height/$gameHeight) * 720 + +[TextureRedefine] +width = 864 +height = 480 +formatsExcluded = 0x431,0x035,0x034,0x033,0x031 +overwriteWidth = ($padWidth/$gamePadWidth) * 864 +overwriteHeight = ($padHeight/$gamePadHeight) * 480 + +[TextureRedefine] +width = 854 +height = 480 +formatsExcluded = 0x431,0x035,0x034,0x033,0x031 +overwriteWidth = ($padWidth/$gamePadWidth) * 854 +overwriteHeight = ($padHeight/$gamePadHeight) * 480 + +[TextureRedefine] +width = 640 +height = 368 +overwriteWidth = ($width/$gameWidth) * (640*$internalScale) +overwriteHeight = ($height/$gameHeight) * (368*$internalScale) + +[TextureRedefine] +width = 640 +height = 360 +formatsExcluded = 0x033,0x031 # Fixes dialog prompts and the XCX Logo NLA +tileModesExcluded = 0x001 # Exclude tilemode 1 to exclude video cutscenes +overwriteWidth = ($width/$gameWidth) * (640*$internalScale) +overwriteHeight = ($height/$gameHeight) * (360*$internalScale) + +[TextureRedefine] # Shadows 1024 for smoother transition +width = 512 +height = 512 +formats = 0x005 +overwriteWidth = $shadowScale * 1024 +overwriteHeight = $shadowScale * 1024 + +[TextureRedefine] +width = 512 +height = 288 +overwriteWidth = ($width/$gameWidth) * (512*$internalScale) +overwriteHeight = ($height/$gameHeight) * (288*$internalScale) + +[TextureRedefine] # Fog 1.5 match stencil +width = 448 +height = 240 +overwriteWidth = ($width/$gameWidth) * (448*$internalScale) +overwriteHeight = ($height/$gameHeight) * (240*$internalScale) + +[TextureRedefine] # Fog +width = 426 +height = 240 +overwriteWidth = ($width/$gameWidth) * (426*$internalScale) +overwriteHeight = ($height/$gameHeight) * (240*$internalScale) + +[TextureRedefine] # Bloom, DOF +width = 320 +height = 192 +overwriteWidth = ($width/$gameWidth) * (320*$internalScale) +overwriteHeight = ($height/$gameHeight) * (192*$internalScale) + +[TextureRedefine] # Bloom, DOF +width = 384 +height = 192 +#formats = 0x001 +overwriteWidth = ($width/$gameWidth) * (384*$internalScale) +overwriteHeight = ($height/$gameHeight) * (192*$internalScale) + +[TextureRedefine] # Bloom, DOF +width = 320 +height = 180 +overwriteWidth = ($width/$gameWidth) * (320*$internalScale) +overwriteHeight = ($height/$gameHeight) * (180*$internalScale) + +[TextureRedefine] +width = 256 +height = 144 +formatsExcluded = 0x431,0x035,0x034,0x033,0x031 +overwriteWidth = ($width/$gameWidth) * (256*$internalScale) +overwriteHeight = ($height/$gameHeight) * (144*$internalScale) + +[TextureRedefine] # PR screen +width = 256 +height = 256 +formats = 0x810,0x01a,0x816,0x011 +overwriteWidth = ($width/$gameWidth) * (256*$internalScale) +overwriteHeight = ($height/$gameHeight) * (256*$internalScale) + +[TextureRedefine] # Sky, PR screen +width = 255 +height = 255 +formats = 0x810,0x01a,0x41a,0x816,0x011 +#formatsExcluded = 0x431,0x035,0x034,0x033,0x031 +overwriteWidth = ($width/$gameWidth) * (255*$internalScale) +overwriteHeight = ($height/$gameHeight) * (255*$internalScale) + +[TextureRedefine] # Skell depth +width = 192 +height = 96 +overwriteWidth = ($width/$gameWidth) * (192*$skellViewScale) +overwriteHeight = ($height/$gameHeight) * (96*$skellViewScale) + +[TextureRedefine] # Bloom 2nd level +width = 160 +height = 96 +formatsExcluded = 0x431,0x035,0x034,0x033,0x031 +overwriteWidth = ($width/$gameWidth) * (160*$internalScale) +overwriteHeight = ($height/$gameHeight) * (96*$internalScale) + +[TextureRedefine] # Bloom 2nd level +width = 160 +height = 90 +#formats = 0x816 +formatsExcluded = 0x431,0x035,0x034,0x033,0x031 +overwriteWidth = ($width/$gameWidth) * (160*$internalScale) +overwriteHeight = ($height/$gameHeight) * (90*$internalScale) + +[TextureRedefine] +width = 128 +height = 128 +formats = 0x806 #,0x035,0x034,0x033,0x031 +formatsExcluded = 0x431,0x035,0x034,0x033,0x031 +overwriteWidth = ($width/$gameWidth) * (128*$skellViewScale) +overwriteHeight = ($height/$gameHeight) * (128*$skellViewScale) + +[TextureRedefine] # Skell view 8 +width = 128 +height = 80 +formats = 0x816 #,0x035,0x034,0x033,0x031 +formatsExcluded = 0x431,0x035,0x034,0x033,0x031 +overwriteWidth = ($width/$gameWidth) * (128*$skellViewScale) +overwriteHeight = ($height/$gameHeight) * (128*$skellViewScale) + +[TextureRedefine] # Skell view +width = 128 +height = 72 +formats = 0x816 #,0x035,0x034,0x033,0x031 +formatsExcluded = 0x431,0x035,0x034,0x033,0x031 +overwriteWidth = ($width/$gameWidth) * (128*$skellViewScale) +overwriteHeight = ($height/$gameHeight) * (128*$skellViewScale) + +#[TextureRedefine] +#width = 127 +#height = 127 +#formats = 0x80e # 0x820,0x816 #,0x035,0x034,0x033,0x032,0x031 +#overwriteWidth = ($width/$gameWidth) * 127 +#overwriteHeight = ($height/$gameHeight) * 127 + +[TextureRedefine] # Bloom 3rd level +width = 96 +height = 48 +overwriteWidth = ($width/$gameWidth) * (96*$internalScale) +overwriteHeight = ($height/$gameHeight) * (48*$internalScale) + +[TextureRedefine] # Bloom 3rd level +width = 80 +height = 46 +overwriteWidth = ($width/$gameWidth) * (80*$internalScale) +overwriteHeight = ($height/$gameHeight) * (46*$internalScale) + +[TextureRedefine] +width = 64 +height = 64 +dept = 1 +formats = 0x820,0x816 #,0x035,0x034,0x033,0x032,0x031 +#formatsExcluded = 0x431,0x035,0x034,0x033,0x031 +overwriteWidth = ($width/$gameWidth) * (64*$internalScale) +overwriteHeight = ($height/$gameHeight) * (64*$internalScale) + +[TextureRedefine] # Skell cockpit bloom 3rd level +width = 64 +height = 32 +formats = 0x816,0x806 #0x820,0x816 #,0x035,0x034,0x033,0x032,0x031 +overwriteWidth = ($width/$gameWidth) * (64*$skellViewScale) +overwriteHeight = ($height/$gameHeight) * (32*$skellViewScale) + +[TextureRedefine] # Skell view +width = 40 +height = 24 +overwriteWidth = ($width/$gameWidth) * (40*$skellViewScale) +overwriteHeight = ($height/$gameHeight) * (24*$skellViewScale) + +[TextureRedefine] +width = 32 +height = 32 +dept = 1 +formats = 0x806 #,0x035,0x034,0x033,0x032,0x031 +#formatsExcluded = 0x431,0x035,0x034,0x033,0x031 +overwriteWidth = ($width/$gameWidth) * (32*$internalScale) +overwriteHeight = ($height/$gameHeight) * (32*$internalScale) + + +#[TextureRedefine] +#width = 32 +#height = 16 +#formats = 0x816 +##formatsExcluded = 0x431,0x035,0x034,0x033,0x031 +#overwriteWidth = ($width/$gameWidth) * (32*$internalScale) +#overwriteHeight = ($height/$gameHeight) * (16*$internalScale) +# +#[TextureRedefine] #don't scale 0x01a +#width = 16 +#height = 16 +#dept = 1 +#formats = 0x816 #0x008 ,0x431,0x031 +###formatsExcluded = 0x431,0x035,0x034,0x033,0x031,0x806 +#overwriteWidth = ($width/$gameWidth) * (16*$internalScale) +#overwriteHeight = ($height/$gameHeight) * (8*$internalScale) +# +#[TextureRedefine] # tilemode 2 +#width = 16 +#height = 8 +#formats = 0x81e,0x80e,0x806 0x008 #,0x431,0x031 +##formatsExcluded = 0x431,0x035,0x034,0x033,0x031,0x806 +#overwriteWidth = ($width/$gameWidth) * (16*$internalScale) +#overwriteHeight = ($height/$gameHeight) * (8*$internalScale) + +#[TextureRedefine] # tilemode 2 +#width = 8 +#height = 8 +#formats = 0x806 #,0x81e,0x80e # ,0x431,0x031 +###formatsExcluded = 0x431,0x035,0x034,0x033,0x031,0x806 +#overwriteWidth = ($width/$gameWidth) * (8*$internalScale) +#overwriteHeight = ($height/$gameHeight) * (8*$internalScale) + +#[TextureRedefine] +#width = 4 +#height = 4 +####formats = 0x81e,0x80e +#formatsExcluded = 0x431,0x035,0x034,0x033,0x031 +#overwriteWidth = ($width/$gameWidth) * (4*$internalScale) +#overwriteHeight = ($height/$gameHeight) * (4*$internalScale) +# +#[TextureRedefine] +#width = 1 +#height = 1 +####formats = 0x008,0x81e,0x01a +#formatsExcluded = 0x431,0x035,0x034,0x033,0x031 +#overwriteWidth = ($width/$gameWidth) * (1*$internalScale) +#overwriteHeight = ($height/$gameHeight) * (1*$internalScale) \ No newline at end of file diff --git a/src/XenobladeChroniclesX/Mods/60FPS/patch_60fps.asm b/src/XenobladeChroniclesX/Mods/60FPS/patch_60fps.asm new file mode 100644 index 00000000..fc24e8b1 --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/60FPS/patch_60fps.asm @@ -0,0 +1,153 @@ +[XCX60fpsV16J] ; ######################################################## +moduleMatches = 0x785CA8A9 + +;Default as of 0.51 - Limit logic/2d animation to 30 fps Less timing issues, more jitter +;0x100D0604 = .float 0.5 ; .float 1.0 ; GUI animations +0x100CFAE8 = .float 0.5 ; .float 1.0 ; GUI animations * +0x10059514 = .float 0.5 ; .float 1.0 ;Title screen cutscene - +0x100144F0 = .float 0.1 ; controller acceleration +0x10171070 = .float 2.0 ; arbitrary 2.0 float +0x1017117C = .float 0.5 ; .5 float +0x10171070 = _halfRate: +0x1017117C = _fullRate: + +0x027370B8 = lis r11, _halfRate@ha ; Double updateEventParam cutscene +0x027370C4 = lfs f1, _halfRate@l(r11) ; - +0x027A0180 = lis r10, _fullRate@ha ; half SyncFrame cinematic cutscene, fixes timing issues with cinematic cutscenes - +0x027A0184 = lfs f1, _fullRate@l(r10) ; but introduces Shake and stutter issue. CODE XREF: ev::CEvtManager::startPage((float,bool))+6C j - + +0x025F149C = lis r12, _fullRate@h ;;; Move__11CfSceneTaskFv ;Filter CPU, 30 fps logic +0x025F14A4 = lfs f31, _fullRate@l(r12) ;;; Move__11CfSceneTaskFv ; +0x02768064 = lis r8, _fullRate@ha ; sync in game cut scene +0x02768068 = lfs f31, _fullRate@l(r8) ; +0x0273BBD0 = lis r7, _fullRate@ha ; sync elevator, vehicles etc +0x0273BBD4 = lfs f31, _fullRate@l(r7) ; Ç + +; swapInterval 60 +0x02FCEB9C = li r3, 1 + +[XCX60fpsV48J] ; ######################################################## +moduleMatches = 0x7672271D + +;Default as of 0.51 - Limit logic/2d animation to 30 fps Less timing issues, more jitter +;0x100D0604 = .float 0.5 ; .float 1.0 ; GUI animations * +;0x1005989C = .float 0.5 ; .float 1.0 ;Title screen cutscene - +;0x10014528 = .float 0.1 ; controller acceleration - +;0x10171980 = .float 2.0 ; arbitrary 2.0 float + +0x100D0070 = .float 0.5 +0x1005989C = .float 0.5 +0x10014528 = .float 0.1 +0x10171570 = .float 2.0 + +0x10171570 = _halfRate: +0x100D0070 = _fullRate: + +0x0273802C = lis r11, _halfRate@ha ; Double updateEventParam cutscene, ver +0x02738038 = lfs f1, _halfRate@l(r11) ; - +0x027A1120 = lis r10, _fullRate@ha ; half SyncFrame cinematic cutscene, fixes timing issues with cinematic cutscenes - +0x027A1124 = lfs f1, _fullRate@l(r10) ; but introduces Shake and stutter issue. CODE XREF: ev::CEvtManager::startPage((float,bool))+6C j - + +0x025F1F78 = lis r12, _fullRate@h ;;; Move__11CfSceneTaskFv ;Filter CPU, 30 fps logic +0x025F1F80 = lfs f31, _fullRate@l(r12) ;;; Move__11CfSceneTaskFv ; +0x02768FD4 = lis r8, _fullRate@ha ; sync in game cut scene +0x02768FD8 = lfs f31, _fullRate@l(r8) ; +0x0273CB44 = lis r7, _fullRate@ha ; sync elevator, vehicles etc +0x0273CB48 = lfs f31, _fullRate@l(r7) ; Ç + +; swapInterval 60 +0x02FD3F5C= li r3, 1 + +[XCX60fpsV100E_V101E] ; ######################################################## +moduleMatches = 0x218F6E07, 0xF882D5CF + +;Default as of 0.51 - Limit logic/2d animation to 30 fps Less timing issues +0x100D03E8 = .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 + +0x10171980 = _halfRate: +0x100D03E8 = _fullRate: + +0x027398B4 = lis r11, _halfRate@ha ; Double updateEventParam cutscene - +0x027398C0 = lfs f1, _halfRate@l(r11) ; - +0x027A33D8 = lis r10, _fullRate@ha ; half SyncFrame cinematic cutscene, fixes timing issues with cinematic cutscenes - +0x027A33DC = lfs f1, _fullRate@l(r10) ; but introduces Shake and stutter issue. CODE XREF: ev::CEvtManager::startPage((float,bool))+6Cj - + +;0x02707478 = lis r7, _tmp@ha ; ALT calcAdxSkip__Q2_2ev13CFrameManagerFv +;0x0270747C = lfs f1, _tmp@l(r7) ; calcAdxSkip__Q2_2ev13CFrameManagerFv +;0x02707660 = lis r9, _tmp@ha ; calcCpuSkip__Q2_2ev13CFrameManagerFv ; SLOW down scene +;0x02707668 = lfs f31, _tmp@l(r9) ; calcCpuSkip__Q2_2ev13CFrameManagerFv + + +0x025F299C = lis r12, _fullRate@h ;;; Move__11CfSceneTaskFv ;Filter CPU, 30 fps logic +0x025F29A4 = lfs f31, _fullRate@l(r12) ;;; Move__11CfSceneTaskFv ; +0x0276A85C = lis r8, _fullRate@ha ; sync in game cut scene +0x0276A860 = lfs f31, _fullRate@l(r8) ; +0x0273E3CC = lis r7, _fullRate@ha ; sync elevator, vehicles etc +0x0273E3D0 = lfs f31, _fullRate@l(r7) ; Ç + +; swapInterval 60 +0x02FD8A94 = li r3, 1 + +0x10012644 = .float 15.0 ; fix for soulvoices (not sure it's safe) + +[XCX60fpsV102U] ; ######################################################## +moduleMatches = 0x30B6E091 + +;Default as of 0.51 - Limit logic/2d animation to 30 fps Less timing issues +0x100D03D0 = .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 + +0x10171980 = _halfRate: +0x100D03D0 = _fullRate: + +0x027398B4 = lis r11, _halfRate@ha ; Double updateEventParam cutscene +0x027398C0 = lfs f1, _halfRate@l(r11) ; +0x027A33D8 = lis r10, _fullRate@ha ; half SyncFrame cinematic cutscene, fixes timing issues with cinematic cutscenes +0x027A33DC = lfs f1, _fullRate@l(r10) ; but introduces Shake and stutter issue. +0x025F299C = lis r12, _fullRate@h ;;; Move__11CfSceneTaskFv ;Filter CPU, 30 fps logic +0x025F29A4 = lfs f31, _fullRate@l(r12) ;;; Move__11CfSceneTaskFv ; +0x0276A85C = lis r8, _fullRate@ha ; sync in game cut scene +0x0276A860 = lfs f31, _fullRate@l(r8) ; +0x0273E3CC = lis r7, _fullRate@ha ; sync elevator, vehicles etc +0x0273E3D0 = lfs f31, _fullRate@l(r7) ; Ç + + +;Disabled, original per feature approach, severe timing issues +;0x101231F0 = .float 0.5 ; .float 1.0 ; ingame animation timing +;0x100D03D0 = .float 0.5 ; .float 1.0 ; GUI animations +;0x100598E4 = .float 0.5 ; .float 1.0 ;Title screen cutscene +;0x1003C3A0 = .float 15.0 ; .float 30.0 fight 3d animations +;0x1000F7A8 = .float 0.1 ; RegistDamage_ButtonChallenge +;0x10014528 = .float 0.05 ; controller acceleration +;0x100211D8 = .float 15.0 ; .float 30.0 fade in +;0x10034804 = .float 15.0 ; .float 30.0 bullets +;0x10035D84 = .float 15.0 ; walk acceleration +;0x1003C3A0 = .float 15.0 ; arts frame to sec +;0x10012368 = .float 45.0 ; respawn +;0x10012644 = .float 15.0 ; soulvoice +;0x1000C448 = .float 15.0 ; init battle +;0x1000CB90 = .float 15.0 ; init battle +;0x1003E538 = .float 0.33333335 ;birds, falling leaves +;0x10171980 = .float 2.0 ; arbitrary 2.0 float +;0x100955F0 = .float 60.0 ; 30.0 Create avatar cam rotation + +; JFF +;0x101123B4 = .float 0.03333335 ; .float 0.016666668 superfast (vsync) +;0x10035D7C = .float 0.25 ; .float 1.0 fast run +;0x10035E00 = .float 2.0 ; jump high.float 0.5 +;0x10190C7C = .float 0.75 ; master FOV +;0x10012368 = .float 45.0 ; seconds before respawn "cheat" + +; swapInterval 60 +0x02FD8A34 = li r3, 1 + +0x10012644 = .float 15.0 ; fix for soulvoices (not sure it's safe) + +;SNESticleNGCVERIONPP71Copyright - Sardu you magnificent bastard, we salute you! + + diff --git a/src/XenobladeChroniclesX/Mods/60FPS/patch_60fps_overdrive.asm b/src/XenobladeChroniclesX/Mods/60FPS/patch_60fps_overdrive.asm new file mode 100644 index 00000000..a5ff2e03 --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/60FPS/patch_60fps_overdrive.asm @@ -0,0 +1,16 @@ +[XCX_60FPS_OVERDRIVE] ; ######################################################## +moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U + +.origin = codecave + +_timePassed: + .float 0.5 + +_over: + fmr f31, f1 + lis r31, _timePassed@ha + lfs f1, _timePassed@l(r31) + fmuls f1, f31, f1 + blr + +0x021BC904 = bla _over \ No newline at end of file diff --git a/src/XenobladeChroniclesX/Mods/60FPS/patch_60fps_qte.asm b/src/XenobladeChroniclesX/Mods/60FPS/patch_60fps_qte.asm new file mode 100644 index 00000000..12bbf485 --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/60FPS/patch_60fps_qte.asm @@ -0,0 +1,40 @@ +[XCX_60FPS_QTE] ; ######################################################## +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +.origin = codecave + +_setup: + .float 15.0 ; reduces speed of animation + +_justFrame1: + lwz r12, 0x47C(r29) + mulli r12, r12, 2 + blr + +_justFrame2: + lwz r0, 0x478(r29) + mulli r0, r0, 2 + blr + +[XCX_60FPS_QTE_1E] ; ######################################################## +moduleMatches = 0xF882D5CF ; 1.0.1E + +; menu::MenuButtonChallenge::setup +0x02ACE40C = lis r7, _setup@ha +0x02ACE414 = lfs f0, _setup@l(r7) + +; menu::MenuButtonChallenge::move +0x02ACE6E4 = bla _justFrame1 +0x02ACE700 = bla _justFrame2 + +[XCX_60FPS_QTE_2U] ; ######################################################## +moduleMatches = 0x30B6E091 ; 1.0.2U + +; menu::MenuButtonChallenge::setup +0x02ACE3FC = lis r7, _setup@ha +0x02ACE404 = lfs f0, _setup@l(r7) + +; menu::MenuButtonChallenge::move +0x02ACE6D4 = bla _justFrame1 +0x02ACE6F0 = bla _justFrame2 + diff --git a/Mods/XenobladeX/XenobladeX_60FPS/rules.txt b/src/XenobladeChroniclesX/Mods/60FPS/rules.txt similarity index 95% rename from Mods/XenobladeX/XenobladeX_60FPS/rules.txt rename to src/XenobladeChroniclesX/Mods/60FPS/rules.txt index f4520f2e..e42a60cd 100644 --- a/Mods/XenobladeX/XenobladeX_60FPS/rules.txt +++ b/src/XenobladeChroniclesX/Mods/60FPS/rules.txt @@ -3,4 +3,4 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = 60FPS path = "Xenoblade Chronicles X/Mods/60FPS" description = Important: This patches the gameplay to be in 60FPS. Getting under 60FPS will slow down the game's speed. -version = 4 +version = 5 diff --git a/src/XenobladeChroniclesX/Mods/BattleDamageModGround/patch_dmg.asm b/src/XenobladeChroniclesX/Mods/BattleDamageModGround/patch_dmg.asm new file mode 100644 index 00000000..f66505d8 --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/BattleDamageModGround/patch_dmg.asm @@ -0,0 +1,17 @@ +[XCX_DAMAGES] #################################################################################################################################### +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +.origin = codecave + +.int $mult + +0x025D896C = mulli r4, r31, $mult + +[XCX_DAMAGES_1U] #################################################################################################################################### +moduleMatches = 0xAB97DE6B ; 1.0.1U + +.origin = codecave + +.int $mult + +0x025D88FC = mulli r4, r31, $mult diff --git a/Mods/XenobladeX/XenobladeX_mod_BattleDamageModGround/rules.txt b/src/XenobladeChroniclesX/Mods/BattleDamageModGround/rules.txt similarity index 81% rename from Mods/XenobladeX/XenobladeX_mod_BattleDamageModGround/rules.txt rename to src/XenobladeChroniclesX/Mods/BattleDamageModGround/rules.txt index fe8f4b00..e6843585 100644 --- a/Mods/XenobladeX/XenobladeX_mod_BattleDamageModGround/rules.txt +++ b/src/XenobladeChroniclesX/Mods/BattleDamageModGround/rules.txt @@ -2,12 +2,14 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = "Ground damage multiplicator" path = "Xenoblade Chronicles X/Mods/Battle/Ground damage multiplicator" -description = Increase the ground damage done by your team (skells not impacted).|More info and help at reddit.com/r/cemu_xenoblade. -version = 4 +description = Increase the ground damage done by your team (skells not impacted). +version = 5 + +[Default] +$mult = 2 [Preset] name = Damage x 2 -$mult = 2 [Preset] name = Damage x 10 diff --git a/Mods/XenobladeX/XenobladeX_mod_BattleEnemyStats/patches.txt b/src/XenobladeChroniclesX/Mods/BattleEnemyStats/patch_stats.asm similarity index 100% rename from Mods/XenobladeX/XenobladeX_mod_BattleEnemyStats/patches.txt rename to src/XenobladeChroniclesX/Mods/BattleEnemyStats/patch_stats.asm diff --git a/Mods/XenobladeX/XenobladeX_mod_BattleEnemyStats/rules.txt b/src/XenobladeChroniclesX/Mods/BattleEnemyStats/rules.txt similarity index 77% rename from Mods/XenobladeX/XenobladeX_mod_BattleEnemyStats/rules.txt rename to src/XenobladeChroniclesX/Mods/BattleEnemyStats/rules.txt index 722796b2..70b23318 100644 --- a/Mods/XenobladeX/XenobladeX_mod_BattleEnemyStats/rules.txt +++ b/src/XenobladeChroniclesX/Mods/BattleEnemyStats/rules.txt @@ -2,12 +2,14 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = "Enemy Statistics modificator" path = "Xenoblade Chronicles X/Mods/Battle/Enemy Statistics modificator" -description = Apply a percent modificator on enemies stats (HP, Melee Attack, Melee Accuracy, Ranged Attack, Ranged Accuracy, Potential and Evasion). You can consult the new values in the Bestiary menu.|More info and help at reddit.com/r/cemu_xenoblade. -version = 4 +description = Apply a percent modificator on enemies stats (HP, Melee Attack, Melee Accuracy, Ranged Attack, Ranged Accuracy, Potential and Evasion).|You can consult the new values in the Bestiary menu. +version = 5 + +[Default] +$mod = 0.0005 [Preset] name = Set at 50% -$mod = 0.0005 [Preset] name = Set at 75% diff --git a/Mods/XenobladeX/XenobladeX_mod_BattleEscapeDistance/patches.txt b/src/XenobladeChroniclesX/Mods/BattleEscapeDistance/patch_escape.asm similarity index 56% rename from Mods/XenobladeX/XenobladeX_mod_BattleEscapeDistance/patches.txt rename to src/XenobladeChroniclesX/Mods/BattleEscapeDistance/patch_escape.asm index 6e1e83fe..09ea1216 100644 --- a/Mods/XenobladeX/XenobladeX_mod_BattleEscapeDistance/patches.txt +++ b/src/XenobladeChroniclesX/Mods/BattleEscapeDistance/patch_escape.asm @@ -1,21 +1,21 @@ [XCX_RELEASEDIST] moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U -codeCaveSize = 0x20 +.origin = codecave ; ---------------------------------------------------------------------------- ; WHO : cfs::CfCompoPropertyEnemy::getReleasePcDistanceXZ ; WHAT : Reduce escape distance from enemies (to lose aggro) -0x00000000 = .float $mod ; default is 1.0 -_distanceConst = 0x00000000 +_distanceConst: +.float $mod + +_getRelease: +lis r3, _distanceConst@ha +lfs f29, _distanceConst@l(r3) +fdivs f1, f1, f29 +mr r3, r21 +blr -_getRelease = 0x00000004 -0x00000004 = lis r3, _distanceConst@ha -0x00000008 = lfs f29, _distanceConst@l(r3) -0x0000000C = fdivs f1, f1, f29 -0x00000010 = mr r3, r21 -0x00000014 = blr - -# AI::CAIData::chkHoming +; AI::CAIData::chkHoming 0x02030BE4 = bla _getRelease ; cfs::CfCompoPropertyEnemy::getReleasePcDistanceXZ diff --git a/Mods/XenobladeX/XenobladeX_mod_BattleEscapeDistance/rules.txt b/src/XenobladeChroniclesX/Mods/BattleEscapeDistance/rules.txt similarity index 81% rename from Mods/XenobladeX/XenobladeX_mod_BattleEscapeDistance/rules.txt rename to src/XenobladeChroniclesX/Mods/BattleEscapeDistance/rules.txt index fd75e8cc..7a3e43e2 100644 --- a/Mods/XenobladeX/XenobladeX_mod_BattleEscapeDistance/rules.txt +++ b/src/XenobladeChroniclesX/Mods/BattleEscapeDistance/rules.txt @@ -2,12 +2,14 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = "Escape distance reducer" path = "Xenoblade Chronicles X/Mods/Battle/Escape distance reducer" -description = Reduce escape distance needed to lose aggro from enemies.|More info and help at reddit.com/r/cemu_xenoblade. -version = 4 +description = Reduce escape distance needed to lose aggro from enemies. +version = 5 + +[Default] +$mod = 1.333 [Preset] name = Apply -25% -$mod = 1.333 [Preset] name = Apply -50% diff --git a/Mods/XenobladeX/XenobladeX_mod_BattleOverdriveUnlocked/patches.txt b/src/XenobladeChroniclesX/Mods/BattleOverdriveUnlocked/patch_overdrive.asm similarity index 100% rename from Mods/XenobladeX/XenobladeX_mod_BattleOverdriveUnlocked/patches.txt rename to src/XenobladeChroniclesX/Mods/BattleOverdriveUnlocked/patch_overdrive.asm diff --git a/Mods/XenobladeX/XenobladeX_mod_BattleOverdriveUnlocked/rules.txt b/src/XenobladeChroniclesX/Mods/BattleOverdriveUnlocked/rules.txt similarity index 79% rename from Mods/XenobladeX/XenobladeX_mod_BattleOverdriveUnlocked/rules.txt rename to src/XenobladeChroniclesX/Mods/BattleOverdriveUnlocked/rules.txt index 74cb48d3..1209eb94 100644 --- a/Mods/XenobladeX/XenobladeX_mod_BattleOverdriveUnlocked/rules.txt +++ b/src/XenobladeChroniclesX/Mods/BattleOverdriveUnlocked/rules.txt @@ -2,5 +2,5 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = "Overdrive unlocked pre-Chapter 5" path = "Xenoblade Chronicles X/Mods/Battle/Overdrive unlocked" -description = Unleashed the power of Overdrive before Chapter 5.|More info and help at reddit.com/r/cemu_xenoblade. -version = 4 \ No newline at end of file +description = Unleashed the power of Overdrive before Chapter 5. +version = 5 \ No newline at end of file diff --git a/src/XenobladeChroniclesX/Mods/BattleQteDollLost/patch_qte_lostdoll.asm b/src/XenobladeChroniclesX/Mods/BattleQteDollLost/patch_qte_lostdoll.asm new file mode 100644 index 00000000..e623bf1b --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/BattleQteDollLost/patch_qte_lostdoll.asm @@ -0,0 +1,51 @@ +[XCX_QTE_DOLLLOST_ALL] ################################################################################################# +moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U + +0x027F9464 = SetInsure: +0x023EEFB0 = getPropAccessor: + +.origin = codecave + +_setDestructionExcellent: + ; QTE result is Excellent, so we just cancel the Skell destruction, + ; whatever the state of the insurance + lwz r4, 0(r3) + li r3, 0 + stb r3, 0x171(r4) ; 0 = Skell not destroyed + blr + +_setDestructionGood: + ; QTE result is Good, we cancel the Skell destruction IF insurance has not expired + mflr r0 ; get LR pointer + stwu r1, -0x10(r1) ; create more space in the stack + stw r31, 0xC(r1) ; save r31 in the stack + stw r30, 0x8(r1) ; save r30 in the stack + stw r0, 0x14(r1) ; save LR pointer + mr r3, r30 + bl getPropAccessor + cmpwi r3, 0 + beq _setDestructionGoodExit + lwz r4, 0(r3) + lbz r3, 0x171(r4) ; 0 = Skell not destroyed, 1 = insurance policy valid, 2 = insurance policy expired + cmpwi r3, 2 + beq _skipCancel ; insurance policy has expired, let the Skell being destroyed + li r3, 0 + stb r3, 0x171(r4) ; skell has insurance policy, cancel destruction +_skipCancel: + lhz r3, 0x16E(r4) + bl SetInsure ; apply the new Skell status +_setDestructionGoodExit: + lwz r0, 0x14(r1) ; restore old value for LR pointer from stack + lwz r30, 0x8(r1) ; restore r30 from stack + lwz r31, 0xC(r1) ; restore r31 from stack + mtlr r0 ; restore LR pointer + addi r1, r1, 0x10 ; delete extra space in the stack + mr r3, r31 ; restore r3 from r31 saved in the stack + blr + +; ---------------------------------------------------------------------------- +; WHO : Battle::CSoulVoiceButtonChallenge::applyResult((void)) +; WHAT : Cancel Skell destruction if insurance is still valid (or if QTE result is Excellent) + +0x0209879C = bla _setDestructionExcellent +0x02098804 = bla _setDestructionGood diff --git a/src/XenobladeChroniclesX/Mods/BattleQteDollLost/rules.txt b/src/XenobladeChroniclesX/Mods/BattleQteDollLost/rules.txt new file mode 100644 index 00000000..1a3ab465 --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/BattleQteDollLost/rules.txt @@ -0,0 +1,6 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Soul Challenges - Skell restored" +path = "Xenoblade Chronicles X/Mods/Battle/Soul Challenges - Skell restored" +description = When your Skell is destroyed and the insurance is still valid, the Skell is automatically restored (use fast travel or die to get it back). +version = 5 diff --git a/src/XenobladeChroniclesX/Mods/BattleQteSoulVoices/patch_qte_soulvoices.asm b/src/XenobladeChroniclesX/Mods/BattleQteSoulVoices/patch_qte_soulvoices.asm new file mode 100644 index 00000000..54b796dd --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/BattleQteSoulVoices/patch_qte_soulvoices.asm @@ -0,0 +1,16 @@ +[XCX_QTE_AUTO_ALL] ################################################################################################# +moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U + +; ---------------------------------------------------------------------------- +; WHO : Battle::CSoulVoiceButtonChallenge::applyResult((void)) +; WHAT : Force QTE result on Soul Voices (0 = fail 1 = good, 2 = excellent) + +0x0209BA38 = li r9, 2 + +; ---------------------------------------------------------------------------- +; WHO : Battle::CSoulVoiceButtonChallenge::updateInternal((float)) +; WHAT : Auto Apply QTE (dot not call Battle::CButtonChallengeManager::CallUI) + +0x0209D764 = _applyResult: +0x0209D6F0 = b _applyResult +0x0209D720 = b _applyResult diff --git a/src/XenobladeChroniclesX/Mods/BattleQteSoulVoices/rules.txt b/src/XenobladeChroniclesX/Mods/BattleQteSoulVoices/rules.txt new file mode 100644 index 00000000..cfc3a147 --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/BattleQteSoulVoices/rules.txt @@ -0,0 +1,6 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Soul Challenges - AutoBattles" +path = "Xenoblade Chronicles X/Mods/Battle/Soul Challenges - AutoBattles" +description = QTE during battles are automatically done (force result to Excellent). +version = 5 diff --git a/src/XenobladeChroniclesX/Mods/BattleQteSpeed/patch_qte_speed.asm b/src/XenobladeChroniclesX/Mods/BattleQteSpeed/patch_qte_speed.asm new file mode 100644 index 00000000..38b4d498 --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/BattleQteSpeed/patch_qte_speed.asm @@ -0,0 +1,7 @@ +[XCX_QTE_SPEED_ALL] ################################################################################################# +moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U + +; ---------------------------------------------------------------------------- +; WHO : SoulVoice::CSoulVoice::getDifficulty((void)) +; WHAT : QTE speed does not increase +0x022078D4 = li r3, 1 diff --git a/src/XenobladeChroniclesX/Mods/BattleQteSpeed/rules.txt b/src/XenobladeChroniclesX/Mods/BattleQteSpeed/rules.txt new file mode 100644 index 00000000..0bca608e --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/BattleQteSpeed/rules.txt @@ -0,0 +1,6 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Soul Challenges - Difficulty" +path = "Xenoblade Chronicles X/Mods/Battle/Soul Challenges - Difficulty" +description = Speed of QTE does not increase during battles. +version = 5 diff --git a/Mods/XenobladeX/XenobladeX_mod_BladeDLCQuestsUnlocked/patches.txt b/src/XenobladeChroniclesX/Mods/BladeDLCQuestsUnlocked/patch_dlc.asm similarity index 100% rename from Mods/XenobladeX/XenobladeX_mod_BladeDLCQuestsUnlocked/patches.txt rename to src/XenobladeChroniclesX/Mods/BladeDLCQuestsUnlocked/patch_dlc.asm diff --git a/Mods/XenobladeX/XenobladeX_mod_BladeDLCQuestsUnlocked/rules.txt b/src/XenobladeChroniclesX/Mods/BladeDLCQuestsUnlocked/rules.txt similarity index 70% rename from Mods/XenobladeX/XenobladeX_mod_BladeDLCQuestsUnlocked/rules.txt rename to src/XenobladeChroniclesX/Mods/BladeDLCQuestsUnlocked/rules.txt index 49c99f22..00e265d0 100644 --- a/Mods/XenobladeX/XenobladeX_mod_BladeDLCQuestsUnlocked/rules.txt +++ b/src/XenobladeChroniclesX/Mods/BladeDLCQuestsUnlocked/rules.txt @@ -2,6 +2,6 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = "DLC Quests unlocked" path = "Xenoblade Chronicles X/Mods/BLADE/DLC Quests unlocked" -description = DLC Support quests are unlocked and accessible right after you are a BLADE member.|More info and help at reddit.com/r/cemu_xenoblade. -version = 4 +description = DLC Support quests are unlocked and accessible right after you are a BLADE member. +version = 5 \ No newline at end of file diff --git a/src/XenobladeChroniclesX/Mods/BladeGainTicketsFromMissions/patch_gainticketsmissions.asm b/src/XenobladeChroniclesX/Mods/BladeGainTicketsFromMissions/patch_gainticketsmissions.asm new file mode 100644 index 00000000..f0fec9ba --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/BladeGainTicketsFromMissions/patch_gainticketsmissions.asm @@ -0,0 +1,66 @@ +[XCX_TICKETS_DLC_ALL] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U + +.origin = codecave + +.int $mission + +VarTicketsAmount: +.int 0 + +; ---------------------------------------------------------------------------- +; WHO : menu::MenuMultiQuestInfoWindow::displayInfo((menu::MenuObject *,bool)) +; menu::MenuMultiQuestResult::setup((void)) +; addReward__Q2_3cfs11CfSquadUtilSFUiT1 +; WHAT : Override the Tickets rewarded for a DLC mission. +; By default, the number of tickets is the money divided by 100. + +_ticketsDispBefore: +lwz r24, 0x47C(r30) +lwz r24, 8(r24) ; mission type +li r26, $mission +cmplw r24, r26 +li r26, 0 +lis r21, VarTicketsAmount@ha +stw r26, VarTicketsAmount@l(r21) +bnelr +mr r26, r23 ; r23 = exp +cmpwi r24, 5 +bne saveAmount +li r24, 100 +divw r26, r22, r24 ; r22 = money +saveAmount: +lis r21, VarTicketsAmount@ha +stw r26, VarTicketsAmount@l(r21) +blr + +_ticketsDispAfter: +lis r5, VarTicketsAmount@ha +lwz r5, VarTicketsAmount@l(r5) +blr + +_ticketsValue: +lis r27, VarTicketsAmount@ha +lwz r27, VarTicketsAmount@l(r27) +blr + +[XCX_TICKETS_DLC_1E] ############################################################################################ +moduleMatches = 0xF882D5CF ; 1.0.1E + +0x02B94718 = bla _ticketsDispBefore +0x02B9FE2C = bla _ticketsDispAfter +0x023CC654 = bla _ticketsValue + +[XCX_TICKETS_DLC_2U] ############################################################################################ +moduleMatches = 0x30B6E091 ; 1.0.2U + +0x02B94708 = bla _ticketsDispBefore +0x02B9FE1C = bla _ticketsDispAfter +0x023CC654 = bla _ticketsValue + +[XCX_TICKETS_DLC_1U] ############################################################################################ +moduleMatches = 0xAB97DE6B ; 1.0.1U + +0x02B9468C = bla _ticketsDispBefore +0x02B9FD2C = bla _ticketsDispAfter +0x023CC5E4 = bla _ticketsValue diff --git a/Mods/XenobladeX/XenobladeX_mod_BladeGainTicketsFromMissions/rules.txt b/src/XenobladeChroniclesX/Mods/BladeGainTicketsFromMissions/rules.txt similarity index 84% rename from Mods/XenobladeX/XenobladeX_mod_BladeGainTicketsFromMissions/rules.txt rename to src/XenobladeChroniclesX/Mods/BladeGainTicketsFromMissions/rules.txt index c60ad532..6c4dcec3 100644 --- a/Mods/XenobladeX/XenobladeX_mod_BladeGainTicketsFromMissions/rules.txt +++ b/src/XenobladeChroniclesX/Mods/BladeGainTicketsFromMissions/rules.txt @@ -2,12 +2,14 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = "Gain Reward Tickets from DLC or Time Attack missions" path = "Xenoblade Chronicles X/Mods/BLADE/Gain Reward Tickets from DLC or Time Attack missions" -description = Adds Exchange Tickets in reward of completing Blade missions.|More info and help at reddit.com/r/cemu_xenoblade. -version = 4 +description = Adds Exchange Tickets in reward of completing Blade missions. +version = 5 + +[Default] +$mission = 5 [Preset] name = "Gain from DLC missions (money/100)" -$mission = 5 [Preset] name = "Gain from TA missions (exp)" diff --git a/src/XenobladeChroniclesX/Mods/BladeGlobalNemesisMissionsOffline/patch_offline_nemesis.asm b/src/XenobladeChroniclesX/Mods/BladeGlobalNemesisMissionsOffline/patch_offline_nemesis.asm new file mode 100644 index 00000000..18b8e66d --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/BladeGlobalNemesisMissionsOffline/patch_offline_nemesis.asm @@ -0,0 +1,131 @@ +[XCX_OFFLINEWE] +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +.origin = codecave + +; cfs::CfSocialManager::update((float)) +0x022879D0 = nop ; (network test?) allow call to cfs::CfSocialQuestManager::update((void)) + +; Autoriser accès aux missions d'escouade depuis la console réseau +0x02AC5C10 = li r3, 0 ; menu::CTerminalMenu_SquadQuest::offline + +; cfs::CfSocialManager::refreshOrderQuestInfo (called when select an entry in the network console) +0x022C805C = nop ; network test : lwz r10, 0x1B0(r30) --> rlwinm. r9, r10, 0,30,30 +0x022C8060 = nop ; network test + +; collectQuestInfoWE__Q2_3cfs15CfSocialManagerFRQ2_2ml45resvector__tm__28_PQ2_3cfs17CfSocialQuestInfo +0x022C6254 = li r3, 1 ; fw::SocialDataStore::getWorldEnemyCount(const(void)) +0x022C6280 = li r3, 0x4EE9 ; Quest ID for WE - fw::SocialDataStore::getWorldEnemyQuest(const(unsigned int)) +0x022C65A8 = li r3, 1 ; fw::SocialDataStore::getWorldEnemyCount(const(void)) + +; collectQuestInfoFR__Q2_3cfs15CfSocialManagerFRQ2_2ml45resvector__tm__28_PQ2_3cfs17CfSocialQuestInfo +0x022C66CC = li r3, 1 ; fw::SocialDataStore::getWorldEnemyCount(const(void)) +0x022C66FC = li r3, 0x4EED +0x022C6738 = nop ; network test? +0x022C6A5C = li r3, 1 ; fw::SocialDataStore::getWorldEnemyCount(const(void)) + +0x022863A4 = nop ; or. r0, r6, r7 +0x022863CC = nop ; or. r0, r6, r7 +0x02286474 = li r7, 1 ; for getWERewardList + +; Manage RPs & Appraisal +VarShareRP: +.int 0 +;_shareAP = reloc(0x1039C174) +VarShareAP: +.int 0 + +_loadRP: +lis r12, 0x0022 +ori r12, r12, 0x5510 +blr +0x0282B2F0 = bla _loadRP ; __CPR86__getWorldEnemyInfo__Q2_2fw15SocialDataStoreCFUiRQ3_2fwJ25J14WorldEnemyInfo + +; ######################################### TODO : get WERewardList (Telethia Stem Cell) + +; cfs::CfSocialManager::getQuestDetailWE((cfs::CfSocialQuestInfoWE &)) +; |- __CPR95__getWorldEnemyInfoFromQuest__Q2_2fw15SocialDataStoreCFUiRQ3_2fwJ34J14WorldEnemyInfo +0x0282B454 = li r3, 0 ; getWorldEnemyIndexFromQuestID / Uncomment to show Appraisal Rewards +; |- |- __CPR86__getWorldEnemyInfo__Q2_2fw15SocialDataStoreCFUiRQ3_2fwJ25J14WorldEnemyInfo +0x0282B0E4 = li r7, 1 ; cmpwi r7, 0 +0x0282B0FC = li r0, 1 ; cmpwi r0, 0 +0x0282B170 = li r6, 1 ; to store in 8(r26) -> needed for cmpwi r0, 1 after callback +0x0282B264 = nop ; skip deserializeWorldEnemy +0x0282B410 = li r4, 1 ; for getWERewardList + +; cfs::CfSocialManager::getQuestDetailFR((cfs::CfSocialQuestInfoFR &)) +0x0228989C = nop ; Uncomment to show Appraisal Rewards + +[XCX_OFFLINEWE_1E] ############################################################################################ +moduleMatches = 0xF882D5CF ; 1.0.1E + +.origin = codecave + +; menu::MenuMultiQuestOrder::move((void)) +; skip BLADE medals requirement on launch mission +0x02B9B0B0 = li r3, 1 ; Disable call to menu::MenuMultiQuestOrder::canOrderWorldEnemy + +; menu::CTerminalMenu_PieceExchange::offline((void)) +; Allow access to piece exchange from network console +_single: +li r3, 0 +blr +0x02AC613C = ba _single ; menu::CBladeHomuMenu::single((void)) + +; __CPR129__getMultiQuestReward__Q2_3cfs15CfSocialManagerCFUiRQ2_3mtl68fixed_vector__tm__48_Q3_3cfsJ28J11QuestRewardXCUiL_2_46T1 --> OK +0x022CA324 = nop ; always all items? + +[XCX_OFFLINEWE_2U] ############################################################################################ +moduleMatches = 0x30B6E091 ; 1.0.2U + +.origin = codecave + +0x02B9B0A0 = li r3, 1 ; Disable call to menu::MenuMultiQuestOrder::canOrderWorldEnemy + +_single: +li r3, 0 +blr + +0x02AC612C = ba _single + +[XCX_OFFLINEWE_1U] ############################################################################################ +moduleMatches = 0xAB97DE6B ; 1.0.1U + +.origin = codecave + +0x02287960 = nop ; (network test?) allow call to cfs::CfSocialQuestManager::update((void)) +0x02AC5B84 = li r3, 0 ; menu::CTerminalMenu_SquadQuest::offline +0x022C7FEC = nop ; network test : lwz r10, 0x1B0(r30) --> rlwinm. r9, r10, 0,30,30 +0x022C7FF0 = nop ; network test +0x022C61E4 = li r3, 1 ; fw::SocialDataStore::getWorldEnemyCount(const(void)) +0x022C6210 = li r3, 0x4EE9 ; Quest ID for WE - fw::SocialDataStore::getWorldEnemyQuest(const(unsigned int)) +0x022C6538 = li r3, 1 ; fw::SocialDataStore::getWorldEnemyCount(const(void)) +0x022C668C = li r3, 1 ; fw::SocialDataStore::getWorldEnemyCount(const(void)) +0x022C668C = li r3, 0x4EED +0x022C66C8 = nop ; network test? +0x022C69EC = li r3, 1 ; fw::SocialDataStore::getWorldEnemyCount(const(void)) +0x022863A4 = nop ; or. r0, r6, r7 +0x022863CC = nop ; or. r0, r6, r7 +0x02286474 = li r7, 1 ; for getWERewardList + +_loadRP: +lis r12, 0x0022 +ori r12, r12, 0x5510 +blr +0x0282B274 = bla _loadRP ; __CPR86__getWorldEnemyInfo__Q2_2fw15SocialDataStoreCFUiRQ3_2fwJ25J14WorldEnemyInfo + +0x0282B3D8 = li r3, 0 ; getWorldEnemyIndexFromQuestID / Uncomment to show Appraisal Rewards +0x0282B068 = li r7, 1 ; cmpwi r7, 0 +0x0282B080 = li r0, 1 ; cmpwi r0, 0 +0x0282B0F4 = li r6, 1 ; to store in 8(r26) -> needed for cmpwi r0, 1 after callback +0x0282B1E8 = nop ; skip deserializeWorldEnemy +0x0282B394 = li r4, 1 ; for getWERewardList +0x0228982C = nop ; Uncomment to show Appraisal Rewards +0x02B9AFB0 = li r3, 1 ; Disable call to menu::MenuMultiQuestOrder::canOrderWorldEnemy + +_single: +li r3, 0 +blr +0x02AC60B0 = ba _single ; menu::CBladeHomuMenu::single((void)) + +0x022CA2B4 = nop ; always all items? diff --git a/src/XenobladeChroniclesX/Mods/BladeGlobalNemesisMissionsOffline/patch_offline_nemesis.asm.bak b/src/XenobladeChroniclesX/Mods/BladeGlobalNemesisMissionsOffline/patch_offline_nemesis.asm.bak new file mode 100644 index 00000000..75b7ee73 --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/BladeGlobalNemesisMissionsOffline/patch_offline_nemesis.asm.bak @@ -0,0 +1,428 @@ +[XCX_OFFLINEWE] +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +.origin = codecave + +; getServerTimeSec__Q2_2nt10CNetLibNexCFRUL +;0x0295EA10 = nop +;0x0295EA14 = li r0, 1 +;_getLocalTimeSec = 0x02892000 +;0x0295EAA4 = bl _getLocalTimeSec + +;0x0295EA7C = lis r3, 0xFFFF ; 008a43cd +;0x0295EA80 = ori r29, r3, 0xfff4 +;0x0295EA84 = lis r4, 0 ; 2f060970 +;0x0295EA88 = ori r30, r4, 8 +;0x0295EA94 = lis r3, 0xffff ; 008a43cd +;0x0295EA94 = lis r4, 0xffff ; 2f060970 +;0x0295EA98 = ori r4, r4, 0xfed4 +;0x0295EAA4 = nop +; 65535 +; +;0x0295EA98 = lis r3, 0 ; 008a43cd +;0x0295EA9C = ori r3, r3, 0 +;0x0295EAA0 = lis r4, 0x255B ; 2f060970 +;0x0295EAA4 = ori r4, r4, 0x6100 + +; OSGetSystemInfo - 0(r3) 0ed1b768 > 248625000 +;0x0295EA90 = li r8, 0 + +;0x022CA3E0 = nop +;0x022CA3E8 = nop + +; cfs::CfSocialManager::update((float)) +0x022879D0 = nop ; (network test?) allow call to cfs::CfSocialQuestManager::update((void)) + +; Autoriser accès aux missions d'escouade depuis la console réseau +0x02AC5C10 = li r3, 0 ; menu::CTerminalMenu_SquadQuest::offline + +; cfs::CfSocialManager::refreshOrderQuestInfo (called when select an entry in the network console) +0x022C805C = nop ; network test : lwz r10, 0x1B0(r30) --> rlwinm. r9, r10, 0,30,30 +0x022C8060 = nop ; network test + +; collectQuestInfoWE__Q2_3cfs15CfSocialManagerFRQ2_2ml45resvector__tm__28_PQ2_3cfs17CfSocialQuestInfo +0x022C6254 = li r3, 1 ; fw::SocialDataStore::getWorldEnemyCount(const(void)) +0x022C6280 = li r3, 0x4EE9 ; Quest ID for WE - fw::SocialDataStore::getWorldEnemyQuest(const(unsigned int)) +0x022C65A8 = li r3, 1 ; fw::SocialDataStore::getWorldEnemyCount(const(void)) + +; collectQuestInfoFR__Q2_3cfs15CfSocialManagerFRQ2_2ml45resvector__tm__28_PQ2_3cfs17CfSocialQuestInfo +0x022C66CC = li r3, 1 ; fw::SocialDataStore::getWorldEnemyCount(const(void)) +0x022C66FC = li r3, 0x4EED +0x022C6738 = nop ; network test? +0x022C6A5C = li r3, 1 ; fw::SocialDataStore::getWorldEnemyCount(const(void)) + + +; refreshWorldEnemyFinalResult is the key ?! +;0x022862C4 = lis r0, dword_10367630@h +;0x02AC48EC = stw r4, dword_10367630@l(r7) ; menu::MenuBladeHomeTerminal::initialize((void)) 0x02AC458C +;0x02BA0D38 = stw r0, dword_10367630@l(r30) ; menu::MenuMultiQuestResult::updateEnemyBoss((menu::MenuObject *)) +;0x02BA0DC4 = stw r11, dword_10367630@l(r30) ; menu::MenuMultiQuestResult::updateEnemyBoss((menu::MenuObject *)) +;updateEnemyBoss = 0x02BA0B64 +0x022863A4 = nop ; or. r0, r6, r7 +0x022863CC = nop ; or. r0, r6, r7 +; 0x02AC458C : OK +; 0x02AC48EC : KO +; 0x02BA0B64 : OK +; 0x0228637C : OK +0x02286474 = li r7, 1 ; for getWERewardList +; 0x02286774 : OK +;0x022868d8 = li r7, 1 +;0x02286904 = li r7, 1 +;0x02286BF0 = li r5, 2 +;0x02286C38 = nop +; addWorldEnemyReward__Q2_3cfs15CfSocialManagerFRQ2_2ml41reslist__tm__26_Q2_3cfs16WorldEnemyRewardUiN32 +; 0x02285F4C +;0x02285F60 = nop + +; menu::QuestMgr::move((void)) + +; Manage RPs & Appraisal +_shareRP: +0x1039C178 = .double 0 + +_loadRP: +;lis r11, _shareRP@ha +;lwz r12, _shareRP@l(r11) +;cmpwi r12, 0 +;bgt .+0xC +lis r12, 0x002 +ori r12, r12, 0x5510 +;stw r12, _shareRP@l(r11) +;stw r12, 0xC(r26) +blr +0x0282B2F0 = bla _loadRP ; __CPR86__getWorldEnemyInfo__Q2_2fw15SocialDataStoreCFUiRQ3_2fwJ25J14WorldEnemyInfo +;0x0282B2F0 = li r12, 0x2A45 + +_updateRP: +;nop;mr r30, r3 ; li r0, 0 +stw r11, 0x494(r27) ; lwz r5, 0x3B8(r26) ; +lis r3, _shareRP@ha ; lis r30, _shareRP@ha +lwz r9, _shareRP@l(r3) ; lwz r4, _shareRP@l(r30) +subf r9, r11, r9 ; cmplw r3, r5 ; +stw r9, _shareRP@l(r3) ; beqlr ; stw r4, _shareRP@l(r30) +lis r3, _shareAP@ha ; stw r5, _shareRP@l(r4) ; lwz r4, 0x498(r27) +lwz r9, _shareAP@l(r3) ; lis r30, _shareAP@ha +add r9, r11, r9 ; stw r4, _shareAP@l(r30) +stw r9, _shareAP@l(r3) ; stw r28, 0xA8(r1) ; +blr +;0x02BA0CE0 = bla _updateRP ; menu::MenuMultiQuestResult::updateEnemyBoss((menu::MenuObject *)) + +;0x1039C174 = .int 10 +_shareAP = reloc(0x1039C174) +_loadAP: +lis r8, _shareAP@ha +lwz r8, _shareAP@l(r8) +blr +;0x0282B408 = bla _loadAP ; __CPR86__getWorldEnemyInfo__Q2_2fw15SocialDataStoreCFUiRQ3_2fwJ25J14WorldEnemyInfo + +; ######################################### TODO : get WERewardList (Telethia Stem Cell) + +; cfs::CfSocialManager::getQuestDetailWE((cfs::CfSocialQuestInfoWE &)) +; |- __CPR95__getWorldEnemyInfoFromQuest__Q2_2fw15SocialDataStoreCFUiRQ3_2fwJ34J14WorldEnemyInfo +0x0282B454 = li r3, 0 ; getWorldEnemyIndexFromQuestID / Uncomment to show Appraisal Rewards +; |- |- __CPR86__getWorldEnemyInfo__Q2_2fw15SocialDataStoreCFUiRQ3_2fwJ25J14WorldEnemyInfo +0x0282B0E4 = li r7, 1 ; cmpwi r7, 0 +0x0282B0FC = li r0, 1 ; cmpwi r0, 0 +0x0282B170 = li r6, 1 ; to store in 8(r26) -> needed for cmpwi r0, 1 after callback +0x0282B264 = nop ; skip deserializeWorldEnemy +0x0282B410 = li r4, 1 ; for getWERewardList +;0x0281E680 = nop +;0x0281E6B0 = nop +;0x0281E6D8 = li r31, 0x06A3 ; enemyID (06A1 = Telethia, 06A3 = Yggdralith) + +; cfs::CfSocialManager::getQuestDetailFR((cfs::CfSocialQuestInfoFR &)) +0x0228989C = nop ; Uncomment to show Appraisal Rewards + +; Abandonned (1) +;022C9F30: r4 = 1 +;022CA188: r12 = 1 +;022CA1F8: getBoxNum = 0 +;r6 = 1 +;022CA280: r0 = 0 + +; Complete (3) +;022CA1F8: getBoxNum = 1 +;022C9F5C: r6 = 0 +;022CA114: r8 = 1 + +;0x02CFD37C = li r3, 2 ; only common + +;0x022CA280 = cmpw r0, r0 ; never common items +;0x022CA284 = nop ; always common items + +;0x022CA1F4 = li r3, 1 ; getBoxNum - always beaten items ? + +; A droite les items communs +; A gauche les items si Nemesis battu + +[XCX_OFFLINEWE_1E] ############################################################################################ +moduleMatches = 0xF882D5CF ; 1.0.1E + +.origin = codecave + +; menu::MenuMultiQuestOrder::move((void)) +; skip BLADE medals requirement on launch mission +0x02B9B0B0 = li r3, 1 ; Disable call to menu::MenuMultiQuestOrder::canOrderWorldEnemy + +;02B9A200 ; getMultiQuestList +;02B9A20C + ; menu::MenuMultiQuestOrder::setup + ;0x02B9A498 = nop CRASH + ; menu::MenuMultiQuestOrder::setupTicket + ;0x02B9A4CC = nop + ; menu::QuestMgr::getWorldEnemyTicket(const(void)) +;0x02CFE140 = li r3, 2 +;02B9A210 +; menu::QuestMgr::hasWEResult(const(void)) +;0x02CFE200 = li r3, 0 +;02B9A214 + +; menu::CTerminalMenu_PieceExchange::offline((void)) +; Allow access to piece exchange from network console +_single: +li r3, 0 +blr +0x02AC613C = ba _single ; menu::CBladeHomuMenu::single((void)) + +; __CPR129__getMultiQuestReward__Q2_3cfs15CfSocialManagerCFUiRQ2_3mtl68fixed_vector__tm__48_Q3_3cfsJ28J11QuestRewardXCUiL_2_46T1 --> OK +; 0x022C9E88 +0x022CA324 = nop ; always all items? + +; menu::MenuMultiQuestInfoSub::displayInfoWE((menu::MenuObject *)) +;0x02B90A6C = nop ; CRASH +;_doit = 0x02B90F14 +;0x02B90A6C = b _doit +; RP remaining = 0x3B8(r26=r3=CfSocialQuestInfo) +; |- r3 = 0x478(r29=r3=MenuMultiQuestInfoSub) +; |- RP from 0x1C(r1) +; Appraisal = 0x3BC(r26) +; 0xC(r5) CfSocialQuestInfo::collectQuestInfoWE => 0xC(r26) __CPR86__getWorldEnemyInfo__Q2_2fw15SocialDataStoreCFUiRQ3_2fwJ25J14WorldEnemyInfo +;0x02B91D80 = blr ; displayInfo - juste le cadre est visible +;0x02B917EC = blr ; displayInfoAward - aucun effet +;0x02B90814 = blr ; MenuMultiQuestInfoSub::displayInfoWE - fenêtre avec squelette mais aucune valeur +;0x02B9F30C = blr ; MenuMultiQuestResult::setup - Valeur et descriptif OK, titre vide +;0x02B9F07C = blr ; MenuMultiQuestResult::updateList - NON +;0x02BA0A64 = blr ; MenuMultiQuestResult::setupEnemyBoss - Valeur et titre OK, descriptif vide +;0x02BA1068 = blr ; MenuMultiQuestResult::displayInfo - NON +; move +;0x02BA1818 = nop ; crash (r3=1bcd3870) +;0x02BA1A80 = nop ; updateTimeAttack__Q2_4menu20MenuMultiQuestResultFPQ2_4menu10MenuObject crash ? +;0x02BA21B4 = nop ; updateEnemyBoss__Q2_4menu20MenuMultiQuestResultFPQ2_4menu10MenuObject crash ? + +; load 5ae0 +; 1bcd38d0 +;0x02BA1AD8 +;0x02BA20B0 - ok +;0x02BA20E0 +;0x02b90a80 - displayInfoWE +;0x2b90ac0 +;0x02BA20B0 = li r3, 0 + +; menu::MenuMultiQuestResult::updateEnemyBoss((menu::MenuObject *)) +; tout fini loc_2BA0D8C +; 0x494(r27) = RP stolen (from 0x5770) +; 0x498(r27) = ? +; 0x46C(r27) = appraisal ? +; 0x5770(r27) = Total RP stolen ! +; 0x470(r26) = RP stolen ? + +;0x02B90A80 = li r5, 51 ; 0x3B8 +;0x02B90AC0 = li r5, 42 ; 0x3BC +;0x02B90B04 = li r8, 1 ; 0x470 +;0x02B90B34 = li r6, 42 +;0x02B90EB8 = li r9, 1 ; 0x3C8(r26) +;0x02B90EC8 = li r10, 2 ; 0x3CC(r26) +;0x02B90EE8 = li r9, 1 ; 0x3C8(r26) +;0x02B90EF8 = li r10, 2 ; 0x3CC(r26) + +; menu::MenuMultiQuestOrder::move((void)) +;02B9A1F8 > 02B9D020 +;02B9A204 > 02B9A3B0 +;02B9A208 > 02B9A3C4 +;02B9A228 > 02B9B40C openWEFinalResult +;02B9A22C (loop) > 02B9B45C isFinishWEFinalResult +;02B9A20C > 02B9A3E8 setup +;02B9A210 (disp) > +;02B9A214 (loop) > + +; menu::QuestMgr::hasWEResult(const(void)) +;0x02CFE200 = li r3, 1 + +; menu::QuestMgr::checkWEResult((void)) LOOP + +; menu::MenuWEFinalResult::move((void)) +;02C23468 +;02C2346C +;02C23470 > 02C235F8 requestWEResult +;02C23474 > 02C23658 getWEResultState (=2) & getWEResultInfo +;02C2352C +;02C23530 +;02C23520 +;02C23524 +;02C23528 +;02C23530 + +[XCX_OFFLINEWE_2U] ############################################################################################ +moduleMatches = 0x30B6E091 ; 1.0.2U + +.origin = codecave + +;0x02B9B0A0 = li r3, 1 ; Disable call to menu::MenuMultiQuestOrder::canOrderWorldEnemy + +_single: +li r3, 0 +blr + +0x02AC612C = ba _single + +[XCX_OFFLINEWE_1U] ############################################################################################ +moduleMatches = 0xAB97DE6B ; 1.0.1U + +.origin = codecave + +; getServerTimeSec__Q2_2nt10CNetLibNexCFRUL +;0x0295EA10 = nop +;0x0295EA14 = li r0, 1 +;_getLocalTimeSec = 0x02892000 +;0x0295EAA4 = bl _getLocalTimeSec + +;0x0295EA7C = lis r3, 0xFFFF ; 008a43cd +;0x0295EA80 = ori r29, r3, 0xfff4 +;0x0295EA84 = lis r4, 0 ; 2f060970 +;0x0295EA88 = ori r30, r4, 8 +;0x0295EA94 = lis r3, 0xffff ; 008a43cd +;0x0295EA94 = lis r4, 0xffff ; 2f060970 +;0x0295EA98 = ori r4, r4, 0xfed4 +;0x0295EAA4 = nop +; 65535 +; +;0x0295EA98 = lis r3, 0 ; 008a43cd +;0x0295EA9C = ori r3, r3, 0 +;0x0295EAA0 = lis r4, 0x255B ; 2f060970 +;0x0295EAA4 = ori r4, r4, 0x6100 + +; OSGetSystemInfo - 0(r3) 0ed1b768 > 248625000 +;0x0295EA90 = li r8, 0 + +;0x022CA3E0 = nop +;0x022CA3E8 = nop + +; cfs::CfSocialManager::update((float)) +0x022879D0 = nop ; (network test?) allow call to cfs::CfSocialQuestManager::update((void)) + +; Autoriser accès aux missions d'escouade depuis la console réseau +0x02AC5C10 = li r3, 0 ; menu::CTerminalMenu_SquadQuest::offline + +; cfs::CfSocialManager::refreshOrderQuestInfo (called when select an entry in the network console) +0x022C805C = nop ; network test : lwz r10, 0x1B0(r30) --> rlwinm. r9, r10, 0,30,30 +0x022C8060 = nop ; network test + +; collectQuestInfoWE__Q2_3cfs15CfSocialManagerFRQ2_2ml45resvector__tm__28_PQ2_3cfs17CfSocialQuestInfo +0x022C6254 = li r3, 1 ; fw::SocialDataStore::getWorldEnemyCount(const(void)) +0x022C6280 = li r3, 0x4EE9 ; Quest ID for WE - fw::SocialDataStore::getWorldEnemyQuest(const(unsigned int)) +0x022C65A8 = li r3, 1 ; fw::SocialDataStore::getWorldEnemyCount(const(void)) + +; collectQuestInfoFR__Q2_3cfs15CfSocialManagerFRQ2_2ml45resvector__tm__28_PQ2_3cfs17CfSocialQuestInfo +0x022C66CC = li r3, 1 ; fw::SocialDataStore::getWorldEnemyCount(const(void)) +0x022C66FC = li r3, 0x4EED +0x022C6738 = nop ; network test? +0x022C6A5C = li r3, 1 ; fw::SocialDataStore::getWorldEnemyCount(const(void)) + + +; refreshWorldEnemyFinalResult is the key ?! +;0x022862C4 = lis r0, dword_10367630@h +;0x02AC48EC = stw r4, dword_10367630@l(r7) ; menu::MenuBladeHomeTerminal::initialize((void)) 0x02AC458C +;0x02BA0D38 = stw r0, dword_10367630@l(r30) ; menu::MenuMultiQuestResult::updateEnemyBoss((menu::MenuObject *)) +;0x02BA0DC4 = stw r11, dword_10367630@l(r30) ; menu::MenuMultiQuestResult::updateEnemyBoss((menu::MenuObject *)) +;updateEnemyBoss = 0x02BA0B64 +0x022863A4 = nop ; or. r0, r6, r7 +0x022863CC = nop ; or. r0, r6, r7 +; 0x02AC458C : OK +; 0x02AC48EC : KO +; 0x02BA0B64 : OK +; 0x0228637C : OK +0x02286474 = li r7, 1 ; for getWERewardList +; 0x02286774 : OK +;0x022868d8 = li r7, 1 +;0x02286904 = li r7, 1 +;0x02286BF0 = li r5, 2 +;0x02286C38 = nop +; addWorldEnemyReward__Q2_3cfs15CfSocialManagerFRQ2_2ml41reslist__tm__26_Q2_3cfs16WorldEnemyRewardUiN32 +; 0x02285F4C +;0x02285F60 = nop + +; menu::QuestMgr::move((void)) + +; Manage RPs & Appraisal +_shareRP: +0x1039C178 = .double 0 + +_loadRP: +lis r11, _shareRP@ha +lwz r12, _shareRP@l(r11) +cmpwi r12, 0 +bgt .+0xC +lis r12, 0x002 +ori r12, r12, 0x5510 +stw r12, _shareRP@l(r11) +stw r12, 0xC(r26) +blr +0x0282B2F0 = bla _loadRP ; __CPR86__getWorldEnemyInfo__Q2_2fw15SocialDataStoreCFUiRQ3_2fwJ25J14WorldEnemyInfo +;0x0282B2F0 = li r12, 0x2A45 + +_updateRP: +;nop;mr r30, r3 ; li r0, 0 +stw r11, 0x494(r27) ; lwz r5, 0x3B8(r26) ; +lis r3, _shareRP@ha ; lis r30, _shareRP@ha +lwz r9, _shareRP@l(r3) ; lwz r4, _shareRP@l(r30) +subf r9, r11, r9 ; cmplw r3, r5 ; +stw r9, _shareRP@l(r3) ; beqlr ; stw r4, _shareRP@l(r30) +lis r3, _shareAP@ha ; stw r5, _shareRP@l(r4) ; lwz r4, 0x498(r27) +lwz r9, _shareAP@l(r3) ; lis r30, _shareAP@ha +add r9, r11, r9 ; stw r4, _shareAP@l(r30) +stw r9, _shareAP@l(r3) ; stw r28, 0xA8(r1) ; +blr +;0x02BA0CE0 = bla _updateRP ; menu::MenuMultiQuestResult::updateEnemyBoss((menu::MenuObject *)) + +;0x1039C174 = .int 10 +_shareAP = reloc(0x1039C174) +_loadAP: +lis r8, _shareAP@ha +lwz r8, _shareAP@l(r8) +blr +;0x0282B408 = bla _loadAP ; __CPR86__getWorldEnemyInfo__Q2_2fw15SocialDataStoreCFUiRQ3_2fwJ25J14WorldEnemyInfo + +; ######################################### TODO : get WERewardList (Telethia Stem Cell) + +; cfs::CfSocialManager::getQuestDetailWE((cfs::CfSocialQuestInfoWE &)) +; |- __CPR95__getWorldEnemyInfoFromQuest__Q2_2fw15SocialDataStoreCFUiRQ3_2fwJ34J14WorldEnemyInfo +0x0282B454 = li r3, 0 ; getWorldEnemyIndexFromQuestID / Uncomment to show Appraisal Rewards +; |- |- __CPR86__getWorldEnemyInfo__Q2_2fw15SocialDataStoreCFUiRQ3_2fwJ25J14WorldEnemyInfo +0x0282B0E4 = li r7, 1 ; cmpwi r7, 0 +0x0282B0FC = li r0, 1 ; cmpwi r0, 0 +0x0282B170 = li r6, 1 ; to store in 8(r26) -> needed for cmpwi r0, 1 after callback +0x0282B264 = nop ; skip deserializeWorldEnemy +0x0282B410 = li r4, 1 ; for getWERewardList +;0x0281E680 = nop +;0x0281E6B0 = nop +;0x0281E6D8 = li r31, 0x06A3 ; enemyID (06A1 = Telethia, 06A3 = Yggdralith) + +; cfs::CfSocialManager::getQuestDetailFR((cfs::CfSocialQuestInfoFR &)) +0x0228989C = nop ; Uncomment to show Appraisal Rewards + + +; menu::MenuMultiQuestOrder::move((void)) +; skip BLADE medals requirement +0x02B9B0B0 = li r3, 1 ; Disable call to menu::MenuMultiQuestOrder::canOrderWorldEnemy + +; menu::CTerminalMenu_PieceExchange::offline((void)) +; Allow access to piece exchange from network console +_single: +li r3, 0 +blr +0x02AC613C = ba _single ; menu::CBladeHomuMenu::single((void)) + +; __CPR129__getMultiQuestReward__Q2_3cfs15CfSocialManagerCFUiRQ2_3mtl68fixed_vector__tm__48_Q3_3cfsJ28J11QuestRewardXCUiL_2_46T1 --> OK +; 0x022C9E88 +0x022CA324 = nop ; always all items? + diff --git a/src/XenobladeChroniclesX/Mods/BladeGlobalNemesisMissionsOffline/rules.txt b/src/XenobladeChroniclesX/Mods/BladeGlobalNemesisMissionsOffline/rules.txt new file mode 100644 index 00000000..734891ac --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/BladeGlobalNemesisMissionsOffline/rules.txt @@ -0,0 +1,6 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Offline Global Nemesis missions" +path = "Xenoblade Chronicles X/Mods/BLADE/Offline Global Nemesis missions" +description = Global Nemesis (both Telethia Plume and Yggralith Zero) are available in the BLADE console.|You still need medals to start the battle. +version = 5 diff --git a/src/XenobladeChroniclesX/Mods/BladeLv60SkellsUnlocked/patch_lv60skells.asm b/src/XenobladeChroniclesX/Mods/BladeLv60SkellsUnlocked/patch_lv60skells.asm new file mode 100644 index 00000000..63ac5726 --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/BladeLv60SkellsUnlocked/patch_lv60skells.asm @@ -0,0 +1,47 @@ +[XCX_UNLOCKPOSTSKELLS_ALL] ################################################################ +moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U + +.origin = codecave + +.int $miranium +.int $resource +.int $ignoreLevel + +LbIgnoreLevel: + cmpwi r3, $ignoreLevel + bnelr + li r3, 1 + blr + +[XCX_UNLOCKPOSTSKELLS_1E] ################################################################ +moduleMatches = 0xF882D5CF ; 1.0.1E + +; menu::MenuArmsCompanyDevelopSelectBlueprint::CheckEnableDevelop(const(int, bool)) +0x02A7A784 = li r3, $miranium +0x02A7A954 = li r3, $resource + +; menu::MenuArmsCompany::IsDollLicense(const(void)) +0x02A6B838 = li r3, 1 ; always returns true + +; menu::MenuArmsCompanyDevelopSelectBlueprint::InitializeItemData((void)) +0x02A7B220 = li r30, 0 ; unlock everything + +0x02AF8EA8 = b LbIgnoreLevel + +[XCX_UNLOCKPOSTSKELLS_2U] ################################################################ +moduleMatches = 0x30B6E091 ; 1.0.2U + +0x02A6B828 = li r3, 1 +0x02A7B210 = li r30, 0 +0x02A7A774 = li r3, $miranium +0x02A7A944 = li r3, $resource +0x02AF8E98 = b LbIgnoreLevel + +[XCX_UNLOCKPOSTSKELLS_1U] ################################################################ +moduleMatches = 0xAB97DE6B ; 1.0.1U + +0x02A6B7AC = li r3, 1 ; always returns true +0x02A7B194 = li r30, 0 ; unlock everything +0x02A7A6F8 = li r3, $miranium +0x02A7A8C8 = li r3, $resource +0x02AF8E1C = b LbIgnoreLevel \ No newline at end of file diff --git a/Mods/XenobladeX/XenobladeX_mod_BladeLv60SkellsUnlocked/rules.txt b/src/XenobladeChroniclesX/Mods/BladeLv60SkellsUnlocked/rules.txt similarity index 77% rename from Mods/XenobladeX/XenobladeX_mod_BladeLv60SkellsUnlocked/rules.txt rename to src/XenobladeChroniclesX/Mods/BladeLv60SkellsUnlocked/rules.txt index a14d788a..682a979c 100644 --- a/Mods/XenobladeX/XenobladeX_mod_BladeLv60SkellsUnlocked/rules.txt +++ b/src/XenobladeChroniclesX/Mods/BladeLv60SkellsUnlocked/rules.txt @@ -2,17 +2,19 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = "Lv60 Skells unlocked" path = "Xenoblade Chronicles X/Mods/BLADE/Lv60 Skells unlocked" -description = Lv60 Skells and equipment are unlocked and accessible right after you are a BLADE member.|More info and help at reddit.com/r/cemu_xenoblade. -version = 4 +description = Lv60 Skells and equipment are unlocked and accessible right after you are a BLADE member. +version = 5 -[Preset] -name = Normal +[Default] $miranium = 2 $resource = 3 $ignoreLevel = 2 +[Preset] +name = Normal + [Preset] name = CHEAT - Ignore Miranium, resources and level requirements $miranium = 0 $resource = 0 -$ignoreLevel = 0 +$ignoreLevel = 0 \ No newline at end of file diff --git a/src/XenobladeChroniclesX/Mods/BladeMoreTickets/patch_moretickets.asm b/src/XenobladeChroniclesX/Mods/BladeMoreTickets/patch_moretickets.asm new file mode 100644 index 00000000..1a20d389 --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/BladeMoreTickets/patch_moretickets.asm @@ -0,0 +1,113 @@ +[XCX_BLADE_MORETICKETS] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U + +.origin = codecave + +.int $mult +.int $uncap + +; ---------------------------------------------------------------------------- +; WHO : cfs::CfSocialManager::addTradeTicket((int, unsigned int)) +; WHAT : Multiply the reward tickets given in many occasions + +_moreTickets: +mr r30, r3 +cmpwi r4, 0 +bltlr +mulli r4, r4, $mult +blr + +; ---------------------------------------------------------------------------- +; WHO : cfs::CfSocialManager::addTradeTicket((int, unsigned int)) +; WHAT : Ignore the max number of tickets we can get + +_uncapTickets: +li r5, $uncap +cmpwi r5, 1 +beqlr +mr r3, r25 +blr + +; ---------------------------------------------------------------------------- +; WHO : menu::MenuMultiQuestInfoWindow::displayInfo((menu::MenuObject *,bool)) +; WHAT : + +_dispBefore: +lhz r26, 0x8C(r1) +mulli r26, r26, $mult +blr + +; ---------------------------------------------------------------------------- +; WHO : menu::MenuMultiQuestResult::setup((void)) +; WHAT : + +_dispAfter: +lhz r5, 0x5778(r29) +mulli r5, r5, $mult +blr + +; ---------------------------------------------------------------------------- +; WHO : writeListTicket__Q2_4menu19MenuMultiQuestOrderFPQ2_4menu10MenuObjectiQ3_2fw9CItemType4TypeUsUiT5 +; WHAT : multiply tickets from piece exchange + +_pieceExchange: +mr r5, r29 +cmpwi r26, 0x1E +bnelr +mulli r5, r5, $mult +blr + +; menu::MenuMultiQuestOrder::move((void)) +_dispExchangeInit: +lhz r6, 0xC(r26) +lwz r3, 0x4840(r31) +cmpwi r3, 7 +bne _exitExchangeInit +mulli r6, r6, $mult +_exitExchangeInit: +cmpwi r11, 0 +blr + +; menu::MenuMultiQuestOrder::onCursorMove((int)) +_dispExchangeUpdate: +mr r29, r4 +cmpwi r9, 7 +bnelr +mulli r29, r29, $mult +blr + +##################################################################################################### +[XCX_BLADE_MORETICKETS_1E] +moduleMatches = 0xF882D5CF ; 1.0.1E + +0x022CA86C = bla _moreTickets +0x022CAC5C = bla _uncapTickets +0x02B94718 = bla _dispBefore +0x02B9FE2C = bla _dispAfter +0x02B9796C = bla _pieceExchange +0x02B9C1EC = bla _dispExchangeInit +0x02C7C07C = bla _dispExchangeUpdate + +##################################################################################################### +[XCX_BLADE_MORETICKETS_2U] +moduleMatches = 0x30B6E091 ; 1.0.2U + +0x022CA86C = bla _moreTickets +0x022CAC5C = bla _uncapTickets +0x02B94708 = bla _dispBefore +0x02B9FE1C = bla _dispAfter +0x02B9795C = bla _pieceExchange +0x02B9C1DC = bla _dispExchangeInit +0x02C7C01C = bla _dispExchangeUpdate + +##################################################################################################### +[XCX_BLADE_MORETICKETS_1U] +moduleMatches = 0xAB97DE6B ; 1.0.1U + +0x022CA7FC = bla _moreTickets +0x022CABEC = bla _uncapTickets +0x02B9468C = bla _dispBefore +0x02B9FD2C = bla _dispAfter +0x02B978E0 = bla _pieceExchange +0x02B9C0EC = bla _dispExchangeInit +0x02C7BEA4 = bla _dispExchangeUpdate diff --git a/Mods/XenobladeX/XenobladeX_mod_BladeMoreTickets/rules.txt b/src/XenobladeChroniclesX/Mods/BladeMoreTickets/rules.txt similarity index 61% rename from Mods/XenobladeX/XenobladeX_mod_BladeMoreTickets/rules.txt rename to src/XenobladeChroniclesX/Mods/BladeMoreTickets/rules.txt index 7a866221..ec42c873 100644 --- a/Mods/XenobladeX/XenobladeX_mod_BladeMoreTickets/rules.txt +++ b/src/XenobladeChroniclesX/Mods/BladeMoreTickets/rules.txt @@ -2,40 +2,38 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = "More Reward Tickets" path = "Xenoblade Chronicles X/Mods/BLADE/More Reward Tickets" -description = Increase the Tickets gained with Squad tasks and missions. Uncapped presets ignore max tickets.|More info and help at reddit.com/r/cemu_xenoblade. -version = 4 +description = Increase the Tickets gained with Squad tasks and missions.|Uncapped presets ignore max tickets. +version = 5 -[Preset] -name = "Gain more Tickets (x2)" +[Default] $mult = 2 $uncap = 0 +[Preset] +name = "Gain more Tickets (x2)" + [Preset] name = "Gain more Tickets (x5)" $mult = 5 -$uncap = 0 [Preset] name = "Gain more Tickets (x10)" $mult = 10 -$uncap = 0 [Preset] name = "Gain more Tickets (x100)" $mult = 100 -$uncap = 0 [Preset] -name = "Gain more Tickets (x10 Uncapped)" -$mult = 10 -$uncap = 1 - -[Preset] -name = "Gain more Tickets (x100 Uncapped)" -$mult = 100 -$uncap = 1 - -[Preset] -name = "Gain more Tickets (x1000 Uncapped)" +name = "Gain more Tickets (x1000)" $mult = 1000 + +[Preset] +name = Yes +category = "Capped to BLADE level" + +[Preset] +name = No +category = "Capped to BLADE level" $uncap = 1 + diff --git a/Mods/XenobladeX/XenobladeX_mod_BladeTasksAndMissionsOffline/patches.txt b/src/XenobladeChroniclesX/Mods/BladeTasksAndMissionsOffline/patch_offline_squad.asm similarity index 59% rename from Mods/XenobladeX/XenobladeX_mod_BladeTasksAndMissionsOffline/patches.txt rename to src/XenobladeChroniclesX/Mods/BladeTasksAndMissionsOffline/patch_offline_squad.asm index 170046cc..8c2be904 100644 --- a/Mods/XenobladeX/XenobladeX_mod_BladeTasksAndMissionsOffline/patches.txt +++ b/src/XenobladeChroniclesX/Mods/BladeTasksAndMissionsOffline/patch_offline_squad.asm @@ -1,9 +1,9 @@ [XCX_SQUADMISSIONS] moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U -codeCaveSize = 0x70 +.origin = codecave -#################### Activate Squad Tasks +;#################### Activate Squad Tasks ; cfs::CfSocialManager::update((float)) 0x022879D0 = nop ; (network test?) allow call to cfs::CfSocialQuestManager::update((void)) @@ -14,13 +14,10 @@ codeCaveSize = 0x70 0x023ABA68 = li r5, 60 ; force 0x24 - UNLOCK 0x023ABC10 = nop ; isHost 0x023A0484 = nop ; isHost -;0x023ABC94 = nop ; getServerTimeSecRegion - UNLOCK 0x023ABCAC = nop ; compare with 0x28 - UNLOCK 0x023ABCB8 = nop ; compare with 0x2C - UNLOCK -;_gotoJoin = 0x023ABD00 ; UNLOCK -;0x023ABCBC = b _gotoJoin ; UNLOCK -##################### BLADE Home Terminal (for Squad Quest Selection) +;##################### BLADE Home Terminal (for Squad Quest Selection) ; cfs::CfSocialManager::refreshOrderQuestInfo (called when select an entry in the BLADE menu) 0x022C805C = nop ; test réseau : lwz r10, 0x1B0(r30) --> rlwinm. r9, r10, 0,30,30 @@ -29,56 +26,63 @@ codeCaveSize = 0x70 ; collectQuestInfoSQ__Q2_3cfs15CfSocialManagerFRQ2_2ml45resvector__tm__28_PQ2_3cfs17CfSocialQuestInfo 0x022C58BC = nop ; rlwinm. r10, r11, 0,29,29 -#################### Change Squad Mission using main menu +;#################### Change Squad Mission using main menu -_shareAddr = 0x1039C17C +VarSquadMission: +.int 0 -_iniPtr = 0x00000000 -0x00000000 = li r5, 0 -0x00000004 = lis r30, _shareAddr@ha -0x00000008 = stw r5, _shareAddr@l(r30) -0x0000000C = mr r30, r3 -0x00000010 = blr +_iniPtr: +li r5, 0 +lis r30, VarSquadMission@ha +stw r5, VarSquadMission@l(r30) +mr r30, r3 +blr ; cfs::CfSquadMissionManager::joinMission((cfs::CfSquadTargetCount const &)) 0x023B74A0 = bla _iniPtr ; cfs::CfSocialQuestManager::update((void)) -_gotoTimeout = 0x023ABDF4 -_gotoNext = 0x023ABE54 -0x023ABDC8 = lis r3, _shareAddr@ha -0x023ABDCC = lwz r7, _shareAddr@l(r3) +0x023ABDF4 = _gotoTimeout: +0x023ABE54 = _gotoNext: + +0x023ABDC8 = lis r3, VarSquadMission@ha +0x023ABDCC = lwz r7, VarSquadMission@l(r3) 0x023ABDD0 = cmpwi r7, 1 0x023ABDD4 = beq _gotoTimeout 0x023ABDD8 = b _gotoNext #################### Force Squad Mission number -0x0000006C = .byte $missionId -_misId = 0x0000006C +.origin = codecave +.int $missionId -_forceMission = 0x00000050 -0x00000050 = lmw r14, 0x1B8(r1) -0x00000054 = lis r4, _misId@ha -0x00000058 = lbz r4, _misId@l(r4) -0x0000005C = cmpwi r4, 0 -0x00000060 = beqlr -0x00000064 = mr r3, r4 -0x00000068 = blr +_forceMission: +lmw r14, 0x1B8(r1) +li r4, $missionId +cmpwi r4, 0 +beqlr +mr r3, r4 +blr 0x023AB7C4 = bla _forceMission +#################### Change Squad Mission using main menu + +_savePtr: +li r3, 1 +lis r30, VarSquadMission@ha +stw r3, VarSquadMission@l(r30) +blr + ##################################################################################################### [XCX_SQUADMISSIONS_1E] moduleMatches = 0xF882D5CF ; 1.0.1E -codeCaveSize = 0x3C - ; getServerTimeSec__Q2_2nt10CNetLibNexCFRUL 0x0295EA10 = nop 0x0295EA14 = li r0, 42 ; menu::MenuSquadMission::process((void)) -0x02BFC7C0 = li r11, 1 +0x02BFC7C0 = li r11, 1 ; garder affichée la liste des tasks en bas à droite ##################### BLADE Home Terminal (for Squad Quest Selection) @@ -86,14 +90,6 @@ codeCaveSize = 0x3C #################### Change Squad Mission using main menu -_shareAddr = 0x1039C17C - -_savePtr = 0x00000000 -0x00000000 = li r3, 1 -0x00000004 = lis r30, _shareAddr@ha -0x00000008 = stw r3, _shareAddr@l(r30) -0x0000000C = blr - 0x02B85134 = bla _savePtr 0x02B8514C = bla _savePtr @@ -104,8 +100,6 @@ _savePtr = 0x00000000 [XCX_SQUADMISSIONS_2U] moduleMatches = 0x30B6E091 ; 1.0.2U -codeCaveSize = 0x3C - ; getServerTimeSec__Q2_2nt10CNetLibNexCFRUL 0x0295EA00 = nop 0x0295EA04 = li r0, 42 @@ -119,14 +113,6 @@ codeCaveSize = 0x3C #################### Change Squad Mission using main menu -_shareAddr = 0x1039C17C - -_savePtr = 0x00000000 -0x00000000 = li r3, 1 -0x00000004 = lis r30, _shareAddr@ha -0x00000008 = stw r3, _shareAddr@l(r30) -0x0000000C = blr - 0x02B85124 = bla _savePtr 0x02B8513C = bla _savePtr @@ -137,72 +123,67 @@ _savePtr = 0x00000000 [XCX_SQUADMISSIONS_1U] moduleMatches = 0xAB97DE6B ; 1.0.1U -codeCaveSize = 0x7C - -0x02287960 = nop +.origin = codecave +0x02287960 = nop ; (network test?) allow call to cfs::CfSocialQuestManager::update((void)) 0x023AB814 = nop ; 0x6B8(r12) == 0 0x023AB844 = nop ; isHost 0x023AB9F8 = li r5, 60 ; force 0x24 - UNLOCK 0x023ABBA0 = nop ; isHost 0x023A0414 = nop ; isHost -0x023ABC24 = nop ; getServerTimeSecRegion - UNLOCK 0x023ABC3C = nop ; compare with 0x28 - UNLOCK 0x023ABC48 = nop ; compare with 0x2C - UNLOCK -_gotoJoin = 0x023ABC90 - UNLOCK -0x023ABC4C = b _gotoJoin - UNLOCK - 0x022C7FEC = nop ; test réseau : lwz r10, 0x1B0(r30) --> rlwinm. r9, r10, 0,30,30 0x022C7FF0 = nop ; test réseau 0x022C584C = nop ; rlwinm. r10, r11, 0,29,29 -#################### Change Squad Mission using main menu +VarSquadMission: +.int 0 -_shareAddr = 0x1039C07C - -_iniPtr = 0x00000000 -0x00000000 = li r5, 0 -0x00000004 = lis r30, _shareAddr@ha -0x00000008 = stw r5, _shareAddr@l(r30) -0x0000000C = mr r30, r3 -0x00000010 = blr +_iniPtr: +li r5, 0 +lis r30, VarSquadMission@ha +stw r5, VarSquadMission@l(r30) +mr r30, r3 +blr 0x023B7430 = bla _iniPtr -_gotoTimeout = 0x023ABD84 -_gotoNext = 0x023ABDE4 +0x023ABD84 = _gotoTimeout: +0x023ABDE4 = _gotoNext: -0x023ABD58 = lis r3, _shareAddr@ha -0x023ABD5C = lwz r7, _shareAddr@l(r3) +0x023ABD58 = lis r3, VarSquadMission@ha +0x023ABD5C = lwz r7, VarSquadMission@l(r3) 0x023ABD60 = cmpwi r7, 1 0x023ABD64 = beq _gotoTimeout 0x023ABD68 = b _gotoNext -##################################################################################################### -; getServerTimeSec__Q2_2nt10CNetLibNexCFRUL -0x0295E984 = nop -0x0295E988 = li r0, 42 +#################### Force Squad Mission number +.int $missionId -; menu::MenuSquadMission::process((void)) -0x02BFC6C0 = li r11, 1 +_forceMission: +lmw r14, 0x1B8(r1) +li r4, $missionId +cmpwi r4, 0 +beqlr +mr r3, r4 +blr -##################### BLADE Home Terminal (for Squad Quest Selection) - -0x02AC5C10 = li r3, 0 ; menu::CTerminalMenu_SquadQuest::offline +0x023AB754 = bla _forceMission #################### Change Squad Mission using main menu +_savePtr: +li r3, 1 +lis r30, VarSquadMission@ha +stw r3, VarSquadMission@l(r30) +blr + +0x0295E984 = nop +0x0295E988 = li r0, 42 +0x02BFC6C0 = li r11, 1 ; garder affichée la liste des tasks en bas à droite 0x02AC5B84 = li r3, 0 ; menu::CTerminalMenu_SquadQuest::offline - -_savePtr = 0x0000006C -0x0000006C = li r3, 1 -0x00000070 = lis r30, _shareAddr@ha -0x00000074 = stw r3, _shareAddr@l(r30) -0x00000078 = blr - 0x02B850A8 = bla _savePtr 0x02B850C0 = bla _savePtr - 0x02B84FF8 = li r11, 1 -0x02B8501C = li r11, 1 - +0x02B8501C = li r11, 1 \ No newline at end of file diff --git a/Mods/XenobladeX/XenobladeX_mod_BladeTasksAndMissionsOffline/rules.txt b/src/XenobladeChroniclesX/Mods/BladeTasksAndMissionsOffline/rules.txt similarity index 95% rename from Mods/XenobladeX/XenobladeX_mod_BladeTasksAndMissionsOffline/rules.txt rename to src/XenobladeChroniclesX/Mods/BladeTasksAndMissionsOffline/rules.txt index 426a1a99..f919814c 100644 --- a/Mods/XenobladeX/XenobladeX_mod_BladeTasksAndMissionsOffline/rules.txt +++ b/src/XenobladeChroniclesX/Mods/BladeTasksAndMissionsOffline/rules.txt @@ -2,12 +2,14 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = "Squad tasks and missions are available offline" path = "Xenoblade Chronicles X/Mods/BLADE/Offline Squad tasks and missions" -description = Squad tasks and missions are available offline. Presets allow to select a Squad Mission, or you can use [Social > Squad Select] menu for random selection.|More info and help at reddit.com/r/cemu_xenoblade. -version = 4 +description = Squad tasks and missions are available offline. Presets allow to select a Squad Mission, or you can use [Social > Squad Select] menu for random selection. +version = 5 + +[Default] +$missionId = 0 [Preset] name = "Random" -$missionId = 0 [Preset] name = "N01: Forfex,Theroids,Amana Durian(c),Papil,Puge" diff --git a/src/XenobladeChroniclesX/Mods/CollectiblesCatchRange/patch_catch.asm b/src/XenobladeChroniclesX/Mods/CollectiblesCatchRange/patch_catch.asm new file mode 100644 index 00000000..e58bbff3 --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/CollectiblesCatchRange/patch_catch.asm @@ -0,0 +1,77 @@ +[XCX_COLLECTIBLESRANGE_ALL] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U + +.origin = codecave + +; ---------------------------------------------------------------------------- +; WHO : cfs::CfPopManagerItem::updateTouchItem((void)) +; WHAT : Initialize collectibles distance + +_rangeInnerConst: + .float 40.0 +_heightInnerConst: + .float 8.0 +_rangeDollConst: + .float 64.0 +_heightDollConst: + .float 64.0 +_rangeFlightConst: + .float 64.0 +_heightFlightConst: + .float 52.0 + +_itemRangeInner: +lis r5, _rangeInnerConst@ha +lfs f10, _rangeInnerConst@l(r5) +fadd f10, f9, f10 +blr + +_itemHeightInner: +lis r5, _heightInnerConst@ha +lfs f12, _heightInnerConst@l(r5) +fadd f12, f10, f12 +blr + +_itemRangeDoll: +lis r5, _rangeDollConst@ha +lfs f9, _rangeDollConst@l(r5) +fadd f9, f6, f9 +blr + +_itemHeightDoll: +lis r5, _heightDollConst@ha +lfs f10, _heightDollConst@l(r5) +fadd f10, f7, f10 +blr + +_itemRangeFlight: +lis r5, _rangeFlightConst@ha +lfs f10, _rangeFlightConst@l(r5) +fadd f10, f12, f10 +blr + +_itemHeightFlight: +lis r5, _heightFlightConst@ha +lfs f0, _heightFlightConst@l(r5) +fadd f0, f13, f0 +blr + +[XCX_COLLECTIBLESRANGE] ################################################################################################# +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +0x02389B80 = bla _itemRangeInner +0x02389BB8 = bla _itemHeightInner +0x02389C3C = bla _itemRangeDoll +0x02389C74 = bla _itemHeightDoll +0x02389CEC = bla _itemRangeFlight +0x02389D30 = bla _itemHeightFlight + +[XCX_COLLECTIBLESRANGE_1U] ################################################################################################# +moduleMatches = 0xAB97DE6B ; 1.0.1U + +0x02389B10 = bla _itemRangeInner +0x02389B48 = bla _itemHeightInner +0x02389BCC = bla _itemRangeDoll +0x02389C04 = bla _itemHeightDoll +0x02389C7C = bla _itemRangeFlight +0x02389CC0 = bla _itemHeightFlight diff --git a/Mods/XenobladeX/XenobladeX_mod_CollectiblesCatchRange/rules.txt b/src/XenobladeChroniclesX/Mods/CollectiblesCatchRange/rules.txt similarity index 71% rename from Mods/XenobladeX/XenobladeX_mod_CollectiblesCatchRange/rules.txt rename to src/XenobladeChroniclesX/Mods/CollectiblesCatchRange/rules.txt index 504c5267..759c2fa5 100644 --- a/Mods/XenobladeX/XenobladeX_mod_CollectiblesCatchRange/rules.txt +++ b/src/XenobladeChroniclesX/Mods/CollectiblesCatchRange/rules.txt @@ -2,5 +2,5 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = "Catch range mod" path = "Xenoblade Chronicles X/Mods/Collectibles/Catch range mod" -description = Increase the distance from which collectibles are looted (no preset needed).|More info and help at reddit.com/r/cemu_xenoblade. -version = 4 +description = Increase the distance from which collectibles are looted (no preset needed). +version = 5 diff --git a/Mods/XenobladeX/XenobladeX_mod_CollectiblesIgnore100th/patches.txt b/src/XenobladeChroniclesX/Mods/CollectiblesIgnore100th/patch_collect100.asm similarity index 94% rename from Mods/XenobladeX/XenobladeX_mod_CollectiblesIgnore100th/patches.txt rename to src/XenobladeChroniclesX/Mods/CollectiblesIgnore100th/patch_collect100.asm index bc02bead..9d9eda1e 100644 --- a/Mods/XenobladeX/XenobladeX_mod_CollectiblesIgnore100th/patches.txt +++ b/src/XenobladeChroniclesX/Mods/CollectiblesIgnore100th/patch_collect100.asm @@ -11,7 +11,7 @@ moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U ; WHO : cfs::CfPopManagerItem::updateTouchItem((void)) ; WHAT : exit code if addItem returns 0 (blue gem not collected and no sound) -_exit = 0x0238A1BC +0x0238A1BC = _exit: 0x02389EF8 = beq _exit [XCX_NOITEMSELL_1U] ###################################################################### @@ -19,5 +19,5 @@ moduleMatches = 0xAB97DE6B ; 1.0.1U 0x02365A24 = li r31, 0 ; sellItem -_exit = 0x0238A14C +0x0238A14C = _exit: 0x02389E88 = beq _exit diff --git a/Mods/XenobladeX/XenobladeX_mod_CollectiblesIgnore100th/rules.txt b/src/XenobladeChroniclesX/Mods/CollectiblesIgnore100th/rules.txt similarity index 70% rename from Mods/XenobladeX/XenobladeX_mod_CollectiblesIgnore100th/rules.txt rename to src/XenobladeChroniclesX/Mods/CollectiblesIgnore100th/rules.txt index 6d715d89..2b3b4ba2 100644 --- a/Mods/XenobladeX/XenobladeX_mod_CollectiblesIgnore100th/rules.txt +++ b/src/XenobladeChroniclesX/Mods/CollectiblesIgnore100th/rules.txt @@ -2,6 +2,6 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = "Ignore 100th" path = "Xenoblade Chronicles X/Mods/Collectibles/Ignore 100th" -description = Do not collect if you have 99 of the items, and don't sell it (no preset needed).|More info and help at reddit.com/r/cemu_xenoblade. -version = 4 +description = Do not collect if you have 99 of the items, and don't sell it (no preset needed). +version = 5 \ No newline at end of file diff --git a/Mods/XenobladeX/XenobladeX_mod_EquipmentArmorsCanHave3AugmentSlots/patches.txt b/src/XenobladeChroniclesX/Mods/EquipmentArmorsCanHave3AugmentSlots/patch_aug3slots.asm similarity index 96% rename from Mods/XenobladeX/XenobladeX_mod_EquipmentArmorsCanHave3AugmentSlots/patches.txt rename to src/XenobladeChroniclesX/Mods/EquipmentArmorsCanHave3AugmentSlots/patch_aug3slots.asm index 8f9134bb..788e916f 100644 --- a/Mods/XenobladeX/XenobladeX_mod_EquipmentArmorsCanHave3AugmentSlots/patches.txt +++ b/src/XenobladeChroniclesX/Mods/EquipmentArmorsCanHave3AugmentSlots/patch_aug3slots.asm @@ -15,4 +15,4 @@ moduleMatches = 0x30B6E091 ;1.0.2U [XCX_MAXSLOTS_1U] ###################################################################### moduleMatches = 0xAB97DE6B ; 1.0.1U -0x02A3A9FC = li r0, 3 \ No newline at end of file +0x02A3A98C = li r0, 3 \ No newline at end of file diff --git a/Mods/XenobladeX/XenobladeX_mod_EquipmentArmorsCanHave3AugmentSlots/rules.txt b/src/XenobladeChroniclesX/Mods/EquipmentArmorsCanHave3AugmentSlots/rules.txt similarity index 71% rename from Mods/XenobladeX/XenobladeX_mod_EquipmentArmorsCanHave3AugmentSlots/rules.txt rename to src/XenobladeChroniclesX/Mods/EquipmentArmorsCanHave3AugmentSlots/rules.txt index 88981527..5a3c8d44 100644 --- a/Mods/XenobladeX/XenobladeX_mod_EquipmentArmorsCanHave3AugmentSlots/rules.txt +++ b/src/XenobladeChroniclesX/Mods/EquipmentArmorsCanHave3AugmentSlots/rules.txt @@ -2,5 +2,5 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = "Armors can have 3 augment slots" path = "Xenoblade Chronicles X/Mods/Equipment/Armors can have 3 augment slots" -description = Using L's shop, you can have 3 augment slots on your EQUIPPED armors (ground and skell).|More info and help at reddit.com/r/cemu_xenoblade. -version = 4 +description = Using L's shop, you can have 3 augment slots on your EQUIPPED armors (ground and skell). +version = 5 diff --git a/src/XenobladeChroniclesX/Mods/EquipmentUnlimitedAugmentUpgrades/patch_augup.asm b/src/XenobladeChroniclesX/Mods/EquipmentUnlimitedAugmentUpgrades/patch_augup.asm new file mode 100644 index 00000000..2b321624 --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/EquipmentUnlimitedAugmentUpgrades/patch_augup.asm @@ -0,0 +1,69 @@ +[XCX_UPGRADENOLIMIT_ALL] ################################################################ +moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U + +.origin = codecave + +.int $checkSelectItem +.int $checkStrengthen + +VarUpgradeCount: +.int 0 + +SaveUpgradeCount: +lis r30, VarUpgradeCount@ha +stw r12, VarUpgradeCount@l(r30) +mr r30, r3 +blr + +CtrlUpgradeCount: +cmpwi r3, 0 +beqlr +lis r3, VarUpgradeCount@ha +lwz r3, VarUpgradeCount@l(r3) +cmpwi r3, 0xF +blr + +[XCX_UPGRADENOLIMIT_1E] ################################################################ +moduleMatches = 0xF882D5CF ; 1.0.1E + +; ---------------------------------------------------------------------------- +; WHO : menu::MenuArmsCompanyAffixSelectItem::CheckAffixStrengthen +; WHAT : Unlimited upgrades (equipment selection menu) + +0x02A6DCA8 = li r3, 0 ; Ignore upgrades counter +0x02A6DFFC = li r3, $checkSelectItem + +; ---------------------------------------------------------------------------- +; WHO : menu::MenuArmsCompanyAffixStrengthen::CheckAffixStrengthen +; WHAT : Unlimited upgrades (affix selection menu) + +0x02A72134 = li r10, 99 ; Ignore upgrades counter +0x02A723B4 = li r3, $checkStrengthen + +0x02A71F38 = bla SaveUpgradeCount +0x02A7218C = bla CtrlUpgradeCount + +[XCX_UPGRADENOLIMIT_2U] ################################################################ +moduleMatches = 0x30B6E091 ; 1.0.2U + + +0x02A6DC98 = li r3, 0 +0x02A6DFEC = li r3, $checkSelectItem + +0x02A72124 = li r10, 99 +0x02A723A4 = li r3, $checkStrengthen + +0x02A71F28 = bla SaveUpgradeCount +0x02A7217C = bla CtrlUpgradeCount + +[XCX_UPGRADENOLIMIT_1U] ################################################################ +moduleMatches = 0xAB97DE6B ; 1.0.1U + +0x02A6DC1C = li r3, 0 ; Ignore upgrades counter +0x02A6DF70 = li r3, $checkSelectItem + +0x02A720A8 = li r10, 99 ; Ignore upgrades counter +0x02A72328 = li r3, $checkStrengthen + +0x02A71EAC = bla SaveUpgradeCount +0x02A72100 = bla CtrlUpgradeCount diff --git a/Mods/XenobladeX/XenobladeX_mod_EquipmentUnlimitedAugmentUpgrades/rules.txt b/src/XenobladeChroniclesX/Mods/EquipmentUnlimitedAugmentUpgrades/rules.txt similarity index 83% rename from Mods/XenobladeX/XenobladeX_mod_EquipmentUnlimitedAugmentUpgrades/rules.txt rename to src/XenobladeChroniclesX/Mods/EquipmentUnlimitedAugmentUpgrades/rules.txt index c517c907..2e072adc 100644 --- a/Mods/XenobladeX/XenobladeX_mod_EquipmentUnlimitedAugmentUpgrades/rules.txt +++ b/src/XenobladeChroniclesX/Mods/EquipmentUnlimitedAugmentUpgrades/rules.txt @@ -2,13 +2,15 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = "Unlimited augment upgrades" path = "Xenoblade Chronicles X/Mods/Equipment/Unlimited augment upgrades" -description = You can upgrade infinitely all the augments inside a piece of equipment.|More info and help at reddit.com/r/cemu_xenoblade. -version = 4 +description = You can upgrade infinitely all the augments inside a piece of equipment. +version = 5 + +[Default] +$checkSelectItem = 5 +$checkStrengthen = 7 [Preset] name = "Normal" -$checkSelectItem = 5 -$checkStrengthen = 7 [Preset] name = "CHEAT - Ignore Miranium and resources requirements" diff --git a/src/XenobladeChroniclesX/Mods/EquipmentUnlockAugments/patch_unlockaug.asm b/src/XenobladeChroniclesX/Mods/EquipmentUnlockAugments/patch_unlockaug.asm new file mode 100644 index 00000000..3d7d787d --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/EquipmentUnlockAugments/patch_unlockaug.asm @@ -0,0 +1,61 @@ +[XCX_UNLOCKAUGMENTS_ALL] ################################################################ +moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U + +.origin = codecave + +.int $checkIgnoreMiranium +.int $checkIgnoreMaterials + +ChangeMaterialsQuantity: + stw r3, 0xC(r1) + lbz r3, 0xC(r1) + cmpwi r3, 32 + blt next_cmq + li r3, 12 +next_cmq: + cmpwi r3, 16 + blt exit_cmq + li r3, 10 +exit_cmq: + stb r3, 0xC(r1) + blr + +[XCX_UNLOCKAUGMENTS_1E] ################################################################ +moduleMatches = 0xF882D5CF ; 1.0.1E + +; ---------------------------------------------------------------------------- +; WHO : menu::MenuArmsCompanyDeviceList::CheckEnableCreateByDeviceID +; WHAT : Unlimited augments + +0x02A817A0 = li r3, 0 ; all augments are known +0x02A817C8 = li r3, $checkIgnoreMiranium ; ignore miranium requirement +0x02A81A3C = li r3, $checkIgnoreMaterials ; ignore materials requirement + +0x02A81404 = bla ChangeMaterialsQuantity +0x02A81408 = cmpwi r31, 0 +0x02A81478 = bla ChangeMaterialsQuantity +0x02A814E4 = bla ChangeMaterialsQuantity + +[XCX_UNLOCKAUGMENTS_2U] ################################################################ +moduleMatches = 0x30B6E091 ; 1.0.2U + +0x02A81790 = li r3, 0 +0x02A817B8 = li r3, $checkIgnoreMiranium +0x02A81A2C = li r3, $checkIgnoreMaterials + +0x02A813F4 = bla ChangeMaterialsQuantity +0x02A813F8 = cmpwi r31, 0 +0x02A81468 = bla ChangeMaterialsQuantity +0x02A814D4 = bla ChangeMaterialsQuantity + +[XCX_UNLOCKAUGMENTS_1U] ################################################################ +moduleMatches = 0xAB97DE6B ; 1.0.1U + +0x02A81714 = li r3, 0 +0x02A8173C = li r3, $checkIgnoreMiranium +0x02A819B0 = li r3, $checkIgnoreMaterials + +0x02A81378 = bla ChangeMaterialsQuantity +0x02A8137C = cmpwi r31, 0 +0x02A813EC = bla ChangeMaterialsQuantity +0x02A81458 = bla ChangeMaterialsQuantity diff --git a/Mods/XenobladeX/XenobladeX_mod_EquipmentUnlockAugments/rules.txt b/src/XenobladeChroniclesX/Mods/EquipmentUnlockAugments/rules.txt similarity index 64% rename from Mods/XenobladeX/XenobladeX_mod_EquipmentUnlockAugments/rules.txt rename to src/XenobladeChroniclesX/Mods/EquipmentUnlockAugments/rules.txt index b8b8a9b4..6818b262 100644 --- a/Mods/XenobladeX/XenobladeX_mod_EquipmentUnlockAugments/rules.txt +++ b/src/XenobladeChroniclesX/Mods/EquipmentUnlockAugments/rules.txt @@ -2,16 +2,18 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = "Unlock all augments" path = "Xenoblade Chronicles X/Mods/Equipment/Unlock all augments" -description = All the augments are already known at the shop, and with the CHEAT preset they cost nothing.|More info and help at reddit.com/r/cemu_xenoblade. -version = 4 +description = All the augments are already known at the shop, and with the CHEAT preset they cost nothing. +version = 5 + +[Default] +$checkIgnoreMiranium = 5 +$checkIgnoreMaterials = 6 [Preset] name = "Normal" -$checkIgnore = 5 -$checkIgnoreEnd = 7 [Preset] name = "CHEAT - Ignore Miranium and resources requirements" -$checkIgnore = 0 -$checkIgnoreEnd = 0 +$checkIgnoreMiranium = 0 +$checkIgnoreMaterials = 0 diff --git a/src/XenobladeChroniclesX/Mods/ExpBattlePointsX/patch_exp_battle.asm b/src/XenobladeChroniclesX/Mods/ExpBattlePointsX/patch_exp_battle.asm new file mode 100644 index 00000000..51dcff6f --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/ExpBattlePointsX/patch_exp_battle.asm @@ -0,0 +1,100 @@ +[XCX_BATTLEPOINTSX_ALL] ############################################################################ +moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U + +.origin = codecave + +.int $mod + +; ---------------------------------------------------------------------------- +; WHO : addClassExpChara__Q2_6Battle14CBattleManagerFUiT1 +; WHAT : Multiply the battle points gained when a new class level is reached + +_exp: +li r3, $mod +mullw r0, r0, r3 +mulli r0, r0, 3 +blr + +; ---------------------------------------------------------------------------- +; WHO : addInnerExpChara__Q2_6Battle14CBattleManagerFUiN21 +; WHAT : Multiply the battle points gained when a new level is reached + +_exp2: +li r4, $mod +mullw r9, r9, r4 +add r11, r11, r9 +blr + +; ---------------------------------------------------------------------------- +; WHO : addTreasure__Q2_3cfs10CfTBoxUtilSFUib +; WHAT : Multiply the battle points given by treasures or exploration + +_expTreasure: +li r3, $mod +mullw r3, r31, r3 +blr + +; ---------------------------------------------------------------------------- +; WHO : addReward__Q2_3cfs11CfSquadUtilSFUiT1 +; WHAT : Multiply the experience points given by Squad missions + +_expSquadValue: +li r4, $mod +mullw r3, r3, r4 +stw r3, 0x1C(r1) +blr + +; ---------------------------------------------------------------------------- +; WHO : menu::MenuMultiQuestInfoWindow::displayInfo((menu::MenuObject *,bool)) +; WHAT : Multiply the battle points displayed in quest popup information. + +_dispBefore: +lhz r24, 0x90(r1) +li r25, $mod +mullw r24, r24, r25 +blr + +; ---------------------------------------------------------------------------- +; WHO : menu::MenuMultiQuestResult::setup((void)) +; WHAT : Multiply the battle points displayed in quest popup results. + +_dispAfter: +li r5, $mod +mullw r3, r3, r5 +stw r3, 0x7C(r1) +blr + +[XCX_BATTLEPOINTSX_1E] ############################################################################ +moduleMatches = 0xF882D5CF ; 1.0.1E + +0x020C4A74 = bla _exp +0x020C1C48 = bla _exp2 +0x022D8EDC = bla _expTreasure +0x023CC770 = bla _expSquadValue +0x023CC834 = bla _expSquadValue +0x02B94730 = bla _dispBefore +0x02B9FEE0 = bla _dispAfter + +[XCX_BATTLEPOINTSX_2U] ############################################################################ +moduleMatches = 0x30B6E091 ; 1.0.2U + +.origin = codecave + +0x020C4A74 = bla _exp +0x020C1C48 = bla _exp2 +0x022D8EDC = bla _expTreasure +0x023CC770 = bla _expSquadValue +0x023CC834 = bla _expSquadValue +0x02B94720 = bla _dispBefore +0x02B9FED0 = bla _dispAfter + +[XCX_BATTLEPOINTSX_1U] ############################################################################ +moduleMatches = 0xAB97DE6B ; 1.0.1U + +0x020C4A74 = bla _exp +0x020C1C48 = bla _exp2 +0x022D8E6C = bla _expTreasure +0x023CC700 = bla _expSquadValue +0x023CC700 = bla _expSquadValue +0x02B946A4 = bla _dispBefore +0x02B9FDE0 = bla _dispAfter diff --git a/Mods/XenobladeX/XenobladeX_mod_ExpBattlePointsX/rules.txt b/src/XenobladeChroniclesX/Mods/ExpBattlePointsX/rules.txt similarity index 87% rename from Mods/XenobladeX/XenobladeX_mod_ExpBattlePointsX/rules.txt rename to src/XenobladeChroniclesX/Mods/ExpBattlePointsX/rules.txt index 746f4ccc..67c51e8a 100644 --- a/Mods/XenobladeX/XenobladeX_mod_ExpBattlePointsX/rules.txt +++ b/src/XenobladeChroniclesX/Mods/ExpBattlePointsX/rules.txt @@ -2,12 +2,14 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = "Battle Points X" path = "Xenoblade Chronicles X/Mods/Experience/Battle Points" -description = Change the amount of Battle points gained when a new level (or class level) is reached, when completing missions or exploring.|More info and help at reddit.com/r/cemu_xenoblade. -version = 4 +description = Change the amount of Battle points gained when a new level (or class level) is reached, when completing missions or exploring. +version = 5 + +[Default] +$mod = 2 [Preset] name = "Quantity x2" -$mod = 2 [Preset] name = "Quantity x5" diff --git a/src/XenobladeChroniclesX/Mods/ExpBladePointsX/patch_exp_blade.asm b/src/XenobladeChroniclesX/Mods/ExpBladePointsX/patch_exp_blade.asm new file mode 100644 index 00000000..a10f8506 --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/ExpBladePointsX/patch_exp_blade.asm @@ -0,0 +1,23 @@ +[XCX_BLADEX] +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +.origin = codecave + +.int $mod + +; ---------------------------------------------------------------------------- +; WHO : fw::SocialUnion::getUnionBasePoint((int)) +; WHAT : Multiply the BLADE points rewarded + +0x0288E610 = nop +0x0288E614 = li r3, $mod + +[XCX_BLADEX_1U] ###################################################################### +moduleMatches = 0xAB97DE6B ; 1.0.1U + +.origin = codecave + +.int $mod + +0x0288E594 = nop +0x0288E598 = li r3, $mod \ No newline at end of file diff --git a/Mods/XenobladeX/XenobladeX_mod_ExpBladePointsX/rules.txt b/src/XenobladeChroniclesX/Mods/ExpBladePointsX/rules.txt similarity index 82% rename from Mods/XenobladeX/XenobladeX_mod_ExpBladePointsX/rules.txt rename to src/XenobladeChroniclesX/Mods/ExpBladePointsX/rules.txt index 70300710..92406f19 100644 --- a/Mods/XenobladeX/XenobladeX_mod_ExpBladePointsX/rules.txt +++ b/src/XenobladeChroniclesX/Mods/ExpBladePointsX/rules.txt @@ -2,12 +2,14 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = "BLADE Points X" path = "Xenoblade Chronicles X/Mods/Experience/BLADE Points" -description = Change the amount of BLADE points gained in various situations.|More info and help at reddit.com/r/cemu_xenoblade. -version = 4 +description = Change the amount of BLADE points gained in various situations. +version = 5 + +[Default] +$mod = 2 [Preset] name = "x2" -$mod = 2 [Preset] name = "x5" diff --git a/src/XenobladeChroniclesX/Mods/ExpClassExpPointsX/patch_exp_class.asm b/src/XenobladeChroniclesX/Mods/ExpClassExpPointsX/patch_exp_class.asm new file mode 100644 index 00000000..20ce34a3 --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/ExpClassExpPointsX/patch_exp_class.asm @@ -0,0 +1,68 @@ +[XCX_CLASSEXPX] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U + +.origin = codecave + +.int $mod + +; ---------------------------------------------------------------------------- +; WHO : addClassExpChara__Q2_6Battle14CBattleManagerFUiT1 +; WHAT : Multiply the class experience given during combat + +_expBattle: +li r12, $mod +mullw r31, r3, r12 +blr + +; ---------------------------------------------------------------------------- +; WHO : addReward__Q2_3cfs11CfSquadUtilSFUiT1 +; WHAT : Multiply the experience points given by Squad missions + +_expSquadValue: +li r4, $mod +mullw r3, r3, r4 +stw r3, 0x18(r1) +blr + +_dispBefore: +li r5, $mod +mullw r3, r3, r5 +stw r3, 0x34(r1) +blr + +; ---------------------------------------------------------------------------- +; WHO : menu::MenuMultiQuestResult::setup((void)) +; WHAT : + +_dispAfter: +li r5, $mod +mullw r3, r3, r5 +stw r3, 0x80(r1) +blr + +[XCX_CLASSEXPX_1E] ############################################################################ +moduleMatches = 0xF882D5CF ; 1.0.1E + +0x020C4A28 = bla _expBattle +0x023CC750 = bla _expSquadValue +0x023CC814 = bla _expSquadValue +0x02B91324 = bla _dispBefore +0x02B9FF44 = bla _dispAfter + +[XCX_CLASSEXPX_2U] ############################################################################ +moduleMatches = 0x30B6E091 ; 1.0.2U + +0x020C4A28 = bla _expBattle +0x023CC750 = bla _expSquadValue +0x023CC814 = bla _expSquadValue +0x02B91314 = bla _dispBefore +0x02B9FF34 = bla _dispAfter + +[XCX_CLASSEXPX_1U] ############################################################################ +moduleMatches = 0xAB97DE6B ; 1.0.1U + +0x020C4A28 = bla _expBattle +0x023CC6E0 = bla _expSquadValue +0x023CC7A4 = bla _expSquadValue +0x02B91298 = bla _dispBefore +0x02B9FE44 = bla _dispAfter diff --git a/Mods/XenobladeX/XenobladeX_mod_ExpClassExpPointsX/rules.txt b/src/XenobladeChroniclesX/Mods/ExpClassExpPointsX/rules.txt similarity index 79% rename from Mods/XenobladeX/XenobladeX_mod_ExpClassExpPointsX/rules.txt rename to src/XenobladeChroniclesX/Mods/ExpClassExpPointsX/rules.txt index 1793b84a..603063c3 100644 --- a/Mods/XenobladeX/XenobladeX_mod_ExpClassExpPointsX/rules.txt +++ b/src/XenobladeChroniclesX/Mods/ExpClassExpPointsX/rules.txt @@ -2,12 +2,14 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = "Class Exp Points X" path = "Xenoblade Chronicles X/Mods/Experience/Class Exp Points" -description = Change the amount of Class Exp points gained in battle, missions, quests and exploration.|More info and help at reddit.com/r/cemu_xenoblade. -version = 4 +description = Change the amount of Class Exp points gained in battle, missions, quests and exploration. +version = 5 + +[Default] +$mod = 2 [Preset] name = "x2" -$mod = 2 [Preset] name = "x5" diff --git a/Mods/XenobladeX/XenobladeX_mod_ExpFriendsPointsX/patches.txt b/src/XenobladeChroniclesX/Mods/ExpFriendsPointsX/patch_exp_friend.asm similarity index 72% rename from Mods/XenobladeX/XenobladeX_mod_ExpFriendsPointsX/patches.txt rename to src/XenobladeChroniclesX/Mods/ExpFriendsPointsX/patch_exp_friend.asm index 35ad43c9..31575ff2 100644 --- a/Mods/XenobladeX/XenobladeX_mod_ExpFriendsPointsX/patches.txt +++ b/src/XenobladeChroniclesX/Mods/ExpFriendsPointsX/patch_exp_friend.asm @@ -1,19 +1,13 @@ [XCX_FRIENDPOINTSX] moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U -codeCaveSize = 0x10 +.origin = codecave -0x00000000 = .short $mod -_mod = 0x00000000 - -_exp = 0x00000004 -0x00000004 = lis r31, _mod@ha -0x00000008 = lhz r31, _mod@l(r31) -0x0000000C = blr +.int $mod ; ---------------------------------------------------------------------------- ; WHO : RegistDamage_SoulVoiceLink__Q2_12DamageSystem7FactorySFRCQ2_3cfs30CfHandleKey__tm__11_XCUiL_2_12T1Ui ; WHAT : Gives a lot of friend points when activating a Soul Voice Link during combat ; : BEWARE as this can lead to freeze of the emulator when opening the Affinity Chart (not sure if this is related) -0x02179908 = bla _exp +0x02179908 = li r31, $mod diff --git a/Mods/XenobladeX/XenobladeX_mod_ExpFriendsPointsX/rules.txt b/src/XenobladeChroniclesX/Mods/ExpFriendsPointsX/rules.txt similarity index 80% rename from Mods/XenobladeX/XenobladeX_mod_ExpFriendsPointsX/rules.txt rename to src/XenobladeChroniclesX/Mods/ExpFriendsPointsX/rules.txt index b4843a65..f26dcb66 100644 --- a/Mods/XenobladeX/XenobladeX_mod_ExpFriendsPointsX/rules.txt +++ b/src/XenobladeChroniclesX/Mods/ExpFriendsPointsX/rules.txt @@ -2,12 +2,14 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = "Friends Points X" path = "Xenoblade Chronicles X/Mods/Experience/Friends Points" -description = More Friends points gained when activating a Soul Voice Link during battle.|More info and help at reddit.com/r/cemu_xenoblade. -version = 4 +description = More Friends points gained when activating a Soul Voice Link during battle. +version = 5 + +[Default] +$mod = 100 [Preset] name = "+100" -$mod = 100 [Preset] name = "+250" diff --git a/src/XenobladeChroniclesX/Mods/ExpInnerExpPointsX/patch_exp.asm b/src/XenobladeChroniclesX/Mods/ExpInnerExpPointsX/patch_exp.asm new file mode 100644 index 00000000..6a079bed --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/ExpInnerExpPointsX/patch_exp.asm @@ -0,0 +1,106 @@ +[XCX_EXPX] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U + +.origin = codecave + +.int $mod + +; ---------------------------------------------------------------------------- +; WHO : cfs::CfCompoCtrlEnemy::execRequestCommon +; WHAT : Multiply the experience points given in battles + +_expBattle: +lwz r3, 0x3184(r28) +mulli r3, r3, $mod +stw r3, 0x3184(r28) +mr r3, r28 +blr + +; ---------------------------------------------------------------------------- +; WHO : addTreasure__Q2_3cfs10CfTBoxUtilSFUib +; WHAT : Multiply the experience points given by treasures or exploration + +_expTreasure: +li r3, $mod +lhz r31, 0x1C(r1) +mullw r31, r31, r3 +blr + +; ---------------------------------------------------------------------------- +; WHO : addReward__Q2_3cfs11CfQuestUtilSFUiQ2_3cfs17CfQuestRewardType +; WHAT : Multiply the experience points given by quests ? + +_expQuest: +li r4, $mod +mullw r3, r3, r4 +stw r3, 0x60(r1) +blr + +; ---------------------------------------------------------------------------- +; WHO : addReward__Q2_3cfs11CfSquadUtilSFUiT1 +; WHAT : Multiply the experience points given by Squad missions + +_expSquadValue: +li r4, $mod +mullw r3, r3, r4 +stw r3, 0x10(r1) +blr + +; ---------------------------------------------------------------------------- +; WHO : menu::MenuMultiQuestInfoWindow::displayInfo((menu::MenuObject *,bool)) +; WHAT : + +_dispBefore: +lwz r23, 0x88(r1) +li r24, $mod +mullw r23, r23, r24 +blr + +; ---------------------------------------------------------------------------- +; WHO : menu::MenuMultiQuestResult::setup((void)) +; WHAT : + +_dispAfter: +li r5, $mod +mullw r3, r3, r5 +stw r3, 0x78(r1) +blr + +[XCX_EXPX_1E] ############################################################################ +moduleMatches = 0xF882D5CF ; 1.0.1E + +0x025624D4 = bla _expBattle +0x022D8E64 = bla _expTreasure +0x0229560C = bla _expQuest +0x023CC6D4 = bla _expSquadValue +0x02B94700 = bla _dispBefore +0x02B9FDD4 = bla _dispAfter + +; TEST : unlimited exp (no 9999 limit) up to 65535? +0x020C1BC4 = nop + +[XCX_EXPX_2U] ############################################################################ +moduleMatches = 0x30B6E091 ; 1.0.2U + +0x025624D4 = bla _expBattle +0x022D8E64 = bla _expTreasure +0x0229560C = bla _expQuest +0x023CC6D4 = bla _expSquadValue +0x02B946F0 = bla _dispBefore +0x02B9FDC4 = bla _dispAfter + +; TEST : unlimited exp (no 9999 limit) up to 65535? +0x020C1BC4 = nop + +[XCX_EXPX_1U] ############################################################################ +moduleMatches = 0xAB97DE6B ; 1.0.1U + +0x02562464 = bla _expBattle +0x022D8DF4 = bla _expTreasure +0x0229559C = bla _expQuest +0x023CC664 = bla _expSquadValue +0x02B94674 = bla _dispBefore +0x02B9FCD4 = bla _dispAfter + +; TEST : unlimited exp (no 9999 limit) up to 65535? +0x020C1BC4 = nop diff --git a/Mods/XenobladeX/XenobladeX_mod_ExpInnerExpPointsX/rules.txt b/src/XenobladeChroniclesX/Mods/ExpInnerExpPointsX/rules.txt similarity index 76% rename from Mods/XenobladeX/XenobladeX_mod_ExpInnerExpPointsX/rules.txt rename to src/XenobladeChroniclesX/Mods/ExpInnerExpPointsX/rules.txt index 3246d02b..31fbf6e8 100644 --- a/Mods/XenobladeX/XenobladeX_mod_ExpInnerExpPointsX/rules.txt +++ b/src/XenobladeChroniclesX/Mods/ExpInnerExpPointsX/rules.txt @@ -2,12 +2,14 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = "Inner Exp Points" path = "Xenoblade Chronicles X/Mods/Experience/Inner Exp Points" -description = Change the amount of Inner Exp points gained in battle, missions, quests and exploration. [1.0.1E/1.0.2U]|More info and help at reddit.com/r/cemu_xenoblade. -version = 4 +description = Change the amount of Inner Exp points gained in battle, missions, quests and exploration. [1.0.1E/1.0.2U] +version = 5 + +[Default] +$mod = 2 [Preset] name = "x2" -$mod = 2 [Preset] name = "x5" @@ -24,3 +26,7 @@ $mod = 50 [Preset] name = "x100" $mod = 100 + +[Preset] +name = "x1000" +$mod = 1000 \ No newline at end of file diff --git a/Mods/XenobladeX/XenobladeX_FOVSetting/patches.txt b/src/XenobladeChroniclesX/Mods/FOVSetting/patches.txt similarity index 100% rename from Mods/XenobladeX/XenobladeX_FOVSetting/patches.txt rename to src/XenobladeChroniclesX/Mods/FOVSetting/patches.txt diff --git a/Mods/XenobladeX/XenobladeX_FOVSetting/rules.txt b/src/XenobladeChroniclesX/Mods/FOVSetting/rules.txt similarity index 100% rename from Mods/XenobladeX/XenobladeX_FOVSetting/rules.txt rename to src/XenobladeChroniclesX/Mods/FOVSetting/rules.txt diff --git a/src/XenobladeChroniclesX/Mods/FrontierNavProbeMiraniumFrequency/patch_miranium_freq.asm b/src/XenobladeChroniclesX/Mods/FrontierNavProbeMiraniumFrequency/patch_miranium_freq.asm new file mode 100644 index 00000000..98f98476 --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/FrontierNavProbeMiraniumFrequency/patch_miranium_freq.asm @@ -0,0 +1,30 @@ +[XCX_FN_MIR_FREQ_ALL] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U + +.origin = codecave + +.int $mod + +; ---------------------------------------------------------------------------- +; WHAT : changeTime__Q2_4fnet9CFnetTaskFUiT1 +; WHY : Affect the frequency of the FrontierNav income for the Miranium +; Frequency unit is 1 minute (so by default income is every 30 minutes) + +_miranium: +li r8, $mod +addi r10, r3, 1 +divwu r0, r10, r8 +mullw r0, r0, r8 +subf r3, r0, r10 +cmpwi r3, 0 +blr + +[XCX_FN_MIR_FREQ] ################################################################## +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +0x027D5250 = bla _miranium + +[XCX_FN_MIR_FREQ_1U] ################################################################## +moduleMatches = 0xAB97DE6B ; 1.0.1U + +0x027D51F0 = bla _miranium \ No newline at end of file diff --git a/Mods/XenobladeX/XenobladeX_mod_FrontierNavProbeMiraniumFrequency/rules.txt b/src/XenobladeChroniclesX/Mods/FrontierNavProbeMiraniumFrequency/rules.txt similarity index 82% rename from Mods/XenobladeX/XenobladeX_mod_FrontierNavProbeMiraniumFrequency/rules.txt rename to src/XenobladeChroniclesX/Mods/FrontierNavProbeMiraniumFrequency/rules.txt index 8b2461a0..d4677ac5 100644 --- a/Mods/XenobladeX/XenobladeX_mod_FrontierNavProbeMiraniumFrequency/rules.txt +++ b/src/XenobladeChroniclesX/Mods/FrontierNavProbeMiraniumFrequency/rules.txt @@ -2,12 +2,14 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = "Miranium income frequency mod" path = "Xenoblade Chronicles X/Mods/FrontierNav/Miranium income frequency mod" -description = Affect the frequency of the FrontierNav income for the Miranium (Vanilla is every 30 minutes).|More info and help at reddit.com/r/cemu_xenoblade. -version = 4 +description = Affect the frequency of the FrontierNav income for the Miranium (Vanilla is every 30 minutes). +version = 5 + +[Default] +$mod = 1 [Preset] name = "Every minute" -$mod = 1 [Preset] name = "Every 2 minutes" diff --git a/src/XenobladeChroniclesX/Mods/FrontierNavProbeMiraniumQuantity/patch_miranium_qu.asm b/src/XenobladeChroniclesX/Mods/FrontierNavProbeMiraniumQuantity/patch_miranium_qu.asm new file mode 100644 index 00000000..6e0ca00d --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/FrontierNavProbeMiraniumQuantity/patch_miranium_qu.asm @@ -0,0 +1,51 @@ +[XCX_FN_MIR_QTY_ALL] ###################################################################### +moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U + +.origin = codecave + +.int $mod + +; ---------------------------------------------------------------------------- +; WHO : changeTime__Q2_4fnet9CFnetTaskFUiT1 +; WHAT : Affect the quantity of the NavFrontier income for the Miranium + +_miranium: +lwzx r31, r3, r28 +li r4, $mod +mullw r31, r31, r4 +blr + +; ---------------------------------------------------------------------------- +; WHO : fnet::CFnetData::toStorage(const(unsigned int)) +; WHAT : Ignore max quantity + +.int $uncap + +_getMiranium: +li r12, $uncap +cmpwi r12, 0 +addis r12, r30, 1 +beqlr +li r3, 0 +blr + +_ignoreMax: +li r12, $uncap +cmpwi r12, 1 +beqlr +mr r31, r0 +blr + +[XCX_FN_MIR_QTY] ###################################################################### +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +0x027D526C = bla _miranium +0x027D0FF8 = bla _getMiranium +0x027D1030 = bla _ignoreMax + +[XCX_FN_MIR_QTY_1U] ###################################################################### +moduleMatches = 0xAB97DE6B ; 1.0.1U + +0x027D520C = bla _miranium +0x027D0F98 = bla _getMiranium +0x027D0FD0 = bla _ignoreMax diff --git a/Mods/XenobladeX/XenobladeX_mod_FrontierNavProbeMiraniumQuantity/rules.txt b/src/XenobladeChroniclesX/Mods/FrontierNavProbeMiraniumQuantity/rules.txt similarity index 56% rename from Mods/XenobladeX/XenobladeX_mod_FrontierNavProbeMiraniumQuantity/rules.txt rename to src/XenobladeChroniclesX/Mods/FrontierNavProbeMiraniumQuantity/rules.txt index c5972dbf..98f12942 100644 --- a/Mods/XenobladeX/XenobladeX_mod_FrontierNavProbeMiraniumQuantity/rules.txt +++ b/src/XenobladeChroniclesX/Mods/FrontierNavProbeMiraniumQuantity/rules.txt @@ -2,35 +2,42 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = "Miranium income quantity mod" path = "Xenoblade Chronicles X/Mods/FrontierNav/Miranium income quantity mod" -description = Affect the quantity of the FrontierNav income for the Miranium.|More info and help at reddit.com/r/cemu_xenoblade. -version = 4 +description = Affect the quantity of the FrontierNav income for the Miranium. +version = 5 -[Preset] -name = "Miranium x2" +[Default] $mod = 2 $uncap = 0 +[Preset] +name = "Miranium x2" +category = Miranium quantity + [Preset] name = "Miranium x5" +category = Miranium quantity $mod = 5 -$uncap = 0 [Preset] name = "Miranium x10" +category = Miranium quantity $mod = 10 -$uncap = 0 [Preset] -name = "Miranium x10 (Uncapped)" -$mod = 10 -$uncap = 1 - -[Preset] -name = "Miranium x50 (Uncapped)" +name = "Miranium x50" +category = Miranium quantity $mod = 50 -$uncap = 1 [Preset] -name = "Miranium x100 (Uncapped)" +name = "Miranium x100" +category = Miranium quantity $mod = 100 -$uncap = 1 + +[Preset] +name = "Yes" +category = "Capped by BLADE level" + +[Preset] +name = "No" +category = "Capped by BLADE level" +$uncap = 1 \ No newline at end of file diff --git a/src/XenobladeChroniclesX/Mods/FrontierNavProbeMoneyFrequency/patch_money_freq.asm b/src/XenobladeChroniclesX/Mods/FrontierNavProbeMoneyFrequency/patch_money_freq.asm new file mode 100644 index 00000000..913b8fc9 --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/FrontierNavProbeMoneyFrequency/patch_money_freq.asm @@ -0,0 +1,22 @@ +[XCX_FN_MNY_FREQ] +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +.origin = codecave + +.int $mod + +; ---------------------------------------------------------------------------- +; WHAT : changeTime__Q2_4fnet9CFnetTaskFUiT1 +; WHY : Affect the frequency of the NavFrontier income for the money +; Frequency unit is 1 minute (so by default income is every 15 minutes) + +0x027D554C = li r12, $mod + +[XCX_FN_MNY_FREQ_1U] ###################################################################### +moduleMatches = 0xAB97DE6B ; 1.0.1U + +.origin = codecave + +.int $mod + +0x027D54EC = li r12, $mod \ No newline at end of file diff --git a/Mods/XenobladeX/XenobladeX_mod_FrontierNavProbeMoneyFrequency/rules.txt b/src/XenobladeChroniclesX/Mods/FrontierNavProbeMoneyFrequency/rules.txt similarity index 82% rename from Mods/XenobladeX/XenobladeX_mod_FrontierNavProbeMoneyFrequency/rules.txt rename to src/XenobladeChroniclesX/Mods/FrontierNavProbeMoneyFrequency/rules.txt index 496c6957..4a6477d6 100644 --- a/Mods/XenobladeX/XenobladeX_mod_FrontierNavProbeMoneyFrequency/rules.txt +++ b/src/XenobladeChroniclesX/Mods/FrontierNavProbeMoneyFrequency/rules.txt @@ -2,12 +2,14 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = "Money income frequency mod" path = "Xenoblade Chronicles X/Mods/FrontierNav/Money income frequency mod" -description = Affect the frequency of the FrontierNav income for the Money (Vanilla is 15 minutes).|More info and help at reddit.com/r/cemu_xenoblade. -version = 4 +description = Affect the frequency of the FrontierNav income for the Money (Vanilla is 15 minutes). +version = 5 + +[Default] +$mod = 1 [Preset] name = "Every minute" -$mod = 1 [Preset] name = "Every 2 minutes" diff --git a/src/XenobladeChroniclesX/Mods/FrontierNavProbeMoneyQuantity/patch_money_qu.asm b/src/XenobladeChroniclesX/Mods/FrontierNavProbeMoneyQuantity/patch_money_qu.asm new file mode 100644 index 00000000..50979572 --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/FrontierNavProbeMoneyQuantity/patch_money_qu.asm @@ -0,0 +1,21 @@ +[XCX_FN_MNY_QTY_ALL] ###################################################################### +moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U + +.origin = codecave + +.int $mod + +_money: +li r31, $mod +mullw. r31, r31, r3 +blr + +[XCX_FN_MNY_QTY] ###################################################################### +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +0x027D5588 = bla _money + +[XCX_FN_MNY_QTY_1U] ###################################################################### +moduleMatches = 0xAB97DE6B ; 1.0.1U + +0x027D5528 = bla _money diff --git a/Mods/XenobladeX/XenobladeX_mod_FrontierNavProbeMoneyQuantity/rules.txt b/src/XenobladeChroniclesX/Mods/FrontierNavProbeMoneyQuantity/rules.txt similarity index 84% rename from Mods/XenobladeX/XenobladeX_mod_FrontierNavProbeMoneyQuantity/rules.txt rename to src/XenobladeChroniclesX/Mods/FrontierNavProbeMoneyQuantity/rules.txt index ff002866..d6672406 100644 --- a/Mods/XenobladeX/XenobladeX_mod_FrontierNavProbeMoneyQuantity/rules.txt +++ b/src/XenobladeChroniclesX/Mods/FrontierNavProbeMoneyQuantity/rules.txt @@ -2,12 +2,14 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = "Money income quantity mod" path = "Xenoblade Chronicles X/Mods/FrontierNav/Money income quantity mod" -description = Affect the quantity of the FrontierNav income for the Money.|More info and help at reddit.com/r/cemu_xenoblade. -version = 4 +description = Affect the quantity of the FrontierNav income for the Money. +version = 5 + +[Default] +$mod = 2 [Preset] name = "x2" -$mod = 2 [Preset] name = "x5" @@ -25,3 +27,7 @@ $mod = 50 name = "x100" $mod = 100 +[Preset] +name = "x1000" +$mod = 1000 + diff --git a/src/XenobladeChroniclesX/Mods/FrontierNavProbeResourceFrequency/patch_resource_freq.asm b/src/XenobladeChroniclesX/Mods/FrontierNavProbeResourceFrequency/patch_resource_freq.asm new file mode 100644 index 00000000..ef1c29af --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/FrontierNavProbeResourceFrequency/patch_resource_freq.asm @@ -0,0 +1,22 @@ +[XCX_FN_RES_FREQ] ###################################################################### +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +.origin = codecave + +.int $mod + +; ---------------------------------------------------------------------------- +; WHAT : changeTime__Q2_4fnet9CFnetTaskFUiT1 +; WHY : Affect the frequency of the NavFrontier income for the resources +; Frequency unit is 1 minute (so by default income is every 5 minutes) + +0x027D534C = li r12, $mod + +[XCX_FN_RES_FREQ_1U] ###################################################################### +moduleMatches = 0xAB97DE6B ; 1.0.1U + +.origin = codecave + +.int $mod + +0x027D52EC = li r12, $mod diff --git a/Mods/XenobladeX/XenobladeX_mod_FrontierNavProbeResourceFrequency/rules.txt b/src/XenobladeChroniclesX/Mods/FrontierNavProbeResourceFrequency/rules.txt similarity index 79% rename from Mods/XenobladeX/XenobladeX_mod_FrontierNavProbeResourceFrequency/rules.txt rename to src/XenobladeChroniclesX/Mods/FrontierNavProbeResourceFrequency/rules.txt index b21c6fc9..56ea9932 100644 --- a/Mods/XenobladeX/XenobladeX_mod_FrontierNavProbeResourceFrequency/rules.txt +++ b/src/XenobladeChroniclesX/Mods/FrontierNavProbeResourceFrequency/rules.txt @@ -3,12 +3,14 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = "Xenoblade Chronicles X - FrontierNav - Probe income frequency mod" name = "Resources income frequency mod" path = "Xenoblade Chronicles X/Mods/FrontierNav/Resources income frequency mod" -description = Affect the frequency of the FrontierNav income for the resources (Vanilla is every 5 minutes).|More info and help at reddit.com/r/cemu_xenoblade. -version = 4 +description = Affect the frequency of the FrontierNav income for the resources (Vanilla is every 5 minutes). +version = 5 + +[Default] +$mod = 2 [Preset] name = "Every 2 minutes" -$mod = 2 [Preset] name = "Every 1 minute" diff --git a/src/XenobladeChroniclesX/Mods/FrontierNavProbeResourceQuantity/patch_resource_qu.asm b/src/XenobladeChroniclesX/Mods/FrontierNavProbeResourceQuantity/patch_resource_qu.asm new file mode 100644 index 00000000..1418f4d8 --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/FrontierNavProbeResourceQuantity/patch_resource_qu.asm @@ -0,0 +1,27 @@ +[XCX_FN_RES_QTY_ALL] ###################################################################### +moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U + +.origin = codecave + +.int $mod + +; ---------------------------------------------------------------------------- +; WHAT : changeTime__Q2_4fnet9CFnetTaskFUiT1 +; WHY : + +_multCount: +lbz r0, 6(r31) +li r3, $mod +mullw r0, r0, r3 +stb r0, 6(r31) +blr + +[XCX_FN_RES_QTY] ###################################################################### +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +0x027D5428 = bla _multCount + +[XCX_FN_RES_QTY_1U] ###################################################################### +moduleMatches = 0xAB97DE6B ; 1.0.1U + +0x027D53C8 = bla _multCount diff --git a/Mods/XenobladeX/XenobladeX_mod_FrontierNavProbeResourceQuantity/rules.txt b/src/XenobladeChroniclesX/Mods/FrontierNavProbeResourceQuantity/rules.txt similarity index 84% rename from Mods/XenobladeX/XenobladeX_mod_FrontierNavProbeResourceQuantity/rules.txt rename to src/XenobladeChroniclesX/Mods/FrontierNavProbeResourceQuantity/rules.txt index a336a50d..d1e6055e 100644 --- a/Mods/XenobladeX/XenobladeX_mod_FrontierNavProbeResourceQuantity/rules.txt +++ b/src/XenobladeChroniclesX/Mods/FrontierNavProbeResourceQuantity/rules.txt @@ -2,12 +2,14 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = "Resources income quantity mod" path = "Xenoblade Chronicles X/Mods/FrontierNav/Resources income quantity mod" -description = Affect the quantity of the FrontierNav income for the resources.|More info and help at reddit.com/r/cemu_xenoblade. -version = 4 +description = Affect the quantity of the FrontierNav income for the resources. +version = 5 + +[Default] +$mod = 2 [Preset] name = "x2" -$mod = 2 [Preset] name = "x5" diff --git a/src/XenobladeChroniclesX/Mods/GraphicsCameraDistance/patch_camera.asm b/src/XenobladeChroniclesX/Mods/GraphicsCameraDistance/patch_camera.asm new file mode 100644 index 00000000..1f109dd3 --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/GraphicsCameraDistance/patch_camera.asm @@ -0,0 +1,12 @@ +[XCX_CAMERA_DIST] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U + +.origin = codecave + +VarZoom: + .float $mod + +; CamData::CCamDataManager::getParamsZoomDefault((CamData::eTargetTypes, unsigned char)) +0x0222A19C = lis r12, VarZoom@ha +0x0222A1B0 = lfs f1, VarZoom@l(r12) +0x0222A1CC = nop diff --git a/Mods/XenobladeX/XenobladeX_mod_GraphicsCameraDistance/rules.txt b/src/XenobladeChroniclesX/Mods/GraphicsCameraDistance/rules.txt similarity index 75% rename from Mods/XenobladeX/XenobladeX_mod_GraphicsCameraDistance/rules.txt rename to src/XenobladeChroniclesX/Mods/GraphicsCameraDistance/rules.txt index 02dbbce2..94fef5f2 100644 --- a/Mods/XenobladeX/XenobladeX_mod_GraphicsCameraDistance/rules.txt +++ b/src/XenobladeChroniclesX/Mods/GraphicsCameraDistance/rules.txt @@ -2,16 +2,14 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = "Camera mod (distance)" path = "Xenoblade Chronicles X/Mods/Graphics/Camera mod (distance)" -description = Affect the default distance of the camera (Vanilla zoom is 0).|More info and help at reddit.com/r/cemu_xenoblade. -version = 4 +description = Affect the default distance of the camera (Vanilla zoom is 0). +version = 5 -[Preset] -name = "Zoom 0" -$mod = 0.0 +[Default] +$mod = 2.0 [Preset] name = "Zoom 2" -$mod = 2.0 [Preset] name = "Zoom 5" diff --git a/src/XenobladeChroniclesX/Mods/GraphicsNpcInfoBubblesDistance/patch_bubbles.asm b/src/XenobladeChroniclesX/Mods/GraphicsNpcInfoBubblesDistance/patch_bubbles.asm new file mode 100644 index 00000000..8532f71a --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/GraphicsNpcInfoBubblesDistance/patch_bubbles.asm @@ -0,0 +1,76 @@ +[XCX_DISTMOBINFO] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U + +.origin = codecave + +; ---------------------------------------------------------------------------- +; WHAT : cfs::CfPopManagerMobInfo::setupZone((cfs::ZoneTypes)) +; WHY : Initialize view distance for ALL the Mob information to a very high value (filter will be done in setup function) + +_init_react: +lis r3, 0x4300 +addi r3, r3, 0x0000 +mr r5, r27 +blr + +; ---------------------------------------------------------------------------- +; WHAT : cfs::CfMobInfo::setup((void)) +; WHY : Adjust the view distance based on the information type + +_info_default: +cmpwi r6, 2 +beq tes +lhz r8, 0x20(r29) +cmpwi r8, 0x4300 +blt exit_info_default +lis r8, 0x4120 +addi r8, r8, 0x0000 +stw r8, 0x20(r29) +li r6, 0 +tes: +stw r6, 0x40(r29) +exit_info_default: +blr + +_info_obtained: +lhz r8, 0x20(r29) +cmpwi r8, 0x4300 +blt exit_info_obtained +lis r8, 0x4120 +addi r8, r8, 0x0000 +stw r8, 0x20(r29) +li r10, 0 +stw r10, 0x40(r29) +exit_info_obtained: +blr + +[XCX_DISTMOBINFO_ALL] ########################################################### +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +0x02387260 = bla _init_react +0x02386F04 = bla _info_obtained +0x02386F34 = bla _info_default + +; ---------------------------------------------------------------------------- +; WHAT : cfs::CfPopManagerMobInfo::updatePop((ml::CVec3 const &, bool)) + +0x0238EEC0 = nop ; Disable the call of cfs::CfMobInfo::update function (may have side effects) +0x0238EF30 = nop ; Disable altitude check + +; ---------------------------------------------------------------------------- +; WHAT : cfs::CfPopManager::isCheckDoll(const(void)) +; WHY : display bubbles even in skell + +0x0238745C = li r3, 0 + +[XCX_DISTMOBINFO_1U] ########################################################### +moduleMatches = 0xAB97DE6B ; 1.0.1U + +0x023871F0 = bla _init_react +0x02386E94 = bla _info_obtained +0x02386EC4 = bla _info_default + +0x0238EE50 = nop ; Disable the call of cfs::CfMobInfo::update function (may have side effects) +0x0238EEC0 = nop ; Disable altitude check + +0x023873EC = li r3, 0 diff --git a/Mods/XenobladeX/XenobladeX_mod_GraphicsNpcInfoBubblesDistance/rules.txt b/src/XenobladeChroniclesX/Mods/GraphicsNpcInfoBubblesDistance/rules.txt similarity index 76% rename from Mods/XenobladeX/XenobladeX_mod_GraphicsNpcInfoBubblesDistance/rules.txt rename to src/XenobladeChroniclesX/Mods/GraphicsNpcInfoBubblesDistance/rules.txt index fcbf9d30..60264db7 100644 --- a/Mods/XenobladeX/XenobladeX_mod_GraphicsNpcInfoBubblesDistance/rules.txt +++ b/src/XenobladeChroniclesX/Mods/GraphicsNpcInfoBubblesDistance/rules.txt @@ -2,5 +2,5 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = "NPC info bubbles distance mod" path = "Xenoblade Chronicles X/Mods/Graphics/NPC info bubbles distance mod" -description = Increase view distance for yellow information bubbles from NPC.|More info and help at reddit.com/r/cemu_xenoblade. -version = 4 +description = Increase view distance for yellow information bubbles from NPC. +version = 5 \ No newline at end of file diff --git a/src/XenobladeChroniclesX/Mods/HideOfflineLabel/patch_NoOfflineLabel.asm b/src/XenobladeChroniclesX/Mods/HideOfflineLabel/patch_NoOfflineLabel.asm new file mode 100644 index 00000000..2f26139c --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/HideOfflineLabel/patch_NoOfflineLabel.asm @@ -0,0 +1,22 @@ +[XCX_NoOffline_V16J] +moduleMatches = 0x785CA8A9 + +0x100B06DC = nop ; frameIn + + +[XCX_NoOffline_V102J] +moduleMatches = 0x7672271D + +0x100B0B28 = nop ; frameIn + + +[XCX_NoOffline_V100E_V101E] +moduleMatches = 0x218F6E07, 0xF882D5CF + +0x100B0B50 = nop ; frameIn + + +[XCX_NoOffline_V102U] +moduleMatches = 0x30B6E091 + +0x100B0B38 = nop ; frameIn \ No newline at end of file diff --git a/src/XenobladeChroniclesX/Mods/HideOfflineLabel/rules.txt b/src/XenobladeChroniclesX/Mods/HideOfflineLabel/rules.txt new file mode 100644 index 00000000..0bbbcba5 --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/HideOfflineLabel/rules.txt @@ -0,0 +1,6 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = Hide Offline Label +path = "Xenoblade Chronicles X/Mods/Hide Offline Label" +description = Removes offline blinking tag. Does not change the actual online state. +version = 5 \ No newline at end of file diff --git a/Mods/XenobladeX/XenobladeX_mod_HudChangeTimeFromEmanual/patches.txt b/src/XenobladeChroniclesX/Mods/HudChangeTimeFromEmanual/patch_hudtime.asm similarity index 84% rename from Mods/XenobladeX/XenobladeX_mod_HudChangeTimeFromEmanual/patches.txt rename to src/XenobladeChroniclesX/Mods/HudChangeTimeFromEmanual/patch_hudtime.asm index 26d303b5..e2419c22 100644 --- a/Mods/XenobladeX/XenobladeX_mod_HudChangeTimeFromEmanual/patches.txt +++ b/src/XenobladeChroniclesX/Mods/HudChangeTimeFromEmanual/patch_hudtime.asm @@ -6,7 +6,7 @@ moduleMatches = 0xF882D5CF ; 1.0.1E ; WHAT : Replace eManual function with timeManipulate function _openTimeManipulate = 0x02C7A2F0 -_isFinishTM = 0x02C7A4CC # MenuTask::isFinishTimeManipulate((void)) +_isFinishTM = 0x02C7A4CC ; MenuTask::isFinishTimeManipulate((void)) 0x02B83CB4 = bl _openTimeManipulate 0x02B83CCC = bl _openTimeManipulate @@ -19,7 +19,7 @@ _isFinishTM = 0x02C7A4CC # MenuTask::isFinishTimeManipulate((void)) moduleMatches = 0x30B6E091 ; 1.0.2U _openTimeManipulate = 0x02C7A290 -_isFinishTM = 0x02C7A46C # MenuTask::isFinishTimeManipulate((void)) +_isFinishTM = 0x02C7A46C ; MenuTask::isFinishTimeManipulate((void)) 0x02B83CA4 = bl _openTimeManipulate 0x02B83CBC = bl _openTimeManipulate @@ -32,7 +32,7 @@ _isFinishTM = 0x02C7A46C # MenuTask::isFinishTimeManipulate((void)) moduleMatches = 0xAB97DE6B ; 1.0.1U _openTimeManipulate = 0x02C7A118 -_isFinishTM = 0x02C7A2F4 # MenuTask::isFinishTimeManipulate((void)) +_isFinishTM = 0x02C7A2F4 ; MenuTask::isFinishTimeManipulate((void)) 0x02B83C28 = bl _openTimeManipulate 0x02B83C40 = bl _openTimeManipulate diff --git a/Mods/XenobladeX/XenobladeX_mod_HudChangeTimeFromEmanual/rules.txt b/src/XenobladeChroniclesX/Mods/HudChangeTimeFromEmanual/rules.txt similarity index 76% rename from Mods/XenobladeX/XenobladeX_mod_HudChangeTimeFromEmanual/rules.txt rename to src/XenobladeChroniclesX/Mods/HudChangeTimeFromEmanual/rules.txt index d512f802..6f58c98a 100644 --- a/Mods/XenobladeX/XenobladeX_mod_HudChangeTimeFromEmanual/rules.txt +++ b/src/XenobladeChroniclesX/Mods/HudChangeTimeFromEmanual/rules.txt @@ -2,5 +2,5 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = "Change time from eManual" path = "Xenoblade Chronicles X/Mods/HUD/Change time from eManual" -description = Allow to change time from the eManual entry of the main menu.|More info and help at reddit.com/r/cemu_xenoblade. -version = 4 +description = Allow to change time from the eManual entry of the main menu. +version = 5 \ No newline at end of file diff --git a/src/XenobladeChroniclesX/Mods/LootEquipmentsAlternateRandomAffix/patch_randaffix.asm b/src/XenobladeChroniclesX/Mods/LootEquipmentsAlternateRandomAffix/patch_randaffix.asm new file mode 100644 index 00000000..ac78631e --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/LootEquipmentsAlternateRandomAffix/patch_randaffix.asm @@ -0,0 +1,21 @@ +[XCX_LOOT_RANDOM_AFFIX] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U + +.origin = codecave + +; ---------------------------------------------------------------------------- +; WHO : calcAffix__Q2_8ItemDrop16CItemDropManagerFUsRQ2_3mtl32fixed_vector__tm__12_UsXCUiL_1_3 +; WHAT : Affix random truly +; Everything above 80% is capped at 80%, and everything else is set to 20% + +_minDropRate: +lbz r27, 0x0C(r1) +cmpwi r27, 80 +blt percent20 +li r27, 80 +blr +percent20: +li r27, 20 +blr + +0x021AB778 = bla _minDropRate diff --git a/src/XenobladeChroniclesX/Mods/LootEquipmentsAlternateRandomAffix/readme.md b/src/XenobladeChroniclesX/Mods/LootEquipmentsAlternateRandomAffix/readme.md new file mode 100644 index 00000000..e424feba --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/LootEquipmentsAlternateRandomAffix/readme.md @@ -0,0 +1,48 @@ +# About the mod Alternate random augments + +In vanilla, augments have a percent chance to be selected, some of them have 90 or 100%, while others have 10%. +This mod changes that: everything above 80% is capped at 80%, and everything else is set to 50%. +Example, table loot for "Ultra Diamond Spatha": + +| Category | Augment | Rate (%) | +| --------- |:--------------------------| -----:| +| Stat | Melee Accuracy Up | 100 | +| | Melee Attack Up | 10 | +| | Potential Boost | 5 | +| Weapon Mod| Weapon Attack Power Up | 3 | +| | Melee: TP Gain Up | 5 | +| Critical | Critical Chance Up | 5 | +| | Theroid Criticals Up | 10 | +| | Insectoid Criticals Up | 10 | +| | Piscinoid Criticals Up | 10 | +| | Humanoid Criticals Up | 8 | +| | Mechanoid Criticals Up | 10 | +| Attack | Melee: Ether Res Down | 3 | +| | Soft Touch | 100 | +| Art Mod | Arts: Gain TP | 8 | +| Special | Crush: Gain TP | 5 | +| | Night Vision | 10 | + +In vanilla, 2 augments have 100% (Melee Accuracy Up and Soft Touch), which means you're guaranteed to always get **at least one of them** on the loot. That doesn't let much room for the others augments... +Now with the mod, the table loot becomes: + +| Category | Augment | Rate (%) | +| --------- |:--------------------------| -----:| +| Stat | Melee Accuracy Up | 80 | +| | Melee Attack Up | 20 | +| | Potential Boost | 20 | +| Weapon Mod| Weapon Attack Power Up | 20 | +| | Melee: TP Gain Up | 20 | +| Critical | Critical Chance Up | 20 | +| | Theroid Criticals Up | 20 | +| | Insectoid Criticals Up | 20 | +| | Piscinoid Criticals Up | 20 | +| | Humanoid Criticals Up | 20 | +| | Mechanoid Criticals Up | 20 | +| Attack | Melee: Ether Res Down | 20 | +| | Soft Touch | 80 | +| Art Mod | Arts: Gain TP | 20 | +| Special | Crush: Gain TP | 20 | +| | Night Vision | 20 | + +You now have a more random selection of augments. Of course, Melee Accuracy Up and Soft Touch will likely be selected more frequenly than the others, but this is not mandatory anymore, and all the others augments have an equal chance to appear. \ No newline at end of file diff --git a/src/XenobladeChroniclesX/Mods/LootEquipmentsAlternateRandomAffix/rules.txt b/src/XenobladeChroniclesX/Mods/LootEquipmentsAlternateRandomAffix/rules.txt new file mode 100644 index 00000000..b50f912f --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/LootEquipmentsAlternateRandomAffix/rules.txt @@ -0,0 +1,7 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Equipment - Alternate random augment selection" +path = "Xenoblade Chronicles X/Mods/Loot/Equipment - Alternate random augment selection" +description = Alternate random selection for augments. Everything above 80% is capped at 80%, and everything else is set to 20%. +version = 5 + diff --git a/Mods/XenobladeX/XenobladeX_mod_LootEquipmentsBestQuality/patches.txt b/src/XenobladeChroniclesX/Mods/LootEquipmentsBestQuality/patch_quality.asm similarity index 100% rename from Mods/XenobladeX/XenobladeX_mod_LootEquipmentsBestQuality/patches.txt rename to src/XenobladeChroniclesX/Mods/LootEquipmentsBestQuality/patch_quality.asm diff --git a/Mods/XenobladeX/XenobladeX_mod_LootEquipmentsBestQuality/rules.txt b/src/XenobladeChroniclesX/Mods/LootEquipmentsBestQuality/rules.txt similarity index 73% rename from Mods/XenobladeX/XenobladeX_mod_LootEquipmentsBestQuality/rules.txt rename to src/XenobladeChroniclesX/Mods/LootEquipmentsBestQuality/rules.txt index 5d3f6882..5f6f8bd7 100644 --- a/Mods/XenobladeX/XenobladeX_mod_LootEquipmentsBestQuality/rules.txt +++ b/src/XenobladeChroniclesX/Mods/LootEquipmentsBestQuality/rules.txt @@ -2,5 +2,5 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = "Equipment - Best Quality" path = "Xenoblade Chronicles X/Mods/Loot/Equipment - Always the Best Quality (X6X)" -description = Equipment looted is always of the best quality (Prime for ground gear and Intergalactic for Skells) and has always 3 augments and 3 extra free slots (no preset needed).|More info and help at reddit.com/r/cemu_xenoblade. -version = 4 +description = Equipment looted is always of the best quality (Prime for ground gear and Intergalactic for Skells) and has always 3 augments and 3 extra free slots (no preset needed). +version = 5 diff --git a/src/XenobladeChroniclesX/Mods/LootEquipmentsForceCount/patch_count.asm b/src/XenobladeChroniclesX/Mods/LootEquipmentsForceCount/patch_count.asm new file mode 100644 index 00000000..132696f1 --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/LootEquipmentsForceCount/patch_count.asm @@ -0,0 +1,10 @@ +[XCX_LOOT_EQUIPMENT_COUNT] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U + +; ---------------------------------------------------------------------------- +; WHO : ItemDrop::CItemDropManager::calcItemNum((uchar)) +; WHAT : Chances to loot multiples equipments (3 max) + +0x021AB218 = li r3, $cnt3 +0x021AB268 = li r3, $cnt2 +0x021AB2B8 = li r3, $cnt1 diff --git a/Mods/XenobladeX/XenobladeX_mod_LootEquipmentsForceCount/rules.txt b/src/XenobladeChroniclesX/Mods/LootEquipmentsForceCount/rules.txt similarity index 85% rename from Mods/XenobladeX/XenobladeX_mod_LootEquipmentsForceCount/rules.txt rename to src/XenobladeChroniclesX/Mods/LootEquipmentsForceCount/rules.txt index ff582340..c3afe9bd 100644 --- a/Mods/XenobladeX/XenobladeX_mod_LootEquipmentsForceCount/rules.txt +++ b/src/XenobladeChroniclesX/Mods/LootEquipmentsForceCount/rules.txt @@ -2,23 +2,25 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = "Equipment - Force Count" path = "Xenoblade Chronicles X/Mods/Loot/Equipment - Force Count" -description = Force the count of equipment looted in Silver or Gold treasures.|More info and help at reddit.com/r/cemu_xenoblade. -version = 4 +description = Force the count of equipment looted in Silver or Gold treasures. +version = 5 + +[Default] +$cnt3 = 0 +$cnt2 = 0 +$cnt1 = 0 [Preset] name = "Always 3 equipments" -$cnt3 = 0 $cnt2 = 100 $cnt1 = 100 [Preset] name = "Always 2 equipments" $cnt3 = 100 -$cnt2 = 0 $cnt1 = 100 [Preset] name = "Always 1 equipment" $cnt3 = 100 $cnt2 = 100 -$cnt1 = 0 diff --git a/src/XenobladeChroniclesX/Mods/LootEquipmentsForceType/patch_type.asm b/src/XenobladeChroniclesX/Mods/LootEquipmentsForceType/patch_type.asm new file mode 100644 index 00000000..53a9f2f2 --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/LootEquipmentsForceType/patch_type.asm @@ -0,0 +1,66 @@ +[XCX_LOOT_EQUIPMENT_TYPE] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U + +.origin = codecave + +; ---------------------------------------------------------------------------- +; WHO : __CPR98__calcItemTableID__Q2_8ItemDrop16CItemDropManagerFUcRCQ3_J20JJ29J11SCreateInfoRUs +; WHAT : Force some kind of equipment to be looted in Gold chests +; 2 = Ground weapons +; 4 = Ground armors +; 6 = Skell weapons +; 8 = Skell armors + +.int $type + +0x021AEB88 = li r4, $type +0x021AEB5C = li r27, $type + +.int $sub + +; Ground Weapons +_notRand: +li r4, $sub +cmpwi r4, 0 +beq exit_notRand +li r3, 0x64 +exit_notRand: +cmplw r3, r12 +blr + +0x021AC280 = bla _notRand + +_setSubGW: +li r3, $sub +cmpwi r3, 0 +beq exit_setSubGW +subi r30, r3, 1 +exit_setSubGW: +addi r3, r1, 0x54 +blr + +0x021AD6DC = bla _setSubGW + +_setSubGA: +li r3, $sub +cmpwi r3, 0 +beq exit_setSubGA +subi r4, r3, 1 +exit_setSubGA: +addi r3, r1, 0x6C +blr + +0x021ADD28 = bla _setSubGA + +_setSubSA: +li r3, $sub +cmpwi r3, 0 +beq exit_setSubSA +subi r4, r3, 1 +exit_setSubSA: +addi r3, r1, 0x9C +blr + +0x021AE420 = bla _setSubSA + +;0x021AD9A4 = li r3, 4 ; force index diff --git a/src/XenobladeChroniclesX/Mods/LootEquipmentsForceType/rules.txt b/src/XenobladeChroniclesX/Mods/LootEquipmentsForceType/rules.txt new file mode 100644 index 00000000..e24b1f43 --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/LootEquipmentsForceType/rules.txt @@ -0,0 +1,179 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Equipment - Force Type" +path = "Xenoblade Chronicles X/Mods/Loot/Equipment - Force Type" +description = Force the type of equipment looted. +version = 5 + +[Default] +$type:int = 2 +$sub:int = 0 + +[Preset] ########################################### +name = "Ground Weapons" +category = Equipment Type + +[Preset] +name = "Random" +category = Ground Weapon +condition = $type == 2 + +[Preset] +name = "Photon Sabers" +category = Ground Weapon +condition = $type == 2 +$sub:int = 1 + +[Preset] +name = "Assault Rifles" +category = Ground Weapon +condition = $type == 2 +$sub:int = 2 + +[Preset] +name = "Sniper Rifles" +category = Ground Weapon +condition = $type == 2 +$sub:int = 3 + +[Preset] +name = "Dual Guns" +category = Ground Weapon +condition = $type == 2 +$sub:int = 4 + +[Preset] +name = "Gatling Guns" +category = Ground Weapon +condition = $type == 2 +$sub:int = 5 + +[Preset] +name = "Rayguns" +category = Ground Weapon +condition = $type == 2 +$sub:int = 6 + +[Preset] +name = "Psycho Launchers" +category = Ground Weapon +condition = $type == 2 +$sub:int = 7 + +[Preset] +name = "Longswords" +category = Ground Weapon +condition = $type == 2 +$sub:int = 8 + +[Preset] +name = "Javelins" +category = Ground Weapon +condition = $type == 2 +$sub:int = 9 + +[Preset] +name = "Dual Swords" +category = Ground Weapon +condition = $type == 2 +$sub:int = 10 + +[Preset] +name = "Shields" +category = Ground Weapon +condition = $type == 2 +$sub:int = 11 + +[Preset] +name = "Knives" +category = Ground Weapon +condition = $type == 2 +$sub:int = 12 + +[Preset] ########################################### +name = "Ground Armors" +category = Equipment Type +$type:int = 4 + +[Preset] +name = "Random" +category = Ground Armor +condition = $type == 4 + +[Preset] +name = "Head" +category = Ground Armor +condition = $type == 4 +$sub:int = 1 + +[Preset] +name = "Torso" +category = Ground Armor +condition = $type == 4 +$sub:int = 2 + +[Preset] +name = "Right arm" +category = Ground Armor +condition = $type == 4 +$sub:int = 3 + +[Preset] +name = "Left arm" +category = Ground Armor +condition = $type == 4 +$sub:int = 4 + +[Preset] +name = "Leg" +category = Ground Armor +condition = $type == 4 +$sub:int = 5 + +[Preset] ########################################### +name = "Skell weapons (random only)" +category = Equipment Type +$type:int = 6 + +[Preset] ########################################### +name = "Skell armors" +category = Equipment Type +$type:int = 8 + +[Preset] +name = "Random" +category = Skell Armor +condition = $type == 8 + +[Preset] +name = "Head" +category = Skell Armor +condition = $type == 8 +$sub:int = 1 + +[Preset] +name = "Torso" +category = Skell Armor +condition = $type == 8 +$sub:int = 2 + +[Preset] +name = "Right arm" +category = Skell Armor +condition = $type == 8 +$sub:int = 3 + +[Preset] +name = "Left arm" +category = Skell Armor +condition = $type == 8 +$sub:int = 4 + +[Preset] +name = "Leg" +category = Skell Armor +condition = $type == 8 +$sub:int = 5 + + + diff --git a/Mods/XenobladeX/XenobladeX_mod_LootEquipmentsIgnoreBroken/patches.txt b/src/XenobladeChroniclesX/Mods/LootEquipmentsIgnoreBroken/patch_broken.asm similarity index 100% rename from Mods/XenobladeX/XenobladeX_mod_LootEquipmentsIgnoreBroken/patches.txt rename to src/XenobladeChroniclesX/Mods/LootEquipmentsIgnoreBroken/patch_broken.asm diff --git a/Mods/XenobladeX/XenobladeX_mod_LootEquipmentsIgnoreBroken/rules.txt b/src/XenobladeChroniclesX/Mods/LootEquipmentsIgnoreBroken/rules.txt similarity index 63% rename from Mods/XenobladeX/XenobladeX_mod_LootEquipmentsIgnoreBroken/rules.txt rename to src/XenobladeChroniclesX/Mods/LootEquipmentsIgnoreBroken/rules.txt index 17dda4b0..a9370110 100644 --- a/Mods/XenobladeX/XenobladeX_mod_LootEquipmentsIgnoreBroken/rules.txt +++ b/src/XenobladeChroniclesX/Mods/LootEquipmentsIgnoreBroken/rules.txt @@ -2,6 +2,6 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = "Equipment - Ignore broken" path = "Xenoblade Chronicles X/Mods/Loot/Equipment - Ignore broken" -description = Never get broken equipment.|More info and help at reddit.com/r/cemu_xenoblade. -version = 4 +description = Never get broken equipment. +version = 5 diff --git a/src/XenobladeChroniclesX/Mods/LootMaterialsDrop/patch_materials.asm b/src/XenobladeChroniclesX/Mods/LootMaterialsDrop/patch_materials.asm new file mode 100644 index 00000000..800d5df5 --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/LootMaterialsDrop/patch_materials.asm @@ -0,0 +1,73 @@ +[XCX_LOOT_MATERIALS_1E2U] +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +0x030FA650 = _mtRand: + +0x02B09748 = nop +0x02B09788 = nop + +[XCX_LOOT_MATERIALS_1U] +moduleMatches = 0xAB97DE6B ; 1.0.1U + +0x030FA4D4 = _mtRand: + +[XCX_LOOT_MATERIALS] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U + +.origin = codecave + +; ---------------------------------------------------------------------------- +; WHO : __CPR90__calcItemBronze__Q2_8ItemDrop16CItemDropManagerFRQ3_J19JJ28J9SDropInfoUc +; WHAT : Affect the drop ratio of materials + +.int $ratio + +_minDropRate: + li r11, $ratio + li r31, 0 + cmpwi r11, 0 + beqlr + cmpw r31, r11 ; this value is the default drop ratio under which we want to set a new drop ratio (logically equal or greater) + blt newdrop + b compare +newdrop: + mr r31, r11 ; here you set the new drop ratio +compare: + cmpw r3, r31 + blr + +0x021AF5DC = bla _minDropRate ; modify drop ratio for bronze chests +0x021AF614 = bla _minDropRate ; modify drop ratio for silver chests +0x021AF5F8 = bla _minDropRate ; modify drop ratio for gold chests + +; ---------------------------------------------------------------------------- +; WHO : __CPR90__calcItemBronze__Q2_8ItemDrop16CItemDropManagerFRQ3_J19JJ28J9SDropInfoUc +; WHAT : random selection when all materials at 100% and more than 5 + +_saveEquipCnt: + mr r30, r4 + lwz r13, 0xE0(r30) + blr +0x021AF334 = bla _saveEquipCnt + +_fixit: + li r12, 0 + subf r3, r13, r4 ; r13 = equipment count, r4 = all item count, r3 = material count + li r8, 4 + subf r8, r13, r8 + cmpw r3, r8 ; slots 0 to 4-r13 are used by equipment + blelr + li r3, 6 ; 0 equ: rand 0 to 4+1 (+1 for chances: 4/5 = 80%) + mflr r31 + lis r8, _mtRand@ha + addi r8, r8, _mtRand@l + mtctr r8 + bctrl + mtlr r31 + add r3, r3, r13 ; 0+r13 to 4 + cmpwi r3, 4 ; r13 to 4 are the possible slots, others are ignored + bgtlr + mr r4, r3 + blr + +0x021AF620 = bla _fixit diff --git a/Mods/XenobladeX/XenobladeX_mod_LootMaterialsDrop/rules.txt b/src/XenobladeChroniclesX/Mods/LootMaterialsDrop/rules.txt similarity index 80% rename from Mods/XenobladeX/XenobladeX_mod_LootMaterialsDrop/rules.txt rename to src/XenobladeChroniclesX/Mods/LootMaterialsDrop/rules.txt index 77cd3cf5..2f2dc590 100644 --- a/Mods/XenobladeX/XenobladeX_mod_LootMaterialsDrop/rules.txt +++ b/src/XenobladeChroniclesX/Mods/LootMaterialsDrop/rules.txt @@ -2,25 +2,27 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = "Materials - Drop Ratio" path = "Xenoblade Chronicles X/Mods/Loot/Materials - Drop Ratio" -description = Affect the materials minimum drop ratio in the loots.|More info and help at reddit.com/r/cemu_xenoblade. -version = 4 +description = Affect the materials minimum drop ratio in the loots. +version = 5 + +[Default] +$ratio = 100 [Preset] name = "Set minimum drop to 100% (always drop)" -$mod = 100 [Preset] name = "Set minimum drop to 70%" -$mod = 70 +$ratio = 70 [Preset] name = "Set minimum drop to 50%" -$mod = 50 +$ratio = 50 [Preset] name = "Set minimum drop to 30%" -$mod = 30 +$ratio = 30 [Preset] name = "Set minimum drop to 0% (never drop)" -$mod = 0 \ No newline at end of file +$ratio = 0 \ No newline at end of file diff --git a/Mods/XenobladeX/XenobladeX_mod_LootTreasureQuality/patches.txt b/src/XenobladeChroniclesX/Mods/LootTreasureQuality/patch_treasure.asm similarity index 67% rename from Mods/XenobladeX/XenobladeX_mod_LootTreasureQuality/patches.txt rename to src/XenobladeChroniclesX/Mods/LootTreasureQuality/patch_treasure.asm index 53682a17..23c93567 100644 --- a/Mods/XenobladeX/XenobladeX_mod_LootTreasureQuality/patches.txt +++ b/src/XenobladeChroniclesX/Mods/LootTreasureQuality/patch_treasure.asm @@ -1,26 +1,25 @@ [XCX_LOOT_FORCECHEST] moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U -codeCaveSize = 0x3C +.origin = codecave -0x00000000 = .byte $forced -0x00000004 = .byte $treasure -_forced = 0x00000000 -_treasure = 0x00000004 +.int $forced +.int $treasure ; ---------------------------------------------------------------------------- ; WHO : ItemDrop::CItemDropManager::calcRank((unsigned short, int)) ; WHAT : Force the chest quality -_goForced = 0x00000008 -0x00000008 = lis r28, _forced@ha -0x0000000C = lbz r28, _forced@l(r28) -0x00000010 = cmpwi r28, 0xFF -0x00000014 = beq .+0xC -0x00000018 = mr. r28, r28 -0x0000001C = blr -0x00000020 = mr. r28, r3 -0x00000024 = blr +_goForced: +li r28, $treasure +li r4, $forced +cmpwi r4, 1 +bne exit_goForced +mr. r28, r28 +blr +exit_goForced: +mr. r28, r3 +blr 0x021AAFA4 = bla _goForced @@ -34,9 +33,4 @@ _goForced = 0x00000008 ; : 4) No chest at all, exit with no chest (0) ; : --> The mod below only changes this last step. So even if you put value 1 (gold chest), you'll still get a silver chest if the game succeeded the step 2. -_goTreasure = 0x00000030 -0x00000030 = lis r3, _treasure@ha -0x00000034 = lbz r3, _treasure@l(r3) -0x00000038 = blr - -0x21AAF18 = bla _goTreasure ; li r3, 1 ; 0 = nothing (default), 1 = gold, 2 = silver, 3 = bronze +0x21AAF18 = li r3, $treasure diff --git a/Mods/XenobladeX/XenobladeX_mod_LootTreasureQuality/readme.txt b/src/XenobladeChroniclesX/Mods/LootTreasureQuality/readme.txt similarity index 100% rename from Mods/XenobladeX/XenobladeX_mod_LootTreasureQuality/readme.txt rename to src/XenobladeChroniclesX/Mods/LootTreasureQuality/readme.txt diff --git a/src/XenobladeChroniclesX/Mods/LootTreasureQuality/rules.txt b/src/XenobladeChroniclesX/Mods/LootTreasureQuality/rules.txt new file mode 100644 index 00000000..58624a15 --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/LootTreasureQuality/rules.txt @@ -0,0 +1,34 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Treasure Quality" +path = "Xenoblade Chronicles X/Mods/Loot/Treasure Quality" +description = Select the preferred treasure quality you want to loot (see readme.txt for explanation). +version = 5 + +[Default] +$treasure:int = 0 +$forced:int = 0 + +[Preset] +name = "Gold quality" +$treasure:int = 1 + +[Preset] +name = "Silver quality" +$treasure:int = 2 + +[Preset] +name = "Bronze quality" +$treasure:int = 3 + +[Preset] +name = "No treasure" + +[Preset] +name = "Yes" +category = Forced +$forced:int = 1 + +[Preset] +name = "No" +category = Forced diff --git a/src/XenobladeChroniclesX/Mods/MaxItems/patch_maxitems.asm b/src/XenobladeChroniclesX/Mods/MaxItems/patch_maxitems.asm new file mode 100644 index 00000000..d96d71ba --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/MaxItems/patch_maxitems.asm @@ -0,0 +1,45 @@ +[XCX_MAXITEMS] ########################################################## +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +.origin = codecave + +; cfs::CfItemBoxBase::addItem((fw::CItemType::Type, unsigned int, cfs::CfItemHandle &)) --> used to allow more than 99 (if not, auto sell) +0x02362C8C = cmplwi r12, 999 + +; cfs::CfItemBoxBase::canAddItem((fw::CItemType::Type,uint)) --> used in ticket trading window +0x02363108 = cmplwi r12, 999 + +; cfs::CfItemBoxBase::getFreeStackCount((fw::CItemType::Type,uint)) --> returns max quantity allowed to buy +0x023639DC = li r0, 999 ; when some items in stock +0x023639FC = li r0, 999 ; when no item in stock + +_testsub: +lwz r29, 0xC(r1) +cmpwi r3, 255 +ble exit_testsub +li r3, 255 +exit_testsub: +blr + +0x02363A28 = bla _testsub + +[XCX_MAXITEMS_1U] ########################################################## +moduleMatches = 0xAB97DE6B ; 1.0.1U + +.origin = codecave + +0x02362C1C = cmplwi r12, 999 +0x02363098 = cmplwi r12, 999 + +0x0236396C = li r0, 999 ; when some items in stock +0x0236398C = li r0, 999 ; when no item in stock + +_testsub: +lwz r29, 0xC(r1) +cmpwi r3, 255 +ble exit_testsub +li r3, 255 +exit_testsub: +blr + +0x023639B8 = bla _testsub diff --git a/src/XenobladeChroniclesX/Mods/MaxItems/rules.txt b/src/XenobladeChroniclesX/Mods/MaxItems/rules.txt new file mode 100644 index 00000000..04e57fd6 --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/MaxItems/rules.txt @@ -0,0 +1,6 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Max Items" +path = "Xenoblade Chronicles X/Mods/Maximus/Max Items" +description = "Increase maximum items to 999." +version = 5 \ No newline at end of file diff --git a/src/XenobladeChroniclesX/Mods/MaxMoney/patch_maxmoney.asm b/src/XenobladeChroniclesX/Mods/MaxMoney/patch_maxmoney.asm new file mode 100644 index 00000000..48fca31f --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/MaxMoney/patch_maxmoney.asm @@ -0,0 +1,54 @@ +[XCX_MAXMONEY] ############################################################## +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +; fw::Util::addMoney((int)) +0x027F6C28 = lis r12, 0x3B9B +0x027F6C30 = addi r12, r12, -0x3601 +0x027F6C3C = lis r3, 0x3B9B +0x027F6C40 = addi r3, r3, -0x3601 + +; fw::Util::setMoney((unsigned int)) +0x027F6BA8 = lis r4, 0x3B9B +0x027F6BAC = addi r4, r4, -0x3601 + +; fw::Util::setTradeTicket((unsigned int)) +0x027F6D00 = lis r0, 0x3B9A +0x027F6D04 = ori r0, r0, 0xC9FF + +; fw::Util::setMiranium((unsigned int)) +0x027F6D9C = lis r0, 0x3B9A +0x027F6DA0 = ori r0, r0, 0xC9FF + +; fw::Util::addMiranium((int)) +0x027F6DFC = lis r0, 0x3B9A +0x027F6E04 = ori r0, r0, 0xC9FF +0x027F6E14 = lis r12, 0x3B9B +0x027F6E18 = addi r12, r12, -0x3601 + +[XCX_MAXMONEY_1U] ############################################################## +moduleMatches = 0xAB97DE6B ; 1.0.1U + +; fw::Util::addMoney((int)) +0x027F6BAC = lis r12, 0x3B9B +0x027F6BB4 = addi r12, r12, -0x3601 +0x027F6BC0 = lis r3, 0x3B9B +0x027F6BC4 = addi r3, r3, -0x3601 + +; fw::Util::setMoney((unsigned int)) +0x027F6B2C = lis r4, 0x3B9B +0x027F6B30 = addi r4, r4, -0x3601 + +; fw::Util::setTradeTicket((unsigned int)) +0x027F6C84 = lis r0, 0x3B9A +0x027F6C88 = ori r0, r0, 0xC9FF + +; fw::Util::setMiranium((unsigned int)) +0x027F6D20 = lis r0, 0x3B9A +0x027F6D24 = ori r0, r0, 0xC9FF + +; fw::Util::addMiranium((int)) +0x027F6D80 = lis r0, 0x3B9A +0x027F6D88 = ori r0, r0, 0xC9FF +0x027F6D98 = lis r12, 0x3B9B +0x027F6D9C = addi r12, r12, -0x3601 + diff --git a/src/XenobladeChroniclesX/Mods/MaxMoney/rules.txt b/src/XenobladeChroniclesX/Mods/MaxMoney/rules.txt new file mode 100644 index 00000000..8965cae5 --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/MaxMoney/rules.txt @@ -0,0 +1,6 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Max Money" +path = "Xenoblade Chronicles X/Mods/Maximus/Max Money" +description = "Increase maximum money to 999 999 999." +version = 5 \ No newline at end of file diff --git a/src/XenobladeChroniclesX/Mods/MaxTickets/patch_maxtickets.asm b/src/XenobladeChroniclesX/Mods/MaxTickets/patch_maxtickets.asm new file mode 100644 index 00000000..d360c89f --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/MaxTickets/patch_maxtickets.asm @@ -0,0 +1,28 @@ +[XCX_MAXTICKETS_ALL] ########################################################## +moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U + +.origin = codecave + +; cfs::CfSocialManager::getTradeTicketMax(const(void)) +_maxtickets: +cmpwi r3, 10 +blt levels +lis r3, 0x0001 +ori r3, r3, 0x869F +blr +levels: +lwz r3, 0x1EC(r9) +mulli r3, r3, 10 +blr + +[XCX_MAXTICKETS] ########################################################## +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +0x022CA810 = bla _maxtickets +0x022CA834 = bla _maxtickets + +[XCX_MAXTICKETS_1U] ########################################################## +moduleMatches = 0xAB97DE6B ; 1.0.1U + +0x022CA7A0 = bla _maxtickets +0x022CA7C4 = bla _maxtickets diff --git a/src/XenobladeChroniclesX/Mods/MaxTickets/rules.txt b/src/XenobladeChroniclesX/Mods/MaxTickets/rules.txt new file mode 100644 index 00000000..32c94b62 --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/MaxTickets/rules.txt @@ -0,0 +1,6 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Max Tickets" +path = "Xenoblade Chronicles X/Mods/Maximus/Max Tickets" +description = "Maximum reward tickets are multiplied by 10 (up to 99999 at BLADE level 10)." +version = 5 \ No newline at end of file diff --git a/Mods/XenobladeX/XenobladeX_mod_MusicOverdriveDisabled/patches.txt b/src/XenobladeChroniclesX/Mods/MusicOverdriveDisabled/patch_music_overdrive.asm similarity index 76% rename from Mods/XenobladeX/XenobladeX_mod_MusicOverdriveDisabled/patches.txt rename to src/XenobladeChroniclesX/Mods/MusicOverdriveDisabled/patch_music_overdrive.asm index dd93ea42..099f2cb0 100644 --- a/Mods/XenobladeX/XenobladeX_mod_MusicOverdriveDisabled/patches.txt +++ b/src/XenobladeChroniclesX/Mods/MusicOverdriveDisabled/patch_music_overdrive.asm @@ -7,7 +7,7 @@ moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U 0x022AB1F4 = blr -[XCX_BGMNOOVER_1U] ###################################################################### +[XCX_BGMNOOVER_1U] moduleMatches = 0xAB97DE6B ; 1.0.1U -0x022AB184 = blr +0x022AB184 = blr \ No newline at end of file diff --git a/Mods/XenobladeX/XenobladeX_mod_MusicOverdriveDisabled/rules.txt b/src/XenobladeChroniclesX/Mods/MusicOverdriveDisabled/rules.txt similarity index 57% rename from Mods/XenobladeX/XenobladeX_mod_MusicOverdriveDisabled/rules.txt rename to src/XenobladeChroniclesX/Mods/MusicOverdriveDisabled/rules.txt index 919b27fa..82954fc0 100644 --- a/Mods/XenobladeX/XenobladeX_mod_MusicOverdriveDisabled/rules.txt +++ b/src/XenobladeChroniclesX/Mods/MusicOverdriveDisabled/rules.txt @@ -2,5 +2,5 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = "No Overdrive music" path = "Xenoblade Chronicles X/Mods/Music/No Overdrive music" -description = Disable the music when Overdrive is activated.|More info and help at reddit.com/r/cemu_xenoblade. -version = 4 +description = Disable the music when Overdrive is activated. +version = 5 \ No newline at end of file diff --git a/Mods/XenobladeX/XenobladeX_mod_MusicSkellFlightDisabled/patches.txt b/src/XenobladeChroniclesX/Mods/MusicSkellFlightDisabled/patch_music_flight.asm similarity index 75% rename from Mods/XenobladeX/XenobladeX_mod_MusicSkellFlightDisabled/patches.txt rename to src/XenobladeChroniclesX/Mods/MusicSkellFlightDisabled/patch_music_flight.asm index 5a9d23f1..ebae2aa1 100644 --- a/Mods/XenobladeX/XenobladeX_mod_MusicSkellFlightDisabled/patches.txt +++ b/src/XenobladeChroniclesX/Mods/MusicSkellFlightDisabled/patch_music_flight.asm @@ -5,11 +5,11 @@ moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U ; WHO : cfs::CfSoundManager::fbgmUpdate((void)) ; WHAT : Never call function cfs::CfSoundManager::fbgmChangeNameDoll((bool)) so that Skell Flight music is never played -_skip = 0x22A4DD4 +0x022A4DD4 = _skip: 0x022A4DC0 = b _skip -[XCX_BGMNOFLIGHT_1U] ###################################################################### +[XCX_BGMNOFLIGHT_1U] moduleMatches = 0xAB97DE6B ; 1.0.1U -_skip = 0x022A4D64 +0x022A4D64 = _skip: 0x022A4D50 = b _skip diff --git a/Mods/XenobladeX/XenobladeX_mod_MusicSkellFlightDisabled/rules.txt b/src/XenobladeChroniclesX/Mods/MusicSkellFlightDisabled/rules.txt similarity index 60% rename from Mods/XenobladeX/XenobladeX_mod_MusicSkellFlightDisabled/rules.txt rename to src/XenobladeChroniclesX/Mods/MusicSkellFlightDisabled/rules.txt index 03d9c169..0d25c7f5 100644 --- a/Mods/XenobladeX/XenobladeX_mod_MusicSkellFlightDisabled/rules.txt +++ b/src/XenobladeChroniclesX/Mods/MusicSkellFlightDisabled/rules.txt @@ -2,5 +2,5 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = "No Skell Flight music" path = "Xenoblade Chronicles X/Mods/Music/No Skell Flight music" -description = Disable the music when in flight.|More info and help at reddit.com/r/cemu_xenoblade. -version = 4 +description = Disable the music when in flight. +version = 5 \ No newline at end of file diff --git a/src/XenobladeChroniclesX/Mods/PhysicsJumpToTheMoon/patch_jump.asm b/src/XenobladeChroniclesX/Mods/PhysicsJumpToTheMoon/patch_jump.asm new file mode 100644 index 00000000..bd444d14 --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/PhysicsJumpToTheMoon/patch_jump.asm @@ -0,0 +1,39 @@ +[XCX_MOONJUMP] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U + +.origin = codecave + +VarVelocityV: + .float $vert ; vertical velocity (default is 1.00, speedrun is 1.05) +VarVelocityH: + .float $horz ; horizontal velocity (default is 1.00, speedrun is 2.0) + + +_setVelocity: +lis r3, VarVelocityV@ha +lfs f30, VarVelocityV@l(r3) +fdivs f30, f1, f30 +blr + +_setHorizVelocity: +lis r12, VarVelocityH@ha +lfs f31, VarVelocityH@l(r12) +fdivs f31, f1, f31 +blr + +[XCX_MOONJUMP_ALL] +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +0x0264A700 = bla _setVelocity +0x0264C0EC = bla _setHorizVelocity + +; chr::CIL_BaseJump::decideLandingType((void)) +0x024714E0 = li r3, 5 + +[XCX_MOONJUMP_1U] +moduleMatches = 0xAB97DE6B ; 1.0.1U + +0x0264A690 = bla _setVelocity +0x0264C07C = bla _setHorizVelocity + +0x02471470 = li r3, 5 diff --git a/src/XenobladeChroniclesX/Mods/PhysicsJumpToTheMoon/rules.txt b/src/XenobladeChroniclesX/Mods/PhysicsJumpToTheMoon/rules.txt new file mode 100644 index 00000000..a2d7c332 --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/PhysicsJumpToTheMoon/rules.txt @@ -0,0 +1,90 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Jump higher" +path = "Xenoblade Chronicles X/Mods/Physics/Jump to the Moon!" +description = Increase horizontal and vertical velocity of jump (Vanilla values are 1.0 for both). +version = 5 + +[Default] +$horz = 1.0 +$vert = 1.0 + +[Preset] +name = "1.0 (default)" +category = Horizontal Velocity + +[Preset] +name = "1.5" +category = Horizontal Velocity +$horz = 1.5 + +[Preset] +name = "1.6" +category = Horizontal Velocity +$horz = 1.6 + +[Preset] +name = "1.7" +category = Horizontal Velocity +$horz = 1.7 + +[Preset] +name = "1.8" +category = Horizontal Velocity +$horz = 1.8 + +[Preset] +name = "1.9" +category = Horizontal Velocity +$horz = 1.9 + +[Preset] +name = "2.0" +category = Horizontal Velocity +$horz = 2.0 + +[Preset] +name = "2.5" +category = Horizontal Velocity +$horz = 2.5 + +[Preset] +name = "3.0" +category = Horizontal Velocity +$horz = 3.0 + + +[Preset] +name = "1.0 (default)" +category = Vertical Velocity + +[Preset] +name = "1.02" +category = Vertical Velocity +$vert = 1.02 + +[Preset] +name = "1.03" +category = Vertical Velocity +$vert = 1.03 + +[Preset] +name = "1.04" +category = Vertical Velocity +$vert = 1.04 + +[Preset] +name = "1.05" +category = Vertical Velocity +$vert = 1.05 + +[Preset] +name = "1.10" +category = Vertical Velocity +$vert = 1.10 + +[Preset] +name = "2.0" +category = Vertical Velocity +$vert = 2.0 + diff --git a/src/XenobladeChroniclesX/Mods/PhysicsRunForrestRun/patch_run.asm b/src/XenobladeChroniclesX/Mods/PhysicsRunForrestRun/patch_run.asm new file mode 100644 index 00000000..a12b46c7 --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/PhysicsRunForrestRun/patch_run.asm @@ -0,0 +1,25 @@ +[XCX_MOVESPEED] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U + +.origin = codecave + +VarSpeed: + .float $mod ; dash speed (smallest means fastest, default is 1.0) + +_setSpeed: +lis r3, VarSpeed@ha +lfs f13, VarSpeed@l(r3) +fdivs f1, f1, f13 +lwz r3, 0(r31) +blr + +[XCX_MOVESPEED_ALL] +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +; chr::CInnerLabelState::applyFieldMoveWeight((float)) +0x02643330 = bla _setSpeed ; SetVariableFloat(0xBD,float) + +[XCX_MOVESPEED_1U] +moduleMatches = 0xAB97DE6B ; 1.0.1U + +0x026432C0 = bla _setSpeed diff --git a/Mods/XenobladeX/XenobladeX_mod_PhysicsRunForrestRun/rules.txt b/src/XenobladeChroniclesX/Mods/PhysicsRunForrestRun/rules.txt similarity index 68% rename from Mods/XenobladeX/XenobladeX_mod_PhysicsRunForrestRun/rules.txt rename to src/XenobladeChroniclesX/Mods/PhysicsRunForrestRun/rules.txt index 0bf28d88..5db7db52 100644 --- a/Mods/XenobladeX/XenobladeX_mod_PhysicsRunForrestRun/rules.txt +++ b/src/XenobladeChroniclesX/Mods/PhysicsRunForrestRun/rules.txt @@ -2,12 +2,18 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = "Sprint faster" path = "Xenoblade Chronicles X/Mods/Physics/Run Forrest, run!" -description = Increase the speed of sprint.|More info and help at reddit.com/r/cemu_xenoblade. -version = 4 +description = Increase the speed of sprint. +version = 5 + +[Default] +$mod = 0.66 + +[Preset] +name = "Speed x1.25" +$mod = 0.80 [Preset] name = "Speed x1.5" -$mod = 0.75 [Preset] name = "Speed x2" diff --git a/src/XenobladeChroniclesX/Mods/WeatherForceWeather/patch_weather.asm b/src/XenobladeChroniclesX/Mods/WeatherForceWeather/patch_weather.asm new file mode 100644 index 00000000..a6eca194 --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/WeatherForceWeather/patch_weather.asm @@ -0,0 +1,22 @@ +[XCX_CHANGEWEATHER] +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +.origin = codecave + +.int $wtr + +; cfs::CfWtrManager::setWeatherID((unsigned int, int)) +0x0229F0FC = li r28, $wtr + +; cfs::CfWtrManager::update((float)) +0x022B587C = nop + +[XCX_CHANGEWEATHER_1U] +moduleMatches = 0xAB97DE6B ; 1.0.1U + +.origin = codecave + +.int $wtr + +0x0229F08C = li r28, $wtr +0x022B580C = nop diff --git a/src/XenobladeChroniclesX/Mods/WeatherForceWeather/rules.txt b/src/XenobladeChroniclesX/Mods/WeatherForceWeather/rules.txt new file mode 100644 index 00000000..a252e416 --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/WeatherForceWeather/rules.txt @@ -0,0 +1,203 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Force Weather" +path = "Xenoblade Chronicles X/Mods/Weather/Force Weather" +description = Force selected weather. Just select a preset and unload/reload the pack. +version = 5 + +[Default] +$wtr = 1 +$region = 1 + +[Preset] ########################################### +name = "Primordia" +category = Region + +[Preset] +name = "Clear" +category = Weather +condition = $region == 1 + +[Preset] +name = "Rain" +category = Weather +condition = $region == 1 +$wtr = 2 + +[Preset] +name = "Heavy Rain" +category = Weather +condition = $region == 1 +$wtr = 4 + +[Preset] +name = "Thunderstorms" +category = Weather +condition = $region == 1 +$wtr = 5 + +[Preset] +name = "Aurora" +category = Weather +condition = $region == 1 +$wtr = 6 + +[Preset] +name = "Meteor Showers" +category = Weather +condition = $region == 1 +$wtr = 7 + +[Preset] +name = "Rainbow" +category = Weather +condition = $region == 1 +$wtr = 8 + +[Preset] ########################################### +name = "Noctilum" +category = Region +$region = 2 + +[Preset] +name = "Clear" +category = Weather +condition = $region == 2 + +[Preset] +name = "Dense Fog" +category = Weather +condition = $region == 2 +$wtr = 2 + +[Preset] +name = "Rain" +category = Weather +condition = $region == 2 +$wtr = 3 + +[Preset] +name = "Thunderstorms" +category = Weather +condition = $region == 2 +$wtr = 4 + +[Preset] +name = "Energy Mist" +category = Weather +condition = $region == 2 +$wtr = 5 + +[Preset] ########################################### +name = "Oblivia" +category = Region +$region = 3 + +[Preset] +name = "Clear" +category = Weather +condition = $region == 3 + +[Preset] +name = "Rain" +category = Weather +condition = $region == 3 +$wtr = 2 + +[Preset] +name = "Heat Wave" +category = Weather +condition = $region == 3 +$wtr = 3 + +[Preset] +name = "Sandstorms" +category = Weather +condition = $region == 3 +$wtr = 4 + +[Preset] +name = "Electromagnetic Storms" +category = Weather +condition = $region == 3 +$wtr = 6 + +[Preset] +name = "Aurora" +category = Weather +condition = $region == 3 +$wtr = 7 + +[Preset] +name = "Meteor Showers" +category = Weather +condition = $region == 3 +$wtr = 8 + +[Preset] +name = "Rainbow" +category = Weather +condition = $region == 3 +$wtr = 9 + +[Preset] ########################################### +name = "Sylvalum" +category = Region +$region = 4 + +[Preset] +name = "Cloudy" +category = Weather +condition = $region == 4 + +[Preset] +name = "Rising Energy Mist" +category = Weather +condition = $region == 4 +$wtr = 3 + +[Preset] +name = "Spores" +category = Weather +condition = $region == 4 +$wtr = 4 + +[Preset] +name = "Crimson Aurora" +category = Weather +condition = $region == 4 +$wtr = 5 + +[Preset] ########################################### +name = "Cauldros" +category = Region +$region = 5 + +[Preset] +name = "Clear" +category = Weather +condition = $region == 5 + +[Preset] +name = "Cloudy" +category = Weather +condition = $region == 5 +$wtr = 2 + +[Preset] +name = "Electromagnetic Storms" +category = Weather +condition = $region == 5 +$wtr = 4 + +[Preset] +name = "Brimstone Rain" +category = Weather +condition = $region == 5 +$wtr = 5 + +[Preset] +name = "Rainbow" +category = Weather +condition = $region == 5 +$wtr = 6 diff --git a/Mods/XenobladeX/readme.md b/src/XenobladeChroniclesX/Mods/readme.md similarity index 78% rename from Mods/XenobladeX/readme.md rename to src/XenobladeChroniclesX/Mods/readme.md index dae679d5..b909f7d2 100644 --- a/Mods/XenobladeX/readme.md +++ b/src/XenobladeChroniclesX/Mods/readme.md @@ -1,17 +1,20 @@ # Mods for Xenoblade Chronicles X ### Battle mods -- **Automatic Soul Challenges**: The Soul Challenges QTE are hidden and automatically successful (only affect ground battles, not the QTE on Skell binding and destroying). - **Enemy Statistics mod**: Apply a global percent modificator on all enemies stats (HP, Melee Attack, Melee Accuracy, Ranged Attack, Ranged Accuracy, Potential and Evasion). - **Escape distance reducer**: Reduce escape distance needed to lose aggro from enemies. - **Ground Damage multiplicator**: Increase the ground damage dealt by your team (skells not impacted). - **Overdrive unlocked**: Overdrive can be used at the beginning of the game. +- **Soul Challenges - AutoBattles**: The Soul Challenges QTE are hidden and automatically successful (only affect ground battles, not the QTE on Skell binding and destroying). +- **Soul Challenges - Difficulty**: The Soul Challenge's difficulty does not increase over time during a battle. +- **Soul Challenges - Skell restored**: When your Skell is destroyed during battle, it is restored automatically (you may need to fast travel). ### BLADE mods - **DLC quests unlocked**: DLC Support quests are unlocked and accessible as soon as you become a BLADE member. - **Gain Reward Tickets from DLC or Time Attack missions**: Add Exchange Tickets in reward of completing Blade missions. There is 2 presets: one which adds tickets to Time Attack missions (same amount that the experience) and another which adds tickets to DLC missions (amount is money divided by 100). -- **Lv60 skells unlocked (+cheat)**: Unlock the post-game skells and equipment as soon as you become a BLADE member (it also considers you have a Skell Flight License). The "Cheat" preset ignores all requirements for crafting. Yes, that means you can get an Ares 90 for free, right after Chapter 2! +- **Lv60 skells unlocked (+cheat)**: Unlock the post-game skells and equipment as soon as you become a BLADE member (it also considers you have a Skell Flight License). The "Cheat" preset ignores all requirements for crafting, and also the level requirement to use a Skell. Yes, that means you can get an Ares 90 for free, right after Chapter 2! - **More Reward Tickets**: Increase the amount of Tickets you get from Squad tasks and missions. Presets with "uncapped" means they ignore the max amount of Tickets you can have. +- **Offline Global Nemesis missions**: Global Nemesis (both Telethia Plume and Yggralith Zero) are available anytime in the BLADE console. You still need medals to start the battle. - **Offline Squad tasks and missions**: Squad tasks and missions become available for offline play! When the game starts, a Squad quest is randomly selected (with "Random" preset) and the timer is stopped. > Other presets allow to choose a specific tasks list. (c ) stands for collectible and (t) for Tyrant. > With "Random" preset, you can change the tasks list with the main menu, Social entry and "Select Squad" entry. @@ -24,8 +27,7 @@ ### Equipment mods - **Armors can have 3 augment slots**: Using L' shop, you can have a maximum of 3 augment slots on any of your **equipped** ground or skell armor (right now this won't work on unequipped). -- **Unlimited augment upgrades**: Allow you to infinitely upgrade all the augments inside a piece of equipment (as long as you have the resources of course). The "Cheat" preset ignores all requirements. - > **Warning**: with low level armors the max level for augments is 17, if you try to upgrade once more you'll get back to level 1! So far I was unable to understand this strange behavior. +- **Unlimited augment upgrades**: Allow you to upgrade up to **15 times** all the augments inside a piece of equipment (as long as you have the resources of course). The "Cheat" preset ignores all requirements. - **Unlock all augments**: All augments are known in the BLADE shop. As usual, the "Cheat" preset ignores all requirements for crafing (useful for build testing). ### Experience mods @@ -49,6 +51,9 @@ - **Change time at will**: Allow to change time of the day from the eManual entry of the main menu. ### Loot mods +- **Equipment - Alternate random augments**: + > In vanilla, augments have a percent chance to be selected, some of them have 90 or 100%, while others have less than 10%. + > This mod applies following rule: everything above 80% is capped at 80%, and everything else is set to 20%. - **Equipment - Always best quality**: Equipment looted is always at best quality ("Prime" for ground gear and "Intergalactic" for Skells gear), with "X6X" variants and has always 3 augments and 3 extra free slots. - **Equipment - Force count**: Force the number of equipments looted in silver of gold treasures. - **Equipment - Force type**: Force the type of equipment you loot. This mod is designed to make end-game equipment farming easier. **Doesn't work for Skells weapons!** @@ -64,6 +69,12 @@ > FORCED presets bypass the entire process, so that you'll be guaranteed to get gold chests, but the downtime is that **it can break some quests** which require you to loot key items that appear only in bronze or silver treasures! > **My advice**: only use "FORCED" presets for end-game farming. +### Max mods +- **Max Items**: Increase the maximum of items you can get to 999. +- **Max Money**: Increase the maximum of money you can have to 999 999 999. +- **Max Reward Tickets**: Increase the maximum amount of Tickets you can get. At BLADE level 1 to 9, the max is multiplied by 10. At BLADE level 10, the max becomes 99999. +> Those mods must stay enabled or you will lose the extra items and money (let's say you have 320 000 000 money, if you load your game without the mod, you'll only have 99 999 999 money left). + ### Music mods - **No Overdrive music**: Disables the Overdrive music (after some time using Overdrive a lot during battles, I missed the other musics, especially the one from tyrants). - **No Skell Flight music**: Disables the flight music (at the beginning the music is awesome, but after some time I wanted to listen to the field musics again). @@ -76,5 +87,4 @@ - **Force weather**: Force selected weather. Just select a preset and unload/reload the pack. ### Requirements -The most important requirement is of course cemuhook. Mods have been tested and are known to work with cemuhook **0.5.7.3**. -All mods are compatibles with Xenoblade versions **1.0.1E** and **1.0.2U** (some of them with 1.0.1U), and are not supposed to impact savegames but be sure to make save backup just in case! +Since Cemu 1.18, cemuhook is no longer required. Just make sure your game version is **1.0.1E** or **1.0.2U**. diff --git a/Workarounds/XenobladeX_Brightness/3cc7e98f78c258b4_00000000000003ca_ps.txt b/src/XenobladeChroniclesX/Workarounds/Brightness/3cc7e98f78c258b4_00000000000003ca_ps.txt similarity index 53% rename from Workarounds/XenobladeX_Brightness/3cc7e98f78c258b4_00000000000003ca_ps.txt rename to src/XenobladeChroniclesX/Workarounds/Brightness/3cc7e98f78c258b4_00000000000003ca_ps.txt index 4678464c..edd70e6c 100644 --- a/Workarounds/XenobladeX_Brightness/3cc7e98f78c258b4_00000000000003ca_ps.txt +++ b/src/XenobladeChroniclesX/Workarounds/Brightness/3cc7e98f78c258b4_00000000000003ca_ps.txt @@ -1,19 +1,50 @@ -#version 430 +#version 420 #extension GL_ARB_texture_gather : enable -#extension GL_ARB_separate_shader_objects : enable -// shader 3cc7e98f78c258b4 //Brightness fix -// start of shader inputs/outputs, predetermined by Cemu. Do not touch #ifdef VULKAN #define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location) #define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation, std140) #define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation) +#define SET_POSITION(_v) gl_Position = _v; gl_Position.z = (gl_Position.z + gl_Position.w) / 2.0 #define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale.xy,gl_FragCoord.zw) +#define gl_VertexID gl_VertexIndex +#define gl_InstanceID gl_InstanceIndex #else #define ATTR_LAYOUT(__vkSet, __location) layout(location = __location) #define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation, std140) #define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation) +#define SET_POSITION(_v) gl_Position = _v #define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw) #endif +// This shaders was auto-converted from OpenGL to Cemu. + +// shader 3cc7e98f78c258b4 // brightness workaround. +// To-do, .5 is daylight and 1.0 night is wiiu "correct" for nvidia +// changes here in turn "breaks" bloom as they over or under expose depending on day/night + +//old contrasty, or just copy paste clarity +const float gamma = $gamma; // 1.0 is neutral +const float exposure = $exposure; // 1.0 is neutral, first lessen to avoid truncation prob around .25 for radeon. +const float vibrance = $vibrance; // 0.0 is neutral +const float lift = $lift; // 0.0 is neutral. loss of shadow detail +const float postExposure = $postExposure; // 1.0 is neutral, then slightly raise exposure back up. + +vec3 contrasty(vec3 colour){ + vec3 fColour = (colour.xyz); + + fColour = clamp(exposure * fColour, 0.0, 1.0); + fColour = pow(fColour, vec3(1.0 / gamma)); + float luminance = fColour.r*0.299 + fColour.g*0.587 + fColour.b*0.114; + float mn = min(min(fColour.r, fColour.g), fColour.b); + float mx = max(max(fColour.r, fColour.g), fColour.b); + float sat = (1.0 - (mx - mn)) * (1.0 - mx) * luminance * 5.0; + vec3 lightness = vec3((mn + mx) / 2.0); +// vibrance + fColour = mix(fColour, mix(fColour, lightness, -vibrance), sat); + fColour = max(vec3(0.0), fColour + vec3(lift)); + return fColour; +} + + #ifdef VULKAN layout(set = 1, binding = 2) uniform ufBlock { @@ -24,15 +55,21 @@ uniform vec4 uf_fragCoordScale; uniform ivec4 uf_remappedPS[1]; uniform vec2 uf_fragCoordScale; #endif + TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0; TEXTURE_LAYOUT(1, 1, 1) uniform sampler3D textureUnitPS1; layout(location = 0) in vec4 passParameterSem0; layout(location = 0) out vec4 passPixelColor0; -// end of shader inputs/outputs -const float exposure = $exposure; -const float vibrance = $vibrance; -const float postExposure = $postExposure; -const float contrastCurve = $contrastCurve; +// uf_fragCoordScale was moved to the ufBlock +float lineRand(vec2 co) +{ + float a = 12.9898; + float b = 78.233; + float c = 43758.5453; + float dt = dot(co.xy, vec2(a, b)); + float sn = mod(dt, 3.14); + return fract(sin(sn) * c); +} int clampFI32(int v) { @@ -47,65 +84,58 @@ void main() { vec4 R0f = vec4(0.0); vec4 R1f = vec4(0.0); -vec4 R5f = vec4(0.0); vec4 R127f = vec4(0.0); float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f; vec4 PV0f = vec4(0.0), PV1f = vec4(0.0); float PS0f = 0.0, PS1f = 0.0; vec4 tempf = vec4(0.0); float tempResultf; -float tempResultf2; int tempResulti; ivec4 ARi = ivec4(0); bool predResult = true; vec3 cubeMapSTM; int cubeMapFaceId; R0f = passParameterSem0; -R0f.xyz = (texture(textureUnitPS0, R0f.xy).xyz); -R5f.xyzw = texture(textureUnitPS0, passParameterSem0.xy); + +R0f.xyz = (texture(textureUnitPS0, R0f.xy).xyz) * (0.985 -(lineRand(gl_FragCoord.xy)*0.015)); +//R0f.xyz = R0f.xyz - (lineRand(gl_FragCoord.xy)*0.1); // 0 -tempResultf = clamp(intBitsToFloat(uf_remappedPS[0].x), 0.0, exposure); -tempResultf2 = clamp(intBitsToFloat(uf_remappedPS[0].z), 0.0, 1.0); -R127f.x = R0f.z * tempResultf;//intBitsToFloat(uf_remappedPS[0].x); +R0f.xyz = contrasty(R0f.xyz); +R127f.x = R0f.z * intBitsToFloat(uf_remappedPS[0].x); R127f.x = clamp(R127f.x, 0.0, 1.0); -R127f.y = R0f.y * tempResultf; +R127f.y = R0f.y * intBitsToFloat(uf_remappedPS[0].x); R127f.y = clamp(R127f.y, 0.0, 1.0); -PV0f.z = R0f.x * tempResultf; +PV0f.z = R0f.x * intBitsToFloat(uf_remappedPS[0].x); PV0f.z = clamp(PV0f.z, 0.0, 1.0); R1f.w = 1.0; // 1 -tempResultf = max(0.0, PV0f.z); -tempResultf = log2(tempResultf); +tempResultf = log2(PV0f.z); if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F; PS1f = tempResultf; // 2 R127f.z = PS1f * intBitsToFloat(0x3ee8ba2e); -tempResultf = max(0.0, R127f.y); -tempResultf = log2(tempResultf); +tempResultf = log2(R127f.y); if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F; PS0f = tempResultf; // 3 R127f.w = PS0f * intBitsToFloat(0x3ee8ba2e); -tempResultf = max(0.0, R127f.x); -tempResultf = log2(tempResultf); +tempResultf = log2(R127f.x); if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F; PS1f = tempResultf; // 4 R127f.x = PS1f * intBitsToFloat(0x3ee8ba2e); PS0f = exp2(R127f.z); // 5 -R0f.x = (PS0f * tempResultf2 + intBitsToFloat(uf_remappedPS[0].w)); +R0f.x = (PS0f * intBitsToFloat(uf_remappedPS[0].z) + intBitsToFloat(uf_remappedPS[0].w)); PS1f = exp2(R127f.w); // 6 R0f.y = (PS1f * intBitsToFloat(uf_remappedPS[0].z) + intBitsToFloat(uf_remappedPS[0].w)); PS0f = exp2(R127f.x); // 7 R0f.z = (PS0f * intBitsToFloat(uf_remappedPS[0].z) + intBitsToFloat(uf_remappedPS[0].w)); -R0f.xyz = clamp(R0f.xyz, 0.0, 1.0); R1f.xyz = (texture(textureUnitPS1, vec3(R0f.x,R0f.y,R0f.z)).xyz); // export -R5f = mix (R1f,R5f,vibrance)*postExposure; -R5f.xyz = mix(R5f.xyz, smoothstep(0.0, 1.0, R5f.xyz), contrastCurve); -passPixelColor0 = vec4(R5f.x, R5f.y, R5f.z, R5f.w); +//R1f = vec4(pow(R1f.xyz, vec3(1. / gammaPostExposure)), 1.0); +passPixelColor0 = vec4(R1f.x, R1f.y, R1f.z, R1f.w)*postExposure; } diff --git a/src/XenobladeChroniclesX/Workarounds/Brightness/7b9f05b2bd8f3b71_0000000000000079_ps.txt b/src/XenobladeChroniclesX/Workarounds/Brightness/7b9f05b2bd8f3b71_0000000000000079_ps.txt new file mode 100644 index 00000000..a903b15a --- /dev/null +++ b/src/XenobladeChroniclesX/Workarounds/Brightness/7b9f05b2bd8f3b71_0000000000000079_ps.txt @@ -0,0 +1,123 @@ +#version 420 +#extension GL_ARB_texture_gather : enable +#extension GL_ARB_separate_shader_objects : enable +#ifdef VULKAN +#define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location) +#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation, std140) +#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation) +#define SET_POSITION(_v) gl_Position = _v; gl_Position.z = (gl_Position.z + gl_Position.w) / 2.0 +#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale.xy,gl_FragCoord.zw) +#define gl_VertexID gl_VertexIndex +#define gl_InstanceID gl_InstanceIndex +#else +#define ATTR_LAYOUT(__vkSet, __location) layout(location = __location) +#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation, std140) +#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation) +#define SET_POSITION(_v) gl_Position = _v +#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw) +#endif +// This shaders was auto-converted from OpenGL to Cemu. + +// shader 7b9f05b2bd8f3b71 +//skell cockpit brigthtness fix + minor colour tweak to balance broken bloom +const float exposure = $exposure; // 1.0 is neutral, first lessen to avoid truncation prob around .25 for radeon. +const float postExposure = $postExposure; // 1.0 is neutral, then slightly raise exposure back up. +const float gamma = $gamma; // 1.0 is neutral +const float vibrance = $vibrance; // 0.0 is neutral +const float crushContrast = $crushContrast; // 0.0 is neutral. loss of shadow detail + + +#ifdef VULKAN +layout(set = 1, binding = 1) uniform ufBlock +{ +uniform ivec4 uf_remappedPS[1]; +uniform vec4 uf_fragCoordScale; +}; +#else +uniform ivec4 uf_remappedPS[1]; +uniform vec2 uf_fragCoordScale; +#endif +TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0; +layout(location = 0) in vec4 passParameterSem0; +layout(location = 0) out vec4 passPixelColor0; +// uf_fragCoordScale was moved to the ufBlock + + +vec3 contrasty(vec3 colour) { + vec3 fColour = (colour.xyz); + + fColour = clamp(exposure * fColour, 0.0, 1.0); + fColour = pow(fColour, vec3(1.0 / gamma)); + float luminance = fColour.r*0.299 + fColour.g*0.587 + fColour.b*0.114; + float mn = min(min(fColour.r, fColour.g), fColour.b); + float mx = max(max(fColour.r, fColour.g), fColour.b); + float sat = (1.0 - (mx - mn)) * (1.0 - mx) * luminance * 5.0; + vec3 lightness = vec3((mn + mx) / 2.0); + // vibrance + fColour = mix(fColour, mix(fColour, lightness, -vibrance), sat); + fColour = max(vec3(0.0), fColour - vec3(crushContrast)); + return fColour; +} + +int clampFI32(int v) +{ +if( v == 0x7FFFFFFF ) + return floatBitsToInt(1.0); +else if( v == 0xFFFFFFFF ) + return floatBitsToInt(0.0); +return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0)); +} +float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; } +void main() +{ +vec4 R0f = vec4(0.0); +vec4 R126f = vec4(0.0); +vec4 R127f = vec4(0.0); +float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f; +vec4 PV0f = vec4(0.0), PV1f = vec4(0.0); +float PS0f = 0.0, PS1f = 0.0; +vec4 tempf = vec4(0.0); +float tempResultf; +int tempResulti; +ivec4 ARi = ivec4(0); +bool predResult = true; +vec3 cubeMapSTM; +int cubeMapFaceId; +R0f = passParameterSem0; +R0f.xyzw = (texture(textureUnitPS0, R0f.xy).xyzw); +// 0 +R0f.xyz = contrasty(R0f.xyz); + +backupReg0f = R0f.x; +backupReg1f = R0f.w; +PV0f.x = mul_nonIEEE(backupReg0f, intBitsToFloat(uf_remappedPS[0].x)); +R127f.y = mul_nonIEEE(R0f.z, intBitsToFloat(uf_remappedPS[0].x)); +R127f.z = mul_nonIEEE(R0f.y, intBitsToFloat(uf_remappedPS[0].x)); +R0f.w = mul_nonIEEE(backupReg1f, intBitsToFloat(uf_remappedPS[0].x)); +// 1 +tempResultf = log2(PV0f.x); +if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F; +PS1f = tempResultf; +// 2 +R127f.w = PS1f * intBitsToFloat(0x3ee8ba2e); +tempResultf = log2(R127f.z); +if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F; +PS0f = tempResultf; +// 3 +R126f.w = PS0f * intBitsToFloat(0x3ee8ba2e); +tempResultf = log2(R127f.y); +if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F; +PS1f = tempResultf; +// 4 +R127f.x = PS1f * intBitsToFloat(0x3ee8ba2e); +R0f.x = exp2(R127f.w); +PS0f = R0f.x; +// 5 +R0f.y = exp2(R126f.w); +PS1f = R0f.y; +// 6 +R0f.z = exp2(R127f.x); +PS0f = R0f.z; +// export +passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w)*postExposure; +} diff --git a/src/XenobladeChroniclesX/Workarounds/Brightness/bd74794730fc559a_00000000ff249249_ps.txt b/src/XenobladeChroniclesX/Workarounds/Brightness/bd74794730fc559a_00000000ff249249_ps.txt new file mode 100644 index 00000000..62323d4a --- /dev/null +++ b/src/XenobladeChroniclesX/Workarounds/Brightness/bd74794730fc559a_00000000ff249249_ps.txt @@ -0,0 +1,475 @@ +#version 420 +#extension GL_ARB_texture_gather : enable +#extension GL_ARB_separate_shader_objects : enable +#ifdef VULKAN +#define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location) +#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation, std140) +#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation) +#define SET_POSITION(_v) gl_Position = _v; gl_Position.z = (gl_Position.z + gl_Position.w) / 2.0 +#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale.xy,gl_FragCoord.zw) +#define gl_VertexID gl_VertexIndex +#define gl_InstanceID gl_InstanceIndex +#else +#define ATTR_LAYOUT(__vkSet, __location) layout(location = __location) +#define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation, std140) +#define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation) +#define SET_POSITION(_v) gl_Position = _v +#define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw) +#endif +// This shaders was auto-converted from OpenGL to Cemu. + +// shader bd74794730fc559a +//tweak glare, less J.J. Abrams +const float glare = $glare; //reflection on skell, characters, metal objects etc +#ifdef VULKAN +layout(set = 1, binding = 8) uniform ufBlock +{ +uniform ivec4 uf_remappedPS[12]; +uniform vec4 uf_fragCoordScale; +}; +#else +uniform ivec4 uf_remappedPS[12]; +uniform vec2 uf_fragCoordScale; +#endif +TEXTURE_LAYOUT(0, 1, 0) uniform sampler2D textureUnitPS0; +TEXTURE_LAYOUT(1, 1, 1) uniform sampler2D textureUnitPS1; +TEXTURE_LAYOUT(2, 1, 2) uniform sampler2D textureUnitPS2; +TEXTURE_LAYOUT(3, 1, 3) uniform sampler2D textureUnitPS3; +TEXTURE_LAYOUT(4, 1, 4) uniform sampler2D textureUnitPS4; +TEXTURE_LAYOUT(5, 1, 5) uniform sampler2D textureUnitPS5; +TEXTURE_LAYOUT(7, 1, 6) uniform sampler2D textureUnitPS7; +TEXTURE_LAYOUT(9, 1, 7) uniform sampler2D textureUnitPS9; +layout(location = 0) in vec4 passParameterSem0; +layout(location = 1) in vec4 passParameterSem1; +layout(location = 2) in vec4 passParameterSem2; +layout(location = 3) in vec4 passParameterSem3; +layout(location = 0) out vec4 passPixelColor0; +layout(location = 1) out vec4 passPixelColor1; +// uf_fragCoordScale was moved to the ufBlock +int clampFI32(int v) +{ +if( v == 0x7FFFFFFF ) + return floatBitsToInt(1.0); +else if( v == 0xFFFFFFFF ) + return floatBitsToInt(0.0); +return floatBitsToInt(clamp(intBitsToFloat(v), 0.0, 1.0)); +} +float mul_nonIEEE(float a, float b){ if( a == 0.0 || b == 0.0 ) return 0.0; return a*b; } +void main() +{ +vec4 R0f = vec4(0.0); +vec4 R1f = vec4(0.0); +vec4 R2f = vec4(0.0); +vec4 R3f = vec4(0.0); +vec4 R4f = vec4(0.0); +vec4 R5f = vec4(0.0); +vec4 R6f = vec4(0.0); +vec4 R7f = vec4(0.0); +vec4 R8f = vec4(0.0); +vec4 R9f = vec4(0.0); +vec4 R10f = vec4(0.0); +vec4 R11f = vec4(0.0); +vec4 R12f = vec4(0.0); +vec4 R13f = vec4(0.0); +vec4 R123f = vec4(0.0); +vec4 R124f = vec4(0.0); +vec4 R125f = vec4(0.0); +vec4 R126f = vec4(0.0); +vec4 R127f = vec4(0.0); +float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f; +vec4 PV0f = vec4(0.0), PV1f = vec4(0.0); +float PS0f = 0.0, PS1f = 0.0; +vec4 tempf = vec4(0.0); +float tempResultf; +int tempResulti; +ivec4 ARi = ivec4(0); +bool predResult = true; +vec3 cubeMapSTM; +int cubeMapFaceId; +R0f = passParameterSem0; +R1f = passParameterSem1; +R2f = passParameterSem2; +R3f = passParameterSem3; +R4f.xyzw = (texture(textureUnitPS1, R2f.xy).xyzw); +R5f.xy = (texture(textureUnitPS0, R2f.xy).xy); +R6f.x = (texture(textureUnitPS2, R1f.xy).x); +R11f.xyzw = (texture(textureUnitPS3, R2f.xy).xyzw); +R7f.xyzw = (texture(textureUnitPS5, R2f.xy).xyzw); +R0f.x = (texture(textureUnitPS7, R0f.xy).x); +R10f.xyzw = (texture(textureUnitPS4, R2f.xy).xyzw); +// 0 +tempf.x = dot(vec4(R4f.x,R4f.y,R4f.z,-0.0),vec4(intBitsToFloat(0x3e000000),intBitsToFloat(0x41ff0000),intBitsToFloat(0x45fe0100),0.0)); +PV0f.x = tempf.x; +PV0f.y = tempf.x; +PV0f.z = tempf.x; +PV0f.w = tempf.x; +R127f.y = tempf.x; +PS0f = 1.0 / R3f.z; +// 1 +R127f.x = 0.0; +PV1f.y = max(R4f.w, intBitsToFloat(0x3c23d70a)); +R127f.z = -(PV0f.x); +PV1f.w = -(PV0f.x) * PS0f; +PS1f = intBitsToFloat(uf_remappedPS[0].y) + -(0.0); +// 2 +backupReg0f = R127f.y; +R126f.x = mul_nonIEEE(R3f.x, PV1f.w); +PV0f.x = R126f.x; +R127f.y = mul_nonIEEE(R3f.y, PV1f.w); +PV0f.y = R127f.y; +R126f.z = backupReg0f + -(intBitsToFloat(uf_remappedPS[1].x)); +PV0f.w = min(PV1f.y, 1.0); +R125f.y = mul_nonIEEE(R6f.x, PS1f); +PS0f = R125f.y; +// 3 +tempf.x = dot(vec4(PV0f.x,PV0f.y,R127f.z,-0.0),vec4(PV0f.x,PV0f.y,R127f.z,0.0)); +PV1f.x = tempf.x; +PV1f.y = tempf.x; +PV1f.z = tempf.x; +PV1f.w = tempf.x; +R126f.y = PV0f.w * intBitsToFloat(0x41400000); +PS1f = R126f.y; +// 4 +tempf.x = dot(vec4(R5f.x,R5f.y,R127f.x,-0.0),vec4(R5f.x,R5f.y,R5f.y,0.0)); +PV0f.x = tempf.x; +PV0f.y = tempf.x; +PV0f.z = tempf.x; +PV0f.w = tempf.x; +tempResultf = 1.0 / sqrt(PV1f.x); +PS0f = tempResultf; +// 5 +R8f.x = mul_nonIEEE(R126f.x, PS0f); +PV1f.x = R8f.x; +R1f.y = mul_nonIEEE(R127f.y, PS0f); +PV1f.y = R1f.y; +R1f.z = mul_nonIEEE(R127f.z, PS0f); +PV1f.z = R1f.z; +PV1f.w = -(PV0f.x) + 1.0; +R1f.x = exp2(R126f.y); +PS1f = R1f.x; +// 6 +R4f.x = -(PV1f.x) + intBitsToFloat(uf_remappedPS[2].x); +R3f.y = -(PV1f.y) + intBitsToFloat(uf_remappedPS[2].y); +R3f.z = -(PV1f.z) + intBitsToFloat(uf_remappedPS[2].z); +PV0f.w = max(PV1f.w, -(PV1f.w)); +R2f.y = PS1f + 1.0; +PS0f = R2f.y; +// 7 +R2f.x = -(R8f.x) + intBitsToFloat(uf_remappedPS[3].x); +R4f.y = -(R1f.y) + intBitsToFloat(uf_remappedPS[3].y); +R4f.z = -(R1f.z) + intBitsToFloat(uf_remappedPS[3].z); +R127f.w = -(R125f.y) + 1.0; +R0f.z = sqrt(PV0f.w); +PS1f = R0f.z; +// 8 +tempf.x = dot(vec4(R5f.x,R5f.y,PS1f,-0.0),vec4(-(R8f.x),-(R1f.y),-(R1f.z),0.0)); +PV0f.x = tempf.x; +PV0f.y = tempf.x; +PV0f.z = tempf.x; +PV0f.w = tempf.x; +PS0f = mul_nonIEEE(R126f.z, intBitsToFloat(uf_remappedPS[1].y)); +// 9 +backupReg0f = R0f.x; +PV1f.x = PV0f.x + PV0f.x; +PV1f.y = max(PS0f, 0.0); +R123f.z = (mul_nonIEEE(R127f.w,backupReg0f) + R125f.y); +PV1f.z = R123f.z; +PV1f.w = -(R10f.w) + 1.0; +R12f.x = mul_nonIEEE(R10f.x, R10f.w); +PS1f = R12f.x; +// 10 +PV0f.x = R3f.z * R3f.z; +R6f.y = mul_nonIEEE(PV1f.z, PV1f.w); +R123f.z = (mul_nonIEEE(-(PV1f.x),R5f.x) + -(R8f.x))/2.0; +PV0f.z = R123f.z; +R123f.w = (mul_nonIEEE(-(PV1f.x),R5f.y) + -(R1f.y))/2.0; +PV0f.w = R123f.w; +tempResultf = log2(PV1f.y); +if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F; +PS0f = tempResultf; +// 11 +R0f.x = PV0f.z + 0.5; +R0f.y = PV0f.w + 0.5; +R12f.z = mul_nonIEEE(R10f.z, R10f.w); +R4f.w = mul_nonIEEE(PS0f, intBitsToFloat(uf_remappedPS[1].z)); +R3f.x = (R3f.y * R3f.y + PV0f.x); +PS1f = R3f.x; +R9f.xyz = (texture(textureUnitPS9, R0f.xy).xyz); +// 0 +R123f.x = (R4f.x * R4f.x + R3f.x); +PV0f.x = R123f.x; +R12f.y = mul_nonIEEE(R10f.y, R10f.w); +PV0f.z = R4f.z * R4f.z; +R13f.w = 0.0; +R125f.y = exp2(R4f.w); +PS0f = R125f.y; +// 1 +tempf.x = dot(vec4(R2f.x,R4f.y,PV0f.z,-0.0),vec4(R2f.x,R4f.y,1.0,0.0)); +PV1f.x = tempf.x; +PV1f.y = tempf.x; +PV1f.z = tempf.x; +PV1f.w = tempf.x; +tempResultf = 1.0 / sqrt(PV0f.x); +PS1f = tempResultf; +// 2 +backupReg0f = R125f.y; +R126f.x = mul_nonIEEE(R4f.x, PS1f); +R125f.y = mul_nonIEEE(R3f.y, PS1f); +R126f.z = mul_nonIEEE(R3f.z, PS1f); +PV0f.z = R126f.z; +PV0f.w = min(backupReg0f, 1.0); +tempResultf = 1.0 / sqrt(PV1f.x); +PS0f = tempResultf; +// 3 +R127f.x = mul_nonIEEE(R2f.x, PS0f); +R127f.y = mul_nonIEEE(R4f.y, PS0f); +R127f.z = mul_nonIEEE(R4f.z, PS0f); +R0f.w = mul_nonIEEE(PV0f.w, intBitsToFloat(uf_remappedPS[1].w)); +PS1f = mul_nonIEEE(R0f.z, PV0f.z); +// 4 +tempf.x = dot(vec4(R5f.x,R5f.y,PS1f,-0.0),vec4(R126f.x,R125f.y,1.0,0.0)); +tempf.x = clamp(tempf.x, 0.0, 1.0); +PV0f.x = tempf.x; +PV0f.y = tempf.x; +PV0f.z = tempf.x; +PV0f.w = tempf.x; +PS0f = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z), R126f.z); +// 5 +tempf.x = dot(vec4(intBitsToFloat(uf_remappedPS[2].x),intBitsToFloat(uf_remappedPS[2].y),PS0f,-0.0),vec4(R126f.x,R125f.y,1.0,0.0)); +tempf.x = clamp(tempf.x, 0.0, 1.0); +PV1f.x = tempf.x; +PV1f.y = tempf.x; +PV1f.z = tempf.x; +PV1f.w = tempf.x; +tempResultf = log2(PV0f.x); +if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F; +R126f.x = tempResultf; +PS1f = R126f.x; +// 6 +backupReg0f = R0f.z; +tempf.x = dot(vec4(R5f.x,R5f.y,backupReg0f,-0.0),vec4(R127f.x,R127f.y,R127f.z,0.0)); +tempf.x = clamp(tempf.x, 0.0, 1.0); +PV0f.x = tempf.x; +PV0f.y = tempf.x; +PV0f.z = tempf.x; +PV0f.w = tempf.x; +R125f.x = PV1f.x * intBitsToFloat(0x41800000); +PS0f = R125f.x; +// 7 +tempf.x = dot(vec4(intBitsToFloat(uf_remappedPS[3].x),intBitsToFloat(uf_remappedPS[3].y),intBitsToFloat(uf_remappedPS[3].z),-0.0),vec4(R127f.x,R127f.y,R127f.z,0.0)); +tempf.x = clamp(tempf.x, 0.0, 1.0); +PV1f.x = tempf.x; +PV1f.y = tempf.x; +PV1f.z = tempf.x; +PV1f.w = tempf.x; +tempResultf = log2(PV0f.x); +if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F; +PS1f = tempResultf; +// 8 +backupReg0f = R126f.x; +R126f.x = mul_nonIEEE(R1f.x, PS1f); +PV0f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].z), R1f.z); +PV0f.z = PV1f.x * intBitsToFloat(0x41800000); +R127f.w = mul_nonIEEE(R1f.x, backupReg0f); +PS0f = 1.0 / R125f.x; +// 9 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].y),R1f.y) + PV0f.y); +PV1f.x = R123f.x; +PV1f.y = mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].z), R0f.z); +R127f.z = R2f.y * PS0f; +PV1f.w = R11f.z * intBitsToFloat(0x41200000); +PS1f = 1.0 / PV0f.z; +// 10 +R125f.x = R2f.y * PS1f; +R123f.y = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].y),R5f.y) + PV1f.y); +PV0f.y = R123f.y; +R123f.z = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[4].x),R8f.x) + PV1f.x); +PV0f.z = R123f.z; +R123f.w = (R11f.y * intBitsToFloat(0x41200000) + PV1f.w); +PV0f.w = R123f.w; +PS0f = exp2(R127f.w); +// 11 +R123f.x = (mul_nonIEEE(intBitsToFloat(uf_remappedPS[2].x),R5f.x) + PV0f.y); +R123f.x = clamp(R123f.x, 0.0, 1.0); +PV1f.x = R123f.x; +PV1f.y = mul_nonIEEE(PS0f, R127f.z); +PV1f.z = max(PV0f.z, -(PV0f.z)); +R125f.w = (R11f.x * intBitsToFloat(0x41200000) + PV0f.w); +R125f.w = clamp(R125f.w, 0.0, 1.0); +PV1f.w = R125f.w; +PS1f = exp2(R126f.x); +// 12 +backupReg0f = R125f.x; +R125f.x = mul_nonIEEE(PV1f.x, PV1f.y); +R125f.x = clamp(R125f.x, 0.0, 1.0); +R125f.y = -(PV1f.z) + 1.0; +R125f.y = clamp(R125f.y, 0.0, 1.0); +PV0f.y = R125f.y; +R126f.z = mul_nonIEEE(R6f.x, PV1f.x); +R127f.w = mul_nonIEEE(PS1f, backupReg0f); +R124f.x = (mul_nonIEEE(PV1f.w,intBitsToFloat(uf_remappedPS[5].y)) + R11f.x); +PS0f = R124f.x; +// 13 +backupReg0f = R0f.z; +tempf.x = dot(vec4(intBitsToFloat(uf_remappedPS[3].x),intBitsToFloat(uf_remappedPS[3].y),intBitsToFloat(uf_remappedPS[3].z),-0.0),vec4(R5f.x,R5f.y,backupReg0f,0.0)); +tempf.x = clamp(tempf.x, 0.0, 1.0); +PV1f.x = tempf.x; +PV1f.y = tempf.x; +PV1f.z = tempf.x; +PV1f.w = tempf.x; +R126f.w = tempf.x; +tempResultf = log2(PV0f.y); +if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F; +PS1f = tempResultf; +// 14 +backupReg0f = R125f.x; +R125f.x = mul_nonIEEE(PS1f, intBitsToFloat(uf_remappedPS[6].w)); +R127f.y = mul_nonIEEE(R124f.x, R9f.x); +PV0f.z = mul_nonIEEE(PV1f.x, R127f.w); +PV0f.z = clamp(PV0f.z, 0.0, 1.0); +PV0f.w = mul_nonIEEE(backupReg0f, intBitsToFloat(uf_remappedPS[7].w)); +// 15 +backupReg0f = R126f.w; +backupReg0f = R126f.w; +R126f.x = mul_nonIEEE(R126f.w, intBitsToFloat(uf_remappedPS[8].x)); +PV1f.y = mul_nonIEEE(PV0f.z, intBitsToFloat(uf_remappedPS[8].w)); +R127f.z = mul_nonIEEE(R6f.x, PV0f.w); +R126f.w = mul_nonIEEE(backupReg0f, intBitsToFloat(uf_remappedPS[8].y)); +R125f.z = mul_nonIEEE(backupReg0f, intBitsToFloat(uf_remappedPS[8].z)); +PS1f = R125f.z; +// 16 +PV0f.x = mul_nonIEEE(PV1f.y, intBitsToFloat(uf_remappedPS[8].z)); +PV0f.y = mul_nonIEEE(PV1f.y, intBitsToFloat(uf_remappedPS[8].y)); +PV0f.z = mul_nonIEEE(PV1f.y, intBitsToFloat(uf_remappedPS[8].x)); +R4f.w = mul_nonIEEE(R11f.w, R127f.y); +R5f.y = exp2(R125f.x); +PS0f = R5f.y; +// 17 +backupReg0f = R126f.x; +R126f.x = (mul_nonIEEE(R126f.z,intBitsToFloat(uf_remappedPS[7].x)) + backupReg0f); +R123f.y = (mul_nonIEEE(R127f.z,intBitsToFloat(uf_remappedPS[7].z)) + PV0f.x); +PV1f.y = R123f.y; +R123f.z = (mul_nonIEEE(R127f.z,intBitsToFloat(uf_remappedPS[7].y)) + PV0f.y); +PV1f.z = R123f.z; +R123f.w = (mul_nonIEEE(R127f.z,intBitsToFloat(uf_remappedPS[7].x)) + PV0f.z); +PV1f.w = R123f.w; +R125f.x = (mul_nonIEEE(R126f.z,intBitsToFloat(uf_remappedPS[7].y)) + R126f.w); +PS1f = R125f.x; +// 18 +backupReg0f = R126f.z; +R127f.x = (R7f.w * 2.0 + PV1f.w); +R127f.y = (R7f.w * 2.0 + PV1f.y); +R126f.z = (R7f.w * 2.0 + PV1f.z); +R123f.w = (mul_nonIEEE(backupReg0f,intBitsToFloat(uf_remappedPS[7].z)) + R125f.z); +PV0f.w = R123f.w; +R0f.z = (mul_nonIEEE(R125f.w,intBitsToFloat(uf_remappedPS[5].y)) + R11f.y); +PS0f = R0f.z; +// 19 +backupReg0f = R126f.x; +backupReg1f = R125f.w; +backupReg2f = R7f.z; +R126f.x = R5f.y + -(intBitsToFloat(0x3f4ccccd)); +R2f.y = (R7f.x * 2.0 + backupReg0f); +R4f.z = (R7f.y * 2.0 + R125f.x); +R125f.w = (mul_nonIEEE(backupReg1f,intBitsToFloat(uf_remappedPS[5].y)) + R11f.z); +R7f.z = (backupReg2f * 2.0 + PV0f.w); +PS1f = R7f.z; +// 20 +backupReg0f = R1f.y; +tempf.x = dot(vec4(intBitsToFloat(uf_remappedPS[9].x),intBitsToFloat(uf_remappedPS[9].y),intBitsToFloat(uf_remappedPS[9].z),-0.0),vec4(R8f.x,backupReg0f,R1f.z,0.0)); +tempf.x = clamp(tempf.x, 0.0, 1.0); +PV0f.x = tempf.x; +PV0f.y = tempf.x; +PV0f.z = tempf.x; +PV0f.w = tempf.x; +R1f.y = tempf.x; +R4f.y = mul_nonIEEE(R127f.x, R124f.x); +PS0f = R4f.y; +// 21 +R8f.x = mul_nonIEEE(R126f.z, R0f.z); +R7f.y = R126f.x * intBitsToFloat(0x40a00000); +R7f.y = clamp(R7f.y, 0.0, 1.0); +R1f.z = (R125f.y * intBitsToFloat(0x3f733333) + -(R5f.y)); +R7f.w = mul_nonIEEE(R127f.y, R125f.w); +R3f.y = mul_nonIEEE(R125f.w, R9f.z); +PS1f = R3f.y; +// 0 +R126f.x = (mul_nonIEEE(R10f.z,R7f.z) + R7f.w); +R127f.y = (mul_nonIEEE(R1f.z,R7f.y) + R5f.y); +R127f.w = R7f.z + R7f.w; +tempResultf = log2(R1f.y); +if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F; +PS0f = tempResultf; +// 1 +backupReg0f = R0f.z; +R123f.x = (mul_nonIEEE(R10f.x,R2f.y) + R4f.y); +PV1f.x = R123f.x; +R126f.y = R2f.y + R4f.y; +PV1f.z = mul_nonIEEE(backupReg0f, R9f.y); +R125f.w = mul_nonIEEE(PS0f, intBitsToFloat(uf_remappedPS[10].w)); +R127f.x = R4f.z + R8f.x; +PS1f = R127f.x; +// 2 +R123f.x = (mul_nonIEEE(R6f.y,PV1f.x) + R12f.x); +PV0f.x = R123f.x; +R123f.y = (mul_nonIEEE(R10f.y,R4f.z) + R8f.x); +PV0f.y = R123f.y; +R126f.z = mul_nonIEEE(R11f.w, R3f.y); +R126f.w = mul_nonIEEE(R11f.w, PV1f.z); +R125f.y = (mul_nonIEEE(R6f.y,R126f.x) + R12f.z); +PS0f = R125f.y; +// 3 +backupReg0f = R125f.w; +R126f.x = (mul_nonIEEE(R127f.y,intBitsToFloat(uf_remappedPS[6].x)) + intBitsToFloat(uf_remappedPS[11].x)); +R124f.y = (R4f.w * intBitsToFloat(0x40a00000) + PV0f.x); +R123f.z = (mul_nonIEEE(R6f.y,PV0f.y) + R12f.y); +PV1f.z = R123f.z; +R125f.w = (mul_nonIEEE(R127f.y,intBitsToFloat(uf_remappedPS[6].y)) + intBitsToFloat(uf_remappedPS[11].y)); +R125f.z = exp2(backupReg0f); +PS1f = R125f.z; +// 4 +backupReg0f = R127f.y; +R124f.x = (R126f.z * intBitsToFloat(0x40a00000) + R125f.y); +R127f.y = (mul_nonIEEE(R6f.y,R127f.w) + R12f.z); +R123f.z = (mul_nonIEEE(backupReg0f,intBitsToFloat(uf_remappedPS[6].z)) + intBitsToFloat(uf_remappedPS[11].z)); +PV0f.z = R123f.z; +R127f.w = (R126f.w * intBitsToFloat(0x40a00000) + PV1f.z); +// 5 +backupReg0f = R125f.z; +R123f.x = (mul_nonIEEE(R125f.z,intBitsToFloat(uf_remappedPS[10].y)) + R125f.w); +PV1f.x = R123f.x; +R123f.y = (mul_nonIEEE(R125f.z,intBitsToFloat(uf_remappedPS[10].x)) + R126f.x); +PV1f.y = R123f.y; +R125f.z = (mul_nonIEEE(R6f.y,R126f.y) + R12f.x); +R123f.w = (mul_nonIEEE(backupReg0f,intBitsToFloat(uf_remappedPS[10].z)) + PV0f.z); +PV1f.w = R123f.w; +R126f.y = (mul_nonIEEE(R6f.y,R127f.x) + R12f.y); +PS1f = R126f.y; +// 6 +backupReg0f = R127f.y; +R127f.x = -(R124f.x) + PV1f.w; +R127f.y = -(R127f.w) + PV1f.x; +PV0f.z = -(R124f.y) + PV1f.y; +PS0f = backupReg0f * intBitsToFloat(0x3e2aaac1); +// 7 +tempf.x = dot(vec4(R125f.z,R126f.y,PS0f,-0.0),vec4(intBitsToFloat(0x3e2aaac1),intBitsToFloat(0x3e2aaac1),1.0,0.0)); +PV1f.x = tempf.x; +PV1f.y = tempf.x; +PV1f.z = tempf.x; +PV1f.w = tempf.x; +R12f.w = tempf.x; +R13f.x = (mul_nonIEEE(PV0f.z,R0f.w) + R124f.y); +PS1f = R13f.x; +// 8 +R13f.y = (mul_nonIEEE(R127f.y,R0f.w) + R127f.w); +R13f.z = (mul_nonIEEE(R127f.x,R0f.w) + R124f.x); +// 9 +R1f.xyz = vec3(R12f.x,R12f.y,R12f.z); +R1f.w = R12f.w; +// 10 +R0f.xyz = vec3(R13f.x,R13f.y,R13f.z); +R0f.w = R13f.w; +// export +passPixelColor0 = vec4(R0f.x, R0f.y, R0f.z, R0f.w)*glare; //reduce glare +passPixelColor1 = vec4(R1f.x, R1f.y, R1f.z, R1f.w); +} diff --git a/Workarounds/XenobladeX_Brightness/d936195db0dd8e7d_0000000000001e52_ps.txt b/src/XenobladeChroniclesX/Workarounds/Brightness/d936195db0dd8e7d_0000000000001e52_ps.txt similarity index 59% rename from Workarounds/XenobladeX_Brightness/d936195db0dd8e7d_0000000000001e52_ps.txt rename to src/XenobladeChroniclesX/Workarounds/Brightness/d936195db0dd8e7d_0000000000001e52_ps.txt index a92dec1b..2e36df3e 100644 --- a/Workarounds/XenobladeX_Brightness/d936195db0dd8e7d_0000000000001e52_ps.txt +++ b/src/XenobladeChroniclesX/Workarounds/Brightness/d936195db0dd8e7d_0000000000001e52_ps.txt @@ -1,19 +1,50 @@ -#version 430 +#version 420 #extension GL_ARB_texture_gather : enable -#extension GL_ARB_separate_shader_objects : enable -// shader d936195db0dd8e7d //crossfade -// start of shader inputs/outputs, predetermined by Cemu. Do not touch #ifdef VULKAN #define ATTR_LAYOUT(__vkSet, __location) layout(set = __vkSet, location = __location) #define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation, std140) #define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(set = __vkSet, binding = __vkLocation) +#define SET_POSITION(_v) gl_Position = _v; gl_Position.z = (gl_Position.z + gl_Position.w) / 2.0 #define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale.xy,gl_FragCoord.zw) +#define gl_VertexID gl_VertexIndex +#define gl_InstanceID gl_InstanceIndex #else #define ATTR_LAYOUT(__vkSet, __location) layout(location = __location) #define UNIFORM_BUFFER_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation, std140) #define TEXTURE_LAYOUT(__glLocation, __vkSet, __vkLocation) layout(binding = __glLocation) +#define SET_POSITION(_v) gl_Position = _v #define GET_FRAGCOORD() vec4(gl_FragCoord.xy*uf_fragCoordScale,gl_FragCoord.zw) #endif +// This shaders was auto-converted from OpenGL to Cemu. + +// shader d936195db0dd8e7d +// cross fade brightness +// To-do, .5 is daylight and 1.0 night is wiiu "correct" for nvidia +// changes here in turn "breaks" bloom as they over or under expose depending on day/night + +//old contrasty, or just copy paste clarity +const float gamma = $gamma; // 1.0 is neutral +const float exposure = $exposure; // 1.0 is neutral, first lessen to avoid truncation prob around .25 for radeon. +const float vibrance = $vibrance; // 0.0 is neutral +const float lift = $lift; // 0.0 is neutral. loss of shadow detail +const float postExposure = $postExposure; // 1.0 is neutral, then slightly raise exposure back up. + +vec3 contrasty(vec3 colour){ + vec3 fColour = (colour.xyz); + + fColour = clamp(exposure * fColour, 0.0, 1.0); + fColour = pow(fColour, vec3(1.0 / gamma)); + float luminance = fColour.r*0.299 + fColour.g*0.587 + fColour.b*0.114; + float mn = min(min(fColour.r, fColour.g), fColour.b); + float mx = max(max(fColour.r, fColour.g), fColour.b); + float sat = (1.0 - (mx - mn)) * (1.0 - mx) * luminance * 5.0; + vec3 lightness = vec3((mn + mx) / 2.0); +// vibrance + fColour = mix(fColour, mix(fColour, lightness, -vibrance), sat); + fColour = max(vec3(0.0), fColour + vec3(lift)); + return fColour; +} + #ifdef VULKAN layout(set = 1, binding = 3) uniform ufBlock { @@ -29,11 +60,18 @@ TEXTURE_LAYOUT(1, 1, 1) uniform sampler3D textureUnitPS1; TEXTURE_LAYOUT(2, 1, 2) uniform sampler3D textureUnitPS2; layout(location = 0) in vec4 passParameterSem0; layout(location = 0) out vec4 passPixelColor0; -// end of shader inputs/outputs -const float exposure = $exposure; -const float vibrance = $vibrance; -const float postExposure = $postExposure; -const float contrastCurve = $contrastCurve; +// uf_fragCoordScale was moved to the ufBlock + +float lineRand(vec2 co) +{ + float a = 12.9898; + float b = 78.233; + float c = 43758.5453; + float dt = dot(co.xy, vec2(a, b)); + float sn = mod(dt, 3.14); + return fract(sin(sn) * c); +} + int clampFI32(int v) { if( v == 0x7FFFFFFF ) @@ -48,49 +86,43 @@ void main() vec4 R0f = vec4(0.0); vec4 R1f = vec4(0.0); vec4 R2f = vec4(0.0); -vec4 R5f = vec4(0.0); vec4 R127f = vec4(0.0); float backupReg0f, backupReg1f, backupReg2f, backupReg3f, backupReg4f; vec4 PV0f = vec4(0.0), PV1f = vec4(0.0); float PS0f = 0.0, PS1f = 0.0; vec4 tempf = vec4(0.0); float tempResultf; -float tempResultf2; int tempResulti; ivec4 ARi = ivec4(0); bool predResult = true; vec3 cubeMapSTM; int cubeMapFaceId; R0f = passParameterSem0; -R0f.xyz = (texture(textureUnitPS0, R0f.xy).xyz); -R5f.xyzw = texture(textureUnitPS0, passParameterSem0.xy); +R0f.xyz = (texture(textureUnitPS0, R0f.xy).xyz) * (0.985 -(lineRand(gl_FragCoord.yx)*0.015)); +//R0f.xyz = (texture(textureUnitPS0, R0f.xy).xyz) *preExposure; // 0 +R0f.xyz = contrasty(R0f.xyz); backupReg0f = R0f.x; -tempResultf = clamp(intBitsToFloat(uf_remappedPS[0].x), 0.0, exposure); -tempResultf2 = clamp(intBitsToFloat(uf_remappedPS[0].z), 0.0, 1.0); -PV0f.x = backupReg0f * tempResultf; //intBitsToFloat(uf_remappedPS[0].x); +PV0f.x = backupReg0f * intBitsToFloat(uf_remappedPS[0].x); PV0f.x = clamp(PV0f.x, 0.0, 1.0); -R127f.z = R0f.z * tempResultf; +R127f.z = R0f.z * intBitsToFloat(uf_remappedPS[0].x); R127f.z = clamp(R127f.z, 0.0, 1.0); -R127f.w = R0f.y * tempResultf; +R127f.w = R0f.y * intBitsToFloat(uf_remappedPS[0].x); R127f.w = clamp(R127f.w, 0.0, 1.0); R2f.w = 1.0; PS0f = R2f.w; // 1 -tempResultf = max(0.0, PV0f.x); -tempResultf = log2(tempResultf); +tempResultf = log2(PV0f.x); if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F; PS1f = tempResultf; // 2 R127f.x = PS1f * intBitsToFloat(0x3ee8ba2e); -tempResultf = max(0.0, R127f.w); -tempResultf = log2(tempResultf); +tempResultf = log2(R127f.w); if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F; PS0f = tempResultf; // 3 R127f.y = PS0f * intBitsToFloat(0x3ee8ba2e); -tempResultf = max(0.0, R127f.z); -tempResultf = log2(tempResultf); +tempResultf = log2(R127f.z); if( isinf(tempResultf) == true ) tempResultf = -3.40282347E+38F; PS1f = tempResultf; // 4 @@ -116,9 +148,8 @@ PV0f.z = R1f.x + -(backupReg1f); R2f.x = (PV0f.z * intBitsToFloat(uf_remappedPS[0].y) + R0f.x); R2f.y = (PV0f.y * intBitsToFloat(uf_remappedPS[0].y) + R0f.y); R2f.z = (PV0f.x * intBitsToFloat(uf_remappedPS[0].y) + R0f.z); - -R2f = mix (R2f,R5f,vibrance)*postExposure; -R2f.xyz = mix(R2f.xyz, smoothstep(0.0, 1.0, R2f.xyz), contrastCurve); // export -passPixelColor0 = vec4(R2f.x, R2f.y, R2f.z, R2f.w); +//R2f = vec4(pow(R2f.xyz, vec3(1. / gammaPostExposure)), 1.0); + +passPixelColor0 = vec4(R2f.x, R2f.y, R2f.z, R2f.w)*postExposure; } diff --git a/src/XenobladeChroniclesX/Workarounds/Brightness/rules.txt b/src/XenobladeChroniclesX/Workarounds/Brightness/rules.txt new file mode 100644 index 00000000..f361ee5c --- /dev/null +++ b/src/XenobladeChroniclesX/Workarounds/Brightness/rules.txt @@ -0,0 +1,26 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = Brightness Workaround +path = "Xenoblade Chronicles X/Workarounds/Brightness" +description = Edit presets for preference. Made by getdls. +version = 4 + +[Preset] +name = NVIDIA +$crushContrast = 0.000 +$exposure = 0.52 +$gamma = 0.93 +$glare = 0.95 +$lift = 0.002 +$postExposure = 1.05 +$vibrance = 0.318 + +[Preset] +name = AMD +$crushContrast = 0 +$exposure = 0.32 +$gamma = 0.93 +$glare = 0.95 +$lift = 0.002 +$postExposure = 1.05 +$vibrance = 0.318