[XCX] 1.0.1U Compatibility.

Mod "Equipment - Force Type" now allows to select a specific sub-type (for example only loot dual guns ground weapon). But this works only for ground weapons, ground armors and skells armors (not skells weapons).
Experience mods (Inner, Class and Battle) now affect points gained in battle, missions, quests and exploration (previously only battle was affected).
This commit is contained in:
lasyan3 2019-03-16 14:25:25 +01:00
parent 0c9d64c0f0
commit 00e2eb580c
48 changed files with 1314 additions and 102 deletions

View File

@ -12,4 +12,9 @@ moduleMatches = 0x218F6E07, 0xF882D5CF
[XCXFOVV102U]
moduleMatches = 0x30B6E091
0x10190C7C = .float $fov
0x10190C7C = .float $fov
[XCXFOVV101U]
moduleMatches = 0xAB97DE6B
0x10190B7C = .float $fov

View File

@ -17,3 +17,23 @@ _damages = 0x00000004
0x00000010 = blr
0x025D896C = bla _damages
[XCX_DAMAGES_1U] ######################################################################
moduleMatches = 0xAB97DE6B ; 1.0.1U
codeCaveSize = 0x14
; ----------------------------------------------------------------------------
; WHO : cfs::CfCompoPropertyEnemy::addDamage((int))
; WHAT : Multiply the ground damage (skells not included) given to enemy
0x00000000 = .byte $mult
_multiplicator = 0x00000000
_damages = 0x00000004
0x00000004 = lis r4, _multiplicator@ha
0x00000008 = lbz r4, _multiplicator@l(r4)
0x0000000C = mullw r4, r4, r31
0x00000010 = blr
0x025D88FC = bla _damages

View File

@ -1,8 +1,13 @@
[XCX_ENEMIESTATS]
moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U
moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U
; ----------------------------------------------------------------------------
; WHO : calcEnParam__3cfsFPQ2_3cfs7SChrPrmUiT2
; WHAT : Apply modificator on enemies stats (HP, Melee Attack, Melee Accuracy, Ranged Attack, Ranged Accuracy, Potential and Evasion)
; 100% = 0.001 - default value
; 70% = 0.0007
; 50% = 0.0005
; 1% = 0.00001 ; GAME CRASH (enemis are too weak)
0x1003206C = .float $mod

View File

@ -1,5 +1,5 @@
[XCX_RELEASEDIST]
moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U
moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U
codeCaveSize = 0x20

View File

@ -1,5 +1,5 @@
[XCX_CHALLENGE]
moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U
moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U
; ----------------------------------------------------------------------------
; WHO : Battle::CSoulVoiceButtonChallenge::updateInternal((float))

View File

@ -1,5 +1,5 @@
[XCX_OVERDRIVE]
moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U
moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U
; ----------------------------------------------------------------------------
; WHO : Gear::CGear::IsPermit((void))

View File

@ -5,3 +5,8 @@ moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U
; WHO : collectQuestInfoDL__Q2_3cfs15CfSocialManagerFRQ2_2ml45resvector__tm__28_PQ2_3cfs17CfSocialQuestInfo
; WHAT : Disable endgame check to unlock DLC missions
0x022C6B50 = nop
[XCX_DLC_1U]
moduleMatches = 0xAB97DE6B ; 1.0.1U
0x022C6AE0 = nop

View File

@ -1,4 +1,4 @@
[XCX_TICKETS_DLC_EU]
[XCX_TICKETS_DLC_1E]
moduleMatches = 0xF882D5CF ; 1.0.1E
codeCaveSize = 0x60
@ -48,7 +48,7 @@ _ticketsValue = 0x00000050
0x02B9FE2C = bla _ticketsDispAfter
0x023CC654 = bla _ticketsValue
[XCX_TICKETS_DLC_US] ############################################################################################
[XCX_TICKETS_DLC_2U] ############################################################################################
moduleMatches = 0x30B6E091 ; 1.0.2U
codeCaveSize = 0x60
@ -90,3 +90,46 @@ _ticketsValue = 0x00000050
0x02B94708 = bla _ticketsDispBefore
0x02B9FE1C = bla _ticketsDispAfter
0x023CC654 = bla _ticketsValue
[XCX_TICKETS_DLC_1U] ############################################################################################
moduleMatches = 0xAB97DE6B ; 1.0.1U
codeCaveSize = 0x60
0x0000005C = .byte $mission
_mission = 0x0000005C
_shareAddr = 0x1039C080
_ticketsDispBefore = 0x00000000
0x00000000 = lwz r24, 0x47C(r30)
0x00000004 = lwz r24, 8(r24)
0x00000008 = lis r26, _mission@ha
0x0000000C = lbz r26, _mission@l(r26)
0x00000010 = cmplw r24, r26
0x00000014 = li r26, 0
0x00000018 = lis r21, _shareAddr@ha
0x0000001C = stw r26, _shareAddr@l(r21)
0x00000020 = bnelr
0x00000024 = mr r26, r23
0x00000028 = cmpwi r24, 5
0x0000002C = bne .+0xC
0x00000030 = li r24, 100
0x00000034 = divw r26, r22, r24 ; r23 = exp, r22 = money
0x00000038 = lis r21, _shareAddr@ha
0x0000003C = stw r26, _shareAddr@l(r21)
0x00000040 = blr
_ticketsDispAfter = 0x00000044
0x00000044 = lis r5, _shareAddr@ha
0x00000048 = lwz r5, _shareAddr@l(r5)
0x0000004C = blr
_ticketsValue = 0x00000050
0x00000050 = lis r27, _shareAddr@ha
0x00000054 = lwz r27, _shareAddr@l(r27)
0x00000058 = blr
0x02B9468C = bla _ticketsDispBefore
0x02B9FD2C = bla _ticketsDispAfter
0x023CC5E4 = bla _ticketsValue

View File

@ -1,4 +1,4 @@
[XCX_UNLOCKPOSTSKELLS_EU]
[XCX_UNLOCKPOSTSKELLS_1E] ################################################################
moduleMatches = 0xF882D5CF ; 1.0.1E
codeCaveSize = 0x1C
@ -32,8 +32,7 @@ _checkRes = 0x00000010
;0x02A7A9FC = li r3, 0 ; 4
;0x02A7AA24 = li r3, 0 ; 5
;#####################################################################################
[XCX_UNLOCKPOSTSKELLS_US]
[XCX_UNLOCKPOSTSKELLS_2U] ################################################################
moduleMatches = 0x30B6E091 ; 1.0.2U
codeCaveSize = 0x1C
@ -60,3 +59,28 @@ _checkRes = 0x00000010
0x00000014 = lbz r3, _resource@l(r3)
0x00000018 = blr
0x02A7A944 = bla _checkRes
[XCX_UNLOCKPOSTSKELLS_1U] ################################################################
moduleMatches = 0xAB97DE6B ; 1.0.1U
codeCaveSize = 0x1C
0x02A6B7AC = li r3, 1 ; always returns true
0x02A7B194 = li r30, 0 ; unlock everything
0x00000000 = .byte $miranium
0x00000001 = .byte $resource
_miranium = 0x00000000
_resource = 0x00000001
_checkMir = 0x00000004
0x00000004 = lis r3, _miranium@ha
0x00000008 = lbz r3, _miranium@l(r3)
0x0000000C = blr
0x02A7A6F8 = bla _checkMir
_checkRes = 0x00000010
0x00000010 = lis r3, _resource@ha
0x00000014 = lbz r3, _resource@l(r3)
0x00000018 = blr
0x02A7A8C8 = bla _checkRes

View File

