mirror of
https://github.com/cemu-project/cemu_graphic_packs.git
synced 2025-04-19 09:51:21 +02:00
Compare commits
7 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
39f9bd6654 | ||
![]() |
61d458f9bd | ||
![]() |
108a1f0335 | ||
![]() |
7d54f240ec | ||
![]() |
d0205dcb80 | ||
![]() |
09207ededf | ||
![]() |
a8ab6fd326 |
6
Mods/TwilightPrincessHD_DisableMirror/patches.txt
Normal file
6
Mods/TwilightPrincessHD_DisableMirror/patches.txt
Normal 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)
|
6
Mods/TwilightPrincessHD_DisableMirror/rules.txt
Normal file
6
Mods/TwilightPrincessHD_DisableMirror/rules.txt
Normal 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
|
@ -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
|
6
src/SkylandersImaginators/Mods/SignaturePatch/rules.txt
Normal file
6
src/SkylandersImaginators/Mods/SignaturePatch/rules.txt
Normal 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
|
@ -0,0 +1,9 @@
|
||||
[SSF_RemovePortalCheck_V16]
|
||||
moduleMatches = 0xa0b35374 ; v16
|
||||
|
||||
0x024B0A28 = li r3, 0x203
|
||||
|
||||
[SSF_RemovePortalCheck_V0]
|
||||
moduleMatches = 0xb1f102ec ; v0
|
||||
|
||||
0x024B09A0 = li r3, 0x203
|
@ -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
|
@ -0,0 +1,4 @@
|
||||
[begone_autorotate]
|
||||
moduleMatches = 0xF7A78809, 0x659c782e
|
||||
|
||||
0x02664f20 = nop
|
6
src/Splatoon/Mods/Disable Autorotate/rules.txt
Normal file
6
src/Splatoon/Mods/Disable Autorotate/rules.txt
Normal 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
|
@ -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
|
17
src/XenobladeChroniclesX/Mods/BattleSkellFlight/rules.txt
Normal file
17
src/XenobladeChroniclesX/Mods/BattleSkellFlight/rules.txt
Normal 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
|
15
src/XenobladeChroniclesX/Mods/BattleSkellFuel/patch_Fuel.asm
Normal file
15
src/XenobladeChroniclesX/Mods/BattleSkellFuel/patch_Fuel.asm
Normal 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)
|
7
src/XenobladeChroniclesX/Mods/BattleSkellFuel/rules.txt
Normal file
7
src/XenobladeChroniclesX/Mods/BattleSkellFuel/rules.txt
Normal 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
|
@ -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
|
@ -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
|
@ -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
|
608
src/XenobladeChroniclesX/Mods/BattleTensionPoints/rules.txt
Normal file
608
src/XenobladeChroniclesX/Mods/BattleTensionPoints/rules.txt
Normal 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
|
@ -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
|
@ -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
|
@ -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
|
80
src/XenobladeChroniclesX/Mods/BladeInfiniteTickets/rules.txt
Normal file
80
src/XenobladeChroniclesX/Mods/BladeInfiniteTickets/rules.txt
Normal 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
|
64
src/XenobladeChroniclesX/Mods/CharacterClass/patch_class.asm
Normal file
64
src/XenobladeChroniclesX/Mods/CharacterClass/patch_class.asm
Normal 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
|
378
src/XenobladeChroniclesX/Mods/CharacterClass/rules.txt
Normal file
378
src/XenobladeChroniclesX/Mods/CharacterClass/rules.txt
Normal 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
|
@ -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
|
@ -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
|
@ -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
|
||||
|
||||
|
||||
|
||||
|
@ -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
|
@ -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
|
280
src/XenobladeChroniclesX/Mods/GraphicsLibINI/patch_ini.asm
Normal file
280
src/XenobladeChroniclesX/Mods/GraphicsLibINI/patch_ini.asm
Normal 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
|
271
src/XenobladeChroniclesX/Mods/GraphicsLibINI/patch_inidata.asm
Normal file
271
src/XenobladeChroniclesX/Mods/GraphicsLibINI/patch_inidata.asm
Normal 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"
|
151
src/XenobladeChroniclesX/Mods/GraphicsLibINI/readme.md
Normal file
151
src/XenobladeChroniclesX/Mods/GraphicsLibINI/readme.md
Normal 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!
|
2559
src/XenobladeChroniclesX/Mods/GraphicsLibINI/rules.txt
Normal file
2559
src/XenobladeChroniclesX/Mods/GraphicsLibINI/rules.txt
Normal file
File diff suppressed because it is too large
Load Diff
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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.
|
||||
|
Loading…
x
Reference in New Issue
Block a user