Hacking XCXGecko: Xenoblade Chronicles X trainer GUI using pyGecko

  • Thread starter Thread starter MiMiCAX
  • Start date Start date
  • Views Views 483,352
  • Replies Replies 1,010
  • Likes Likes 36
One feature request if it is possible to fulfill. An ability to set value for all of the materials, etc in one go. Quite a hassle to go thru every slot to set them to 99.
Although it's very easy to code up, I previously decided not to add this feature to the GUI, since mass-changing item quantities may lead to unexpected results (e.g. what happens if you have fewer total Mining Probe I than those already deployed; what happens if you have 2+ of an Important Item when you give one to an NPC, ...)

Nevertheless, I've written a Python script that implements this feature:
  • pull XCXGecko from github
  • go into the script folder
  • modify some settings in the script (e.g. your Wii U IP, item slot addresses, new amount, ...)
  • run 'python mass_change_item_amount.py'
Use at your own risk :D
 
Oh and while we are at the spoiler territory, this would be nice too and a bit more feasible:
Elma's alternative look from the start of a new game.

Found it. Will test on new save later.

EDIT: confirm working on both v1.0.1E and v1.0.1J (use addr 0x1C391260). Unfortunately it does not persist across save + load :(

Code:
Elma Appearance: Normal Form
1C392260 000B0028

Elma Appearance: True Form (SPOILERS)
1C392260 000C002A

# The 2nd byte encodes the skin texture ID, while the 4th byte encodes the char icon + hair texture ID

Also, ever wondered what the child of Elma and Phog would look like? 0x000B0026

cfSpPy8.jpg
 
Last edited by MiMiCAX,
Although it's very easy to code up, I previously decided not to add this feature to the GUI, since mass-changing item quantities may lead to unexpected results (e.g. what happens if you have fewer total Mining Probe I than those already deployed; what happens if you have 2+ of an Important Item when you give one to an NPC, ...)

Nevertheless, I've written a Python script that implements this feature:
  • pull XCXGecko from github
  • go into the script folder
  • modify some settings in the script (e.g. your Wii U IP, item slot addresses, new amount, ...)
  • run 'python mass_change_item_amount.py'
Use at your own risk :D

Well, you could have just not added the option for the probes and important items sections. ;)

But thanks, I'll definitely use that.
 
Very nice work MiMiCAX!