@ -1,9 +1,7 @@
[XCX_SQUADMISSIONS]
moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U
codeCaveSize = 0x44
_getLocalTimeSec = 0x02892000
codeCaveSize = 0x6C
# cfs::CfSocialManager::update((float))
0x022879D0 = nop ; (network test?) allow call to cfs::CfSocialQuestManager::update((void))
@ -58,6 +56,10 @@ _mult = 0x00000014
0x00000018 = .byte $uncap
_uncap = 0x00000018
; ----------------------------------------------------------------------------
; WHO : cfs::CfSocialManager::addTradeTicket((int, unsigned int))
; WHAT : Multiply the reward tickets given in many occasions
_moreTickets = 0x0000001C
0x0000001C = lis r28, _mult@ha
0x00000020 = lhz r28, _mult@l(r28)
@ -66,6 +68,10 @@ _moreTickets = 0x0000001C
0x022CA874 = bla _moreTickets
; ----------------------------------------------------------------------------
; WHO : cfs::CfSocialManager::addTradeTicket((int, unsigned int))
; WHAT : Ignore the max number of tickets we can get
_uncapTickets = 0x0000002C
0x0000002C = lis r5, _uncap@ha
0x00000030 = lbz r5, _uncap@l(r5)
@ -76,8 +82,34 @@ _uncapTickets = 0x0000002C
0x022CAC5C = bla _uncapTickets
; ----------------------------------------------------------------------------
; WHO : menu::MenuMultiQuestInfoWindow::displayInfo((menu::MenuObject *,bool))
; WHAT :
_dispBefore = 0x00000044
0x00000044 = lhz r26, 0x8C(r1)
0x00000048 = lis r24, _mult@ha
0x0000004C = lhz r24, _mult@l(r24)
0x00000050 = mullw r26, r26, r24
0x00000054 = blr
0x02B94718 = bla _dispBefore
; ----------------------------------------------------------------------------
; WHO : menu::MenuMultiQuestResult::setup((void))
; WHAT :
_dispAfter = 0x00000058
0x00000058 = lhz r5, 0x5778(r29)
0x0000005C = lis r3, _mult@ha
0x00000060 = lhz r3, _mult@l(r3)
0x00000064 = mullw r5, r5, r3
0x00000068 = blr
0x02B9FE2C = bla _dispAfter
#####################################################################################################
[XCX_SQUADMISSIONS_EU]
[XCX_SQUADMISSIONS_1E]
moduleMatches = 0xF882D5CF ; 1.0.1E
# getServerTimeSec__Q2_2nt10CNetLibNexCFRUL
@ -110,7 +142,7 @@ _savePtr = 0x00000000
0x02B850A8 = li r11, 1
#####################################################################################################
[XCX_SQUADMISSIONS_US]
[XCX_SQUADMISSIONS_2U]
moduleMatches = 0x30B6E091 ; 1.0.2U
# getServerTimeSec__Q2_2nt10CNetLibNexCFRUL
@ -141,3 +173,136 @@ _savePtr = 0x00000000
0x02B85074 = li r11, 1
0x02B85098 = li r11, 1
#####################################################################################################
[XCX_SQUADMISSIONS_1U]
moduleMatches = 0xAB97DE6B ; 1.0.1U
codeCaveSize = 0x7C
0x02287960 = nop
0x023AB814 = nop ; 0x6B8(r12) == 0
0x023AB844 = nop ; isHost
0x023AB9F8 = li r5, 60 ; force 0x24 - UNLOCK
0x023ABBA0 = nop ; isHost
0x023A0414 = nop ; isHost
0x023ABC24 = nop ; getServerTimeSecRegion - UNLOCK
0x023ABC3C = nop ; compare with 0x28 - UNLOCK
0x023ABC48 = nop ; compare with 0x2C - UNLOCK
_gotoJoin = 0x023ABC90 - UNLOCK
0x023ABC4C = b _gotoJoin - UNLOCK
0x022C7FEC = nop ; test réseau : lwz r10, 0x1B0(r30) --> rlwinm. r9, r10, 0,30,30
0x022C7FF0 = nop ; test réseau
0x022C584C = nop ; rlwinm. r10, r11, 0,29,29
#################### Change Squad Mission using main menu
_shareAddr = 0x1039C07C
_iniPtr = 0x00000000
0x00000000 = li r5, 0
0x00000004 = lis r30, _shareAddr@ha
0x00000008 = stw r5, _shareAddr@l(r30)
0x0000000C = mr r30, r3
0x00000010 = blr
0x023B7430 = bla _iniPtr
_gotoTimeout = 0x023ABD84
_gotoNext = 0x023ABDE4
0x023ABD58 = lis r3, _shareAddr@ha
0x023ABD5C = lwz r7, _shareAddr@l(r3)
0x023ABD60 = cmpwi r7, 1
0x023ABD64 = beq _gotoTimeout
0x023ABD68 = b _gotoNext
######################## More Tickets
0x00000014 = .short $mult
_mult = 0x00000014
0x00000018 = .byte $uncap
_uncap = 0x00000018
; ----------------------------------------------------------------------------
; WHO : cfs::CfSocialManager::addTradeTicket((int, unsigned int))
; WHAT : Multiply the reward tickets given in many occasions
_moreTickets = 0x0000001C
0x0000001C = lis r28, _mult@ha
0x00000020 = lhz r28, _mult@l(r28)
0x00000024 = mullw r28, r4, r28
0x00000028 = blr
0x022CA804 = bla _moreTickets
; ----------------------------------------------------------------------------
; WHO : cfs::CfSocialManager::addTradeTicket((int, unsigned int))
; WHAT : Ignore the max number of tickets we can get
_uncapTickets = 0x0000002C
0x0000002C = lis r5, _uncap@ha
0x00000030 = lbz r5, _uncap@l(r5)
0x00000034 = cmpwi r5, 1
0x00000038 = beqlr
0x0000003C = mr r3, r25
0x00000040 = blr
0x022CABEC = bla _uncapTickets
; ----------------------------------------------------------------------------
; WHO : menu::MenuMultiQuestInfoWindow::displayInfo((menu::MenuObject *,bool))
; WHAT :
_dispBefore = 0x00000044
0x00000044 = lhz r26, 0x8C(r1)
0x00000048 = lis r24, _mult@ha
0x0000004C = lhz r24, _mult@l(r24)
0x00000050 = mullw r26, r26, r24
0x00000054 = blr
0x02B9468C = bla _dispBefore
; ----------------------------------------------------------------------------
; WHO : menu::MenuMultiQuestResult::setup((void))
; WHAT :
_dispAfter = 0x00000058
0x00000058 = lhz r5, 0x5778(r29)
0x0000005C = lis r3, _mult@ha
0x00000060 = lhz r3, _mult@l(r3)
0x00000064 = mullw r5, r5, r3
0x00000068 = blr
0x02B9FD2C = bla _dispAfter
#####################################################################################################
# getServerTimeSec__Q2_2nt10CNetLibNexCFRUL
0x0295E984 = nop
0x0295E988 = li r0, 42
# menu::MenuSquadMission::process((void))
0x02BFC6C0 = li r11, 1
##################### BLADE Home Terminal (for Squad Quest Selection)
0x02AC5C10 = li r3, 0 ; menu::CTerminalMenu_SquadQuest::offline
#################### Change Squad Mission using main menu
0x02AC5B84 = li r3, 0 ; menu::CTerminalMenu_SquadQuest::offline
_savePtr = 0x0000006C
0x0000006C = li r3, 1
0x00000070 = lis r30, _shareAddr@ha
0x00000074 = stw r3, _shareAddr@l(r30)
0x00000078 = blr
0x02B850A8 = bla _savePtr
0x02B850C0 = bla _savePtr
0x02B84FF8 = li r11, 1
0x02B8501C = li r11, 1

View File

