From e68bb61f5a8e2f4358473d02898f12d0d968c620 Mon Sep 17 00:00:00 2001 From: lasyan3 Date: Sun, 7 Oct 2018 18:13:26 +0200 Subject: [PATCH] Add lasyan3's Xenoblade Chronicles X game patches For more info about each mod, see https://forum.cemu.info/showthread.php/145-My-Gameplay-Patches-for-Xenoblade-Chronicles-X . --- .../XenobladeX_BGM_NoFlight/patches.txt | 9 ++ .../XenobladeX_BGM_NoFlight/rules.txt | 5 + .../XenobladeX_BGM_NoOverdrive/patches.txt | 8 ++ .../XenobladeX_BGM_NoOverdrive/rules.txt | 5 + .../XenobladeX_CollectiblesRange/patches.txt | 59 -------- .../XenobladeX_CustomDropRatio/patches.txt | 21 --- .../XenobladeX_CustomDropRatio/rules.txt | 4 - .../XenobladeX_DSP_Camera/patches.txt | 20 +++ Modifications/XenobladeX_DSP_Camera/rules.txt | 4 + .../XenobladeX_DSP_DistMobInfo/patches.txt | 61 +++++++++ .../XenobladeX_DSP_DistMobInfo/rules.txt | 5 + .../XenobladeX_GPL_BattlePointsX/patches.txt | 9 ++ .../XenobladeX_GPL_BattlePointsX/rules.txt | 5 + .../XenobladeX_GPL_BladePointsX/patches.txt | 9 ++ .../XenobladeX_GPL_BladePointsX/rules.txt | 5 + .../XenobladeX_GPL_Challenge/patches.txt | 9 ++ .../XenobladeX_GPL_Challenge/rules.txt | 4 + .../patches.txt | 9 ++ .../XenobladeX_GPL_ClassExpPointsX/rules.txt | 5 + .../patches.txt | 66 +++++++++ .../rules.txt | 5 + .../patches.txt | 63 +++++++++ .../XenobladeX_GPL_CustomDropRatio/rules.txt | 5 + .../XenobladeX_GPL_DLCQuests/patches.txt | 7 + .../XenobladeX_GPL_DLCQuests/rules.txt | 4 + .../XenobladeX_GPL_Damages/patches.txt | 8 ++ .../XenobladeX_GPL_Damages/rules.txt | 4 + .../patches.txt | 50 +++++++ .../rules.txt | 5 + .../patches.txt | 39 ++++++ .../rules.txt | 5 + .../XenobladeX_GPL_EnemieStats/patches.txt | 13 ++ .../rules.txt | 2 +- .../patches.txt | 22 +++ .../rules.txt | 4 + .../XenobladeX_GPL_FriendPointsX/patches.txt | 9 ++ .../XenobladeX_GPL_FriendPointsX/rules.txt | 5 + .../patches.txt | 10 ++ .../XenobladeX_GPL_InnerExpPointsX/rules.txt | 5 + .../XenobladeX_GPL_MaxSlots/patches.txt | 13 ++ .../XenobladeX_GPL_MaxSlots/rules.txt | 4 + .../patches.txt | 55 ++++++++ .../XenobladeX_GPL_MoreProbeIncome/rules.txt | 5 + .../XenobladeX_GPL_NoItemSell/patches.txt | 16 +++ .../XenobladeX_GPL_NoItemSell/rules.txt | 5 + .../patches.txt | 127 ++++++++++++++++++ .../rules.txt | 4 + .../XenobladeX_GPL_Overdrive/patches.txt | 9 ++ .../XenobladeX_GPL_Overdrive/rules.txt | 4 + .../patches.txt | 23 ++++ .../rules.txt | 4 + .../patches.txt | 23 ++++ .../rules.txt | 4 + .../XenobladeX_HUD_EManual/patches.txt | 28 ++++ .../XenobladeX_HUD_EManual/rules.txt | 4 + .../XenobladeX_PHY_MoonJump/patches.txt | 27 ++++ .../XenobladeX_PHY_MoonJump/rules.txt | 4 + .../XenobladeX_PHY_MoveSpeed/patches.txt | 17 +++ .../XenobladeX_PHY_MoveSpeed/rules.txt | 4 + 59 files changed, 882 insertions(+), 85 deletions(-) create mode 100644 Modifications/XenobladeX_BGM_NoFlight/patches.txt create mode 100644 Modifications/XenobladeX_BGM_NoFlight/rules.txt create mode 100644 Modifications/XenobladeX_BGM_NoOverdrive/patches.txt create mode 100644 Modifications/XenobladeX_BGM_NoOverdrive/rules.txt delete mode 100644 Modifications/XenobladeX_CollectiblesRange/patches.txt delete mode 100644 Modifications/XenobladeX_CustomDropRatio/patches.txt delete mode 100644 Modifications/XenobladeX_CustomDropRatio/rules.txt create mode 100644 Modifications/XenobladeX_DSP_Camera/patches.txt create mode 100644 Modifications/XenobladeX_DSP_Camera/rules.txt create mode 100644 Modifications/XenobladeX_DSP_DistMobInfo/patches.txt create mode 100644 Modifications/XenobladeX_DSP_DistMobInfo/rules.txt create mode 100644 Modifications/XenobladeX_GPL_BattlePointsX/patches.txt create mode 100644 Modifications/XenobladeX_GPL_BattlePointsX/rules.txt create mode 100644 Modifications/XenobladeX_GPL_BladePointsX/patches.txt create mode 100644 Modifications/XenobladeX_GPL_BladePointsX/rules.txt create mode 100644 Modifications/XenobladeX_GPL_Challenge/patches.txt create mode 100644 Modifications/XenobladeX_GPL_Challenge/rules.txt create mode 100644 Modifications/XenobladeX_GPL_ClassExpPointsX/patches.txt create mode 100644 Modifications/XenobladeX_GPL_ClassExpPointsX/rules.txt create mode 100644 Modifications/XenobladeX_GPL_CollectiblesRange/patches.txt create mode 100644 Modifications/XenobladeX_GPL_CollectiblesRange/rules.txt create mode 100644 Modifications/XenobladeX_GPL_CustomDropRatio/patches.txt create mode 100644 Modifications/XenobladeX_GPL_CustomDropRatio/rules.txt create mode 100644 Modifications/XenobladeX_GPL_DLCQuests/patches.txt create mode 100644 Modifications/XenobladeX_GPL_DLCQuests/rules.txt create mode 100644 Modifications/XenobladeX_GPL_Damages/patches.txt create mode 100644 Modifications/XenobladeX_GPL_Damages/rules.txt create mode 100644 Modifications/XenobladeX_GPL_DropOnlyEquipment/patches.txt create mode 100644 Modifications/XenobladeX_GPL_DropOnlyEquipment/rules.txt create mode 100644 Modifications/XenobladeX_GPL_DropOnlyMaterials/patches.txt create mode 100644 Modifications/XenobladeX_GPL_DropOnlyMaterials/rules.txt create mode 100644 Modifications/XenobladeX_GPL_EnemieStats/patches.txt rename Modifications/{XenobladeX_CollectiblesRange => XenobladeX_GPL_EnemieStats}/rules.txt (54%) create mode 100644 Modifications/XenobladeX_GPL_EquipmentUpgradeUnlimited/patches.txt create mode 100644 Modifications/XenobladeX_GPL_EquipmentUpgradeUnlimited/rules.txt create mode 100644 Modifications/XenobladeX_GPL_FriendPointsX/patches.txt create mode 100644 Modifications/XenobladeX_GPL_FriendPointsX/rules.txt create mode 100644 Modifications/XenobladeX_GPL_InnerExpPointsX/patches.txt create mode 100644 Modifications/XenobladeX_GPL_InnerExpPointsX/rules.txt create mode 100644 Modifications/XenobladeX_GPL_MaxSlots/patches.txt create mode 100644 Modifications/XenobladeX_GPL_MaxSlots/rules.txt create mode 100644 Modifications/XenobladeX_GPL_MoreProbeIncome/patches.txt create mode 100644 Modifications/XenobladeX_GPL_MoreProbeIncome/rules.txt create mode 100644 Modifications/XenobladeX_GPL_NoItemSell/patches.txt create mode 100644 Modifications/XenobladeX_GPL_NoItemSell/rules.txt create mode 100644 Modifications/XenobladeX_GPL_OfflineSquadQuests/patches.txt create mode 100644 Modifications/XenobladeX_GPL_OfflineSquadQuests/rules.txt create mode 100644 Modifications/XenobladeX_GPL_Overdrive/patches.txt create mode 100644 Modifications/XenobladeX_GPL_Overdrive/rules.txt create mode 100644 Modifications/XenobladeX_GPL_PostGameSkellsUnlock/patches.txt create mode 100644 Modifications/XenobladeX_GPL_PostGameSkellsUnlock/rules.txt create mode 100644 Modifications/XenobladeX_GPL_ReleaseDistanceReduced/patches.txt create mode 100644 Modifications/XenobladeX_GPL_ReleaseDistanceReduced/rules.txt create mode 100644 Modifications/XenobladeX_HUD_EManual/patches.txt create mode 100644 Modifications/XenobladeX_HUD_EManual/rules.txt create mode 100644 Modifications/XenobladeX_PHY_MoonJump/patches.txt create mode 100644 Modifications/XenobladeX_PHY_MoonJump/rules.txt create mode 100644 Modifications/XenobladeX_PHY_MoveSpeed/patches.txt create mode 100644 Modifications/XenobladeX_PHY_MoveSpeed/rules.txt diff --git a/Modifications/XenobladeX_BGM_NoFlight/patches.txt b/Modifications/XenobladeX_BGM_NoFlight/patches.txt new file mode 100644 index 00000000..44d5e687 --- /dev/null +++ b/Modifications/XenobladeX_BGM_NoFlight/patches.txt @@ -0,0 +1,9 @@ +[XCX_BGMNOFLIGHT] +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 +0x022A4DC0 = b _skip \ No newline at end of file diff --git a/Modifications/XenobladeX_BGM_NoFlight/rules.txt b/Modifications/XenobladeX_BGM_NoFlight/rules.txt new file mode 100644 index 00000000..2c772618 --- /dev/null +++ b/Modifications/XenobladeX_BGM_NoFlight/rules.txt @@ -0,0 +1,5 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Xenoblade Chronicles X - BGM - No Skell Flight Music" +version=2 + \ No newline at end of file diff --git a/Modifications/XenobladeX_BGM_NoOverdrive/patches.txt b/Modifications/XenobladeX_BGM_NoOverdrive/patches.txt new file mode 100644 index 00000000..d19356c4 --- /dev/null +++ b/Modifications/XenobladeX_BGM_NoOverdrive/patches.txt @@ -0,0 +1,8 @@ +[XCX_BGMNOOVER] +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +; ---------------------------------------------------------------------------- +; WHO : cfs::CfSoundManagerBGM::playgear((unsigned int)) +; WHAT : Never process this function so that Overdrive music is never played + +0x022AB1F4 = blr diff --git a/Modifications/XenobladeX_BGM_NoOverdrive/rules.txt b/Modifications/XenobladeX_BGM_NoOverdrive/rules.txt new file mode 100644 index 00000000..c9cf987b --- /dev/null +++ b/Modifications/XenobladeX_BGM_NoOverdrive/rules.txt @@ -0,0 +1,5 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Xenoblade Chronicles X - BGM - No Overdrive Music" +version=2 + \ No newline at end of file diff --git a/Modifications/XenobladeX_CollectiblesRange/patches.txt b/Modifications/XenobladeX_CollectiblesRange/patches.txt deleted file mode 100644 index ae984cbe..00000000 --- a/Modifications/XenobladeX_CollectiblesRange/patches.txt +++ /dev/null @@ -1,59 +0,0 @@ -[XCX_COLLECTIBLESRANGE] -moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07 ; 1.0.1E, 1.0.2U, 1.0.0U - -codeCaveSize = 0xC0 - -_itemRangeInner = 0x00000000 -0x00000000 = lis r5, 0x4250 -0x00000004 = addi r5, r5, 0x0000 -0x00000008 = stw r5, 0x4(r23) -0x0000000C = lfs f10, 0x4(r23) -0x00000010 = fadd f10, f9, f10 -0x00000014 = blr - -_itemHeightInner = 0x00000020 -0x00000020 = lis r5, 0x4250 -0x00000024 = addi r5, r5, 0x0000 -0x00000028 = stw r5, 0x4(r23) -0x0000002C = lfs f12, 0x4(r23) -0x00000030 = fadd f12, f10, f12 -0x00000034 = blr - -_itemRangeDoll = 0x00000040 -0x00000040 = lis r5, 0x4250 -0x00000044 = addi r5, r5, 0x0000 -0x00000048 = stw r5, 0x4(r23) -0x0000004C = lfs f9, 0x4(r23) -0x00000050 = fadd f9, f6, f9 -0x00000054 = blr - -_itemHeightDoll = 0x00000060 -0x00000060 = lis r5, 0x4250 -0x00000064 = addi r5, r5, 0x0000 -0x00000068 = stw r5, 0x4(r23) -0x0000006C = lfs f10, 0x4(r23) -0x00000070 = fadd f10, f7, f10 -0x00000074 = blr - -_itemRangeFlight = 0x00000080 -0x00000080 = lis r5, 0x4250 -0x00000084 = addi r5, r5, 0x0000 -0x00000088 = stw r5, 0x4(r23) -0x0000008C = lfs f10, 0x4(r23) -0x00000090 = fadd f10, f12, f10 -0x00000094 = blr - -_itemHeightFlight = 0x000000A0 -0x000000A0 = lis r5, 0x4250 -0x000000A4 = addi r5, r5, 0x0000 -0x000000A8 = stw r5, 0x4(r23) -0x000000AC = lfs f0, 0x4(r23) -0x000000B0 = fadd f0, f13, f0 -0x000000B4 = blr - -0x02389B80 = bla _itemRangeInner -0x02389BB8 = bla _itemHeightInner -0x02389C3C = bla _itemRangeDoll -0x02389C74 = bla _itemHeightDoll -0x02389CEC = bla _itemRangeFlight -0x02389D30 = bla _itemHeightFlight diff --git a/Modifications/XenobladeX_CustomDropRatio/patches.txt b/Modifications/XenobladeX_CustomDropRatio/patches.txt deleted file mode 100644 index 86d5af9c..00000000 --- a/Modifications/XenobladeX_CustomDropRatio/patches.txt +++ /dev/null @@ -1,21 +0,0 @@ -[XCX_CUSTOMDROPRATIO] -moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07 ; 1.0.1E, 1.0.2U, 1.0.0U - -codeCaveSize = 0x20 - -; Uncomment those TWO lines to affect the chest chance to appear -;0x021AADB8 = li r3, 3 ; 0 = no drop, 1 = always gold, 2 = always silver, 3 = always bronze -;0x021AADBC = blr - -_minDropRate = 0x00000000 -0x00000000 = cmpwi r31, 100 ; all items with drop ratio less than this value will have a new drop ratio set at line 0x00000010 -0x00000008 = blt .+0x8 -0x0000000C = b .+0x8 -0x00000010 = li r31, 100 ; new drop ratio -0x00000014 = cmpw r3, r31 -0x00000018 = blr - -0x021AF5DC = bla _minDropRate ; modify drop ratio for gold chests -0x021AF5F8 = bla _minDropRate ; modify drop ratio for silver chests -0x021AF614 = bla _minDropRate ; modify drop ratio for bronze chests - diff --git a/Modifications/XenobladeX_CustomDropRatio/rules.txt b/Modifications/XenobladeX_CustomDropRatio/rules.txt deleted file mode 100644 index 948451e8..00000000 --- a/Modifications/XenobladeX_CustomDropRatio/rules.txt +++ /dev/null @@ -1,4 +0,0 @@ -[Definition] -titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 -name = "Xenoblade Chronicles X - Custom Drop Ratio (issues with certain quests!)" -version=2 diff --git a/Modifications/XenobladeX_DSP_Camera/patches.txt b/Modifications/XenobladeX_DSP_Camera/patches.txt new file mode 100644 index 00000000..aae952a4 --- /dev/null +++ b/Modifications/XenobladeX_DSP_Camera/patches.txt @@ -0,0 +1,20 @@ +[XCX_CAMERA] +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +codeCaveSize = 0x8 + +0x00000000 = .float 5.0 ; zoom (default is 0.0) +_zoom = 0x00000000 + +0x00000004 = .float 60.0 ; fov (default is 40.0) +_fov = 0x00000004 + +# CamData::CCamDataManager::getParamsZoomDefault((CamData::eTargetTypes, unsigned char)) +0x0222A19C = lis r12, _zoom@h +0x0222A1B0 = lfs f1, _zoom@l(r12) +0x0222A1CC = nop + +# CamData::CCamDataManager::getFov((CamData::eTargetTypes)) +0x02229CE0 = lis r11, _fov@h +0x02229CF8 = lfs f1, _fov@l(r11) +0x02229D14 = nop \ No newline at end of file diff --git a/Modifications/XenobladeX_DSP_Camera/rules.txt b/Modifications/XenobladeX_DSP_Camera/rules.txt new file mode 100644 index 00000000..2bcdaca4 --- /dev/null +++ b/Modifications/XenobladeX_DSP_Camera/rules.txt @@ -0,0 +1,4 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Xenoblade Chronicles X - DSP - Camera customization" +version=2 \ No newline at end of file diff --git a/Modifications/XenobladeX_DSP_DistMobInfo/patches.txt b/Modifications/XenobladeX_DSP_DistMobInfo/patches.txt new file mode 100644 index 00000000..3f68dcbe --- /dev/null +++ b/Modifications/XenobladeX_DSP_DistMobInfo/patches.txt @@ -0,0 +1,61 @@ +[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 diff --git a/Modifications/XenobladeX_DSP_DistMobInfo/rules.txt b/Modifications/XenobladeX_DSP_DistMobInfo/rules.txt new file mode 100644 index 00000000..f05b9677 --- /dev/null +++ b/Modifications/XenobladeX_DSP_DistMobInfo/rules.txt @@ -0,0 +1,5 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Xenoblade Chronicles X - DSP - NPC bubbles distance increased" +version=2 + \ No newline at end of file diff --git a/Modifications/XenobladeX_GPL_BattlePointsX/patches.txt b/Modifications/XenobladeX_GPL_BattlePointsX/patches.txt new file mode 100644 index 00000000..fde8d682 --- /dev/null +++ b/Modifications/XenobladeX_GPL_BattlePointsX/patches.txt @@ -0,0 +1,9 @@ +[XCX_BATTLEPOINTSX] +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +; ---------------------------------------------------------------------------- +; WHO : addClassExpChara__Q2_6Battle14CBattleManagerFUiT1 +; WHAT : Multiply the battle points given in... battles + +;0x020C4A74 = li r0, 20 ; alternative: always gives +20 battle points +0x020C4A74 = mulli r0, r0, 30 diff --git a/Modifications/XenobladeX_GPL_BattlePointsX/rules.txt b/Modifications/XenobladeX_GPL_BattlePointsX/rules.txt new file mode 100644 index 00000000..8800da53 --- /dev/null +++ b/Modifications/XenobladeX_GPL_BattlePointsX/rules.txt @@ -0,0 +1,5 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Xenoblade Chronicles X - GPL - Battle Points X" +version=2 + \ No newline at end of file diff --git a/Modifications/XenobladeX_GPL_BladePointsX/patches.txt b/Modifications/XenobladeX_GPL_BladePointsX/patches.txt new file mode 100644 index 00000000..99809aa9 --- /dev/null +++ b/Modifications/XenobladeX_GPL_BladePointsX/patches.txt @@ -0,0 +1,9 @@ +[XCX_BLADEX] +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +; ---------------------------------------------------------------------------- +; WHO : fw::SocialUnion::getUnionBasePoint((int)) +; WHAT : Multiply the BLADE points rewarded (default is by 10) + +0x0288E610 = nop +0x0288E614 = li r3, 10 \ No newline at end of file diff --git a/Modifications/XenobladeX_GPL_BladePointsX/rules.txt b/Modifications/XenobladeX_GPL_BladePointsX/rules.txt new file mode 100644 index 00000000..c6cb37f0 --- /dev/null +++ b/Modifications/XenobladeX_GPL_BladePointsX/rules.txt @@ -0,0 +1,5 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Xenoblade Chronicles X - GPL - Blade Points X" +version=2 + \ No newline at end of file diff --git a/Modifications/XenobladeX_GPL_Challenge/patches.txt b/Modifications/XenobladeX_GPL_Challenge/patches.txt new file mode 100644 index 00000000..84ea25de --- /dev/null +++ b/Modifications/XenobladeX_GPL_Challenge/patches.txt @@ -0,0 +1,9 @@ +[XCX_CHALLENGE] +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +; ---------------------------------------------------------------------------- +; WHO : Battle::CSoulVoiceButtonChallenge::updateInternal((float)) +; WHAT : Disable QTE (calling Battle::CButtonChallengeManager::CallUI) + +0x0209D6F0 = nop +0x0209D720 = nop diff --git a/Modifications/XenobladeX_GPL_Challenge/rules.txt b/Modifications/XenobladeX_GPL_Challenge/rules.txt new file mode 100644 index 00000000..55d93d7e --- /dev/null +++ b/Modifications/XenobladeX_GPL_Challenge/rules.txt @@ -0,0 +1,4 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Xenoblade Chronicles X - GPL - Button Challenges disabled" +version=2 \ No newline at end of file diff --git a/Modifications/XenobladeX_GPL_ClassExpPointsX/patches.txt b/Modifications/XenobladeX_GPL_ClassExpPointsX/patches.txt new file mode 100644 index 00000000..d3262388 --- /dev/null +++ b/Modifications/XenobladeX_GPL_ClassExpPointsX/patches.txt @@ -0,0 +1,9 @@ +[XCX_CLASSEXPX] +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +; ---------------------------------------------------------------------------- +; WHO : addClassExpChara__Q2_6Battle14CBattleManagerFUiT1 +; WHAT : Multiply the class experience given during combat (default by 100) + +0x020C4A28 = mulli r31, r3, 2 + diff --git a/Modifications/XenobladeX_GPL_ClassExpPointsX/rules.txt b/Modifications/XenobladeX_GPL_ClassExpPointsX/rules.txt new file mode 100644 index 00000000..5239c241 --- /dev/null +++ b/Modifications/XenobladeX_GPL_ClassExpPointsX/rules.txt @@ -0,0 +1,5 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Xenoblade Chronicles X - GPL - Class Exp Points X" +version=2 + \ No newline at end of file diff --git a/Modifications/XenobladeX_GPL_CollectiblesRange/patches.txt b/Modifications/XenobladeX_GPL_CollectiblesRange/patches.txt new file mode 100644 index 00000000..4d791fec --- /dev/null +++ b/Modifications/XenobladeX_GPL_CollectiblesRange/patches.txt @@ -0,0 +1,66 @@ +[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 + diff --git a/Modifications/XenobladeX_GPL_CollectiblesRange/rules.txt b/Modifications/XenobladeX_GPL_CollectiblesRange/rules.txt new file mode 100644 index 00000000..346e7a65 --- /dev/null +++ b/Modifications/XenobladeX_GPL_CollectiblesRange/rules.txt @@ -0,0 +1,5 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Xenoblade Chronicles X - GPL - Collectibles: increase range" +version=2 + \ No newline at end of file diff --git a/Modifications/XenobladeX_GPL_CustomDropRatio/patches.txt b/Modifications/XenobladeX_GPL_CustomDropRatio/patches.txt new file mode 100644 index 00000000..3ed8f9d5 --- /dev/null +++ b/Modifications/XenobladeX_GPL_CustomDropRatio/patches.txt @@ -0,0 +1,63 @@ +[XCX_CUSTOMDROPRATIO] +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +codeCaveSize = 0x50 + +; Uncomment those TWO lines to affect the chest chance to appear +;0x021AADB8 = li r3, 0 ; 0 = no drop, 1 = always gold, 2 = always silver, 3 = always bronze +;0x021AADBC = blr + +; ---------------------------------------------------------------------------- +; WHO : ItemDrop::CItemDropManager::calcRank((unsigned short, int)) +; WHAT : Override the chest quality you get when the game initially decided you get no chest at all +; : It's a bit tough to explain, but the function calcRank does this: +; : 1) Calculate luck for gold chest, if success exit with gold quality (1), else process next step +; : 2) Calculate luck for silver chest, if success exit with silver quality (2), else process next step +; : 3) Calculate luck for bronze chest, if success exit with bronze quality (3), else process next step +; : 4) No chest at all, exit with no chest (0) +; : --> The mod below only changes this last step. So even if you put 1 value (gold chest), you'll still get a silver chest if the game succeeded the step 2. + +0x21AAF18 = li r3, 1 ; 0 = nothing (default), 1 = gold, 2 = silver, 3 = bronze + +; ---------------------------------------------------------------------------- +; WHO : __CPR90__calcItemBronze__Q2_8ItemDrop16CItemDropManagerFRQ3_J19JJ28J9SDropInfoUc +; WHAT : Affect the drop ratio of materials + +_minDropRate = 0x00000000 +0x00000000 = cmpwi r31, 100 ; this value is the default drop ratio under which we want to set a new drop ratio (logically equal or greater) +0x00000008 = blt .+0x8 +0x0000000C = b .+0x8 +0x00000010 = li r31, 100 ; here you set the new drop ratio +0x00000014 = cmpw r3, r31 +0x00000018 = blr + +0x021AF5DC = bla _minDropRate ; modify drop ratio for gold chests +0x021AF5F8 = bla _minDropRate ; modify drop ratio for silver chests +0x021AF614 = bla _minDropRate ; modify drop ratio for bronze chests + +; ---------------------------------------------------------------------------- +; WHO : ItemDrop::CItemDropManager::calcItemNum((uchar)) +; WHAT : 100 % chances of looting 3 equipments +;0x021AB238 = li r11, 100 ; DRP_ItemNumTable - Lot_3 + +; ---------------------------------------------------------------------------- +; WHO : ItemDrop::CItemDropManager::calcAfxSltNum((unsigned short)) +; WHAT : Control of the loot quality + +0x021AB380 = li r28, 100 +0x021AB394 = li r29, 100 +0x021AB3AC = li r30, 100 + +; ---------------------------------------------------------------------------- +; WHO : __CPR129__calcItem__Q2_8ItemDrop16CItemDropManagerFRQ3_J13JJ22J9SDropInfoUcRCQ3_J13JJ22J11SCreateInfo +; WHAT : Remove broken equipment + +;0x021AEBE0 = li r3, 0 ; Nothing is broken + + +; Always best equipment (xx60) ? TO BE CONFIRMED +0x021AD710 = nop ; ground weapons ? +0x021ADA6C = nop ; ground armors +0x021ADDE8 = nop ; skell weapons +0x021AE164 = nop ; skell armors + diff --git a/Modifications/XenobladeX_GPL_CustomDropRatio/rules.txt b/Modifications/XenobladeX_GPL_CustomDropRatio/rules.txt new file mode 100644 index 00000000..d46816fa --- /dev/null +++ b/Modifications/XenobladeX_GPL_CustomDropRatio/rules.txt @@ -0,0 +1,5 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Xenoblade Chronicles X - GPL - Materials Drop Ratio" +version=2 + \ No newline at end of file diff --git a/Modifications/XenobladeX_GPL_DLCQuests/patches.txt b/Modifications/XenobladeX_GPL_DLCQuests/patches.txt new file mode 100644 index 00000000..8811c9e8 --- /dev/null +++ b/Modifications/XenobladeX_GPL_DLCQuests/patches.txt @@ -0,0 +1,7 @@ +[XCX_DLC] +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +; ---------------------------------------------------------------------------- +; WHO : collectQuestInfoDL__Q2_3cfs15CfSocialManagerFRQ2_2ml45resvector__tm__28_PQ2_3cfs17CfSocialQuestInfo +; WHAT : Disable endgame check to unlock DLC missions +0x022C6B50 = nop diff --git a/Modifications/XenobladeX_GPL_DLCQuests/rules.txt b/Modifications/XenobladeX_GPL_DLCQuests/rules.txt new file mode 100644 index 00000000..9c55caaa --- /dev/null +++ b/Modifications/XenobladeX_GPL_DLCQuests/rules.txt @@ -0,0 +1,4 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Xenoblade Chronicles X - GPL - DLC Quests unlocked" +version=2 \ No newline at end of file diff --git a/Modifications/XenobladeX_GPL_Damages/patches.txt b/Modifications/XenobladeX_GPL_Damages/patches.txt new file mode 100644 index 00000000..78acf708 --- /dev/null +++ b/Modifications/XenobladeX_GPL_Damages/patches.txt @@ -0,0 +1,8 @@ +[XCX_DAMAGES] +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +; ---------------------------------------------------------------------------- +; WHO : cfs::CfCompoPropertyEnemy::addDamage((int)) +; WHAT : Multiply the ground damage (skells not included) given to enemy (default by 100) + +0x025D896C = mulli r4, r31, 10 diff --git a/Modifications/XenobladeX_GPL_Damages/rules.txt b/Modifications/XenobladeX_GPL_Damages/rules.txt new file mode 100644 index 00000000..08e67e0e --- /dev/null +++ b/Modifications/XenobladeX_GPL_Damages/rules.txt @@ -0,0 +1,4 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Xenoblade Chronicles X - GPL - Damage multiplicator (ground)" +version=2 \ No newline at end of file diff --git a/Modifications/XenobladeX_GPL_DropOnlyEquipment/patches.txt b/Modifications/XenobladeX_GPL_DropOnlyEquipment/patches.txt new file mode 100644 index 00000000..e7294f5d --- /dev/null +++ b/Modifications/XenobladeX_GPL_DropOnlyEquipment/patches.txt @@ -0,0 +1,50 @@ +[XCX_DROPONLYEQUIPMENT] +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +; ---------------------------------------------------------------------------- +; WHO : ItemDrop::CItemDropManager::calcRank((unsigned short, int)) +; WHAT : Affect the chance of chests + +0x021AADB8 = li r3, 1 ; always GOLD chests +0x021AADBC = blr + +; ---------------------------------------------------------------------------- +; WHO : __CPR90__calcItemBronze__Q2_8ItemDrop16CItemDropManagerFRQ3_J19JJ28J9SDropInfoUc +; WHAT : Affect the drop ratio of materials + +0x021AF5D8 = li r31, 0 +0x021AF5F4 = li r31, 0 +0x021AF610 = li r31, 0 + +; ---------------------------------------------------------------------------- +; WHO : ItemDrop::CItemDropManager::calcItemNum((uchar)) +; WHAT : Chances to loot multiples equipments (3 max) + +0x021AB238 = li r11, 100 ; DRP_ItemNumTable - Lot_3 + +; ---------------------------------------------------------------------------- +; 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 + +0x021AEB88 = li r4, 6 +0x021AEB5C = li r27, 6 + +; ---------------------------------------------------------------------------- +; WHO : __CPR98__calcItemTableID__Q2_8ItemDrop16CItemDropManagerFUcRCQ3_J20JJ29J11SCreateInfoRUs +; WHAT : Always best equipment looted (X6X) + +0x021AD710 = nop ; ground weapons ? +0x021ADA6C = nop ; ground armors +0x021ADDE8 = nop ; skell weapons +0x021AE164 = nop ; skell armors + +; WHO : ItemDrop::CItemDropManager::calcAfxSltNum((unsigned short)) +; WHAT : Control of the loot quality + +0x021AB380 = li r28, 100 +0x021AB394 = li r29, 100 +0x021AB3AC = li r30, 100 diff --git a/Modifications/XenobladeX_GPL_DropOnlyEquipment/rules.txt b/Modifications/XenobladeX_GPL_DropOnlyEquipment/rules.txt new file mode 100644 index 00000000..d06d3355 --- /dev/null +++ b/Modifications/XenobladeX_GPL_DropOnlyEquipment/rules.txt @@ -0,0 +1,5 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Xenoblade Chronicles X - GPL - Drop only Equipment" +version=2 + \ No newline at end of file diff --git a/Modifications/XenobladeX_GPL_DropOnlyMaterials/patches.txt b/Modifications/XenobladeX_GPL_DropOnlyMaterials/patches.txt new file mode 100644 index 00000000..71530561 --- /dev/null +++ b/Modifications/XenobladeX_GPL_DropOnlyMaterials/patches.txt @@ -0,0 +1,39 @@ +[XCX_DROPONLYMATERIALS] +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +codeCaveSize = 0x20 + +; ---------------------------------------------------------------------------- +; WHO : __CPR129__calcItem__Q2_8ItemDrop16CItemDropManagerFRQ3_J13JJ22J9SDropInfoUcRCQ3_J13JJ22J11SCreateInfo +; WHAT : No equipment loot + +_21AF30C = 0x021AF30C +0x021AEAA8 = b _21AF30C + +; ---------------------------------------------------------------------------- +; WHO : ItemDrop::CItemDropManager::calcRank((unsigned short, int)) +; WHAT : Override the chest quality you get when the game initially decided you get no chest at all +; : It's a bit tough to explain, but the function calcRank does this: +; : 1) Calculate luck for gold chest, if success exit with gold quality (1), else process next step +; : 2) Calculate luck for silver chest, if success exit with silver quality (2), else process next step +; : 3) Calculate luck for bronze chest, if success exit with bronze quality (3), else process next step +; : 4) No chest at all, exit with no chest (0) +; : --> The mod below only changes this last step. So even if you put 1 value (gold chest), you'll still get a silver chest if the game succeeded the step 2. + +0x21AAF18 = li r3, 3 ; 0 = nothing (default), 1 = gold, 2 = silver, 3 = bronze + +; ---------------------------------------------------------------------------- +; WHO : __CPR90__calcItemBronze__Q2_8ItemDrop16CItemDropManagerFRQ3_J19JJ28J9SDropInfoUc +; WHAT : Affect the drop ratio of materials + +_minDropRate = 0x00000000 +0x00000000 = cmpwi r31, 100 ; this value is the default drop ratio under which we want to set a new drop ratio (logically equal or greater) +0x00000008 = blt .+0x8 +0x0000000C = b .+0x8 +0x00000010 = li r31, 100 ; here you set the new drop ratio +0x00000014 = cmpw r3, r31 +0x00000018 = blr + +0x021AF5DC = bla _minDropRate ; modify drop ratio for gold chests +0x021AF5F8 = bla _minDropRate ; modify drop ratio for silver chests +0x021AF614 = bla _minDropRate ; modify drop ratio for bronze chests diff --git a/Modifications/XenobladeX_GPL_DropOnlyMaterials/rules.txt b/Modifications/XenobladeX_GPL_DropOnlyMaterials/rules.txt new file mode 100644 index 00000000..9665735f --- /dev/null +++ b/Modifications/XenobladeX_GPL_DropOnlyMaterials/rules.txt @@ -0,0 +1,5 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Xenoblade Chronicles X - GPL - Drop only Materials" +version=2 + \ No newline at end of file diff --git a/Modifications/XenobladeX_GPL_EnemieStats/patches.txt b/Modifications/XenobladeX_GPL_EnemieStats/patches.txt new file mode 100644 index 00000000..02999304 --- /dev/null +++ b/Modifications/XenobladeX_GPL_EnemieStats/patches.txt @@ -0,0 +1,13 @@ +[XCX_ENEMIESTATS] +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +; ---------------------------------------------------------------------------- +; WHO : calcEnParam__3cfsFPQ2_3cfs7SChrPrmUiT2 +; WHAT : Apply modificator on enemies stats (HP, Melee Attack, Melee Accuracy, Ranged Attack, Ranged Accuracy, Potential and Evasion) + +; 100% = 0.001 - default value +; 70% = 0.0007 +; 50% = 0.0005 +; 1% = 0.00001 ; GAME CRASH (enemis are too weak) + +0x1003206C = .float 0.0070 diff --git a/Modifications/XenobladeX_CollectiblesRange/rules.txt b/Modifications/XenobladeX_GPL_EnemieStats/rules.txt similarity index 54% rename from Modifications/XenobladeX_CollectiblesRange/rules.txt rename to Modifications/XenobladeX_GPL_EnemieStats/rules.txt index 55501ad2..fe722393 100644 --- a/Modifications/XenobladeX_CollectiblesRange/rules.txt +++ b/Modifications/XenobladeX_GPL_EnemieStats/rules.txt @@ -1,4 +1,4 @@ [Definition] titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 -name = "Xenoblade Chronicles X - Collectibles Range" +name = "Xenoblade Chronicles X - GPL - Enemy Stats" version=2 \ No newline at end of file diff --git a/Modifications/XenobladeX_GPL_EquipmentUpgradeUnlimited/patches.txt b/Modifications/XenobladeX_GPL_EquipmentUpgradeUnlimited/patches.txt new file mode 100644 index 00000000..7aaba153 --- /dev/null +++ b/Modifications/XenobladeX_GPL_EquipmentUpgradeUnlimited/patches.txt @@ -0,0 +1,22 @@ +[XCX_UPGRADENOLIMIT_EU] +moduleMatches = 0xF882D5CF ; 1.0.1E + +; ---------------------------------------------------------------------------- +; WHO : menu::MenuArmsCompanyAffixStrengthen::CheckAffixStrengthen +; WHAT : Unlimited upgrades (affix selection menu) + +0x02A72134 = li r10, 99 ; No upgrades remaining (getAffixTotalReinforced) (4) + +; ---------------------------------------------------------------------------- +; WHO : menu::MenuArmsCompanyAffixSelectItem::CheckAffixStrengthen +; WHAT : Unlimited upgrades (equipment selection menu) + +0x02A6DCA8 = li r3, 0 ; No upgrades remaining (3) + +;##################################################################################### +[XCX_UPGRADENOLIMIT_US] +moduleMatches = 0x30B6E091 ; 1.0.2U + +0x02A72124 = li r10, 99 ; No upgrades remaining (getAffixTotalReinforced) (4) + +0x02A6DC98 = li r3, 0 ; No upgrades remaining (3) diff --git a/Modifications/XenobladeX_GPL_EquipmentUpgradeUnlimited/rules.txt b/Modifications/XenobladeX_GPL_EquipmentUpgradeUnlimited/rules.txt new file mode 100644 index 00000000..ecb6deeb --- /dev/null +++ b/Modifications/XenobladeX_GPL_EquipmentUpgradeUnlimited/rules.txt @@ -0,0 +1,4 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Xenoblade Chronicles X - GPL - Augments Upgrade unlimited" +version=2 \ No newline at end of file diff --git a/Modifications/XenobladeX_GPL_FriendPointsX/patches.txt b/Modifications/XenobladeX_GPL_FriendPointsX/patches.txt new file mode 100644 index 00000000..5afffc6c --- /dev/null +++ b/Modifications/XenobladeX_GPL_FriendPointsX/patches.txt @@ -0,0 +1,9 @@ +[XCX_FRIENDPOINTSX] +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +; ---------------------------------------------------------------------------- +; 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 = li r31, 500 diff --git a/Modifications/XenobladeX_GPL_FriendPointsX/rules.txt b/Modifications/XenobladeX_GPL_FriendPointsX/rules.txt new file mode 100644 index 00000000..6cc402ba --- /dev/null +++ b/Modifications/XenobladeX_GPL_FriendPointsX/rules.txt @@ -0,0 +1,5 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Xenoblade Chronicles X - GPL - Friend Points X" +version=2 + \ No newline at end of file diff --git a/Modifications/XenobladeX_GPL_InnerExpPointsX/patches.txt b/Modifications/XenobladeX_GPL_InnerExpPointsX/patches.txt new file mode 100644 index 00000000..94734e7a --- /dev/null +++ b/Modifications/XenobladeX_GPL_InnerExpPointsX/patches.txt @@ -0,0 +1,10 @@ +[XCX_EXPX] +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +; ---------------------------------------------------------------------------- +; WHO : cfs::CfCompoCtrlEnemy::execRequestCommon +; WHAT : Multiply the experience points given in battles + +0x025624E4 = divi r30, r3, 2 ; mulli or divi +;0x020C1BC0 = nop; always +3000xp (+9999px) from battle (addInnerExpChara__Q2_6Battle14CBattleManagerFUiN21) +;0x022953A4 = li r4, 0x270F ; always +9999xp from exploration (addInnerExp__Q2_3cfs10CfTBoxUtilSFUi) diff --git a/Modifications/XenobladeX_GPL_InnerExpPointsX/rules.txt b/Modifications/XenobladeX_GPL_InnerExpPointsX/rules.txt new file mode 100644 index 00000000..ad54e607 --- /dev/null +++ b/Modifications/XenobladeX_GPL_InnerExpPointsX/rules.txt @@ -0,0 +1,5 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Xenoblade Chronicles X - GPL - Exp Points X" +version=2 + \ No newline at end of file diff --git a/Modifications/XenobladeX_GPL_MaxSlots/patches.txt b/Modifications/XenobladeX_GPL_MaxSlots/patches.txt new file mode 100644 index 00000000..98406ea4 --- /dev/null +++ b/Modifications/XenobladeX_GPL_MaxSlots/patches.txt @@ -0,0 +1,13 @@ +[XCX_MAXSLOTS_EU] +moduleMatches = 0xF882D5CF ; 1.0.1E + +; ---------------------------------------------------------------------------- +; NAME : Cshop::updateLuItem((void)) +; PURPO : max 3 slots per armor L shop + +0x02A3AA18 = li r0, 3 + +[XCX_MAXSLOTS_US] +moduleMatches = 0x30B6E091 ;1.0.2U + +0x02A3AA08 = li r0, 3 diff --git a/Modifications/XenobladeX_GPL_MaxSlots/rules.txt b/Modifications/XenobladeX_GPL_MaxSlots/rules.txt new file mode 100644 index 00000000..dce3c832 --- /dev/null +++ b/Modifications/XenobladeX_GPL_MaxSlots/rules.txt @@ -0,0 +1,4 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Xenoblade Chronicles X - GPL - Equipments have 3 Slots" +version=2 \ No newline at end of file diff --git a/Modifications/XenobladeX_GPL_MoreProbeIncome/patches.txt b/Modifications/XenobladeX_GPL_MoreProbeIncome/patches.txt new file mode 100644 index 00000000..f65a558a --- /dev/null +++ b/Modifications/XenobladeX_GPL_MoreProbeIncome/patches.txt @@ -0,0 +1,55 @@ +[XCX_PROBEINCOME] +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +codeCaveSize = 0x100 + +; ---------------------------------------------------------------------------- +; 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 = 0x00000000 +0x00000000 = li r8, 30 ; default is 30 for miranium +0x00000004 = addi r10, r3, 1 +0x00000008 = divwu r0, r10, r8 +0x0000000C = mullw r0, r0, r8 +0x00000010 = subf r3, r0, r10 +0x00000014 = cmpwi r3, 0 +0x00000018 = blr + +0x027D5250 = bla _miranium + +; ---------------------------------------------------------------------------- +; WHAT : changeTime__Q2_4fnet9CFnetTaskFUiT1 +; WHY : Affect the quantity of the NavFrontier income for the Miranium + +0x027D5278 = mulli r4, r31, 100 +;0x027D1034 = mulli r3, r31, 100 ; ignore limit + +; ---------------------------------------------------------------------------- +; 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, 1 ; default is 5 for resources + +; ---------------------------------------------------------------------------- +; 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, 5 ; default is 15 for money (5 for speedrun) + +0x027D5590 = mulli r3, r31, 100 ; quantity + +; ---------------------------------------------------------------------------- +; WHAT : changeTime__Q2_4fnet9CFnetTaskFUiT1 +; WHY : + +_multCount = 0x00000020 +0x00000020 = lbz r0, 6(r31) +0x00000024 = mulli r0, r0, 5 ; Change this number to multiply the number of each resource mined +0x00000028 = stb r0, 6(r31) +0x0000002C = blr + +0x027D5428 = bla _multCount \ No newline at end of file diff --git a/Modifications/XenobladeX_GPL_MoreProbeIncome/rules.txt b/Modifications/XenobladeX_GPL_MoreProbeIncome/rules.txt new file mode 100644 index 00000000..6be9469a --- /dev/null +++ b/Modifications/XenobladeX_GPL_MoreProbeIncome/rules.txt @@ -0,0 +1,5 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Xenoblade Chronicles X - GPL - Probe Income Frequency" +version=2 + \ No newline at end of file diff --git a/Modifications/XenobladeX_GPL_NoItemSell/patches.txt b/Modifications/XenobladeX_GPL_NoItemSell/patches.txt new file mode 100644 index 00000000..be4410c6 --- /dev/null +++ b/Modifications/XenobladeX_GPL_NoItemSell/patches.txt @@ -0,0 +1,16 @@ +[XCX_NOITEMSELL] +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +; ---------------------------------------------------------------------------- +; WHO : addItem__Q2_3cfs9CfItemBoxSFQ3_2fw9CItemType4TypeUiRQ2_3cfs12CfItemHandle +; WHAT : instead of selling item, return 0 (no systemlog) + +0x02365A94 = li r31, 0 ; sellItem + +; ---------------------------------------------------------------------------- +; WHO : cfs::CfPopManagerItem::updateTouchItem((void)) +; WHAT : exit code if addItem returns 0 (blue gem not collected and no sound) + +_exit = 0x0238A1BC +0x02389EF8 = beq _exit + diff --git a/Modifications/XenobladeX_GPL_NoItemSell/rules.txt b/Modifications/XenobladeX_GPL_NoItemSell/rules.txt new file mode 100644 index 00000000..a39293bf --- /dev/null +++ b/Modifications/XenobladeX_GPL_NoItemSell/rules.txt @@ -0,0 +1,5 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Xenoblade Chronicles X - GPL - Collectibles: ignore 100th" +version=2 + \ No newline at end of file diff --git a/Modifications/XenobladeX_GPL_OfflineSquadQuests/patches.txt b/Modifications/XenobladeX_GPL_OfflineSquadQuests/patches.txt new file mode 100644 index 00000000..d5c52108 --- /dev/null +++ b/Modifications/XenobladeX_GPL_OfflineSquadQuests/patches.txt @@ -0,0 +1,127 @@ +[XCX_SQUADMISSIONS] +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +codeCaveSize = 0x20 + +_getLocalTimeSec = 0x02892000 + +# cfs::CfSocialManager::update((float)) +0x022879D0 = nop + +# cfs::CfSocialQuestManager::update((void)) +0x023AB884 = nop ; 0x6B8(r12) == 0 +0x023AB8B4 = nop ; isHost +0x023ABA68 = li r5, 60 ; force 0x24 - UNLOCK +0x023ABC10 = 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 + + +# cfs::CfSocialQuestManager::setupQuest +0x023A0484 = nop ; isHost + +##################### BLADE Home Terminal (for Squad Quest Selection) + +# cfs::CfSocialManager::refreshOrderQuestInfo (called when select an entry in the BLADE menu) +0x022C805C = nop +0x022C8060 = nop + +# collectQuestInfoSQ__Q2_3cfs15CfSocialManagerFRQ2_2ml45resvector__tm__28_PQ2_3cfs17CfSocialQuestInfo +0x022C58BC = nop + +#################### Change Squad Mission using main menu + +_shareAddr = 0x1039C17C + +_iniPtr = 0x00000000 +0x00000000 = li r5, 0 +0x00000004 = lis r30, _shareAddr@ha +0x00000008 = stw r5, _shareAddr@l(r30) +0x0000000C = mr r30, r3 +0x00000010 = blr + +0x023B74A0 = bla _iniPtr + +_gotoTimeout = 0x023ABDF4 +_gotoNext = 0x023ABE54 + +0x023ABDC8 = lis r3, _shareAddr@ha +0x023ABDCC = lwz r7, _shareAddr@l(r3) +0x023ABDD0 = cmpwi r7, 1 +0x023ABDD4 = beq _gotoTimeout +0x023ABDD8 = b _gotoNext + +######################## More Tickets +;0x022CAC5C = nop ; no limit +;0x022CA874 = mulli r28, r4, 10 ; tickets multiplier + +##################################################################################################### +[XCX_SQUADMISSIONS_EU] +moduleMatches = 0xF882D5CF ; 1.0.1E + +# getServerTimeSec__Q2_2nt10CNetLibNexCFRUL +0x0295EA10 = nop +0x0295EA14 = li r0, 42 + +# menu::MenuSquadMission::process((void)) +0x02BFC7C0 = li r11, 1 + +##################### BLADE Home Terminal (for Squad Quest Selection) + +0x02AC5C10 = li r3, 0 ; menu::CTerminalMenu_SquadQuest::offline + +#################### Change Squad Mission using main menu + +_shareAddr = 0x1039C17C + +codeCaveSize = 0x10 + +_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 + +0x02B85084 = li r11, 1 +0x02B850A8 = li r11, 1 + +##################################################################################################### +[XCX_SQUADMISSIONS_US] +moduleMatches = 0x30B6E091 ; 1.0.2U + +# getServerTimeSec__Q2_2nt10CNetLibNexCFRUL +0x0295EA00 = nop +0x0295EA04 = li r0, 42 + +# menu::MenuSquadMission::process((void)) +0x02BFC7B0 = li r11, 1 + +##################### BLADE Home Terminal (for Squad Quest Selection) + +;menu::CBladeHomuMenu +;menu:CTerminalMenu +0x02AC5C00 = li r3, 0 ; menu::CTerminalMenu_SquadQuest::offline + +#################### Change Squad Mission using main menu + +_shareAddr = 0x1039C17C + +codeCaveSize = 0x10 + +_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 + +0x02B85074 = li r11, 1 +0x02B85098 = li r11, 1 diff --git a/Modifications/XenobladeX_GPL_OfflineSquadQuests/rules.txt b/Modifications/XenobladeX_GPL_OfflineSquadQuests/rules.txt new file mode 100644 index 00000000..1bc0b679 --- /dev/null +++ b/Modifications/XenobladeX_GPL_OfflineSquadQuests/rules.txt @@ -0,0 +1,4 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Xenoblade Chronicles X - GPL - Offline Squad Quests" +version=2 \ No newline at end of file diff --git a/Modifications/XenobladeX_GPL_Overdrive/patches.txt b/Modifications/XenobladeX_GPL_Overdrive/patches.txt new file mode 100644 index 00000000..658b4ae1 --- /dev/null +++ b/Modifications/XenobladeX_GPL_Overdrive/patches.txt @@ -0,0 +1,9 @@ +[XCX_OVERDRIVE] +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +; ---------------------------------------------------------------------------- +; WHO : Gear::CGear::IsPermit((void)) +; WHAT : Always returns true to unlock Overdrive even before chapter 5 + +0x021B70AC = li r3, 1 +0x021B70C4 = li r3, 1 diff --git a/Modifications/XenobladeX_GPL_Overdrive/rules.txt b/Modifications/XenobladeX_GPL_Overdrive/rules.txt new file mode 100644 index 00000000..0576e8b0 --- /dev/null +++ b/Modifications/XenobladeX_GPL_Overdrive/rules.txt @@ -0,0 +1,4 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Xenoblade Chronicles X - GPL - Overdrive unlocked" +version=2 \ No newline at end of file diff --git a/Modifications/XenobladeX_GPL_PostGameSkellsUnlock/patches.txt b/Modifications/XenobladeX_GPL_PostGameSkellsUnlock/patches.txt new file mode 100644 index 00000000..dfe2a1a0 --- /dev/null +++ b/Modifications/XenobladeX_GPL_PostGameSkellsUnlock/patches.txt @@ -0,0 +1,23 @@ +[XCX_UNLOCKPOSTSKELLS_EU] +moduleMatches = 0xF882D5CF ; 1.0.1E + +# 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)) +;0x02A7A784 = li r3, 0 ; [CHEAT] ignore miranium and resources requirements + +;##################################################################################### +[XCX_UNLOCKPOSTSKELLS_US] +moduleMatches = 0x30B6E091 ; 1.0.2U + +# menu::MenuArmsCompany::IsDollLicense(const(void)) +0x02A6B828 = li r3, 1 ; always returns true + +# menu::MenuArmsCompanyDevelopSelectBlueprint::InitializeItemData((void)) +0x02A7B210 = li r30, 0 ; unlock everything + +;0x02A7A774 = li r3, 0 ; [CHEAT] ignore miranium and resources requirements diff --git a/Modifications/XenobladeX_GPL_PostGameSkellsUnlock/rules.txt b/Modifications/XenobladeX_GPL_PostGameSkellsUnlock/rules.txt new file mode 100644 index 00000000..d6cecd58 --- /dev/null +++ b/Modifications/XenobladeX_GPL_PostGameSkellsUnlock/rules.txt @@ -0,0 +1,4 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Xenoblade Chronicles X - GPL - Post-game skells unlocked" +version=2 \ No newline at end of file diff --git a/Modifications/XenobladeX_GPL_ReleaseDistanceReduced/patches.txt b/Modifications/XenobladeX_GPL_ReleaseDistanceReduced/patches.txt new file mode 100644 index 00000000..0670b02f --- /dev/null +++ b/Modifications/XenobladeX_GPL_ReleaseDistanceReduced/patches.txt @@ -0,0 +1,23 @@ +[XCX_RELEASEDIST] +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +codeCaveSize = 0x20 + +; ---------------------------------------------------------------------------- +; WHO : cfs::CfCompoPropertyEnemy::getReleasePcDistanceXZ +; WHAT : Reduce release distance + +0x00000000 = .float 2.0 ; default is 1.0 +_distanceConst = 0x00000000 + +_getRelease = 0x00000004 +0x00000004 = lis r4, _distanceConst@ha +0x00000008 = lfs f0, _distanceConst@l(r4) +0x0000000C = fdivs f1, f1, f0 +0x00000010 = frsp f1, f1 +0x00000014 = blr + +0x025D8B2C = b _getRelease ; cfs::CfCompoPropertyEnemy::getReleasePcDistanceXZ +;0x025D8B34 = b _getRelease ; cfs::CfCompoPropertyEnemy::getReleasePcDistanceY +;0x025D8B08 = b _getRelease ; cfs::CfCompoPropertyEnemy::getReleaseDistanceXZ +;0x025D8B14 = b _getRelease ; cfs::CfCompoPropertyEnemy::getReleaseDistanceY diff --git a/Modifications/XenobladeX_GPL_ReleaseDistanceReduced/rules.txt b/Modifications/XenobladeX_GPL_ReleaseDistanceReduced/rules.txt new file mode 100644 index 00000000..762aca74 --- /dev/null +++ b/Modifications/XenobladeX_GPL_ReleaseDistanceReduced/rules.txt @@ -0,0 +1,4 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Xenoblade Chronicles X - GPL - Release Distance Reduced" +version=2 \ No newline at end of file diff --git a/Modifications/XenobladeX_HUD_EManual/patches.txt b/Modifications/XenobladeX_HUD_EManual/patches.txt new file mode 100644 index 00000000..26fe18bf --- /dev/null +++ b/Modifications/XenobladeX_HUD_EManual/patches.txt @@ -0,0 +1,28 @@ +[XCX_EMANUAL_EU] +moduleMatches = 0xF882D5CF ; 1.0.1E + +; ---------------------------------------------------------------------------- +; WHO : menu::MenuMainMenu::funcManual((int)) +; WHAT : Replace eManual function with timeManipulate function + +_openTimeManipulate = 0x02C7A2F0 +_isFinishTM = 0x02C7A4CC # MenuTask::isFinishTimeManipulate((void)) + +0x02B83CB4 = bl _openTimeManipulate +0x02B83CCC = bl _openTimeManipulate + +0x02B83C7C = bl _isFinishTM +0x02B83C98 = bl _isFinishTM + +################################################################################# +[XCX_EMANUAL_US] +moduleMatches = 0x30B6E091 ; 1.0.2U + +_openTimeManipulate = 0x02C7A290 +_isFinishTM = 0x02C7A46C # MenuTask::isFinishTimeManipulate((void)) + +0x02B83CA4 = bl _openTimeManipulate +0x02B83CBC = bl _openTimeManipulate + +0x02B83C6C = bl _isFinishTM +0x02B83C88 = bl _isFinishTM diff --git a/Modifications/XenobladeX_HUD_EManual/rules.txt b/Modifications/XenobladeX_HUD_EManual/rules.txt new file mode 100644 index 00000000..30f79ebe --- /dev/null +++ b/Modifications/XenobladeX_HUD_EManual/rules.txt @@ -0,0 +1,4 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Xenoblade Chronicles X - HUD - eManual menu changes time" +version=2 \ No newline at end of file diff --git a/Modifications/XenobladeX_PHY_MoonJump/patches.txt b/Modifications/XenobladeX_PHY_MoonJump/patches.txt new file mode 100644 index 00000000..56d51a15 --- /dev/null +++ b/Modifications/XenobladeX_PHY_MoonJump/patches.txt @@ -0,0 +1,27 @@ +[XCX_MOONJUMP] +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +codeCaveSize = 0x28 + +0x00000020 = .float 1.05 ; vertical velocity (default is 1.00) +0x00000024 = .float 2.0 ; horizontal velocity (default is 1.00) + +_velocity = 0x00000020 +_hvelocity = 0x00000024 + +_setVelocity = 0x00000000 +0x00000000 = lis r3, _velocity@h +0x00000004 = lfs f30, _velocity@l(r3) +0x00000008 = fdivs f30, f1, f30 +0x0000000C = blr +0x0264A700 = bla _setVelocity + +_setHorizVelocity = 0x00000010 +0x00000010 = lis r12, _hvelocity@h +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 diff --git a/Modifications/XenobladeX_PHY_MoonJump/rules.txt b/Modifications/XenobladeX_PHY_MoonJump/rules.txt new file mode 100644 index 00000000..76568aa7 --- /dev/null +++ b/Modifications/XenobladeX_PHY_MoonJump/rules.txt @@ -0,0 +1,4 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Xenoblade Chronicles X - PHY - Jump to the Moon!" +version=2 \ No newline at end of file diff --git a/Modifications/XenobladeX_PHY_MoveSpeed/patches.txt b/Modifications/XenobladeX_PHY_MoveSpeed/patches.txt new file mode 100644 index 00000000..4ea9a715 --- /dev/null +++ b/Modifications/XenobladeX_PHY_MoveSpeed/patches.txt @@ -0,0 +1,17 @@ +[XCX_MOVESPEED] +moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U + +codeCaveSize = 0x18 + +0x00000014 = .float 0.7 ; dash speed (smallest means fastest, default is ?) +_speed = 0x00000014 + +_setSpeed = 0x00000000 +0x00000000 = lis r3, _speed@h +0x00000004 = lfs f13, _speed@l(r3) +0x00000008 = fdivs f1, f1, f13 +0x0000000C = lwz r3, 0(r31) +0x00000010 = blr + +# chr::CInnerLabelState::applyFieldMoveWeight((float)) +0x02643330 = bla _setSpeed ; SetVariableFloat(0xBD,float) diff --git a/Modifications/XenobladeX_PHY_MoveSpeed/rules.txt b/Modifications/XenobladeX_PHY_MoveSpeed/rules.txt new file mode 100644 index 00000000..240b7c99 --- /dev/null +++ b/Modifications/XenobladeX_PHY_MoveSpeed/rules.txt @@ -0,0 +1,4 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Xenoblade Chronicles X - PHY - Run Forrest, run!" +version=2 \ No newline at end of file