The Gear format on equipped stuff is as follows:
XXXX YYYL YYYL YYYL ZZZZ ZZZZ ZZZZ
X=the id of the weapon, Skell, armor. A fun Skell id is 0x13, for party members, sort of a invincible Ares at level 10 with hp, armor, eva and fuel at 60k-65535. it cannot normally equip weapons or armor though.
Y/Z=the skill id
L=upgrade count, max per skill would be 15(edit, couldn't let the 16 stand after all), making the max total of any gear 45, but the ramjet has 99 possible upgrades...

A word of caution regarding Skell Frame ids, they love to crash the game.
The good normally inaccessible non-craftable ones are -1 from the level 60 ultimate ones, with an insane amount of filler in between. And even those usually at best just have more fuel or evasion and lack raw stats elsewhere.
You can equip the level 60 armor of ie. the Ares 90 on any frame via script. And since you usually only change skills on them you won't need to remove that anyway, so I'd limit the Armor digits to the level 60 ones.
Also, unequipped(from anything not an Ares) Ares 90 medium armor can be equipped by any medium+ crafted level 60 Skell.
edit:
I should add that you can start flying the moment you get your Skell license with any level 60 Skell,
haven't bothered to find the quest flag to allow getting Skells from the get go.


Any Armor, Weapon or Skell has innate stats based on the ID, which cannot be changed if you want to not mod the game itself.
Me, I eventually want to mod the game to have a proper 1-100(255) Level progression among other things, damn that cap.

Haven't found Fuel yet, but XYZ coordinates in the world, but not editable, seems there is little point to it in that range.

btw, it'd be more sensible to note down the Level 20 skills and their exact effect, so you can ie. easily determine if that boost/drive skill caps(at 100%) if you add more.
The Skell Augment digits follow more or less the same format as the human ones, I did those first since it was less work just running a script on the tons of slots on Skell gear, knowing the approximate spacing.

I've been experimenting with a gui for a gear editor, a grid layout seems the most feasible, ideally with a status explanation for each ID/Skill entry, displaying the final stats.
I'd be omitting the upgrade counter, doubt anyone will want anything but 0 there.
But so far I'm only at the stage where I can read,edit and apply the raw digits, been playing too much to actually get to add the planned features, so...
Also am using Wx for gui.

I had the crazy idea of coding a script which reads in all gear/augments, you name it, and sorts the crap by whatever metric you want,
so you actually have a chance of finding that relevant piece in a timely fashion.
It drove me crazy before I just made my gear from scratch to navigate the damned item lists.
Now I just sell anything I deem worthless and shrink my inventory to the bare minimum.
It still is a lot of work selling the crap which piles up from careless "Take All" clicks...

Another crazy Idea I had was an editable digit list which can be filled ie when you read in your current equip and decide to note down the digits of the stuff not listed.
With a template to fill in the required data quickly by category.
Ideally having the digit lists as a sortable exportable drag and dropable treeview with templates and categories for quick sets, ie Skell driving or walking, etc.


Anyhow, I hacked together a pokemem8 and 16 so poking can be done with less danger of corrupting something.
Parsing a Readmem of that 32 bit aligned original value with the value to be poked parsed in, very slow, but helps tremendously with all the 8 and 16 bit values around.
Didn't get around to publishing any of that since it seemed noone cared ><;

edit: correcting a stupid mistake and adding information.
 
Last edited by Intropy,
  • Like
Reactions: secto15
Very nice work MiMiCAX!

The Gear format on equipped stuff is as follows:
XXXX YYYL YYYL YYYL ZZZZ ZZZZ ZZZZ
X=the id of the weapon, Skell, armor. A fun Skell id is 0x13, for party members, sort of a invincible Ares at level 10 with hp, armor, eva and fuel at 60k-65535. it cannot normally equip weapons or armor though.
Y/Z=the skill id
L=upgrade count, max per skill would be 15(edit, couldn't let the 16 stand after all), making the max total of any gear 45, but the ramjet has 99 possible upgrades...

My investigations revealed each gear slot to have 24 bytes. See here for more details. Also, you can set each skill ID to have max level already, in which case you can simply leave the upgrade count to 0.

A word of caution regarding Skell Frame ids, they love to crash the game.
The good normally inaccessible non-craftable ones are -1 from the level 60 ultimate ones, with an insane amount of filler in between. And even those usually at best just have more fuel or evasion and lack raw stats elsewhere.
You can equip the level 60 armor of ie. the Ares 90 on any frame via script. And since you usually only change skills on them you won't need to remove that anyway, so I'd limit the Armor digits to the level 60 ones.
Also, unequipped(from anything not an Ares) Ares 90 medium armor can be equipped by any medium+ crafted level 60 Skell.
edit:
I should add that you can start flying the moment you get your Skell license with any level 60 Skell,
haven't bothered to find the quest flag to allow getting Skells from the get go.

Any Armor, Weapon or Skell has innate stats based on the ID, which cannot be changed if you want to not mod the game itself.
Me, I eventually want to mod the game to have a proper 1-100(255) Level progression among other things, damn that cap.

btw, it'd be more sensible to note down the Level 20 skills and their exact effect, so you can ie. easily determine if that boost/drive skill caps(at 100%) if you add more.
The Skell Augment digits follow more or less the same format as the human ones, I did those first since it was less work just running a script on the tons of slots on Skell gear, knowing the approximate spacing.

It is indeed annoying to have the game crash back to the title screen when poking weapon/gear/skell IDs incrementally. I gave up on trying to map out gear ID <-> name, and that's the main reason why I'm not currently planning to implement a gear modifier GUI in XCXGecko.

I had the crazy idea of coding a script which reads in all gear/augments, you name it, and sorts the crap by whatever metric you want,
so you actually have a chance of finding that relevant piece in a timely fashion.
It drove me crazy before I just made my gear from scratch to navigate the damned item lists.
Now I just sell anything I deem worthless and shrink my inventory to the bare minimum.
It still is a lot of work selling the crap which piles up from careless "Take All" clicks...

It's pretty easy. I wrote a very similar script for modding item amounts.

Another crazy Idea I had was an editable digit list which can be filled ie when you read in your current equip and decide to note down the digits of the stuff not listed.
With a template to fill in the required data quickly by category.
Ideally having the digit lists as a sortable exportable drag and dropable treeview with templates and categories for quick sets, ie Skell driving or walking, etc.

Great minds think alike :D XCXGecko already has a Add/Edit Item Name feature and an auto-incrementing Item ID scan recording feature, hehe.

The main difficulty here lies in associating a memory range with a specific gear. All items and gears are stored in slots, but the in-game Inventory sorts them by power or alphabetically. Thus there is often a discrepancy between the order of item slots in memory, and items listed in the inventory.

When mapping out items for XCXGecko, I worked around this issue by getting rid of all but 1 item, modify its ID, note down its name, and repeat. Unfortunately like I said above, gear IDs don't seem to all be valid, nor in contiguous values.

Anyhow, I hacked together a pokemem8 and 16 so poking can be done with less danger of corrupting something.
Parsing a Readmem of that 32 bit aligned original value with the value to be poked parsed in, very slow, but helps tremendously with all the 8 and 16 bit values around.
Didn't get around to publishing any of that since it seemed noone cared ><;

edit: correcting a stupid mistake and adding information.
Definitely need to take care when poking non-word-aligned data. You might even need to do some bit shifting and masking, e.g. for item quantities and gear skill IDs.
 
Last edited by MiMiCAX,
Uhm MiMiCAX, not to be fussy or anything, but it'd be nice to be credited for sharing the info about the significance of the max reward tickets value being there,
considering I had to repeat myself and all.
Anyhow, good job finding its pointer, I stopped caring for pointers once I got search32 to work.


On that note I'm really grateful for the compiled exploit html with the updated server, in case the coder/uploader of that reads this.
Saved me loads of headaches compiling my own, even though there is lots I would want to add and edit on that, most importantly the gecko server really needs some extra socket to allow it closing the default socket(s) if it hangs.


Yup the actual sorting is trivial, not corrupting/crashing anything while doing so might not be. I found the game to crash/freeze for awkward reasons.
I do have a working editor for equipped stuff, but as mentioned it is barebones and lacks most planned features and is in wx, not qt.
I had no problems mapping out most equip of any kind I cared for, crashes were only abundant with Skell Frame IDs on the fringes of its range, which is why I pointed out my findings.
It is likely that the crashes you experienced are due to the complexity of the inventory range. Who knows if a split second delay in poking something throws the game off.
I was never really fond of incremental pokes to map out stuff, that just takes waay too long. Especially with how almost every item has 20 levels or whatever in XBX.
Depending on which menu I used to verify, the crashes were either there or not, notwithstanding bad surprises testing out an actually non-existing Frame in the wild.
Equipped items are much more straightforward than hacking the inventory range, which I found later on too, but glossed over as I had perfected gear for weeks at that point anyway.

My target in making a GUI were Tablets and Phones, saving myself from sitting at 2 computer screens just to do some quick edits, but I may never get around to complete it, after finishing most of what i set out to do,
perfect Skell, skills and gear, etc, but we'll see. XBX still has some unexplored hacks to be done.
Putting this here just in case I drop off the forums again, am going to play Trails of Cold Steel.

Please keep up the good work MiMiCAX, I expect to be pleasantly surprised by the time I get back, which may be sooner than you'd think.
 
lol can any one share a hacked save file with lots of money and or monster parts or just a save file with chapter 12 done? cant use this hack with loadiine yet and i just deleted my save file by mistake after completing chapter 12...dont want to restart from zero if possible.
 
Hey, new here. Completely new. How does one hack the Wii U in the first place? Like, first steps here. What do I need to download, install, and what guides to read first? I have version 5.5.0 U for the Wii U
 
Last edited by Sparky076,
Hey, new here. Completely new. How does one hack the Wii U in the first place? Like, first steps here. What do I need to download, install, and what guides to read first? I have version 5.5.0 U for the Wii U
you cant as your on 5.5.0 everything public is 5.3.2 or lower, there is supposed to be a exploit that will work on 5.5.0 released this month, go read the definitive guide thread to read up on how to block updates etc if a update comes out that blocks the exploit before its released your system will probably auto update and you will be back to square none
 
  • Like
Reactions: Gadorach
you cant as your on 5.5.0 everything public is 5.3.2 or lower, there is supposed to be a exploit that will work on 5.5.0 released this month, go read the definitive guide thread to read up on how to block updates etc if a update comes out that blocks the exploit before its released your system will probably auto update and you will be back to square none
Alright. It's done. I'll check back frequently now. Thanks.
 
  • Like
Reactions: gamesquest1
Did you find hidden(unused) weapons, armors?:rolleyes:
Naw, I tried poking different values for gear ID, but I found out that not all values were legal, and illegal ones crashed the game back to the title screen.

Alright. It's done. I'll check back frequently now. Thanks.
Please reply to the appropriate threads for generic exploit matters, and keep this one about XCX.
 
  • Like
Reactions: Yanda
so im trying to get this to run with the jap version of the game, what do i have to change in the ini file? and can this be used from the start of the game? i.e when you get out the of the pod etc
 
so im trying to get this to run with the jap version of the game, what do i have to change in the ini file? and can this be used from the start of the game? i.e when you get out the of the pod etc
Change code_db to point to xcx_v1.0.1j.txt (note the j; also it's your choice whether you want the local version, or the github version; they should be the same right now)

And yes, as long as you are loaded into the actual game (i.e. not title screen and not character creation), then XCXGecko should work.
 
  • Like
Reactions: luan43
Question. Is there a way to change the attributes to your weapons/armors? Like Electric Attack Plus XV, make it Nullify Ether Reflect XV.
 
Question. Is there a way to change the attributes to your weapons/armors? Like Electric Attack Plus XV, make it Nullify Ether Reflect XV.
Yes, it's possible and straight forward, but requires understanding how to use gecko dot net. See below:
I've partially decoded how gear is stored in memory. Here are some findings for XCX v1.0.1E/U:

Code:
Addr range for Ranged Weapons: 1C3AC6B8 to 1C3B2448 (24 bytes per)
Addr range for Melee Weapons: 1C3B2460 to 1C3B81F0 (24 bytes per)
Addr range for Armor: 1C3A6910 to 1C3AC6A0 (24 bytes per)
Addr range for Skell Weapons: 1C3A0B68 to 1C3A68F8 (24 bytes per)
Addr range for Skell Armor: 1C39ADC0 to 1C3A0B50 (24 bytes per)

Format: wwwwxxxx yyyyyyyy zzzzpppq aaaabbbb cccc1111 22223333
w: 2-byte unknown; includes gear ID (with embedded maker + specs)
x: 2-byte unknown; ranged wep=0xC008/0xC009, melee wep=0xE008/0xE009
y: 4-byte unknown; possibly indicates item purchase / found locations; only seen \0 in last 6 bits
z: 2-byte unknown; only seen 0x0000
p: 10-bit placement index (incl upper 2 bits of 3rd byte)
q: 6-bit unknown; only seen 0b000000
a-c: gear/skell skill ID 1-3: subformat yyyi
  y: 12-bit (packed); skill type + base lvl (if applicable); see codes/gear_id_v1.0.1e.txt
  i: 4-bit skill level incr (+0 to +15)
1-3: augment slot 1-3: 0xFFFF = no slot, 0x0000 = empty slot, other values = possibly augment slot ID

Code:
Addr range for Augments: 1C3B8208 to 1C3BB0D0 (12 bytes per)
Format: unknown

Note that randomly poking 'w' or 'x' often leads to XCX crashing back to title screen.

Using this data, I can modify the skills on a particular gear slot, and add/remove augment slots. You will need to find which slot your target gear is located; I suggest using tcpGecko to scan for changes while you equip/swap your target gear around. Once found, here are some useful skill mods (poke into the latter 3 words):

Code:
Potential Up XX, Potential Boost XX, Treasure Sensor XX, 3 empty slots
0A001400 DE000000 00000000

Melee Attack Up XX, Melee Accuracy Up XX, Melee Attack Boost XX, 3 empty slots
07801180 03C00000 00000000

I don't plan to update the GUI currently, although as always, I welcome git pull requests :D
 
Yes, it's possible and straight forward, but requires understanding how to use gecko dot net. See below:
What is a git pull request? Very new to all of this. Actually waiting on a hack for 5.5.0 to come out this month, as I just found out about this days ago.
 

Site & Scene News

Popular threads in this forum