@ -63,3 +63,69 @@ _itemHeightFlight = 0x00000050
0x02389C74 = bla _itemHeightDoll
0x02389CEC = bla _itemRangeFlight
0x02389D30 = bla _itemHeightFlight
#################################################################################################
[XCX_COLLECTIBLESRANGE_1U]
moduleMatches = 0xAB97DE6B ; 1.0.1U
codeCaveSize = 0x100
; ----------------------------------------------------------------------------
; WHO : cfs::CfPopManagerItem::updateTouchItem((void))
; WHAT : Initialize collectibles distance
0x00000060 = .float 40.0 ; _rangeInnerConst
0x00000064 = .float 8.0 ; _heightInnerConst
0x00000068 = .float 64.0 ; _rangeDollConst
0x0000006C = .float 64.0 ; _heightDollConst
0x00000070 = .float 64.0 ; _rangeFlightConst
0x00000074 = .float 52.0 ; _heightFlightConst
_rangeInnerConst = 0x00000060
_heightInnerConst = 0x00000064
_rangeDollConst = 0x00000068
_heightDollConst = 0x0000006C
_rangeFlightConst = 0x00000070
_heightFlightConst = 0x00000074
_itemRangeInner = 0x00000000
0x00000000 = lis r5, _rangeInnerConst@ha
0x00000004 = lfs f10, _rangeInnerConst@l(r5)
0x00000008 = fadd f10, f9, f10
0x0000000C = blr
_itemHeightInner = 0x00000010
0x00000010 = lis r5, _heightInnerConst@ha
0x00000014 = lfs f12, _heightInnerConst@l(r5)
0x00000018 = fadd f12, f10, f12
0x0000001C = blr
_itemRangeDoll = 0x00000020
0x00000020 = lis r5, _rangeDollConst@ha
0x00000024 = lfs f9, _rangeDollConst@l(r5)
0x00000028 = fadd f9, f6, f9
0x0000002C = blr
_itemHeightDoll = 0x00000030
0x00000030 = lis r5, _heightDollConst@ha
0x00000034 = lfs f10, _heightDollConst@l(r5)
0x00000038 = fadd f10, f7, f10
0x0000003C = blr
_itemRangeFlight = 0x00000040
0x00000040 = lis r5, _rangeFlightConst@ha
0x00000044 = lfs f10, _rangeFlightConst@l(r5)
0x00000048 = fadd f10, f12, f10
0x0000004C = blr
_itemHeightFlight = 0x00000050
0x00000050 = lis r5, _heightFlightConst@ha
0x00000054 = lfs f0, _heightFlightConst@l(r5)
0x00000058 = fadd f0, f13, f0
0x0000005C = blr
0x02389B10 = bla _itemRangeInner
0x02389B48 = bla _itemHeightInner
0x02389BCC = bla _itemRangeDoll
0x02389C04 = bla _itemHeightDoll
0x02389C7C = bla _itemRangeFlight
0x02389CC0 = bla _itemHeightFlight

View File

@ -14,3 +14,10 @@ moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U
_exit = 0x0238A1BC
0x02389EF8 = beq _exit
[XCX_NOITEMSELL_1U] ######################################################################
moduleMatches = 0xAB97DE6B ; 1.0.1U
0x02365A24 = li r31, 0 ; sellItem
_exit = 0x0238A14C
0x02389E88 = beq _exit

View File

@ -1,13 +1,18 @@
[XCX_MAXSLOTS_EU]
[XCX_MAXSLOTS_1E] ######################################################################
moduleMatches = 0xF882D5CF ; 1.0.1E
; ----------------------------------------------------------------------------
; NAME : Cshop::updateLuItem((void))
; PURPO : max 3 slots per armor L shop
; WHO : Cshop::updateLuItem((void))
; WHAT : max 3 slots per armor L shop
0x02A3AA18 = li r0, 3
[XCX_MAXSLOTS_US]
[XCX_MAXSLOTS_2U] ######################################################################
moduleMatches = 0x30B6E091 ;1.0.2U
0x02A3AA08 = li r0, 3
[XCX_MAXSLOTS_1U] ######################################################################
moduleMatches = 0xAB97DE6B ; 1.0.1U
0x02A3A9FC = li r0, 3

View File

@ -1,4 +1,4 @@
[XCX_UPGRADENOLIMIT_EU]
[XCX_UPGRADENOLIMIT_1E]
moduleMatches = 0xF882D5CF ; 1.0.1E
codeCaveSize = 0x1C
@ -32,8 +32,8 @@ _checkStrengthen = 0x00000010
0x02A72134 = li r10, 99 ; Ignore upgrades counter
0x02A723B4 = bla _checkStrengthen
;#####################################################################################
[XCX_UPGRADENOLIMIT_US]
#####################################################################################
[XCX_UPGRADENOLIMIT_2U]
moduleMatches = 0x30B6E091 ; 1.0.2U
codeCaveSize = 0x1C
@ -58,3 +58,30 @@ _checkStrengthen = 0x00000010
0x02A72124 = li r10, 99 ; Ignore upgrades counter
0x02A723A4 = bla _checkStrengthen
#####################################################################################
[XCX_UPGRADENOLIMIT_1U]
moduleMatches = 0xAB97DE6B ; 1.0.1U
codeCaveSize = 0x1C
0x00000000 = .byte $checkSelectItem
0x00000001 = .byte $checkStrengthen
_selectItem = 0x00000000
_strengthen = 0x00000001
_checkSelectItem = 0x00000004
0x00000004 = lis r4, _selectItem@ha
0x00000008 = lbz r3, _selectItem@l(r4)
0x0000000C = blr
_checkStrengthen = 0x00000010
0x00000010 = lis r3, _strengthen@ha
0x00000014 = lbz r3, _strengthen@l(r3)
0x00000018 = blr
0x02A6DC1C = li r3, 0 ; Ignore upgrades counter
0x02A6DF70 = bla _checkSelectItem
0x02A720A8 = li r10, 99 ; Ignore upgrades counter
0x02A72328 = bla _checkStrengthen

View File

@ -1,4 +1,4 @@
[XCX_UNLOCKAUGMENTS_EU]
[XCX_UNLOCKAUGMENTS_1E]
moduleMatches = 0xF882D5CF ; 1.0.1E
codeCaveSize = 0x1C
@ -26,8 +26,8 @@ _checkIgnoreEnd = 0x00000010
0x02A817C8 = bla _checkIgnore ; ignore requirements
0x02A81A3C = bla _checkIgnoreEnd ; ignore requirements (end game)
;#####################################################################################
[XCX_UNLOCKAUGMENTS_US]
#####################################################################################
[XCX_UNLOCKAUGMENTS_2U]
moduleMatches = 0x30B6E091 ; 1.0.2U
codeCaveSize = 0x1C
@ -50,3 +50,28 @@ _checkIgnoreEnd = 0x00000010
0x02A81790 = li r3, 0 ; all augments are known
0x02A817B8 = bla _checkIgnore ; ignore requirements
0x02A81A2C = bla _checkIgnoreEnd ; ignore requirements (end game)
#####################################################################################
[XCX_UNLOCKAUGMENTS_1U]
moduleMatches = 0xAB97DE6B ; 1.0.1U
codeCaveSize = 0x1C
0x00000000 = .byte $checkIgnore
0x00000001 = .byte $checkIgnoreEnd
_ignore = 0x00000000
_end = 0x00000001
_checkIgnore = 0x00000004
0x00000004 = lis r4, _ignore@ha
0x00000008 = lbz r3, _ignore@l(r4)
0x0000000C = blr
_checkIgnoreEnd = 0x00000010
0x00000010 = lis r3, _end@ha
0x00000014 = lbz r3, _end@l(r3)
0x00000018 = blr
0x02A81714 = li r3, 0 ; all augments are known
0x02A8173C = bla _checkIgnore ; ignore requirements
0x02A819B0 = bla _checkIgnoreEnd ; ignore requirements (end game)

View File

