Ni No Kuni (US) Save Modification

Discussion in 'PS3 - Tutorials' started by Kentoss, Jan 25, 2013.

Jan 25, 2013

Ni No Kuni (US) Save Modification by Kentoss at 7:20 AM (177,977 Views / 14 Likes) 316 replies

  1. Kentoss
    OP

    Member Kentoss GBAtemp Regular

    Joined:
    May 29, 2008
    Messages:
    137
    Location:
    Ontario, Canada
    Country:
    Canada
    I wanted to report my findings and get a thread going to see if other people are interested in the inner workings of Ni No Kuni. Ever since dabbling with Pokemon I've been fascinated by save file editing and what you can do. In this thread I will talk about what I've figured out on my own and hopefully there are others out there willing to pitch in to figure out the structure of the Ni No Kuni save files.

    To begin, let me acknowledge that this requires absolutely no modifications to the PS3, or other third party products. It has been done on my completely vanilla set up with a fair amount of ease. I will be as detailed as possible so it's easy to follow.

    Requirements
    • Ni No Kuni: Wrath of the White Witch (Should work on NA and EU versions)
    • FAT32 formatted USB drive for transffering saves
    • A PC running Windows (I have not found software that works on other systems)
    • Bruteforce Save Data 2.3.4
    • Basic knowledge of hex editing
    • Make sure to create back ups of your save so you have something to fall back on if things go wrong
    Downloads
    I have only used one program in editing my save, and that is the wonderful Bruteforce Save Data found on Aldostools. Get the latest version from their site here, or download the version I'm using via this mediafire mirror (only doing this for posterity in case in the future the tool is hard to find.)

    Note about installing Bruteforce Save Data: When you unpack the rar containing the installer, it will have a warning below the installer saying something like, "IMPORTANT - You must add your console_id to global.conf". You can safely ignore this for the purposes of this guide, decrypting should work either way.​

    Getting the Save Ready
    Warning: Spoilers inside!
    Making Changes

    I haven't done much poking around yet, I will update this thread as I learn more. For now, here are some pointers and structures I've worked out (forgive me if the information is presented in a novice fashion).

    Note about offsets: Offsets are not always static. The following should be taken as loose pointers and NOT absolute offsets. It's best to have some knowledge about hex editing before proceeding.​

    Save Structure

    The save structure is set up in blocks. The blocks begin with the hex delimiter 0xFFFE, followed by a unique one byte identifier that determines what the block contains, and end at 0xFEFF. The blocks are sometimes nested within each other.

    The first block begins immediately at 0x00, and all followed blocks are nested within this one. After the first block there appears to be a bunch of junk that I haven't figured out the significance of yet.

    I haven't discerned each block type yet, but here's what I know so far:
    • 1B - Inventory
    • 0A - Non-Familiar Character
    • 0D - Familiar
    • 04 - Not entirely sure, but contains Guilders
    Guilders

    The guilders offset starts 24 bytes before the sequence FE FF FF FE 80. To find it, do a search that looks like this:

    [​IMG]

    Hitting OK should take you to the sequence. This sequence should only appear once, so it's a safe bet to look for it. You should now be looking at this:

    [​IMG]

    From here, count 24 bytes backward. Note: Length is in hex, so 18 is actually 24 in hex.

    [​IMG]
    The next 4 bytes are your guilders, as highlighted below:

    [​IMG]
    Guilders is 4 bytes long, capping at 05F5E0FF (99999999G).



    Oliver-Related

    Oliver's Name: 0x00017D35
    Oliver's Level: 0x00017D5A (byte)
    Oliver's Experience: 0x00017D55 (4 bytes - I believe)
    Oliver Current HP: 0x00017D5B (2 bytes)
    Oliver Max HP: 0x00017D5D (2 bytes)
    Oliver Current MP: 0x00017D5F (2 bytes)
    Oliver Max MP: 0x00017D61 (2 bytes)
    Oliver Attack: 0x00017D64 (byte)
    Oliver Defense: 0x00017D66 (byte)

    Note about experience: Experience is reset to 0 on level up. If you set your experience to something really high, you'll only ever level up one level at the end of a battle. You'll still get the experience from the battle, but the excess experience you had before vanishes.​

    Character Structure

    For lack of a better name, the character structure is what holds information on non-familiars. They are stored in 846 byte structures (not including block begin/end delimiters). More appear to be added to the save as the game progresses, not all the characters are available in the save immediately.

    0x00 - Block ID (always 0A for character)​
    0x0E-0x11 - Character ID​
    0x12-? - Name (not entirely sure how long at the moment, null terminated)​
    0x32-0x35 - Experience Points​
    0x37 - Level​
    0x39 - Current HP​
    0x3B - Max HP​
    0x3D - Current MP​
    0x3F - Max MP​
    0x41 - Attack​
    0x43 - Defense​
    0x45 - Magic Attack​
    0x47 - Magic Defense​
    0x49 - Evasion​
    0x4B - Accuracy​


    Familiar Structure

    Familiars are stored in a 430 byte structure (not including block begin/end delimiters).

    0x00 - Block ID (always 0D for familiar)​
    0x0A-0x0B - Position in Bag​
    0x0C-0x0D - Order Caught (?)​
    0x0E-0x11 - Familiar ID​
    0x12-0x22 - Name (null terminated)​
    0x32-0x35 - Experience Points​
    0x37 - Level​
    0x41 - Attack​
    0x43 - Defense​
    0x45 - Magic Attack​
    0x47 - Magic Defense​
    0x49 - Accuracy​
    0x4B - Evasion​
    0xA2-0xB9 - Currently Set Skills (4 bytes per skill ID, includes Attack and Defend)​
    0xBA-0xC4 - Stats of familiar during metamorphose (before being reset to 1, 2 bytes for each stat)​
    0xC6-0xD0 - Grow 1 Stats (2 bytes for each stat, affects how much a stat increases on level up, the higher the better)​
    0xD2-0xDC - Grow 2 Stats (same as above)​
    0xE2 - Sign​
    0x106-0x107 - Fullness​
    0x10C - Familiarity​
    0x10E-0x?? - Learned Skills (4 bytes per skill ID)​

    It's easiest to locate the data relative to the name of your familiar. Start by searching for the name of the familiar you wish to edit, in plain text. I've highlighted the values for each familiar below.

    [​IMG]

    Note about experience: Experience is reset to 0 on level up. If you set your experience to something really high, you'll only ever level up one level at the end of a battle. You'll still get the experience from the battle, but the excess experience you had before vanishes.​

    Fullness works in thousands (decimal), starting at 0 (empty). Each thousand represents one face. The values are as follows:
    • 00 00 - 0
    • 03 E8 - 1,000
    • 07 D0 - 2,000
    • 0B B8 - 3,000
    • 0F A0 - 4,000
    • 13 88 - 5,000
    • 17 70 - 6,000
    • 1B 58 - 7,000
    • 1F 40 - 8,000
    • 23 28 - 9,000
    • 27 10 - 10,000
    If you want your familiar's fullness to be empty, set it to 00 00. Familiarity ranges from 00 - 05, 05 being full hearts and 00 being none.

    Inventory Structure

    I have a loose understanding of this, but thanks to the help of a Japanese wiki for the Japanese version of the game I have at least managed to work a few things out.

    The Inventory starts at 0x00007D08 as far as I can tell. The structure is as follows:

    4 bytes - Item Type (ID)
    3 bytes padding
    1 byte - Position of Item in Category
    1 byte padding
    1 byte - Number of Item in Inventory

    To illustrate this:

    [​IMG]

    Below is a list of all the items with their proper English names, including the important items such as the Wizard's Companion, etc.. This list is provided by Supercool330 from later in this thread, so give thanks to him when you can:

    All Items

    If someone is willing to fix these lists so the names are the proper North American names, I would appreciate that very much.

    Getting the Save Back on the PS3
    Warning: Spoilers inside!
     
    Brap757, B4rtj4h, DaPrince and 11 others like this.


  2. Cyan

    Global Moderator Cyan GBATemp's lurking knight

    Joined:
    Oct 27, 2002
    Messages:
    16,402
    Location:
    Engine room, learning
    Country:
    France
    This is a nice guide, and I think I'll move it guide&Faqs.
    I'll keep a link from your original section so users can find the guide from there too.


    When you unpack the BruteForceSaveData, there's a file telling you to put your consoleID in global.conf
    You didn't cover that part. maybe you should tell users how to get the console ID, so they can use the tool correctly.
     
  3. Kentoss
    OP

    Member Kentoss GBAtemp Regular

    Joined:
    May 29, 2008
    Messages:
    137
    Location:
    Ontario, Canada
    Country:
    Canada
    Thanks for moving it, I actually didn't bother getting the console ID and it still worked for me, but you're right I should clarify in case people are confused. Thanks for pointing that out.
     
  4. Twiffles

    Member Twiffles танковые победы

    Joined:
    Sep 6, 2007
    Messages:
    1,925
    Country:
    Germany
    This is actually pretty interesting stuff. Great job!

    I'll PM you my save for your investigation since I actually have a save that crossed regions.
     
  5. Kentoss
    OP

    Member Kentoss GBAtemp Regular

    Joined:
    May 29, 2008
    Messages:
    137
    Location:
    Ontario, Canada
    Country:
    Canada
    Thanks!

    I've been making quite a few updates, for those that are reading this. Right now I'm updating the Item Type list to reflect the proper US names of the items. So far I have Items and Snacks done, still working on the others.
     
  6. NekoFluff

    Newcomer NekoFluff Newbie

    Joined:
    Jan 26, 2013
    Messages:
    7
    Country:
    United States
    Would love to do this but ugh Bruteforce Save Data doesn't work for me. It always says Unreadable under Key so i can't do anything. I wanted to raise my Gold and some other stuff -.-
     
  7. Kentoss
    OP

    Member Kentoss GBAtemp Regular

    Joined:
    May 29, 2008
    Messages:
    137
    Location:
    Ontario, Canada
    Country:
    Canada
    Weird, the key may be flagged as unreadable. I would reinstall with the latest version, it has a new DB so all keys should be available to you again.
     
  8. dx2d

    Newcomer dx2d Newbie

    Joined:
    Jan 26, 2013
    Messages:
    1
    Country:
    Puerto Rico
    For the money offset it does change but to find it just type in the hex value for the current money you have in your save file...look in google (amount of money you currently have) to hex value THEN copy/paste the hex value on your find thingy on HxD (Hex Editor)...I hope this helps I have max money right now as im posting this :)
     
  9. greco78

    Newcomer greco78 Member

    Joined:
    Apr 4, 2007
    Messages:
    26
    Location:
    Toronto, Ontario
    Country:
    Canada
    Trying to figure out how to max my guilders. I did it for FF 13-2 and it was easy, good guides to go by.
    Anyway, everything is set up and my current guilders is 4629 which seems to be 0x1215
    What would I do to get it to max?
     
  10. Kentoss
    OP

    Member Kentoss GBAtemp Regular

    Joined:
    May 29, 2008
    Messages:
    137
    Location:
    Ontario, Canada
    Country:
    Canada

    Search for the hex value 1215 to find the current offset of your guilders. It varies from save to save, but I'm currently investigating a reliable way to find them. Once you've found the location, change it to 05F5E0FF for max guilders. So, 00001215 should turn into 05F5E0FF.
     
  11. greco78

    Newcomer greco78 Member

    Joined:
    Apr 4, 2007
    Messages:
    26
    Location:
    Toronto, Ontario
    Country:
    Canada
    [​IMG]
    I'll upload my save for you! Maybe you can look at it. I'll try you this out though, thanks I hope it works.



    EDIT so my gulders was at 4629 I spent money which brought me to 3839 guilders which now seems to be 0xEFF
     

    Attached Files:

  12. cstresponsible

    Newcomer cstresponsible Newbie

    Joined:
    Jan 28, 2013
    Messages:
    3
    Country:
    Canada
    I'm having quite a bit of difficulty locating any reliable numbers. On your images at the top (showing item locations) there are large spaces of bytes between your values but when I open my save everything is jammed together, exactly like greco78's post above. I can locate several addresses for my gold and for Oliver's stats however they are all just jumbled together and not anywhere near your listed addresses. Am I doing something wrong or this how it's supposed to be...
     
  13. Kentoss
    OP

    Member Kentoss GBAtemp Regular

    Joined:
    May 29, 2008
    Messages:
    137
    Location:
    Ontario, Canada
    Country:
    Canada
    Can you screenshot or upload your save file for me? It seems that both yours and greco78's haven't been properly decrypted, I want to try verifying this.
     
  14. cstresponsible

    Newcomer cstresponsible Newbie

    Joined:
    Jan 28, 2013
    Messages:
    3
    Country:
    Canada
    Sure here goes. Thanks for taking a look!

    Edit: It appears that Bruteforce needs to be run as an Administrator... Everything appears to be working now.
     

    Attached Files:

  15. greco78

    Newcomer greco78 Member

    Joined:
    Apr 4, 2007
    Messages:
    26
    Location:
    Toronto, Ontario
    Country:
    Canada
    Untitled.png

    Is where it is now.
     
  16. Kentoss
    OP

    Member Kentoss GBAtemp Regular

    Joined:
    May 29, 2008
    Messages:
    137
    Location:
    Ontario, Canada
    Country:
    Canada
    I don't think those files have been properly decrypted. For reference, they should look something like so:

    [​IMG]

    I may have missed a step in the original instructions, did you guys end up bruteforcing the save? What key is showing for Ni No Kuni on the main Bruteforce window?
     
  17. penguinpoolooza

    Newcomer penguinpoolooza Newbie

    Joined:
    Jul 18, 2012
    Messages:
    3
    Country:
    United States
    Hi, thanks for the great guide. I'm having a problem I thought maybe you could answer. After I load the files into Bruteforce Save Data, I cannot decrypt the files. It says they are undecryptable. Any idea what I did wrong?
     
  18. Kentoss
    OP

    Member Kentoss GBAtemp Regular

    Joined:
    May 29, 2008
    Messages:
    137
    Location:
    Ontario, Canada
    Country:
    Canada
    I definitely left out a step, sorry. Right click the save file in Bruteforce Save Data and go to 'Bruteforce...', that should grab the key for you.
     
  19. cstresponsible

    Newcomer cstresponsible Newbie

    Joined:
    Jan 28, 2013
    Messages:
    3
    Country:
    Canada
    I solved my problem by running Bruteforce in administrator mode. Worked like a charm! Great guide and I appreciate the quick responses Kentoss. Thanks!
     
  20. Kentoss
    OP

    Member Kentoss GBAtemp Regular

    Joined:
    May 29, 2008
    Messages:
    137
    Location:
    Ontario, Canada
    Country:
    Canada
    Thank you for that tip cstresponsible, I will add it to the main post so in the future it can be avoided.

    EDIT: Also, aside from my Nazcaän/English Translator, I'm working on a web tool that will let you upload your decrypted saves and give you a smooth interface for editing them. I'm still working at figuring out all the structures in the save file, but so far I've been able to cross reference the inventory system with a database I've been building to list the items as they appear in game with their proper names. Here's a screenshot of my test:

    [​IMG]

    When I make enough progress on it I'll release it as a beta.
     

Share This Page