Jump to content

PKMDS Save Editor (Gen V for now)


codemonkey85

Recommended Posts

  • Replies 107
  • Created
  • Last Reply

Top Posters In This Topic

Looks pretty cool. Not ready to switch to using that over PokéGen since this looks like it does Pokémon editing and nothing more, but I think the interface for Pokémon editing looks better on PKMDS.

I may consider using it for Pokémon editing if I need to, provided it does edit everything properly.

Link to comment
Share on other sites

...this looks like it does Pokémon editing and nothing more...

It is still a work in progress, but there might be a little more....

PKMDS-G5-Desktop-Report.PNG

EDIT: I was playing around with release builds today and I have to say, the Qt application is much faster. Not sure if I can do much to speed up the Visual C++ version, so maybe I'll have to take another stab at distribution of the Qt app after all.

Edited by codemonkey85
Link to comment
Share on other sites

Could you upload a ZIP file of the latest working copy, please?

Ah, what the heck, why not. It's not nearly finished, but it seems to be doing everything it does correctly. Do me a favor anyway and tell me if you have any problems running it - you might need to install the VC++ runtime, but this is as good as any a way to be sure.

You can download it from my Dropbox: https://www.dropbox.com/s/gt5rgv80rj72ajq/PKMDS%20Desktop%20-%20Qt.zip

Link to comment
Share on other sites

The program can't start because D3DCOMPILER_4.dll is missing from your computer.

Try reinstalling the program to fix this problem.

After I encountered the error, I downloaded it and placed it in my system32 folder and attempted to run the program, and nothing appears (not even the error pop-up)

Windows 7 Ultimate, 32-bit OS.

Link to comment
Share on other sites

If you downloaded that DLL from a DLL hosting site, you're gonna want to delete it. Instead, make sure DirectX is installed and running the latest version. Also, I just updated the zip file, so if you don't mind, please download that and try running it.

On my Windows 8 laptop, there wasn't the prompt for the dll (I'm on DirectX 11).

When I run the program, it doesn't pop-up anything, and doesn't appear in task manager.

Link to comment
Share on other sites

I believe I figured out the problem - a couple of the required DLLs had to be in a subfolder. That seems to have done it for my work computer anyway.

If you would download the new zip and try one more time, I would really appreciate it. :-D

It's working now, and my Pokemon are displayed properly!

I'll compile my testing results shortly

Beta Test EDIT:

Findings (these might be glitches on my end):

1. Unown ? did not load (showed Unown A, type became blank)

2. Arceus of other types did not load (Arecus sprites had no change, type blanked)

3. Ability "Teravolt" is missing

4. Genesect other formes did not load

5. Shiny Keldeo Normal Forme did not load

6. Pichu with "extra forme" sprite did not load.