@ -1,34 +1,172 @@
[XCX_BATTLEPOINTSX]
moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U
codeCaveSize = 0x30
codeCaveSize = 0x9C
0x00000000 = .byte $mod
0x00000000 = .short $mod
_mod = 0x00000000
; ----------------------------------------------------------------------------
; WHO : addClassExpChara__Q2_6Battle14CBattleManagerFUiT1
; WHAT : Multiply the battle points given in... battles
; WHAT : Multiply the battle points gained when a new class level is reached
_exp = 0x00000004
0x00000004 = lis r3, _mod@ha
0x00000008 = lbz r3, _mod@l(r3)
0x00000008 = lhz r3, _mod@l(r3)
0x0000000C = mullw r0, r0, r3
0x00000010 = blr
0x00000010 = mulli r0, r0, 3
0x00000014 = blr
0x020C4A74 = bla _exp
; ----------------------------------------------------------------------------
; WHO : addInnerExpChara__Q2_6Battle14CBattleManagerFUiN21
; WHAT : Multiply the battle points given in... battles
; WHAT : Multiply the battle points gained when a new level is reached
_exp2 = 0x00000014
0x00000014 = lis r4, _mod@ha
0x00000018 = lbz r4, _mod@l(r4)
0x0000001C = li r3, 3
0x00000020 = divw r4, r4, r3
0x00000024 = mullw r9, r9, r4
0x00000028 = add r11, r11, r9
0x0000002C = blr
_exp2 = 0x00000018
0x00000018 = lis r4, _mod@ha
0x0000001C = lhz r4, _mod@l(r4)
0x00000020 = mullw r9, r9, r4
0x00000024 = add r11, r11, r9
0x00000028 = blr
0x020C1C48 = bla _exp2
; ----------------------------------------------------------------------------
; WHO : addTreasure__Q2_3cfs10CfTBoxUtilSFUib
; WHAT : Multiply the battle points given by treasures or exploration
_expTreasure = 0x00000050
0x00000050 = lis r3, _mod@ha
0x00000054 = lhz r3, _mod@l(r3)
0x00000058 = mullw r3, r31, r3
0x0000005C = blr
0x022D8EDC = bla _expTreasure
; ----------------------------------------------------------------------------
; WHO : menu::MenuMultiQuestInfoWindow::displayInfo((menu::MenuObject *,bool))
; WHAT : Multiply the battle points displayed in quest popup information.
_dispBefore = 0x00000060
0x00000060 = lhz r24, 0x90(r1)
0x00000064 = lis r25, _mod@ha
0x00000068 = lhz r25, _mod@l(r25)
0x0000006C = mullw r24, r24, r25
0x00000070 = blr
0x02B94730 = bla _dispBefore
; ----------------------------------------------------------------------------
; WHO : menu::MenuMultiQuestResult::setup((void))
; WHAT : Multiply the battle points displayed in quest popup results.
_dispAfter = 0x00000074
0x00000074 = lis r5, _mod@ha
0x00000078 = lhz r5, _mod@l(r5)
0x0000007C = mullw r3, r3, r5
0x00000080 = stw r3, 0x7C(r1)
0x00000084 = blr
0x02B9FEE0 = bla _dispAfter
; ----------------------------------------------------------------------------
; WHO : addReward__Q2_3cfs11CfSquadUtilSFUiT1
; WHAT : Multiply the experience points given by Squad missions
_expSquadValue = 0x00000088
0x00000088 = lis r4, _mod@ha
0x0000008C = lhz r4, _mod@l(r4)
0x00000090 = mullw r3, r3, r4
0x00000094 = stw r3, 0x1C(r1)
0x00000098 = blr
0x023CC770 = bla _expSquadValue
0x023CC834 = bla _expSquadValue
[XCX_BATTLEPOINTSX_1U] ############################################################################
moduleMatches = 0xAB97DE6B ; 1.0.1U
codeCaveSize = 0x9C
0x00000000 = .short $mod
_mod = 0x00000000
; ----------------------------------------------------------------------------
; WHO : addClassExpChara__Q2_6Battle14CBattleManagerFUiT1
; WHAT : Multiply the battle points gained when a new class level is reached
_exp = 0x00000004
0x00000004 = lis r3, _mod@ha
0x00000008 = lhz r3, _mod@l(r3)
0x0000000C = mullw r0, r0, r3
0x00000010 = mulli r0, r0, 3
0x00000014 = blr
0x020C4A74 = bla _exp
; ----------------------------------------------------------------------------
; WHO : addInnerExpChara__Q2_6Battle14CBattleManagerFUiN21
; WHAT : Multiply the battle points gained when a new level is reached
_exp2 = 0x00000018
0x00000018 = lis r4, _mod@ha
0x0000001C = lhz r4, _mod@l(r4)
0x00000020 = mullw r9, r9, r4
0x00000024 = add r11, r11, r9
0x00000028 = blr
0x020C1C48 = bla _exp2
; ----------------------------------------------------------------------------
; WHO : addTreasure__Q2_3cfs10CfTBoxUtilSFUib
; WHAT : Multiply the battle points given by treasures or exploration
_expTreasure = 0x00000050
0x00000050 = lis r3, _mod@ha
0x00000054 = lhz r3, _mod@l(r3)
0x00000058 = mullw r3, r31, r3
0x0000005C = blr
0x022D8E6C = bla _expTreasure
; ----------------------------------------------------------------------------
; WHO : menu::MenuMultiQuestInfoWindow::displayInfo((menu::MenuObject *,bool))
; WHAT : Multiply the battle points displayed in quest popup information.
_dispBefore = 0x00000060
0x00000060 = lhz r24, 0x90(r1)
0x00000064 = lis r25, _mod@ha
0x00000068 = lhz r25, _mod@l(r25)
0x0000006C = mullw r24, r24, r25
0x00000070 = blr
0x02B946A4 = bla _dispBefore
; ----------------------------------------------------------------------------
; WHO : menu::MenuMultiQuestResult::setup((void))
; WHAT : Multiply the battle points displayed in quest popup results.
_dispAfter = 0x00000074
0x00000074 = lis r5, _mod@ha
0x00000078 = lhz r5, _mod@l(r5)
0x0000007C = mullw r3, r3, r5
0x00000080 = stw r3, 0x7C(r1)
0x00000084 = blr
0x02B9FDE0 = bla _dispAfter
; ----------------------------------------------------------------------------
; WHO : addReward__Q2_3cfs11CfSquadUtilSFUiT1
; WHAT : Multiply the experience points given by Squad missions
_expSquadValue = 0x00000088
0x00000088 = lis r4, _mod@ha
0x0000008C = lhz r4, _mod@l(r4)
0x00000090 = mullw r3, r3, r4
0x00000094 = stw r3, 0x1C(r1)
0x00000098 = blr
0x023CC700 = bla _expSquadValue
0x023CC700 = bla _expSquadValue

View File

@ -2,21 +2,30 @@
titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = "Battle Points X"
path = "Xenoblade Chronicles X/Mods/Experience/Battle Points"
description = Change the amount of Battle points gained in battle.
description = Change the amount of Battle points gained when a new level (or class level) is reached, when completing missions or exploring.
version = 3
[Preset]
name = "Quantity x2"
$mod = 6
$mod = 2
[Preset]
name = "Quantity x5"
$mod = 15
$mod = 5
[Preset]
name = "Quantity x10"
$mod = 30
$mod = 10
[Preset]
name = "Quantity x50"
$mod = 150
$mod = 50
[Preset]
name = "Quantity x100"
$mod = 100
[Preset]
name = "Quantity x1000"
$mod = 1000

View File

@ -16,4 +16,24 @@ _exp = 0x00000004
; WHAT : Multiply the BLADE points rewarded
0x0288E610 = nop
0x0288E614 = bla _exp
0x0288E614 = bla _exp
[XCX_BLADEX_1U] ######################################################################
moduleMatches = 0xAB97DE6B ; 1.0.1U
codeCaveSize = 0x10
0x00000000 = .byte $mod
_mod = 0x00000000
_exp = 0x00000004
0x00000004 = lis r3, _mod@ha
0x00000008 = lbz r3, _mod@l(r3)
0x0000000C = blr
; ----------------------------------------------------------------------------
; WHO : fw::SocialUnion::getUnionBasePoint((int))
; WHAT : Multiply the BLADE points rewarded
0x0288E594 = nop
0x0288E598 = bla _exp

View File

