ROM Hack [Tutorial][SaveDatafiler/Ninjhax] Pokémon Shuffle: SaveEdit

Asia81

Yuri Lover ~
OP
Member
Joined
Nov 15, 2014
Messages
6,656
Trophies
3
Age
29
XP
3,495
Country
France
For anyone on Windows 10 and wondering why nothing happens when you drag the savedata.bin file onto the python file as per instructions, it is simply because windows 10 stripped out the ability to use files in that way.

Instead,

1. Make sure both the savedata.bin file and the pokemonshufflesavepatcher.py files are on on the desktop
2. Open a command prompt
3. type "cd C:users\yourusername\desktop" without the quotation marks. Substitute your user name for whatever your username is on your pc. C is usually the main hard drive. If it's not on your system, then I expect you know all this already. For example

cd C:users\Ikki_Barri\desktop

4.Then type

pokemonshufflesavepatcher.py savedata.bin

(Note that capitals do not matter in command prompt, but correct spelling and syntax do).

You should now have a message saying the file was patched.

I confirm that everything's working for me, but it took me ages to figure out how to run the file. Another reason I hate updating Windows.

The values of changes implemented are dynamic, meaning that you need to use an item to set the number of those items to the ones required. Otherwise, things will stay greyed out and look unusable. For the jewels, just play a difficult level very badly so you get the option to use a jewel at the end.

I'm on W10, a drag&drop work fine for me on the python script...
 

Senoue

Well-Known Member
Member
Joined
Jul 12, 2011
Messages
168
Trophies
0
Age
29
Website
Visit site
XP
202
Country
United States
I don't quite understand what to do, I dumped the save file from Shuffle but I am not sure what values I am supposed to change and to what
 

Brewzip

Well-Known Member
Newcomer
Joined
Feb 6, 2015
Messages
54
Trophies
0
Age
29
XP
96
Country
Italy
same problem.....my megastone....my legendaries....
I already searched the forums, but couldn't find that thread anymore. Thanks for pointing it to me again.
Still it didn't help me because the thread doesn't explicit answer my question. It is just pointing to "do the maths yourself" again. And then it ends with how to hack the save with ironhax :/

Leaving the user to do additional test and some maths, is not a form of incomplete information. I'm not a bad guy who wants to see others, struggles with their homeworks! :wink:
I thought that my hint were sufficient, but I figured out that until now, no one has understood them completely, at least in public.
The fact is that many people don't understand how a bitfield works and are not patient or smart enough to do some successful testing.
Some users lacks the basis of hex editing and don't know how logical/bitwise operation works. How can them understand all correctly if they miss this knowledge?

Since it's passed a month, and nothing changed. I could release more informations.
Maybe all of them, like the correct formulas for the offsets of level/catch/mega and related useful bitfield values.
I have already written a big part of the tutorial, but would like to complement it with a save-trainer that works selecting even single pokemon.
But recently I lack the time to do so. However, I should easily find time to make a python script that catch and max-out all pokemons and gives all correct mega-stone.

More updates in the future days, stay tuned! ;)
 

AznPride112

Well-Known Member
Newcomer
Joined
Sep 12, 2009
Messages
80
Trophies
0
XP
178
Country
I'm having a bit of trouble.
Fairly new with this; never used savedata before. Using ironhax on an updated old 3DS if that'll help.

When I try to go to savedata on homebrew, it says it can't find the savadata archive.
I've been playing Shuffle today, and have been since it released on eshop. Don't know what to do. :sleep:
Do I have to have zero hearts? I really don't know. I installed the python version infinete had in their steps already.
When you get to the SaveData Homescreen on Homebrew, Press the Left and Right keys to choose Pokemon Shuffle.
I didn't know at first and had the same problem, then I did a bit of research and figured it out :)
It should work if you did everything correctly.

--------------------- MERGED ---------------------------

I don't quite understand what to do, I dumped the save file from Shuffle but I am not sure what values I am supposed to change and to what
You're not supposed to change anything, just drag the savefile.bin (or whatever it's called) to the PokemonShuffleWhatever.PY file and it should patch.
 

PewnyPL

Well-Known Member
Member
Joined
Feb 2, 2014
Messages
771
Trophies
1
XP
2,175
Country
Poland
Alright, may be a silly question, but looking at the values in all of those offsets I don't really know. I want to use this tool, but keep the amount if Mega Speedups to the number I had. But when I checked the offsets shown in the OP, none of them holds a value of 5, closest I saw is 10 (0A at offset D7). So, which offset should I modify and what value should I put there?
 

suloku

Well-Known Member
Member
Joined
Apr 28, 2008
Messages
883
Trophies
0
XP
866
Country
Alright, may be a silly question, but looking at the values in all of those offsets I don't really know. I want to use this tool, but keep the amount if Mega Speedups to the number I had. But when I checked the offsets shown in the OP, none of them holds a value of 5, closest I saw is 10 (0A at offset D7). So, which offset should I modify and what value should I put there?

Mega speed ups are at 0x2d4c, the value is doubled (i.e: I have 5 mega speed ups, but the value there is 0x0A, which is 10). For 99 speedups (and to not make an overflow like this script is doing) input C6.

Stocked hearts are at 0x2d4b, stored as HALF the actual value, so both 99 and 98 hearts are 0x49. What stores if there are 99 hearts or 98 (or 97 or 96...etc..) is the bit 7 in 0x2d4a. Since 0x2d4a seems to be storing more than just the stocked lives, I think it's better to just edit for 98 lives and let the bit alone.

Still looking for coins and jewels.

Really, don't use the script, it works, ok, but it also screws up your savefile.
 

suloku

Well-Known Member
Member
Joined
Apr 28, 2008
Messages
883
Trophies
0
XP
866
Country
Thanks for the reply, but you got me worried with that last part. Does it only screw up the values (overflows), or does it also mess up something else?

The script does this:
fh.seek(0x0006A);
fh.write('\xFF\xFF');

I don't know what is stored in that address, but in all my dumps with different lives and coins these values remain unchanged, so it's either the diamonds or the game is storing coins and diamonds in a very weird way. But I'm not fan of editing the savefile without knowing what it does. Also, the fact that I've found stocked lives stored somewhere that the script doesn't touch bothers me.

Then this:
fh.seek(0x000D1);
fh.write('\xFF\xFF\xFF\xFF\xFF\xFF\xFF');

In my savedumps these are always 00, so I guess they are the items you can buy (mega speed up, etc). I guess the editing would be ok just changing it to
fh.seek(0x000D1);
fh.write('\x63\x63\x63\x63\x63\x63\x63');

note: there are 7 items because there's also the +10 seconds item, for those wondering

Finally there's the mega speed up:
fh.seek(0x02D4C);
fh.write('\xFF');

Which should be fh.write('\xC6'); so it doesn't overflow.

As you can see shuffle stores its data in some weird way, setting all to 0xFF might screw things, or it might not, but the fact that we don't know what we are doing should be a warning.


Also, I think I've found the secure value at 0x2A to 0x2D (it is a u64 value). Or at least it seems a save counter, I don't know if this game uses the anti savegame restore protection.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Xdqwerty @ Xdqwerty: @SylverReZ, lol +1