ROM Hack PSSE - Pokemon Shuffle Save Editor

supercarotte

Well-Known Member
Member
Joined
May 21, 2015
Messages
691
Trophies
0
Age
30
XP
948
Country
France
*nod**nod* That makes sense given that we download this via checkin. (Don't we? o.o)
The 1.3 version could also be downloaded via check-in but it changed the resource files. Probably that only updates that change the second digit change the game's files, while "small" updates like this one don't. Anyway, we don't care for now ^^

Okay, but it's still a start. I feel odd seeing all of the various forms of Pikachu in there that really shouldn't be released yet.
There is also a PokemonType.bin file, so maybe we could use it to detect all pokemons that are set to normal type when they shouldn't ? Just an idea, didn't actually research this.

Neat! That would clean up the odd business around the adjectives a bit, I think?
Oh yeah, I didn't think about that ! That would be pretty neat indeed.

Yeah. Ideally I'd like to remove the unreleased Pokémon from the UI and the bulk changes. (ie: "All Caught" should only catch all released Pokémon, I think?)

Have the other forms of Rotom been released?
The other forms of Rotom have been released, yes (it was one of the very first events). Isn't there 2 options though ? "All Caught" and "All Available Caught" ? I'd like to keep to possibility of adding unreleased pokemons, it's pretty cool for debugging things ^^ Maybe we could figure a way to include event pokemons to the second patch instead.

Awesome =D And, actually, if the strings there include the form names that could also help with the whole species/mons thing. =D
Yes, they are. First are Pokemon names, then Mega Pokemon names, then "old" formes names, then megastones names then "new" adjectives formes (Everytime in dex order).

I won't have a lot of time to investigate until Friday though, so I'll probably not have anything releasable until next week...
 

nic0lette

Well-Known Member
Newcomer
Joined
Feb 5, 2016
Messages
70
Trophies
0
Age
40
XP
100
Country
United States
Oh yeah, I didn't think about that ! That would be pretty neat indeed.

I put in some code to write out the value and there seem to be way too many "999" values. Like:

spec=1 dex_num=1
spec=2 dex_num=2
spec=3 dex_num=3
spec=4 dex_num=2052
spec=5 dex_num=2053
spec=6 dex_num=2054
spec=7 dex_num=7
spec=8 dex_num=8
spec=9 dex_num=9
spec=10 dex_num=999
spec=11 dex_num=999
spec=12 dex_num=999

Any thoughts? (Or maybe I'm just not understanding *where* the value is. This is the first 12 bits of "data" in the "for(inti=0;i<mons.Length;i++)" loop.

The other forms of Rotom have been released, yes (it was one of the very first events). Isn't there 2 options though ? "All Caught" and "All Available Caught" ? I'd like to keep to possibility of adding unreleased pokemons, it's pretty cool for debugging things ^^ Maybe we could figure a way to include event pokemons to the second patch instead.

Fair enough. *nods*

Yes, they are. First are Pokemon names, then Mega Pokemon names, then "old" formes names, then megastones names then "new" adjectives formes (Everytime in dex order).

Neat. I'll check it out then.

I won't have a lot of time to investigate until Friday though, so I'll probably not have anything releasable until next week...

That's fine. During the week is generally busy for me as well so... =)
 

supercarotte

Well-Known Member
Member
Joined
May 21, 2015
Messages
691
Trophies
0
Age
30
XP
948
Country
France
I put in some code to write out the value and there seem to be way too many "999" values. Like:

Any thoughts? (Or maybe I'm just not understanding *where* the value is. This is the first 12 bits of "data" in the "for(inti=0;i<mons.Length;i++)" loop.

You should add "&3FF" somewhere in your code, because it's only the first 10 bits that are relevant here. Hence, 2052 becomes 4, 2053 becomes 5 & 2054 becomes 6. 10 to 12 are Beedril's family so it's normal they are 999.

PS: I have not find the attack stats or number of lollipops yet, I want to check out the "Layout Archives" folder but it's full of compressed archives (.sarc) that I can't open :s
 
Last edited by supercarotte,

nic0lette

Well-Known Member
Newcomer
Joined
Feb 5, 2016
Messages
70
Trophies
0
Age
40
XP
100
Country
United States
You should add "&3FF" somewhere in your code, because it's only the first 10 bits that are relevant here. Hence, 2052 becomes 4, 2053 becomes 5 & 2054 becomes 6. 10 to 12 are Beedril's family so it's normal they are 999.

Oh gosh! I was totally confused when it spit out #10 was "999". I... yeah. Awesome, thank you =D

PS: I have not find the attack stats or number of lollipops yet, I want to check out the "Layout Archives" folder but it's full of compressed archives (.sarc) that I can't open :s

Check out WiiUExplorer which should be able to open sarc files.
 

Madridi

Card Collector
Member
Joined
May 9, 2008
Messages
3,562
Trophies
2
Age
38
Location
Doha
XP
3,071
Country
Qatar
The 1.3 version could also be downloaded via check-in but it changed the resource files. Probably that only updates that change the second digit change the game's files, while "small" updates like this one don't. Anyway, we don't care for now ^^
Huh? No? It required you to download from eshop. Only minor updates are via checkin. Major ones like 1.2 and 1.3 were always via eshop..

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

Yeah. Ideally I'd like to remove the unreleased Pokémon from the UI and the bulk changes. (ie: "All Caught" should only catch all released Pokémon, I think?)
The other forms of Rotom have been released, yes (it was one of the very first events). Isn't there 2 options though ? "All Caught" and "All Available Caught" ? I'd like to keep to possibility of adding unreleased pokemons, it's pretty cool for debugging things ^^ Maybe we could figure a way to include event pokemons to the second patch instead.
Yeah, there is an option to catch all Pokemon, and another to catch all released one. But I'm actually supporting the idea of removing the possibility of catching all unreleased one.

I guess those who are looking to use it for debugging already have the knowledge to do it themselves. It shouldn't be an option for regular users..
 

Ultimate Power

New Member
Newbie
Joined
Apr 14, 2016
Messages
1
Trophies
0
Age
26
XP
52
Country
United States
p7lPsIU.png
 
  • Like
Reactions: supercarotte

supercarotte

Well-Known Member
Member
Joined
May 21, 2015
Messages
691
Trophies
0
Age
30
XP
948
Country
France
Oh gosh! I was totally confused when it spit out #10 was "999". I... yeah. Awesome, thank you =D
Thank YOU for not pointing out that 10-12 were butterfree's family :shy:

Check out WiiUExplorer which should be able to open sarc files.
Unfortunately, WiiU utilities are based on SARCTools/SARCExtract and neither one works for these. SARCTools crashes (it's what QiiUExplorer uses) and SARCExtract tells me "Little Endian not supported".
You know what, by the way ? ExtData is filled with even more SARC files :hateit:

Huh? No? It required you to download from eshop. Only minor updates are via checkin. Major ones like 1.2 and 1.3 were always via eshop..
Actually that makes sense, you can't change the game's files while the game is running.Thanks.

Yeah, there is an option to catch all Pokemon, and another to catch all released one. But I'm actually supporting the idea of removing the possibility of catching all unreleased one.

I guess those who are looking to use it for debugging already have the knowledge to do it themselves. It shouldn't be an option for regular users..
I understand what you mean, PSSE should be as legit as possible for the end user. Maybe we can comment out the code involved in the release builds or somethings, so that only those who compile it can have this option ?
Nice work:grog:, by the way could you fix the mega stones X and Y, of Charizard and Mewtwo switcheroo, thanks:D.
I wanted to implement it in the 1.2alpha release, but when I tried I messed up somehow and broke PSSE to shreads. I had to revert all the way back to 1.1 and redo all my changes, so I just said "fuck this", basically :D

EDIT: Okay, so I was able to extract the fiels in ExtData with ScriesM's tool (yep, I know I'm stupid for not thinking of this earlier).
Turns out that there are newer versions of the .bin resources files in there (probably that 1.3 changed the one we had in the game's files while other "small updates" update this one in ExtData). This made me realise (because the new pokemonData.bin fixes it) that Beedril shouldn't have 999 as its ingame number because it was released earlier in an event stage.
Also, I found a StageDataEvent.bin that actually has the current events in it. Yeah. Main & EX stages had no problem from start but I updated them anyway.
Megastone.bin wasn't updated (obviously).
 
Last edited by supercarotte,
  • Like
Reactions: Madridi

Madridi

Card Collector
Member
Joined
May 9, 2008
Messages
3,562
Trophies
2
Age
38
Location
Doha
XP
3,071
Country
Qatar
I understand what you mean, PSSE should be as legit as possible for the end user. Maybe we can comment out the code involved in the release builds or somethings, so that only those who compile it can have this option ?
Yeah that should be fair enough I guess. Especially since probably not many people would know that a self compile and release would be different.

Not a lot of debuggers around. Only little kids cheating their way for bragging rights, and that's not really cool..
 
  • Like
Reactions: supercarotte

tomx86

Well-Known Member
Member
Joined
Jun 3, 2015
Messages
779
Trophies
0
Age
38
XP
2,200
Country
Poland
Thank YOU for not pointing out that 10-12 were butterfree's family :shy:


Unfortunately, WiiU utilities are based on SARCTools/SARCExtract and neither one works for these. SARCTools crashes (it's what QiiUExplorer uses) and SARCExtract tells me "Little Endian not supported".
You know what, by the way ? ExtData is filled with even more SARC files :hateit:


Actually that makes sense, you can't change the game's files while the game is running.Thanks.


I understand what you mean, PSSE should be as legit as possible for the end user. Maybe we can comment out the code involved in the release builds or somethings, so that only those who compile it can have this option ?

I wanted to implement it in the 1.2alpha release, but when I tried I messed up somehow and broke PSSE to shreads. I had to revert all the way back to 1.1 and redo all my changes, so I just said "fuck this", basically :D

EDIT: Okay, so I was able to extract the fiels in ExtData with ScriesM's tool (yep, I know I'm stupid for not thinking of this earlier).
Turns out that there are newer versions of the .bin resources files in there (probably that 1.3 changed the one we had in the game's files while other "small updates" update this one in ExtData). This made me realise (because the new pokemonData.bin fixes it) that Beedril shouldn't have 999 as its ingame number because it was released earlier in an event stage.
Also, I found a StageDataEvent.bin that actually has the current events in it. Yeah. Main & EX stages had no problem from start but I updated them anyway.
Megastone.bin wasn't updated (obviously).

Do it like I did for my Polish Translation, a way back...
There is a simple fix:
1. Download The source.
2. Open it in Visual Studio.
3. Go to "Project", chose "Pokemon Shuffle Save Editor Properties...".
4. Got to "Resources" , find "MegaStone006_X, MegaStone006_Y, MegaStone150_X, MegaStone150_Y". Edit their names, and switch the Xs with the Ys:
fix-png.26454

6. Build a EXE file, and done:
f2-png.26455

It won't be in alphabetical order, but it will show the right stones.
 
Last edited by tomx86,
  • Like
Reactions: Madridi

Leanny

Well-Known Member
Member
Joined
Feb 14, 2009
Messages
112
Trophies
0
XP
365
Country
Gambia, The
Do it like I did for my Polish Translation, a way back...

This is not the good way for it. Go to main.cs, line 251 and 252 on nic0lette's version, and change "_X" -> "_Y" in line 251 and the line below "_Y" _> "_X". He checks there first if they have stone [1], which is commented with
Code:
[X][0] = X, [X][1] = Y
so, why not changing it then to what it was supposed to be?

Edit: Btw, if you need any help, you can just ping me, I am definetly up for it :) I will take a look at what you guys did and see if there is anything I can do :)
 
Last edited by Leanny,
  • Like
Reactions: Madridi

supercarotte

Well-Known Member
Member
Joined
May 21, 2015
Messages
691
Trophies
0
Age
30
XP
948
Country
France
This is not the good way for it. Go to main.cs, line 251 and 252 on nic0lette's version, and change "_X" -> "_Y" in line 251 and the line below "_Y" _> "_X". He checks there first if they have stone [1], which is commented with
Code:
[X][0] = X, [X][1] = Y
so, why not changing it then to what it was supposed to be?

7tuQMLP.png
Yesterday, I finally understood why my first attempt at fixing crashed everything (I f*cked up with the graphic editor) & I came up with (what I think is) an even cleaner fix. I just made a small pull request for this & the updated .bin files I got from extdata.
 
  • Like
Reactions: Madridi

Leanny

Well-Known Member
Member
Joined
Feb 14, 2009
Messages
112
Trophies
0
XP
365
Country
Gambia, The
I think the cleanest would be just to fix the code where they pick the wrong names (see my comment above on where to change stuff). What exactly did you fix? All I see on GitHub is that you wrote a comment and made 2 merges as pull request.
 
  • Like
Reactions: Madridi

supercarotte

Well-Known Member
Member
Joined
May 21, 2015
Messages
691
Trophies
0
Age
30
XP
948
Country
France
I think the cleanest would be just to fix the code where they pick the wrong names (see my comment above on where to change stuff). What exactly did you fix? All I see on GitHub is that you wrote a comment and made 2 merges as pull request.

I changed those 2 lines (that's my new code) & swapped the mega stones pics in the graphical editor:
Code:
PB_MegaX.Image = HasMega[mons[ind].Item1][0] ? new Bitmap((Image)Properties.Resources.ResourceManager.GetObject("MegaStone" + mons[ind].Item1.ToString("000") + ((HasMega[mons[ind].Item1][0] && HasMega[mons[ind].Item1][1]) ? "_X" : string.Empty))) : new Bitmap(16, 16);
  PB_MegaY.Image = HasMega[mons[ind].Item1][1] ? new Bitmap((Image)Properties.Resources.ResourceManager.GetObject("MegaStone" + mons[ind].Item1.ToString("000") + "_Y")) : new Bitmap(16, 16);

I just made the pull request this morning, so it's normal nic0lette hasn't merged it yet.
 
  • Like
Reactions: Madridi

Leanny

Well-Known Member
Member
Joined
Feb 14, 2009
Messages
112
Trophies
0
XP
365
Country
Gambia, The
No, I mean this is the content of your pull request:
101a33a180.png

So maybe something went wrong with it?

But anyway, you did basicly the same as I did :)
 
  • Like
Reactions: Madridi

supercarotte

Well-Known Member
Member
Joined
May 21, 2015
Messages
691
Trophies
0
Age
30
XP
948
Country
France
No, I mean this is the content of your pull request:
101a33a180.png

So maybe something went wrong with it?

But anyway, you did basicly the same as I did :)

Oh crap I forgot to push my local changes to my github first :rofl: Okay, now I need to delete this pull request...

EDIT: I've found where the number of lollipops usable is stored in the game's files so I'll try to implement that before opening another one.

EDIT 2: For those interested by it in the meantime, the code I use to get the max number of lollipops for a pokemon is
Code:
int raiseMaxLevel = (BitConverter.ToInt16(data, 0x4)) & 0x3F;
//data is the 0x24 byte sequence in pokemonData.bin that corresponds to this pokemon
 
Last edited by supercarotte,
  • Like
Reactions: Madridi

tomx86

Well-Known Member
Member
Joined
Jun 3, 2015
Messages
779
Trophies
0
Age
38
XP
2,200
Country
Poland
Oh crap I forgot to push my local changes to my github first :rofl: Okay, now I need to delete this pull request...

EDIT: I've found where the number of lollipops usable is stored in the game's files so I'll try to implement that before opening another one.

EDIT 2: For those interested by it in the meantime, the code I use to get the max number of lollipops for a pokemon is
Code:
int raiseMaxLevel = (BitConverter.ToInt16(data, 0x4)) & 0x3F;
//data is the 0x24 byte sequence in pokemonData.bin that corresponds to this pokemon
Where to get the 1.3.6 version?
 

supercarotte

Well-Known Member
Member
Joined
May 21, 2015
Messages
691
Trophies
0
Age
30
XP
948
Country
France
Where to get the 1.3.6 version?

What do you mean ?
The game files are in extdata, so you'll need to dump Shuffle's extdata with JKSV for example (then uncompress them with SciresM's unpacker).
If you mean the "1.3.6" version of PSSE, it hasn't been released yet. I just commited a few things based on what I said in my previous posts on my PSSE fork but I didn't submit a pull request to nic0lette yet.
 

tomx86

Well-Known Member
Member
Joined
Jun 3, 2015
Messages
779
Trophies
0
Age
38
XP
2,200
Country
Poland
What do you mean ?
The game files are in extdata, so you'll need to dump Shuffle's extdata with JKSV for example (then uncompress them with SciresM's unpacker).
If you mean the "1.3.6" version of PSSE, it hasn't been released yet. I just commited a few things based on what I said in my previous posts on my PSSE fork but I didn't submit a pull request to nic0lette yet.
Okay, thanks I'll wait for the release.
 

Leanny

Well-Known Member
Member
Joined
Feb 14, 2009
Messages
112
Trophies
0
XP
365
Country
Gambia, The
I did not read everything here yet, but I have a question about one of the code changes:
Code:
            // Stop showing 0 for the level...
            NUP_Level.Value = level > 0 ? level : 1;

Why? This does not work 100% of the time, because when I see a Pokémon it will appear in the list but as level 0, so this sets all of the levels to 1, even if you do not own the Pokémon yet. I will look into a solution for this...

Edit: Alright... I did not found anything :/ At least for Zygarde. It seems like they flipped a bit somewhere, but I cannot find it rn :(
 
Last edited by Leanny,

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    BakerMan @ BakerMan: +1