@ -1,12 +1,12 @@
[XCX_CLASSEXPX]
moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U
moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U
codeCaveSize = 0x20
codeCaveSize = 0x50
0x00000000 = .byte $mod
_mod = 0x00000000
_exp = 0x00000004
_expBattle = 0x00000004
0x00000004 = lis r12, _mod@ha
0x00000008 = lbz r12, _mod@l(r12)
0x0000000C = mullw r31, r3, r12
@ -16,5 +16,44 @@ _exp = 0x00000004
; WHO : addClassExpChara__Q2_6Battle14CBattleManagerFUiT1
; WHAT : Multiply the class experience given during combat
0x020C4A28 = bla _exp
0x020C4A28 = bla _expBattle
; ----------------------------------------------------------------------------
; WHO : menu::MenuMultiQuestInfoSub::displayInfoDL((menu::MenuObject *))
; WHAT :
_dispBefore = 0x00000014
0x00000014 = lis r5, _mod@ha
0x00000018 = lbz r5, _mod@l(r5)
0x0000001C = mullw r3, r3, r5
0x00000020 = stw r3, 0x34(r1)
0x00000024 = blr
0x02B91324 = bla _dispBefore
; ----------------------------------------------------------------------------
; WHO : menu::MenuMultiQuestResult::setup((void))
; WHAT :
_dispAfter = 0x00000028
0x00000028 = lis r5, _mod@ha
0x0000002C = lbz r5, _mod@l(r5)
0x00000030 = mullw r3, r3, r5
0x00000034 = stw r3, 0x80(r1)
0x00000038 = blr
0x02B9FF44 = bla _dispAfter
; ----------------------------------------------------------------------------
; WHO : addReward__Q2_3cfs11CfSquadUtilSFUiT1
; WHAT : Multiply the experience points given by Squad missions
_expSquadValue = 0x0000003C
0x0000003C = lis r4, _mod@ha
0x00000040 = lbz r4, _mod@l(r4)
0x00000044 = mullw r3, r3, r4
0x00000048 = stw r3, 0x18(r1)
0x0000004C = blr
0x023CC750 = bla _expSquadValue
0x023CC814 = bla _expSquadValue

View File

@ -2,7 +2,7 @@
titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = "Class Exp Points X"
path = "Xenoblade Chronicles X/Mods/Experience/Class Exp Points"
description = Change the amount of Class Exp points gained in battle.
description = Change the amount of Class Exp points gained in battle, missions, quests and exploration.
version = 3
[Preset]
@ -20,3 +20,7 @@ $mod = 10
[Preset]
name = "x50"
$mod = 50
[Preset]
name = "x100"
$mod = 100

View File

@ -1,5 +1,5 @@
[XCX_FRIENDPOINTSX]
moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U
moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U
codeCaveSize = 0x10

View File

@ -2,7 +2,7 @@
titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = "Friends Points X"
path = "Xenoblade Chronicles X/Mods/Experience/Friends Points"
description = Set the Friends points gained in battle (flat amount).
description = More Friends points gained when activating a Soul Voice Link during battle.
version = 3
[Preset]

View File

@ -1,19 +1,175 @@
[XCX_EXPX]
moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U
codeCaveSize = 0x14
codeCaveSize = 0x84
0x00000000 = .byte $mod
_mod = 0x00000000
_exp = 0x00000004
0x00000004 = lis r30, _mod@ha
0x00000008 = lbz r30, _mod@l(r30)
0x0000000C = mullw r30, r3, r30
0x00000010 = blr
; ----------------------------------------------------------------------------
; WHO : cfs::CfCompoCtrlEnemy::execRequestCommon
; WHAT : Multiply the experience points given in battles
0x025624E4 = bla _exp
_expBattle = 0x00000004
0x00000004 = lis r30, _mod@ha
0x00000008 = lbz r30, _mod@l(r30)
0x0000000C = lwz r3, 0x3184(r28)
0x00000010 = mullw r3, r3, r30
0x00000014 = stw r3, 0x3184(r28)
0x00000018 = mr r3, r28
0x0000001C = blr
0x025624D4 = bla _expBattle
; ----------------------------------------------------------------------------
; WHO : addTreasure__Q2_3cfs10CfTBoxUtilSFUib
; WHAT : Multiply the experience points given by treasures or exploration
_expTreasure = 0x00000020
0x00000020 = lis r3, _mod@ha
0x00000024 = lbz r3, _mod@l(r3)
0x00000028 = lhz r31, 0x1C(r1)
0x0000002C = mullw r31, r31, r3
0x00000030 = blr
0x022D8E64 = bla _expTreasure
; ----------------------------------------------------------------------------
; WHO : addReward__Q2_3cfs11CfQuestUtilSFUiQ2_3cfs17CfQuestRewardType
; WHAT : Multiply the experience points given by quests ?
_expQuest = 0x00000034
0x00000034 = lis r4, _mod@ha
0x00000038 = lbz r4, _mod@l(r4)
0x0000003C = mullw r3, r3, r4
0x00000040 = stw r3, 0x60(r1)
0x00000044 = blr
0x0229560C = bla _expQuest
; ----------------------------------------------------------------------------
; WHO : menu::MenuMultiQuestInfoWindow::displayInfo((menu::MenuObject *,bool))
; WHAT :
_dispBefore = 0x00000048
0x00000048 = lwz r23, 0x88(r1)
0x0000004C = lis r24, _mod@ha
0x00000050 = lbz r24, _mod@l(r24)
0x00000054 = mullw r23, r23, r24
0x00000058 = blr
0x02B94700 = bla _dispBefore
; ----------------------------------------------------------------------------
; WHO : menu::MenuMultiQuestResult::setup((void))
; WHAT :
_dispAfter = 0x0000005C
0x0000005C = lis r5, _mod@ha
0x00000060 = lbz r5, _mod@l(r5)
0x00000064 = mullw r3, r3, r5
0x00000068 = stw r3, 0x78(r1)
0x0000006C = blr
0x02B9FDD4 = bla _dispAfter
; ----------------------------------------------------------------------------
; WHO : addReward__Q2_3cfs11CfSquadUtilSFUiT1
; WHAT : Multiply the experience points given by Squad missions
_expSquadValue = 0x00000070
0x00000070 = lis r4, _mod@ha
0x00000074 = lbz r4, _mod@l(r4)
0x00000078 = mullw r3, r3, r4
0x0000007C = stw r3, 0x10(r1)
0x00000080 = blr
0x023CC6D4 = bla _expSquadValue
[XCX_EXPX_1U] ############################################################################
moduleMatches = 0xAB97DE6B ; 1.0.1U
codeCaveSize = 0x90
0x00000000 = .byte $mod
_mod = 0x00000000
; ----------------------------------------------------------------------------
; WHO : cfs::CfCompoCtrlEnemy::execRequestCommon
; WHAT : Multiply the experience points given in battles
_expBattle = 0x00000004
0x00000004 = lis r30, _mod@ha
0x00000008 = lbz r30, _mod@l(r30)
0x0000000C = lwz r3, 0x3184(r28)
0x00000010 = mullw r3, r3, r30
0x00000014 = stw r3, 0x3184(r28)
0x00000018 = mr r3, r28
0x0000001C = blr
0x02562464 = bla _expBattle
; ----------------------------------------------------------------------------
; WHO : addTreasure__Q2_3cfs10CfTBoxUtilSFUib
; WHAT : Multiply the experience points given by treasures or exploration
_expTreasure = 0x00000020
0x00000020 = lis r3, _mod@ha
0x00000024 = lbz r3, _mod@l(r3)
0x00000028 = lhz r31, 0x1C(r1)
0x0000002C = mullw r31, r31, r3
0x00000030 = blr
0x022D8DF4 = bla _expTreasure
; ----------------------------------------------------------------------------
; WHO : addReward__Q2_3cfs11CfQuestUtilSFUiQ2_3cfs17CfQuestRewardType
; WHAT : Multiply the experience points given by quests ?
_expQuest = 0x00000034
0x00000034 = lis r4, _mod@ha
0x00000038 = lbz r4, _mod@l(r4)
0x0000003C = mullw r3, r3, r4
0x00000040 = stw r3, 0x60(r1)
0x00000044 = blr
0x0229559C = bla _expQuest
; ----------------------------------------------------------------------------
; WHO : menu::MenuMultiQuestInfoWindow::displayInfo((menu::MenuObject *,bool))
; WHAT :
_dispBefore = 0x00000048
0x00000048 = lwz r23, 0x88(r1)
0x0000004C = lis r24, _mod@ha
0x00000050 = lbz r24, _mod@l(r24)
0x00000054 = mullw r23, r23, r24
0x00000058 = blr
0x02B94674 = bla _dispBefore
; ----------------------------------------------------------------------------
; WHO : menu::MenuMultiQuestResult::setup((void))
; WHAT :
_dispAfter = 0x0000005C
0x0000005C = lis r5, _mod@ha
0x00000060 = lbz r5, _mod@l(r5)
0x00000064 = mullw r3, r3, r5
0x00000068 = stw r3, 0x78(r1)
0x0000006C = blr
0x02B9FCD4 = bla _dispAfter
; ----------------------------------------------------------------------------
; WHO : addReward__Q2_3cfs11CfSquadUtilSFUiT1
; WHAT : Multiply the experience points given by Squad missions
_expSquadValue = 0x00000070
0x00000070 = lis r4, _mod@ha
0x00000074 = lbz r4, _mod@l(r4)
0x00000078 = mullw r3, r3, r4
0x0000007C = stw r3, 0x10(r1)
0x00000080 = blr
0x023CC664 = bla _expSquadValue

