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
@goldenfly Cool, tks for this, but having a problem when trying to get the names, it gives me the following error when trying to get any name (i have some in jpn language that the eur game can't display properly, dunno if it matters):View attachment 33402

I din try to write a name and change them so dunno if that part is working. At least the memory addresses i know are correct cause i changed a few names already a couple days ago cause i had/have still have some original jpn names.
I found the addresses but didn't implement the feature of writing strings yet. You can use tc gecko for now
 
any idea why the protagonist stats are being resetted in US disc ? i edit the breast and height, for the others it works fine but the protagonist gets resetted
 
any idea why the protagonist stats are being resetted in US disc ? i edit the breast and height, for the others it works fine but the protagonist gets resetted
cause US is anti-tiddies, duh

For real though, it's probably a hard-coded value that's loaded each time the game starts, instead of from the save file. It probably saves just fine on the jpn region version.
 
cause US is anti-tiddies, duh

For real though, it's probably a hard-coded value that's loaded each time the game starts, instead of from the save file. It probably saves just fine on the jpn region version.

I doubt it since you can edit your US/EU char in the JP game and bring it back and the breast setting stays.
 
I doubt it since you can edit your US/EU char in the JP game and bring it back and the breast setting stays.
Nice, didn't know that. Maybe there's two spots for the value then, and we're just changing the one the graphics database reads from, instead of the one the save loads and saves to. Either that, or they removed the functionality of saving that value in the EU/US titles in some twisted attempt to improve save time or something, seeing as it wasn't used except in the initial character creation and all.
 
Nice, didn't know that. Maybe there's two spots for the value then, and we're just changing the one the graphics database reads from, instead of the one the save loads and saves to. Either that, or they removed the functionality of saving that value in the EU/US titles in some twisted attempt to improve save time or something, seeing as it wasn't used except in the initial character creation and all.

There were discussions about the problem of the values not sticking in the undub thread. You guys might want to check that out.
 
By the way @goldenfly , you wouldn't happen to know how to fix a glitched arts menu, would you? Though nothing happened during the initial leveling of my arts, after saving and rebooting the game, my fourth art slot has become invisible on all characters, and if I try to select it, the game does a soft-crash, which it recovers from by rebooting to the game's main-menu. I checked in status, and it seems to be registering an unknown art with no image, name, or description loaded at MAX level in the slot. I was thinking it might be repairable if the art slots could be hack-assigned to selected art IDs. Another point, that while normally the game removes most/all arts when you change classes, or equip a weapon your art doesn't support, this has no effect on the glitched art slot, and it continues to insist that it has the same unregisterable, game-crashing art equiped to that slot. Luckily though, the combat system doesn't recognize the art at all, so it displays it as an empty slot and jumps over it while fighting, so no crashes. It's annoying though, so if it's fixable, I'd love to know how to do so.

Otherwise, thanks for this amazingly simple-to-use tool, and I look forward to its updates!
 
By the way @goldenfly , you wouldn't happen to know how to fix a glitched arts menu, would you? Though nothing happened during the initial leveling of my arts, after saving and rebooting the game, my fourth art slot has become invisible on all characters, and if I try to select it, the game does a soft-crash, which it recovers from by rebooting to the game's main-menu. I checked in status, and it seems to be registering an unknown art with no image, name, or description loaded at MAX level in the slot. I was thinking it might be repairable if the art slots could be hack-assigned to selected art IDs. Another point, that while normally the game removes most/all arts when you change classes, or equip a weapon your art doesn't support, this has no effect on the glitched art slot, and it continues to insist that it has the same unregisterable, game-crashing art equiped to that slot. Luckily though, the combat system doesn't recognize the art at all, so it displays it as an empty slot and jumps over it while fighting, so no crashes. It's annoying though, so if it's fixable, I'd love to know how to do so.

Otherwise, thanks for this amazingly simple-to-use tool, and I look forward to its updates!
You got this glitch after using XCXGecko? Hmm I've never seen this bug myself. I knew that the old rank exp codes listed on this forum incorrectly assumed 32-bit address instead of 16, so that might have overwrote valuable savedata... I don't know what value to write back though, so you'll have to start a new game, and check the address for the default value.

EDIT: the other 16 bits after rank exp contains 8 bits denoting the ID of an equipped art, and 8 bits indicating the lvl of that art. It's entirely possible that by writing 00 as the skill ID, this would mess up with the char's art, possibly in a permanent manner.
 
Last edited by MiMiCAX,
Been testing this tool out now that I got my SSB installed and it works like a charm. Mostly. Now the only thing I need in future updates is a way to alter the amounts of probes. Never can have enough of those pesky storage probes.

Edit: Being able to edit salvage tickets amount would be nice too even tho you can alter the amount of money you have.
 
Been testing this tool out now that I got my SSB installed and it works like a charm. Mostly. Now the only thing I need in future updates is a way to alter the amounts of probes. Never can have enough of those pesky storage probes.

Edit: Being able to edit salvage tickets amount would be nice too even tho you can alter the amount of money you have.

- I restarted a new game save just to work on finding probe addresses. It's hard though since they change rarely. Any help would be appreciated.

- I don't know where to get salvage tickets. I can probably add that easily if I knew...
 
You got this glitch after using XCXGecko? Hmm I've never seen this bug myself. I knew that the old rank exp codes listed on this forum incorrectly assumed 32-bit address instead of 16, so that might have overwrote valuable savedata... I don't know what value to write back though, so you'll have to start a new game, and check the address for the default value.

EDIT: the other 16 bits after rank exp contains 8 bits denoting the ID of an equipped art, and 8 bits indicating the lvl of that art. It's entirely possible that by writing 00 as the skill ID, this would mess up with the char's art, possibly in a permanent manner.
I did get this after using the original codes, yes, so it's not likely your tool's fault. I'd restart entirely if there was a moon-jump code and movement speed code, as I could get back where I am now pretty quickly. But, seeing as there isn't, it would take too many hours, that I don't have, to get back there. Thanks for the insight though regardless, and if you figure out the data that needs to be written to those values, I'd love to see it haha.

PS. Maybe if you just had the value for what that data looks like for an unequipped skill slot there, it would be enough to correct that slot?
 
I have some great news to share: I found all the character affinity codes, and confirmed with Lin and Elma already!

I also found codes for the vast majority of probes.

Now the ugly news: it turns out that INDIVIDUAL items are not stored in fixed memory locations. Instead, the memory addresses correspond to item SLOTS (e.g. first material slot, first precious resource slot, first probe type slot, etc.), and the address contains data about the item ID, item type (I think), item count, and 3 bits that I don't know what.

This explains why matrixsoul was reporting that the precious resources codes were incrementing different items on his save -- he acquired the resources in a different order.

I'll need some time to figure out some key item IDs, and re-design the UI and code structure accordingly.

Also, since this game has so many items, I simply don't have the time to map out all possible IDs. Therefore, I can also use some help, who would be willing to poke different memory IDs and note down the corresponding item. I'll update the first post with details later.
 
Since the game been available longer in japan, with some luck a jpn list available with the id hex codes and corresponding item names could be found somewhere, wishful thinking but doubtful I guess.
 
I have some great news to share: I found all the character affinity codes, and confirmed with Lin and Elma already!

I also found codes for the vast majority of probes.

Now the ugly news: it turns out that INDIVIDUAL items are not stored in fixed memory locations. Instead, the memory addresses correspond to item SLOTS (e.g. first material slot, first precious resource slot, first probe type slot, etc.), and the address contains data about the item ID, item type (I think), item count, and 3 bits that I don't know what.

This explains why matrixsoul was reporting that the precious resources codes were incrementing different items on his save -- he acquired the resources in a different order.

I'll need some time to figure out some key item IDs, and re-design the UI and code structure accordingly.

Also, since this game has so many items, I simply don't have the time to map out all possible IDs. Therefore, I can also use some help, who would be willing to poke different memory IDs and note down the corresponding item. I'll update the first post with details later.
Thanks to the Christmas break, I'll have some free time to help out. PM if you need it.
 
Thanks to the Christmas break, I'll have some free time to help out. PM if you need it.
Great; thanks for volunteering!

I already built a working interface to make the process go smoothly. Using it, I have finished labelling all precious resources and data probes. It would be nice to label "Materials" (or at least start it), and collectibles might also come in handy.

Here are the steps:
  1. back up your save game just in case :p
  2. optionally, use a save game with few items (e.g. see attached Loadiine save) so that there are only a few items in the inventory
  3. download XCXGecko v1.1+, or pull the latest revision from github
  4. load XCX, then connect XCXGecko to Wii U
  5. under "Item ID" tab, click "Load DB", and choose item_id_v1.0.1e.txt (under codes folder)
  6. choose one of the addresses below into the "Memory Address" field, and press "Fetch Value"
  7. make sure that the item count is at least 1; if not, you will need to obtain one of any item of the specific type
  8. Set the "Amount" to a unique number so as to distinguish the selected item from others in the inventory, then press "Poke"
  9. in XCX, open Intel->Inventory->ITEM_TYPE menu, and identify the item name with the specified amount (might need to scroll since item may not be the first)
  10. in XCXGecko, type in name in "Add/Modify Item Name" field, and press Enter to store it in database
  11. if everything is working so far, set "ID" to 00, click "Auto Increment: OFF" button, and click "Poke"
  12. in XCX, press ZL then ZR to switch inventory types, in order to get the updated item name
  13. in XCXGecko, type in the item name in "Add/Modify Item Name" field, and press Enter
  14. you'll notice that "ID" will have auto-incremented, since we turned on that feature; now repeat steps 11+12 until done or tired
  15. press "Save DB" and overwrite item_id_v1.0.1e.txt
  16. either make a github pull request, or reply with the updated database txt

Memory addresses:
  • Materials Slot 001: 1C3BB0DC
  • Collectibles Slot 001: 1C3BDB0C
  • Important Items Slot 001: 1C3BE91C
P.S.: I strongly suspect that there are more than 255 types of "Materials". For now let's just map the first 255; I'll need to make a few minor edits to allow for larger-valued IDs.
 

Attachments

  • Like
Reactions: Ailuros27
Great; thanks for volunteering!

I already built a working interface to make the process go smoothly. Using it, I have finished labelling all precious resources and data probes. It would be nice to label "Materials" (or at least start it), and collectibles might also come in handy.

Here are the steps:
  1. back up your save game just in case :P
  2. optionally, use a save game with few items (e.g. see attached Loadiine save) so that there are only a few items in the inventory
  3. download XCXGecko v1.1+, or pull the latest revision from github
  4. load XCX, then connect XCXGecko to Wii U
  5. under "Item ID" tab, click "Load DB", and choose item_id_v1.0.1e.txt (under codes folder)
  6. choose one of the addresses below into the "Memory Address" field, and press "Fetch Value"
  7. make sure that the item count is at least 1; if not, you will need to obtain one of any item of the specific type
  8. Set the "Amount" to a unique number so as to distinguish the selected item from others in the inventory, then press "Poke"
  9. in XCX, open Intel->Inventory->ITEM_TYPE menu, and identify the item name with the specified amount (might need to scroll since item may not be the first)
  10. in XCXGecko, type in name in "Add/Modify Item Name" field, and press Enter to store it in database
  11. if everything is working so far, set "ID" to 00, click "Auto Increment: OFF" button, and click "Poke"
  12. in XCX, press ZL then ZR to switch inventory types, in order to get the updated item name
  13. in XCXGecko, type in the item name in "Add/Modify Item Name" field, and press Enter
  14. you'll notice that "ID" will have auto-incremented, since we turned on that feature; now repeat steps 11+12 until done or tired
  15. press "Save DB" and overwrite item_id_v1.0.1e.txt
  16. either make a github pull request, or reply with the updated database txt

Memory addresses:
  • Materials Slot 001: 1C3BB0DC
  • Collectibles Slot 001: 1C3BDB0C
  • Important Items Slot 001: 1C3BE91C
P.S.: I strongly suspect that there are more than 255 types of "Materials". For now let's just map the first 255; I'll need to make a few minor edits to allow for larger-valued IDs.
Nice, and so far I'm finding lots of test items that have no use in the game I'm sure, like these:


68 D7 ITM_MTR_TEST_caption

68 01 ITM_MTR_TEST_caption

68 02 ITM_MTR_MECH_02_Name

68 08 ITM_MTR025401_02_Nam

68 09 ITM_MTR025401_03_Nam
 
Nice, and so far I'm finding lots of test items that have no use in the game I'm sure, like these:


68 D7 ITM_MTR_TEST_caption

68 01 ITM_MTR_TEST_caption

68 02 ITM_MTR_MECH_02_Name

68 08 ITM_MTR025401_02_Nam

68 09 ITM_MTR025401_03_Nam

I was thinking that we either keep but comment them out, or simply ignore them. BTW in auto-incr mode, if you leave the new text field empty and press Enter, it will skip to next ID.
 

Site & Scene News

Popular threads in this forum