Jump to content

codemonkey85

Innovator
  • Posts

    1162
  • Joined

  • Last visited

  • Days Won

    12

Everything posted by codemonkey85

  1. Pokémon stored in the party have more data than Pokémon stored in the PC. 100 bytes more, to be precise; that data is what stores the stats you are trying to edit. Whenever you deposit a Pokémon into the PC, that data is removed. When you withdraw it, the data is recalculated. So there is no way to prevent those stats from resetting if you deposit the Pokémon. Unless maybe you hack the ROM to change the data structure of the save file.
  2. I believe Pokesav has a problem with Platinum save files, when it comes to recognizing which part of the save is the current as opposed to the backup. Try using my PKM Box program instead. Beware that the save file structure must be 512kb raw (the default structure).
  3. You can convert PKM files between PC storage and party formats using my tool.
  4. This is what I don't get. You're converting the data in your byte array the hard way. Just do it the easy way. Instead of doing this: Dim PID, PIDhex As String 'sets the PID equal to the hex value PIDhex = String.Format("{0,2:X2}", data(3)) + String.Format("{0,2:X2}", data(2)) + String.Format("{0,2:X2}", data(1)) + String.Format("{0,2:X2}", data(0)) 'converts the PID to long PID = Long.Parse(PIDhex, Globalization.NumberStyles.HexNumber) Do this: Dim PID As UInt32 PID = BitConverter.ToUInt32(data, 0) That is of course assuming that "data" is a byte array containing the PKM file data. And anywhere that you use Integer you should switch to unsigned integers; either UInt16 or UInt32 depending on the size. In other words, the ID and SID are two bytes each, so they should be UInt16. And you don't need to "convert" them to binary to do a bitwise operation on them. When I get home I will examine my shiny code and make further suggestions.
  5. I assume that info also includes how to tell which save file blocks are more current? And perhaps how to generate the checksum for said blocks? Feel free to donate what you have so I can write up a virtual Pal Park program! Geez, am I going to end up adding GBA support to my library too...?
  6. To turn this data into a video matching the in-game videos would be massively complex. I mean, does anyone know how to call the RNG to decide where the bubbles go in Bubble, for example? That's assuming someone is savvy enough to get the animation down in the first place. And no, you can't change text like that by editing the save file, since that text is stored in the ROM itself.
  7. 0_o No offense, but I seriously doubt that is going to happen. Unless of course it is extremely simplified. The rest of it seems easy enough though. Just a bunch of index numbers and booleans, I bet. Get in touch with Jiggy-Ninja, I think he knows the location of the battle videos. He also thinks they're in their own block in the save structure, by the way, which means they might carry their own footer / checksum / etc.
  8. It seemed like a good idea for it to be immediately visible, since there is a disclaimer in there to keep me / us from getting sued.
  9. Just as an FYI to all those out there, this project is long dead. You can see my new stuff here: http://projectpokemon.org/forums/showthread.php?20984-PKMDS-Code-Library-Gen-V Hello all, I've finally decided to publicly release my PKMDS code library! It is attached to this post. Feel free to ask any questions you might have about how to use it. Please note that this library was written in VB.Net and compiled on / for a Windows machine. To use it you need the latest .Net framework from Microsoft. Enjoy! SOURCE: See attachment. For all imagery used in the software, see here. If you would like the entire Visual Studio Solution, you can find it here. WHAT IS THIS? It has been a goal of mine for some time to create a code library for people to write their own Pokémon DS save file / PKM file viewing and editing software. What does this mean to you? See the below image: [url]http://i162.photobucket.com/albums/t257/codemonkey85/PKM_Directory_Preview.png[/url] In theory, any person who writes Windows applications in VB.Net or Visual C# should be able to import my .DLL file into their project and recreate the above program (and many others) with minimal coding and without the use of any other external files. As evandixon from the Project Pokémon forums said, "When this is finished, nearly everyone can make a PokeMod [Pokémon save hacking program] themselves". CURRENT FEATURES: -The ability to open and read any Pokémon DS save file (in raw 512kb format) created by Diamond, Pearl, or Platinum. -The ability to open and read any PKM file, or any encrypted and shuffled Pokémon BIN file (136 byte storage or 236 byte party format). -The ability to make some edits in the aforementioned files. -A full collection of Platinum front sprites and box icons for representing the Pokémon being read (including shiny and all alternate formes). -Some other Pokémon DS imagery, including PC storage wallpapers, status symbols, type symbols, etc. -Foreign character support for in-game names. MORE TO COME: -Eventually full unrestricted editing of PKM files and save files... right now a lot of properties of the various classes / structures are read only, because it seemed like less of a headache to code at the time. In retrospect that was not a perfect plan. -There's more, which will be added to this readme as I think of it. FAQ: Please see the thread at Project Pokémon. [url]http://projectpokemon.org/forums/showthread.php?p=40202#post40202[/url] SPECIAL THANKS: COM - For creating Pokesav and inspiring everyone to do better than him. Sabresite - For helping me get started and giving me an endless supply of helpful advice. Also the PKM character to Unicode conversion table, and basically the entire structure of PKM data. SCV - For dedicated patience and problem solving ability, not to mention encouragement. Also thanks to the above for the handy save block checksum algorithm. Jiggy-Ninja - For hard work and unrelenting help, specifically the Pokédex and Trainer Card signature data structures. Also for pointing out stupid mistakes. Poryhack - For, among other things, the ribbon images. Kazumi - For the Pokémon DP font (which I still can't seem to use right...) mingot - For basically giving me the PID / IV relationship code, YOU SAVED MY LIFE. fenzo and coolbho3000 - For creating and maintaining an awesome Pokémon community. damio - For helping tremendously with Friend Codes and general questions here and there. loadingNOW - What doesn't this guy do? Thanks for the save file documentation, and thanks for whatever else I got from you directly or indirectly. Bulbapedia & Serebii - For being handy reference. Legendary Pokémon - For being a source of data. X-Act and really Smogon in general - For answering some questions, and providing the stat formula. GatorShark - For demystifying the Spinda spot rendering process. Mastermind_X - For the Platinum sprites. Also you're basically all awesome. So cheers! DISCLAIMER: Pokémon and all respective names & images are trademark & copyright of Nintendo & Game Freak 1995 - 2009 PokemonDSLib_2009_WITH_SOURCE.zip PKMDS_VIEWER.zip
  10. evandixon, I thoroughly approve of this thread and all that it stands for! I will help you research this when I am done with my current mini-project (or maybe sooner).
  11. Wow, I was busy for a couple days and this thread explodes. ;p Thanks GREENCAT!
  12. I'd like one with a shiny Leafeon, please! I would love it if you could more or less emulate the sparkles that always came out with Ash's Noctowl in the anime. Unfortunately I have no ideas for poses or anything like that. Something action-y would be best though; my Leafeon is a head-on attacker, so something that conveys that would be nice? Sorry if that's not specific enough.
  13. Good deal! I might devote a little time tonight to uploading some random Pokémon to try and bug your site out. I'll post here if anything interesting happens.
  14. I took a VB beginner's course recently because I have to (college degree and all), and the teacher knew nothing at all about binary file handling. I was disappointed to find this out when I asked him some questions. But anyway. Just remember that VB handles a lot of things for you. Don't go reinventing the wheel; if you need to do some kind of bitwise operation or conversion, look and see what VB has to offer first.
  15. Wow, that's pretty handy. This is exactly the direction I think people were hoping this project would go in. Great job! EDIT: Andy, I just tested a random Pokémon, and it seems the IVs are being read incorrectly. I've attached it for you to have a look-see. According to your site, the IVs are 0, 17, 5, 29, 17, 13. Here is what the PKM looks like in Legal: 017_arceus.pkm
  16. EDIT: Ah, son of a gun. Jiggy got me again. The information for Fateful Encounter, gender, and alternate forms are stored in completely separate bits of the bytes at 0x40-0x41. Look at the two bytes this way: 0|0|0|0 0000 0000 0000 Where Blue is the flag for Fateful Encounter, Red is the flag for female, dark red is the flag for genderless, and the rest is for alternate forms. Bear in mind that the data is stored in little-endian, which means the bits (and bytes) go from least significant to most significant from right to left.
  17. Could you post the save file after Pokesav-ing it?
  18. It is worth asking about this though: Also, if you don't want to do the gender check manually (and if you are not validating the legality or integrity of the Pokémon data all that vigorously), you should see bytes 0x40-0x41.
  19. My typical handle always used to be 347Studboy; 347 which is leet for "eat", which is always fun, and Studboy because I thought it was funny at the time. I regretted that one a bunch. So then a friend of mine said I should go by Codemonkey instead, and I have ever since. I usually append 85 to the end (my birth year, original, eh?). Codemonkey basically means I am a programming nerd.
  20. greentea, most of the database information I use came originally from Legendary Pokémon. Some of it had to be edited / revised / reformatted for my needs, but there's a bunch there that I think you will find useful.
  21. Nice going Jiggy. Don't worry if the GUI doesn't look like a work of art yet, you'll get there.
  22. Part of the problem I am seeing is that you are using decimal instead of hexadecimal for your offsets. In VB you use the prefix &H to specify hex instead of decimal; so 38 should actually be &H38, 39 should be &H39, and the next two are actually &H3A and &H3B. Why are you doing it this way, anyway? How about doing this instead: IV = BitConverter.ToUInt32(DATA, &H38) The BitConverter class will automatically put your number together. DATA is your byte array, and &H38 is the starting offset. Easy, right?
  23. Where mIVsAndEtc is an unsigned 32 bit integer consisting of the values at 0x38-0x3B: HP = (mIVsAndEtc >> (0)) And &H1F Attack = (mIVsAndEtc >> (5)) And &H1F Defense = (mIVsAndEtc >> (10)) And &H1F Speed = (mIVsAndEtc >> (15)) And &H1F SpAttack = (mIVsAndEtc >> (20)) And &H1F SpDefense = (mIVsAndEtc >> (25)) And &H1F That's basically what my code looks like.
  24. Ah, well, I'm not too concerned with that particular graphic. If I ever do code a "virtual Pal Park" (unlikely since I have practically no info about the GBA saves), I will probably just use a border or backcolor to highlight the selected Pokémon.
×
×
  • Create New...