View File

@ -1,8 +1,8 @@
[Definition]
titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = "Inner Exp Points X"
name = "Inner Exp Points"
path = "Xenoblade Chronicles X/Mods/Experience/Inner Exp Points"
description = Change the amount of Inner Exp points gained in battle.
description = Change the amount of Inner Exp points gained in battle, missions, quests and exploration. [1.0.1E/1.0.2U]
version = 3
[Preset]
@ -20,3 +20,7 @@ $mod = 10
[Preset]
name = "x50"
$mod = 50
[Preset]
name = "x100"
$mod = 100

View File

@ -22,3 +22,28 @@ _miranium = 0x00000004
0x00000020 = blr
0x027D5250 = bla _miranium
[XCX_FN_MIR_FREQ_1U] ##################################################################
moduleMatches = 0xAB97DE6B ; 1.0.1U
codeCaveSize = 0x24
0x00000000 = .byte $mod
_mod = 0x00000000
; ----------------------------------------------------------------------------
; WHAT : changeTime__Q2_4fnet9CFnetTaskFUiT1
; WHY : Affect the frequency of the FrontierNav income for the Miranium
; Frequency unit is 1 minute (so by default income is every 30 minutes)
_miranium = 0x00000004
0x00000004 = lis r8, _mod@ha
0x00000008 = lbz r8, _mod@l(r8)
0x0000000C = addi r10, r3, 1
0x00000010 = divwu r0, r10, r8
0x00000014 = mullw r0, r0, r8
0x00000018 = subf r3, r0, r10
0x0000001C = cmpwi r3, 0
0x00000020 = blr
0x027D51F0 = bla _miranium

View File

@ -44,3 +44,50 @@ _ignoreMax = 0x00000038
0x00000044 = beqlr
0x00000048 = mr r31, r0
0x0000004C = blr
[XCX_FN_MIR_QTY_1U] ######################################################################
moduleMatches = 0xAB97DE6B ; 1.0.1U
codeCaveSize = 0x50
0x00000000 = .short $mod
_mod = 0x00000000
_miranium = 0x00000004
0x00000004 = lwzx r31, r3, r28
0x00000008 = lis r4, _mod@ha
0x0000000C = lhz r4, _mod@l(r4)
0x00000010 = mullw r31, r31, r4
0x00000014 = blr
; ----------------------------------------------------------------------------
; WHO : changeTime__Q2_4fnet9CFnetTaskFUiT1
; WHAT : Affect the quantity of the NavFrontier income for the Miranium
0x027D520C = bla _miranium
; ----------------------------------------------------------------------------
; WHO : fnet::CFnetData::toStorage(const(unsigned int))
; WHAT : Ignore max quantity
0x00000018 = .byte $uncap
_uncap = 0x00000018
0x027D0F98 = bla _getMiranium
_getMiranium = 0x0000001C
0x0000001C = lis r12, _uncap@ha
0x00000020 = lbz r12, _uncap@l(r12)
0x00000024 = cmpwi r12, 0
0x00000028 = addis r12, r30, 1
0x0000002C = beqlr
0x00000030 = li r3, 0
0x00000034 = blr
0x027D0FD0 = bla _ignoreMax
_ignoreMax = 0x00000038
0x00000038 = lis r12, _uncap@ha
0x0000003C = lbz r12, _uncap@l(r12)
0x00000040 = cmpwi r12, 1
0x00000044 = beqlr
0x00000048 = mr r31, r0
0x0000004C = blr

View File

@ -16,4 +16,25 @@ _money = 0x00000004
; WHY : Affect the frequency of the NavFrontier income for the money
; Frequency unit is 1 minute (so by default income is every 15 minutes)
0x027D554C = bla _money
0x027D554C = bla _money
[XCX_FN_MNY_FREQ_1U] ######################################################################
moduleMatches = 0xAB97DE6B ; 1.0.1U
moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U
codeCaveSize = 0x10
0x00000000 = .byte $mod
_mod = 0x00000000
_money = 0x00000004
0x00000004 = lis r12, _mod@ha
0x00000008 = lbz r12, _mod@l(r12)
0x0000000C = blr
; ----------------------------------------------------------------------------
; WHAT : changeTime__Q2_4fnet9CFnetTaskFUiT1
; WHY : Affect the frequency of the NavFrontier income for the money
; Frequency unit is 1 minute (so by default income is every 15 minutes)
0x027D54EC = bla _money

View File

@ -13,3 +13,19 @@ _money = 0x00000004
0x00000010 = blr
0x027D5588 = bla _money
[XCX_FN_MNY_QTY_1U] ######################################################################
moduleMatches = 0xAB97DE6B ; 1.0.1U
codeCaveSize = 0x14
0x00000000 = .byte $mod
_mod = 0x00000000
_money = 0x00000004
0x00000004 = lis r31, _mod@ha
0x00000008 = lbz r31, _mod@l(r31)
0x0000000C = mullw. r31, r31, r3
0x00000010 = blr
0x027D5528 = bla _money

View File

@ -17,3 +17,23 @@ _res = 0x00000004
; Frequency unit is 1 minute (so by default income is every 5 minutes)
0x027D534C = bla _res
[XCX_FN_RES_FREQ_1U] ######################################################################
moduleMatches = 0xAB97DE6B ; 1.0.1U
codeCaveSize = 0x10
0x00000000 = .byte $mod
_mod = 0x00000000
_res = 0x00000004
0x00000004 = lis r12, _mod@ha
0x00000008 = lbz r12, _mod@l(r12)
0x0000000C = blr
; ----------------------------------------------------------------------------
; WHAT : changeTime__Q2_4fnet9CFnetTaskFUiT1
; WHY : Affect the frequency of the NavFrontier income for the resources
; Frequency unit is 1 minute (so by default income is every 5 minutes)
0x027D52EC = bla _res

View File

@ -18,4 +18,26 @@ _multCount = 0x00000004
0x00000014 = stb r0, 6(r31)
0x00000018 = blr
0x027D5428 = bla _multCount
0x027D5428 = bla _multCount
[XCX_FN_RES_QTY_1U] ######################################################################
moduleMatches = 0xAB97DE6B ; 1.0.1U
codeCaveSize = 0x1C
0x00000000 = .byte $mod
_mod = 0x00000000
; ----------------------------------------------------------------------------
; WHAT : changeTime__Q2_4fnet9CFnetTaskFUiT1
; WHY :
_multCount = 0x00000004
0x00000004 = lbz r0, 6(r31)
0x00000008 = lis r3, _mod@ha
0x0000000C = lbz r3, _mod@l(r3)
0x00000010 = mullw r0, r0, r3
0x00000014 = stb r0, 6(r31)
0x00000018 = blr
0x027D53C8 = bla _multCount

