-
Posts
1188 -
Joined
-
Last visited
-
Days Won
17
Content Type
Profiles
Pokédex
Portal
Technical Documentation
Pages
Tutorials
Forums
Events
Downloads
Gallery
Blogs
Everything posted by codemonkey85
-
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
-
Saves Wanted - Platinum Save R&D: Battle Videos
codemonkey85 replied to evandixon's topic in Saves - Research
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). -
Korean Pokemon Updates Leaked by Chycorita and Orcamania5
codemonkey85 replied to chycorita's topic in Generation 4
You should see this thread for backing up your retail save files.- 44 replies
-
- chycorita
- information
- (and 12 more)
-
Wow, I was busy for a couple days and this thread explodes. ;p Thanks GREENCAT!
-
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.
-
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.
-
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.
-
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
-
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.
-
Could you post the save file after Pokesav-ing it?
-
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.
-
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.
-
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.
-
Nice going Jiggy. Don't worry if the GUI doesn't look like a work of art yet, you'll get there.
-
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?
-
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.
-
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.
-
This should cover ya.
-
Um, which yellow dot would that be? And what would I need it for?
-
That's called "concatenation", FYI. And feel free to post here or contact either Jiggy-Ninja or myself if you have further questions. (I love it when people start programming, it means more help with projects in the future!)
-
You know Andy, to be honest, all of my database information is hardcoded into my core library as dictionary objects (essentially hashtables). I'm not sure if this is viable or practical in a PHP / internet setting, but it works for me, because I don't have to supply any external files aside from the library .DLL during distribution. And after I initialize the dictionaries (which takes a few seconds), the lookup speed is pretty instantaneous as far as I can tell. EDIT: Hm, I almost accidentally edited your post instead of mine. I have done and can help you with the above things. Ribbons were extracted by Poryhack, and I have those as well as images for every item. Let me know what you need, or meet me on #PP-Research on the IRC.
-
Andy, good to hear from ya! I don't know PHP in the slightest, but I will help out with PKM reading as a general procedure, since I have had bags of experience with that.
-
Thanks! Inheriting from PicutreBox seemed the way to go, but the next challenge will be multiselecting Pokémon. Incidentally, did you get my PM?
-
I think SCV knows about the GBA save file structures, but not too many other people do. All I know is that the save file is split into sixteen (!) different blocks, all with their own checksum, and that those blocks shift positions relative to each other (or something like that).
-
randomspot: Cool, just let me know when is a good time to meet on wifi. Earthix: Well, if you insist. Meet me on IRC, or else PM me with a good time to meet up.