[Example Keldeo in Resolute forme, then one switches to Pichu.

Technically this pichu cannot exist in gameplay (forme bit will need to be corrected at this change).

Aesthetic wise, all other Pokemon image loaded, but Pichu's sprite turned up blank]

Possible functionality errors or not implemented:

1. "Origins" are blank

2. Lack of Identifier/tab/selection for "N's Pokemon" or Pokemon with "Pokestar Shine"

3. Ribbons page is blank

4. unable to create/shift Pokemon

5. boxes on the right scroller are empty (I'm not sure if you had anything in mind for that....)

6. Lack of Forme change tab

7. Unable to change PID

Extra Test: Box 4 Slot 30

On my Save file, I've already had a "Brycen-man" in my PC.

Interesting, your program picked up and showed me all the information,

except for:

1. Species and ID

2. Ball used

3. Type

4. Ability

5. Sprite (both in Box and in Edit Menu)

6. Level and experience

I was thinking, do you intend to Null over this kind of data (so that people can't change it, akin to Pokegen), or support it?

I've attached the .sav created for sprite testing

testing3.sav

testing3.sav

Edited by theSLAYER
Beta Test
Link to comment
Share on other sites

EDIT: Added bugs to the bug tracker on Github. https://github.com/codemonkey85/PKMDS-G5/issues?labels=bug&page=1&state=open

Wow. You are thorough. I don't mind telling you, I think your input (and that save file) is going to be a tremendous help. Just remember though, this is a very rough application in progress.

Let's see....

Findings (these might be glitches on my end):

1. Unown ? did not load (showed Unown A, type became blank)

2. Arceus of other types did not load (Arecus sprites had no change, type blanked)

3. Ability "Teravolt" is missing

4. Genesect other formes did not load

5. Shiny Keldeo Normal Forme did not load

6. Pichu with "extra forme" sprite did not load.

[Example Keldeo in Resolute forme, then one switches to Pichu.

Technically this pichu cannot exist in gameplay (forme bit will need to be corrected at this change).

Aesthetic wise, all other Pokemon image loaded, but Pichu's sprite turned up blank]

  1. I will look into that.
  2. I'm pretty sure I already knew I didn't implement that, but now that you have me thinking of it I might as well get it in there now.
  3. Very odd, I'll check it out.
  4. See my response to Arceus.
  5. I'll look at that.
  6. I was just going to ignore this but I suppose it wouldn't be that hard to implement a fix for Spiky-Ear Pichu. At the very least I could simply show the normal sprite.

Possible functionality errors or not implemented:

1. "Origins" are blank

2. Lack of Identifier/tab/selection for "N's Pokemon" or Pokemon with "Pokestar Shine"

3. Ribbons page is blank

4. unable to create/shift Pokemon

5. boxes on the right scroller are empty (I'm not sure if you had anything in mind for that....)

6. Lack of Forme change tab

7. Unable to change PID

  1. This was my next task, and as a matter of fact I'd already finished it in the VC++ sister project.
  2. N's Pokémon will go in origins, Pokestar might be totally ignored like the contest stats. Is it really important? I suppose I could add it.
  3. Ribbons are likely the last thing I'll do, because they will be a nightmare. I have all the assets, just have to do the work.
  4. Moving Pokémon around in the boxes / party is a top priority, but I have to figure out how to do it in Qt (I'm going to do drag and drop of course). Creating Pokémon is a mite trickier... people might forget the little details, so I am thinking of a way to help make it easier. Or I guess I could just let the user do it the hard way.
  5. Oh, I have something in mind for that all right.
  6. Not sure where I want to put this yet.
  7. Unfortunately this is harder than it should be (because of how big the PID actually is). Gonna have to make a custom control in Qt, I think.

Extra Test: Box 4 Slot 30

On my Save file, I've already had a "Brycen-man" in my PC.

Interesting, your program picked up and showed me all the information,

except for:

1. Species and ID

2. Ball used

3. Type

4. Ability

5. Sprite (both in Box and in Edit Menu)

6. Level and experience

Haha, wow. I didn't expect something like that to show up in a SAV file.

I was thinking, do you intend to Null over this kind of data (so that people can't change it, akin to Pokegen), or support it?

Well I can't pretend it's not there, can I? What if you have one of these in a box, but it's invisible... what happens if you fill the box with other Pokémon? Do I now erase Brycen-Man? But I also have no intention of supporting such things, especially since they're not a part of the backend database I'm using. I'll have to give this some thought... maybe for cases like this I'll just show a ? and let the user do what they like with that.

Edited by codemonkey85
Link to comment
Share on other sites

EDIT: Added bugs to the bug tracker on Github. https://github.com/codemonkey85/PKMDS-G5/issues?labels=bug&page=1&state=open

Wow. You are thorough. I don't mind telling you, I think your input (and that save file) is going to be a tremendous help. Just remember though, this is a very rough application in progress.

Thank you! I am more than happy to help!

I happened to have a rough idea of what to check, because I've had to test my previous application as well heheh.

I understand that this is the beta of the beta, But I feel that it's good to be able to find errors to rectify early on,

before the code becomes a complete mess and you lose your sanity.

I was just going to ignore this but I suppose it wouldn't be that hard to implement a fix for Spiky-Ear Pichu. At the very least I could simply show the normal sprite.

Hahah if only Gen 5 has Spiky-Eared Pichu. -sigh- Nintendo, why you take them away!

Anyway, another prevention for this issue is to only allow correct bits for formes to be written, for species with non-formes.

Though certain users might have created Pokemon with the wrong forme bit (bad creations), so maybe a identifier?

This was my next task, and as a matter of fact I'd already finished it in the VC++ sister project.

That's great, I can't wait to see it!

N's Pokémon will go in origins, Pokestar might be totally ignored like the contest stats. Is it really important? I suppose I could add it.

Depends on user. Maybe some user can't find/create shinies and likes the entrance animation, but has no clue on how to search the forum for relevant information? ><

Ribbons are likely the last thing I'll do, because they will be a nightmare. I have all the assets, just have to do the work.

Yes, yes it is.

Moving Pokémon around in the boxes / party is a top priority, but I have to figure out how to do it in Qt (I'm going to do drag and drop of course). Creating Pokémon is a mite trickier... people might forget the little details, so I am thinking of a way to help make it easier. Or I guess I could just let the user do it the hard way.

Maybe in the mean time you can add in a clone and delete option?

Cloning can be used as a based of a Pokemon, than users change PID afterwards.

Delete can be used to remove bad eggs or generally stuff they don't want no more.

Not sure where I want to put this [forme change] yet.

Perhaps below Species name? I mean, after all, forme is linked to species. It can disappear when the species has no alternate forme.

(also, when changing species, the forme bit needs to change to the correct bit)

Unfortunately this is harder than it should be (because of how big the PID actually is). Gonna have to make a custom control in Qt, I think.

I was thinking for simplicity sake, you can start of with a manual PID insertion,

and when you time frees up, then you proceed with PID generation?

Haha, wow. I didn't expect something like that to show up in a SAV file.

Well I can't pretend it's not there, can I? What if you have one of these in a box, but it's invisible... what happens if you fill the box with other Pokémon? Do I now erase Brycen-Man? But I also have no intention of supporting such things, especially since they're not a part of the backend database I'm using. I'll have to give this some thought... maybe for cases like this I'll just show a ? and let the user do what they like with that.

Since it was already on my save (used it to test my PSI), I decided to go along with it.

Using existing save editors for comparison sake, Pokegen does not show the values (though the Pokemon will be still there).

Since one "can't see it on Pokegen", it's common to "Set" (overwrite) another creation/entry over it.

Similar to bad eggs, in normal game play they take up actual slots, and catching Pokemon will not overwrite it.

I was considering such occurrences to be split to two distinctions:

1. Bad Eggs - Slots entirely corrupted, no proper ability or name or species etc

2. Question marks - Partial corrupted/Pokestar Studio/Missingnos.

All in all, it's a beautiful program :)

Link to comment
Share on other sites

Just so you know, I fixed a good portion of the issues you brought to my attention. Thanks again for the input!

Hahah if only Gen 5 has Spiky-Eared Pichu. -sigh- Nintendo, why you take them away!

I won't pretend I care all that much about SE Pichu, but I will admit it doesn't make a lot of sense to have just dropped it. What game are you playing, Nintendo?

Perhaps below Species name? I mean, after all, forme is linked to species. It can disappear when the species has no alternate forme.

(also, when changing species, the forme bit needs to change to the correct bit)

That's not a bad idea. I'll have to squeeze it in somehow.

I was thinking for simplicity sake, you can start of with a manual PID insertion,

and when you time frees up, then you proceed with PID generation?

Actually, the problem isn't so much generation (which I haven't even started thinking about yet), but the value of a PID takes up four bytes, which is just beyond what the number picker can handle. I'm going to have to either subclass it and use uint32 for the value instead of double, or I'm going to have to use a text box and figure out how to restrict entry to numbers.

All in all, it's a beautiful program :)

Well thank you!

Link to comment
Share on other sites

Just so you know, I fixed a good portion of the issues you brought to my attention. Thanks again for the input!

No problem! Once you upload the latest version, I don't mind helping you test!

Plus, I've have yet to try to load any edited saves, for checksum testing etc.

I won't pretend I care all that much about SE Pichu, but I will admit it doesn't make a lot of sense to have just dropped it. What game are you playing, Nintendo?

I usually dislike them removing content they added, it feels like regression to me.

Actually, the problem isn't so much generation (which I haven't even started thinking about yet), but the value of a PID takes up four bytes, which is just beyond what the number picker can handle. I'm going to have to either subclass it and use uint32 for the value instead of double, or I'm going to have to use a text box and figure out how to restrict entry to numbers.

I forgot if I used uint32 (my solution is on another computer), but you won't have to necessarily stick to only numbers entry.

You have a "checkbox" for number or HEX view right?

This is slightly extra tedious, but you can have a "check_changed" sub, and two text boxes.

Like when "Hex" is checked, you "PID number" textbox will be disabled, and in the same place "PID HEX" will be enabled and will be written on change.

Either that or a few extra lines in your sub to check if "checkbox is ticked" then "write as hex" else "write as number".

Well thank you!

:D

Link to comment
Share on other sites

I already wrote the code to show the PID as either decimal or hex. :-P The real trick is going to be figuring out how to allow the user to enter only valid data.

I've updated the .zip in my Dropbox. Thanks to a program called 'upx' the binaries are considerably smaller, so I would suggest downloading it once more, then in the future I will post only the updated .exe file (and the databases if I ever update those).

Link to comment
Share on other sites

I already wrote the code to show the PID as either decimal or hex. :-P The real trick is going to be figuring out how to allow the user to enter only valid data.

Hmmm.. maybe when text_changed is greater than allowed value, a "comment window" (not popups, those are annoying xD) states that value has to be smaller.

Textboxes also can have character limits in place.

And maybe as a fail-safe when "save changes" is selected, if PID is invalid it doesn't allow "save changes" until corrected?

I've updated the .zip in my Dropbox. Thanks to a program called 'upx' the binaries are considerably smaller, so I would suggest downloading it once more, then in the future I will post only the updated .exe file (and the databases if I ever update those).

Cool!! That will make it easier!

But if you don't post the binaries, what if new users only download the .exe file?

EDIT:

I've noticed a few new bugs:

  1. Therian forme sprites and types not showing
  2. Kyurem alternate formes types not showing, edit screen formes sprites not displaying
  3. Blanked out items (which to my understanding are leftover placeholders: 113 - 115, 120 - 133, 426 - 427)
  4. Items not showing sprites (TMs and HMs at 328 - 425, Data Cards at 505 - 531, TMs at 618 - 620, Key items at 626 - 637)
  5. In addition to key items, only one Xtransceiver, one Gene Splicer and one Dropped item is shown, when there should be two each.
    Xtransceiver @ 621 & 626, Gene Splicer @ 628 & 629, Dropped Item @ 636 & 637
    (I'm assuming that only one name is showing, because your list reference is by text.
    perhaps you'll like to go by selected_index instead? this way you can have duplicate item names)
  6. Reveal Glass @ 638 is missing, without placeholder in list.
  7. Dream ball is not in "ball used" list
    (I didn't realize this earlier as the only Pokemon which had Dream ball was Brycenman; I've noticed when I scrolled through the list)

Edited by theSLAYER
Link to comment
Share on other sites

FYI, here are the update links:

The exe file: https://www.dropbox.com/s/94fsbpzhlb1jfcc/PKMDS_QT.exe

An update to the database file: https://www.dropbox.com/s/lilo409wcj2ad1j/veekun-pokedex.sqlite

An update to the image database: https://www.dropbox.com/s/rtp7g052ise4lnv/images.sqlite

But if you don't post the binaries, what if new users only download the .exe file?

I'll simply have a link to both the zip and the .exe, and explain that they should start with the zip and download the .exe going forward. Actually, I'd really like to figure out how to get the app to update itself, but one step at a time. :-)

  1. Therian forme sprites and types not showing
  2. Kyurem alternate formes types not showing, edit screen formes sprites not displaying
  3. Blanked out items (which to my understanding are leftover placeholders: 113 - 115, 120 - 133, 426 - 427)
  4. Items not showing sprites (TMs and HMs at 328 - 425, Data Cards at 505 - 531, TMs at 618 - 620, Key items at 626 - 637)
  5. In addition to key items, only one Xtransceiver, one Gene Splicer and one Dropped item is shown, when there should be two each.
    Xtransceiver @ 621 & 626, Gene Splicer @ 628 & 629, Dropped Item @ 636 & 637
    (I'm assuming that only one name is showing, because your list reference is by text.
    perhaps you'll like to go by selected_index instead? this way you can have duplicate item names)
  6. Reveal Glass @ 638 is missing, without placeholder in list.
  7. Dream ball is not in "ball used" list
    (I didn't realize this earlier as the only Pokemon which had Dream ball was Brycenman; I've noticed when I scrolled through the list)

  1. Fixed.
  2. Fixed.
  3. I'll have to look for these. Not sure if they're missing from the code, the database, the images, or some combination. EDIT: I see what you mean. I'll have to see if Qt supports data bindings like Visual Studio, so I can use the database value instead of the selected index (which is what I currently use) so I don't have to pull in these "blank item slots" to keep everything lined up.
  4. The TMs and HMs I'll actually have to do "manually" (a couple database calls to get the type of the move in the given machine and then the image for that type), but I haven't gotten around to it yet. The others I'll look into. EDIT: Pretty sure I took care of the key items with a database update.
  5. That's... odd. I'll check it out. It might be stored that way (incorrectly perhaps) in the database.
  6. I'll look for that. EDIT: Fixed with a database update.
  7. Fixed.

Link to comment
Share on other sites

FYI, here are the update links

Downloaded!

I'll simply have a link to both the zip and the .exe, and explain that they should start with the zip and download the .exe going forward. Actually, I'd really like to figure out how to get the app to update itself, but one step at a time. :-)

Can't help you there, I never did figure that out ><

I see what you mean. I'll have to see if Qt supports data bindings like Visual Studio, so I can use the database value instead of the selected index (which is what I currently use) so I don't have to pull in these "blank item slots" to keep everything lined up.

What I did was to do a "ID number" check. When the ID is of a certain value no < x =< no,

then I'll add a number to the selected index, in order to write the correct value in.

The TMs and HMs I'll actually have to do "manually" (a couple database calls to get the type of the move in the given machine and then the image for that type), but I haven't gotten around to it yet.

The key items are mostly showing now, besides the duplicated names.

I've attached an excel file of which sorted TM and HMs by type, based on the information from bulbapedia, hope it helps

(Kindly rename the .txt to .xlsx)

Link to comment
Share on other sites

I've attached an excel file of which sorted TM and HMs by type, based on the information from bulbapedia, hope it helps

(Kindly rename the .txt to .xlsx)

Very kind of you! But I actually have all that info in the SQLite database I'm using; I just haven't written the queries yet.

Also of potential interest to folks: I uploaded a (semi) working build for Linux (specifically Ubuntu, if that matters?): https://www.dropbox.com/sh/knfycny5t8nh2ih/aTo-8YG8oQ

Link to comment
Share on other sites

Come and get it folks - PKMDS Desktop is now ready for use! Currently editing of Pokémon and changing the current box are the only real features. Importing, exporting, and removing Pokémon is next, probably closely followed by moving Pokémon around in the boxes and party.

NOTE: After thorough (and needlessly arduous) testing with the retail games, I can say that this application is correctly writing data to the save files and updating the checksums as necessary. However, feel free to inform me of any bugs encountered.

Also, you'll notice Ribbons are not yet implemented, there are no contest stats (does anyone care?), and the Misc. tab only contains a read-only PID for now. This application is still in-progress, mind you.

Get it while it's hot - https://www.dropbox.com/s/gt5rgv80rj72ajq/PKMDS%20Desktop%20-%20Qt.zip

Link to comment
Share on other sites

Hey I was just searching for pokemon editors and I came across this, which sounds like exactly what I wanted. When I downloaded your desktop version and tried to run it, the window is completely blank with absolutely no images. I attached the image of what it looks like. Could you please advise me on how to fix this? Thanks in advance

PKMDS Blank Windo&#11.PNG

583dcfd478575_PKMDSBlankWindo11.PNG.25b7

Link to comment
Share on other sites

Hey I was just searching for pokemon editors and I came across this, which sounds like exactly what I wanted. When I downloaded your desktop version and tried to run it, the window is completely blank with absolutely no images. I attached the image of what it looks like. Could you please advise me on how to fix this? Thanks in advance

The first page looks like that (for me as well).

Have you tried "> File > Load sav", as seen below:

wkpkev.jpg

Once you're done, the program will display your boxes.

21o1q34.jpg

Click on a Pokemon, and a pop-up showing the Pkmn will appear.

14bqnnq.jpg

It's a brilliant program, ain't it?

Link to comment
Share on other sites

You said this program was exactly what you were looking for. Have you ever edited a .SAV file before? Are you using a retail cart?

I've never done this, I just wanted to make a beast team to do my run-through of heart gold. I apologize for my inexperience but what am I to do?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...