View File

@ -1,5 +1,5 @@
[XCX_CAMERA_DIST]
moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U
moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U
codeCaveSize = 0x4

View File

@ -58,3 +58,49 @@ _info_obtained = 0x00000060
; WHY : display bubbles even in skell
0x0238745C = li r3, 0
[XCX_DISTMOBINFO_1U] ###########################################################
moduleMatches = 0xAB97DE6B ; 1.0.1U
codeCaveSize = 0x100
_init_react = 0x00000000
0x00000000 = lis r3, 0x4300
0x00000004 = addi r3, r3, 0x0000
0x00000008 = mr r5, r27
0x0000000C = blr
0x023871F0 = bla _init_react
_info_default = 0x00000020
0x00000020 = cmpwi r6, 2
0x00000024 = beq .+0x20
0x00000028 = lhz r8, 0x20(r29)
0x0000002C = cmpwi r8, 0x4300
0x00000030 = blt .+0x14
0x00000034 = lis r8, 0x4120
0x00000038 = addi r8, r8, 0x0000
0x0000003C = stw r8, 0x20(r29)
0x00000040 = li r6, 0
0x00000044 = stw r6, 0x40(r29)
0x00000048 = blr
_info_obtained = 0x00000060
0x00000060 = lhz r8, 0x20(r29)
0x00000064 = cmpwi r8, 0x4300
0x00000068 = blt .+0x14
0x0000006C = lis r8, 0x4120
0x00000070 = addi r8, r8, 0x0000
0x00000074 = stw r8, 0x20(r29)
0x00000078 = li r10, 0
0x0000007C = stw r10, 0x40(r29)
0x00000080 = blr
0x02386E94 = bla _info_obtained
0x02386EC4 = bla _info_default
0x0238EE50 = nop ; Disable the call of cfs::CfMobInfo::update function (may have side effects)
0x0238EEC0 = nop ; Disable altitude check
0x023873EC = li r3, 0

View File

@ -1,4 +1,4 @@
[XCX_EMANUAL_EU]
[XCX_EMANUAL_1E]
moduleMatches = 0xF882D5CF ; 1.0.1E
; ----------------------------------------------------------------------------
@ -15,7 +15,7 @@ _isFinishTM = 0x02C7A4CC # MenuTask::isFinishTimeManipulate((void))
0x02B83C98 = bl _isFinishTM
#################################################################################
[XCX_EMANUAL_US]
[XCX_EMANUAL_2U]
moduleMatches = 0x30B6E091 ; 1.0.2U
_openTimeManipulate = 0x02C7A290
@ -26,3 +26,16 @@ _isFinishTM = 0x02C7A46C # MenuTask::isFinishTimeManipulate((void))
0x02B83C6C = bl _isFinishTM
0x02B83C88 = bl _isFinishTM
#################################################################################
[XCX_EMANUAL_1U]
moduleMatches = 0xAB97DE6B ; 1.0.1U
_openTimeManipulate = 0x02C7A118
_isFinishTM = 0x02C7A2F4 # MenuTask::isFinishTimeManipulate((void))
0x02B83C28 = bl _openTimeManipulate
0x02B83C40 = bl _openTimeManipulate
0x02B83BF0 = bl _isFinishTM
0x02B83C0C = bl _isFinishTM

View File

@ -1,5 +1,5 @@
[XCX_LOOT_EQUIPMENT_BESTQUALITY]
moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U
moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U
; ----------------------------------------------------------------------------
; WHO : __CPR98__calcItemTableID__Q2_8ItemDrop16CItemDropManagerFUcRCQ3_J20JJ29J11SCreateInfoRUs
@ -14,6 +14,5 @@ moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U
; WHO : ItemDrop::CItemDropManager::calcAfxSltNum((unsigned short))
; WHAT : Control of the loot quality (always orange/yellow)
0x021AB380 = li r28, 100
0x021AB394 = li r29, 100
0x021AB3AC = li r30, 100
0x021AEE7C = li r3, 3
0x021AF280 = li r3, 3

View File

@ -1,5 +1,5 @@
[XCX_LOOT_EQUIPMENT_COUNT]
moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U
moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U
codeCaveSize = 0x30

View File

@ -2,7 +2,7 @@
titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = "Equipment - Force Count"
path = "Xenoblade Chronicles X/Mods/Loot/Equipment - Force Count"
description = Force the count of equipment looted (IF and only IF you get a Silver or Gold treasure of course).
description = Force the count of equipment looted in Silver or Gold treasures.
version = 3
[Preset]

View File

@ -1,7 +1,7 @@
[XCX_LOOT_EQUIPMENT_TYPE]
moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U
moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U
codeCaveSize = 0x1C
codeCaveSize = 0x7C
; ----------------------------------------------------------------------------
; WHO : __CPR98__calcItemTableID__Q2_8ItemDrop16CItemDropManagerFUcRCQ3_J20JJ29J11SCreateInfoRUs
@ -11,19 +11,59 @@ codeCaveSize = 0x1C
; 6 = Skell weapons
; 8 = Skell armors
0x00000000 = .byte $mod
_ratio = 0x00000000
0x00000000 = .byte $type
_type = 0x00000000
_setEquipR4 = 0x00000004
0x00000004 = lis r4, _ratio@ha
0x00000008 = lbz r4, _ratio@l(r4)
0x00000004 = lis r4, _type@ha
0x00000008 = lbz r4, _type@l(r4)
0x0000000C = blr
0x021AEB88 = bla _setEquipR4
_setEquipR27 = 0x00000010
0x00000010 = lis r27, _ratio@ha
0x00000014 = lbz r27, _ratio@l(r27)
0x00000010 = lis r27, _type@ha
0x00000014 = lbz r27, _type@l(r27)
0x00000018 = blr
0x021AEB5C = bla _setEquipR27
0x0000001C = .byte $sub
_sub = 0x0000001C
; Ground Weapons
_notRand = 0x00000020
0x00000020 = clrlwi r3, r3, 24
0x00000024 = lis r4, _sub@ha
0x00000028 = lbz r4, _sub@l(r4)
0x0000002C = cmpwi r4, 0
0x00000030 = beqlr
0x00000034 = li r3, 0x64
0x00000038 = blr
0x021AC27C = bla _notRand
_setSubGW = 0x0000003C
0x0000003C = clrlwi r30, r3, 24
0x00000040 = lis r3, _sub@ha
0x00000044 = lbz r3, _sub@l(r3)
0x00000048 = cmpwi r3, 0
0x0000004C = beqlr
0x00000050 = subi r3, r3, 1
0x00000054 = clrlwi r30, r3, 24
0x00000058 = blr
_setSubGA = 0x0000005C
0x0000005C = clrlwi r4, r3, 24
0x00000060 = lis r3, _sub@ha
0x00000064 = lbz r3, _sub@l(r3)
0x00000068 = cmpwi r3, 0
0x0000006C = beqlr
0x00000070 = subi r3, r3, 1
0x00000074 = clrlwi r4, r3, 24
0x00000078 = blr
0x021ADD24 = bla _setSubGA
0x021AE41C = bla _setSubGA

View File

