From 97c0d90901555b41a86b608bf4839188bee56429 Mon Sep 17 00:00:00 2001 From: intra <111546963+intra2@users.noreply.github.com> Date: Sun, 25 Sep 2022 08:37:11 -0500 Subject: [PATCH] [XCX] Port to most versions, added freecam mode and other changes Thanks to @intra2 for the work! --- .../Mods/60FPS/patch_Cutscene.asm | 5 +- .../Mods/60FPS/patch_GameSpeed.asm | 147 +++++++++--- .../Mods/60FPS/patch_Overdrive.asm | 25 +- .../Mods/60FPS/patch_QTE.asm | 36 ++- .../Mods/BattleDamageModGround/patch_dmg.asm | 29 ++- .../Mods/BattleDamageModGround/rules.txt | 18 +- .../Mods/BattleDamageModGround2/patch_dmg.asm | 26 +- .../Mods/BattleDamageModGround2/rules.txt | 13 +- .../Mods/BattleEnemyStats/patch_stats.asm | 27 ++- .../Mods/BattleEnemyStats/rules.txt | 34 ++- .../BattleEscapeDistance/patch_escape.asm | 4 +- .../Mods/BattleEscapeDistance/rules.txt | 31 ++- .../patch_overdrive.asm | 18 +- .../Mods/BattleOverdriveUnlocked/rules.txt | 14 +- .../BattleQteDollLost/patch_qte_lostdoll.asm | 35 ++- .../Mods/BattleQteDollLost/rules.txt | 6 +- .../patch_qte_soulvoices.asm | 24 +- .../Mods/BattleQteSoulVoices/rules.txt | 22 +- .../Mods/BattleQteSpeed/patch_qte_speed.asm | 15 +- .../Mods/BattleQteSpeed/rules.txt | 26 +- .../Mods/BladeDLCQuestsUnlocked/patch_dlc.asm | 18 +- .../Mods/BladeDLCQuestsUnlocked/rules.txt | 3 +- .../patch_gainticketsmissions.asm | 36 ++- .../BladeGainTicketsFromMissions/rules.txt | 14 +- .../patch_offline_nemesis.asm | 151 ++++++++---- .../patch_offline_nemesis.asm.bak | 20 +- .../rules.txt | 2 +- .../patch_lv60skells.asm | 44 ++-- .../Mods/BladeLv60SkellsUnlocked/rules.txt | 4 +- .../BladeMoreTickets/patch_moretickets.asm | 58 ++--- .../Mods/BladeMoreTickets/rules.txt | 15 +- .../patch_offline_squad.asm | 225 +++++++++++------- .../BladeTasksAndMissionsOffline/rules.txt | 32 ++- .../CollectiblesCatchRange/patch_catch.asm | 43 ++-- .../Mods/CollectiblesCatchRange/rules.txt | 24 +- .../patch_collect100.asm | 28 ++- .../Mods/CollectiblesIgnore100th/rules.txt | 15 +- .../patch_aug3slots.asm | 24 +- .../rules.txt | 2 +- .../patch_augup.asm | 42 +++- .../rules.txt | 2 +- .../patch_unlockaug.asm | 39 ++- .../Mods/EquipmentUnlockAugments/rules.txt | 3 +- .../ExpBattlePointsX/patch_exp_battle.asm | 46 ++-- .../Mods/ExpBattlePointsX/rules.txt | 7 +- .../Mods/ExpBladePointsX/patch_exp_blade.asm | 32 ++- .../Mods/ExpBladePointsX/rules.txt | 6 +- .../ExpClassExpPointsX/patch_exp_class.asm | 33 ++- .../Mods/ExpClassExpPointsX/rules.txt | 6 +- .../ExpFriendsPointsX/patch_exp_friend.asm | 15 +- .../Mods/ExpFriendsPointsX/rules.txt | 6 +- .../Mods/ExpInnerExpPointsX/patch_exp.asm | 51 ++-- .../Mods/ExpInnerExpPointsX/rules.txt | 20 +- .../Mods/FOVSetting/patch_fov.asm | 15 ++ .../Mods/FOVSetting/patches.txt | 20 -- .../Mods/FOVSetting/rules.txt | 20 +- .../patch_miranium_freq.asm | 24 +- .../rules.txt | 7 +- .../patch_miranium_qu.asm | 30 ++- .../rules.txt | 24 +- .../patch_money_freq.asm | 22 +- .../FrontierNavProbeMoneyFrequency/rules.txt | 7 +- .../patch_money_qu.asm | 22 +- .../FrontierNavProbeMoneyQuantity/rules.txt | 11 +- .../patch_resource_freq.asm | 24 +- .../rules.txt | 7 +- .../patch_resource_qu.asm | 23 +- .../rules.txt | 11 +- .../GraphicsCameraDistance/patch_camera.asm | 24 +- .../Mods/GraphicsCameraDistance/rules.txt | 9 +- .../patch_bubbles.asm | 37 ++- .../GraphicsNpcInfoBubblesDistance/rules.txt | 2 +- .../Mods/HUDFreecam/patch_Freecam.asm | 44 ++++ .../Mods/HUDFreecam/rules.txt | 6 + .../Mods/HUDNoModelFade/patch_NoModelFade.asm | 29 +++ .../Mods/HUDNoModelFade/rules.txt | 6 + .../patch_RemoveBlur.asm | 32 +++ .../Mods/HUDRemoveOverdriveBlur/rules.txt | 6 + .../HideOfflineLabel/patch_NoOfflineLabel.asm | 35 ++- .../Mods/HideOfflineLabel/rules.txt | 2 +- .../patch_hudtime.asm | 45 +++- .../Mods/HudChangeTimeFromEmanual/rules.txt | 4 +- .../patch_randaffix.asm | 25 +- .../rules.txt | 15 +- .../patch_quality.asm | 34 ++- .../Mods/LootEquipmentsBestQuality/rules.txt | 51 +++- .../LootEquipmentsForceCount/patch_count.asm | 18 +- .../Mods/LootEquipmentsForceCount/rules.txt | 17 +- .../LootEquipmentsForceType/patch_type.asm | 48 ++-- .../Mods/LootEquipmentsForceType/rules.txt | 5 +- .../patch_broken.asm | 16 +- .../Mods/LootEquipmentsIgnoreBroken/rules.txt | 13 +- .../LootMaterialsDrop/patch_materials.asm | 77 ++++-- .../Mods/LootMaterialsDrop/rules.txt | 4 +- .../LootTreasureQuality/patch_treasure.asm | 20 +- .../Mods/LootTreasureQuality/rules.txt | 12 +- .../Mods/MaxItems/patch_maxitems.asm | 66 ++--- .../Mods/MaxItems/rules.txt | 26 +- .../Mods/MaxMoney/patch_maxmoney.asm | 59 ++++- .../Mods/MaxMoney/rules.txt | 2 +- .../Mods/MaxTickets/patch_maxtickets.asm | 28 ++- .../Mods/MaxTickets/rules.txt | 22 +- .../patch_music_overdrive.asm | 19 +- .../Mods/MusicOverdriveDisabled/rules.txt | 2 +- .../patch_music_flight.asm | 19 +- .../Mods/MusicSkellFlightDisabled/rules.txt | 2 +- .../Mods/PhysicsJumpToTheMoon/patch_jump.asm | 30 ++- .../Mods/PhysicsJumpToTheMoon/rules.txt | 52 +++- .../Mods/PhysicsRunForrestRun/patch_run.asm | 19 +- .../Mods/PhysicsRunForrestRun/rules.txt | 6 +- .../WeatherForceWeather/patch_weather.asm | 24 +- .../Mods/WeatherForceWeather/rules.txt | 2 +- src/XenobladeChroniclesX/Mods/readme.md | 10 +- 113 files changed, 2002 insertions(+), 910 deletions(-) create mode 100644 src/XenobladeChroniclesX/Mods/FOVSetting/patch_fov.asm delete mode 100644 src/XenobladeChroniclesX/Mods/FOVSetting/patches.txt create mode 100644 src/XenobladeChroniclesX/Mods/HUDFreecam/patch_Freecam.asm create mode 100644 src/XenobladeChroniclesX/Mods/HUDFreecam/rules.txt create mode 100644 src/XenobladeChroniclesX/Mods/HUDNoModelFade/patch_NoModelFade.asm create mode 100644 src/XenobladeChroniclesX/Mods/HUDNoModelFade/rules.txt create mode 100644 src/XenobladeChroniclesX/Mods/HUDRemoveOverdriveBlur/patch_RemoveBlur.asm create mode 100644 src/XenobladeChroniclesX/Mods/HUDRemoveOverdriveBlur/rules.txt diff --git a/src/XenobladeChroniclesX/Mods/60FPS/patch_Cutscene.asm b/src/XenobladeChroniclesX/Mods/60FPS/patch_Cutscene.asm index 6b36880c..14409fe1 100644 --- a/src/XenobladeChroniclesX/Mods/60FPS/patch_Cutscene.asm +++ b/src/XenobladeChroniclesX/Mods/60FPS/patch_Cutscene.asm @@ -1,6 +1,5 @@ [XCX_FPS++_Cutscene] -moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D ; 1.0.1E, 1.0.2U, 1.0.2J - +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J .origin = codecave forceCutsceneLimit: @@ -109,4 +108,4 @@ mr r4, r10 lis r10, const_30@ha lfs f10, const_30@l(r10) -b _setGameSpeed \ No newline at end of file +b _setGameSpeed diff --git a/src/XenobladeChroniclesX/Mods/60FPS/patch_GameSpeed.asm b/src/XenobladeChroniclesX/Mods/60FPS/patch_GameSpeed.asm index 0ca52800..8e954fa1 100644 --- a/src/XenobladeChroniclesX/Mods/60FPS/patch_GameSpeed.asm +++ b/src/XenobladeChroniclesX/Mods/60FPS/patch_GameSpeed.asm @@ -1,6 +1,5 @@ [XCX_FPS++_GameSpeed] -moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D ; 1.0.1E, 1.0.2U, 1.0.2J - +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J .origin = codecave # Constants @@ -248,8 +247,8 @@ lwz r10, 0x14(r1) blr -[XCX_FPS++_GameSpeed_V101E] -moduleMatches = 0xF882D5CF +[XCX_FPS++_GameSpeed_V101E] ; ##################################################################################################################################################### +moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E ; Global data patch 0x10171980 = havokHalfSpeed: @@ -291,8 +290,51 @@ moduleMatches = 0xF882D5CF # 0x027A33DC = lfs f1, averageFPS1Inv@l(r10) ; But introduces shake and stutter issue. CODE XREF: ev::CEvtManager::startPage((float,bool))+6Cj -[XCX_FPS++_GameSpeed_V102J] -moduleMatches = 0x7672271D +[XCX_FPS++_GameSpeed_V102U] ; ##################################################################################################################################################### +moduleMatches = 0x30B6E091 ; 1.0.2U + +; Global data patch +0x10171980 = havokHalfSpeed: +0x10171980 = .float $fpsLimit +0x100598E4 = titleScreenSpeed: +0x100598E4 = .float (30.0/$fpsLimit) +0x10012644 = soulVoiceSpeed: +0x10012644 = .float (900/$fpsLimit) + +; Instruction-specific patches +0x02228274 = lis r5, averageFPS0.1@ha ; Controller acceleration +0x0222827C = lfs f30, averageFPS0.1@l(r5) ; Controller acceleration +0x0273E3CC = lis r7, averageFPS1Inv@ha ; Sync elevator, vehicles etc +0x0273E3D0 = lfs f31, averageFPS1Inv@l(r7) ; Sync elevator, vehicles etc +0x0276A85C = lis r8, averageFPS1Inv@ha ; Sync in-game cutscenes +0x0276A860 = lfs f31, averageFPS1Inv@l(r8) ; Sync in-game cutscenes +0x025F299C = lis r12, averageFPS1Inv@ha ; Move__11CfSceneTaskFv ; Filter CPU, 30FPS logic +0x025F29A4 = lfs f31, averageFPS1Inv@l(r12) ; Move__11CfSceneTaskFv +# 0x02D39CE0 = lis r12, const_guiSpeed@ha ; AnimeObject::set +# 0x02D39CE4 = lfs f13, const_guiSpeed@l(r12) ; AnimeObject::set +0x02D202C8 = lis r12, const_guiSpeed@ha ; MenuObject::playEvent +0x02D202CC = lfs f31, const_guiSpeed@l(r12) ; MenuObject::playEvent +0x02D20394 = lis r12, const_guiSpeed@ha ; MenuObject::playEventFrame +0x02D20398 = lfs f31, const_guiSpeed@l(r12) ; MenuObject::playEventFrame + +; Call GX2SetSwapInterval with 0 which removes any vsync +0x02FD8A34 = li r3, 0 +; Use FPS waiting logic even with swap interval being 0 +0x02FD59B4 = li r3, 1 + +0x02FD5A54 = bla _calculateGamespeed +0x027685B0 = bla _useCutsceneLimit +0x03AC2790 = bla _usePrerenderedCutsceneLimit + +# These patches are replaced by lowering the framerate to prevent side-effects +# 0x027398B4 = lis r11, averageFPS1@ha ; Double updateEventParam cutscenes +# 0x027398C0 = lfs f1, averageFPS1@l(r11) ; Double updateEventParam cutscenes +# 0x027A33D8 = lis r10, averageFPS1Inv@ha ; Half SyncFrame cinematic cutscene, fixes timing issues with cinematic cutscenes +# 0x027A33DC = lfs f1, averageFPS1Inv@l(r10) ; But introduces shake and stutter issue. CODE XREF: ev::CEvtManager::startPage((float,bool))+6Cj + + +[XCX_FPS++_GameSpeed_V102J] ; ##################################################################################################################################################### +moduleMatches = 0x7672271D ; 1.0.2J ; Global data patch 0x10171570 = havokHalfSpeed: @@ -334,12 +376,12 @@ moduleMatches = 0x7672271D # 0x027A1124 = lfs f1, averageFPS1Inv@l(r10) ; But introduces shake and stutter issue. CODE XREF: ev::CEvtManager::startPage((float,bool))+6Cj -[XCX_FPS++_GameSpeed_V102U] -moduleMatches = 0x30B6E091 +[XCX_FPS++_GameSpeed_V100U] ; ##################################################################################################################################################### +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U ; Global data patch -0x10171980 = havokHalfSpeed: -0x10171980 = .float $fpsLimit +0x10171880 = havokHalfSpeed: +0x10171880 = .float $fpsLimit 0x100598E4 = titleScreenSpeed: 0x100598E4 = .float (30.0/$fpsLimit) 0x10012644 = soulVoiceSpeed: @@ -348,30 +390,73 @@ moduleMatches = 0x30B6E091 ; Instruction-specific patches 0x02228274 = lis r5, averageFPS0.1@ha ; Controller acceleration 0x0222827C = lfs f30, averageFPS0.1@l(r5) ; Controller acceleration -0x0273E3CC = lis r7, averageFPS1Inv@ha ; Sync elevator, vehicles etc -0x0273E3D0 = lfs f31, averageFPS1Inv@l(r7) ; Sync elevator, vehicles etc -0x0276A85C = lis r8, averageFPS1Inv@ha ; Sync in-game cutscenes -0x0276A860 = lfs f31, averageFPS1Inv@l(r8) ; Sync in-game cutscenes -0x025F299C = lis r12, averageFPS1Inv@ha ; Move__11CfSceneTaskFv ; Filter CPU, 30FPS logic -0x025F29A4 = lfs f31, averageFPS1Inv@l(r12) ; Move__11CfSceneTaskFv -# 0x02D39CE0 = lis r12, const_guiSpeed@ha ; AnimeObject::set -# 0x02D39CE4 = lfs f13, const_guiSpeed@l(r12) ; AnimeObject::set -0x02D202C8 = lis r12, const_guiSpeed@ha ; MenuObject::playEvent -0x02D202CC = lfs f31, const_guiSpeed@l(r12) ; MenuObject::playEvent -0x02D20394 = lis r12, const_guiSpeed@ha ; MenuObject::playEventFrame -0x02D20398 = lfs f31, const_guiSpeed@l(r12) ; MenuObject::playEventFrame +0x0273E36C = lis r7, averageFPS1Inv@ha ; Sync elevator, vehicles etc +0x0273E370 = lfs f31, averageFPS1Inv@l(r7) ; Sync elevator, vehicles etc +0x0276A7FC = lis r8, averageFPS1Inv@ha ; Sync in-game cutscenes +0x0276A800 = lfs f31, averageFPS1Inv@l(r8) ; Sync in-game cutscenes +0x025F292C = lis r12, averageFPS1Inv@ha ; Move__11CfSceneTaskFv ; Filter CPU, 30FPS logic +0x025F2934 = lfs f31, averageFPS1Inv@l(r12) ; Move__11CfSceneTaskFv +# 0x02D39B68 = lis r12, const_guiSpeed@ha ; AnimeObject::set +# 0x02D39B6C = lfs f13, const_guiSpeed@l(r12) ; AnimeObject::set +0x02D20150 = lis r12, const_guiSpeed@ha ; MenuObject::playEvent +0x02D20154 = lfs f31, const_guiSpeed@l(r12) ; MenuObject::playEvent +0x02D2021C = lis r12, const_guiSpeed@ha ; MenuObject::playEventFrame +0x02D20220 = lfs f31, const_guiSpeed@l(r12) ; MenuObject::playEventFrame ; Call GX2SetSwapInterval with 0 which removes any vsync -0x02FD8A34 = li r3, 0 +0x02FD88BC = li r3, 0 ; Use FPS waiting logic even with swap interval being 0 -0x02FD59B4 = li r3, 1 +0x02FD583C = li r3, 1 -0x02FD5A54 = bla _calculateGamespeed -0x027685B0 = bla _useCutsceneLimit -0x03AC2790 = bla _usePrerenderedCutsceneLimit +0x02FD58DC = bla _calculateGamespeed +0x02768550 = bla _useCutsceneLimit +0x03AC2610 = bla _usePrerenderedCutsceneLimit # These patches are replaced by lowering the framerate to prevent side-effects -# 0x027398B4 = lis r11, averageFPS1@ha ; Double updateEventParam cutscenes -# 0x027398C0 = lfs f1, averageFPS1@l(r11) ; Double updateEventParam cutscenes -# 0x027A33D8 = lis r10, averageFPS1Inv@ha ; Half SyncFrame cinematic cutscene, fixes timing issues with cinematic cutscenes -# 0x027A33DC = lfs f1, averageFPS1Inv@l(r10) ; But introduces shake and stutter issue. CODE XREF: ev::CEvtManager::startPage((float,bool))+6Cj +# 0x02739854 = lis r11, averageFPS1@ha ; Double updateEventParam cutscenes +# 0x02739860 = lfs f1, averageFPS1@l(r11) ; Double updateEventParam cutscenes +# 0x027A3378 = lis r10, averageFPS1Inv@ha ; Half SyncFrame cinematic cutscene, fixes timing issues with cinematic cutscenes +# 0x027A337C = lfs f1, averageFPS1Inv@l(r10) ; But introduces shake and stutter issue. CODE XREF: ev::CEvtManager::startPage((float,bool))+6Cj + + +[XCX_FPS++_GameSpeed_V100J] ; ##################################################################################################################################################### +moduleMatches = 0x785CA8A9 ; 1.0.0J + +; Global data patch +0x10171070 = havokHalfSpeed: +0x10171070 = .float $fpsLimit +0x10059514 = titleScreenSpeed: +0x10059514 = .float (30.0/$fpsLimit) +0x1001260C = soulVoiceSpeed: +0x1001260C = .float (900/$fpsLimit) + +; Instruction-specific patches +0x02227ABC = lis r5, averageFPS0.1@ha ; Controller acceleration +0x02227AC4 = lfs f30, averageFPS0.1@l(r5) ; Controller acceleration +0x0273BBD0 = lis r7, averageFPS1Inv@ha ; Sync elevator, vehicles etc +0x0273BBD4 = lfs f31, averageFPS1Inv@l(r7) ; Sync elevator, vehicles etc +0x02768064 = lis r8, averageFPS1Inv@ha ; Sync in-game cutscenes +0x02768068 = lfs f31, averageFPS1Inv@l(r8) ; Sync in-game cutscenes +0x025F149C = lis r12, averageFPS1Inv@ha ; Move__11CfSceneTaskFv ; Filter CPU, 30FPS logic +0x025F14A4 = lfs f31, averageFPS1Inv@l(r12) ; Move__11CfSceneTaskFv +# 0x02D30A10 = lis r12, const_guiSpeed@ha ; AnimeObject::set +# 0x02D30A14 = lfs f13, const_guiSpeed@l(r12) ; AnimeObject::set +0x02D1709C = lis r12, const_guiSpeed@ha ; MenuObject::playEvent +0x02D170A0 = lfs f31, const_guiSpeed@l(r12) ; MenuObject::playEvent +0x02D17168 = lis r12, const_guiSpeed@ha ; MenuObject::playEventFrame +0x02D1716C = lfs f31, const_guiSpeed@l(r12) ; MenuObject::playEventFrame + +; Call GX2SetSwapInterval with 0 which removes any vsync +0x02FCEB9C = li r3, 0 +; Use FPS waiting logic even with swap interval being 0 +0x02FCBB1C = li r3, 1 + +0x02FCBBBC = bla _calculateGamespeed +0x02765DB8 = bla _useCutsceneLimit +0x03AB85A8 = bla _usePrerenderedCutsceneLimit + +# These patches are replaced by lowering the framerate to prevent side-effects +# 0x027370B8 = lis r11, averageFPS1@ha ; Double updateEventParam cutscenes +# 0x027370C4 = lfs f1, averageFPS1@l(r11) ; Double updateEventParam cutscenes +# 0x027A0180 = lis r10, averageFPS1Inv@ha ; Half SyncFrame cinematic cutscene, fixes timing issues with cinematic cutscenes +# 0x027A0184 = lfs f1, averageFPS1Inv@l(r10) ; But introduces shake and stutter issue. CODE XREF: ev::CEvtManager::startPage((float,bool))+6Cj diff --git a/src/XenobladeChroniclesX/Mods/60FPS/patch_Overdrive.asm b/src/XenobladeChroniclesX/Mods/60FPS/patch_Overdrive.asm index 18dc3a3b..daa2850b 100644 --- a/src/XenobladeChroniclesX/Mods/60FPS/patch_Overdrive.asm +++ b/src/XenobladeChroniclesX/Mods/60FPS/patch_Overdrive.asm @@ -1,6 +1,5 @@ -[XCX_FPS++_Overdrive_General] ; ######################################################## -moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D ; 1.0.1E, 1.0.2U, 1.0.2J - +[XCX_FPS++_Overdrive_General] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J .origin = codecave _over: @@ -10,20 +9,18 @@ _over: fmuls f1, f31, f1 blr -[XCX_FPS++_Overdrive_V101E] ; ######################################################## -moduleMatches = 0xF882D5CF ; 1.0.1E +[XCX_FPS++_Overdrive_V101E_V102U_V100U] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07, 0xAB97DE6B, 0x676EB33E ; 1.0.1E, 1.0.2U, 1.0.0E, 1.0.1U, 1.0.0U 0x021BC904 = bla _over ; Gear::CGear::update((float)) 0x021E2020 = bla _over ; Gear::CMode::Update((float)) -[XCX_FPS++_Overdrive_V102U] ; ######################################################## -moduleMatches = 0x30B6E091 ; 1.0.2U - -0x021BC904 = bla _over ; Gear::CGear::update((float)) -0x021E2020 = bla _over ; Gear::CMode::Update((float)) - -[XCX_FPS++_Overdrive_V102J] ; ######################################################## +[XCX_FPS++_Overdrive_V102J] moduleMatches = 0x7672271D ; 1.0.2J - 0x021BC3D0 = bla _over ; Gear::CGear::update((float)) -0x021E1AEC = bla _over ; Gear::CMode::Update((float)) \ No newline at end of file +0x021E1AEC = bla _over ; Gear::CMode::Update((float)) + +[XCX_FPS++_Overdrive_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x021BC14C = bla _over ; Gear::CGear::update((float)) +0x021E1868 = bla _over ; Gear::CMode::Update((float)) diff --git a/src/XenobladeChroniclesX/Mods/60FPS/patch_QTE.asm b/src/XenobladeChroniclesX/Mods/60FPS/patch_QTE.asm index 397f5272..2aae33a4 100644 --- a/src/XenobladeChroniclesX/Mods/60FPS/patch_QTE.asm +++ b/src/XenobladeChroniclesX/Mods/60FPS/patch_QTE.asm @@ -1,6 +1,5 @@ -[XCX_FPS++_QTE_General] ; ######################################################## -moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D ; 1.0.1E, 1.0.2U, 1.0.2J - +[XCX_FPS++_QTE_General] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J .origin = codecave timingFloatConv: @@ -76,35 +75,48 @@ _justFrame2: blr -[XCX_FPS++_QTE_V101E] ; ######################################################## -moduleMatches = 0xF882D5CF ; 1.0.1E +[XCX_FPS++_QTE_V101E] ; ######################################################## +moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E ; menu::MenuButtonChallenge::setup 0x02ACE40C = lis r7, averageFPS30Inv@ha 0x02ACE414 = lfs f0, averageFPS30Inv@l(r7) - ; menu::MenuButtonChallenge::move 0x02ACE6E4 = bla _justFrame1 0x02ACE700 = bla _justFrame2 [XCX_FPS++_QTE_V102U] ; ######################################################## moduleMatches = 0x30B6E091 ; 1.0.2U - ; menu::MenuButtonChallenge::setup 0x02ACE3FC = lis r7, averageFPS30Inv@ha 0x02ACE404 = lfs f0, averageFPS30Inv@l(r7) - ; menu::MenuButtonChallenge::move 0x02ACE6D4 = bla _justFrame1 0x02ACE6F0 = bla _justFrame2 -[XCX_FPS++_QTE_V102J] +[XCX_FPS++_QTE_V102J] ; ######################################################## moduleMatches = 0x7672271D ; 1.0.2J - ; menu::MenuButtonChallenge::setup 0x02ACAA38 = lis r7, averageFPS30Inv@ha 0x02ACAA40 = lfs f0, averageFPS30Inv@l(r7) - ; menu::MenuButtonChallenge::move 0x02ACAD10 = bla _justFrame1 -0x02ACAD2C = bla _justFrame2 \ No newline at end of file +0x02ACAD2C = bla _justFrame2 + +[XCX_FPS++_QTE_V100U] ; ######################################################## +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U +; menu::MenuButtonChallenge::setup +0x02ACE380 = lis r7, averageFPS30Inv@ha +0x02ACE388 = lfs f0, averageFPS30Inv@l(r7) +; menu::MenuButtonChallenge::move +0x02ACE658 = bla _justFrame1 +0x02ACE674 = bla _justFrame2 + +[XCX_FPS++_QTE_V100J] ; ######################################################## +moduleMatches = 0x785CA8A9 ; 1.0.0J +; menu::MenuButtonChallenge::setup +0x02AC8C00 = lis r7, averageFPS30Inv@ha +0x02AC8C08 = lfs f0, averageFPS30Inv@l(r7) +; menu::MenuButtonChallenge::move +0x02AC8ED8 = bla _justFrame1 +0x02AC8EF4 = bla _justFrame2 diff --git a/src/XenobladeChroniclesX/Mods/BattleDamageModGround/patch_dmg.asm b/src/XenobladeChroniclesX/Mods/BattleDamageModGround/patch_dmg.asm index f66505d8..af7a6d18 100644 --- a/src/XenobladeChroniclesX/Mods/BattleDamageModGround/patch_dmg.asm +++ b/src/XenobladeChroniclesX/Mods/BattleDamageModGround/patch_dmg.asm @@ -1,17 +1,22 @@ -[XCX_DAMAGES] #################################################################################################################################### -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U - -.origin = codecave - -.int $mult - +[XCX_DAMAGES_V101E] +moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E +0x02E0C5B0 = li r3, -1-$mult 0x025D896C = mulli r4, r31, $mult -[XCX_DAMAGES_1U] #################################################################################################################################### -moduleMatches = 0xAB97DE6B ; 1.0.1U +[XCX_DAMAGES_V102U] +moduleMatches = 0x30B6E091 ; 1.0.2U +0x02E0C550 = li r3, -1-$mult +0x025D896C = mulli r4, r31, $mult -.origin = codecave - -.int $mult +;[XCX_DAMAGES_V102J] +;DO NOT port to JP 1.0.2 untill official game servers go offline +[XCX_DAMAGES_V100U] +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U +0x02E0C3D8 = li r3, -1-$mult 0x025D88FC = mulli r4, r31, $mult + +[XCX_DAMAGES_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x02E03228 = li r3, -1-$mult +0x025CD268 = mulli r4, r31, $mult diff --git a/src/XenobladeChroniclesX/Mods/BattleDamageModGround/rules.txt b/src/XenobladeChroniclesX/Mods/BattleDamageModGround/rules.txt index fce56190..cf27ebf9 100644 --- a/src/XenobladeChroniclesX/Mods/BattleDamageModGround/rules.txt +++ b/src/XenobladeChroniclesX/Mods/BattleDamageModGround/rules.txt @@ -2,27 +2,31 @@ 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). -version = 5 +description = Increase the damage done by your team. Doesn't affect the damage numbers that are shown. +version = 6 [Default] $mult = 2 [Preset] -name = Damage x 2 +name = Damage x2 [Preset] -name = Damage x 3 +name = Damage x3 $mult = 3 [Preset] -name = Damage x 5 +name = Damage x5 $mult = 5 [Preset] -name = Damage x 10 +name = Damage x10 $mult = 10 [Preset] -name = Damage x 100 +name = Damage x25 +$mult = 25 + +[Preset] +name = Damage x100 $mult = 100 diff --git a/src/XenobladeChroniclesX/Mods/BattleDamageModGround2/patch_dmg.asm b/src/XenobladeChroniclesX/Mods/BattleDamageModGround2/patch_dmg.asm index 38315ceb..633db01d 100644 --- a/src/XenobladeChroniclesX/Mods/BattleDamageModGround2/patch_dmg.asm +++ b/src/XenobladeChroniclesX/Mods/BattleDamageModGround2/patch_dmg.asm @@ -1,22 +1,32 @@ [XCX_DAMAGES] -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J .origin = codecave - .int $divr - _divide_dmg: li r4, $divr divw r4, r31, r4 blr +[XCX_DAMAGES_V101E] +moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E +0x02E0C5B0 = li r3, -1-$divr 0x025D896C = bla _divide_dmg -[XCX_DAMAGES_1U] -moduleMatches = 0xAB97DE6B ; 1.0.1U +[XCX_DAMAGES_V102U] +moduleMatches = 0x30B6E091 ; 1.0.2U +0x02E0C550 = li r3, -1-$divr +0x025D896C = bla _divide_dmg -.origin = codecave +;[XCX_DAMAGES_V102J] +;DO NOT port to JP 1.0.2 untill official game servers go offline -.int $mult +[XCX_DAMAGES_V100U] +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U +0x02E0C3D8 = li r3, -1-$divr +0x025D88FC = bla _divide_dmg -0x025D88FC = mulli r4, r31, $mult +[XCX_DAMAGES_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x02E03228 = li r3, -1-$divr +0x025CD268 = bla _divide_dmg diff --git a/src/XenobladeChroniclesX/Mods/BattleDamageModGround2/rules.txt b/src/XenobladeChroniclesX/Mods/BattleDamageModGround2/rules.txt index 63c687bb..f06488ac 100644 --- a/src/XenobladeChroniclesX/Mods/BattleDamageModGround2/rules.txt +++ b/src/XenobladeChroniclesX/Mods/BattleDamageModGround2/rules.txt @@ -2,22 +2,15 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = Ground Damage Divisor path = "Xenoblade Chronicles X/Mods/Battle/Ground damage divisor" -description = Make the game more challenging by dividing the given damage you and your team do to enemies. Doesn't affect the damage numbers that are shown.|Might be experimental since it's not fully been tested yet.||Made by Lashoun. -version = 5 +description = Make the game more challenging by dividing the given damage you and your team do to enemies. Doesn't affect the damage numbers that are shown.||Made by Lashoun. +version = 6 [Default] $divr = 2 -[Preset] -category = Damage Divisor -name = Normal Damage (Default) -default = 1 -$divr = 1 - [Preset] category = Damage Divisor name = Damage / 2 -$divr = 2 [Preset] category = Damage Divisor @@ -36,7 +29,7 @@ $divr = 10 [Preset] category = Damage Divisor -name = Damage / 10 +name = Damage / 50 $divr = 50 [Preset] diff --git a/src/XenobladeChroniclesX/Mods/BattleEnemyStats/patch_stats.asm b/src/XenobladeChroniclesX/Mods/BattleEnemyStats/patch_stats.asm index d5af7516..a54e3cb9 100644 --- a/src/XenobladeChroniclesX/Mods/BattleEnemyStats/patch_stats.asm +++ b/src/XenobladeChroniclesX/Mods/BattleEnemyStats/patch_stats.asm @@ -1,7 +1,6 @@ -[XCX_ENEMIESTATS] -moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U - -; ---------------------------------------------------------------------------- +[XCX_ENEMIESTATS_V101E] +moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E +; ------------------------------------------------------------------------ ; WHO : calcEnParam__3cfsFPQ2_3cfs7SChrPrmUiT2 ; WHAT : Apply modificator on enemies stats (HP, Melee Attack, Melee Accuracy, Ranged Attack, Ranged Accuracy, Potential and Evasion) @@ -9,5 +8,23 @@ moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U ; 70% = 0.0007 ; 50% = 0.0005 ; 1% = 0.00001 ; GAME CRASH (enemis are too weak) - +0x02E0C5B0 = li r3, -3 0x1003206C = .float $mod + +[XCX_ENEMIESTATS_V102U] +moduleMatches = 0x30B6E091 ; 1.0.2U +0x02E0C550 = li r3, -3 +0x1003206C = .float $mod + +;[XCX_ENEMIESTATS_V102J] +;DO NOT port to JP 1.0.2 untill official game servers go offline + +[XCX_ENEMIESTATS_V100U] +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U +0x02E0C3D8 = li r3, -3 +0x1003206C = .float $mod + +[XCX_ENEMIESTATS_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x02E03228 = li r3, -3 +0x10031FDC = .float $mod diff --git a/src/XenobladeChroniclesX/Mods/BattleEnemyStats/rules.txt b/src/XenobladeChroniclesX/Mods/BattleEnemyStats/rules.txt index 70b23318..250a764d 100644 --- a/src/XenobladeChroniclesX/Mods/BattleEnemyStats/rules.txt +++ b/src/XenobladeChroniclesX/Mods/BattleEnemyStats/rules.txt @@ -3,23 +3,43 @@ 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. -version = 5 +version = 6 [Default] +$mod = 0.001 + +[Preset] +name = "Set at 25%" +$mod = 0.00025 + +[Preset] +name = "Set at 50%" $mod = 0.0005 [Preset] -name = Set at 50% - -[Preset] -name = Set at 75% +name = "Set at 75%" $mod = 0.00075 [Preset] -name = Set at 125% +name = "Set at 100% (default)" +default = 1 + +[Preset] +name = "Set at 125%" $mod = 0.00125 [Preset] -name = Set at 150% +name = "Set at 150%" $mod = 0.0015 +[Preset] +name = "Set at 200%" +$mod = 0.002 + +[Preset] +name = "Hell: Set at 300%" +$mod = 0.003 + +[Preset] +name = "Impossible: Set at 1000%" +$mod = 0.01 diff --git a/src/XenobladeChroniclesX/Mods/BattleEscapeDistance/patch_escape.asm b/src/XenobladeChroniclesX/Mods/BattleEscapeDistance/patch_escape.asm index 09ea1216..d1e939b0 100644 --- a/src/XenobladeChroniclesX/Mods/BattleEscapeDistance/patch_escape.asm +++ b/src/XenobladeChroniclesX/Mods/BattleEscapeDistance/patch_escape.asm @@ -1,8 +1,6 @@ [XCX_RELEASEDIST] -moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U - +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9, 0x8780C48F ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J, 1.0.1J .origin = codecave - ; ---------------------------------------------------------------------------- ; WHO : cfs::CfCompoPropertyEnemy::getReleasePcDistanceXZ ; WHAT : Reduce escape distance from enemies (to lose aggro) diff --git a/src/XenobladeChroniclesX/Mods/BattleEscapeDistance/rules.txt b/src/XenobladeChroniclesX/Mods/BattleEscapeDistance/rules.txt index 7a3e43e2..863a90e6 100644 --- a/src/XenobladeChroniclesX/Mods/BattleEscapeDistance/rules.txt +++ b/src/XenobladeChroniclesX/Mods/BattleEscapeDistance/rules.txt @@ -1,16 +1,33 @@ [Definition] 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. -version = 5 +name = "Enemy de-aggro range reducer" +path = "Xenoblade Chronicles X/Mods/Battle/Enemy de-aggro" +description = Decrease or increase the distance needed to run to lose aggro from enemies. +version = 6 [Default] -$mod = 1.333 +$mod = 1.0 [Preset] -name = Apply -25% +name = "Hell: Enemies will never de-aggro" +$mod = 0.0001 [Preset] -name = Apply -50% +name = "Increase Range x2" +$mod = 0.5 + +[Preset] +name = "Range x1 (default)" +default = 1 + +[Preset] +name = "Decrease Range / 2" $mod = 2.0 + +[Preset] +name = "Decrease Range / 4" +$mod = 4.0 + +[Preset] +name = "Enemies will not fight at all (game breaking)" +$mod = 500.0 diff --git a/src/XenobladeChroniclesX/Mods/BattleOverdriveUnlocked/patch_overdrive.asm b/src/XenobladeChroniclesX/Mods/BattleOverdriveUnlocked/patch_overdrive.asm index 4f6307ff..f22ce38a 100644 --- a/src/XenobladeChroniclesX/Mods/BattleOverdriveUnlocked/patch_overdrive.asm +++ b/src/XenobladeChroniclesX/Mods/BattleOverdriveUnlocked/patch_overdrive.asm @@ -1,9 +1,17 @@ -[XCX_OVERDRIVE] -moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U - +[XCX_OVERDRIVE_V101E_102U_100U] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07, 0xAB97DE6B, 0x676EB33E ; 1.0.1E, 1.0.2U, 1.0.0E, 1.0.1U, 1.0.0U ; ---------------------------------------------------------------------------- ; WHO : Gear::CGear::IsPermit((void)) ; WHAT : Always returns true to unlock Overdrive even before chapter 5 +0x021B70AC = li r3, $mod +0x021B70C4 = li r3, $mod -0x021B70AC = li r3, 1 -0x021B70C4 = li r3, 1 +[XCX_OVERDRIVE_V102J] +moduleMatches = 0x7672271D ; 1.0.2J +0x021B6B78 = li r3, $mod +0x021B6B90 = li r3, $mod + +[XCX_OVERDRIVE_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x021B68F4 = li r3, $mod +0x021B690C = li r3, $mod diff --git a/src/XenobladeChroniclesX/Mods/BattleOverdriveUnlocked/rules.txt b/src/XenobladeChroniclesX/Mods/BattleOverdriveUnlocked/rules.txt index 1209eb94..31d653c8 100644 --- a/src/XenobladeChroniclesX/Mods/BattleOverdriveUnlocked/rules.txt +++ b/src/XenobladeChroniclesX/Mods/BattleOverdriveUnlocked/rules.txt @@ -2,5 +2,15 @@ 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. -version = 5 \ No newline at end of file +description = Unleash the power of Overdrive before Chapter 5 or relock it after Chapter 5. +version = 6 + +[Default] +$mod = 1 + +[Preset] +name = Force Unlock + +[Preset] +name = Force Relock +$mod = 0 diff --git a/src/XenobladeChroniclesX/Mods/BattleQteDollLost/patch_qte_lostdoll.asm b/src/XenobladeChroniclesX/Mods/BattleQteDollLost/patch_qte_lostdoll.asm index e623bf1b..76b4bee0 100644 --- a/src/XenobladeChroniclesX/Mods/BattleQteDollLost/patch_qte_lostdoll.asm +++ b/src/XenobladeChroniclesX/Mods/BattleQteDollLost/patch_qte_lostdoll.asm @@ -1,9 +1,5 @@ -[XCX_QTE_DOLLLOST_ALL] ################################################################################################# -moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U - -0x027F9464 = SetInsure: -0x023EEFB0 = getPropAccessor: - +[XCX_QTE_DOLLLOST] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.0U, 1.0.0J .origin = codecave _setDestructionExcellent: @@ -43,9 +39,34 @@ _setDestructionGoodExit: mr r3, r31 ; restore r3 from r31 saved in the stack blr + +[XCX_QTE_DOLLLOST_V101E_V102U] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07 ; 1.0.1E, 1.0.2U, 1.0.0E +0x027F9464 = SetInsure: +0x023EEFB0 = getPropAccessor: ; ---------------------------------------------------------------------------- ; 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 + +[XCX_QTE_DOLLLOST_V102J] +moduleMatches = 0x7672271D ; 1.0.2J +0x027F7008 = SetInsure: +0x023EE5F0 = getPropAccessor: +0x02098268 = bla _setDestructionExcellent +0x020982D0 = bla _setDestructionGood + +[XCX_QTE_DOLLLOST_V100U] +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U +0x027F93E8 = SetInsure: +0x023EEF40 = getPropAccessor: +0x0209879C = bla _setDestructionExcellent +0x02098804 = bla _setDestructionGood + +[XCX_QTE_DOLLLOST_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x027F5FDC = SetInsure: +0x023EE120 = getPropAccessor: +0x02097FF4 = bla _setDestructionExcellent +0x0209805C = bla _setDestructionGood diff --git a/src/XenobladeChroniclesX/Mods/BattleQteDollLost/rules.txt b/src/XenobladeChroniclesX/Mods/BattleQteDollLost/rules.txt index 1a3ab465..be9bbd9e 100644 --- a/src/XenobladeChroniclesX/Mods/BattleQteDollLost/rules.txt +++ b/src/XenobladeChroniclesX/Mods/BattleQteDollLost/rules.txt @@ -1,6 +1,6 @@ [Definition] titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 -name = "Soul Challenges - Skell restored" -path = "Xenoblade Chronicles X/Mods/Battle/Soul Challenges - Skell restored" +name = "Soul Challenges - Skell auto restore" +path = "Xenoblade Chronicles X/Mods/Battle/Soul Challenges - Skell auto restore" 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 +version = 6 diff --git a/src/XenobladeChroniclesX/Mods/BattleQteSoulVoices/patch_qte_soulvoices.asm b/src/XenobladeChroniclesX/Mods/BattleQteSoulVoices/patch_qte_soulvoices.asm index 54b796dd..c0754fec 100644 --- a/src/XenobladeChroniclesX/Mods/BattleQteSoulVoices/patch_qte_soulvoices.asm +++ b/src/XenobladeChroniclesX/Mods/BattleQteSoulVoices/patch_qte_soulvoices.asm @@ -1,16 +1,26 @@ -[XCX_QTE_AUTO_ALL] ################################################################################################# -moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U - +[XCX_QTE_AUTO_V101E_V102U_V100U] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07, 0xAB97DE6B, 0x676EB33E ; 1.0.1E, 1.0.2U, 1.0.0E, 1.0.1U, 1.0.0U ; ---------------------------------------------------------------------------- ; WHO : Battle::CSoulVoiceButtonChallenge::applyResult((void)) ; WHAT : Force QTE result on Soul Voices (0 = fail 1 = good, 2 = excellent) - -0x0209BA38 = li r9, 2 - +0x0209BA38 = li r9, $mod ; ---------------------------------------------------------------------------- ; WHO : Battle::CSoulVoiceButtonChallenge::updateInternal((float)) ; WHAT : Auto Apply QTE (dot not call Battle::CButtonChallengeManager::CallUI) - 0x0209D764 = _applyResult: 0x0209D6F0 = b _applyResult 0x0209D720 = b _applyResult + +[XCX_QTE_AUTO_V102J] +moduleMatches = 0x7672271D ; 1.0.2J +0x0209B504 = li r9, $mod +0x0209D230 = _applyResult: +0x0209D1BC = b _applyResult +0x0209D1EC = b _applyResult + +[XCX_QTE_AUTO_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x0209B290 = li r9, $mod +0x0209CFBC = _applyResult: +0x0209CF48 = b _applyResult +0x0209CF78 = b _applyResult diff --git a/src/XenobladeChroniclesX/Mods/BattleQteSoulVoices/rules.txt b/src/XenobladeChroniclesX/Mods/BattleQteSoulVoices/rules.txt index cfc3a147..33aaa2e4 100644 --- a/src/XenobladeChroniclesX/Mods/BattleQteSoulVoices/rules.txt +++ b/src/XenobladeChroniclesX/Mods/BattleQteSoulVoices/rules.txt @@ -1,6 +1,20 @@ [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 +name = "Soul Challenges - QTE Auto" +path = "Xenoblade Chronicles X/Mods/Battle/Soul Challenges - QTE Auto" +description = QTE during battles are automatically done (force result).|Does not work on skell destroyed soul voice. +version = 6 + +[Default] +$mod = 2 + +[Preset] +name = "Force Excellent" + +[Preset] +name = "Force Good" +$mod = 1 + +[Preset] +name = "Force Fail / Disable Soul Voices" +$mod = 0 diff --git a/src/XenobladeChroniclesX/Mods/BattleQteSpeed/patch_qte_speed.asm b/src/XenobladeChroniclesX/Mods/BattleQteSpeed/patch_qte_speed.asm index 38b4d498..d2c20889 100644 --- a/src/XenobladeChroniclesX/Mods/BattleQteSpeed/patch_qte_speed.asm +++ b/src/XenobladeChroniclesX/Mods/BattleQteSpeed/patch_qte_speed.asm @@ -1,7 +1,14 @@ -[XCX_QTE_SPEED_ALL] ################################################################################################# -moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U - +[XCX_QTE_SPEED_V101E_V102U_V100U] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07, 0xAB97DE6B, 0x676EB33E ; 1.0.1E, 1.0.2U, 1.0.0E, 1.0.1U, 1.0.0U ; ---------------------------------------------------------------------------- ; WHO : SoulVoice::CSoulVoice::getDifficulty((void)) ; WHAT : QTE speed does not increase -0x022078D4 = li r3, 1 +0x022078D4 = li r3, $mod + +[XCX_QTE_SPEED_V102J] +moduleMatches = 0x7672271D ; 1.0.2J +0x022073A0 = li r3, $mod + +[XCX_QTE_SPEED_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x0220711C = li r3, $mod diff --git a/src/XenobladeChroniclesX/Mods/BattleQteSpeed/rules.txt b/src/XenobladeChroniclesX/Mods/BattleQteSpeed/rules.txt index 0bca608e..d4623044 100644 --- a/src/XenobladeChroniclesX/Mods/BattleQteSpeed/rules.txt +++ b/src/XenobladeChroniclesX/Mods/BattleQteSpeed/rules.txt @@ -1,6 +1,24 @@ [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 +name = "Soul Challenges - QTE Speed" +path = "Xenoblade Chronicles X/Mods/Battle/Soul Challenges - QTE Speed" +description = Speed of QTE does not increase or decrease during battles. +version = 6 + +[Default] +$mod = 1 + +[Preset] +name = Slow + +[Preset] +name = Mid +$mod = 2 + +[Preset] +name = Fast +$mod = 3 + +[Preset] +name = Faster +$mod = 4 diff --git a/src/XenobladeChroniclesX/Mods/BladeDLCQuestsUnlocked/patch_dlc.asm b/src/XenobladeChroniclesX/Mods/BladeDLCQuestsUnlocked/patch_dlc.asm index e272d9e6..c0a3b80a 100644 --- a/src/XenobladeChroniclesX/Mods/BladeDLCQuestsUnlocked/patch_dlc.asm +++ b/src/XenobladeChroniclesX/Mods/BladeDLCQuestsUnlocked/patch_dlc.asm @@ -1,12 +1,18 @@ -[XCX_DLC] -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U - +[XCX_DLC_V101E_V102U] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07 ; 1.0.1E, 1.0.2U, 1.0.0E ; ---------------------------------------------------------------------------- ; WHO : collectQuestInfoDL__Q2_3cfs15CfSocialManagerFRQ2_2ml45resvector__tm__28_PQ2_3cfs17CfSocialQuestInfo ; WHAT : Disable endgame check to unlock DLC missions 0x022C6B50 = nop -[XCX_DLC_1U] -moduleMatches = 0xAB97DE6B ; 1.0.1U +[XCX_DLC_V102J] +moduleMatches = 0x7672271D ; 1.0.2J +0x022C6560 = nop -0x022C6AE0 = nop \ No newline at end of file +[XCX_DLC_V100U] +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U +0x022C6AE0 = nop + +[XCX_DLC_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x022C6AE0 = nop diff --git a/src/XenobladeChroniclesX/Mods/BladeDLCQuestsUnlocked/rules.txt b/src/XenobladeChroniclesX/Mods/BladeDLCQuestsUnlocked/rules.txt index 00e265d0..92901bf1 100644 --- a/src/XenobladeChroniclesX/Mods/BladeDLCQuestsUnlocked/rules.txt +++ b/src/XenobladeChroniclesX/Mods/BladeDLCQuestsUnlocked/rules.txt @@ -3,5 +3,4 @@ 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. -version = 5 - \ No newline at end of file +version = 6 diff --git a/src/XenobladeChroniclesX/Mods/BladeGainTicketsFromMissions/patch_gainticketsmissions.asm b/src/XenobladeChroniclesX/Mods/BladeGainTicketsFromMissions/patch_gainticketsmissions.asm index f0fec9ba..294d7f4c 100644 --- a/src/XenobladeChroniclesX/Mods/BladeGainTicketsFromMissions/patch_gainticketsmissions.asm +++ b/src/XenobladeChroniclesX/Mods/BladeGainTicketsFromMissions/patch_gainticketsmissions.asm @@ -1,13 +1,10 @@ -[XCX_TICKETS_DLC_ALL] -moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U - +[XCX_TICKETS_DLC] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J .origin = codecave - .int $mission VarTicketsAmount: .int 0 - ; ---------------------------------------------------------------------------- ; WHO : menu::MenuMultiQuestInfoWindow::displayInfo((menu::MenuObject *,bool)) ; menu::MenuMultiQuestResult::setup((void)) @@ -44,23 +41,40 @@ lis r27, VarTicketsAmount@ha lwz r27, VarTicketsAmount@l(r27) blr -[XCX_TICKETS_DLC_1E] ############################################################################################ -moduleMatches = 0xF882D5CF ; 1.0.1E +_ticketsValueJP: +lis r4, VarTicketsAmount@ha +lwz r4, VarTicketsAmount@l(r4) +blr + +[XCX_TICKETS_DLC_V101E] +moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E 0x02B94718 = bla _ticketsDispBefore 0x02B9FE2C = bla _ticketsDispAfter 0x023CC654 = bla _ticketsValue -[XCX_TICKETS_DLC_2U] ############################################################################################ +[XCX_TICKETS_DLC_V102U] moduleMatches = 0x30B6E091 ; 1.0.2U - 0x02B94708 = bla _ticketsDispBefore 0x02B9FE1C = bla _ticketsDispAfter 0x023CC654 = bla _ticketsValue -[XCX_TICKETS_DLC_1U] ############################################################################################ -moduleMatches = 0xAB97DE6B ; 1.0.1U +[XCX_TICKETS_DLC_V102J] +moduleMatches = 0x7672271D ; 1.0.2J +0x02B90654 = bla _ticketsDispBefore +0x02B9B938 = bla _ticketsDispAfter ; +0x023CBE48 = bla _ticketsValueJP +0x023CBF2C = bla _ticketsValueJP +[XCX_TICKETS_DLC_V100U] +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U 0x02B9468C = bla _ticketsDispBefore 0x02B9FD2C = bla _ticketsDispAfter 0x023CC5E4 = bla _ticketsValue + +[XCX_TICKETS_DLC_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x02B8DDA8 = bla _ticketsDispBefore +0x02B98F68 = bla _ticketsDispAfter ; +0x023CB978 = bla _ticketsValueJP +0x023CBA5C = bla _ticketsValueJP diff --git a/src/XenobladeChroniclesX/Mods/BladeGainTicketsFromMissions/rules.txt b/src/XenobladeChroniclesX/Mods/BladeGainTicketsFromMissions/rules.txt index 6c4dcec3..a42ae19d 100644 --- a/src/XenobladeChroniclesX/Mods/BladeGainTicketsFromMissions/rules.txt +++ b/src/XenobladeChroniclesX/Mods/BladeGainTicketsFromMissions/rules.txt @@ -2,15 +2,15 @@ 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. -version = 5 +description = Adds Exchange Tickets in reward of completing Blade missions.|This mod will not work if More Reward Tickets is enabled. +version = 6 [Default] -$mission = 5 - -[Preset] -name = "Gain from DLC missions (money/100)" +$mission = 2 [Preset] name = "Gain from TA missions (exp)" -$mission = 2 + +[Preset] +name = "Gain from DLC missions (money/100)" +$mission = 5 diff --git a/src/XenobladeChroniclesX/Mods/BladeGlobalNemesisMissionsOffline/patch_offline_nemesis.asm b/src/XenobladeChroniclesX/Mods/BladeGlobalNemesisMissionsOffline/patch_offline_nemesis.asm index 5c576578..f20889f6 100644 --- a/src/XenobladeChroniclesX/Mods/BladeGlobalNemesisMissionsOffline/patch_offline_nemesis.asm +++ b/src/XenobladeChroniclesX/Mods/BladeGlobalNemesisMissionsOffline/patch_offline_nemesis.asm @@ -1,8 +1,27 @@ [XCX_OFFLINEWE] -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U - +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J .origin = codecave +; Manage RPs & Appraisal +VarShareRP: +.int 0 +;_shareAP = reloc(0x1039C174) ; (1.0.1E, 1.0.2U) +VarShareAP: +.int 0 + +_loadRP: +lis r12, 0x0022 +ori r12, r12, 0x5510 +blr + +; menu::CTerminalMenu_PieceExchange::offline((void)) +; Allow access to piece exchange from network console +_single: +li r3, 0 +blr + +[XCX_OFFLINEWE_V101E_V102U] ; ###################################################################################### +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07 ; 1.0.1E, 1.0.2U, 1.0.0E ; cfs::CfSocialManager::update((float)) 0x022879D0 = nop ; (network test?) allow call to cfs::CfSocialQuestManager::update((void)) @@ -25,108 +44,142 @@ moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U 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 +0x0282B454 = li r3, 0 ; getWorldEnemyIndexFromQuestID ; |- |- __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 - +[XCX_OFFLINEWE_V101E] ; ############################################################################################ +moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E +0x02AC5C10 = li r3, 0 ; menu::CTerminalMenu_SquadQuest::offline ; 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] ############################################################################################ +[XCX_OFFLINEWE_V102U] ; ############################################################################################ moduleMatches = 0x30B6E091 ; 1.0.2U - -.origin = codecave - 0x02AC5C00 = li r3, 0 ; menu::CTerminalMenu_SquadQuest::offline - 0x02B9B0A0 = li r3, 1 ; Disable call to menu::MenuMultiQuestOrder::canOrderWorldEnemy -;0x02BA0CE0 = bla _updateRP ; menu::MenuMultiQuestResult::updateEnemyBoss((menu::MenuObject *)) +0x02AC612C = ba _single ; menu::CBladeHomuMenu::single((void)) +0x022CA324 = nop ; always all items? ;; -_single: -li r3, 0 -blr +[XCX_OFFLINEWE_V102J] ; ############################################################################################ +moduleMatches = 0x7672271D ; 1.0.2J +0x022873E8 = nop ; (network test?) allow call to cfs::CfSocialQuestManager::update((void)) +0x022C7A6C = nop ; network test : lwz r10, 0x1B0(r30) --> rlwinm. r9, r10, 0,30,30 +0x022C7A70 = nop ; network test -0x02AC612C = ba _single +0x022C5C64 = li r3, 1 ; fw::SocialDataStore::getWorldEnemyCount(const(void)) +0x022C5C90 = li r3, 0x4EE9 ; Quest ID for WE - fw::SocialDataStore::getWorldEnemyQuest(const(unsigned int)) +0x022C5FB8 = li r3, 1 ; fw::SocialDataStore::getWorldEnemyCount(const(void)) -[XCX_OFFLINEWE_1U] ############################################################################################ -moduleMatches = 0xAB97DE6B ; 1.0.1U +0x022C60DC = li r3, 1 ; fw::SocialDataStore::getWorldEnemyCount(const(void)) +0x022C610C = li r3, 0x4EED +0x022C6148 = nop ; network test? +0x022C646C = li r3, 1 ; fw::SocialDataStore::getWorldEnemyCount(const(void)) -.origin = codecave +0x02285E0C = nop ; or. r0, r6, r7 +0x02285E34 = nop ; or. r0, r6, r7 +0x02285EDC = li r7, 1 ; for getWERewardList +0x028284C8 = bla _loadRP ; __CPR86__getWorldEnemyInfo__Q2_2fw15SocialDataStoreCFUiRQ3_2fwJ25J14WorldEnemyInfo + +0x0282862C = li r3, 0 ; getWorldEnemyIndexFromQuestID +0x028282BC = li r7, 1 ; cmpwi r7, 0 +0x028282D4 = li r0, 1 ; cmpwi r0, 0 +0x02828348 = li r6, 1 ; to store in 8(r26) -> needed for cmpwi r0, 1 after callback +0x0282843C = nop ; skip deserializeWorldEnemy +0x028285E8 = li r4, 1 ; for getWERewardList +0x022892B4 = nop ; Uncomment to show Appraisal Rewards + +0x02AC22D0 = li r3, 0 ; menu::CTerminalMenu_SquadQuest::offline +0x02B96BCC = li r3, 1 ; Disable call to menu::MenuMultiQuestOrder::canOrderWorldEnemy + +0x02AC27FC = ba _single ; menu::CBladeHomuMenu::single((void)) +0x022C9D34 = nop ; always all items? + +[XCX_OFFLINEWE_V100U] ; ############################################################################################ +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U 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)) + +0x022C665C = 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 +0x0282B3D8 = li r3, 0 ; getWorldEnemyIndexFromQuestID 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 + +0x02AC5B84 = li r3, 0 ; menu::CTerminalMenu_SquadQuest::offline 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? + +[XCX_OFFLINEWE_V100J] ; ############################################################################################ +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x0228713C = nop ; (network test?) allow call to cfs::CfSocialQuestManager::update((void)) +0x022C78F8 = nop ; network test : lwz r10, 0x1B0(r30) --> rlwinm. r9, r10, 0,30,30 +0x022C78FC = nop ; network test + +0x022C5AF0 = li r3, 1 ; fw::SocialDataStore::getWorldEnemyCount(const(void)) +0x022C5B1C = li r3, 0x4EE9 ; Quest ID for WE - fw::SocialDataStore::getWorldEnemyQuest(const(unsigned int)) +0x022C5E44 = li r3, 1 ; fw::SocialDataStore::getWorldEnemyCount(const(void)) + +0x022C5F68 = li r3, 1 ; fw::SocialDataStore::getWorldEnemyCount(const(void)) +0x022C5F98 = li r3, 0x4EED +0x022C5FD4 = nop ; network test? +0x022C62F8 = li r3, 1 ; fw::SocialDataStore::getWorldEnemyCount(const(void)) + +0x02285B60 = nop ; or. r0, r6, r7 +0x02285B88 = nop ; or. r0, r6, r7 +0x02285C30 = li r7, 1 ; for getWERewardList + +0x0282749C = bla _loadRP ; __CPR86__getWorldEnemyInfo__Q2_2fw15SocialDataStoreCFUiRQ3_2fwJ25J14WorldEnemyInfo + +0x02827600 = li r3, 0 ; getWorldEnemyIndexFromQuestID +0x02827290 = li r7, 1 ; cmpwi r7, 0 +0x028272A8 = li r0, 1 ; cmpwi r0, 0 +0x0282731C = li r6, 1 ; to store in 8(r26) -> needed for cmpwi r0, 1 after callback +0x02827410 = nop ; skip deserializeWorldEnemy +0x028275BC = li r4, 1 ; for getWERewardList +0x02289008 = nop ; Uncomment to show Appraisal Rewards + +0x02AC04E8 = li r3, 0 ; menu::CTerminalMenu_SquadQuest::offline +0x02B94268 = li r3, 1 ; Disable call to menu::MenuMultiQuestOrder::canOrderWorldEnemy + +0x02AC0A14 = ba _single ; menu::CBladeHomuMenu::single((void)) +0x022C9BC0 = 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 index 75b7ee73..7e8523ad 100644 --- a/src/XenobladeChroniclesX/Mods/BladeGlobalNemesisMissionsOffline/patch_offline_nemesis.asm.bak +++ b/src/XenobladeChroniclesX/Mods/BladeGlobalNemesisMissionsOffline/patch_offline_nemesis.asm.bak @@ -1,6 +1,6 @@ -[XCX_OFFLINEWE] -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U - +; not porting this backup file to JP +[XCX_OFFLINEWE_V101E_V102U] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07 ; 1.0.1E, 1.0.2U, 1.0.0E .origin = codecave ; getServerTimeSec__Q2_2nt10CNetLibNexCFRUL @@ -155,9 +155,8 @@ blr ; A droite les items communs ; A gauche les items si Nemesis battu -[XCX_OFFLINEWE_1E] ############################################################################################ -moduleMatches = 0xF882D5CF ; 1.0.1E - +[XCX_OFFLINEWE_V101E] ; ############################################################################################ +moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E .origin = codecave ; menu::MenuMultiQuestOrder::move((void)) @@ -262,9 +261,8 @@ blr ;02C23528 ;02C23530 -[XCX_OFFLINEWE_2U] ############################################################################################ +[XCX_OFFLINEWE_V102U] ; ############################################################################################ moduleMatches = 0x30B6E091 ; 1.0.2U - .origin = codecave ;0x02B9B0A0 = li r3, 1 ; Disable call to menu::MenuMultiQuestOrder::canOrderWorldEnemy @@ -275,9 +273,8 @@ blr 0x02AC612C = ba _single -[XCX_OFFLINEWE_1U] ############################################################################################ -moduleMatches = 0xAB97DE6B ; 1.0.1U - +[XCX_OFFLINEWE_V100U] ; ############################################################################################ +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U .origin = codecave ; getServerTimeSec__Q2_2nt10CNetLibNexCFRUL @@ -425,4 +422,3 @@ blr ; __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 index 734891ac..ac60bff0 100644 --- a/src/XenobladeChroniclesX/Mods/BladeGlobalNemesisMissionsOffline/rules.txt +++ b/src/XenobladeChroniclesX/Mods/BladeGlobalNemesisMissionsOffline/rules.txt @@ -3,4 +3,4 @@ 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 +version = 6 diff --git a/src/XenobladeChroniclesX/Mods/BladeLv60SkellsUnlocked/patch_lv60skells.asm b/src/XenobladeChroniclesX/Mods/BladeLv60SkellsUnlocked/patch_lv60skells.asm index 63ac5726..1dfa0f36 100644 --- a/src/XenobladeChroniclesX/Mods/BladeLv60SkellsUnlocked/patch_lv60skells.asm +++ b/src/XenobladeChroniclesX/Mods/BladeLv60SkellsUnlocked/patch_lv60skells.asm @@ -1,8 +1,6 @@ -[XCX_UNLOCKPOSTSKELLS_ALL] ################################################################ -moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U - +[XCX_UNLOCKPOSTSKELLS] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J .origin = codecave - .int $miranium .int $resource .int $ignoreLevel @@ -13,35 +11,47 @@ LbIgnoreLevel: li r3, 1 blr -[XCX_UNLOCKPOSTSKELLS_1E] ################################################################ -moduleMatches = 0xF882D5CF ; 1.0.1E +[XCX_UNLOCKPOSTSKELLS_V101E] +moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E ; 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] ################################################################ +[XCX_UNLOCKPOSTSKELLS_V102U] moduleMatches = 0x30B6E091 ; 1.0.2U - -0x02A6B828 = li r3, 1 -0x02A7B210 = li r30, 0 0x02A7A774 = li r3, $miranium 0x02A7A944 = li r3, $resource +0x02A6B828 = li r3, 1 ; always returns true +0x02A7B210 = li r30, 0 ; unlock everything 0x02AF8E98 = b LbIgnoreLevel -[XCX_UNLOCKPOSTSKELLS_1U] ################################################################ -moduleMatches = 0xAB97DE6B ; 1.0.1U +[XCX_UNLOCKPOSTSKELLS_V102J] +moduleMatches = 0x7672271D ; 1.0.2J +0x02A76CEC = li r3, $miranium +0x02A76EBC = li r3, $resource +0x02A67DA0 = li r3, 1 ; always returns true +0x02A77788 = li r30, 0 ; unlock everything +0x02AF54B8 = b LbIgnoreLevel -0x02A6B7AC = li r3, 1 ; always returns true -0x02A7B194 = li r30, 0 ; unlock everything +[XCX_UNLOCKPOSTSKELLS_V100U] +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U 0x02A7A6F8 = li r3, $miranium 0x02A7A8C8 = li r3, $resource -0x02AF8E1C = b LbIgnoreLevel \ No newline at end of file +0x02A6B7AC = li r3, 1 ; always returns true +0x02A7B194 = li r30, 0 ; unlock everything +0x02AF8E1C = b LbIgnoreLevel + +[XCX_UNLOCKPOSTSKELLS_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x02A75124 = li r3, $miranium +0x02A752F4 = li r3, $resource +0x02A6626C = li r3, 1 ; always returns true +0x02A75BC0 = li r30, 0 ; unlock everything +0x02AF3444 = b LbIgnoreLevel diff --git a/src/XenobladeChroniclesX/Mods/BladeLv60SkellsUnlocked/rules.txt b/src/XenobladeChroniclesX/Mods/BladeLv60SkellsUnlocked/rules.txt index 682a979c..7c605896 100644 --- a/src/XenobladeChroniclesX/Mods/BladeLv60SkellsUnlocked/rules.txt +++ b/src/XenobladeChroniclesX/Mods/BladeLv60SkellsUnlocked/rules.txt @@ -3,7 +3,7 @@ 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. -version = 5 +version = 6 [Default] $miranium = 2 @@ -17,4 +17,4 @@ name = Normal name = CHEAT - Ignore Miranium, resources and level requirements $miranium = 0 $resource = 0 -$ignoreLevel = 0 \ No newline at end of file +$ignoreLevel = 0 diff --git a/src/XenobladeChroniclesX/Mods/BladeMoreTickets/patch_moretickets.asm b/src/XenobladeChroniclesX/Mods/BladeMoreTickets/patch_moretickets.asm index e743a4d9..67c6e448 100644 --- a/src/XenobladeChroniclesX/Mods/BladeMoreTickets/patch_moretickets.asm +++ b/src/XenobladeChroniclesX/Mods/BladeMoreTickets/patch_moretickets.asm @@ -1,15 +1,11 @@ [XCX_BLADE_MORETICKETS] -moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B, 0x7672271D ; 1.0.1E, 1.0.2U, 1.0.1U, 1.0.2J - +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J .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 @@ -20,7 +16,6 @@ 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 @@ -31,7 +26,6 @@ blr ; ---------------------------------------------------------------------------- ; WHO : menu::MenuMultiQuestInfoWindow::displayInfo((menu::MenuObject *,bool)) ; WHAT : - _dispBefore: lhz r26, 0x8C(r1) mulli r26, r26, $mult @@ -40,7 +34,6 @@ blr ; ---------------------------------------------------------------------------- ; WHO : menu::MenuMultiQuestResult::setup((void)) ; WHAT : - _dispAfter: lhz r5, 0x5778(r29) mulli r5, r5, $mult @@ -49,7 +42,6 @@ blr ; ---------------------------------------------------------------------------- ; WHO : writeListTicket__Q2_4menu19MenuMultiQuestOrderFPQ2_4menu10MenuObjectiQ3_2fw9CItemType4TypeUsUiT5 ; WHAT : multiply tickets from piece exchange - _pieceExchange: mr r5, r29 cmpwi r26, 0x1E @@ -76,10 +68,10 @@ bnelr mulli r29, r29, $mult blr -##################################################################################################### -[XCX_BLADE_MORETICKETS_1E] -moduleMatches = 0xF882D5CF ; 1.0.1E +;##################################################################################################### +[XCX_BLADE_MORETICKETS_V101E] +moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E 0x022CA86C = bla _moreTickets 0x022CAC5C = bla _uncapTickets 0x02B94718 = bla _dispBefore @@ -88,10 +80,9 @@ moduleMatches = 0xF882D5CF ; 1.0.1E 0x02B9C1EC = bla _dispExchangeInit 0x02C7C07C = bla _dispExchangeUpdate -##################################################################################################### -[XCX_BLADE_MORETICKETS_2U] +;##################################################################################################### +[XCX_BLADE_MORETICKETS_V102U] moduleMatches = 0x30B6E091 ; 1.0.2U - 0x022CA86C = bla _moreTickets 0x022CAC5C = bla _uncapTickets 0x02B94708 = bla _dispBefore @@ -100,10 +91,20 @@ moduleMatches = 0x30B6E091 ; 1.0.2U 0x02B9C1DC = bla _dispExchangeInit 0x02C7C01C = bla _dispExchangeUpdate -##################################################################################################### -[XCX_BLADE_MORETICKETS_1U] -moduleMatches = 0xAB97DE6B ; 1.0.1U +;##################################################################################################### +[XCX_BLADE_MORETICKETS_V102J] +moduleMatches = 0x7672271D ; 1.0.2J +0x022CA09C = bla _moreTickets +0x022CA48C = bla _uncapTickets +0x02B90654 = bla _dispBefore +;0x02B9B938 = bla _dispAfter ;not working +0x02B938A8 = bla _pieceExchange +0x02B97D08 = bla _dispExchangeInit +0x02C77570 = bla _dispExchangeUpdate +;##################################################################################################### +[XCX_BLADE_MORETICKETS_V100U] +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U 0x022CA7FC = bla _moreTickets 0x022CABEC = bla _uncapTickets 0x02B9468C = bla _dispBefore @@ -112,14 +113,13 @@ moduleMatches = 0xAB97DE6B ; 1.0.1U 0x02B9C0EC = bla _dispExchangeInit 0x02C7BEA4 = bla _dispExchangeUpdate -##################################################################################################### -[XCX_BLADE_MORETICKETS_2J] -moduleMatches = 0x7672271D ; 1.0.2J - -0x022CA09C = bla _moreTickets -0x022CA48C = bla _uncapTickets -0x02B90654 = bla _dispBefore -0x02B9B948 = bla _dispAfter -0x02B938A8 = bla _pieceExchange -0x02B97D08 = bla _dispExchangeInit -0x02C77FB8 = bla _dispExchangeUpdate +;##################################################################################################### +[XCX_BLADE_MORETICKETS_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x022C9F28 = bla _moreTickets +0x022CA318 = bla _uncapTickets +0x02B8DDA8 = bla _dispBefore +;0x02B98F68 = bla _dispAfter ;not working +0x02B90F84 = bla _pieceExchange +0x02B953A4 = bla _dispExchangeInit +0x02C73A5C = bla _dispExchangeUpdate diff --git a/src/XenobladeChroniclesX/Mods/BladeMoreTickets/rules.txt b/src/XenobladeChroniclesX/Mods/BladeMoreTickets/rules.txt index ec42c873..80a39b1a 100644 --- a/src/XenobladeChroniclesX/Mods/BladeMoreTickets/rules.txt +++ b/src/XenobladeChroniclesX/Mods/BladeMoreTickets/rules.txt @@ -3,7 +3,7 @@ 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. -version = 5 +version = 6 [Default] $mult = 2 @@ -12,6 +12,10 @@ $uncap = 0 [Preset] name = "Gain more Tickets (x2)" +[Preset] +name = "Gain more Tickets (x3)" +$mult = 3 + [Preset] name = "Gain more Tickets (x5)" $mult = 5 @@ -20,6 +24,10 @@ $mult = 5 name = "Gain more Tickets (x10)" $mult = 10 +[Preset] +name = "Gain more Tickets (x25)" +$mult = 25 + [Preset] name = "Gain more Tickets (x100)" $mult = 100 @@ -28,6 +36,10 @@ $mult = 100 name = "Gain more Tickets (x1000)" $mult = 1000 +[Preset] +name = "Respawn Global Nemesis Yggralith Zero (x500000)" +$mult = 500000 + [Preset] name = Yes category = "Capped to BLADE level" @@ -36,4 +48,3 @@ category = "Capped to BLADE level" name = No category = "Capped to BLADE level" $uncap = 1 - diff --git a/src/XenobladeChroniclesX/Mods/BladeTasksAndMissionsOffline/patch_offline_squad.asm b/src/XenobladeChroniclesX/Mods/BladeTasksAndMissionsOffline/patch_offline_squad.asm index 8c2be904..31482671 100644 --- a/src/XenobladeChroniclesX/Mods/BladeTasksAndMissionsOffline/patch_offline_squad.asm +++ b/src/XenobladeChroniclesX/Mods/BladeTasksAndMissionsOffline/patch_offline_squad.asm @@ -1,10 +1,48 @@ [XCX_SQUADMISSIONS] -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U - +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J .origin = codecave +.int $missionId -;#################### Activate Squad Tasks +;######### Change Squad Mission using main menu +VarSquadMission: +.int 0 +_iniPtr: +li r5, 0 +lis r30, VarSquadMission@ha +stw r5, VarSquadMission@l(r30) +mr r30, r3 +blr + +;######### Force Squad Mission number +_forceMission: +lmw r14, 0x1B8(r1) +li r4, $missionId +cmpwi r4, 0 +beqlr +mr r3, r4 +blr + +;######### Force Squad Mission number 1.0.0J --not working +;_forceMissionJP: +;lmw r15, 0x1AC(r1) ; +;li r4, $missionId +;cmpwi r4, 0 +;beqlr +;mr r3, r4 +;blr + +;######### Change Squad Mission using main menu +_savePtr: +li r3, 1 +lis r30, VarSquadMission@ha +stw r3, VarSquadMission@l(r30) +blr + + +[XCX_SQUADMISSIONS_V101E_V102U] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07 ; 1.0.1E, 1.0.2U, 1.0.0E +;################## Activate Squad Tasks ; cfs::CfSocialManager::update((float)) 0x022879D0 = nop ; (network test?) allow call to cfs::CfSocialQuestManager::update((void)) @@ -17,8 +55,7 @@ moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U 0x023ABCAC = nop ; compare with 0x28 - UNLOCK 0x023ABCB8 = nop ; compare with 0x2C - 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 0x022C8060 = nop ; test réseau @@ -26,18 +63,6 @@ moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U ; collectQuestInfoSQ__Q2_3cfs15CfSocialManagerFRQ2_2ml45resvector__tm__28_PQ2_3cfs17CfSocialQuestInfo 0x022C58BC = nop ; rlwinm. r10, r11, 0,29,29 -;#################### Change Squad Mission using main menu - -VarSquadMission: -.int 0 - -_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 @@ -45,59 +70,37 @@ blr 0x023ABDF4 = _gotoTimeout: 0x023ABE54 = _gotoNext: -0x023ABDC8 = lis r3, VarSquadMission@ha -0x023ABDCC = lwz r7, VarSquadMission@l(r3) +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 -.origin = codecave -.int $missionId - -_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 +;#################################################################################################### +[XCX_SQUADMISSIONS_V101E] +moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E ; getServerTimeSec__Q2_2nt10CNetLibNexCFRUL 0x0295EA10 = nop 0x0295EA14 = li r0, 42 ; menu::MenuSquadMission::process((void)) -0x02BFC7C0 = li r11, 1 ; garder affichée la liste des tasks en bas à droite - -##################### BLADE Home Terminal (for Squad Quest Selection) +0x02BFC7C0 = li r11, 1 ; garder affichée la liste des tasks en bas à droite ; keep displayed the list of tasks at the bottom right +;################## BLADE Home Terminal (for Squad Quest Selection) 0x02AC5C10 = li r3, 0 ; menu::CTerminalMenu_SquadQuest::offline -#################### Change Squad Mission using main menu - +;################## Change Squad Mission using main menu 0x02B85134 = bla _savePtr 0x02B8514C = bla _savePtr 0x02B85084 = li r11, 1 0x02B850A8 = li r11, 1 -##################################################################################################### -[XCX_SQUADMISSIONS_2U] +;#################################################################################################### +[XCX_SQUADMISSIONS_V102U] moduleMatches = 0x30B6E091 ; 1.0.2U ; getServerTimeSec__Q2_2nt10CNetLibNexCFRUL @@ -105,26 +108,58 @@ moduleMatches = 0x30B6E091 ; 1.0.2U 0x0295EA04 = li r0, 42 ; menu::MenuSquadMission::process((void)) -0x02BFC7B0 = li r11, 1 - -##################### BLADE Home Terminal (for Squad Quest Selection) +0x02BFC7B0 = li r11, 1 ; garder affichée la liste des tasks en bas à droite ; keep displayed the list of tasks at the bottom right +;################## BLADE Home Terminal (for Squad Quest Selection) 0x02AC5C00 = li r3, 0 ; menu::CTerminalMenu_SquadQuest::offline -#################### Change Squad Mission using main menu - +;################## Change Squad Mission using main menu 0x02B85124 = bla _savePtr 0x02B8513C = bla _savePtr 0x02B85074 = li r11, 1 0x02B85098 = li r11, 1 -##################################################################################################### -[XCX_SQUADMISSIONS_1U] -moduleMatches = 0xAB97DE6B ; 1.0.1U +;#################################################################################################### +[XCX_SQUADMISSIONS_V102J] +moduleMatches = 0x7672271D ; 1.0.2J +0x022873E8 = nop ; (network test?) allow call to cfs::CfSocialQuestManager::update((void)) +0x023AB068 = nop ; 0x6B8(r12) == 0 +0x023AB098 = nop ; isHost +0x023AB24C = li r5, 60 ; force 0x24 - UNLOCK +0x023AB3F4 = nop ; isHost +0x0239FCB8 = nop ; isHost +0x023AB490 = nop ; compare with 0x28 - UNLOCK +0x023AB49C = nop ; compare with 0x2C - UNLOCK +0x022C7A6C = nop ; test réseau : lwz r10, 0x1B0(r30) --> rlwinm. r9, r10, 0,30,30 +0x022C7A70 = nop ; test réseau +0x022C52CC = nop ; rlwinm. r10, r11, 0,29,29 -.origin = codecave +0x023B6C84 = bla _iniPtr +0x023AB5D8 = _gotoTimeout: +0x023AB638 = _gotoNext: + +0x023AB5AC = lis r3, VarSquadMission@ha +0x023AB5B0 = lwz r7, VarSquadMission@l(r3) +0x023AB5B4 = cmpwi r7, 1 +0x023AB5B8 = beq _gotoTimeout +0x023AB5BC = b _gotoNext + +0x023AAFA8 = bla _forceMission + +0x0295B7EC = nop +0x0295B7F0 = li r0, 42 +0x02BF81D0 = li r11, 1 ; garder affichée la liste des tasks en bas à droite ; keep displayed the list of tasks at the bottom right +0x02AC22D0 = li r3, 0 ; menu::CTerminalMenu_SquadQuest::offline +0x02B81070 = bla _savePtr +0x02B81088 = bla _savePtr +0x02B80FC0 = li r11, 1 +0x02B80FE4 = li r11, 1 + +;#################################################################################################### +[XCX_SQUADMISSIONS_V100U] +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U 0x02287960 = nop ; (network test?) allow call to cfs::CfSocialQuestManager::update((void)) 0x023AB814 = nop ; 0x6B8(r12) == 0 0x023AB844 = nop ; isHost @@ -137,53 +172,61 @@ moduleMatches = 0xAB97DE6B ; 1.0.1U 0x022C7FF0 = nop ; test réseau 0x022C584C = nop ; rlwinm. r10, r11, 0,29,29 -VarSquadMission: -.int 0 - -_iniPtr: -li r5, 0 -lis r30, VarSquadMission@ha -stw r5, VarSquadMission@l(r30) -mr r30, r3 -blr - 0x023B7430 = bla _iniPtr 0x023ABD84 = _gotoTimeout: 0x023ABDE4 = _gotoNext: -0x023ABD58 = lis r3, VarSquadMission@ha -0x023ABD5C = lwz r7, VarSquadMission@l(r3) +0x023ABD58 = lis r3, VarSquadMission@ha +0x023ABD5C = lwz r7, VarSquadMission@l(r3) 0x023ABD60 = cmpwi r7, 1 0x023ABD64 = beq _gotoTimeout 0x023ABD68 = b _gotoNext -#################### Force Squad Mission number -.int $missionId - -_forceMission: -lmw r14, 0x1B8(r1) -li r4, $missionId -cmpwi r4, 0 -beqlr -mr r3, r4 -blr - 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 +0x02BFC6C0 = li r11, 1 ; garder affichée la liste des tasks en bas à droite ; keep displayed the list of tasks at the bottom right 0x02AC5B84 = li r3, 0 ; menu::CTerminalMenu_SquadQuest::offline 0x02B850A8 = bla _savePtr 0x02B850C0 = bla _savePtr 0x02B84FF8 = li r11, 1 -0x02B8501C = li r11, 1 \ No newline at end of file +0x02B8501C = li r11, 1 + +;#################################################################################################### +;[XCX_SQUADMISSIONS_V100J] ;;;;;; 1.0.0J broken, not working (';' is comment symbol) +;moduleMatches = 0x785CA8A9 ; 1.0.0J +;0x0228713C = nop ; (network test?) allow call to cfs::CfSocialQuestManager::update((void)) +;0x023AAC20 = nop ; 0x6B8(r12) == 0 +;0x023AAC50 = nop ; isHost +;0x023AADA4 = li r9, 60 ; force 0x24 - UNLOCK ; +;0x023AAF4C = nop ; isHost +;0x0239F9A4 = nop ; isHost +;0x023AAFE8 = nop ; compare with 0x28 - UNLOCK +;0x023AAFF4 = nop ; compare with 0x2C - UNLOCK +;0x022C78F8 = nop ; test réseau : lwz r10, 0x1B0(r30) --> rlwinm. r9, r10, 0,30,30 +;0x022C78FC = nop ; test réseau +;0x022C5158 = nop ; rlwinm. r10, r11, 0,29,29 + +;0x023B6168 = bla _iniPtr + +;0x023AB134 = _gotoTimeout: ; +;0x023AB194 = _gotoNext: ; + +;0x023AB104 = lis r12, VarSquadMission@ha ; +;0x023AB108 = lwz r12, VarSquadMission@l(r12) ; +;0x023AB10C = cmpwi r12, 1 ; +;0x023AB110 = beq _gotoTimeout +;0x023AB114 = b _gotoNext + +;0x023AAB68 = bla _forceMissionJP ; + +;0x0295A05C = nop +;0x0295A060 = li r0, 42 +;0x02BF5364 = li r11, 1 ; garder affichée la liste des tasks en bas à droite ; keep displayed the list of tasks at the bottom right +;0x02AC04E8 = li r3, 0 ; menu::CTerminalMenu_SquadQuest::offline +;0x02B7EAC0 = bla _savePtr +;0x02B7EAD8 = bla _savePtr +;0x02B7EA10 = li r11, 1 +;0x02B7EA34 = li r11, 1 diff --git a/src/XenobladeChroniclesX/Mods/BladeTasksAndMissionsOffline/rules.txt b/src/XenobladeChroniclesX/Mods/BladeTasksAndMissionsOffline/rules.txt index f919814c..fd81fe1a 100644 --- a/src/XenobladeChroniclesX/Mods/BladeTasksAndMissionsOffline/rules.txt +++ b/src/XenobladeChroniclesX/Mods/BladeTasksAndMissionsOffline/rules.txt @@ -2,8 +2,8 @@ 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. -version = 5 +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.||Recommended to be combined with More Reward Tickets (x5). +version = 6 [Default] $missionId = 0 @@ -77,16 +77,36 @@ $missionId = 16 [Preset] name = "N17: Monoceros,Brambloo Shoot(c),Progen,Visigel,Jia Mian(t)" -$missionId = 17 +$missionId = 20 [Preset] name = "N18: Sacrifole,Jacul,Dieter(t),Arenatect,Zig" -$missionId = 18 +$missionId = 21 [Preset] name = "N19: Aprica,Sylooth,Tectinsula,Xe-dom,Coronid" -$missionId = 19 +$missionId = 22 [Preset] name = "N20: Aeviter,Vigent,Virago,Tersqual,Myuena Cactus(c)" -$missionId = 20 +$missionId = 23 + +[Preset] +name = "N21: Unused squad mission" +$missionId = 17 + +[Preset] +name = "N22: Unused squad mission" +$missionId = 18 + +[Preset] +name = "N23: Unused squad mission" +$missionId = 19 + +[Preset] +name = "N24: Unused squad mission" +$missionId = 24 + +[Preset] +name = "N25: Unused squad mission" +$missionId = 25 diff --git a/src/XenobladeChroniclesX/Mods/CollectiblesCatchRange/patch_catch.asm b/src/XenobladeChroniclesX/Mods/CollectiblesCatchRange/patch_catch.asm index e58bbff3..11d64a7c 100644 --- a/src/XenobladeChroniclesX/Mods/CollectiblesCatchRange/patch_catch.asm +++ b/src/XenobladeChroniclesX/Mods/CollectiblesCatchRange/patch_catch.asm @@ -1,24 +1,22 @@ -[XCX_COLLECTIBLESRANGE_ALL] -moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U - +[XCX_COLLECTIBLESRANGE] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J .origin = codecave ; ---------------------------------------------------------------------------- ; WHO : cfs::CfPopManagerItem::updateTouchItem((void)) ; WHAT : Initialize collectibles distance - _rangeInnerConst: - .float 40.0 + .float $rangeinner _heightInnerConst: - .float 8.0 + .float $heightinner _rangeDollConst: - .float 64.0 + .float $rangedoll _heightDollConst: - .float 64.0 + .float $heightdoll _rangeFlightConst: - .float 64.0 + .float $rangeflight _heightFlightConst: - .float 52.0 + .float $heightflight _itemRangeInner: lis r5, _rangeInnerConst@ha @@ -56,9 +54,9 @@ lfs f0, _heightFlightConst@l(r5) fadd f0, f13, f0 blr -[XCX_COLLECTIBLESRANGE] ################################################################################################# -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U +[XCX_COLLECTIBLESRANGE_V101E_V102U] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07 ; 1.0.1E, 1.0.2U, 1.0.0E 0x02389B80 = bla _itemRangeInner 0x02389BB8 = bla _itemHeightInner 0x02389C3C = bla _itemRangeDoll @@ -66,12 +64,29 @@ moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U 0x02389CEC = bla _itemRangeFlight 0x02389D30 = bla _itemHeightFlight -[XCX_COLLECTIBLESRANGE_1U] ################################################################################################# -moduleMatches = 0xAB97DE6B ; 1.0.1U +[XCX_COLLECTIBLESRANGE_V102J] +moduleMatches = 0x7672271D ; 1.0.2J +0x023893B4 = bla _itemRangeInner +0x023893EC = bla _itemHeightInner +0x02389470 = bla _itemRangeDoll +0x023894A8 = bla _itemHeightDoll +0x02389520 = bla _itemRangeFlight +0x02389564 = bla _itemHeightFlight +[XCX_COLLECTIBLESRANGE_V100U] +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U 0x02389B10 = bla _itemRangeInner 0x02389B48 = bla _itemHeightInner 0x02389BCC = bla _itemRangeDoll 0x02389C04 = bla _itemHeightDoll 0x02389C7C = bla _itemRangeFlight 0x02389CC0 = bla _itemHeightFlight + +[XCX_COLLECTIBLESRANGE_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x02389240 = bla _itemRangeInner +0x02389278 = bla _itemHeightInner +0x023892FC = bla _itemRangeDoll +0x02389334 = bla _itemHeightDoll +0x023893AC = bla _itemRangeFlight +0x023893F0 = bla _itemHeightFlight diff --git a/src/XenobladeChroniclesX/Mods/CollectiblesCatchRange/rules.txt b/src/XenobladeChroniclesX/Mods/CollectiblesCatchRange/rules.txt index 759c2fa5..89243725 100644 --- a/src/XenobladeChroniclesX/Mods/CollectiblesCatchRange/rules.txt +++ b/src/XenobladeChroniclesX/Mods/CollectiblesCatchRange/rules.txt @@ -2,5 +2,25 @@ 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). -version = 5 +description = Increase the distance from which collectibles are grabbed. +version = 6 + +[Default] +$rangeinner = 40.0 +$heightinner = 8.0 +$rangedoll = 64.0 +$heightdoll = 64.0 +$rangeflight = 64.0 +$heightflight = 52.0 + +[Preset] +name = Big Range + +[Preset] +name = Bigger Range +$rangeinner = 80.0 +$heightinner = 16.0 +$rangedoll = 128.0 +$heightdoll = 128.0 +$rangeflight = 128.0 +$heightflight = 104.0 diff --git a/src/XenobladeChroniclesX/Mods/CollectiblesIgnore100th/patch_collect100.asm b/src/XenobladeChroniclesX/Mods/CollectiblesIgnore100th/patch_collect100.asm index 9d9eda1e..ede4aac0 100644 --- a/src/XenobladeChroniclesX/Mods/CollectiblesIgnore100th/patch_collect100.asm +++ b/src/XenobladeChroniclesX/Mods/CollectiblesIgnore100th/patch_collect100.asm @@ -1,23 +1,29 @@ -[XCX_NOITEMSELL] -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U - +[XCX_NOITEMSELL_V101E_V102U] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07 ; 1.0.1E, 1.0.2U, 1.0.0E ; ---------------------------------------------------------------------------- ; WHO : addItem__Q2_3cfs9CfItemBoxSFQ3_2fw9CItemType4TypeUiRQ2_3cfs12CfItemHandle ; WHAT : instead of selling item, return 0 (no systemlog) - -0x02365A94 = li r31, 0 ; sellItem - +0x02365A94 = li r31, $mod ; sellItem ; ---------------------------------------------------------------------------- ; WHO : cfs::CfPopManagerItem::updateTouchItem((void)) ; WHAT : exit code if addItem returns 0 (blue gem not collected and no sound) - 0x0238A1BC = _exit: 0x02389EF8 = beq _exit -[XCX_NOITEMSELL_1U] ###################################################################### -moduleMatches = 0xAB97DE6B ; 1.0.1U - -0x02365A24 = li r31, 0 ; sellItem +[XCX_NOITEMSELL_V102J] +moduleMatches = 0x7672271D ; 1.0.2J +0x023652C8 = li r31, $mod ; sellItem +0x023899F0 = _exit: +0x0238972C = beq _exit +[XCX_NOITEMSELL_V100U] +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U +0x02365A24 = li r31, $mod ; sellItem 0x0238A14C = _exit: 0x02389E88 = beq _exit + +[XCX_NOITEMSELL_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x02365154 = li r31, $mod ; sellItem +0x0238987C = _exit: +0x023895B8 = beq _exit diff --git a/src/XenobladeChroniclesX/Mods/CollectiblesIgnore100th/rules.txt b/src/XenobladeChroniclesX/Mods/CollectiblesIgnore100th/rules.txt index 2b3b4ba2..2551cf6c 100644 --- a/src/XenobladeChroniclesX/Mods/CollectiblesIgnore100th/rules.txt +++ b/src/XenobladeChroniclesX/Mods/CollectiblesIgnore100th/rules.txt @@ -2,6 +2,15 @@ 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). -version = 5 - \ No newline at end of file +description = Ignore items past 99|Do not collect if you have 99 of the item, and don't sell it.||Collect items past 99|Collect even if you have 99 of the item, does not give any extra items. +version = 6 + +[Default] +$mod = 0 + +[Preset] +name = Ignore items past 99 + +[Preset] +name = Collect items past 99 +$mod = 1 diff --git a/src/XenobladeChroniclesX/Mods/EquipmentArmorsCanHave3AugmentSlots/patch_aug3slots.asm b/src/XenobladeChroniclesX/Mods/EquipmentArmorsCanHave3AugmentSlots/patch_aug3slots.asm index 788e916f..49764ba0 100644 --- a/src/XenobladeChroniclesX/Mods/EquipmentArmorsCanHave3AugmentSlots/patch_aug3slots.asm +++ b/src/XenobladeChroniclesX/Mods/EquipmentArmorsCanHave3AugmentSlots/patch_aug3slots.asm @@ -1,18 +1,22 @@ -[XCX_MAXSLOTS_1E] ###################################################################### -moduleMatches = 0xF882D5CF ; 1.0.1E - +[XCX_MAXSLOTS_V101E] +moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E ; ---------------------------------------------------------------------------- ; WHO : Cshop::updateLuItem((void)) ; WHAT : max 3 slots per armor L shop - 0x02A3AA18 = li r0, 3 -[XCX_MAXSLOTS_2U] ###################################################################### -moduleMatches = 0x30B6E091 ;1.0.2U - +[XCX_MAXSLOTS_V102U] +moduleMatches = 0x30B6E091 ; 1.0.2U 0x02A3AA08 = li r0, 3 -[XCX_MAXSLOTS_1U] ###################################################################### -moduleMatches = 0xAB97DE6B ; 1.0.1U +[XCX_MAXSLOTS_V102J] +moduleMatches = 0x7672271D ; 1.0.2J +0x02A3721C = li r0, 3 ; -0x02A3A98C = li r0, 3 \ No newline at end of file +[XCX_MAXSLOTS_V100U] +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U +0x02A3A98C = li r0, 3 + +[XCX_MAXSLOTS_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x02A35764 = li r0, 3 ; diff --git a/src/XenobladeChroniclesX/Mods/EquipmentArmorsCanHave3AugmentSlots/rules.txt b/src/XenobladeChroniclesX/Mods/EquipmentArmorsCanHave3AugmentSlots/rules.txt index 5a3c8d44..212bd332 100644 --- a/src/XenobladeChroniclesX/Mods/EquipmentArmorsCanHave3AugmentSlots/rules.txt +++ b/src/XenobladeChroniclesX/Mods/EquipmentArmorsCanHave3AugmentSlots/rules.txt @@ -3,4 +3,4 @@ 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). -version = 5 +version = 6 diff --git a/src/XenobladeChroniclesX/Mods/EquipmentUnlimitedAugmentUpgrades/patch_augup.asm b/src/XenobladeChroniclesX/Mods/EquipmentUnlimitedAugmentUpgrades/patch_augup.asm index 2b321624..c86f7917 100644 --- a/src/XenobladeChroniclesX/Mods/EquipmentUnlimitedAugmentUpgrades/patch_augup.asm +++ b/src/XenobladeChroniclesX/Mods/EquipmentUnlimitedAugmentUpgrades/patch_augup.asm @@ -1,8 +1,6 @@ -[XCX_UPGRADENOLIMIT_ALL] ################################################################ -moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U - +[XCX_UPGRADENOLIMIT] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J .origin = codecave - .int $checkSelectItem .int $checkStrengthen @@ -23,30 +21,26 @@ lwz r3, VarUpgradeCount@l(r3) cmpwi r3, 0xF blr -[XCX_UPGRADENOLIMIT_1E] ################################################################ -moduleMatches = 0xF882D5CF ; 1.0.1E +[XCX_UPGRADENOLIMIT_V101E] ; ################################################################ +moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E ; ---------------------------------------------------------------------------- ; 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] ################################################################ +[XCX_UPGRADENOLIMIT_V102U] ; ################################################################ moduleMatches = 0x30B6E091 ; 1.0.2U - - 0x02A6DC98 = li r3, 0 0x02A6DFEC = li r3, $checkSelectItem @@ -56,9 +50,19 @@ moduleMatches = 0x30B6E091 ; 1.0.2U 0x02A71F28 = bla SaveUpgradeCount 0x02A7217C = bla CtrlUpgradeCount -[XCX_UPGRADENOLIMIT_1U] ################################################################ -moduleMatches = 0xAB97DE6B ; 1.0.1U +[XCX_UPGRADENOLIMIT_V102J] ; ################################################################ +moduleMatches = 0x7672271D ; 1.0.2J +0x02A6A210 = li r3, 0 ; Ignore upgrades counter +0x02A6A564 = li r3, $checkSelectItem +0x02A6E69C = li r10, 99 ; Ignore upgrades counter +0x02A6E91C = li r3, $checkStrengthen + +0x02A6E4A0 = bla SaveUpgradeCount +0x02A6E6F4 = bla CtrlUpgradeCount + +[XCX_UPGRADENOLIMIT_V100U] ; ################################################################ +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U 0x02A6DC1C = li r3, 0 ; Ignore upgrades counter 0x02A6DF70 = li r3, $checkSelectItem @@ -67,3 +71,15 @@ moduleMatches = 0xAB97DE6B ; 1.0.1U 0x02A71EAC = bla SaveUpgradeCount 0x02A72100 = bla CtrlUpgradeCount + +[XCX_UPGRADENOLIMIT_V100J] ; ################################################################ +moduleMatches = 0x785CA8A9 ; 1.0.0J + +0x02A686DC = li r3, 0 ; Ignore upgrades counter +0x02A68A30 = li r3, $checkSelectItem + +0x02A6CB2C = li r10, 99 ; Ignore upgrades counter +0x02A6CDAC = li r3, $checkStrengthen + +0x02A6C930 = bla SaveUpgradeCount +0x02A6CB84 = bla CtrlUpgradeCount diff --git a/src/XenobladeChroniclesX/Mods/EquipmentUnlimitedAugmentUpgrades/rules.txt b/src/XenobladeChroniclesX/Mods/EquipmentUnlimitedAugmentUpgrades/rules.txt index 2e072adc..c377558e 100644 --- a/src/XenobladeChroniclesX/Mods/EquipmentUnlimitedAugmentUpgrades/rules.txt +++ b/src/XenobladeChroniclesX/Mods/EquipmentUnlimitedAugmentUpgrades/rules.txt @@ -3,7 +3,7 @@ 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. -version = 5 +version = 6 [Default] $checkSelectItem = 5 diff --git a/src/XenobladeChroniclesX/Mods/EquipmentUnlockAugments/patch_unlockaug.asm b/src/XenobladeChroniclesX/Mods/EquipmentUnlockAugments/patch_unlockaug.asm index 3d7d787d..4d4a15ad 100644 --- a/src/XenobladeChroniclesX/Mods/EquipmentUnlockAugments/patch_unlockaug.asm +++ b/src/XenobladeChroniclesX/Mods/EquipmentUnlockAugments/patch_unlockaug.asm @@ -1,8 +1,6 @@ -[XCX_UNLOCKAUGMENTS_ALL] ################################################################ -moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U - +[XCX_UNLOCKAUGMENTS] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J .origin = codecave - .int $checkIgnoreMiranium .int $checkIgnoreMaterials @@ -20,13 +18,12 @@ exit_cmq: stb r3, 0xC(r1) blr -[XCX_UNLOCKAUGMENTS_1E] ################################################################ -moduleMatches = 0xF882D5CF ; 1.0.1E +[XCX_UNLOCKAUGMENTS_V101E] ; ################################################################ +moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E ; ---------------------------------------------------------------------------- ; 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 @@ -36,9 +33,8 @@ moduleMatches = 0xF882D5CF ; 1.0.1E 0x02A81478 = bla ChangeMaterialsQuantity 0x02A814E4 = bla ChangeMaterialsQuantity -[XCX_UNLOCKAUGMENTS_2U] ################################################################ +[XCX_UNLOCKAUGMENTS_V102U] ; ################################################################ moduleMatches = 0x30B6E091 ; 1.0.2U - 0x02A81790 = li r3, 0 0x02A817B8 = li r3, $checkIgnoreMiranium 0x02A81A2C = li r3, $checkIgnoreMaterials @@ -48,9 +44,19 @@ moduleMatches = 0x30B6E091 ; 1.0.2U 0x02A81468 = bla ChangeMaterialsQuantity 0x02A814D4 = bla ChangeMaterialsQuantity -[XCX_UNLOCKAUGMENTS_1U] ################################################################ -moduleMatches = 0xAB97DE6B ; 1.0.1U +[XCX_UNLOCKAUGMENTS_V102J] ; ################################################################ +moduleMatches = 0x7672271D ; 1.0.2J +0x02A7DD08 = li r3, 0 +0x02A7DD30 = li r3, $checkIgnoreMiranium +0x02A7DFA4 = li r3, $checkIgnoreMaterials +0x02A7D96C = bla ChangeMaterialsQuantity +0x02A7D970 = cmpwi r31, 0 +0x02A7D9E0 = bla ChangeMaterialsQuantity +0x02A7DA4C = bla ChangeMaterialsQuantity + +[XCX_UNLOCKAUGMENTS_V100U] ; ################################################################ +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U 0x02A81714 = li r3, 0 0x02A8173C = li r3, $checkIgnoreMiranium 0x02A819B0 = li r3, $checkIgnoreMaterials @@ -59,3 +65,14 @@ moduleMatches = 0xAB97DE6B ; 1.0.1U 0x02A8137C = cmpwi r31, 0 0x02A813EC = bla ChangeMaterialsQuantity 0x02A81458 = bla ChangeMaterialsQuantity + +[XCX_UNLOCKAUGMENTS_V100J] ; ################################################################ +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x02A7C108 = li r3, 0 +0x02A7C130 = li r3, $checkIgnoreMiranium +0x02A7C3A4 = li r3, $checkIgnoreMaterials + +0x02A7BD6C = bla ChangeMaterialsQuantity +0x02A7BD70 = cmpwi r31, 0 +0x02A7BDE0 = bla ChangeMaterialsQuantity +0x02A7BE4C = bla ChangeMaterialsQuantity diff --git a/src/XenobladeChroniclesX/Mods/EquipmentUnlockAugments/rules.txt b/src/XenobladeChroniclesX/Mods/EquipmentUnlockAugments/rules.txt index 6818b262..2701ae20 100644 --- a/src/XenobladeChroniclesX/Mods/EquipmentUnlockAugments/rules.txt +++ b/src/XenobladeChroniclesX/Mods/EquipmentUnlockAugments/rules.txt @@ -3,7 +3,7 @@ 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. -version = 5 +version = 6 [Default] $checkIgnoreMiranium = 5 @@ -16,4 +16,3 @@ name = "Normal" name = "CHEAT - Ignore Miranium and resources requirements" $checkIgnoreMiranium = 0 $checkIgnoreMaterials = 0 - diff --git a/src/XenobladeChroniclesX/Mods/ExpBattlePointsX/patch_exp_battle.asm b/src/XenobladeChroniclesX/Mods/ExpBattlePointsX/patch_exp_battle.asm index b5765417..43c1573f 100644 --- a/src/XenobladeChroniclesX/Mods/ExpBattlePointsX/patch_exp_battle.asm +++ b/src/XenobladeChroniclesX/Mods/ExpBattlePointsX/patch_exp_battle.asm @@ -1,14 +1,11 @@ -[XCX_BATTLEPOINTSX_ALL] ############################################################################ -moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U - +[XCX_BATTLEPOINTSX] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J .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 @@ -18,7 +15,6 @@ 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 @@ -28,7 +24,6 @@ blr ; ---------------------------------------------------------------------------- ; WHO : addTreasure__Q2_3cfs10CfTBoxUtilSFUib ; WHAT : Multiply the battle points given by treasures or exploration - _expTreasure: li r3, $mod mullw r3, r31, r3 @@ -38,7 +33,6 @@ blr ; ---------------------------------------------------------------------------- ; WHO : addReward__Q2_3cfs11CfSquadUtilSFUiT1 ; WHAT : Multiply the experience points given by Squad missions - _expSquadValue: li r4, $mod mullw r3, r3, r4 @@ -48,7 +42,6 @@ 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 @@ -58,16 +51,15 @@ 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 +[XCX_BATTLEPOINTSX_V101E] ; ############################################################################ +moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E 0x020C4A74 = bla _exp 0x020C1C48 = bla _exp2 0x022D8EDC = bla _expTreasure @@ -76,11 +68,8 @@ moduleMatches = 0xF882D5CF ; 1.0.1E 0x02B94730 = bla _dispBefore 0x02B9FEE0 = bla _dispAfter -[XCX_BATTLEPOINTSX_2U] ############################################################################ +[XCX_BATTLEPOINTSX_V102U] ; ############################################################################ moduleMatches = 0x30B6E091 ; 1.0.2U - -.origin = codecave - 0x020C4A74 = bla _exp 0x020C1C48 = bla _exp2 0x022D8EDC = bla _expTreasure @@ -89,13 +78,32 @@ moduleMatches = 0x30B6E091 ; 1.0.2U 0x02B94720 = bla _dispBefore 0x02B9FED0 = bla _dispAfter -[XCX_BATTLEPOINTSX_1U] ############################################################################ -moduleMatches = 0xAB97DE6B ; 1.0.1U +[XCX_BATTLEPOINTSX_V102J] ; ############################################################################ +moduleMatches = 0x7672271D ; 1.0.2J +0x020C4540 = bla _exp +0x020C1714 = bla _exp2 +0x022D870C = bla _expTreasure +0x023CBDD4 = bla _expSquadValue +0x023CBEB8 = bla _expSquadValue +0x02B9066C = bla _dispBefore +0x02B9B998 = bla _dispAfter +[XCX_BATTLEPOINTSX_V100U] ; ############################################################################ +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U 0x020C4A74 = bla _exp 0x020C1C48 = bla _exp2 0x022D8E6C = bla _expTreasure 0x023CC700 = bla _expSquadValue -0x023CC700 = bla _expSquadValue +0x023CC7C4 = bla _expSquadValue 0x02B946A4 = bla _dispBefore 0x02B9FDE0 = bla _dispAfter + +[XCX_BATTLEPOINTSX_V100J] ; ############################################################################ +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x020C42BC = bla _exp +0x020C1490 = bla _exp2 +0x022D8598 = bla _expTreasure +0x023CB904 = bla _expSquadValue +0x023CB9E8 = bla _expSquadValue +0x02B8DDBC = bla _dispBefore +0x02B98FC4 = bla _dispAfter diff --git a/src/XenobladeChroniclesX/Mods/ExpBattlePointsX/rules.txt b/src/XenobladeChroniclesX/Mods/ExpBattlePointsX/rules.txt index 67c51e8a..381b4663 100644 --- a/src/XenobladeChroniclesX/Mods/ExpBattlePointsX/rules.txt +++ b/src/XenobladeChroniclesX/Mods/ExpBattlePointsX/rules.txt @@ -3,7 +3,7 @@ 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. -version = 5 +version = 6 [Default] $mod = 2 @@ -11,6 +11,10 @@ $mod = 2 [Preset] name = "Quantity x2" +[Preset] +name = "Quantity x3" +$mod = 3 + [Preset] name = "Quantity x5" $mod = 5 @@ -30,4 +34,3 @@ $mod = 100 [Preset] name = "Quantity x1000" $mod = 1000 - diff --git a/src/XenobladeChroniclesX/Mods/ExpBladePointsX/patch_exp_blade.asm b/src/XenobladeChroniclesX/Mods/ExpBladePointsX/patch_exp_blade.asm index a10f8506..d7c11dfb 100644 --- a/src/XenobladeChroniclesX/Mods/ExpBladePointsX/patch_exp_blade.asm +++ b/src/XenobladeChroniclesX/Mods/ExpBladePointsX/patch_exp_blade.asm @@ -1,23 +1,35 @@ [XCX_BLADEX] -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U - +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J .origin = codecave - .int $mod - ; ---------------------------------------------------------------------------- ; WHO : fw::SocialUnion::getUnionBasePoint((int)) ; WHAT : Multiply the BLADE points rewarded +[XCX_BLADEX_V101E] +moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E 0x0288E610 = nop +0x02E0C5B0 = li r3, -1 0x0288E614 = li r3, $mod -[XCX_BLADEX_1U] ###################################################################### -moduleMatches = 0xAB97DE6B ; 1.0.1U +[XCX_BLADEX_V102U] +moduleMatches = 0x30B6E091 ; 1.0.2U +0x0288E610 = nop +0x02E0C550 = li r3, -1 +0x0288E614 = li r3, $mod -.origin = codecave - -.int $mod +;[XCX_BLADEX_V102J] +;moduleMatches = 0x7672271D ; 1.0.2J +;0x = nop ; broken +;0x = li r3, -1 ; broken +;0x = li r3, $mod ; broken +[XCX_BLADEX_V100U] +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U 0x0288E594 = nop -0x0288E598 = li r3, $mod \ No newline at end of file +0x02E0C3D8 = li r3, -1 +0x0288E598 = li r3, $mod + +;[XCX_BLADEX_V100J] +;moduleMatches = 0x785CA8A9 ; 1.0.0J ;;; +;getUnionBasePoint__Q2_2fw11SocialUnionFi does not exist diff --git a/src/XenobladeChroniclesX/Mods/ExpBladePointsX/rules.txt b/src/XenobladeChroniclesX/Mods/ExpBladePointsX/rules.txt index 92406f19..f9a6e62f 100644 --- a/src/XenobladeChroniclesX/Mods/ExpBladePointsX/rules.txt +++ b/src/XenobladeChroniclesX/Mods/ExpBladePointsX/rules.txt @@ -3,7 +3,7 @@ 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. -version = 5 +version = 6 [Default] $mod = 2 @@ -11,6 +11,10 @@ $mod = 2 [Preset] name = "x2" +[Preset] +name = "x3" +$mod = 3 + [Preset] name = "x5" $mod = 5 diff --git a/src/XenobladeChroniclesX/Mods/ExpClassExpPointsX/patch_exp_class.asm b/src/XenobladeChroniclesX/Mods/ExpClassExpPointsX/patch_exp_class.asm index 20ce34a3..a80a39d4 100644 --- a/src/XenobladeChroniclesX/Mods/ExpClassExpPointsX/patch_exp_class.asm +++ b/src/XenobladeChroniclesX/Mods/ExpClassExpPointsX/patch_exp_class.asm @@ -1,14 +1,11 @@ [XCX_CLASSEXPX] -moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U - +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J .origin = codecave - .int $mod ; ---------------------------------------------------------------------------- ; WHO : addClassExpChara__Q2_6Battle14CBattleManagerFUiT1 ; WHAT : Multiply the class experience given during combat - _expBattle: li r12, $mod mullw r31, r3, r12 @@ -17,7 +14,6 @@ blr ; ---------------------------------------------------------------------------- ; WHO : addReward__Q2_3cfs11CfSquadUtilSFUiT1 ; WHAT : Multiply the experience points given by Squad missions - _expSquadValue: li r4, $mod mullw r3, r3, r4 @@ -33,36 +29,49 @@ 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 +[XCX_CLASSEXPX_V101E] ; ############################################################################ +moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E 0x020C4A28 = bla _expBattle 0x023CC750 = bla _expSquadValue 0x023CC814 = bla _expSquadValue 0x02B91324 = bla _dispBefore 0x02B9FF44 = bla _dispAfter -[XCX_CLASSEXPX_2U] ############################################################################ +[XCX_CLASSEXPX_V102U] ; ############################################################################ 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 +[XCX_CLASSEXPX_V102J] ; ############################################################################ +moduleMatches = 0x7672271D ; 1.0.2J +0x020C44F4 = bla _expBattle +0x023CBDB4 = bla _expSquadValue +0x023CBE98 = bla _expSquadValue +0x02B8D260 = bla _dispBefore +0x02B9B9FC = bla _dispAfter +[XCX_CLASSEXPX_V100U] ; ############################################################################ +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U 0x020C4A28 = bla _expBattle 0x023CC6E0 = bla _expSquadValue 0x023CC7A4 = bla _expSquadValue 0x02B91298 = bla _dispBefore 0x02B9FE44 = bla _dispAfter + +[XCX_CLASSEXPX_V100J] ; ############################################################################ +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x020C4270 = bla _expBattle +0x023CB8E4 = bla _expSquadValue +0x023CB9C8 = bla _expSquadValue +0x02B8AB48 = bla _dispBefore +0x02B99024 = bla _dispAfter diff --git a/src/XenobladeChroniclesX/Mods/ExpClassExpPointsX/rules.txt b/src/XenobladeChroniclesX/Mods/ExpClassExpPointsX/rules.txt index 603063c3..4df330c6 100644 --- a/src/XenobladeChroniclesX/Mods/ExpClassExpPointsX/rules.txt +++ b/src/XenobladeChroniclesX/Mods/ExpClassExpPointsX/rules.txt @@ -3,7 +3,7 @@ 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. -version = 5 +version = 6 [Default] $mod = 2 @@ -11,6 +11,10 @@ $mod = 2 [Preset] name = "x2" +[Preset] +name = "x3" +$mod = 3 + [Preset] name = "x5" $mod = 5 diff --git a/src/XenobladeChroniclesX/Mods/ExpFriendsPointsX/patch_exp_friend.asm b/src/XenobladeChroniclesX/Mods/ExpFriendsPointsX/patch_exp_friend.asm index 31575ff2..7154c4f9 100644 --- a/src/XenobladeChroniclesX/Mods/ExpFriendsPointsX/patch_exp_friend.asm +++ b/src/XenobladeChroniclesX/Mods/ExpFriendsPointsX/patch_exp_friend.asm @@ -1,13 +1,20 @@ [XCX_FRIENDPOINTSX] -moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U - +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J .origin = codecave - .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) +[XCX_FRIENDPOINTSX_V101E_V102U_V100U] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07, 0xAB97DE6B, 0x676EB33E ; 1.0.1E, 1.0.2U, 1.0.0E, 1.0.1U, 1.0.0U 0x02179908 = li r31, $mod + +[XCX_FRIENDPOINTSX_V102J] +moduleMatches = 0x7672271D ; 1.0.2J +0x021793D4 = li r31, $mod + +[XCX_FRIENDPOINTSX_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x02179150 = li r31, $mod diff --git a/src/XenobladeChroniclesX/Mods/ExpFriendsPointsX/rules.txt b/src/XenobladeChroniclesX/Mods/ExpFriendsPointsX/rules.txt index f26dcb66..04c769ae 100644 --- a/src/XenobladeChroniclesX/Mods/ExpFriendsPointsX/rules.txt +++ b/src/XenobladeChroniclesX/Mods/ExpFriendsPointsX/rules.txt @@ -3,7 +3,7 @@ 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. -version = 5 +version = 6 [Default] $mod = 100 @@ -11,6 +11,10 @@ $mod = 100 [Preset] name = "+100" +[Preset] +name = "+150" +$mod = 150 + [Preset] name = "+250" $mod = 250 diff --git a/src/XenobladeChroniclesX/Mods/ExpInnerExpPointsX/patch_exp.asm b/src/XenobladeChroniclesX/Mods/ExpInnerExpPointsX/patch_exp.asm index 6a079bed..130f3eeb 100644 --- a/src/XenobladeChroniclesX/Mods/ExpInnerExpPointsX/patch_exp.asm +++ b/src/XenobladeChroniclesX/Mods/ExpInnerExpPointsX/patch_exp.asm @@ -1,14 +1,11 @@ [XCX_EXPX] -moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U - +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J .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 @@ -19,7 +16,6 @@ blr ; ---------------------------------------------------------------------------- ; WHO : addTreasure__Q2_3cfs10CfTBoxUtilSFUib ; WHAT : Multiply the experience points given by treasures or exploration - _expTreasure: li r3, $mod lhz r31, 0x1C(r1) @@ -29,7 +25,6 @@ blr ; ---------------------------------------------------------------------------- ; WHO : addReward__Q2_3cfs11CfQuestUtilSFUiQ2_3cfs17CfQuestRewardType ; WHAT : Multiply the experience points given by quests ? - _expQuest: li r4, $mod mullw r3, r3, r4 @@ -39,7 +34,6 @@ blr ; ---------------------------------------------------------------------------- ; WHO : addReward__Q2_3cfs11CfSquadUtilSFUiT1 ; WHAT : Multiply the experience points given by Squad missions - _expSquadValue: li r4, $mod mullw r3, r3, r4 @@ -49,7 +43,6 @@ blr ; ---------------------------------------------------------------------------- ; WHO : menu::MenuMultiQuestInfoWindow::displayInfo((menu::MenuObject *,bool)) ; WHAT : - _dispBefore: lwz r23, 0x88(r1) li r24, $mod @@ -59,48 +52,64 @@ 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 +[XCX_EXPX_V101E] ; ############################################################################ +moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E 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? +; unlimited exp (no 9999 limit) loops around 140000 0x020C1BC4 = nop -[XCX_EXPX_2U] ############################################################################ +[XCX_EXPX_V102U] ; ############################################################################ 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? +; unlimited exp (no 9999 limit) loops around 140000 0x020C1BC4 = nop -[XCX_EXPX_1U] ############################################################################ -moduleMatches = 0xAB97DE6B ; 1.0.1U +[XCX_EXPX_V102J] ; ############################################################################ +moduleMatches = 0x7672271D ; 1.0.2J +0x02561AB0 = bla _expBattle +0x022D8694 = bla _expTreasure +0x02295024 = bla _expQuest +0x023CBD38 = bla _expSquadValue +0x02B9063C = bla _dispBefore +0x02B9B8D0 = bla _dispAfter +; unlimited exp (no 9999 limit) loops around 140000 +0x020C1690 = nop +[XCX_EXPX_V100U] ; ############################################################################ +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U 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? +; unlimited exp (no 9999 limit) loops around 140000 0x020C1BC4 = nop + +[XCX_EXPX_V100J] ; ############################################################################ +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x02560FD4 = bla _expBattle +0x022D8520 = bla _expTreasure +0x02294D78 = bla _expQuest +0x023CB868 = bla _expSquadValue +0x02B8DD8C = bla _dispBefore ; +0x02B98F04 = bla _dispAfter +; unlimited exp (no 9999 limit) loops around 140000 +0x020C140C = nop diff --git a/src/XenobladeChroniclesX/Mods/ExpInnerExpPointsX/rules.txt b/src/XenobladeChroniclesX/Mods/ExpInnerExpPointsX/rules.txt index 31fbf6e8..77f2b544 100644 --- a/src/XenobladeChroniclesX/Mods/ExpInnerExpPointsX/rules.txt +++ b/src/XenobladeChroniclesX/Mods/ExpInnerExpPointsX/rules.txt @@ -1,15 +1,23 @@ [Definition] 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] -version = 5 +name = "Lv Exp Points" +path = "Xenoblade Chronicles X/Mods/Experience/Lv Exp Points" +description = Change the amount of Level Exp points gained in battle, missions, quests and exploration.|Ignores the 9999 exp cap. +version = 6 [Default] -$mod = 2 +$mod = 1 + +[Preset] +name = "x1" [Preset] name = "x2" +$mod = 2 + +[Preset] +name = "x3" +$mod = 3 [Preset] name = "x5" @@ -29,4 +37,4 @@ $mod = 100 [Preset] name = "x1000" -$mod = 1000 \ No newline at end of file +$mod = 1000 diff --git a/src/XenobladeChroniclesX/Mods/FOVSetting/patch_fov.asm b/src/XenobladeChroniclesX/Mods/FOVSetting/patch_fov.asm new file mode 100644 index 00000000..0e93a5ba --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/FOVSetting/patch_fov.asm @@ -0,0 +1,15 @@ +[XCX_FOV_V101E_V102U] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07 ; 1.0.1E, 1.0.2U, 1.0.0E +0x10190C7C = .float $fov ; 1.0 is default, 0.75 wider FOV + +[XCX_FOV_V102J] +moduleMatches = 0x7672271D ; 1.0.2J +0x1019087C = .float $fov + +[XCX_FOV_V100U] +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U +0x10190B7C = .float $fov + +[XCX_FOV_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x1019037C = .float $fov diff --git a/src/XenobladeChroniclesX/Mods/FOVSetting/patches.txt b/src/XenobladeChroniclesX/Mods/FOVSetting/patches.txt deleted file mode 100644 index 081779fb..00000000 --- a/src/XenobladeChroniclesX/Mods/FOVSetting/patches.txt +++ /dev/null @@ -1,20 +0,0 @@ -[XCXNOOFFV16J] -moduleMatches = 0x785CA8A9 -0x1019037C = .float $fov # 1.0 is default, 0.75 wider FOV - -[XCXFOVV102J] -moduleMatches = 0x7672271D -0x1019087C = .float $fov # 1.0 is default, 0.75 wider FOV - -[XCXFOVV100E_V101E] -moduleMatches = 0x218F6E07, 0xF882D5CF -0x10190C7C = .float $fov - -[XCXFOVV102U] -moduleMatches = 0x30B6E091 -0x10190C7C = .float $fov - -[XCXFOVV101U] -moduleMatches = 0xAB97DE6B -0x10190B7C = .float $fov - diff --git a/src/XenobladeChroniclesX/Mods/FOVSetting/rules.txt b/src/XenobladeChroniclesX/Mods/FOVSetting/rules.txt index cdbc19a6..b2d9b4cc 100644 --- a/src/XenobladeChroniclesX/Mods/FOVSetting/rules.txt +++ b/src/XenobladeChroniclesX/Mods/FOVSetting/rules.txt @@ -3,14 +3,16 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = Field of View path = "Xenoblade Chronicles X/Mods/Field of View" description = Changes the field of view (FOV). Fixes edge framing for 21:9 cinematics and other FOV tweaks. -version = 4 +version = 6 -[Preset] -name = Default FOV +[Default] $fov = 1.0 [Preset] -name = Match 16:9 horizontal FOV to 21:9 (1.3125) +name = Default FOV + +[Preset] +name = "Match 16:9 horizontal FOV to 21:9 (1.3125)" $fov = 1.3125 [Preset] @@ -18,21 +20,21 @@ name = Balance 48:9 (1.45) $fov = 1.45 [Preset] -name = Slight FOV increase without breaking framing (0.925) +name = "Slight FOV increase without breaking framing (0.925)" $fov = 0.925 [Preset] -name = Match 16:10 horizontal FOV to 16:9 (0.9) +name = "Match 16:10 horizontal FOV to 16:9 (0.9)" $fov = 0.9 [Preset] -name = Pc style wide FOV (0.825) +name = "Pc style wide FOV (0.825)" $fov = 0.825 [Preset] -name = Match 21:9 horizontal FOV to 16:9 (0.7442) +name = "Match 21:9 horizontal FOV to 16:9 (0.7442)" $fov = 0.7442 [Preset] -name = Fish eye (0.5) +name = "Fish eye (0.5)" $fov = 0.5 diff --git a/src/XenobladeChroniclesX/Mods/FrontierNavProbeMiraniumFrequency/patch_miranium_freq.asm b/src/XenobladeChroniclesX/Mods/FrontierNavProbeMiraniumFrequency/patch_miranium_freq.asm index 98f98476..1fe545a1 100644 --- a/src/XenobladeChroniclesX/Mods/FrontierNavProbeMiraniumFrequency/patch_miranium_freq.asm +++ b/src/XenobladeChroniclesX/Mods/FrontierNavProbeMiraniumFrequency/patch_miranium_freq.asm @@ -1,15 +1,12 @@ -[XCX_FN_MIR_FREQ_ALL] -moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U - +[XCX_FN_MIR_FREQ] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J .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 @@ -19,12 +16,19 @@ subf r3, r0, r10 cmpwi r3, 0 blr -[XCX_FN_MIR_FREQ] ################################################################## -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U +[XCX_FN_MIR_FREQ_V101E_V102U] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07 ; 1.0.1E, 1.0.2U, 1.0.0E 0x027D5250 = bla _miranium -[XCX_FN_MIR_FREQ_1U] ################################################################## -moduleMatches = 0xAB97DE6B ; 1.0.1U +[XCX_FN_MIR_FREQ_V102J] +moduleMatches = 0x7672271D ; 1.0.2J +0x027D2E88 = bla _miranium -0x027D51F0 = bla _miranium \ No newline at end of file +[XCX_FN_MIR_FREQ_V100U] +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U +0x027D51F0 = bla _miranium + +[XCX_FN_MIR_FREQ_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x027D1E84 = bla _miranium diff --git a/src/XenobladeChroniclesX/Mods/FrontierNavProbeMiraniumFrequency/rules.txt b/src/XenobladeChroniclesX/Mods/FrontierNavProbeMiraniumFrequency/rules.txt index d4677ac5..4e771209 100644 --- a/src/XenobladeChroniclesX/Mods/FrontierNavProbeMiraniumFrequency/rules.txt +++ b/src/XenobladeChroniclesX/Mods/FrontierNavProbeMiraniumFrequency/rules.txt @@ -1,9 +1,9 @@ [Definition] titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 -name = "Miranium income frequency mod" -path = "Xenoblade Chronicles X/Mods/FrontierNav/Miranium income frequency mod" +name = "FrontierNav - Miranium frequency mod" +path = "Xenoblade Chronicles X/Mods/FrontierNav/Miranium frequency mod" description = Affect the frequency of the FrontierNav income for the Miranium (Vanilla is every 30 minutes). -version = 5 +version = 6 [Default] $mod = 1 @@ -30,4 +30,3 @@ $mod = 15 [Preset] name = "Every 20 minutes" $mod = 20 - diff --git a/src/XenobladeChroniclesX/Mods/FrontierNavProbeMiraniumQuantity/patch_miranium_qu.asm b/src/XenobladeChroniclesX/Mods/FrontierNavProbeMiraniumQuantity/patch_miranium_qu.asm index 6e0ca00d..709c497e 100644 --- a/src/XenobladeChroniclesX/Mods/FrontierNavProbeMiraniumQuantity/patch_miranium_qu.asm +++ b/src/XenobladeChroniclesX/Mods/FrontierNavProbeMiraniumQuantity/patch_miranium_qu.asm @@ -1,14 +1,12 @@ -[XCX_FN_MIR_QTY_ALL] ###################################################################### -moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U - +[XCX_FN_MIR_QTY] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J .origin = codecave - .int $mod +.int $uncap ; ---------------------------------------------------------------------------- ; WHO : changeTime__Q2_4fnet9CFnetTaskFUiT1 ; WHAT : Affect the quantity of the NavFrontier income for the Miranium - _miranium: lwzx r31, r3, r28 li r4, $mod @@ -18,9 +16,6 @@ blr ; ---------------------------------------------------------------------------- ; WHO : fnet::CFnetData::toStorage(const(unsigned int)) ; WHAT : Ignore max quantity - -.int $uncap - _getMiranium: li r12, $uncap cmpwi r12, 0 @@ -36,16 +31,27 @@ beqlr mr r31, r0 blr -[XCX_FN_MIR_QTY] ###################################################################### -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U +[XCX_FN_MIR_QTY_V101E_V102U] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07 ; 1.0.1E, 1.0.2U, 1.0.0E 0x027D526C = bla _miranium 0x027D0FF8 = bla _getMiranium 0x027D1030 = bla _ignoreMax -[XCX_FN_MIR_QTY_1U] ###################################################################### -moduleMatches = 0xAB97DE6B ; 1.0.1U +[XCX_FN_MIR_QTY_V102J] +moduleMatches = 0x7672271D ; 1.0.2J +0x027D2EA4 = bla _miranium +0x027CEC30 = bla _getMiranium +0x027CEC68 = bla _ignoreMax +[XCX_FN_MIR_QTY_V100U] +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U 0x027D520C = bla _miranium 0x027D0F98 = bla _getMiranium 0x027D0FD0 = bla _ignoreMax + +[XCX_FN_MIR_QTY_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x027D1EA0 = bla _miranium +0x027CDC2C = bla _getMiranium +0x027CDC64 = bla _ignoreMax diff --git a/src/XenobladeChroniclesX/Mods/FrontierNavProbeMiraniumQuantity/rules.txt b/src/XenobladeChroniclesX/Mods/FrontierNavProbeMiraniumQuantity/rules.txt index 98f12942..32c6c928 100644 --- a/src/XenobladeChroniclesX/Mods/FrontierNavProbeMiraniumQuantity/rules.txt +++ b/src/XenobladeChroniclesX/Mods/FrontierNavProbeMiraniumQuantity/rules.txt @@ -1,17 +1,27 @@ [Definition] titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 -name = "Miranium income quantity mod" -path = "Xenoblade Chronicles X/Mods/FrontierNav/Miranium income quantity mod" +name = "FrontierNav - Miranium quantity mod" +path = "Xenoblade Chronicles X/Mods/FrontierNav/Miranium quantity mod" description = Affect the quantity of the FrontierNav income for the Miranium. -version = 5 +version = 6 [Default] -$mod = 2 +$mod = 1 $uncap = 0 +[Preset] +name = "Miranium x1" +category = Miranium quantity + [Preset] name = "Miranium x2" category = Miranium quantity +$mod = 2 + +[Preset] +name = "Miranium x3" +category = Miranium quantity +$mod = 3 [Preset] name = "Miranium x5" @@ -35,9 +45,9 @@ $mod = 100 [Preset] name = "Yes" -category = "Capped by BLADE level" +category = "Capped by Storage Probes" [Preset] name = "No" -category = "Capped by BLADE level" -$uncap = 1 \ No newline at end of file +category = "Capped by Storage Probes" +$uncap = 1 diff --git a/src/XenobladeChroniclesX/Mods/FrontierNavProbeMoneyFrequency/patch_money_freq.asm b/src/XenobladeChroniclesX/Mods/FrontierNavProbeMoneyFrequency/patch_money_freq.asm index 913b8fc9..f92fd8ed 100644 --- a/src/XenobladeChroniclesX/Mods/FrontierNavProbeMoneyFrequency/patch_money_freq.asm +++ b/src/XenobladeChroniclesX/Mods/FrontierNavProbeMoneyFrequency/patch_money_freq.asm @@ -1,22 +1,24 @@ [XCX_FN_MNY_FREQ] -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U - +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J .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) +[XCX_FN_MNY_FREQ_V101E_V102U] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07 ; 1.0.1E, 1.0.2U, 1.0.0E 0x027D554C = li r12, $mod -[XCX_FN_MNY_FREQ_1U] ###################################################################### -moduleMatches = 0xAB97DE6B ; 1.0.1U +[XCX_FN_MNY_FREQ_V102J] +moduleMatches = 0x7672271D ; 1.0.2J +0x027D3184 = li r12, $mod -.origin = codecave +[XCX_FN_MNY_FREQ_V100U] +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U +0x027D54EC = li r12, $mod -.int $mod - -0x027D54EC = li r12, $mod \ No newline at end of file +[XCX_FN_MNY_FREQ_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x027D2180 = li r12, $mod diff --git a/src/XenobladeChroniclesX/Mods/FrontierNavProbeMoneyFrequency/rules.txt b/src/XenobladeChroniclesX/Mods/FrontierNavProbeMoneyFrequency/rules.txt index 4a6477d6..77b20bf9 100644 --- a/src/XenobladeChroniclesX/Mods/FrontierNavProbeMoneyFrequency/rules.txt +++ b/src/XenobladeChroniclesX/Mods/FrontierNavProbeMoneyFrequency/rules.txt @@ -1,9 +1,9 @@ [Definition] titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 -name = "Money income frequency mod" -path = "Xenoblade Chronicles X/Mods/FrontierNav/Money income frequency mod" +name = "FrontierNav - Money frequency mod" +path = "Xenoblade Chronicles X/Mods/FrontierNav/Money frequency mod" description = Affect the frequency of the FrontierNav income for the Money (Vanilla is 15 minutes). -version = 5 +version = 6 [Default] $mod = 1 @@ -26,4 +26,3 @@ $mod = 7 [Preset] name = "Every 10 minutes" $mod = 10 - diff --git a/src/XenobladeChroniclesX/Mods/FrontierNavProbeMoneyQuantity/patch_money_qu.asm b/src/XenobladeChroniclesX/Mods/FrontierNavProbeMoneyQuantity/patch_money_qu.asm index 50979572..cefb9050 100644 --- a/src/XenobladeChroniclesX/Mods/FrontierNavProbeMoneyQuantity/patch_money_qu.asm +++ b/src/XenobladeChroniclesX/Mods/FrontierNavProbeMoneyQuantity/patch_money_qu.asm @@ -1,8 +1,6 @@ -[XCX_FN_MNY_QTY_ALL] ###################################################################### -moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U - +[XCX_FN_MNY_QTY] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J .origin = codecave - .int $mod _money: @@ -10,12 +8,18 @@ li r31, $mod mullw. r31, r31, r3 blr -[XCX_FN_MNY_QTY] ###################################################################### -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U - +[XCX_FN_MNY_QTY_V101E_V102U] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07 ; 1.0.1E, 1.0.2U, 1.0.0E 0x027D5588 = bla _money -[XCX_FN_MNY_QTY_1U] ###################################################################### -moduleMatches = 0xAB97DE6B ; 1.0.1U +[XCX_FN_MNY_QTY_V102J] +moduleMatches = 0x7672271D ; 1.0.2J +0x027D31C0 = bla _money +[XCX_FN_MNY_QTY_V100U] +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U 0x027D5528 = bla _money + +[XCX_FN_MNY_QTY_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x027D21BC = bla _money diff --git a/src/XenobladeChroniclesX/Mods/FrontierNavProbeMoneyQuantity/rules.txt b/src/XenobladeChroniclesX/Mods/FrontierNavProbeMoneyQuantity/rules.txt index d6672406..c337476b 100644 --- a/src/XenobladeChroniclesX/Mods/FrontierNavProbeMoneyQuantity/rules.txt +++ b/src/XenobladeChroniclesX/Mods/FrontierNavProbeMoneyQuantity/rules.txt @@ -1,9 +1,9 @@ [Definition] titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 -name = "Money income quantity mod" -path = "Xenoblade Chronicles X/Mods/FrontierNav/Money income quantity mod" +name = "FrontierNav - Money quantity mod" +path = "Xenoblade Chronicles X/Mods/FrontierNav/Money quantity mod" description = Affect the quantity of the FrontierNav income for the Money. -version = 5 +version = 6 [Default] $mod = 2 @@ -11,6 +11,10 @@ $mod = 2 [Preset] name = "x2" +[Preset] +name = "x3" +$mod = 3 + [Preset] name = "x5" $mod = 5 @@ -30,4 +34,3 @@ $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 index ef1c29af..760bd6c5 100644 --- a/src/XenobladeChroniclesX/Mods/FrontierNavProbeResourceFrequency/patch_resource_freq.asm +++ b/src/XenobladeChroniclesX/Mods/FrontierNavProbeResourceFrequency/patch_resource_freq.asm @@ -1,22 +1,24 @@ -[XCX_FN_RES_FREQ] ###################################################################### -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U - +[XCX_FN_RES_FREQ] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J .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) +[XCX_FN_RES_FREQ_V101E_V102U] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07 ; 1.0.1E, 1.0.2U, 1.0.0E 0x027D534C = li r12, $mod -[XCX_FN_RES_FREQ_1U] ###################################################################### -moduleMatches = 0xAB97DE6B ; 1.0.1U - -.origin = codecave - -.int $mod +[XCX_FN_RES_FREQ_V102J] +moduleMatches = 0x7672271D ; 1.0.2J +0x027D2F84 = li r12, $mod +[XCX_FN_RES_FREQ_V100U] +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U 0x027D52EC = li r12, $mod + +[XCX_FN_RES_FREQ_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x027D1F80 = li r12, $mod diff --git a/src/XenobladeChroniclesX/Mods/FrontierNavProbeResourceFrequency/rules.txt b/src/XenobladeChroniclesX/Mods/FrontierNavProbeResourceFrequency/rules.txt index 56ea9932..c02d1072 100644 --- a/src/XenobladeChroniclesX/Mods/FrontierNavProbeResourceFrequency/rules.txt +++ b/src/XenobladeChroniclesX/Mods/FrontierNavProbeResourceFrequency/rules.txt @@ -1,10 +1,9 @@ [Definition] 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" +name = "FrontierNav - Resources frequency mod" +path = "Xenoblade Chronicles X/Mods/FrontierNav/Resources frequency mod" description = Affect the frequency of the FrontierNav income for the resources (Vanilla is every 5 minutes). -version = 5 +version = 6 [Default] $mod = 2 diff --git a/src/XenobladeChroniclesX/Mods/FrontierNavProbeResourceQuantity/patch_resource_qu.asm b/src/XenobladeChroniclesX/Mods/FrontierNavProbeResourceQuantity/patch_resource_qu.asm index 1418f4d8..d1969e33 100644 --- a/src/XenobladeChroniclesX/Mods/FrontierNavProbeResourceQuantity/patch_resource_qu.asm +++ b/src/XenobladeChroniclesX/Mods/FrontierNavProbeResourceQuantity/patch_resource_qu.asm @@ -1,14 +1,11 @@ -[XCX_FN_RES_QTY_ALL] ###################################################################### -moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U - +[XCX_FN_RES_QTY] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J .origin = codecave - .int $mod ; ---------------------------------------------------------------------------- ; WHAT : changeTime__Q2_4fnet9CFnetTaskFUiT1 ; WHY : - _multCount: lbz r0, 6(r31) li r3, $mod @@ -16,12 +13,18 @@ mullw r0, r0, r3 stb r0, 6(r31) blr -[XCX_FN_RES_QTY] ###################################################################### -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U - +[XCX_FN_RES_QTY_V101E_V102U] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07 ; 1.0.1E, 1.0.2U, 1.0.0E 0x027D5428 = bla _multCount -[XCX_FN_RES_QTY_1U] ###################################################################### -moduleMatches = 0xAB97DE6B ; 1.0.1U +[XCX_FN_RES_QTY_V102J] +moduleMatches = 0x7672271D ; 1.0.2J +0x027D3060 = bla _multCount +[XCX_FN_RES_QTY_V100U] +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U 0x027D53C8 = bla _multCount + +[XCX_FN_RES_QTY_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x027D205C = bla _multCount diff --git a/src/XenobladeChroniclesX/Mods/FrontierNavProbeResourceQuantity/rules.txt b/src/XenobladeChroniclesX/Mods/FrontierNavProbeResourceQuantity/rules.txt index d1e6055e..31404ff6 100644 --- a/src/XenobladeChroniclesX/Mods/FrontierNavProbeResourceQuantity/rules.txt +++ b/src/XenobladeChroniclesX/Mods/FrontierNavProbeResourceQuantity/rules.txt @@ -1,9 +1,9 @@ [Definition] titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 -name = "Resources income quantity mod" -path = "Xenoblade Chronicles X/Mods/FrontierNav/Resources income quantity mod" +name = "FrontierNav - Resources quantity mod" +path = "Xenoblade Chronicles X/Mods/FrontierNav/Resources quantity mod" description = Affect the quantity of the FrontierNav income for the resources. -version = 5 +version = 6 [Default] $mod = 2 @@ -11,6 +11,10 @@ $mod = 2 [Preset] name = "x2" +[Preset] +name = "x3" +$mod = 3 + [Preset] name = "x5" $mod = 5 @@ -26,4 +30,3 @@ $mod = 50 [Preset] name = "x100" $mod = 100 - diff --git a/src/XenobladeChroniclesX/Mods/GraphicsCameraDistance/patch_camera.asm b/src/XenobladeChroniclesX/Mods/GraphicsCameraDistance/patch_camera.asm index 1f109dd3..9ebe95ba 100644 --- a/src/XenobladeChroniclesX/Mods/GraphicsCameraDistance/patch_camera.asm +++ b/src/XenobladeChroniclesX/Mods/GraphicsCameraDistance/patch_camera.asm @@ -1,12 +1,24 @@ [XCX_CAMERA_DIST] -moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U - +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J .origin = codecave - VarZoom: .float $mod - ; CamData::CCamDataManager::getParamsZoomDefault((CamData::eTargetTypes, unsigned char)) -0x0222A19C = lis r12, VarZoom@ha -0x0222A1B0 = lfs f1, VarZoom@l(r12) + +[XCX_CAMERA_DIST_V101E_V102U_V100U] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07, 0xAB97DE6B, 0x676EB33E ; 1.0.1E, 1.0.2U, 1.0.0E, 1.0.1U, 1.0.0U +0x0222A19C = lis r12, VarZoom@ha +0x0222A1B0 = lfs f1, VarZoom@l(r12) 0x0222A1CC = nop + +[XCX_CAMERA_DIST_V102J] +moduleMatches = 0x7672271D ; 1.0.2J +0x02229C68 = lis r12, VarZoom@ha +0x02229C7C = lfs f1, VarZoom@l(r12) +0x02229C98 = nop + +[XCX_CAMERA_DIST_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x022299E4 = lis r12, VarZoom@ha +0x022299F8 = lfs f1, VarZoom@l(r12) +0x02229A14 = nop diff --git a/src/XenobladeChroniclesX/Mods/GraphicsCameraDistance/rules.txt b/src/XenobladeChroniclesX/Mods/GraphicsCameraDistance/rules.txt index 94fef5f2..14f43261 100644 --- a/src/XenobladeChroniclesX/Mods/GraphicsCameraDistance/rules.txt +++ b/src/XenobladeChroniclesX/Mods/GraphicsCameraDistance/rules.txt @@ -1,9 +1,9 @@ [Definition] 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). -version = 5 +name = "Camera distance mod" +path = "Xenoblade Chronicles X/Mods/Graphics/Camera distance mod" +description = Affect the default distance of the camera (Vanilla zoom is 0).|Does not affect max zoom possible. +version = 6 [Default] $mod = 2.0 @@ -18,4 +18,3 @@ $mod = 5.0 [Preset] name = "Zoom 10" $mod = 10.0 - diff --git a/src/XenobladeChroniclesX/Mods/GraphicsNpcInfoBubblesDistance/patch_bubbles.asm b/src/XenobladeChroniclesX/Mods/GraphicsNpcInfoBubblesDistance/patch_bubbles.asm index 8532f71a..3064ef92 100644 --- a/src/XenobladeChroniclesX/Mods/GraphicsNpcInfoBubblesDistance/patch_bubbles.asm +++ b/src/XenobladeChroniclesX/Mods/GraphicsNpcInfoBubblesDistance/patch_bubbles.asm @@ -1,12 +1,10 @@ [XCX_DISTMOBINFO] -moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U - +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J .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 @@ -16,7 +14,6 @@ blr ; ---------------------------------------------------------------------------- ; WHAT : cfs::CfMobInfo::setup((void)) ; WHY : Adjust the view distance based on the information type - _info_default: cmpwi r6, 2 beq tes @@ -44,28 +41,35 @@ stw r10, 0x40(r29) exit_info_obtained: blr -[XCX_DISTMOBINFO_ALL] ########################################################### -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U - +[XCX_DISTMOBINFO_V101E_V102U] ; ########################################################### +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07 ; 1.0.1E, 1.0.2U, 1.0.0E 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 +[XCX_DISTMOBINFO_V102J] ; ########################################################### +moduleMatches = 0x7672271D ; 1.0.2J +0x02386A94 = bla _init_react +0x02386738 = bla _info_obtained +0x02386768 = bla _info_default +0x0238E6F4 = nop ; Disable the call of cfs::CfMobInfo::update function (may have side effects) +0x0238E764 = nop ; Disable altitude check + +0x02386C90 = li r3, 0 + +[XCX_DISTMOBINFO_V100U] ; ########################################################### +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U 0x023871F0 = bla _init_react 0x02386E94 = bla _info_obtained 0x02386EC4 = bla _info_default @@ -74,3 +78,14 @@ moduleMatches = 0xAB97DE6B ; 1.0.1U 0x0238EEC0 = nop ; Disable altitude check 0x023873EC = li r3, 0 + +[XCX_DISTMOBINFO_V100J] ; ########################################################### +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x02386920 = bla _init_react +0x023865C4 = bla _info_obtained +0x023865F4 = bla _info_default + +0x0238E580 = nop ; Disable the call of cfs::CfMobInfo::update function (may have side effects) +0x0238E5F0 = nop ; Disable altitude check + +0x02386B1C = li r3, 0 diff --git a/src/XenobladeChroniclesX/Mods/GraphicsNpcInfoBubblesDistance/rules.txt b/src/XenobladeChroniclesX/Mods/GraphicsNpcInfoBubblesDistance/rules.txt index 60264db7..e7ceee85 100644 --- a/src/XenobladeChroniclesX/Mods/GraphicsNpcInfoBubblesDistance/rules.txt +++ b/src/XenobladeChroniclesX/Mods/GraphicsNpcInfoBubblesDistance/rules.txt @@ -3,4 +3,4 @@ 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. -version = 5 \ No newline at end of file +version = 6 diff --git a/src/XenobladeChroniclesX/Mods/HUDFreecam/patch_Freecam.asm b/src/XenobladeChroniclesX/Mods/HUDFreecam/patch_Freecam.asm new file mode 100644 index 00000000..202b1769 --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/HUDFreecam/patch_Freecam.asm @@ -0,0 +1,44 @@ +[XCX_FREECAM_V101E_V102U] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07 ; 1.0.1E, 1.0.2U, 1.0.0E +;this mod accesses the developer freecam used by the monolith soft devs +;'nop' makes it so that the specified line never executes + +; in func exe_normal__Q2_3Cam8CCamCtrlFv +0x022261BC = nop ;isFreeCamera__Q2_3cfs14CfSceneManagerCFv +; in func isControl__Q2_3cfs9CfObjUtilSFPQ2_3cfs5CfObj +0x0244F930 = nop ;isFreeCamera__Q2_3cfs14CfSceneManagerCFv +; in func isControl__Q2_3cfs18CfCompoActionActorCFPQ2_3cfs5CfObj +0x02467090 = nop ;isFreeCamera__Q2_3cfs14CfSceneManagerCFv +; in func updateBefore__Q2_3cfs16CfCompoCtrlActorFf +0x025532E8 = nop ;isFreeCamera__Q2_3cfs14CfSceneManagerCFv +; in func update__Q2_3cfs14CfSceneFreeCamFv +0x02601CFC = nop ;isFreeCamera__Q2_3cfs14CfSceneManagerCFv +; in func dispFieldCamera__Q2_2ev16CUIManagerAlwaysFb +0x0276A774 = nop ;MenuTask::openHudEventCamera + +[XCX_FREECAM_V102J] +moduleMatches = 0x7672271D ; 1.0.2J +0x02225C88 = nop +0x0244EF70 = nop +0x024666D0 = nop +0x025528C4 = nop +0x026012D8 = nop +0x02768EEC = nop + +[XCX_FREECAM_V100U] +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U +0x022261BC = nop +0x0244F8C0 = nop +0x02467020 = nop +0x02553278 = nop +0x02601C8C = nop +0x0276A714 = nop + +[XCX_FREECAM_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x02225A04 = nop +0x0244E494 = nop +0x02465BF4 = nop +0x02551DE8 = nop +0x026007FC = nop +0x02767F7C = nop diff --git a/src/XenobladeChroniclesX/Mods/HUDFreecam/rules.txt b/src/XenobladeChroniclesX/Mods/HUDFreecam/rules.txt new file mode 100644 index 00000000..b85161e1 --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/HUDFreecam/rules.txt @@ -0,0 +1,6 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Freecam" +path = "Xenoblade Chronicles X/Mods/HUD/Freecam" +description = Look around the world with the developer freecam.|The game functions like normal when you're in this mode. Area renders around camera, so going too far will make your character have no ground and die.||Made by blingbloing, modified by intra.|||Hold 'R' button to move camera up|Hold 'L' button to move camera down|Hold 'X' button to keep camera in place|Hold 'Y' button to speed up camera|Tip: Press and hold the R stick button to speed up even more +version = 6 diff --git a/src/XenobladeChroniclesX/Mods/HUDNoModelFade/patch_NoModelFade.asm b/src/XenobladeChroniclesX/Mods/HUDNoModelFade/patch_NoModelFade.asm new file mode 100644 index 00000000..3849f4fd --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/HUDNoModelFade/patch_NoModelFade.asm @@ -0,0 +1,29 @@ +[XCX_NoModelFade_V101E_V102U] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07 ; 1.0.1E, 1.0.2U, 1.0.0E +; in func setCameraAlphaMount__Q2_3cfs5CfObjFf +0x023EAC38 = nop ;setCameraAlphaMount__Q2_3cfs5CfObjFf +0x023EB5A4 = nop ;setCameraAlphaMount__Q2_3cfs5CfObjFf +; in func updateAlpha__Q2_3cfs17CfCompoAssetActorFv +0x02483E14 = nop ;setCameraAlphaMount__Q2_3cfs5CfObjFf +0x02484018 = nop ;setCameraAlphaMount__Q2_3cfs5CfObjFf + +[XCX_NoModelFade_V102J] +moduleMatches = 0x7672271D ; 1.0.2J +0x023EA278 = nop +0x023EABE4 = nop +0x02483454 = nop +0x02483658 = nop + +[XCX_NoModelFade_V100U] +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U +0x023EABC8 = nop +0x023EB534 = nop +0x02483DA4 = nop +0x02483FA8 = nop + +[XCX_NoModelFade_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x023E9DA8 = nop +0x023EA714 = nop +0x02482978 = nop +0x02482B7C = nop diff --git a/src/XenobladeChroniclesX/Mods/HUDNoModelFade/rules.txt b/src/XenobladeChroniclesX/Mods/HUDNoModelFade/rules.txt new file mode 100644 index 00000000..4fc4b722 --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/HUDNoModelFade/rules.txt @@ -0,0 +1,6 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "No Fading When Close-up" +path = "Xenoblade Chronicles X/Mods/HUD/No Fading When Close-up" +description = Makes it so that character and skell models don't fade out when the camera gets too close. +version = 6 diff --git a/src/XenobladeChroniclesX/Mods/HUDRemoveOverdriveBlur/patch_RemoveBlur.asm b/src/XenobladeChroniclesX/Mods/HUDRemoveOverdriveBlur/patch_RemoveBlur.asm new file mode 100644 index 00000000..09bc4ea7 --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/HUDRemoveOverdriveBlur/patch_RemoveBlur.asm @@ -0,0 +1,32 @@ +[XCX_REMOVEBLUR_V101E_V102U_V100U] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07, 0xAB97DE6B, 0x676EB33E ; 1.0.1E, 1.0.2U, 1.0.0E, 1.0.1U, 1.0.0U +; in func update__Q2_4Gear5CGearFf +0x021BC970 = nop ;_updateBlur__Q2_4Gear5CGearFf +; in func Update__Q2_4Gear5CModeFf +0x021E208C = nop ;_updateBlur__Q2_4Gear5CModeFf +; in func _startDecorate__Q2_4Gear5CGearFUi +0x021BEDAC = nop ;_startBlur__Q2_4Gear5CGearFv +; in func _startDecorate__Q2_4Gear5CModeFUi +0x021CFCCC = nop ;_startBlur__Q2_4Gear5CModeFv +; in func _endDecorate__Q2_4Gear5CGearFUi +0x021B4294 = nop ;_endBlur__Q2_4Gear5CGearFv +; in func _tailStatus__Q2_6Battle14CBattleManagerFv +0x020B6404 = nop ;IsEndBlur__Q2_4Gear5CGearFv + +[XCX_REMOVEBLUR_V102J] +moduleMatches = 0x7672271D ; 1.0.2J +0x021BC43C = nop +0x021E1B58 = nop +0x021BE878 = nop +0x021CF798 = nop +0x021B3D60 = nop +0x020B5ED0 = nop + +[XCX_REMOVEBLUR_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x021BC1B8 = nop +0x021E18D4 = nop +0x021BE5F4 = nop +0x021CF514 = nop +0x021B3ADC = nop +0x020B5C5C = nop diff --git a/src/XenobladeChroniclesX/Mods/HUDRemoveOverdriveBlur/rules.txt b/src/XenobladeChroniclesX/Mods/HUDRemoveOverdriveBlur/rules.txt new file mode 100644 index 00000000..615a178c --- /dev/null +++ b/src/XenobladeChroniclesX/Mods/HUDRemoveOverdriveBlur/rules.txt @@ -0,0 +1,6 @@ +[Definition] +titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 +name = "Remove Overdrive Blur" +path = "Xenoblade Chronicles X/Mods/HUD/Remove Overdrive Blur" +description = Removes the blur that happens around the screen when you are in Overdrive. +version = 6 diff --git a/src/XenobladeChroniclesX/Mods/HideOfflineLabel/patch_NoOfflineLabel.asm b/src/XenobladeChroniclesX/Mods/HideOfflineLabel/patch_NoOfflineLabel.asm index 2f26139c..d1bcfb89 100644 --- a/src/XenobladeChroniclesX/Mods/HideOfflineLabel/patch_NoOfflineLabel.asm +++ b/src/XenobladeChroniclesX/Mods/HideOfflineLabel/patch_NoOfflineLabel.asm @@ -1,22 +1,21 @@ -[XCX_NoOffline_V16J] -moduleMatches = 0x785CA8A9 - -0x100B06DC = nop ; frameIn - - -[XCX_NoOffline_V102J] -moduleMatches = 0x7672271D - -0x100B0B28 = nop ; frameIn - - -[XCX_NoOffline_V100E_V101E] -moduleMatches = 0x218F6E07, 0xF882D5CF - +[XCX_NoOffline_V101E] +moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E +; WHO : s_offline_frameIn +; WHAT : Never process this function so that the online label is never shown 0x100B0B50 = nop ; frameIn - [XCX_NoOffline_V102U] -moduleMatches = 0x30B6E091 +moduleMatches = 0x30B6E091 ; 1.0.2U +0x100B0B38 = nop ; frameIn -0x100B0B38 = nop ; frameIn \ No newline at end of file +[XCX_NoOffline_V102J] +moduleMatches = 0x7672271D ; 1.0.2J +0x100B099C = nop ; frameIn + +[XCX_NoOffline_V100U] +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U +0x100B0AA0 = nop ; frameIn + +[XCX_NoOffline_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x100B06DB = nop ; frameIn ; diff --git a/src/XenobladeChroniclesX/Mods/HideOfflineLabel/rules.txt b/src/XenobladeChroniclesX/Mods/HideOfflineLabel/rules.txt index 0bbbcba5..19b7ce5c 100644 --- a/src/XenobladeChroniclesX/Mods/HideOfflineLabel/rules.txt +++ b/src/XenobladeChroniclesX/Mods/HideOfflineLabel/rules.txt @@ -3,4 +3,4 @@ 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 +version = 6 diff --git a/src/XenobladeChroniclesX/Mods/HudChangeTimeFromEmanual/patch_hudtime.asm b/src/XenobladeChroniclesX/Mods/HudChangeTimeFromEmanual/patch_hudtime.asm index e2419c22..aecd8bec 100644 --- a/src/XenobladeChroniclesX/Mods/HudChangeTimeFromEmanual/patch_hudtime.asm +++ b/src/XenobladeChroniclesX/Mods/HudChangeTimeFromEmanual/patch_hudtime.asm @@ -1,11 +1,10 @@ -[XCX_EMANUAL_1E] -moduleMatches = 0xF882D5CF ; 1.0.1E - +[XCX_EMANUAL_101E] +moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E ; ---------------------------------------------------------------------------- ; WHO : menu::MenuMainMenu::funcManual((int)) ; WHAT : Replace eManual function with timeManipulate function -_openTimeManipulate = 0x02C7A2F0 +_openTimeManipulate = 0x02C7A2F0 ; MenuTask::openTimeManipulate(void) _isFinishTM = 0x02C7A4CC ; MenuTask::isFinishTimeManipulate((void)) 0x02B83CB4 = bl _openTimeManipulate @@ -14,11 +13,10 @@ _isFinishTM = 0x02C7A4CC ; MenuTask::isFinishTimeManipulate((void)) 0x02B83C7C = bl _isFinishTM 0x02B83C98 = bl _isFinishTM -################################################################################# -[XCX_EMANUAL_2U] +;################################################################################# +[XCX_EMANUAL_V102U] moduleMatches = 0x30B6E091 ; 1.0.2U - -_openTimeManipulate = 0x02C7A290 +_openTimeManipulate = 0x02C7A290 ; MenuTask::openTimeManipulate(void) _isFinishTM = 0x02C7A46C ; MenuTask::isFinishTimeManipulate((void)) 0x02B83CA4 = bl _openTimeManipulate @@ -27,11 +25,22 @@ _isFinishTM = 0x02C7A46C ; MenuTask::isFinishTimeManipulate((void)) 0x02B83C6C = bl _isFinishTM 0x02B83C88 = bl _isFinishTM -################################################################################# -[XCX_EMANUAL_1U] -moduleMatches = 0xAB97DE6B ; 1.0.1U +;################################################################################# +[XCX_EMANUAL_V102J] +moduleMatches = 0x7672271D ; 1.0.2J +_openTimeManipulate = 0x02C757E4 ; MenuTask::openTimeManipulate(void) +_isFinishTM = 0x02C759C0 ; MenuTask::isFinishTimeManipulate((void)) -_openTimeManipulate = 0x02C7A118 +0x02B7FBF0 = bl _openTimeManipulate +0x02B7FC08 = bl _openTimeManipulate + +0x02B7FBB8 = bl _isFinishTM +0x02B7FBD4 = bl _isFinishTM + +;################################################################################# +[XCX_EMANUAL_V100U] +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U +_openTimeManipulate = 0x02C7A118 ; MenuTask::openTimeManipulate(void) _isFinishTM = 0x02C7A2F4 ; MenuTask::isFinishTimeManipulate((void)) 0x02B83C28 = bl _openTimeManipulate @@ -39,3 +48,15 @@ _isFinishTM = 0x02C7A2F4 ; MenuTask::isFinishTimeManipulate((void)) 0x02B83BF0 = bl _isFinishTM 0x02B83C0C = bl _isFinishTM + +;################################################################################# +[XCX_EMANUAL_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +_openTimeManipulate = 0x02C71CD0 ; MenuTask::openTimeManipulate(void) +_isFinishTM = 0x02C71EAC ; MenuTask::isFinishTimeManipulate((void)) + +0x02B7D640 = bl _openTimeManipulate +0x02B7D658 = bl _openTimeManipulate + +0x02B7D608 = bl _isFinishTM +0x02B7D624 = bl _isFinishTM diff --git a/src/XenobladeChroniclesX/Mods/HudChangeTimeFromEmanual/rules.txt b/src/XenobladeChroniclesX/Mods/HudChangeTimeFromEmanual/rules.txt index 6f58c98a..b74b2d60 100644 --- a/src/XenobladeChroniclesX/Mods/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. -version = 5 \ No newline at end of file +description = Allow to change time from the eManual entry of the main menu.|Fixes the soft lock that happens when selecting eManual on Cemu. +version = 6 diff --git a/src/XenobladeChroniclesX/Mods/LootEquipmentsAlternateRandomAffix/patch_randaffix.asm b/src/XenobladeChroniclesX/Mods/LootEquipmentsAlternateRandomAffix/patch_randaffix.asm index ac78631e..1327caba 100644 --- a/src/XenobladeChroniclesX/Mods/LootEquipmentsAlternateRandomAffix/patch_randaffix.asm +++ b/src/XenobladeChroniclesX/Mods/LootEquipmentsAlternateRandomAffix/patch_randaffix.asm @@ -1,21 +1,32 @@ [XCX_LOOT_RANDOM_AFFIX] -moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U - +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J .origin = codecave - +.int $var1 ; 80 +.int $var2 ; 80 +.int $var3 ; 20 ; ---------------------------------------------------------------------------- ; 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 +cmpwi r27, $var1 ; 80 blt percent20 -li r27, 80 +li r27, $var2 ; 80 blr percent20: -li r27, 20 +li r27, $var3 ; 20 blr + +[XCX_LOOT_RANDOM_AFFIX_V101E_V102U_V100U] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07, 0xAB97DE6B, 0x676EB33E ; 1.0.1E, 1.0.2U, 1.0.0E, 1.0.1U, 1.0.0U 0x021AB778 = bla _minDropRate + +[XCX_LOOT_RANDOM_AFFIX_V102J] +moduleMatches = 0x7672271D ; 1.0.2J +0x021AB244 = bla _minDropRate + +[XCX_LOOT_RANDOM_AFFIX_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x021AAFC0 = bla _minDropRate diff --git a/src/XenobladeChroniclesX/Mods/LootEquipmentsAlternateRandomAffix/rules.txt b/src/XenobladeChroniclesX/Mods/LootEquipmentsAlternateRandomAffix/rules.txt index b50f912f..d7dadbe1 100644 --- a/src/XenobladeChroniclesX/Mods/LootEquipmentsAlternateRandomAffix/rules.txt +++ b/src/XenobladeChroniclesX/Mods/LootEquipmentsAlternateRandomAffix/rules.txt @@ -3,5 +3,18 @@ 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 +version = 6 +[Default] +$var1 = 80 +$var2 = 80 +$var3 = 20 + +[Preset] +name = "80%, 20%" #(recommended) + +#[Preset] +#name = "50%, 50%" #(untested) +#$var1 = 50 +#$var2 = 50 +#$var3 = 50 diff --git a/src/XenobladeChroniclesX/Mods/LootEquipmentsBestQuality/patch_quality.asm b/src/XenobladeChroniclesX/Mods/LootEquipmentsBestQuality/patch_quality.asm index 0c8ace5c..0dbf854d 100644 --- a/src/XenobladeChroniclesX/Mods/LootEquipmentsBestQuality/patch_quality.asm +++ b/src/XenobladeChroniclesX/Mods/LootEquipmentsBestQuality/patch_quality.asm @@ -1,18 +1,34 @@ -[XCX_LOOT_EQUIPMENT_BESTQUALITY] -moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U - -; ---------------------------------------------------------------------------- +[XCX_LOOT_EQUIPMENT_BESTQUALITY_V101E_V102U_V100U] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07, 0xAB97DE6B, 0x676EB33E ; 1.0.1E, 1.0.2U, 1.0.0E, 1.0.1U, 1.0.0U +; ------------------------------------------------------------------------ ; 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 (always orange/yellow) +0x021AEE7C = li r3, $traits ; num of gear traits +0x021AF280 = li r3, $slots ; num of gear slots -0x021AEE7C = li r3, 3 -0x021AF280 = li r3, 3 +[XCX_LOOT_EQUIPMENT_BESTQUALITY_V102J] +moduleMatches = 0x7672271D ; 1.0.2J +0x021AD1DC = nop ; ground weapons ? +0x021AD538 = nop ; ground armors +0x021AD8B4 = nop ; skell weapons +0x021ADC30 = nop ; skell armors + +0x021AE948 = li r3, $traits ; num of gear traits +0x021AED4C = li r3, $slots ; num of gear slots + +[XCX_LOOT_EQUIPMENT_BESTQUALITY_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x021ACF58 = nop ; ground weapons ? +0x021AD2B4 = nop ; ground armors +0x021AD630 = nop ; skell weapons +0x021AD9AC = nop ; skell armors + +0x021AE6C4 = li r3, $traits ; num of gear traits +0x021AEAC8 = li r3, $slots ; num of gear slots diff --git a/src/XenobladeChroniclesX/Mods/LootEquipmentsBestQuality/rules.txt b/src/XenobladeChroniclesX/Mods/LootEquipmentsBestQuality/rules.txt index 5f6f8bd7..88c597e1 100644 --- a/src/XenobladeChroniclesX/Mods/LootEquipmentsBestQuality/rules.txt +++ b/src/XenobladeChroniclesX/Mods/LootEquipmentsBestQuality/rules.txt @@ -1,6 +1,49 @@ [Definition] 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). -version = 5 +name = "Equipment - Force Quality" +path = "Xenoblade Chronicles X/Mods/Loot/Equipment - Force Quality" +description = Equipment looted is always of the specified quality (Prime = Intergalactic for Skell weapons) and always has 0-3 augments and 0-3 extra free slots.||Armor can normally only have 1 slot, so setting 2/3 slots will create cheat equipment. +version = 6 + +[Default] +$traits = 3 +$slots = 1 + +[Preset] +name = "Prime (3 traits)" +category = "Quality" + +[Preset] +name = "Unique (2 traits)" +category = "Quality" +$traits = 2 + +[Preset] +name = "Rare (1 trait)" +category = "Quality" +$traits = 1 + +[Preset] +name = "Common (0 traits)" +category = "Quality" +$traits = 0 + +[Preset] +name = "0 Slots" +category = "Number of Slots" +$slots = 0 + +[Preset] +name = "1 Slot" +category = "Number of Slots" +default = 1 + +[Preset] +name = "2 Slots" +category = "Number of Slots" +$slots = 2 + +[Preset] +name = "3 Slots" +category = "Number of Slots" +$slots = 3 diff --git a/src/XenobladeChroniclesX/Mods/LootEquipmentsForceCount/patch_count.asm b/src/XenobladeChroniclesX/Mods/LootEquipmentsForceCount/patch_count.asm index 132696f1..b243bcc6 100644 --- a/src/XenobladeChroniclesX/Mods/LootEquipmentsForceCount/patch_count.asm +++ b/src/XenobladeChroniclesX/Mods/LootEquipmentsForceCount/patch_count.asm @@ -1,10 +1,20 @@ -[XCX_LOOT_EQUIPMENT_COUNT] -moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U - +[XCX_LOOT_EQUIPMENT_COUNT_V101E_V102U_V100U] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07, 0xAB97DE6B, 0x676EB33E ; 1.0.1E, 1.0.2U, 1.0.0E, 1.0.1U, 1.0.0U ; ---------------------------------------------------------------------------- ; 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 + +[XCX_LOOT_EQUIPMENT_COUNT_V102J] +moduleMatches = 0x7672271D ; 1.0.2J +0x021AACE4 = li r3, $cnt3 +0x021AAD34 = li r3, $cnt2 +0x021AAD84 = li r3, $cnt1 + +[XCX_LOOT_EQUIPMENT_COUNT_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x021AAA60 = li r3, $cnt3 +0x021AAAB0 = li r3, $cnt2 +0x021AAB00 = li r3, $cnt1 diff --git a/src/XenobladeChroniclesX/Mods/LootEquipmentsForceCount/rules.txt b/src/XenobladeChroniclesX/Mods/LootEquipmentsForceCount/rules.txt index c3afe9bd..87b0ef8c 100644 --- a/src/XenobladeChroniclesX/Mods/LootEquipmentsForceCount/rules.txt +++ b/src/XenobladeChroniclesX/Mods/LootEquipmentsForceCount/rules.txt @@ -3,24 +3,21 @@ 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. -version = 5 +version = 6 [Default] -$cnt3 = 0 -$cnt2 = 0 -$cnt1 = 0 +$cnt3 = 100 +$cnt2 = 100 +$cnt1 = 100 [Preset] name = "Always 3 equipments" -$cnt2 = 100 -$cnt1 = 100 +$cnt3 = 0 [Preset] name = "Always 2 equipments" -$cnt3 = 100 -$cnt1 = 100 +$cnt2 = 0 [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 index 53a9f2f2..5dee7d05 100644 --- a/src/XenobladeChroniclesX/Mods/LootEquipmentsForceType/patch_type.asm +++ b/src/XenobladeChroniclesX/Mods/LootEquipmentsForceType/patch_type.asm @@ -1,8 +1,8 @@ [XCX_LOOT_EQUIPMENT_TYPE] -moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U - +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J .origin = codecave - +.int $type +.int $sub ; ---------------------------------------------------------------------------- ; WHO : __CPR98__calcItemTableID__Q2_8ItemDrop16CItemDropManagerFUcRCQ3_J20JJ29J11SCreateInfoRUs ; WHAT : Force some kind of equipment to be looted in Gold chests @@ -11,13 +11,6 @@ moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U ; 6 = Skell weapons ; 8 = Skell armors -.int $type - -0x021AEB88 = li r4, $type -0x021AEB5C = li r27, $type - -.int $sub - ; Ground Weapons _notRand: li r4, $sub @@ -28,8 +21,6 @@ exit_notRand: cmplw r3, r12 blr -0x021AC280 = bla _notRand - _setSubGW: li r3, $sub cmpwi r3, 0 @@ -39,8 +30,6 @@ exit_setSubGW: addi r3, r1, 0x54 blr -0x021AD6DC = bla _setSubGW - _setSubGA: li r3, $sub cmpwi r3, 0 @@ -50,8 +39,6 @@ exit_setSubGA: addi r3, r1, 0x6C blr -0x021ADD28 = bla _setSubGA - _setSubSA: li r3, $sub cmpwi r3, 0 @@ -61,6 +48,33 @@ exit_setSubSA: addi r3, r1, 0x9C blr -0x021AE420 = bla _setSubSA +[XCX_LOOT_EQUIPMENT_TYPE_V101E_V102U_V100U] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07, 0xAB97DE6B, 0x676EB33E ; 1.0.1E, 1.0.2U, 1.0.0E, 1.0.1U, 1.0.0U +0x021AEB88 = li r4, $type +0x021AEB5C = li r27, $type +0x021AC280 = bla _notRand +0x021AD6DC = bla _setSubGW +0x021ADD28 = bla _setSubGA +0x021AE420 = bla _setSubSA ;0x021AD9A4 = li r3, 4 ; force index + +[XCX_LOOT_EQUIPMENT_TYPE_V102J] +moduleMatches = 0x7672271D ; 1.0.2J +0x021AE654 = li r4, $type +0x021AE628 = li r27, $type +0x021ABD4C = bla _notRand +0x021AD1A8 = bla _setSubGW +0x021AD7F4 = bla _setSubGA +0x021ADEEC = bla _setSubSA +;0x021AD470 = li r3, 4 ; force index + +[XCX_LOOT_EQUIPMENT_TYPE_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x021AE3D0 = li r4, $type +0x021AE3A4 = li r27, $type +0x021ABAC8 = bla _notRand +0x021ACF24 = bla _setSubGW +0x021AD570 = bla _setSubGA +0x021ADC68 = bla _setSubSA +;0x021AD1EC = li r3, 4 ; force index diff --git a/src/XenobladeChroniclesX/Mods/LootEquipmentsForceType/rules.txt b/src/XenobladeChroniclesX/Mods/LootEquipmentsForceType/rules.txt index e24b1f43..1730358b 100644 --- a/src/XenobladeChroniclesX/Mods/LootEquipmentsForceType/rules.txt +++ b/src/XenobladeChroniclesX/Mods/LootEquipmentsForceType/rules.txt @@ -3,7 +3,7 @@ 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 +version = 6 [Default] $type:int = 2 @@ -174,6 +174,3 @@ name = "Leg" category = Skell Armor condition = $type == 8 $sub:int = 5 - - - diff --git a/src/XenobladeChroniclesX/Mods/LootEquipmentsIgnoreBroken/patch_broken.asm b/src/XenobladeChroniclesX/Mods/LootEquipmentsIgnoreBroken/patch_broken.asm index 1de2a1f1..ca25f435 100644 --- a/src/XenobladeChroniclesX/Mods/LootEquipmentsIgnoreBroken/patch_broken.asm +++ b/src/XenobladeChroniclesX/Mods/LootEquipmentsIgnoreBroken/patch_broken.asm @@ -1,8 +1,14 @@ -[XCX_LOOT_EQUIPMENT_BROKEN] -moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U - +[XCX_LOOT_EQUIPMENT_BROKEN_V101E_V102U_V100U] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07, 0xAB97DE6B, 0x676EB33E ; 1.0.1E, 1.0.2U, 1.0.0E, 1.0.1U, 1.0.0U ; ---------------------------------------------------------------------------- ; WHO : __CPR129__calcItem__Q2_8ItemDrop16CItemDropManagerFRQ3_J13JJ22J9SDropInfoUcRCQ3_J13JJ22J11SCreateInfo -; WHAT : Remove broken equipment (to be tested) +; WHAT : Remove broken equipment +0x021AEBE0 = li r3, $mod ; Nothing is broken -0x021AEBE0 = li r3, 0 ; Nothing is broken +[XCX_LOOT_EQUIPMENT_BROKEN_V102J] +moduleMatches = 0x7672271D ; 1.0.2J +0x021AE6AC = li r3, $mod + +[XCX_LOOT_EQUIPMENT_BROKEN_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x021AE428 = li r3, $mod diff --git a/src/XenobladeChroniclesX/Mods/LootEquipmentsIgnoreBroken/rules.txt b/src/XenobladeChroniclesX/Mods/LootEquipmentsIgnoreBroken/rules.txt index a9370110..f99f3e70 100644 --- a/src/XenobladeChroniclesX/Mods/LootEquipmentsIgnoreBroken/rules.txt +++ b/src/XenobladeChroniclesX/Mods/LootEquipmentsIgnoreBroken/rules.txt @@ -2,6 +2,15 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = "Equipment - Ignore broken" path = "Xenoblade Chronicles X/Mods/Loot/Equipment - Ignore broken" -description = Never get broken equipment. -version = 5 +description = Never or always get broken equipment. +version = 6 +[Default] +$mod = 0 + +[Preset] +name = Never get broken equipment + +[Preset] +name = Always get broken equipment +$mod = 1 diff --git a/src/XenobladeChroniclesX/Mods/LootMaterialsDrop/patch_materials.asm b/src/XenobladeChroniclesX/Mods/LootMaterialsDrop/patch_materials.asm index 800d5df5..73f3069c 100644 --- a/src/XenobladeChroniclesX/Mods/LootMaterialsDrop/patch_materials.asm +++ b/src/XenobladeChroniclesX/Mods/LootMaterialsDrop/patch_materials.asm @@ -1,27 +1,11 @@ -[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 - +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J .origin = codecave +.int $ratio ; ---------------------------------------------------------------------------- ; WHO : __CPR90__calcItemBronze__Q2_8ItemDrop16CItemDropManagerFRQ3_J19JJ28J9SDropInfoUc ; WHAT : Affect the drop ratio of materials - -.int $ratio - _minDropRate: li r11, $ratio li r31, 0 @@ -36,19 +20,13 @@ 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 @@ -70,4 +48,55 @@ _fixit: mr r4, r3 blr +[XCX_LOOT_MATERIALS_V101E] +moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E +0x030FA650 = _mtRand: +0x02B09748 = nop +0x02B09788 = nop + +[XCX_LOOT_MATERIALS_V102U] +moduleMatches = 0x30B6E091 ; 1.0.2U +0x030FA654 = _mtRand: +0x02B09738 = nop +0x02B09778 = nop + +[XCX_LOOT_MATERIALS_V100U] +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U +0x030FA4D4 = _mtRand: +0x02B096BC = nop +0x02B096FC = nop + +[XCX_LOOT_MATERIALS_V101E_V102U_V100U] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07, 0xAB97DE6B, 0x676EB33E ; 1.0.1E, 1.0.2U, 1.0.0E, 1.0.1U, 1.0.0U +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 + +0x021AF334 = bla _saveEquipCnt 0x021AF620 = bla _fixit + +[XCX_LOOT_MATERIALS_V102J] +moduleMatches = 0x7672271D ; 1.0.2J +0x030F5B94 = _mtRand: +0x02B05688 = nop +0x02B056C8 = nop + +0x021AF0A8 = bla _minDropRate ; modify drop ratio for bronze chests +0x021AF0E0 = bla _minDropRate ; modify drop ratio for silver chests +0x021AF0C4 = bla _minDropRate ; modify drop ratio for gold chests + +0x021AEE00 = bla _saveEquipCnt +0x021AF0EC = bla _fixit + +[XCX_LOOT_MATERIALS_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x030F0794 = _mtRand: +0x02B03530 = nop +0x02B03570 = nop + +0x021AEE24 = bla _minDropRate ; modify drop ratio for bronze chests +0x021AEE5C = bla _minDropRate ; modify drop ratio for silver chests +0x021AEE40 = bla _minDropRate ; modify drop ratio for gold chests + +0x021AEB7C = bla _saveEquipCnt +0x021AEE68 = bla _fixit diff --git a/src/XenobladeChroniclesX/Mods/LootMaterialsDrop/rules.txt b/src/XenobladeChroniclesX/Mods/LootMaterialsDrop/rules.txt index 2f2dc590..63bfd63f 100644 --- a/src/XenobladeChroniclesX/Mods/LootMaterialsDrop/rules.txt +++ b/src/XenobladeChroniclesX/Mods/LootMaterialsDrop/rules.txt @@ -3,7 +3,7 @@ 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. -version = 5 +version = 6 [Default] $ratio = 100 @@ -25,4 +25,4 @@ $ratio = 30 [Preset] name = "Set minimum drop to 0% (never drop)" -$ratio = 0 \ No newline at end of file +$ratio = 0 diff --git a/src/XenobladeChroniclesX/Mods/LootTreasureQuality/patch_treasure.asm b/src/XenobladeChroniclesX/Mods/LootTreasureQuality/patch_treasure.asm index 23c93567..98ede25f 100644 --- a/src/XenobladeChroniclesX/Mods/LootTreasureQuality/patch_treasure.asm +++ b/src/XenobladeChroniclesX/Mods/LootTreasureQuality/patch_treasure.asm @@ -1,15 +1,12 @@ [XCX_LOOT_FORCECHEST] -moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U - +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J .origin = codecave - .int $forced .int $treasure ; ---------------------------------------------------------------------------- ; WHO : ItemDrop::CItemDropManager::calcRank((unsigned short, int)) ; WHAT : Force the chest quality - _goForced: li r28, $treasure li r4, $forced @@ -21,8 +18,10 @@ exit_goForced: mr. r28, r3 blr -0x021AAFA4 = bla _goForced +[XCX_LOOT_FORCECHEST_V101E_V102U_V100U] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07, 0xAB97DE6B, 0x676EB33E ; 1.0.1E, 1.0.2U, 1.0.0E, 1.0.1U, 1.0.0U +0x021AAFA4 = bla _goForced ; ---------------------------------------------------------------------------- ; 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 @@ -32,5 +31,14 @@ blr ; : 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 value 1 (gold chest), you'll still get a silver chest if the game succeeded the step 2. +0x021AAF18 = li r3, $treasure -0x21AAF18 = li r3, $treasure +[XCX_LOOT_FORCECHEST_V102J] +moduleMatches = 0x7672271D ; 1.0.2J +0x021AAA70 = bla _goForced +0x021AA9E4 = li r3, $treasure + +[XCX_LOOT_FORCECHEST_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x021AA7EC = bla _goForced +0x021AA760 = li r3, $treasure diff --git a/src/XenobladeChroniclesX/Mods/LootTreasureQuality/rules.txt b/src/XenobladeChroniclesX/Mods/LootTreasureQuality/rules.txt index 58624a15..b5cb0364 100644 --- a/src/XenobladeChroniclesX/Mods/LootTreasureQuality/rules.txt +++ b/src/XenobladeChroniclesX/Mods/LootTreasureQuality/rules.txt @@ -2,8 +2,8 @@ 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 +description = Select the preferred treasure quality you want to loot (see readme.txt for explanation).|Forced can make the story and/or sidequests impossible to complete. (Most key items come from silver treasures) +version = 6 [Default] $treasure:int = 0 @@ -24,11 +24,11 @@ $treasure:int = 3 [Preset] name = "No treasure" +[Preset] +name = "No" +category = Forced + [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 index d96d71ba..6f96c4af 100644 --- a/src/XenobladeChroniclesX/Mods/MaxItems/patch_maxitems.asm +++ b/src/XenobladeChroniclesX/Mods/MaxItems/patch_maxitems.asm @@ -1,17 +1,7 @@ -[XCX_MAXITEMS] ########################################################## -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U - +[XCX_MAXITEMS] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J .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 +.int $max _testsub: lwz r29, 0xC(r1) @@ -21,25 +11,47 @@ li r3, 255 exit_testsub: blr + +[XCX_MAXITEMS_V101E_V102U] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07 ; 1.0.1E, 1.0.2U, 1.0.0E +; cfs::CfItemBoxBase::addItem((fw::CItemType::Type, unsigned int, cfs::CfItemHandle &)) --> used to allow more than 99 (if not, auto sell) +0x02362C8C = cmplwi r12, $max + +; cfs::CfItemBoxBase::canAddItem((fw::CItemType::Type,uint)) --> used in ticket trading window +0x02363108 = cmplwi r12, $max + +; cfs::CfItemBoxBase::getFreeStackCount((fw::CItemType::Type,uint)) --> returns max quantity allowed to buy +0x023639DC = li r0, $max ; when some items in stock +0x023639FC = li r0, $max ; when no item in stock + 0x02363A28 = bla _testsub -[XCX_MAXITEMS_1U] ########################################################## -moduleMatches = 0xAB97DE6B ; 1.0.1U +[XCX_MAXITEMS_V102J] +moduleMatches = 0x7672271D ; 1.0.2J +0x023624C0 = cmplwi r12, $max +0x0236293C = cmplwi r12, $max -.origin = codecave +0x02363210 = li r0, $max ; when some items in stock +0x02363230 = li r0, $max ; when no item in stock -0x02362C1C = cmplwi r12, 999 -0x02363098 = cmplwi r12, 999 +0x0236325C = bla _testsub -0x0236396C = li r0, 999 ; when some items in stock -0x0236398C = li r0, 999 ; when no item in stock +[XCX_MAXITEMS_V100U] +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U +0x02362C1C = cmplwi r12, $max +0x02363098 = cmplwi r12, $max -_testsub: -lwz r29, 0xC(r1) -cmpwi r3, 255 -ble exit_testsub -li r3, 255 -exit_testsub: -blr +0x0236396C = li r0, $max ; when some items in stock +0x0236398C = li r0, $max ; when no item in stock 0x023639B8 = bla _testsub + +[XCX_MAXITEMS_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x0236234C = cmplwi r12, $max +0x023627C8 = cmplwi r12, $max + +0x0236309C = li r0, $max ; when some items in stock +0x023630BC = li r0, $max ; when no item in stock + +0x023630E8 = bla _testsub diff --git a/src/XenobladeChroniclesX/Mods/MaxItems/rules.txt b/src/XenobladeChroniclesX/Mods/MaxItems/rules.txt index 04e57fd6..a3dc17ff 100644 --- a/src/XenobladeChroniclesX/Mods/MaxItems/rules.txt +++ b/src/XenobladeChroniclesX/Mods/MaxItems/rules.txt @@ -2,5 +2,27 @@ 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 +description = Increases maximum amount of items. +version = 6 + +[Default] +$max = 99 + +[Preset] +name = 99 (Default) +category = Max Items + +[Preset] +name = 200 +category = Max Items +$max = 200 + +[Preset] +name = 500 +category = Max Items +$max = 500 + +[Preset] +name = 999 +category = Max Items +$max = 999 diff --git a/src/XenobladeChroniclesX/Mods/MaxMoney/patch_maxmoney.asm b/src/XenobladeChroniclesX/Mods/MaxMoney/patch_maxmoney.asm index 48fca31f..b522bba1 100644 --- a/src/XenobladeChroniclesX/Mods/MaxMoney/patch_maxmoney.asm +++ b/src/XenobladeChroniclesX/Mods/MaxMoney/patch_maxmoney.asm @@ -1,54 +1,87 @@ -[XCX_MAXMONEY] ############################################################## -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U - +[XCX_MAXMONEY_V101E_V102U] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07 ; 1.0.1E, 1.0.2U, 1.0.0E ; 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 +[XCX_MAXMONEY_V102J] ; ########################################################### +moduleMatches = 0x7672271D ; 1.0.2J +; fw::Util::addMoney((int)) +0x027F47CC = lis r12, 0x3B9B +0x027F47D4 = addi r12, r12, -0x3601 +0x027F47E0 = lis r3, 0x3B9B +0x027F47E4 = addi r3, r3, -0x3601 +; fw::Util::setMoney((unsigned int)) +0x027F474C = lis r4, 0x3B9B +0x027F4750 = addi r4, r4, -0x3601 +; fw::Util::setTradeTicket((unsigned int)) +0x027f48A4 = lis r0, 0x3B9A +0x027f48A8 = ori r0, r0, 0xC9FF +; fw::Util::setMiranium((unsigned int)) +0x027F4940 = lis r0, 0x3B9A +0x027F4944 = ori r0, r0, 0xC9FF +; fw::Util::addMiranium((int)) +0x027F49A0 = lis r0, 0x3B9A +0x027f49A8 = ori r0, r0, 0xC9FF +0x027f49B8 = lis r12, 0x3B9B +0x027f49BC = addi r12, r12, -0x3601 +[XCX_MAXMONEY_V100U] ; ########################################################### +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U ; 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 +[XCX_MAXMONEY_V100J] ; ########################################################### +moduleMatches = 0x785CA8A9 ; 1.0.0J +; fw::Util::addMoney((int)) +0x027F37A0 = lis r12, 0x3B9B +0x027F37A8 = addi r12, r12, -0x3601 +0x027F37B4 = lis r3, 0x3B9B +0x027F37B8 = addi r3, r3, -0x3601 +; fw::Util::setMoney((unsigned int)) +0x027F3720 = lis r4, 0x3B9B +0x027F3724 = addi r4, r4, -0x3601 +; fw::Util::setTradeTicket((unsigned int)) +0x027F3878 = lis r0, 0x3B9A +0x027F387C = ori r0, r0, 0xC9FF +; fw::Util::setMiranium((unsigned int)) +0x027F3914 = lis r0, 0x3B9A +0x027F3918 = ori r0, r0, 0xC9FF +; fw::Util::addMiranium((int)) +0x027F3974 = lis r0, 0x3B9A +0x027F397C = ori r0, r0, 0xC9FF +0x027F398C = lis r12, 0x3B9B +0x027F3990 = addi r12, r12, -0x3601 diff --git a/src/XenobladeChroniclesX/Mods/MaxMoney/rules.txt b/src/XenobladeChroniclesX/Mods/MaxMoney/rules.txt index 8965cae5..d9130097 100644 --- a/src/XenobladeChroniclesX/Mods/MaxMoney/rules.txt +++ b/src/XenobladeChroniclesX/Mods/MaxMoney/rules.txt @@ -3,4 +3,4 @@ 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 +version = 6 diff --git a/src/XenobladeChroniclesX/Mods/MaxTickets/patch_maxtickets.asm b/src/XenobladeChroniclesX/Mods/MaxTickets/patch_maxtickets.asm index d360c89f..f0a999d0 100644 --- a/src/XenobladeChroniclesX/Mods/MaxTickets/patch_maxtickets.asm +++ b/src/XenobladeChroniclesX/Mods/MaxTickets/patch_maxtickets.asm @@ -1,28 +1,36 @@ -[XCX_MAXTICKETS_ALL] ########################################################## -moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U - +[XCX_MAXTICKETS] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J .origin = codecave +.int $cap ; cfs::CfSocialManager::getTradeTicketMax(const(void)) _maxtickets: -cmpwi r3, 10 +cmpwi r3, $cap blt levels lis r3, 0x0001 ori r3, r3, 0x869F blr levels: lwz r3, 0x1EC(r9) -mulli r3, r3, 10 +mulli r3, r3, $cap blr -[XCX_MAXTICKETS] ########################################################## -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U - +[XCX_MAXTICKETS_V101E_V102U] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07 ; 1.0.1E, 1.0.2U, 1.0.0E 0x022CA810 = bla _maxtickets 0x022CA834 = bla _maxtickets -[XCX_MAXTICKETS_1U] ########################################################## -moduleMatches = 0xAB97DE6B ; 1.0.1U +[XCX_MAXTICKETS_V102J] +moduleMatches = 0x7672271D ; 1.0.2J +0x022CA040 = bla _maxtickets +0x022CA064 = bla _maxtickets +[XCX_MAXTICKETS_V100U] +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U 0x022CA7A0 = bla _maxtickets 0x022CA7C4 = bla _maxtickets + +[XCX_MAXTICKETS_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x022C9ECC = bla _maxtickets +0x022C9EF0 = bla _maxtickets diff --git a/src/XenobladeChroniclesX/Mods/MaxTickets/rules.txt b/src/XenobladeChroniclesX/Mods/MaxTickets/rules.txt index 32c94b62..a0e059e6 100644 --- a/src/XenobladeChroniclesX/Mods/MaxTickets/rules.txt +++ b/src/XenobladeChroniclesX/Mods/MaxTickets/rules.txt @@ -2,5 +2,23 @@ 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 +description = "Maximum reward tickets are multiplied." +version = 6 + +[Default] +$cap = 10 + +[Preset] +name = x10 +category = Blade Level Cap +default = 1 + +[Preset] +name = x100 +category = Blade Level Cap +$cap = 100 + +[Preset] +name = x1000 +category = Blade Level Cap +$cap = 1000 diff --git a/src/XenobladeChroniclesX/Mods/MusicOverdriveDisabled/patch_music_overdrive.asm b/src/XenobladeChroniclesX/Mods/MusicOverdriveDisabled/patch_music_overdrive.asm index 099f2cb0..11e66e82 100644 --- a/src/XenobladeChroniclesX/Mods/MusicOverdriveDisabled/patch_music_overdrive.asm +++ b/src/XenobladeChroniclesX/Mods/MusicOverdriveDisabled/patch_music_overdrive.asm @@ -1,13 +1,18 @@ -[XCX_BGMNOOVER] -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U - +[XCX_BGMNOOVER_V101E_V102U] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07 ; 1.0.1E, 1.0.2U, 1.0.0E ; ---------------------------------------------------------------------------- ; WHO : cfs::CfSoundManagerBGM::playgear((unsigned int)) ; WHAT : Never process this function so that Overdrive music is never played - 0x022AB1F4 = blr -[XCX_BGMNOOVER_1U] -moduleMatches = 0xAB97DE6B ; 1.0.1U +[XCX_BGMNOOVER_V102J] +moduleMatches = 0x7672271D ; 1.0.2J +0x022AAC0C = blr -0x022AB184 = blr \ No newline at end of file +[XCX_BGMNOOVER_V100U] +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U +0x022AB184 = blr + +[XCX_BGMNOOVER_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x022AA960 = blr diff --git a/src/XenobladeChroniclesX/Mods/MusicOverdriveDisabled/rules.txt b/src/XenobladeChroniclesX/Mods/MusicOverdriveDisabled/rules.txt index 82954fc0..01b54617 100644 --- a/src/XenobladeChroniclesX/Mods/MusicOverdriveDisabled/rules.txt +++ b/src/XenobladeChroniclesX/Mods/MusicOverdriveDisabled/rules.txt @@ -3,4 +3,4 @@ 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. -version = 5 \ No newline at end of file +version = 6 diff --git a/src/XenobladeChroniclesX/Mods/MusicSkellFlightDisabled/patch_music_flight.asm b/src/XenobladeChroniclesX/Mods/MusicSkellFlightDisabled/patch_music_flight.asm index ebae2aa1..cde36245 100644 --- a/src/XenobladeChroniclesX/Mods/MusicSkellFlightDisabled/patch_music_flight.asm +++ b/src/XenobladeChroniclesX/Mods/MusicSkellFlightDisabled/patch_music_flight.asm @@ -1,15 +1,22 @@ -[XCX_BGMNOFLIGHT] -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U - +[XCX_BGMNOFLIGHT_V101E_V102U] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07 ; 1.0.1E, 1.0.2U, 1.0.0E ; ---------------------------------------------------------------------------- ; WHO : cfs::CfSoundManager::fbgmUpdate((void)) ; WHAT : Never call function cfs::CfSoundManager::fbgmChangeNameDoll((bool)) so that Skell Flight music is never played - 0x022A4DD4 = _skip: 0x022A4DC0 = b _skip -[XCX_BGMNOFLIGHT_1U] -moduleMatches = 0xAB97DE6B ; 1.0.1U +[XCX_BGMNOFLIGHT_V102J] +moduleMatches = 0x7672271D ; 1.0.2 +0x022A47EC = _skip: +0x022A47D8 = b _skip +[XCX_BGMNOFLIGHT_V100U] +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U 0x022A4D64 = _skip: 0x022A4D50 = b _skip + +[XCX_BGMNOFLIGHT_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x022A4540 = _skip: +0x022A452C = b _skip diff --git a/src/XenobladeChroniclesX/Mods/MusicSkellFlightDisabled/rules.txt b/src/XenobladeChroniclesX/Mods/MusicSkellFlightDisabled/rules.txt index 0d25c7f5..407d00fa 100644 --- a/src/XenobladeChroniclesX/Mods/MusicSkellFlightDisabled/rules.txt +++ b/src/XenobladeChroniclesX/Mods/MusicSkellFlightDisabled/rules.txt @@ -3,4 +3,4 @@ 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. -version = 5 \ No newline at end of file +version = 6 diff --git a/src/XenobladeChroniclesX/Mods/PhysicsJumpToTheMoon/patch_jump.asm b/src/XenobladeChroniclesX/Mods/PhysicsJumpToTheMoon/patch_jump.asm index b24fb272..a6a436e5 100644 --- a/src/XenobladeChroniclesX/Mods/PhysicsJumpToTheMoon/patch_jump.asm +++ b/src/XenobladeChroniclesX/Mods/PhysicsJumpToTheMoon/patch_jump.asm @@ -1,14 +1,13 @@ [XCX_MOONJUMP] -moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U - +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J .origin = codecave +.int $landtype VarVelocityV: .float $vert VarVelocityH: .float $horz - _setVelocity: lis r3, VarVelocityV@ha lfs f30, VarVelocityV@l(r3) @@ -22,19 +21,32 @@ fmuls f1, f1, f31 stfs f1, 0x18(r1) blr -[XCX_MOONJUMP_ALL] -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U +[XCX_MOONJUMP_V101E_V102U] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07 ; 1.0.1E, 1.0.2U, 1.0.0E 0x0264A700 = bla _setVelocity 0x0264AD40 = bla _setHorizVelocity ; chr::CIL_BaseJump::decideLandingType((void)) -0x024714E0 = li r3, 5 +0x024714E0 = li r3, $landtype -[XCX_MOONJUMP_1U] -moduleMatches = 0xAB97DE6B ; 1.0.1U +[XCX_MOONJUMP_V102J] +moduleMatches = 0x7672271D ; 1.0.2J +0x02649CDC = bla _setVelocity +0x0264A31C = bla _setHorizVelocity +0x02470B20 = li r3, $landtype + +[XCX_MOONJUMP_V100U] +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U 0x0264A690 = bla _setVelocity 0x0264ACD0 = bla _setHorizVelocity -0x02471470 = li r3, 5 +0x02471470 = li r3, $landtype + +[XCX_MOONJUMP_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x02649200 = bla _setVelocity +0x02649840 = bla _setHorizVelocity + +0x02470044 = li r3, $landtype diff --git a/src/XenobladeChroniclesX/Mods/PhysicsJumpToTheMoon/rules.txt b/src/XenobladeChroniclesX/Mods/PhysicsJumpToTheMoon/rules.txt index 30b2ff13..5e3098bf 100644 --- a/src/XenobladeChroniclesX/Mods/PhysicsJumpToTheMoon/rules.txt +++ b/src/XenobladeChroniclesX/Mods/PhysicsJumpToTheMoon/rules.txt @@ -3,11 +3,12 @@ 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 +version = 6 [Default] $horz = 1.0 $vert = 1.0 +$landtype = 4 [Preset] name = "Distance x1.0 (default)" @@ -53,6 +54,15 @@ name = "Distance x3.0" category = "Horizontal Velocity (distance reached)" $horz = 3.0 +[Preset] +name = "Distance x5.0" +category = "Horizontal Velocity (distance reached)" +$horz = 5.0 + +[Preset] +name = "CHEAT x100.0" +category = "Horizontal Velocity (distance reached)" +$horz = 100.0 [Preset] name = "Height x1.0 (default)" @@ -107,3 +117,43 @@ $vert = 1.40 name = "Height x1.50" category = "Vertical Velocity (height)" $vert = 1.50 + +[Preset] +name = "CHEAT x25.0" +category = "Vertical Velocity (height)" +$vert = 25.0 + +[Preset] +name = "Step forward (6)" +category = "Landing type" +$landtype = 6 + +[Preset] +name = "Normal land (5)" +category = "Landing type" +$landtype = 5 + +[Preset] +name = "Short land (4)" +category = "Landing type" +default = 1 + +[Preset] +name = "Role (3)" +category = "Landing type" +$landtype = 3 + +[Preset] +name = "Full stop (2)" +category = "Landing type" +$landtype = 2 + +[Preset] +name = "Half stop (1)" +category = "Landing type" +$landtype = 1 + +[Preset] +name = "Never Land (0) SOFT LOCKS" +category = "Landing type" +$landtype = 0 diff --git a/src/XenobladeChroniclesX/Mods/PhysicsRunForrestRun/patch_run.asm b/src/XenobladeChroniclesX/Mods/PhysicsRunForrestRun/patch_run.asm index a12b46c7..54030274 100644 --- a/src/XenobladeChroniclesX/Mods/PhysicsRunForrestRun/patch_run.asm +++ b/src/XenobladeChroniclesX/Mods/PhysicsRunForrestRun/patch_run.asm @@ -1,6 +1,5 @@ [XCX_MOVESPEED] -moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U - +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J .origin = codecave VarSpeed: @@ -13,13 +12,19 @@ fdivs f1, f1, f13 lwz r3, 0(r31) blr -[XCX_MOVESPEED_ALL] -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U - +[XCX_MOVESPEED_V101E_V102U] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07 ; 1.0.1E, 1.0.2U, 1.0.0E ; chr::CInnerLabelState::applyFieldMoveWeight((float)) 0x02643330 = bla _setSpeed ; SetVariableFloat(0xBD,float) -[XCX_MOVESPEED_1U] -moduleMatches = 0xAB97DE6B ; 1.0.1U +[XCX_MOVESPEED_V102J] +moduleMatches = 0x7672271D ; 1.0.2J +0x0264290C = bla _setSpeed +[XCX_MOVESPEED_V100U] +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U 0x026432C0 = bla _setSpeed + +[XCX_MOVESPEED_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x02641E30 = bla _setSpeed diff --git a/src/XenobladeChroniclesX/Mods/PhysicsRunForrestRun/rules.txt b/src/XenobladeChroniclesX/Mods/PhysicsRunForrestRun/rules.txt index 5db7db52..1bf62bf1 100644 --- a/src/XenobladeChroniclesX/Mods/PhysicsRunForrestRun/rules.txt +++ b/src/XenobladeChroniclesX/Mods/PhysicsRunForrestRun/rules.txt @@ -3,7 +3,7 @@ titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00 name = "Sprint faster" path = "Xenoblade Chronicles X/Mods/Physics/Run Forrest, run!" description = Increase the speed of sprint. -version = 5 +version = 6 [Default] $mod = 0.66 @@ -22,3 +22,7 @@ $mod = 0.5 [Preset] name = "Speed x3" $mod = 0.33 + +[Preset] +name = "CHEAT x20" +$mod = 0.05 diff --git a/src/XenobladeChroniclesX/Mods/WeatherForceWeather/patch_weather.asm b/src/XenobladeChroniclesX/Mods/WeatherForceWeather/patch_weather.asm index a6eca194..5f4e6ab6 100644 --- a/src/XenobladeChroniclesX/Mods/WeatherForceWeather/patch_weather.asm +++ b/src/XenobladeChroniclesX/Mods/WeatherForceWeather/patch_weather.asm @@ -1,22 +1,26 @@ [XCX_CHANGEWEATHER] -moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U - +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x7672271D, 0x218F6E07, 0xAB97DE6B, 0x676EB33E, 0x785CA8A9 ; 1.0.1E, 1.0.2U, 1.0.2J, 1.0.0E, 1.0.1U, 1.0.0U, 1.0.0J .origin = codecave - .int $wtr +[XCX_CHANGEWEATHER_V101E_V102U] +moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07 ; 1.0.1E, 1.0.2U, 1.0.0E ; 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 +[XCX_CHANGEWEATHER_V102J] +moduleMatches = 0x7672271D ; 1.0.2J +0x0229EB14 = li r28, $wtr +0x022B528C = nop +[XCX_CHANGEWEATHER_V100U] +moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U 0x0229F08C = li r28, $wtr 0x022B580C = nop + +[XCX_CHANGEWEATHER_V100J] +moduleMatches = 0x785CA8A9 ; 1.0.0J +0x0229E868 = li r28, $wtr +0x022B5118 = nop diff --git a/src/XenobladeChroniclesX/Mods/WeatherForceWeather/rules.txt b/src/XenobladeChroniclesX/Mods/WeatherForceWeather/rules.txt index a252e416..4f96ee29 100644 --- a/src/XenobladeChroniclesX/Mods/WeatherForceWeather/rules.txt +++ b/src/XenobladeChroniclesX/Mods/WeatherForceWeather/rules.txt @@ -3,7 +3,7 @@ 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 +version = 6 [Default] $wtr = 1 diff --git a/src/XenobladeChroniclesX/Mods/readme.md b/src/XenobladeChroniclesX/Mods/readme.md index 3236385e..9ba2c398 100644 --- a/src/XenobladeChroniclesX/Mods/readme.md +++ b/src/XenobladeChroniclesX/Mods/readme.md @@ -53,6 +53,14 @@ ### HUD mods - **Change time anywhere**: Allow to change time of the day from the eManual entry of the main menu. +- **Freecam**: Look around the world with the monolith soft developer freecam. + >Hold 'R' button to move camera up | + >Hold 'L' button to move camera down | + >Hold 'X' button to keep camera in place | + >Hold 'Y' button to speed up camera | + >Tip: Press and hold the R stick button to speed up even more +- **No Model Fade**: Makes it so that character and skell models don't fade out when the camera gets too close. +- **Remove Overdrive Blur**: Removes the blur that happens around the screen when you are in Overdrive. ### Loot mods - **Equipment - Alternate random augments**: change the way augments are selected during loot generation. @@ -94,4 +102,4 @@ - **Force weather**: Force selected weather. Just select a preset and unload/reload the pack. ### Requirements -Since Cemu 1.18, cemuhook is no longer required. Just make sure your game version is **1.0.1E** or **1.0.2U**. +Since Cemu 1.18, cemuhook is no longer required. All game versions supported. 1.0.1E, 1.0.2U, or 1.0.2J recommended.