Compare commits

...

7 Commits

Author SHA1 Message Date
WinnerNombre
39f9bd6654
[Skylanders Imaginators] Add sigpatch pack to use modified skylanders figures (#701)
This pack basically allows you to use modded figures or use unreleased content from the game since the game originally comes with a signature patch to prevent that.

This pack was made by @WinnerNombre!
2025-04-18 20:56:15 +02:00
WinnerNombre
61d458f9bd
[Skylanders: Swap Force] Fix paths being inconsistent (#699)
Just some minor cleanup, thanks @WinnerNombre!
2025-04-17 19:21:51 +02:00
Gloomy
108a1f0335
[Splatoon] Add "Disable Autorotate" Mod (#697)
This removes the function call that rotates the camera when the player moves left or right. This makes it much easier to control your aim with both motion and mouse (via Xapfish) since you don't have to fight against the camera when you move.

Thanks for @Gloomy31 adding this pack!
2025-04-17 12:23:12 +02:00
WinnerNombre
7d54f240ec
[Skylanders: Swap Force] Add mod to allow using other skylanders portals (#698)
This new pack allows you to use portals from other game series with Skylanders: Swap Force.

Thanks for @WinnerNombre for adding this pack!
2025-04-17 12:21:56 +02:00
Intra
d0205dcb80
[XCX] Create new XCX
This update introduces enhancements to the graphical settings of Xenoblade Chronicles X by modifying the game's boot configuration file. The following adjustable parameters have been identified to produce noticeable visual differences:

* sRGB Mode Toggle: Enables or disables sRGB color mode, affecting color accuracy and vibrancy.​

* Anti-Aliasing Toggle: Turns anti-aliasing on or off, impacting the smoothness of object edges and overall image clarity.​

* Bloom Effect Toggle: Allows the activation or deactivation of the bloom effect, influencing the intensity of light glow and scene brightness.​

* Cloud Height Minimum: Adjusts the minimum altitude at which clouds appear, altering the cloud coverage and atmospheric depth.​

* Cloud Height Maximum: Sets the maximum altitude for cloud rendering, affecting the vertical span of cloud formations in the sky.
2025-04-08 13:16:39 +02:00
Intra
09207ededf
[XCX] Add various quality-of-life mods and cheats(#675)
Thanks to @intra0 for these awesome new mods!

**Quality-of-Life Improvements:**
- Start Battles with Maximum Tension Points (TP): Players now begin combat with full TP, eliminating the need to build up TP at the start of each encounter.​

- Skell TP Retention: Skells will no longer lose their accumulated TP when the player exits them, addressing a mechanic that many found frustrating.​

- Camera Settings Memory Fix: Resolves an issue where camera settings would reset upon entering areas with ceilings, ensuring a consistent viewing experience.​

**Optional Features:**

- Disable Automatic HP Regeneration: Introduces an option to turn off the automatic healing of HP, allowing for a more challenging gameplay experience.​

- Synchronized HP and TP Mode: Offers a new mode where HP and TP values are linked, introducing unique strategic considerations.​

**Additional Modifications:**

- Blade Division Change: Restores the ability to change Blade divisions, a feature previously inaccessible in offline mode.​

- Skell Flight Module Toggle: Allows players to manually enable or disable the Skell flight module, providing greater control over Skell capabilities.
2025-04-08 12:59:20 +02:00
EitchKeii
a8ab6fd326
[TPHD] Add cheat to disable mirroring in Hero Mode (#694)
When enabled, this disables the mirroring when playing the hero mode in Twilight Princess HD.

Thanks to @EitchKeii for making this pack!
2025-04-04 00:32:56 +02:00
46 changed files with 5921 additions and 43 deletions

View File

@ -0,0 +1,6 @@
[zelda-tp-disable-mirroring]
moduleMatches = 0x1A03E108, 0xA3175EEA
0x02941064 = stb r0, 0x667d(r12)
0x0294819c = li r0, 32
0x029481ac = stb r0, 0x667d(r11)

View File

@ -0,0 +1,6 @@
[Definition]
titleIds = 000500001019C800,000500001019E600,000500001019E500
name = Disable Mirroring
path = "The Legend of Zelda: Twilight Princess HD/Mods/Disable Mirroring (Hero Mode)"
description = Hero Mode will no longer be mirrored.|Made by EitchKeii.
version = 4

View File

@ -0,0 +1,17 @@
[SI_sigpatch_V16]
moduleMatches = 0x39E9EBC6 ; 1.1.0
0x02512D44 = li r3, 0
0x02512D48 = blr
[SI_sigpatch_V1]
moduleMatches = 0xC683642E ; 1.0.0
0x025121E8 = li r3, 0
0x025121EC = blr
[SI_sigpatch_demo]
moduleMatches = 0xAF023381 ; Demo
0x025101C4 = li r3, 0
0x025101C8 = blr

View File

@ -0,0 +1,6 @@
[Definition]
titleIds = 00050000101F4D00,00050000101FB100,0005000010205E00
name = Signature Patch
path = "Skylanders Imaginators/Mods/Signature Patch"
description = This patch removes the check for a factory's signature on dumps of characters released for Skylanders Imaginators, allowing for unique UIDs and unreleased characters to be generated.||Made by Winner Nombre with help from MusicDisc, MoltenLavaCore, and NefariousTechSupport.
version = 7

View File

@ -0,0 +1,9 @@
[SSF_RemovePortalCheck_V16]
moduleMatches = 0xa0b35374 ; v16
0x024B0A28 = li r3, 0x203
[SSF_RemovePortalCheck_V0]
moduleMatches = 0xb1f102ec ; v0
0x024B09A0 = li r3, 0x203

View File

@ -0,0 +1,6 @@
[Definition]
titleIds = 0005000010139200,0005000010140400
name = Allow Portals From Other Skylanders Games
path = "Skylanders Swap Force/Mods/Allow Portals From Other Skylanders Games"
description = Allows any (non-Xbox!) Portal of Power to be used.||Made by Winner Nombre.
version = 7

View File

@ -0,0 +1,4 @@
[begone_autorotate]
moduleMatches = 0xF7A78809, 0x659c782e
0x02664f20 = nop

View File

@ -0,0 +1,6 @@
[Definition]
titleIds = 0005000010176900,0005000010176A00,0005000010162B00
name = Disable Autorotate
path = "Splatoon/Mods/Disable Autorotate"
description = Prevents the camera from automatically rotating when the player moves left or right.
version = 7

View File

@ -0,0 +1,16 @@
[XCX_SkellFlight_v101E_v102U]
moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07 ; 1.0.1E, 1.0.2U, 1.0.0E
; GetSkyUnit__Q2_3cfs19CfCompoPropertyDollCFv
0x025CE8DC = li r3, $mod
[XCX_SkellFlight_v102J]
moduleMatches = 0x7672271D ; 1.0.2J
0x025CDEB8 = li r3, $mod
[XCX_SkellFlight_v100U]
moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U
0x025CE86C = li r3, $mod
[XCX_SkellFlight_v100J]
moduleMatches = 0x785CA8A9 ; 1.0.0J
0x025CD3DC = li r3, $mod

View File

@ -0,0 +1,17 @@
[Definition]
titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = "Enable/Disable Skell Flight"
path = "Xenoblade Chronicles X/Mods/Battle/Skell Flight Unlocked"
description = Fly with your Skell before A Girl's Wings, or Disable the flight module after A Girl's Wings.
#Credits: Intra
version = 6
[Default]
$mod = 1
[Preset]
name = Force Enable
[Preset]
name = Force Disable
$mod = 0

View File

@ -0,0 +1,15 @@
[XCX_InfiniteFuel_v101E_v102U]
moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07 ; 1.0.1E, 1.0.2U, 1.0.0E
0x025CE7C8 = lfs f1, 0x3184(r3)
[XCX_InfiniteFuel_v102J]
moduleMatches = 0x7672271D ; 1.0.2J
0x025CDDA4 = lfs f1, 0x3184(r3)
[XCX_InfiniteFuel_v100U]
moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U
0x025CE758 = lfs f1, 0x3184(r3)
[XCX_InfiniteFuel_v100J]
moduleMatches = 0x785CA8A9 ; 1.0.0J
0x025CD2C8 = lfs f1, 0x3184(r3)

View File

@ -0,0 +1,7 @@
[Definition]
titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = "Infinite Fuel"
path = "Xenoblade Chronicles X/Mods/Battle/Infinite Fuel"
description = Makes your skell fuel always be at its max.
#Credits: Intra
version = 6

View File

@ -0,0 +1,110 @@
[XCX_BootWithTP_Data]
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
;adress offsets for all the various stats a character has
currentHP = 0x84
currentTP = 0x94
maxHP = 0x88
maxTP = 0x98
meleeAttack = 0x9C
rangedAttack = 0xA0
potential = 0xA4
defence = 0xA8
meleeAccuracy = 0xAC
rangedAccuracy = 0xB0
evasion = 0xB4
physicalRes = 0xBC
beamRes = 0xC0
etherRes = 0xC4
thermalRes = 0xC8
electricRes = 0xCC
gravityRes = 0xD0
;array of flags that check if applied max tp on boot to a specific character/skell
BoolBootWithTP:
.byte $QoL-1, $QoL-1, $QoL-1, $QoL-1, $QoLSkell-1, $QoLSkell-1, $QoLSkell-1, $QoLSkell-1
;keeps track if entered a function from ground or skell so that code that only applies to one can be conditionally executed
BoolIsInnerOrDoll:
.uint 0
;prevents a bug of delayed character getting max tp after boot
;if a character position is not in your party at boot and then you add a character to that position
;its flag was never set and so that character then gets the mod applied to them way later than expected.
;with this fix it is still possible to trigure it by starting with exactly 1 character in your party and then recruiting a character within 1 skip travel
;the bug can also happen by seeing a loading screen over 2 billion times to loop to negative (end even then won't apply to positions that its already applies before)
;that is such specific circumstances with such a minor bug that I don't care to fix it further
;the proper way to fix this would be to find a section of code that runs after ground boot and skell boot, does not need skell boot to happen to run, and does not get called in any other section of the game.
;then uses that spot set the flags above and nothing else. currently not worth it for such a minor bug
NumOfTimesLoadingScreenRan:
.uint 0
;array of cheat settings for ground
InnerCheatSettingsArray:
.short $TPCheat, $HPCheat, $noHPcheatnodieifdamagelt, $TPupdatecheatdieat0TP, $TPupdatecheatnegative, $HPupdatecheatnegative
;array of cheat settings for skell
DollCheatSettingsArray:
.short $TPCheatSkell, $HPCheatSkell, $noHPcheatnodieifdamageltSkell, $TPupdatecheatdieat0TPSkell, $TPupdatecheatnegativeSkell, $HPupdatecheatnegativeSkell
;array of syncronous settings for ground
InnerSyncSettingsArray:
.byte $HPboundtoTP, $HPboundtoTPNegative, $TPboundtoHP, $TPboundtoHPNegative
;array of syncronous settings for skell
DollSyncSettingsArray:
.byte $HPboundtoTPSkell, $HPboundtoTPNegativeSkell, $TPboundtoHPSkell, $TPboundtoHPNegativeSkell
;array of after battle heal settings for ground
InnerSlipHealSettingsArray:
.byte $afterbattleheal, $afterbattlerestoretp, $skiptravelheal
;array of after battle heal settings for ground
DollSlipHealSettingsArray:
.byte $afterbattleheal, $afterbattlerestoretp, $skiptravelhealSkell
;storage space for current hp for each character
StoreCurrentHP:
.uint 0, 0, 0, 0
;storage space for current hp for each skell
StoreCurrentHPDoll:
.uint 0, 0, 0, 0
;array of pointers to the storage space for characters stats
;below that, the stprage space for each characters stats
StoreCharacterStatsPointers:
.uint StoreCharacter0Stats, StoreCharacter1Stats, StoreCharacter2Stats, StoreCharacter3Stats
StoreCharacter0Stats:
.uint 0, 0, 0, 0, 0, 0, 0, 0
StoreCharacter1Stats:
.uint 0, 0, 0, 0, 0, 0, 0, 0
StoreCharacter2Stats:
.uint 0, 0, 0, 0, 0, 0, 0, 0
StoreCharacter3Stats:
.uint 0, 0, 0, 0, 0, 0, 0, 0
;array of pointers to the storage space for skells stats
;below that, the stprage space for each skells stats
StoreCharacterStatsDollPointers:
.uint StoreCharacter0StatsDoll, StoreCharacter1StatsDoll, StoreCharacter2StatsDoll, StoreCharacter3StatsDoll
StoreCharacter0StatsDoll:
.uint 0, 0, 0, 0, 0, 0, 0, 0
StoreCharacter1StatsDoll:
.uint 0, 0, 0, 0, 0, 0, 0, 0
StoreCharacter2StatsDoll:
.uint 0, 0, 0, 0, 0, 0, 0, 0
StoreCharacter3StatsDoll:
.uint 0, 0, 0, 0, 0, 0, 0, 0
;array of offsets for each of the stats. used to lower code duplication
PointerStatsOffsets:
.short maxHP, meleeAttack, rangedAttack, potential, defence, meleeAccuracy, rangedAccuracy, evasion
;multiple function pointers arrays used to make the checksetting function usable for all setting types from all sections:
FunctionPointerArrayCheatBoot:
.uint NoTensionCheat, InfiniteTensionCheat, TensionEqualsHealthCheat, HPTPMod_blr, NoHealthCheat, InfiniteHealthCheat, HealthEqualsTensionCheat, HPTPMod_blr
FunctionPointerArrayCheatTP:
.uint NoTensionCheat, InfiniteTensionCheat, TensionEqualsHealthCheat, TensionUpdatesFromHealthCheatTP, NoHealthCheat, InfiniteHealthCheat, HealthEqualsTensionCheatTP, HealthUpdatesFromTensionCheatTP
FunctionPointerArrayCheatHP:
.uint NoTensionCheat, InfiniteTensionCheat, TensionEqualsHealthCheat, TensionUpdatesFromHealthCheatHP, NoHealthCheatHP, InfiniteHealthCheat, HealthEqualsTensionCheat, HealthUpdatesFromTensionCheatHP
FunctionPointerArraySync:
.uint addTPHPSynchronous, addTPHPAsynchronous, addTPHPDecreaseOnly, addTPHPIncreaseOnly
;lookup table for all the settings above if applying to ground characters
LookupTableforInner:
.uint InnerCheatSettingsArray, InnerSyncSettingsArray, InnerSlipHealSettingsArray, BoolBootWithTP, StoreCurrentHP, StoreCharacterStatsPointers
;lookup table for all the settings above if applying to skells
LookupTableforDoll:
.uint DollCheatSettingsArray, DollSyncSettingsArray, DollSlipHealSettingsArray, BoolBootWithTP+4, StoreCurrentHPDoll, StoreCharacterStatsDollPointers
;only piece of data used in the tphp_features file
;is used to tell the update hp function of the mod if the current heal is an out of battle heal
CurrentSlipHealPosition:
.uint 0

View File

@ -0,0 +1,71 @@
[XCX_BootWithTP_Features]
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
;currently missing features:
;a way to ignore max hp / max tp
;a way to fix your character health being shown on screen after battle if continously below its max
;a way to detect if the slip heal function is currently appling to a human or skell
;This function is the exact same as 0x021D50F4 = nop
;the extra code is needed to make the cheat only apply when the apropriate option is selected in the rules.txt
;prevents skells from losing 50 GP/sec while out of them
StopSkellLosingGP:
li r4, $disableSkellLosingGP
cmpwi r4, 0
beq _StopSkellLosingGPExit
mflr r4
addi r4, r4, 8
mtlr r4
blr
_StopSkellLosingGPExit:
lwz r3, 0x24(r30)
blr
;no healing is the exact same as 0x021764F4 = blr
;prevents RegistDamage::HealHide::DamageSystem::HandleKey from ever being called
;the extra code is needed to make the dont update TP option work
;stops out of battle heals, and can also stop TP udating from out of battle heals in the sync settings
DontUpdateHP:
li r11, $afterbattleheal
cmpwi r11, 0
bne _DontUpdateHPExit
mtlr r0
blr
_DontUpdateHPExit:
li r11, $afterbattlerestoretp
cmpwi r11, 0
bne _SkipDontUpdateTPslip
lis r9, CurrentSlipHealPosition@ha
lwz r11, CurrentSlipHealPosition@l(r9)
addi r11, r11, 1
cmpwi r11, 8
blt+ _CheckIFCountTooHigh
li r11, 0
_CheckIFCountTooHigh:
stw r11, CurrentSlipHealPosition@l(r9)
_SkipDontUpdateTPslip:
or r11, r1, r1
blr
[XCX_BootWithTP_Features_v101E_v102U]
moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07 ; 1.0.1E, 1.0.2U, 1.0.0E
;prevents skells from losing 50 GP/sec while out of them
0x021D50EC = bla StopSkellLosingGP
;stops out of battle heals
0x021764F8 = bla DontUpdateHP
[XCX_BootWithTP_Features_v102J]
moduleMatches = 0x7672271D ; 1.0.2J
0x021D4BB8 = bla StopSkellLosingGP
0x02175FC4 = bla DontUpdateHP
[XCX_BootWithTP_Features_v100U]
moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U
0x021D50EC = bla StopSkellLosingGP
0x021764F8 = bla DontUpdateHP
[XCX_BootWithTP_Features_v100J]
moduleMatches = 0x785CA8A9 ; 1.0.0J
0x021D4934 = bla StopSkellLosingGP
0x02175D40 = bla DontUpdateHP

View File

@ -0,0 +1,642 @@
[XCX_BootWithTP_Sync]
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
;currently missing features:
;being able to negatively correlate hp by its self or tp by its self
;finishing the currently unfinished tp only updates from hp (or vice versa)
;make hp gained from reving party members apply to sync settings
;inspired from a glitch that happened with "Weird: tp equal hp" in a in-dev version of the mod:
;setting your tp to only equal the last ammount of hp gained, with it reseting to 0 when taking damage (also a seperate option to make using tp also set it to 0)
;setting your hp to the last ammount of tp gained, but still allowing you to take damage from enemies
;list of know bugs:
;the current hp is bound the position in the character list
;so with the no heal on skip travel if you swap party members, the new party member will have the current hp of the party member who used to be in that slot (minor bug)
;if a characters base stats were to update without calling the boot section of the mod it would break the don't heal when skip traveling setting
;I do not think this bug is possible to happen but listing it hear incase it does (currently not a bug but has potential to be a major bug)
;when a party member is revived, their HP is updated from a seperate section of code
;so their TP won't match in the sync settings until the next update to hp or tp (minor bug)
;the one described in detail in tphp_data, that the NumOfTimesLoadingScreenRan variable mostly fixes (minor bug)
;weird: tp equals hp, will have a visual glitch when hitting max tp. this happens because the tp update section is called before the game updates tp (major bug for the setting) (but setting is really low priority)
;various other bugs related to weird: tp/hp equals hp/tp (major bug for the setting) (but setting is really low priority)
;storage space to conditionally back up registers r3-r31
RegistersBackUpTPHP:
.uint 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31
;storeage space to back up link register
LinkRegisterBackUpTPHP:
.uint 0
CountRegisterBackupTPHP:
.uint 0
;function that allows us to conditionally branch link return
HPTPMod_blr:
blr
;function that has different entance points if your on ground or in a skell
;loads data from the tphp_data file that the mod needs to work
GetModDataInnerHPTP:
lis r31, RegistersBackUpTPHP@ha
stmw r14, RegistersBackUpTPHP@l(r31)
li r23, 0
lis r31, BoolIsInnerOrDoll@ha
stw r23, BoolIsInnerOrDoll@l(r31)
lis r31, LookupTableforInner@ha
addi r31, r31, LookupTableforInner@l-4
b GetModDataHPTP
GetModDataDollHPTP:
lis r31, RegistersBackUpTPHP@ha
stmw r14, RegistersBackUpTPHP@l(r31)
li r23, 1
lis r31, BoolIsInnerOrDoll@ha
stw r23, BoolIsInnerOrDoll@l(r31)
lis r31, LookupTableforDoll@hi
addi r31, r31, LookupTableforDoll@l-4
GetModDataHPTP:
lwzu r23, 4(r31) ; CheatSettingsArray
lwzu r24, 4(r31) ; SyncSettingsArray
lwzu r25, 4(r31) ; SlipHealSettingsArray
lwzu r27, 4(r31) ; BoolBootWithTP
lwzu r28, 4(r31) ; StoreCurrentHP
lwzu r29, 4(r31) ; StoreCharacterStatsPointers
blr
;function with multiple entrance points depeding of if applying a TP cheat, HP cheat, binding TP, or binding HP
;does some setup work at the entrance then if a cheat/setting is enabled, branches to the appropriate function from the function lookup table in tphp_data
CheckSyncSettingHP:
li r3, 0
mflr r0
bl HPStopSlipHealTP
mtlr r0
lbzu r31, 2(r24) ; $TPboundtoHP
li r19, currentHP
li r18, currentTP
b _LoadSyncFunctionPointers
CheckSyncSettingTP:
lwz r3, currentHP(r10)
cmpwi r3, 0
ble HPTPMod_blr
li r3, 0
lbz r31, 0(r24) ; $HPboundtoTP
addi r23, r23, 2
li r19, currentTP
li r18, currentHP
_LoadSyncFunctionPointers:
lis r30, FunctionPointerArraySync@hi
ori r30, r30, FunctionPointerArraySync@l
b CheckSettingsTPHP
CheckHealthCheat:
li r3, 4*4
lhz r31, 1*2(r23) ; $CheatHP
b CheckSettingsTPHP
CheckTensionCheat:
li r3, 0
lhz r31, 0*2(r23) ; $CheatTP
CheckSettingsTPHP:
cmpwi r31, 1
beq BranchToFoundCheat
addi r3, r3, 4
cmpwi r31, 2
beq BranchToFoundCheat
addi r3, r3, 4
cmpwi r31, 3
beq BranchToFoundCheat
addi r3, r3, 4
cmpwi r31, 4
beq BranchToFoundCheat
blr
BranchToFoundCheat:
lwzx r3, r30, r3
mtctr r3
bctr
;list of simple functions that get called from HP cheat and TP cheat settings.
NoTensionCheat:
li r31, 0
stw r31, currentTP(r10)
blr
TensionEqualsHealthCheat:
lwz r31, currentHP(r10)
stw r31, currentTP(r10)
blr
InfiniteTensionCheat:
lwz r31, maxTP(r10)
stw r31, currentTP(r10)
blr
NoHealthCheat:
li r31, 2
stw r31, currentHP(r10)
blr
HealthEqualsTensionCheat:
lwz r31, currentTP(r10)
stw r31, currentHP(r10)
blr
InfiniteHealthCheat:
lwz r31, maxHP(r10)
stw r31, currentHP(r10)
blr
;some of the functions above need to be a little bit different if calling them when HP updates or TP updates
HealthEqualsTensionCheatTP:
lwz r31, currentTP(r10)
add r31, r31, r21
stw r31, currentHP(r10)
blr
NoHealthCheatHP:
li r31, 2
stw r31, currentHP(r10)
lhz r12, 2*2(r23)
cmpw r21, r12
bge HPTPMod_blr
li r31, 0
stw r31, currentHP(r10)
blr
;unfinished and currently have their settings commented out in rules.txt
TensionUpdatesFromHealthCheatTP:
lhz r3, 1*2(r23) ; $HPCheat
cmpwi r31, 3
blr; _addTPtoHPEXit
HealthUpdatesFromTensionCheatTP:
lwz r31, 0x84(r10)
add r31, r31, r21
stw r31, 0x84(r10)
blr; _addTPtoHPEXit
TensionUpdatesFromHealthCheatHP:
blr; _addHPtoTPAsynchronous
HealthUpdatesFromTensionCheatHP:
lwz r12, 0x84(r10)
add r12, r12, r21
stw r12, 0x84(r10)
blr
;the function that synchronously binds HP & TP. is shared with HP updating and TP updating, but Boot has its own sperate sync function
addTPHPSynchronous:
addi r18, r18, 4
lwz r31, maxTP(r10)
lwz r12, maxHP(r10)
cmpw r12, r31
bgt _MaxTPSmallerintp
b _MaxHPSmallerintp
_MaxTPSmallerintp:
lwz r12, maxTP(r10)
_MaxHPSmallerintp:
lwzx r31, r10, r19
add r31, r31, r21
mflr r0
bl addTPHPComparetoMax
mtlr r0
lwzx r12, r10, r18
stwx r12, r10, r19
blr
;function that asynchronously binds HP & TP. has multiple entrance points if inclease only or decrease only are applied.
;shade with HP updating and TP updating. boot never calls async
addTPHPIncreaseOnly:
cmpwi r21, 0
blt HPTPMod_blr
b addTPHPAsynchronous
addTPHPDecreaseOnly:
cmpwi r21, 0
bgt HPTPMod_blr
addTPHPAsynchronous:
lhz r31, 0(r23) ; $CheatHP
cmpwi r31, 0
bne HPTPMod_blr
lbz r31, 1(r24) ; $HPboundtoTPNegative
cmpwi r31, 0
bne _addTPHPAsynchronousNegative
lwzx r31, r10, r18
add r31, r31, r21
addi r18, r18, 4
lwzx r12, r10, r18
b addTPHPComparetoMax
_addTPHPAsynchronousNegative:
lwzx r31, r10, r18
sub r31, r31, r21
addi r18, r18, 4
lwzx r12, r10, r18
b addTPHPComparetoMax
;function that gets called after async & sync settings. prevents us from having more HP/TP than out maximum
;CheckifTPNegative only gets called when HP updates. prevents negative TP as negative TP is glitchy.
;handling negative HP is not only unesisary but undesired as that is how the game checks for death
addTPHPComparetoMax:
addi r18, r18, -4
cmpw r12, r31
blt _hitMaximumHPTP
stwx r31, r10, r18
blr
_hitMaximumHPTP:
stwx r12, r10, r18
blr
CheckifTPNegative:
lbz r30, 0(r24) ; $TPboundtoHP
cmpwi r30, 0
beq HPTPMod_blr
cmpwi r31, 0
blt _hitMinimumTP
;stw r31, currentTP(r10)
blr
_hitMinimumTP:
li r12, 0
stw r12, currentTP(r10)
blr
;function that only gets called during the "boot" section of the mod.
;actually gets called every loading screen, every time a party member is added or removed, everytime your gear updates, etc.
;this backs up all of the characters permanent stats so that the hp update and tp update section of the mods can identify which character is being modified and update the apropriate hp backup int tphp_data
;boot is able to identify the characters because r26 broadcast which character is currently being modified
backUpCharacterStats:
li r31, 8
mtctr r31
mulli r31, r26, 4
lwzx r29, r29, r31
addi r29, r29, -4
lis r3, PointerStatsOffsets@ha
addi r3, r3, PointerStatsOffsets@l-2
_forloopbackUpCharacterStats:
lhzu r30, 2(r3)
lwzx r31, r10, r30
stwu r31, 4(r29)
bdnz _forloopbackUpCharacterStats
blr
;function only gets called during hp update and tp update
;it loops and checks for which character is currently being modified and updates their dedicated hp storage
;the hp storage is used for the "dont heal when skip traveling option"
;identifying a character by all their stats is pretty innefficient but couldn't find a better solution and this works
checkWhichCharacter:
addic. r20, r20, -1
blt DidNotFindCharacter
li r31, 8
mtctr r31
lis r3, PointerStatsOffsets@ha
addi r3, r3, PointerStatsOffsets@l-2
addi r26, r26, 4
lwzx r31, r29, r26
addi r31, r31, -4
_forloopCompareCharacterStats:
lhzu r30, 2(r3)
lwzx r22, r10, r30
lwzu r19, 4(r31)
cmpw r19, r22
bne checkWhichCharacter
bdnz _forloopCompareCharacterStats
lwz r22, 0x84(r10)
blr
;prep for the checkWhichCharacter function and exception exit if didn't find character
DidNotFindCharacter:
mtlr r0
blr
StoreCharacterHealth:
mflr r0
li r20, 4
li r26, -4
bl checkWhichCharacter
stwx r22, r28, r26
mtlr r0
blr
;####################################################################################################################
;####################################################################################################################
;####################################################################################################################
;only gets called in boot section.
;checks if to max tp every loading screen, if not checks if to max tp on boot
;there is a sequence of 1 byte flags for each character and their skell in hptp_data
;checks if the flag for the current character is set and if so does not apply the mod
;if the flag is not set this means that the function was never run before, which the first time it runs is when booting the game
;so max our tp and then set the flag so the mod doesn't max tp again
CheckifToMaxTP_Boot:
add r31, r27, r26
cmpwi r3, 0
bne _applymaxTP
cmpwi r30, 4
bgt HPTPMod_blr
lbz r3, 0(r31)
cmpwi r3, 0
bne HPTPMod_blr
_applymaxTP:
lwz r3, maxTP(r10)
stw r3, currentTP(r10)
li r3, 1
stb r3, 0(r31)
blr
;checks if the "no skip travel after heal setting is set.
;if so replaces our HP with the stored HP from the StoreCharacterHealth functions
;mod can easily identify which character to apply to by the value in r26
CheckNoHealAfterSkipTravel:
lbz r3, 2(r25) ; $skiptravelheal
cmpwi r3, 0
bne HPTPMod_blr
mulli r31, r26, 4
add r28, r28, r31
lwz r31, 0(r28)
cmpwi r31, 0
ble HPTPMod_blr
stw r31, currentHP(r10)
lbz r3, 0(r24) ; $synchronous
cmpwi r3, 1
beq _NoHealAfterSkipTravelWithSync
blr
_NoHealAfterSkipTravelWithSync:
mflr r30
addi r30, r30, 4
mtlr r30
stw r31, currentTP(r10)
blr
;specialized sync function for the boot section of the mod
CheckBootSynchronous:
lbz r3, 0(r24) ; $synchronous
cmpwi r3, 1
bne HPTPMod_blr
lwz r3, maxTP(r10)
lwz r31, maxHP(r10)
cmpw r31, r3
bgt _MaxTPSmallerbootsync
b _MaxHPSmallerbootsync
_MaxTPSmallerbootsync:
lwz r31, maxTP(r10)
_MaxHPSmallerbootsync:
stw r31, currentTP(r10)
stw r31, currentHP(r10)
blr
;free registers = r3 r23-r31 r0
;r26 = current character (0-3)
;r10 = pointer to character battle data
;main function of the boot section. multiple entrance depeding for ground characters and skells
;does entrance set up, calls the necissary functions, and the fixes everything at exit
BootWithTPInner:
mflr r0
;lis r31, LinkRegisterBackUpTPHP@ha
;stw r0, LinkRegisterBackUpTPHP@l(r31)
bl GetModDataInnerHPTP
lis r31, NumOfTimesLoadingScreenRan@ha
lwz r30, NumOfTimesLoadingScreenRan@l(r31)
addi r30, r30, 1
stw r30, NumOfTimesLoadingScreenRan@l(r31)
li r3, $everyloadingscreen
b BootWithTP
BootWithTPDoll:
mflr r0
;lis r31, LinkRegisterBackUpTPHP@ha
;stw r0, LinkRegisterBackUpTPHP@l(r31)
bl GetModDataDollHPTP
lis r31, NumOfTimesLoadingScreenRan@ha
lwz r30, NumOfTimesLoadingScreenRan@l(r31)
li r3, $everyloadingscreenSkell
BootWithTP:
bl CheckifToMaxTP_Boot
mfctr r31
lis r30, CountRegisterBackupTPHP@ha
stw r31, CountRegisterBackupTPHP@l(r30)
lis r30, FunctionPointerArrayCheatBoot@hi
ori r30, r30, FunctionPointerArrayCheatBoot@l
bl CheckTensionCheat
bl CheckHealthCheat
bl CheckNoHealAfterSkipTravel
bl CheckBootSynchronous
bl backUpCharacterStats
BootWithTPExit:
;lis r31, RegistersBackUpTPHP@ha
;lmw r14, RegistersBackUpTPHP@l(r31)
;lis r31, LinkRegisterBackUpTPHP@ha
;lwz r0, LinkRegisterBackUpTPHP@l(r31)
mtlr r0
lis r31, CountRegisterBackupTPHP@ha
lwz r30, CountRegisterBackupTPHP@l(r31)
mtctr r30
li r3, 1
blr
;####################################################################################################################
;####################################################################################################################
;####################################################################################################################
;this function only needs to exist because tp update is called before tp is applied
;and hp update is called after hp is applied
CheckifSyncNegTP:
lbz r31, 0(r24)
cmpwi r31, 1
bne HPTPMod_blr
lbz r31, 1(r24)
cmpwi r31, 0
beq HPTPMod_blr
neg r21, r21
blr
;this function only needs to exist because tp update is called before tp is applied
;prevents the game from updating TP because we just updated it ourselves
FixGameChangingTPWeChanged:
li r21, 0
blr
CheckifModifiedTP:
lhz r31, -2(r23) ; $CheatTP
cmpwi r31, 0
bne FixGameChangingTPWeChanged
lbz r31, 0(r24) ; $sync
cmpwi r31, 1
beq FixGameChangingTPWeChanged
blr
;is called before the game adds your TP
;free registers = r5, r31, r12, r0
;character battle data = the pointer that is pointed to by (r4 + 0x1d0)+0x1a0
;we then move that pointer into r10 so we can share code with boot & hp
;r27 holds the amount of TP that will be added, mod moves it into r21 to share code with hp
;main function of the tp update section. multiple entrance depeding for ground characters and skells
;does entrance set up, calls the necissary functions, and the fixes everything at exit
addTPtoHPInner:
lwz r5, 0(r4)
mflr r0
lis r31, LinkRegisterBackUpTPHP@ha
stw r0, LinkRegisterBackUpTPHP@l(r31)
or r12, r27, r27
bl GetModDataInnerHPTP
b addTPtoHP
addTPtoHPDoll:
lwz r5, 0(r6)
mflr r0
lis r31, LinkRegisterBackUpTPHP@ha
stw r0, LinkRegisterBackUpTPHP@l(r31)
or r12, r27, r27
bl GetModDataDollHPTP
addTPtoHP:
or r21, r12, r12
lis r30, FunctionPointerArrayCheatTP@hi
ori r30, r30, FunctionPointerArrayCheatTP@l
lwz r5, 0x1d0(r5)
addi r10, r5, 0x1a0
bl CheckTensionCheat
bl CheckHealthCheat
bl CheckifSyncNegTP
bl CheckSyncSettingTP
bl CheckifModifiedTP
bl StoreCharacterHealth
_addTPtoHPExit:
lis r31, LinkRegisterBackUpTPHP@ha
lwz r0, LinkRegisterBackUpTPHP@l(r31)
mtlr r0
or r0, r21, r21
lis r31, RegistersBackUpTPHP@ha
lmw r14, RegistersBackUpTPHP@l(r31)
or r27, r0, r0
lis r31, BoolIsInnerOrDoll@ha
lwz r31, BoolIsInnerOrDoll@l(r31)
cmpwi r31, 0
bne _addTPtoHPDollExit
_addTPtoHPInnerExit:
lwz r5, 0(r4)
blr
_addTPtoHPDollExit:
lwz r5, 0(r6)
blr
;####################################################################################################################
;####################################################################################################################
;####################################################################################################################
;this function checks the CurrentSlipHealPosition variable found in tphp_data
;it uses this variable to detect if the heal is currently an out of battle heal
;if so & if the users has set the mod to not update tp ot of battle
;then this prevents tp from updating from out of battle heals and only out of battle heals
HPStopSlipHealTP:
lbz r31, 0(r24) ; $TPboundtoHP
cmpwi r31, 1
beq HPTPMod_blr
lis r31, CurrentSlipHealPosition@ha
lwz r31, CurrentSlipHealPosition@l(r31)
cmpwi r31, 0
ble+ HPTPMod_blr
addi r12, r31, -1
lis r31, CurrentSlipHealPosition@ha
stw r12, CurrentSlipHealPosition@l(r31)
cmpwi r12, 0
mtlr r0
bgt+ HPTPMod_blr
li r12, 0
stw r12, CurrentSlipHealPosition@l(r31)
blr
;this function only needs to exist because hp update is called after hp is applied
;and tp update is called before tp is applied
CheckifSyncHP:
lbz r31, 2(r24)
cmpwi r31, 1
bne HPTPMod_blr
neg r21, r21
lbz r31, 3(r24)
cmpwi r31, 0
bne HPTPMod_blr
li r21, 0
blr
;free registers = r12, r31, r0
;r21 = amount of damage that was taken from HP (we neg r21 to share code with tp)
;r10 = pointer to character battle data
;main function of the hpupdate section. multiple entrance depeding for ground characters and skells
;does entrance set up, calls the necissary functions, and the fixes everything at exit
addHPtoTPInner:
mflr r0
lis r31, LinkRegisterBackUpTPHP@ha
stw r0, LinkRegisterBackUpTPHP@l(r31)
bl GetModDataInnerHPTP
b addHPtoTP
addHPtoTPDoll:
mflr r0
lis r31, LinkRegisterBackUpTPHP@ha
stw r0, LinkRegisterBackUpTPHP@l(r31)
bl GetModDataDollHPTP
addHPtoTP:
neg r21, r21
lis r30, FunctionPointerArrayCheatHP@hi
ori r30, r30, FunctionPointerArrayCheatHP@l
bl CheckHealthCheat
bl CheckTensionCheat
bl CheckifSyncHP
bl CheckSyncSettingHP
bl CheckifTPNegative
bl StoreCharacterHealth
addHPtoTPExit:
lis r31, LinkRegisterBackUpTPHP@ha
lwz r0, LinkRegisterBackUpTPHP@l(r31)
lis r31, RegistersBackUpTPHP@ha
lmw r14, RegistersBackUpTPHP@l(r31)
mtlr r0
lwz r12, 0x10(r30)
blr
;btw thank you for looking at my mod!
;as a little treat I discoved a fun game breaking cheat
;its not worth making a gfx for because all it does is remove the battle system from the game
;so like actually just breaks the game and makes it not work
;but still kinda funny for a few minutes
;you cannot target enemies, enemies cannot target you, and enemies cannot move, only play their idle animation
;0x022B7484 = nop ; 1.0.1E, 1.0.2U, 1.0.0E
;0x022B6E94 = nop ; 1.0.2J
;0x022B7414 = nop ; 1.0.1U, 1.0.0U
;0x022B6D20 = nop ; 1.0.0J
[XCX_BootWithTP_Sync_v101E_v102U]
moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07 ; 1.0.1E, 1.0.2U, 1.0.0E
;calls the boot section of the mod for ground characters
0x02367C1C = bla BootWithTPInner
;calls the boot section of the mod for Skells
0x02367E20 = bla BootWithTPDoll
;calls the tp section of the mod for ground characters
0x0212D620 = bla addTPtoHPInner
;calls the tp section of the mod for Skells
0x025E5A9C = bla addHPtoTPInner
;calls the hp section of the mod for ground characters
0x0212D6EC = bla addTPtoHPDoll
;calls the hp section of the mod for Skells
0x025CE770 = bla addHPtoTPDoll
[XCX_BootWithTP_Sync_v102J]
moduleMatches = 0x7672271D ; 1.0.2J
0x02367450 = bla BootWithTPInner
0x02367654 = bla BootWithTPDoll
0x0212D0EC = bla addTPtoHPInner
0x025E5078 = bla addHPtoTPInner
0x0212D1B8 = bla addTPtoHPDoll
0x025CDD4C = bla addHPtoTPDoll
[XCX_BootWithTP_Sync_v100U]
moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U
0x02367BAC = bla BootWithTPInner
0x02367DB0 = bla BootWithTPDoll
0x0212D620 = bla addTPtoHPInner
0x025E5A2C = bla addHPtoTPInner
0x0212D6EC = bla addTPtoHPDoll
0x025CE700 = bla addHPtoTPDoll
[XCX_BootWithTP_Sync_v100J]
moduleMatches = 0x785CA8A9 ; 1.0.0J
0x023672DC = bla BootWithTPInner
0x023674E0 = bla BootWithTPDoll
0x0212CE68 = bla addTPtoHPInner
0x025E459C = bla addHPtoTPInner
0x0212CF34 = bla addTPtoHPDoll
0x025CD270 = bla addHPtoTPDoll

View File

@ -0,0 +1,608 @@
[Definition]
titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = TP and HP functionality
path = "Xenoblade Chronicles X/Mods/Battle/TP QoL & Changes"
description = This mod by default only applies 2 Quality of Life changes. It sets your Tension points to their max once at boot, and prevents your Skell GP from draining while your outside it.||On top of the QoL changes, this mod also features very extensive ways to customize the way your HP and TP are handled by the game that veteran players may enjoy.
#Credits: Intra
version = 7
[Default]
$QoL = 1
$QoLSkell = 1
$everyloadingscreen = 0
$everyloadingscreenSkell = 0
$disableSkellLosingGP = 1
$customSync = 0
$customCheat = 0
$TPCheat = 0
$TPCheatSkell = 0
$HPCheat = 0
$HPCheatSkell = 0
$noHPcheatnodieifdamagelt = 0
$TPupdatecheatdieat0TP = 0
$TPupdatecheatnegative = 0
$HPupdatecheatnegative = 0
$noHPcheatnodieifdamageltSkell = 0
$TPupdatecheatdieat0TPSkell = 0
$TPupdatecheatnegativeSkell = 0
$HPupdatecheatnegativeSkell = 0
$afterbattleheal = 1
$skiptravelheal = 1
$skiptravelhealSkell = 1
$afterbattlerestoretp = 1
$HPboundtoTP = 0
$HPboundtoTPNegative = 0
$TPboundtoHP = 0
$TPboundtoHPNegative = 0
$HPboundtoTPSkell = 0
$HPboundtoTPNegativeSkell = 0
$TPboundtoHPSkell = 0
$TPboundtoHPNegativeSkell = 0
[Preset]
category = Quality of Life TP on Boot
name = "Off"
$QoL = 0
$QoLSkell = 0
[Preset]
category = Quality of Life TP on Boot
name = "Max TP on boot"
default = 1
[Preset]
category = Quality of Life TP on Boot
name = "Max TP Every time you skip travel or die"
$everyloadingscreen = 1
$everyloadingscreenSkell = 1
[Preset]
category = Quality of Life Skell GP
name = "Unchanged"
condition = ($HPboundtoTPSkell==0)+($HPboundtoTPSkell==4) == 1
$disableSkellLosingGP = 0
[Preset]
category = Quality of Life Skell GP
name = "Disable your Skell loosing GP when your not in it"
default = 1
[Preset]
category = Cheat
name = "Off "
[Preset]
category = Cheat
name = "CHALLENGE: No TP"
$TPCheat = 1
$TPCheatSkell = 1
[Preset]
category = Cheat
name = "CHALLENGE: Die in 1 Hit"
$HPCheat = 1
$HPCheatSkell = 1
[Preset]
category = Cheat
name = "CHEAT: Infinite TP"
$TPCheat = 2
$TPCheatSkell = 2
[Preset]
category = Cheat
name = "CHEAT: Infinite HP"
$HPCheat = 2
$HPCheatSkell = 2
[Preset]
category = Cheat
name = "CHEAT: Infinite HP & TP"
$TPCheat = 2
$HPCheat = 2
$TPCheatSkell = 2
$HPCheatSkell = 2
[Preset]
category = Cheat
name = "Custom (Remember to set the custom options to off when unselecting)"
$customCheat = 1
[Preset]
category = Ground: Cheat TP
condition = $customCheat == 1
name = "Off "
[Preset]
category = Ground: Cheat TP
condition = $customCheat == 1
name = "CHALLENGE: No TP "
$TPCheat = 1
#[Preset]
#category = Ground: Cheat TP
#condition = $customCheat == 1
#name = "WEIRD: Only TP Updates From Damage (Unfinished) "
#$TPCheat = 4
[Preset]
category = Ground: Cheat TP
condition = $customCheat == 1
name = "WEIRD: TP always equals HP "
$TPCheat = 3
[Preset]
category = Ground: Cheat TP
condition = $customCheat == 1
name = "CHEAT: Infinite TP "
$TPCheat = 2
[Preset]
category = Ground: Cheat HP
condition = $customCheat == 1
name = "Off "
[Preset]
category = Ground: Cheat HP
condition = $customCheat == 1
name = "CHALLENGE: Die in 1 Hit "
$HPCheat = 1
#[Preset]
#category = Ground: Cheat HP
#condition = $customCheat == 1
#name = "WEIRD: Only HP Updates From Using TP (Unfinished) "
#$HPCheat = 4
[Preset]
category = Ground: Cheat HP
condition = $customCheat == 1
name = "WEIRD: HP always equals TP "
$HPCheat = 3
[Preset]
category = Ground: Cheat HP
condition = $customCheat == 1
name = "CHEAT: Infinite HP "
$HPCheat = 2
[Preset]
category = Skell: Cheat TP
condition = $customCheat == 1
name = "Off "
[Preset]
category = Skell: Cheat TP
condition = $customCheat == 1
name = "CHALLENGE: No TP "
$TPCheatSkell = 1
#[Preset]
#category = Skell: Cheat TP
#condition = $customCheat == 1
#name = "WEIRD: Only TP Updates From Damage (Unfinished) "
#$TPCheatSkell = 4
[Preset]
category = Skell: Cheat TP
condition = $customCheat == 1
name = "WEIRD: TP always equals HP "
$TPCheatSkell = 3
[Preset]
category = Skell: Cheat TP
condition = $customCheat == 1
name = "CHEAT: Infinite TP "
$TPCheatSkell = 2
[Preset]
category = Skell: Cheat HP
condition = $customCheat == 1
name = "Off "
[Preset]
category = Skell: Cheat HP
condition = $customCheat == 1
name = "CHALLENGE: Die in 1 Hit "
$HPCheatSkell = 1
#[Preset]
#category = Skell: Cheat HP
#condition = $customCheat == 1
#name = "WEIRD: Only HP Updates From Using TP (Unfinished) "
#$HPCheatSkell = 4
[Preset]
category = Skell: Cheat HP
condition = $customCheat == 1
name = "WEIRD: HP always equals TP "
$HPCheatSkell = 3
[Preset]
category = Skell: Cheat HP
condition = $customCheat == 1
name = "CHEAT: Infinite HP "
$HPCheatSkell = 2
[Preset]
category = Modify Die in 1 Hit Cheat
condition = ($customCheat==1)*(($HPCheat==1)+($HPCheatSkell==1)) != 0
name = "Unchanged "
[Preset]
category = Modify Die in 1 Hit Cheat
condition = ($customCheat==1)*(($HPCheat==1)+($HPCheatSkell==1)) != 0
name = "Die in 1 Hit Unless Only Taking 1 Damage"
$noHPcheatnodieifdamagelt = 1
$noHPcheatnodieifdamageltSkell = 1
[Preset]
category = Modify Die in 1 Hit Cheat
condition = ($customCheat==1)*(($HPCheat==1)+($HPCheatSkell==1)) != 0
name = "Die in 1 Hit Unless Taking 100 or less Damage"
$noHPcheatnodieifdamagelt = 100
$noHPcheatnodieifdamageltSkell = 100
[Preset]
category = Modify Die in 1 Hit Cheat
condition = ($customCheat==1)*(($HPCheat==1)+($HPCheatSkell==1)) != 0
name = "Die in 1 Hit Unless Taking 1000 or less Damage"
$noHPcheatnodieifdamagelt = 1000
$noHPcheatnodieifdamageltSkell = 1000
[Preset]
category = Modify Only TP Updates From Damage Cheat
condition = ($customCheat==1)*(($TPCheat==3)+($TPCheatSkell==3)) != 0
name = "Unchanged "
[Preset]
category = Modify Only TP Updates From Damage Cheat
condition = ($customCheat==1)*(($TPCheat==3)+($TPCheatSkell==3)) != 0
name = "Negative Correlation"
$TPupdatecheatnegative = 1
[Preset]
category = Modify Only TP Updates From Damage Cheat
condition = ($customCheat==1)*(($TPCheat==3)+($TPCheatSkell==3)) != 0
name = "Die if your TP hits 0"
$TPupdatecheatdieat0TP = 1
[Preset]
category = Modify Only TP Updates From Damage Cheat
condition = ($customCheat==1)*(($TPCheat==3)+($TPCheatSkell==3)) != 0
name = "Die if your TP hits 0 AND Negative Correlation"
$TPupdatecheatdieat0TP = 1
$TPupdatecheatnegative = 1
$TPupdatecheatdieat0TPSkell = 1
$TPupdatecheatnegativeSkell = 1
[Preset]
category = Modify Only HP Updates From Using TP Cheat
condition = ($customCheat==1)*(($HPCheat==3)+($HPCheatSkell==3)) != 0
name = "Unchanged "
[Preset]
category = Modify Only HP Updates From Using TP Cheat
condition = ($customCheat==1)*(($HPCheat==3)+($HPCheatSkell==3)) != 0
name = "Negative Correlation "
$HPupdatecheatnegative = 1
$HPupdatecheatnegativeSkell = 1
[Preset]
category = Change Gameplay: Auto Healing
name = "Unchanged "
[Preset]
category = Change Gameplay: Auto Healing
name = "Disable healing after battle"
$afterbattleheal = 0
[Preset]
category = Change Gameplay: Auto Healing
condition = ($TPboundtoHP==2)+($TPboundtoHP==4)+($TPboundtoHPSkell==2)+($TPboundtoHPSkell==4) != 0
name = "Disable restoring TP after battle"
$afterbattlerestoretp = 0
[Preset]
category = Change Gameplay: Auto Healing
condition = ($TPboundtoHP==2)+($TPboundtoHP==4)+($TPboundtoHPSkell==2)+($TPboundtoHPSkell==4) == 0
name = "Disable healing after battle AND from skip traveling"
$afterbattleheal = 0
$skiptravelheal = 0
$skiptravelhealSkell = 0
[Preset]
category = Change Gameplay: Auto Healing
condition = ($TPboundtoHP==2)+($TPboundtoHP==4)+($TPboundtoHPSkell==2)+($TPboundtoHPSkell==4) != 0
name = "Disable healing/TP restore after battle AND healing from skip traveling"
$afterbattleheal = 0
$afterbattlerestoretp = 0
$skiptravelheal = 0
$skiptravelhealSkell = 0
[Preset]
category = Change Gameplay: Bind HP and TP
name = "Off "
[Preset]
category = Change Gameplay: Bind HP and TP
name = "HP & TP are bound Asynchronously"
$HPboundtoTP = 2
$TPboundtoHP = 2
$HPboundtoTPSkell = 2
$TPboundtoHPSkell = 2
[Preset]
category = Change Gameplay: Bind HP and TP
condition = (($TPCheat==0)*($HPCheat==0))*(($TPCheatSkell==0)*($HPCheatSkell==0)) != 0
name = "HP & TP are bound Synchronously (always the same)"
$HPboundtoTP = 1
$TPboundtoHP = 1
$HPboundtoTPSkell = 1
$TPboundtoHPSkell = 1
[Preset]
category = Change Gameplay: Bind HP and TP
name = "HP & TP are bound Asynchronously (Negative Correlation)"
$HPboundtoTP = 2
$TPboundtoHP = 2
$HPboundtoTPSkell = 2
$TPboundtoHPSkell = 2
$HPboundtoTPNegative = 1
$TPboundtoHPNegative = 1
$HPboundtoTPNegativeSkell = 1
$TPboundtoHPNegativeSkell = 1
[Preset]
category = Change Gameplay: Bind HP and TP
name = "Only binds if losing HP or TP"
$HPboundtoTP = 3
$TPboundtoHP = 3
$HPboundtoTPSkell = 3
$TPboundtoHPSkell = 3
#[Preset]
#category = Change Gameplay: Bind HP and TP
#name = "Only binds if losing HP or TP (Negative Correlation)"
#$HPboundtoTP = 3
#$TPboundtoHP = 3
#$HPboundtoTPSkell = 3
#$TPboundtoHPSkell = 3
#$HPboundtoTPNegative = 1
#$TPboundtoHPNegative = 1
#$HPboundtoTPNegativeSkell = 1
#$TPboundtoHPNegativeSkell = 1
[Preset]
category = Change Gameplay: Bind HP and TP
name = "Only binds if gaining HP or TP"
$HPboundtoTP = 4
$TPboundtoHP = 4
$HPboundtoTPSkell = 4
$TPboundtoHPSkell = 4
#[Preset]
#category = Change Gameplay: Bind HP and TP
#name = "Only binds if gaining HP or TP (Negative Correlation)"
#$HPboundtoTP = 4
#$TPboundtoHP = 4
#$HPboundtoTPSkell = 4
#$TPboundtoHPSkell = 4
#$HPboundtoTPNegative = 1
#$TPboundtoHPNegative = 1
#$HPboundtoTPNegativeSkell = 1
#$TPboundtoHPNegativeSkell = 1
[Preset]
category = Change Gameplay: Bind HP and TP
name = "Custom (Remember to set the custom options to off when unselecting) "
$customSync = 1
[Preset]
category = Ground: Bind HP to TP
condition = $customSync == 1
name = "Off "
[Preset]
category = Ground: Bind HP to TP
condition = $customSync == 1
name = "Asynchronously"
$HPboundtoTP = 2
[Preset]
category = Ground: Bind HP to TP
condition = $customSync == 1
name = "Decreasing Only"
$HPboundtoTP = 3
[Preset]
category = Ground: Bind HP to TP
condition = $customSync == 1
name = "Increasing Only"
$HPboundtoTP = 4
[Preset]
category = Ground: Bind HP to TP
condition = $customSync == 1
name = "Asynchronously (Negative Correlation)"
$HPboundtoTP = 2
$HPboundtoTPNegative = 1
[Preset]
category = Ground: Bind HP to TP
condition = $customSync == 1
name = "Decreasing Only (Negative Correlation)"
$HPboundtoTP = 3
$HPboundtoTPNegative = 1
[Preset]
category = Ground: Bind HP to TP
condition = $customSync == 1
name = "Increasing Only (Negative Correlation)"
$HPboundtoTP = 4
$HPboundtoTPNegative = 1
[Preset]
category = Ground: Bind HP to TP
condition = ($customSync == 1) * (($TPCheat==0)*($HPCheat==0)) == 1
name = "Bind HP AND TP Synchronously"
$TPboundtoHP = 1
$HPboundtoTP = 1
[Preset]
category = Ground: Bind HP to TP
condition = ($customSync == 1) * (($TPCheat==0)*($HPCheat==0)) == 1
name = "Bind HP AND TP Synchronously (Negative Correlation)"
$TPboundtoHP = 1
$HPboundtoTP = 1
$HPboundtoTPNegative = 1
$TPboundtoHPNegative = 1
[Preset]
category = Ground: Bind TP to HP
condition = ($customSync==1)*($HPboundtoTP!=1) == 1
name = "Off "
[Preset]
category = Ground: Bind TP to HP
condition = ($customSync==1)*($HPboundtoTP!=1) == 1
name = "Asynchronously "
$TPboundtoHP = 2
[Preset]
category = Ground: Bind TP to HP
condition = ($customSync==1)*($HPboundtoTP!=1) == 1
name = "Decreasing Only "
$TPboundtoHP = 3
[Preset]
category = Ground: Bind TP to HP
condition = ($customSync==1)*($HPboundtoTP!=1) == 1
name = "Increasing Only "
$TPboundtoHP = 4
[Preset]
category = Ground: Bind TP to HP
condition = ($customSync==1)*($HPboundtoTP!=1) == 1
name = "Asynchronously (Negative Correlation) "
$TPboundtoHP = 2
$TPboundtoHPNegative = 1
[Preset]
category = Ground: Bind TP to HP
condition = ($customSync==1)*($HPboundtoTP!=1) == 1
name = "Decreasing Only (Negative Correlation) "
$TPboundtoHP = 3
$TPboundtoHPNegative = 1
[Preset]
category = Ground: Bind TP to HP
condition = ($customSync==1)*($HPboundtoTP!=1) == 1
name = "Increasing Only (Negative Correlation) "
$TPboundtoHP = 4
$TPboundtoHPNegative = 1
[Preset]
category = Skell: Bind HP to TP
condition = $customSync == 1
name = "Off "
[Preset]
category = Skell: Bind HP to TP
condition = $customSync == 1
name = "Asynchronously "
$HPboundtoTPSkell = 2
[Preset]
category = Skell: Bind HP to TP
condition = $customSync == 1
name = "Decreasing Only "
$HPboundtoTPSkell = 3
[Preset]
category = Skell: Bind HP to TP
condition = $customSync == 1
name = "Increasing Only "
$HPboundtoTPSkell = 4
[Preset]
category = Skell: Bind HP to TP
condition = $customSync == 1
name = "Asynchronously (Negative Correlation) "
$HPboundtoTPSkell = 2
$HPboundtoTPNegativeSkell = 1
[Preset]
category = Skell: Bind HP to TP
condition = $customSync == 1
name = "Decreasing Only (Negative Correlation) "
$HPboundtoTPSkell = 3
$HPboundtoTPNegativeSkell = 1
[Preset]
category = Skell: Bind HP to TP
condition = $customSync == 1
name = "Increasing Only (Negative Correlation) "
$HPboundtoTPSkell = 4
$HPboundtoTPNegativeSkell = 1
[Preset]
category = Skell: Bind HP to TP
condition = ($customSync == 1) * (($TPCheatSkell==0)*($HPCheatSkell==0)) == 1
name = "Bind HP AND TP Synchronously "
$TPboundtoHPSkell = 1
$HPboundtoTPSkell = 1
[Preset]
category = Skell: Bind HP to TP
condition = ($customSync == 1) * (($TPCheatSkell==0)*($HPCheatSkell==0)) == 1
name = "Bind HP AND TP Synchronously (Negative Correlation) "
$TPboundtoHPSkell = 1
$HPboundtoTPSkell = 1
$HPboundtoTPNegativeSkell = 1
$TPboundtoHPNegativeSkell = 1
[Preset]
category = Skell: Bind TP to HP
condition = ($customSync==1)*($HPboundtoTPSkell!=1) == 1
name = "Off "
[Preset]
category = Skell: Bind TP to HP
condition = ($customSync==1)*($HPboundtoTPSkell!=1) == 1
name = "Asynchronously "
$TPboundtoHPSkell = 2
[Preset]
category = Skell: Bind TP to HP
condition = ($customSync==1)*($HPboundtoTPSkell!=1) == 1
name = "Decreasing Only "
$TPboundtoHPSkell = 3
[Preset]
category = Skell: Bind TP to HP
condition = ($customSync==1)*($HPboundtoTPSkell!=1) == 1
name = "Increasing Only "
$TPboundtoHPSkell = 4
[Preset]
category = Skell: Bind TP to HP
condition = ($customSync==1)*($HPboundtoTPSkell!=1) == 1
name = "Asynchronously (Negative Correlation) "
$TPboundtoHPSkell = 2
$TPboundtoHPNegativeSkell = 1
[Preset]
category = Skell: Bind TP to HP
condition = ($customSync==1)*($HPboundtoTPSkell!=1) == 1
name = "Decreasing Only (Negative Correlation) "
$TPboundtoHPSkell = 3
$TPboundtoHPNegativeSkell = 1
[Preset]
category = Skell: Bind TP to HP
condition = ($customSync==1)*($HPboundtoTPSkell!=1) == 1
name = "Increasing Only (Negative Correlation) "
$TPboundtoHPSkell = 4
$TPboundtoHPNegativeSkell = 1

View File

@ -0,0 +1,38 @@
[XCX_OFFLINE_DivisionF]
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
_forceChangeDivision:
li r3, $division
stw r3, 0xc4(r12)
blr
[XCX_OFFLINE_DivisionF_v101E]
moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E
0x0288D39C = ba _forceChangeDivision
0x0288D3B8 = ba _forceChangeDivision
;0x02AC623C = li r3, 0 ; offline__Q2_4menu19CTerminalMenu_UnionFv ;makes the division option show up on the blade terminal but just softlocks if selecting currently
[XCX_OFFLINE_DivisionF_v102U]
moduleMatches = 0x30B6E091 ; 1.0.2U
0x0288D39C = ba _forceChangeDivision
0x0288D3B8 = ba _forceChangeDivision
;0x02AC622C = li r3, 0 ; offline__Q2_4menu19CTerminalMenu_UnionFv
[XCX_OFFLINE_DivisionF_v102J]
moduleMatches = 0x7672271D ; 1.0.2J
0x0288A2FC = ba _forceChangeDivision
0x0288A318 = ba _forceChangeDivision
;0x02AC28FC = li r3, 0
[XCX_OFFLINE_DivisionF_v100U]
moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U
0x0288D320 = ba _forceChangeDivision
0x0288D33C = ba _forceChangeDivision
;0x02AC61B0 = li r3, 0
[XCX_OFFLINE_DivisionF_v100J]
moduleMatches = 0x785CA8A9 ; 1.0.0J
0x02888F24 = ba _forceChangeDivision
0x02888F40 = ba _forceChangeDivision
;0x02AC0B14 = li r3, 0

View File

@ -0,0 +1,55 @@
[Definition]
titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = "Offline Change Division"
path = "Xenoblade Chronicles X/Mods/BLADE/Offline Change Division"
description = Simple mod to force change your BLADE Division.|It is normally only possible to change it online.
#Credits: Intra
version = 6
[Default]
$division = 1
[Preset]
category = Division
name = Pathfinders
$division = 1
[Preset]
category = Division
name = Interceptors
$division = 2
[Preset]
category = Division
name = Harriers
$division = 3
[Preset]
category = Division
name = Reclaimers
$division = 4
[Preset]
category = Division
name = Curators
$division = 5
[Preset]
category = Division
name = Prospecters
$division = 6
[Preset]
category = Division
name = Outfitters
$division = 7
[Preset]
category = Division
name = Mediators
$division = 8
[Preset]
category = Division
name = Have No Division (Glitch)
$division = 0

View File

@ -0,0 +1,46 @@
[XCX_InfiniteTickets]
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
ticketammount = $ticketammount
miraniumammount = $miraniumammount
moneyammount = $moneyammount
InfiniteTickets:
lis r3, ticketammount@hi
ori r3, r3, ticketammount@l
blr
InfiniteMiranium:
lis r3, miraniumammount@hi
ori r3, r3, miraniumammount@l
blr
InfiniteMoney:
lis r3, moneyammount@hi
ori r3, r3, moneyammount@l
blr
[XCX_InfiniteTickets_v101E_v102U]
moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07 ; 1.0.1E, 1.0.2U, 1.0.0E
0x027F6B50 = ba InfiniteMoney
0x027F6CA8 = ba InfiniteTickets
0x027F6D44 = ba InfiniteMiranium
[XCX_InfiniteTickets_v102J]
moduleMatches = 0x7672271D ; 1.0.2J
0x027F46F4 = ba InfiniteMoney
0x027F484C = ba InfiniteTickets
0x027F48E8 = ba InfinitMiranium
[XCX_InfiniteTickets_v100U]
moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U
0x027F6AD4 = ba InfiniteMoney
0x027F6C2C = ba InfiniteTickets
0x027F6CC8 = ba InfiniteMiranium
[XCX_InfiniteTickets_v100J]
moduleMatches = 0x785CA8A9 ; 1.0.0J
0x027F36C8 = ba InfiniteMoney
0x027F3820 = ba InfiniteTickets
0x027F38BC = ba InfiniteMiranium

View File

@ -0,0 +1,80 @@
[Definition]
titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = "Infinite Tickets and Miranium and Money"
path = "Xenoblade Chronicles X/Mods/BLADE/Infinite Tickets\Miranium\Money"
description = Force the game to read you having a certain amount of tickets, miranium, and money.
#Credits: Intra
version = 6
[Default]
$ticketammount = 9999
$miraniumammount = 999999
$moneyammount = 99999999
[Preset]
category = Tickets
name = 0
$ticketammount = 0
[Preset]
category = Tickets
name = 1,000
$ticketammount = 1000
[Preset]
category = Tickets
name = 9,999
default = 1
$ticketammount = 9999
[Preset]
category = Tickets
name = 99,999
$ticketammount = 99999
[Preset]
category = Miranium
name = 0
$miraniumammount = 0
[Preset]
category = Miranium
name = 10,000
$miraniumammount = 10000
[Preset]
category = Miranium
name = 99,999
default = 1
$miraniumammount = 99999
[Preset]
category = Miranium
name = 999,999
$miraniumammount = 999999
[Preset]
category = Money
name = 0
$moneyammount = 0
[Preset]
category = Money
name = 10,000
$moneyammount = 10000
[Preset]
category = Money
name = 1,000,000
$moneyammount = 1000000
[Preset]
category = Money
name = 99,999,999
default = 1
$moneyammount = 99999999
[Preset]
category = Money
name = 999,999,999
$moneyammount = 99999999

View File

@ -0,0 +1,64 @@
[XCX_class]
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
_classMemorJP100:
;reads from the static address that stores the address for the start of character info memory section
lis r11, 0x103a
lwz r11, -0x489c (r11)
b _charClassCheat
_classMemorUS100:
;reads from the static address that stores the address for the start of character info memory section
lis r11, 0x103a
lwz r11, -0x3e78 (r11)
b _charClassCheat
_classMemorJP102:
;reads from the static address that stores the address for the start of character info memory section
lis r11, 0x103a
lwz r11, -0x42b0 (r11)
b _charClassCheat
_classMemorEU101US102:
;reads from the static address that stores the address for the start of character info memory section
lis r11, 0x103a
lwz r11, -0x3d78 (r11)
_charClassCheat:
; Character class
li r9, $class
stb r9, $memoffset (r11)
; Character class rank
li r9, $rank
stb r9, $memoffset+2 (r11)
; Character class exp
li r9, $exp
sth r9, $memoffset+4 (r11)
;its seems that after a class hits its max rank,
;the rank counter continues to go up, the game just never shows you.
;I almost looped the full range, my rank exp on drifter is 0xeff9 out of 0xffff
;I think character exp works the same way
;sadly these mods destroy that value, even if we dont change the exp, just changing the rank/level does
;but the only way to even see them is to open up a hex editor
;fixes the line we over wrote
lis r11, 0x103a
blr
[XCX_Class_v101E_v102U]
moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07 ; 1.0.1E, 1.0.2U, 1.0.0E
; Our code applies when the reqMenuCreateParty function is used
0x023429FC = bla _classMemorEU101US102
[XCX_Class_v102J]
moduleMatches = 0x7672271D ; 1.0.2J
0x02342230 = bla _classMemorJP102
[XCX_Class_v100U]
moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U
0x0234298C = bla _classMemorUS100
[XCX_Class_v100J]
moduleMatches = 0x785CA8A9 ; 1.0.0J
0x023420BC = bla _classMemorJP100

View File

@ -0,0 +1,378 @@
[Definition]
titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = Character Class
path = "Xenoblade Chronicles X/Mods/Character/Character Class"
description = "You can change the Class and Rank of any character.||***Activate by pressing START(+), then Party->Active Members->Confirm Changes."
#Credits: Intra
version = 7
[Default]
$memoffset = 0x1D0
$class = 1
$rank = 1
$exp = 0
$characterID = 1
$classtype = 0
[Preset]
category = "Character"
name = "Playable Avatar"
[Preset]
category = "Character"
name = "Nagi"
$characterID = 2
$memoffset = (($characterID-1)*0x57C)+0x1D0
[Preset]
category = "Character"
name = "L"
$characterID = 3
$memoffset = (($characterID-1)*0x57C)+0x1D0
[Preset]
category = "Character"
name = "Lao"
$characterID = 4
$memoffset = (($characterID-1)*0x57C)+0x1D0
[Preset]
category = "Character"
name = "H.B."
$characterID = 5
$memoffset = (($characterID-1)*0x57C)+0x1D0
[Preset]
category = "Character"
name = "Gwin"
$characterID = 6
$memoffset = (($characterID-1)*0x57C)+0x1D0
[Preset]
category = "Character"
name = "Frye"
$characterID = 7
$memoffset = (($characterID-1)*0x57C)+0x1D0
[Preset]
category = "Character"
name = "Doug"
$characterID = 8
$memoffset = (($characterID-1)*0x57C)+0x1D0
[Preset]
category = "Character"
name = "Yelv"
$characterID = 9
$memoffset = (($characterID-1)*0x57C)+0x1D0
[Preset]
category = "Character"
name = "Boze"
$characterID = 10
$memoffset = (($characterID-1)*0x57C)+0x1D0
[Preset]
category = "Character"
name = "Phog"
$characterID = 11
$memoffset = (($characterID-1)*0x57C)+0x1D0
[Preset]
category = "Character"
name = "Elma"
$characterID = 12
$memoffset = (($characterID-1)*0x57C)+0x1D0
[Preset]
category = "Character"
name = "Lin"
$characterID = 13
$memoffset = (($characterID-1)*0x57C)+0x1D0
[Preset]
category = "Character"
name = "Celica"
$characterID = 14
$memoffset = (($characterID-1)*0x57C)+0x1D0
[Preset]
category = "Character"
name = "Irina"
$characterID = 15
$memoffset = (($characterID-1)*0x57C)+0x1D0
[Preset]
category = "Character"
name = "Murderess"
$characterID = 16
$memoffset = (($characterID-1)*0x57C)+0x1D0
[Preset]
category = "Character"
name = "Alexa"
$characterID = 17
$memoffset = (($characterID-1)*0x57C)+0x1D0
[Preset]
category = "Character"
name = "Hope"
$characterID = 18
$memoffset = (($characterID-1)*0x57C)+0x1D0
[Preset]
category = "Character"
name = "Mia"
$characterID = 19
$memoffset = (($characterID-1)*0x57C)+0x1D0
[Preset]
category = "Class Type"
name = Playable Avatar Classes
$classtype = 0
[Preset]
category = "Class Type"
name = Playable Character Classes
$classtype = 1
[Preset]
category = "Class"
name = Drifter
condition = $classtype == 0
$class = 1
[Preset]
category = "Class"
name = Striker
condition = $classtype == 0
$class = 2
[Preset]
category = "Class"
name = Commando
condition = $classtype == 0
$class = 7
[Preset]
category = "Class"
name = Enforcer
condition = $classtype == 0
$class = 12
[Preset]
category = "Class"
name = Samurai Gunner
condition = $classtype == 0
$class = 3
[Preset]
category = "Class"
name = Duelist
condition = $classtype == 0
$class = 4
[Preset]
category = "Class"
name = Shield Trooper
condition = $classtype == 0
$class = 5
[Preset]
category = "Class"
name = Bastion Warrior
condition = $classtype == 0
$class = 6
[Preset]
category = "Class"
name = Winged Viper
condition = $classtype == 0
$class = 8
[Preset]
category = "Class"
name = Full Metal Jaguar
condition = $classtype == 0
$class = 9
[Preset]
category = "Class"
name = Partisan Eagle
condition = $classtype == 0
$class = 10
[Preset]
category = "Class"
name = Astral Crusader
condition = $classtype == 0
$class = 11
[Preset]
category = "Class"
name = Psycorruptor
condition = $classtype == 0
$class = 13
[Preset]
category = "Class"
name = Mastermind
condition = $classtype == 0
$class = 14
[Preset]
category = "Class"
name = Blast Fencer
condition = $classtype == 0
$class = 15
[Preset]
category = "Class"
name = Galactic Knight
condition = $classtype == 0
$class = 16
[Preset]
category = "Class"
name = Duelist+ (Nagi)
condition = $classtype == 1
$class = 17
[Preset]
category = "Class"
name = Shield Trooper (L)
condition = $classtype == 1
$class = 18
[Preset]
category = "Class"
name = Partisan Eagle (Lao)
condition = $classtype == 1
$class = 19
[Preset]
category = "Class"
name = Shield Trooper+ (H.B.)
condition = $classtype == 1
$class = 20
[Preset]
category = "Class"
name = Samurai Gunner (Gwin)
condition = $classtype == 1
$class = 21
[Preset]
category = "Class"
name = Samurai Gunner+ (Frye)
condition = $classtype == 1
$class = 22
[Preset]
category = "Class"
name = Blast Fencer+ (Doug)
condition = $classtype == 1
$class = 23
[Preset]
category = "Class"
name = Blast Fencer+ (Yelv)
condition = $classtype == 1
$class = 24
[Preset]
category = "Class"
name = Partisan Eagle (Boze)
condition = $classtype == 1
$class = 25
[Preset]
category = "Class"
name = Winged Viper (Phog)
condition = $classtype == 1
$class = 26
[Preset]
category = "Class"
name = Full Metal Jaguar (Elma)
condition = $classtype == 1
$class = 27
[Preset]
category = "Class"
name = Shield Trooper (Lin)
condition = $classtype == 1
$class = 28
[Preset]
category = "Class"
name = Psycorruptor+ (Celica)
condition = $classtype == 1
$class = 29
[Preset]
category = "Class"
name = Psycorruptor+ (Irina)
condition = $classtype == 1
$class = 30
[Preset]
category = "Class"
name = Winged Viper+ (Murderess)
condition = $classtype == 1
$class = 31
[Preset]
category = "Class"
name = Partisan Eagle+ (Alexa)
condition = $classtype == 1
$class = 32
[Preset]
category = "Class"
name = Psycorruptor+ (Hope)
condition = $classtype == 1
$class = 33
[Preset]
category = "Class"
name = Psycorruptor (Mia)
condition = $classtype == 1
$class = 34
#[Preset]
#category = "Class"
#name = Invalid Class (will crash the game)
#$class = 0 #or anything above 34
#[Preset]
#category = "Rank"
#name = 0 (does nothing interesting)
#$rank = 0
[Preset]
category = "Rank"
name = 1
$rank = 1
[Preset]
category = "Rank"
name = 5 (Will not unlock anything)
$rank = 5
[Preset]
category = "Rank"
name = 10 (Will not unlock anything)
$rank = 10
[Preset]
category = "Rank"
name = 15 (Will not unlock anything)
condition = $class > 16
$rank = 15
[Preset]
category = "Rank"
name = 20 (Will not unlock anything)
condition = $class > 16
$rank = 20

View File

@ -0,0 +1,29 @@
[XCX_EquipAnyWeapon_v101E]
moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E
; WHO : checkEquipConditionInner__Q2_4menu13MenuEquipUtilSFRCQ2_2fw7SPcDataiT2bPi
; WHAT : forces the equipment check to always return true. (can equip any level of gear, and can equip any weapon) (does not affect skells)
0x02CC4428 = li r3, 1
; WHO : _checkWeapon__Q2_4Arts14CArtsControlPcFi
; WHAT : Allows any weapon to use any art. 99% of the time this crashes the game, but could be useful for a "have 2 melee/ranged weapons equiped mod"
;0x0269DCA8 = blr
[XCX_EquipAnyWeapon_v102U]
moduleMatches = 0x30B6E091 ; 1.0.2U
0x02CC43C8 = li r3, 1
;0x0269DCA8 = blr
[XCX_EquipAnyWeapon_v102J]
moduleMatches = 0x7672271D ; 1.0.2J
0x02CBF920 = li r3, 1
;0x0269D284 = blr
[XCX_EquipAnyWeapon_v100U]
moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U
0x02CC4250 = li r3, 1
;0x0269DC38 = blr
[XCX_EquipAnyWeapon_v100J]
moduleMatches = 0x785CA8A9 ; 1.0.0J
0x02CBB62C = li r3, 1
;0x0269C7A8 = blr

View File

@ -0,0 +1,7 @@
[Definition]
titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = "Equip Any Weapon - Use any level of gear at any time"
path = "Xenoblade Chronicles X/Mods/Character/Equip Any Weapon"
description = Allows any character to equip any weapon and also removes the level check on gear so you can equip it even if under leveled. (Does not affect skells).
#Credits: Intra
version = 6

View File

@ -91,140 +91,140 @@ $mclass = 0
$mmission = 0
[Preset]
category = "Character:"
category = "Character"
name = "Playable Avatar"
[Preset]
category = "Character:"
category = "Character"
name = "Nagi"
$characterID = 2
$memoffset = (($characterID-1)*0x57C)+0x422
[Preset]
category = "Character:"
category = "Character"
name = "L"
$characterID = 3
$memoffset = (($characterID-1)*0x57C)+0x422
[Preset]
category = "Character:"
category = "Character"
name = "Lao"
$characterID = 4
$memoffset = (($characterID-1)*0x57C)+0x422
[Preset]
category = "Character:"
category = "Character"
name = "H.B."
$characterID = 5
$memoffset = (($characterID-1)*0x57C)+0x422
[Preset]
category = "Character:"
category = "Character"
name = "Gwin"
$characterID = 6
$memoffset = (($characterID-1)*0x57C)+0x422
[Preset]
category = "Character:"
category = "Character"
name = "Frye"
$characterID = 7
$memoffset = (($characterID-1)*0x57C)+0x422
[Preset]
category = "Character:"
category = "Character"
name = "Doug"
$characterID = 8
$memoffset = (($characterID-1)*0x57C)+0x422
[Preset]
category = "Character:"
category = "Character"
name = "Yelv"
$characterID = 9
$memoffset = (($characterID-1)*0x57C)+0x422
[Preset]
category = "Character:"
category = "Character"
name = "Boze"
$characterID = 10
$memoffset = (($characterID-1)*0x57C)+0x422
[Preset]
category = "Character:"
category = "Character"
name = "Phog"
$characterID = 11
$memoffset = (($characterID-1)*0x57C)+0x422
[Preset]
category = "Character:"
category = "Character"
name = "Elma"
$characterID = 12
$memoffset = (($characterID-1)*0x57C)+0x422
[Preset]
category = "Character:"
category = "Character"
name = "Lin"
$characterID = 13
$memoffset = (($characterID-1)*0x57C)+0x422
[Preset]
category = "Character:"
category = "Character"
name = "Celica"
$characterID = 14
$memoffset = (($characterID-1)*0x57C)+0x422
[Preset]
category = "Character:"
category = "Character"
name = "Irina"
$characterID = 15
$memoffset = (($characterID-1)*0x57C)+0x422
[Preset]
category = "Character:"
category = "Character"
name = "Murderess"
$characterID = 16
$memoffset = (($characterID-1)*0x57C)+0x422
[Preset]
category = "Character:"
category = "Character"
name = "Alexa"
$characterID = 17
$memoffset = (($characterID-1)*0x57C)+0x422
[Preset]
category = "Character:"
category = "Character"
name = "Hope"
$characterID = 18
$memoffset = (($characterID-1)*0x57C)+0x422
[Preset]
category = "Character:"
category = "Character"
name = "Mia"
$characterID = 19
$memoffset = (($characterID-1)*0x57C)+0x422
#[Preset]
#category = "Combine with other mods?"
#name = "No"
#condition = ($characterID != 1)
#
#[Preset]
#category = "Combine with other mods?"
#name = "Combine with Force Weapons mod"
#condition = ($characterID != 1)
#$combweapmod = 1
#
#[Preset]
#category = "Combine with other mods?"
#name = "Combine with Change Class mod"
#condition = ($characterID != 1)
#$combclassmod = 1
#
#[Preset]
#category = "Combine with other mods?"
#name = "Combine with both Change Class and Force Weapons"
#condition = ($characterID != 1)
#$combweapmod = 1
#$combclassmod = 1
[Preset]
category = "Combine with other mods?"
name = "No"
condition = ($characterID != 1)
[Preset]
category = "Combine with other mods?"
name = "Combine with Equip Any Weapon Mod"
condition = ($characterID != 1)
$combweapmod = 1
[Preset]
category = "Combine with other mods?"
name = "Combine with Change Class Mod"
condition = ($characterID != 1)
$combclassmod = 1
[Preset]
category = "Combine with other mods?"
name = "Combine with both Change Class and Equip Any Weapon Mods"
condition = ($characterID != 1)
$combweapmod = 1
$combclassmod = 1

View File

@ -0,0 +1,12 @@
[XCX_FixCameraBug_v101E_v102U_v100U]
moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07, 0xAB97DE6B, 0x676EB33E ; 1.0.1E, 1.0.2U, 1.0.0E, 1.0.1U, 1.0.0U
;Prevents checkRoom__Q2_3Cam8CRootCamFPQ2_3cfs5CfObj from ever being called
0x0222EE70 = blr
[XCX_FixCameraBug_v102J]
moduleMatches = 0x7672271D ; 1.0.2J
0x0222E93C = blr
[XCX_FixCameraBug_v100J]
moduleMatches = 0x785CA8A9 ; 1.0.0J
0x0222E6B8 = blr

View File

@ -0,0 +1,7 @@
[Definition]
titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = Fix Under Ceiling Camera Bug
path = "Xenoblade Chronicles X/Mods/Graphics/Fix Camera Bug"
description = Fixes the really annoying camera bug where if your character ever goes under a ceiling, the game forgets all your settings and reverts to default.
#Credits: Intra
version = 6

View File

@ -0,0 +1,280 @@
[XCX_libini]
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
;allocates memory to back up and restore registers r0-r31
ini_register_backup:
.uint 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31
;allocates memory to back up and restore the link register (LR)
ini_linkregister_backup:
.uint 0
;over writes original ini file with 0's
DeleteINI:
addi r30, r22, -4
li r28, 0
_whileLoopDeleteINI:
stwu r28, 4(r30)
lbz r24, 4(r30)
cmpwi r24, 0
bne+ _whileLoopDeleteINI
blr
;passes PrintOnOff into the PrintSettings function wraper
PrintOnOffSettingsINImod:
lis r27, PrintOnOffINImod@hi
ori r27, r27, PrintOnOffINImod@l
b PrintSettingsINImod
;passes PrintStringValue into the PrintSettings function wraper
PrintStringValueSettingsINImod:
lis r27, PrintStringValueINImod@hi
ori r27, r27, PrintStringValueINImod@l
b PrintSettingsINImod
;passes Callsprintf directly into the PrintSettings function wraper
PrintFloatSettingsINImod:
lis r27, CallsprintfINImod@hi
ori r27, r27, CallsprintfINImod@l
b PrintSettingsINImod
;passes PrintAMVP into the PrintSettings function wraper
PrintAMVPSettingsINImod:
lis r27, PrintAMVPINImod@hi
ori r27, r27, PrintAMVPINImod@l
b PrintSettingsINImod
;takes in a pointer to a string(r22), and prints it
PrintSettingNameINImod:
lwzu r29, 4(r22)
addi r29, r29, -1
_whileloopPrintSettingNameINImod:
lbzu r26, 1(r29)
stbu r26, 1(r30)
cmpwi r26, 0
bne+ _whileloopPrintSettingNameINImod
blr
;prints new line character
PrintNewLineINImod:
li r26, 0x0D0A
sth r26, 0(r30)
addi r30, r30, 1
blr
;function wraper that takes in r20 and a function pointer(r27)
;loops the function by the ammount in r20
PrintSettingsINImod:
mflr r31
_forloopPrintSettingsINImod:
bl PrintSettingNameINImod
mtctr r27
bctrl
bl PrintNewLineINImod
addic. r20, r20, -1
bgt+ _forloopPrintSettingsINImod
mtlr r31
blr
;checks if the floating point precision is less than 0 or greater than 9
;if so set precision to 1 to prevent the game from crashing
CheckifPrecisionIsValidINImod:
cmpwi r26, 0x30+0
bge+ _ifPrecisionLessThan0INImod
li r26, 0x30+1
_ifPrecisionLessThan0INImod:
cmpwi r26, 0x30+9
ble+ _ifPrecisionGreaterThan9INImod
li r26, 0x30+1
_ifPrecisionGreaterThan9INImod:
blr
;calls the C function sprintf()
;takes in a pointer to a formating string by r4
;takes in an address to print to by r3
;takes in a float to print by f1
;outputs the last address printed to in r11
CallsprintfINImod:
mflr r29
lfsu f1, 4(r24)
lis r4, str_floating_precision_INImod@hi
ori r4, r4, str_floating_precision_INImod@l
lbzu r26, 1(r21)
addi r26, r26, 0x30
bl CheckifPrecisionIsValidINImod
stb r26, 2(r4)
or r3, r30, r30
CREQV 4*cr1+eq, 4*cr1+eq, 4*cr1+eq ;required for some reason
mtctr r25
bctrl ;bl sprintf
or r30, r11, r11
mtlr r29
blr
;takes in r23 and prints either on or off
PrintOnOffINImod:
lwzu r26, 4(r23)
stw r26, 0(r30)
_whileloopPrintOnOffINImod:
lbzu r26, 1(r30)
cmpwi r26, 0
bne+ _whileloopPrintOnOffINImod
blr
;takes in a string pointer(r18), and hijacks PrintSettingName to print it
PrintStringValueINImod:
mflr r28
addi r30, r30, -1
or r19, r22, r22
or r22, r18, r18
bl PrintSettingNameINImod
or r18, r22, r22
or r22, r19, r19
mtlr r28
blr
;takes in a floating point(r24), and its precision(r21)
;calls sprintf() 3 times to print 3 floats sperated by a comma
PrintAMVPINImod:
mflr r28
lis r19, 0x202C
ori r19, r19, 0x2000
bl CallsprintfINImod
stw r19, 0(r30)
addi r30, r30, 3
addi r21, r21, -1
bl CallsprintfINImod
stw r19, 0(r30)
addi r30, r30, 3
addi r21, r21, -1
bl CallsprintfINImod
mtlr r28
blr
; r22 == 0x23f09100
; registers that do not need to be restored:
; r25 r24 r28 r10
EditINIforinimod:
;back up registers r0-r31
lis r10, ini_register_backup@ha
stmw r0, ini_register_backup@l(r10)
;back up link register
mflr r25
lis r10, ini_linkregister_backup@ha
stw r25, ini_linkregister_backup@l(r10)
;load the function pointer for the C function sprintf() into r25
lis r25, sprintfFunctionPointer@hi
ori r25, r25, sprintfFunctionPointer@l
;deletes the lib.ini file in ram so we can over write it with our own
bl DeleteINI
;r30 will track current position in file
addi r30, r22, -1
;r22 will keep track of the current setting
lis r22, lookuptable_settingname_INImod@ha
addi r22, r22, lookuptable_settingname_INImod@l-4
;r23 will keep track of on/off settings
lis r23, lookuptable_onoff_INImod@ha
addi r23, r23, lookuptable_onoff_INImod@l-4
;r24 will keep track of floating point numbers
lis r24, lookuptable_float_INImod@ha
addi r24, r24, lookuptable_float_INImod@l-4
;r21 will keep track of floating point precision
lis r21, lookuptable_float_precision_INImod@ha
addi r21, r21, lookuptable_float_precision_INImod@l-1
;r18 will keep track of string values (only used for luttex1 & cube)
lis r18, lookuptable_stringvalue_INImod@ha
addi r18, r18, lookuptable_stringvalue_INImod@l-4
;the r20 is how many times the loop executes, aka number of settings to print
;print all the on off settings at the begining of the file
li r20, 9
bl PrintOnOffSettingsINImod
;print luttex1 and cube setting
li r20, 2
bl PrintStringValueSettingsINImod
;print float settings until hitting an on/off setting
li r20, 41
bl PrintFloatSettingsINImod
;print red auto on/off setting
li r20, 1
bl PrintOnOffSettingsINImod
;print float settings until hitting an on/off setting
li r20, 14
bl PrintFloatSettingsINImod
;print blur on/off setting
li r20, 1
bl PrintOnOffSettingsINImod
;print float settings until hitting an on/off setting
li r20, 3
bl PrintFloatSettingsINImod
;print shadow half on/off setting
li r20, 1
bl PrintOnOffSettingsINImod
;print float settings until hitting an on/off setting
li r20, 3
bl PrintFloatSettingsINImod
;print sRGBmode on/off setting
li r20, 1
bl PrintOnOffSettingsINImod
;print float settings until hitting avmp settings
li r20, 11
bl PrintFloatSettingsINImod
;print avmp settings
li r20, 16
bl PrintAMVPSettingsINImod
;print last 2 float settings settings
li r20, 2
bl PrintFloatSettingsINImod
ExitEditINImod:
;restore registers r0-r31 & LR
lis r10, ini_linkregister_backup@ha
lwz r25, ini_linkregister_backup@l(r10)
mtlr r25
lis r10, ini_register_backup@ha
lmw r0, ini_register_backup@l(r10)
;restores line we over wrote and returns to the game
;lwz r22, 0xa0(r31)
addi r25,r1,0x38
blr
[XCX_libini_V101E]
moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E
;pointer for the C function sprintf()
sprintfFunctionPointer = 0x03B18118
;patches the address with a branch link to the mod
0x02FF94C8 = bla EditINIforinimod
[XCX_libini_V102U]
moduleMatches = 0x30B6E091 ; 1.0.2U
sprintfFunctionPointer = 0x03B18098
0x02FF9468 = bla EditINIforinimod
[XCX_libini_V102J]
moduleMatches = 0x7672271D ; 1.0.2J
sprintfFunctionPointer = 0x03B134B0
0x02FF4990 = bla EditINIforinimod
[XCX_libini_V100U]
moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U
sprintfFunctionPointer = 0x03B17F18
0x02FF92F0 = bla EditINIforinimod
[XCX_libini_V100J]
moduleMatches = 0x785CA8A9 ; 1.0.0J
sprintfFunctionPointer = 0x03B0DEB0
0x02FEF588 = bla EditINIforinimod

View File

@ -0,0 +1,271 @@
[XCX_libini_Data]
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
;This file allocates all the data from the rules.txt into ram
;this file also creates lookup tables to make the data easier to use
;the ini.asm file then contains code that will use this data
;string values for luttex1 and cube setting
value_luttex1:
.uint $luttex1_s1, $luttex1_s2, 0 ;if a larger string is needed, add $luttex1_s3, $luttex1_s4, etc. to before the 0
value_cube:
.uint $cube_s1, 0 ;if a larger string is needed, add $cube_s2, $cube_s3, etc. to before the 0
;list of strings that are in the lib.ini file
;this mod will be reprinting them
str_tonemap:
.string "tonemap="
str_ssao:
.string "ssao="
str_bloom:
.string "bloom="
str_godray:
.string "godray="
str_AntiAliasing:
.string "AntiAliasing="
str_ColReduction:
.string "ColReduction="
str_dof:
.string "dof="
str_lensFlare:
.string "lensFlare="
str_lut:
.string "lut="
str_luttex1:
.string "luttex1="
str_cube:
.string "cube="
str_tonemax:
.string "tonemax="
str_tonemin:
.string "tonemin="
str_tonemul:
.string "tonemul="
str_toneLastmul:
.string "toneLastmul="
str_toneBlmmax:
.string "toneBlmmax="
str_toneBlmmin:
.string "toneBlmmin="
str_toneBlmmul:
.string "toneBlmmul="
str_toneBlmLastmul:
.string "toneBlmLastmul="
str_godray_inival:
.string "godray_inival="
str_godray_decay:
.string "godray_decay="
str_godray_scale:
.string "godray_scale="
str_blm_border_sub:
.string "blm_border_sub="
str_blm_border_mul:
.string "blm_border_mul="
str_blm_border_sub2:
.string "blm_border_sub2="
str_blm_border_mul2:
.string "blm_border_mul2="
str_blm_border_max:
.string "blm_border_max="
str_blm_tex_mul:
.string "blm_tex_mul="
str_blm_blurscale1:
.string "blm_blurscale1="
str_blm_blurscale2:
.string "blm_blurscale2="
str_blm_blurscale3:
.string "blm_blurscale3="
str_blm_blurRange1:
.string "blm_blurRange1="
str_blm_blurRange2:
.string "blm_blurRange2="
str_blm_blurRange3:
.string "blm_blurRange3="
str_blm_scale1:
.string "blm_scale1="
str_blm_scale2:
.string "blm_scale2="
str_blm_scale3:
.string "blm_scale3="
str_lens_max:
.string "lens_max="
str_lens_rot:
.string "lens_rot="
str_lens_sub:
.string "lens_sub="
str_lens_mul:
.string "lens_mul="
str_lens_weight:
.string "lens_weight="
str_lens_decay:
.string "lens_decay="
str_lens_str:
.string "lens_str="
str_lens_paMax:
.string "lens_paMax="
str_lens_UVDecay:
.string "lens_UVDecay="
str_AA_Sharpness:
.string "AA_Sharpness="
str_AA_Range:
.string "AA_Range="
str_AA_Threshold:
.string "AA_Threshold="
str_AA_ThresholdMin:
.string "AA_ThresholdMin="
str_red_sclX:
.string "red_sclX="
str_red_sclY:
.string "red_sclY="
str_red_Auto:
.string "red_Auto="
str_red_AtMaxX:
.string "red_AtMaxX="
str_red_AtMaxY:
.string "red_AtMaxY="
str_red_AtMinX:
.string "red_AtMinX="
str_red_AtMinY:
.string "red_AtMinY="
str_red_AtRate:
.string "red_AtRate="
str_ao_Lengs:
.string "ao_Lengs="
str_ao_LengsRatio:
.string "ao_LengsRatio="
str_ao_range:
.string "ao_range="
str_ao_rangeRatio:
.string "ao_rangeRatio="
str_ao_sub:
.string "ao_sub="
str_ao_subRatio:
.string "ao_subRatio="
str_ao_Mul:
.string "ao_Mul="
str_ao_blurRange:
.string "ao_blurRange="
str_ao_blurScale:
.string "ao_blurScale="
str_blur:
.string "blur="
str_blurStr:
.string "blurStr="
str_blurSub:
.string "blurSub="
str_shadowStr:
.string "shadowStr="
str_shadowHalf:
.string "shadowHalf="
str_simShwStr:
.string "simShwStr="
str_simShwIn:
.string "simShwIn="
str_simShwMin:
.string "simShwMin="
str_sRGBMode:
.string "sRGBMode="
str_gamma:
.string "gamma="
str_ao_av_CenterWeight:
.string "ao_av_CenterWeight="
str_ao_av_MaxDistance:
.string "ao_av_MaxDistance="
str_ao_av_MaxRadius:
.string "ao_av_MaxRadius="
str_ao_av_FadeOutStart:
.string "ao_av_FadeOutStart="
str_ao_av_FadeOutDistance:
.string "ao_av_FadeOutDistance="
str_ao_av_BlurFallOff:
.string "ao_av_BlurFallOff="
str_ao_av_BlurScale:
.string "ao_av_BlurScale="
str_ao_av_Shwstr:
.string "ao_av_Shwstr="
str_cam_near:
.string "cam_near="
str_cam_far:
.string "cam_far="
str_avmp01:
.string "avmp01 = "
str_avmp02:
.string "avmp02 = "
str_avmp03:
.string "avmp03 = "
str_avmp04:
.string "avmp04 = "
str_avmp05:
.string "avmp05 = "
str_avmp06:
.string "avmp06 = "
str_avmp07:
.string "avmp07 = "
str_avmp08:
.string "avmp08 = "
str_avmp09:
.string "avmp09 = "
str_avmp10:
.string "avmp10 = "
str_avmp11:
.string "avmp11 = "
str_avmp12:
.string "avmp12 = "
str_avmp13:
.string "avmp13 = "
str_avmp14:
.string "avmp14 = "
str_avmp15:
.string "avmp15 = "
str_avmp16:
.string "avmp16 = "
str_cloud_h_min:
.string "cloud_h_min="
str_cloud_h_max:
.string "cloud_h_max="
;array of pointers to the list of strings above
;will be used to print the associated strings into memory
lookuptable_settingname_INImod:
.uint str_tonemap, str_ssao, str_bloom, str_godray, str_AntiAliasing, str_ColReduction, str_dof, str_lensFlare, str_lut, str_luttex1, str_cube, str_tonemax, str_tonemin, str_tonemul, str_toneLastmul, str_toneBlmmax, str_toneBlmmin, str_toneBlmmul, str_toneBlmLastmul, str_godray_inival, str_godray_decay, str_godray_scale, str_blm_border_sub, str_blm_border_mul, str_blm_border_sub2, str_blm_border_mul2, str_blm_border_max, str_blm_tex_mul, str_blm_blurscale1, str_blm_blurscale2, str_blm_blurscale3, str_blm_blurRange1, str_blm_blurRange2, str_blm_blurRange3, str_blm_scale1, str_blm_scale2, str_blm_scale3, str_lens_max, str_lens_rot, str_lens_sub, str_lens_mul, str_lens_weight, str_lens_decay, str_lens_str, str_lens_paMax, str_lens_UVDecay, str_AA_Sharpness, str_AA_Range, str_AA_Threshold, str_AA_ThresholdMin, str_red_sclX, str_red_sclY, str_red_Auto, str_red_AtMaxX, str_red_AtMaxY, str_red_AtMinX, str_red_AtMinY, str_red_AtRate, str_ao_Lengs, str_ao_LengsRatio, str_ao_range, str_ao_rangeRatio, str_ao_sub, str_ao_subRatio, str_ao_Mul, str_ao_blurRange, str_ao_blurScale, str_blur, str_blurStr, str_blurSub, str_shadowStr, str_shadowHalf, str_simShwStr, str_simShwIn, str_simShwMin, str_sRGBMode, str_gamma, str_ao_av_CenterWeight, str_ao_av_MaxDistance, str_ao_av_MaxRadius, str_ao_av_FadeOutStart, str_ao_av_FadeOutDistance, str_ao_av_BlurFallOff, str_ao_av_BlurScale, str_ao_av_Shwstr, str_cam_near, str_cam_far, str_avmp01, str_avmp02, str_avmp03, str_avmp04, str_avmp05, str_avmp06, str_avmp07, str_avmp08, str_avmp09, str_avmp10, str_avmp11, str_avmp12, str_avmp13, str_avmp14, str_avmp15, str_avmp16, str_cloud_h_min, str_cloud_h_max
;array of short strings that either contain "on" or "off"
;will be used to print the associated setting
lookuptable_onoff_INImod:
.uint $tonemap, $ssao, $bloom, $godray, $AntiAliasing, $ColReduction, $dof, $lensFlare, $lut, $red_Auto, $blur, $shadowHalf, $sRGBMode
;array of string pointers used to print the luttex1 and cube setting values
lookuptable_stringvalue_INImod:
.uint value_luttex1, value_cube
;array of floats used to print the float for the associated string
lookuptable_float_INImod:
.float $tonemax, $tonemin, $tonemul, $toneLastmul, $toneBlmmax, $toneBlmmin, $toneBlmmul, $toneBlmLastmul, $godray_inival, $godray_decay, $godray_scale, $blm_border_sub, $blm_border_mul, $blm_border_sub2, $blm_border_mul2, $blm_border_max, $blm_tex_mul, $blm_blurscale1, $blm_blurscale2, $blm_blurscale3, $blm_blurRange1, $blm_blurRange2, $blm_blurRange3, $blm_scale1, $blm_scale2, $blm_scale3, $lens_max, $lens_rot, $lens_sub, $lens_mul, $lens_weight, $lens_decay, $lens_str, $lens_paMax, $lens_UVDecay, $AA_Sharpness, $AA_Range, $AA_Threshold, $AA_ThresholdMin, $red_sclX, $red_sclY, $red_AtMaxX, $red_AtMaxY, $red_AtMinX, $red_AtMinY, $red_AtRate, $ao_Lengs, $ao_LengsRatio, $ao_range, $ao_rangeRatio, $ao_sub, $ao_subRatio, $ao_Mul, $ao_blurRange, $ao_blurScale, $blurStr, $blurSub, $shadowStr, $simShwStr, $simShwIn, $simShwMin, $gamma, $ao_av_CenterWeight, $ao_av_MaxDistance, $ao_av_MaxRadius, $ao_av_FadeOutStart, $ao_av_FadeOutDistance, $ao_av_BlurFallOff, $ao_av_BlurScale, $ao_av_Shwstr, $cam_near, $cam_far, $avmp0101, $avmp0102, $avmp0103, $avmp0201, $avmp0202, $avmp0203, $avmp0301, $avmp0302, $avmp0303, $avmp0401, $avmp0402, $avmp0403, $avmp0501, $avmp0502, $avmp0503, $avmp0601, $avmp0602, $avmp0603, $avmp0701, $avmp0702, $avmp0703, $avmp0801, $avmp0802, $avmp0803, $avmp0901, $avmp0902, $avmp0903, $avmp1001, $avmp1002, $avmp1003, $avmp1101, $avmp1102, $avmp1103, $avmp1201, $avmp1202, $avmp1203, $avmp1301, $avmp1302, $avmp1303, $avmp1401, $avmp1402, $avmp1403, $avmp1501, $avmp1502, $avmp1503, $avmp1601, $avmp1602, $avmp1603, $cloud_h_min, $cloud_h_max
;array of intigers used to set the number of decimal places printed for the associated float
lookuptable_float_precision_INImod:
.byte $tonemax_DecimalPlaces, $tonemin_DecimalPlaces, $tonemul_DecimalPlaces, $toneLastmul_DecimalPlaces, $toneBlmmax_DecimalPlaces, $toneBlmmin_DecimalPlaces, $toneBlmmul_DecimalPlaces, $toneBlmLastmul_DecimalPlaces, $godray_inival_DecimalPlaces, $godray_decay_DecimalPlaces, $godray_scale_DecimalPlaces, $blm_border_sub_DecimalPlaces, $blm_border_mul_DecimalPlaces, $blm_border_sub2_DecimalPlaces, $blm_border_mul2_DecimalPlaces, $blm_border_max_DecimalPlaces, $blm_tex_mul_DecimalPlaces, $blm_blurscale1_DecimalPlaces, $blm_blurscale2_DecimalPlaces, $blm_blurscale3_DecimalPlaces, $blm_blurRange1_DecimalPlaces, $blm_blurRange2_DecimalPlaces, $blm_blurRange3_DecimalPlaces, $blm_scale1_DecimalPlaces, $blm_scale2_DecimalPlaces, $blm_scale3_DecimalPlaces, $lens_max_DecimalPlaces, $lens_rot_DecimalPlaces, $lens_sub_DecimalPlaces, $lens_mul_DecimalPlaces, $lens_weight_DecimalPlaces, $lens_decay_DecimalPlaces, $lens_str_DecimalPlaces, $lens_paMax_DecimalPlaces, $lens_UVDecay_DecimalPlaces, $AA_Sharpness_DecimalPlaces, $AA_Range_DecimalPlaces, $AA_Threshold_DecimalPlaces, $AA_ThresholdMin_DecimalPlaces, $red_sclX_DecimalPlaces, $red_sclY_DecimalPlaces, $red_AtMaxX_DecimalPlaces, $red_AtMaxY_DecimalPlaces, $red_AtMinX_DecimalPlaces, $red_AtMinY_DecimalPlaces, $red_AtRate_DecimalPlaces, $ao_Lengs_DecimalPlaces, $ao_LengsRatio_DecimalPlaces, $ao_range_DecimalPlaces, $ao_rangeRatio_DecimalPlaces, $ao_sub_DecimalPlaces, $ao_subRatio_DecimalPlaces, $ao_Mul_DecimalPlaces, $ao_blurRange_DecimalPlaces, $ao_blurScale_DecimalPlaces, $blurStr_DecimalPlaces, $blurSub_DecimalPlaces, $shadowStr_DecimalPlaces, $simShwStr_DecimalPlaces, $simShwIn_DecimalPlaces, $simShwMin_DecimalPlaces, $gamma_DecimalPlaces, $ao_av_CenterWeight_DecimalPlaces, $ao_av_MaxDistance_DecimalPlaces, $ao_av_MaxRadius_DecimalPlaces, $ao_av_FadeOutStart_DecimalPlaces, $ao_av_FadeOutDistance_DecimalPlaces, $ao_av_BlurFallOff_DecimalPlaces, $ao_av_BlurScale_DecimalPlaces, $ao_av_Shwstr_DecimalPlaces, $cam_near_DecimalPlaces, $cam_far_DecimalPlaces, $avmp01_DecimalPlaces, $avmp02_DecimalPlaces, $avmp03_DecimalPlaces, $avmp04_DecimalPlaces, $avmp05_DecimalPlaces, $avmp06_DecimalPlaces, $avmp07_DecimalPlaces, $avmp08_DecimalPlaces, $avmp09_DecimalPlaces, $avmp10_DecimalPlaces, $avmp11_DecimalPlaces, $avmp12_DecimalPlaces, $avmp13_DecimalPlaces, $avmp14_DecimalPlaces, $avmp15_DecimalPlaces, $avmp16_DecimalPlaces, $cloud_h_min_DecimalPlaces, $cloud_h_max_DecimalPlaces
;format string that the C function sprintf() needs
;the * will be replaced with a number that sets the number of decimal places
str_floating_precision_INImod:
.string "%.*f"

View File

@ -0,0 +1,151 @@
------
### XCX lib.ini MOD
------
### What is this for?
This mod finds the ram copy of the lib.ini file thats located in monolib.cpk. It then will edit any and all options that the user wishes to edit. The mod is ran after the lib.ini is loaded into memory but before the game reads it.
The lib.ini file contains various settings mostly related to graphical settings such as AntiAliasing and the current RGB mode.
The lib.ini file is read once at boot and never again so you will need to restart the game to see changes.
Some proven to work settings are Bloom, AntiAliasing, sRGBMode, cloud_h_max, cloud_h_min, etc.
Some settings however are proven to not work.
Below is what an unmodified lib.ini file looks like:
------
```
tonemap=on
ssao=on
bloom=on
godray=on
AntiAliasing=on
ColReduction=off
dof=off
lensFlare=on
lut=on
luttex1=lutba
cube=cube
tonemax=2.5
tonemin=1.0
tonemul=1.0
toneLastmul=1.00
toneBlmmax=1.3
toneBlmmin=1.0
toneBlmmul=1.0
toneBlmLastmul=0.8
godray_inival=0.95
godray_decay=0.99
godray_scale=1.235
blm_border_sub=0.20
blm_border_mul=0.45
blm_border_sub2=3.0
blm_border_mul2=1.5
blm_border_max=3.5
blm_tex_mul=3.0
blm_blurscale1=1.0
blm_blurscale2=0.7
blm_blurscale3=1.5
blm_blurRange1=0.9
blm_blurRange2=0.8
blm_blurRange3=0.8
blm_scale1=0.2
blm_scale2=0.1
blm_scale3=0.1
lens_max=1
lens_rot=0
lens_sub=1.5
lens_mul=3.5
lens_weight=0.1
lens_decay=1.0
lens_str=1.5
lens_paMax=4.0
lens_UVDecay=0.290
AA_Sharpness=8.0
AA_Range=0.5
AA_Threshold=0.17
AA_ThresholdMin=0.05
red_sclX=0.96
red_sclY=1.0
red_Auto=on
red_AtMaxX=0.96
red_AtMaxY=1.0
red_AtMinX=0.6
red_AtMinY=0.86
red_AtRate=100.0
ao_Lengs=0.1
ao_LengsRatio=1.98
ao_range=5.7
ao_rangeRatio=1.000
ao_sub=0.02
ao_subRatio=0.150
ao_Mul=2.0
ao_blurRange=0.720
ao_blurScale=0.75
blur=off
blurStr=0.2
blurSub=0.05
shadowStr=1.0
shadowHalf=off
simShwStr=1.6
simShwIn=0.7
simShwMin=0.15
sRGBMode=on
gamma=6
ao_av_CenterWeight=1.090
ao_av_MaxDistance=0.15
ao_av_MaxRadius=0.2
ao_av_FadeOutStart=70000.0
ao_av_FadeOutDistance=10000.0
ao_av_BlurFallOff=0.050
ao_av_BlurScale=1.6
ao_av_Shwstr=0.5
cam_near=0.1
cam_far=80000.0
avmp01 = 0.5 , 0.5 , 0.5
avmp02 = 0.5 , 0.5 , 0.5
avmp03 = 0.5 , 0.5 , 0.5
avmp04 = 0.5 , 0.5 , 0.5
avmp05 = 0.5 , 0.5 , 0.5
avmp06 = 0.5 , 0.5 , 0.5
avmp07 = 0.5 , 0.5 , 0.5
avmp08 = 0.5 , 0.5 , 0.5
avmp09 = 0.5 , 0.5 , 0.5
avmp10 = 0.5 , 0.5 , 0.5
avmp11 = 0.5 , 0.5 , 0.5
avmp12 = 0.5 , 0.5 , 0.5
avmp13 = 0.5 , 0.5 , 0.5
avmp14 = 0.5 , 0.5 , 0.5
avmp15 = 0.5 , 0.5 , 0.5
avmp16 = 0.5 , 0.5 , 0.5
cloud_h_min=1000.0
cloud_h_max=1100.0
```
------
#Have fun playing with all the settings!

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,32 @@
[XCX_RemoveBattleUI_Arts_v101E]
moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E
;remove arts pallet
0x02a8ace4 = nop ;draw__Q2_4menu15MenuArtsPaletteFv
;fixes camera bug when skip traveling
0x02769448 = blr ;move__Q2_2ev12CCamPlayableFf
;???
;0x02c6b248 = nop ;close arts pallet
[XCX_RemoveBattleUI_Arts_v102U]
moduleMatches = 0x30B6E091 ; 1.0.2U
0x02a8acd4 = nop ;draw__Q2_4menu15MenuArtsPaletteFv
0x02769448 = blr ;move__Q2_2ev12CCamPlayableFf
;0x02c6b1e8 = nop ;close arts pallet
[XCX_RemoveBattleUI_Arts_v102J]
moduleMatches = 0x7672271D ; 1.0.2J
0x02a8724c = nop ;draw__Q2_4menu15MenuArtsPaletteFv
0x02767bc0 = blr ;move__Q2_2ev12CCamPlayableFf
;0x02c6675c = nop ;close arts pallet
[XCX_RemoveBattleUI_Arts_v100U]
moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U
0x02a8ac58 = nop ;draw__Q2_4menu15MenuArtsPaletteFv
0x027693e8 = blr ;move__Q2_2ev12CCamPlayableFf
;0x02c6b070 = nop ;close arts pallet
[XCX_RemoveBattleUI_Arts_v100J]
moduleMatches = 0x785CA8A9 ; 1.0.0J
0x02a855a0 = nop ;draw__Q2_4menu15MenuArtsPaletteFv
0x02766c50 = blr ;move__Q2_2ev12CCamPlayableFf
;0x02c62c48 = nop ;close arts pallet

View File

@ -0,0 +1,7 @@
[Definition]
titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = "Remove Battle UI Arts"
path = "Xenoblade Chronicles X/Mods/HUD/Remove Battle UI/Remove Arts pallet UI"
description = Removes arts from the mid battle UI.|Breaks camera during cutscenes.
#Credits: Blingblong
version = 6

View File

@ -0,0 +1,19 @@
[XCX_RemoveBattleUI_EnemyCursor_v101E]
moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E
0x02c6abc0 = nop ;init target cursor menu task
[XCX_RemoveBattleUI_EnemyCursor_v102U]
moduleMatches = 0x30B6E091 ; 1.0.2U
0x02c6ab60 = nop ;init target cursor menu task
[XCX_RemoveBattleUI_EnemyCursor_v102J]
moduleMatches = 0x7672271D ; 1.0.2J
0x02c660d4 = nop ;init target cursor menu task
[XCX_RemoveBattleUI_EnemyCursor_v100U]
moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U
0x02c6a9e8 = nop ;init target cursor menu task
[XCX_RemoveBattleUI_EnemyCursor_v100J]
moduleMatches = 0x785CA8A9 ; 1.0.0J
0x02c625c0 = nop ;init target cursor menu task

View File

@ -0,0 +1,7 @@
[Definition]
titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = "Remove Battle UI Enemy Cursor"
path = "Xenoblade Chronicles X/Mods/HUD/Remove Battle UI/Remove Enemy Cursor UI"
description = Removes The Cursor above enemies when targeting them.|Must be applied on boot to work.
#Credits: Blingblong
version = 6

View File

@ -0,0 +1,19 @@
[XCX_RemoveBattleUI_NoDamageUI_v101E]
moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E
0x02ae0590 = nop ; draw__Q2_4menu22MenuDamageValueManagerFv
[XCX_RemoveBattleUI_NoDamageUI_v102U]
moduleMatches = 0x30B6E091 ; 1.0.2U
0x02ae0580 = nop ; draw__Q2_4menu22MenuDamageValueManagerFv
[XCX_RemoveBattleUI_NoDamageUI_v102J]
moduleMatches = 0x7672271D ; 1.0.2J
0x02adcbbc = nop ; draw__Q2_4menu22MenuDamageValueManagerFv
[XCX_RemoveBattleUI_NoDamageUI_v100U]
moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U
0x02ae0504 = nop ; draw__Q2_4menu22MenuDamageValueManagerFv
[XCX_RemoveBattleUI_NoDamageUI_v100J]
moduleMatches = 0x785CA8A9 ; 1.0.0J
0x02adacb8 = nop ; draw__Q2_4menu22MenuDamageValueManagerFv

View File

@ -0,0 +1,7 @@
[Definition]
titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = "Remove Battle UI Damage"
path = "Xenoblade Chronicles X/Mods/HUD/Remove Battle UI/Remove Damage UI"
description = Prevents the game from drawing damage numbers on the screen.
#Credits: Intra
version = 6

View File

@ -0,0 +1,39 @@
[XCX_RemoveBattleUI_EnemyHealth_v101E]
moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E
;MISSING: enemy health bar animation, appendage HP
;removes enemy hp
0x02c136bc = nop ;init enemy menu target status
;removes info about a character that appears at the top of the screen
;0x02c136e4 = nop ;init npc menu target status
;also remove enemy hp and cause the enemy hp bar animation to appear where its not supposed to
;0x02c1484c = nop ;init target menu target status
;???, must be applied on boot
;0x02c6aba8 = nop ;init target status menu task
[XCX_RemoveBattleUI_EnemyHealth_v102U]
moduleMatches = 0x30B6E091 ; 1.0.2U
0x02c136ac = nop ;init enemy menu target status
;0x02c136d4 = nop ;init npc menu target status
;0x02c1483c = nop ;init target menu target status
;0x02c6ab48 = nop ;init target status menu task
[XCX_RemoveBattleUI_EnemyHealth_v102J]
moduleMatches = 0x7672271D ; 1.0.2J
0x02c0f0cc = nop ;init enemy menu target status
;0x02c0f0f4 = nop ;init npc menu target status
;0x02c1025c = nop ;init target menu target status
;0x02c660bc = nop ;init target status menu task
[XCX_RemoveBattleUI_EnemyHealth_v100U]
moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U
0x02c135bc = nop ;init enemy menu target status
;0x02c135e4 = nop ;init npc menu target status
;0x02c1474c = nop ;init target menu target status
;0x02c6a9d0 = nop ;init target status menu task
[XCX_RemoveBattleUI_EnemyHealth_v100J]
moduleMatches = 0x785CA8A9 ; 1.0.0J
0x02c0c1d4 = nop ;init enemy menu target status
;0x02c0c1fc = nop ;init npc menu target status
;0x02c0d364 = nop ;init target menu target status
;0x02c625a8 = nop ;init target status menu task

View File

@ -0,0 +1,7 @@
[Definition]
titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = "Remove Battle UI Enemy HP"
path = "Xenoblade Chronicles X/Mods/HUD/Remove Battle UI/Remove Enemy HP UI"
description = Removes The Enemy HP bar from the battle UI.
#Credits: Blingblong
version = 6

View File

@ -0,0 +1,40 @@
[XCX_RemoveBattleUI_Overdrive_v101E]
moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E
;MISSING: overdrive start animation, red overdrive bonus animation
;debated seperating these 4 UI elements into their own packs but decided its best to keep them in one. If you want to keep specific elements just comment the line out.
;remove overdrive arts pallet UI
0x021bee34 = nop ;gearStart__8MenuTaskFUiUcT2
;remove overdrive count
0x02c77fc4 = blr ;gearAddCount__8MenuTaskFUiUc
;remove end of overdrive damage
0x02b461c0 = nop ;draw__Q2_4menu14MenuGearDamageFv
;remove skell overdrive UI
0x02b4e3d0 = nop ;draw__Q2_4menu13MenuHyperDollFv
[XCX_RemoveBattleUI_Overdrive_v102U]
moduleMatches = 0x30B6E091 ; 1.0.2U
0x021bee34 = nop ;gearStart__8MenuTaskFUiUcT2
0x02c77f64 = blr ;gearAddCount__8MenuTaskFUiUc
0x02b461b0 = nop ;draw__Q2_4menu14MenuGearDamageFv
0x02b4e3c0 = nop ;draw__Q2_4menu13MenuHyperDollFv
[XCX_RemoveBattleUI_Overdrive_v102J]
moduleMatches = 0x7672271D ; 1.0.2J
0x021be900 = nop ;gearStart__8MenuTaskFUiUcT2
0x02c734b8 = blr ;gearAddCount__8MenuTaskFUiUc
0x02b42100 = nop ;draw__Q2_4menu14MenuGearDamageFv
0x02b4a310 = nop ;draw__Q2_4menu13MenuHyperDollFv
[XCX_RemoveBattleUI_Overdrive_v100U]
moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U
0x021bee34 = nop ;gearStart__8MenuTaskFUiUcT2
0x02c77dec = blr ;gearAddCount__8MenuTaskFUiUc
0x02b46134 = nop ;draw__Q2_4menu14MenuGearDamageFv
0x02b4e344 = nop ;draw__Q2_4menu13MenuHyperDollFv
[XCX_RemoveBattleUI_Overdrive_v100J]
moduleMatches = 0x785CA8A9 ; 1.0.0J
0x021be67c = nop ;gearStart__8MenuTaskFUiUcT2
0x02c6f9a4 = blr ;gearAddCount__8MenuTaskFUiUc
0x02b3fdb4 = nop ;draw__Q2_4menu14MenuGearDamageFv
0x02b47f8c = nop ;draw__Q2_4menu13MenuHyperDollFv

View File

@ -0,0 +1,7 @@
[Definition]
titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = "Remove Battle UI Overdrive"
path = "Xenoblade Chronicles X/Mods/HUD/Remove Battle UI/Remove Overdrive UI"
description = Removes the Overdrive UI, the Overdrive count, and the end of Overdrive damage from the mid battle UI.
#Credits: Blingblong, Intra
version = 6

View File

@ -0,0 +1,33 @@
[XCX_RemoveBattleUI_NoPlayerHealth_v101E]
moduleMatches = 0xF882D5CF, 0x218F6E07 ; 1.0.1E, 1.0.0E
;MISSING: battle menu
;No player health bar, must be applied on boot
0x02c6ab98 = nop ;init pc status
;removes player hp when the pause menu is open
0x02c773b0 = nop ;disp status all
;No player health bar, must be applied on boot
;0x02bbebe0 = blr ;init menu pc status
[XCX_RemoveBattleUI_NoPlayerHealth_v102U]
moduleMatches = 0x30B6E091 ; 1.0.2U
0x02c6ab38 = nop ;init pc status
0x02c77350 = nop ;disp status all
;0x02bbebd0 = blr ;init menu pc status
[XCX_RemoveBattleUI_NoPlayerHealth_v102J]
moduleMatches = 0x7672271D ; 1.0.2J
0x02c660ac = nop ;init pc status
0x02c728a4 = nop ;disp status all
;0x02bba6cc = blr ;init menu pc status
[XCX_RemoveBattleUI_NoPlayerHealth_v100U]
moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U
0x02c6a9c0 = nop ;init pc status
0x02c771d8 = nop ;disp status all
;0x02bbeae0 = blr ;init menu pc status
[XCX_RemoveBattleUI_NoPlayerHealth_v100J]
moduleMatches = 0x785CA8A9 ; 1.0.0J
0x02c62598 = nop ;init pc status
0x02c6ed90 = nop ;disp status all
;0x02bb7b54 = blr ;init menu pc status

View File

@ -0,0 +1,7 @@
[Definition]
titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = "Remove Battle UI Player HP"
path = "Xenoblade Chronicles X/Mods/HUD/Remove Battle UI/Remove Player HP UI"
description = Removes the player HP bar UI Element.|Must be applied on boot to work.
#Credits: Blingblong
version = 6

View File

@ -0,0 +1,51 @@
[XCX_MoveSpeedDollFlight]
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
VarSpeedDollFlight:
.float $mod ; horizontal flight speed (smallest means fastest, default is 1.0)
VarSpeedDollFlightHeight:
.float $modHeight ; vertical flight speed (smallest means fastest, default is 1.0)
_setSpeedDollFlight:
lis r4, VarSpeedDollFlight@ha
lfs f13, VarSpeedDollFlight@l(r4)
fdivs f1, f1, f13
li r4, 0x66
blr
_setSpeedDollFlightHeight:
lis r3, VarSpeedDollFlightHeight@ha
lfs f13, VarSpeedDollFlightHeight@l(r3)
fdivs f1, f1, f13
lwz r3, 0(r31)
blr
[XCX_MoveSpeedDollFlight_v101E_v102U]
moduleMatches = 0xF882D5CF, 0x30B6E091, 0x218F6E07 ; 1.0.1E, 1.0.2U, 1.0.0E
;updateBlendWeights__Q2_3chr17CDL_HoverDashLoopFv
;horizontal speed
0x02625164 = bla _setSpeedDollFlight ; SetVariableFloat(0x66,float)
;upward verical speed
0x02625170 = bla _setSpeedDollFlightHeight ;SetVariableFloat(0x125,float)
;downward verical speed
0x02625180 = bla _setSpeedDollFlightHeight ;SetVariableFloat(0x126,float)
[XCX_MoveSpeedDollFlight_v102J]
moduleMatches = 0x7672271D ; 1.0.2J
0x02624740 = bla _setSpeedDollFlight ;horizontal speed
0x0262474C = bla _setSpeedDollFlightHeight ;upward speed
0x0262475C = bla _setSpeedDollFlightHeight ;downward speed
[XCX_MoveSpeedDollFlight_v100U]
moduleMatches = 0xAB97DE6B, 0x676EB33E ; 1.0.1U, 1.0.0U
0x026250F4 = bla _setSpeedDollFlight ;horizontal speed
0x02625100 = bla _setSpeedDollFlightHeight ;upward speed
0x02625110 = bla _setSpeedDollFlightHeight ;downward speed
[XCX_MoveSpeedDollFlight_v100J]
moduleMatches = 0x785CA8A9 ; 1.0.0J
0x02623C64 = bla _setSpeedDollFlight ;horizontal speed
0x02623C70 = bla _setSpeedDollFlightHeight ;upward speed
0x02623C80 = bla _setSpeedDollFlightHeight ;downward speed

View File

@ -0,0 +1,71 @@
[Definition]
titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = "Fly Faster!"
path = "Xenoblade Chronicles X/Mods/Physics/We're Going to Plad!"
description = Increase the speed of Skell Flight Module.|If the game tries to launch you to space when you land, just remember to cancel your dash before landing.
#Credits: Intra
version = 6
[Default]
$mod = 1.0
$modHeight = 1.0
[Preset]
category = Horizontal Speed
name = "Speed x1"
$mod = 1.0
[Preset]
category = Horizontal Speed
name = "Speed x1.25"
$mod = 0.80
[Preset]
category = Horizontal Speed
name = "Speed x1.5"
$mod = 0.66
[Preset]
category = Horizontal Speed
name = "Speed x2"
$mod = 0.5
[Preset]
category = Horizontal Speed
name = "Speed x3"
$mod = 0.33
[Preset]
category = Horizontal Speed
name = "CHEAT x20"
$mod = 0.05
[Preset]
category = Vertical Speed
name = "Speed x1 "
$modHeight = 1.0
[Preset]
category = Vertical Speed
name = "Speed x1.25 "
$modHeight = 0.80
[Preset]
category = Vertical Speed
name = "Speed x1.5 "
$modHeight = 0.66
[Preset]
category = Vertical Speed
name = "Speed x2 "
$modHeight = 0.5
[Preset]
category = Vertical Speed
name = "Speed x3 "
$modHeight = 0.33
[Preset]
category = Vertical Speed
name = "CHEAT x20 "
$modHeight = 0.05

View File

@ -4,10 +4,13 @@
- **Enemy Statistics mod**: Apply a global percent modificator on all enemies stats (HP, Melee Attack, Melee Accuracy, Ranged Attack, Ranged Accuracy, Potential and Evasion).
- **Enemy De-aggro reducer**: Reduce escape distance needed to lose aggro from enemies.
- **Ground Damage multiplicator**: Increase the ground damage dealt by your team (skells not impacted).
- **Overdrive unlocked**: Overdrive is unlocked and can be used before Chapter 3.
- **Overdrive unlocked**: Overdrive is unlocked and can be used before Chapter 5.
- **Skell Flight Unlocked**: Flight Module is unlocked and can be used before A Girl's Wings.
- **Infinite Fuel**: Never run out of fuel for your skell.
- **Soul Challenges - AutoBattles**: The Soul Challenges QTE are hidden and automatically successful (only affect ground battles, not the QTE on Skell binding and destroying).
- **Soul Challenges - Difficulty**: The Soul Challenge's difficulty (the time left for doing the QTE) does not increase over time during a battle.
- **Soul Challenges - Skell restored**: When your Skell is destroyed during battle, it is restored automatically (you may need to fast travel).
- **TP & HP functionality**: The mod by default only applies 2 Quality of Life changes. It sets your Tension points to their max once at boot, and prevents your Skell GP from draining while your outside it.
### BLADE mods
- **BLADE Medal Count Mod**: sets the number of BLADE Medals you currently have.
@ -18,14 +21,17 @@
> 2. Adds (money/100) tickets to DLC missions
- **Lv60 skells unlocked (+cheat)**: Unlock the post-game skells and equipment as soon as you become a BLADE member (it also considers you have a Skell Flight License). The "Cheat" preset ignores all requirements for crafting, and also the level requirement to use a Skell. Yes, that means you can get an Ares 90 for free, right after Chapter 2!
- **More Reward Tickets**: Increase the amount of Tickets you get from Squad tasks and missions. Presets with "uncapped" means they ignore the max amount of Tickets you can have.
- **Infinite Tickets**: Force the game to read that you have a certain ammount of tickets and Miranium.
- **Offline Global Nemesis missions**: Global Nemesis (both Telethia Plume and Yggralith Zero) are available anytime in the BLADE console. There is an optional cheat to make BLADE Medals not needed.
- **Offline Squad tasks and missions**: Squad tasks and missions become available for offline play! When the game starts, a Squad quest is randomly selected (with "Random" preset) and the timer is stopped.
> Other presets allow to choose a specific tasks list. (c ) stands for collectible and (t) for Tyrant.
> When "Random" preset is selected, you can randomly change the active mission by opening the main menu and select "Social entry" > "Select Squad" command.
- **Field Skill Level Mod**: Can change your Mechanical, Biological, Archeaological field level.
- **Offline Change Division**: Can force change your BLADE Division, which is normally only possible online.
### Character mods
- **Character Level**: Can change any characters current level.
- **Character Class**: Can change any characters current class & rank.
- **Character Size**: Can change any characters size, and even has some glitch size values.
- **Change Character Name**: Can change any characters name and can rename your avatar.
- **Unlock Character Arts**: Can unlock any or all arts and can force arts to be equiped, even multiple of the same art.
@ -64,11 +70,14 @@
>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.
- **Lib.ini Edit**: Allows easy editing of the lib.ini file which contains various graphical settings.
- **Fix Camera Bug**: Fixes the bug where if your character ever goes under a ceiling, the game forgets all your settings.
### HUD mods
- **Change time anywhere**: Allow to change time of the day from the eManual entry of the main menu.
- **NPC info bubbles distance mod**: Increase the distance from which NPC's yellow speech bubbles are seen.
> I made this mod to get rid of the frustration not being able to get information from NLA people unless I get very close to each one of them.
- **Remove Battle UI**: Removes most of the mid-battle UI elements. Very unstable but good enough for screenshots.
### Loot mods
- **Equipment - Alternate random augments**: change the way augments are selected during loot generation.