@ -5,18 +5,135 @@ path = "Xenoblade Chronicles X/Mods/Loot/Equipment - Force Type"
description = Force the type of equipment looted.
version = 3
[Preset]
name = "Ground weapons"
$mod = 2
[Preset] ###########################################
name = "Ground weapons - ANY ____________________________________________"
$type = 2
$sub = 0
[Preset]
name = "Ground armors"
$mod = 4
name = "Ground weapons - Photon Sabers"
$type = 2
$sub = 1
[Preset]
name = "Skell weapons"
$mod = 6
name = "Ground weapons - Assault Rifles"
$type = 2
$sub = 2
[Preset]
name = "Skell armors"
$mod = 8
name = "Ground weapons - Sniper Rifles"
$type = 2
$sub = 3
[Preset]
name = "Ground weapons - Dual Guns"
$type = 2
$sub = 4
[Preset]
name = "Ground weapons - Gatling Guns"
$type = 2
$sub = 5
[Preset]
name = "Ground weapons - Rayguns"
$type = 2
$sub = 6
[Preset]
name = "Ground weapons - Psycho Launchers"
$type = 2
$sub = 7
[Preset]
name = "Ground weapons - Longswords"
$type = 2
$sub = 8
[Preset]
name = "Ground weapons - Javelins"
$type = 2
$sub = 9
[Preset]
name = "Ground weapons - Dual Swords"
$type = 2
$sub = 10
[Preset]
name = "Ground weapons - Shields"
$type = 2
$sub = 11
[Preset]
name = "Ground weapons - Knives"
$type = 2
$sub = 12
[Preset] ###########################################
name = "Ground armors - ANY ____________________________________________"
$type = 4
$sub = 0
[Preset]
name = "Ground armors - Head"
$type = 4
$sub = 1
[Preset]
name = "Ground armors - Torso"
$type = 4
$sub = 2
[Preset]
name = "Ground armors - Right arm"
$type = 4
$sub = 3
[Preset]
name = "Ground armors - Left arm"
$type = 4
$sub = 4
[Preset]
name = "Ground armors - Leg"
$type = 4
$sub = 5
[Preset] ###########################################
name = "Skell weapons - ANY ____________________________________________"
$type = 6
$sub = 0
[Preset] ###########################################
name = "Skell armors - ANY ____________________________________________"
$type = 8
$sub = 0
[Preset]
name = "Skell armors - Head"
$type = 8
$sub = 1
[Preset]
name = "Skell armors - Torso"
$type = 8
$sub = 2
[Preset]
name = "Skell armors - Right arm"
$type = 8
$sub = 3
[Preset]
name = "Skell armors - Left arm"
$type = 8
$sub = 4
[Preset]
name = "Skell armors - Leg"
$type = 8
$sub = 5

View File

@ -1,5 +1,5 @@
[XCX_LOOT_EQUIPMENT_BROKEN]
moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U
moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U
; ----------------------------------------------------------------------------
; WHO : __CPR129__calcItem__Q2_8ItemDrop16CItemDropManagerFRQ3_J13JJ22J9SDropInfoUcRCQ3_J13JJ22J11SCreateInfo

View File

@ -1,5 +1,5 @@
[XCX_LOOT_MATERIALS]
moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U
moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U
codeCaveSize = 0x30

View File

@ -1,5 +1,5 @@
[XCX_LOOT_FORCECHEST]
moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U
moduleMatches = 0xF882D5CF, 0x30B6E091, 0xAB97DE6B ; 1.0.1E, 1.0.2U, 1.0.1U
codeCaveSize = 0x30

View File

@ -0,0 +1,9 @@
About presets with [FORCED]:
It's a bit tough to explain, but here's how the game selects the chest quality:
1) Calculate luck for gold chest, if success exit with gold quality (1), else process next step
2) Calculate luck for silver chest, if success exit with silver quality (2), else process next step
3) Calculate luck for bronze chest, if success exit with bronze quality (3), else process next step
4) No chest at all, exit with no chest (0)
--> By default, the mod only changes this last step. So even if you put value 1 (gold chest), you'll still get a silver chest if the game succeeded the step 2. That means quests which forces a quest quality will not be broken.
But presets with [FORCED] will always give you the wanted treasure quality. This is very usefule for loot grinding, but can break quests whose need a different quality.

View File

@ -2,7 +2,7 @@
titleIds = 0005000010116100,00050000101C4C00,00050000101C4D00
name = "Treasure Quality"
path = "Xenoblade Chronicles X/Mods/Loot/Treasure Quality"
description = Select the preferred treasure quality you want to loot (see patches.txt for explanation). Presets with [FORCED] will always give you the wanted treasure but this will break quests whose need a different quality (but is very useful for loot grinding).
description = Select the preferred treasure quality you want to loot (see readme.txt for explanation).
version = 3
[Preset]

View File

@ -6,3 +6,8 @@ moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U
; WHAT : Never process this function so that Overdrive music is never played
0x022AB1F4 = blr
[XCX_BGMNOOVER_1U] ######################################################################
moduleMatches = 0xAB97DE6B ; 1.0.1U
0x022AB184 = blr

View File

@ -6,4 +6,10 @@ moduleMatches = 0xF882D5CF, 0x30B6E091 ; 1.0.1E, 1.0.2U
; WHAT : Never call function cfs::CfSoundManager::fbgmChangeNameDoll((bool)) so that Skell Flight music is never played
_skip = 0x22A4DD4
0x022A4DC0 = b _skip
0x022A4DC0 = b _skip
[XCX_BGMNOFLIGHT_1U] ######################################################################
moduleMatches = 0xAB97DE6B ; 1.0.1U
_skip = 0x022A4D64
0x022A4D50 = b _skip

View File

@ -25,3 +25,31 @@ _setHorizVelocity = 0x00000010
# chr::CIL_BaseJump::decideLandingType((void))
0x024714E0 = li r3, 5
[XCX_MOONJUMP_1U] ######################################################################
moduleMatches = 0xAB97DE6B ; 1.0.1U
codeCaveSize = 0x28
0x00000020 = .float $vert ; vertical velocity (default is 1.00, speedrun is 1.05)
0x00000024 = .float $horz ; horizontal velocity (default is 1.00, speedrun is 2.0)
_velocity = 0x00000020
_hvelocity = 0x00000024
_setVelocity = 0x00000000
0x00000000 = lis r3, _velocity@ha
0x00000004 = lfs f30, _velocity@l(r3)
0x00000008 = fdivs f30, f1, f30
0x0000000C = blr
0x0264A690 = bla _setVelocity
_setHorizVelocity = 0x00000010
0x00000010 = lis r12, _hvelocity@ha
0x00000014 = lfs f31, _hvelocity@l(r12)
0x00000018 = fdivs f31, f1, f31
0x0000001C = blr
0x0264C07C = bla _setHorizVelocity
# chr::CIL_BaseJump::decideLandingType((void))
0x02471470 = li r3, 5

View File

@ -16,9 +16,20 @@ _setSpeed = 0x00000004
# chr::CInnerLabelState::applyFieldMoveWeight((float))
0x02643330 = bla _setSpeed ; SetVariableFloat(0xBD,float)
;0x026431C8 = bla _setSpeed
;0x026431D8 = bla _setSpeed
;0x026431E8 = bla _setSpeed
;0x026431F8 = bla _setSpeed
;0x02643208 = bla _setSpeed
;0x02643218 = bla _setSpeed
[XCX_MOVESPEED_1U] ######################################################################
moduleMatches = 0xAB97DE6B ; 1.0.1U
codeCaveSize = 0x18
0x00000000 = .float $mod ; dash speed (smallest means fastest, default is 1.0)
_speed = 0x00000000
_setSpeed = 0x00000004
0x00000004 = lis r3, _speed@ha
0x00000008 = lfs f13, _speed@l(r3)
0x0000000C = fdivs f1, f1, f13
0x00000010 = lwz r3, 0(r31)
0x00000014 = blr
# chr::CInnerLabelState::applyFieldMoveWeight((float))
0x026432C0 = bla _setSpeed ; SetVariableFloat(0xBD,float)

View File

@ -16,4 +16,24 @@ _forceWeather = 0x00000004
0x0000000C = blr
; cfs::CfWtrManager::update((float))
0x022B587C = nop
0x022B587C = nop
[XCX_CHANGEWEATHER_1U] ######################################################################
moduleMatches = 0xAB97DE6B ; 1.0.1U
codeCaveSize = 0x10
0x00000000 = .byte $wtr
_weather = 0x00000000
; cfs::CfWtrManager::setWeatherID((unsigned int, int))
0x0229F08C = bla _forceWeather
_forceWeather = 0x00000004
0x00000004 = lis r28, _weather@ha
0x00000008 = lbz r28, _weather@l(r28)
0x0000000C = blr
; cfs::CfWtrManager::update((float))
0x022B580C = nop