Jump to content

codemonkey85

Innovator
  • Posts

    1188
  • Joined

  • Last visited

  • Days Won

    17

Everything posted by codemonkey85

  1. I don't entirely trust Pokesav with my save files, but it's pretty harmless as far as everything else goes. I dunno what would have caused your friend's problem there....
  2. This wasn't really a part of the list, or a goal for this thread, but I figured I'd post it here anyway. I have finally figured out how the Pokémon DS games figure out which Characteristic to display in the Trainer Memo in the case of a tie for highest IVs. Take the PID Mod 6, and that gives you the index number of a stat in this order: HP, Attack, Defense, Speed, Special Attack, Special Defense. In the event of a tie in IVs, the first IV checked is the result of the PID Mod 6. If that IV is not part of the tie, it moves on to the next index number in the aforementioned order. If it goes past 5 (Special Defense), it wraps around back to 0 (HP). When it finds an IV that is part of the tie, that is the IV that will determine the Characteristic displayed. Not bad, eh?
  3. The problem with GBA saves is that they are composed of 16 different blocks, each with its own checksum I believe, and they all rotate apparently. If we knew more about the save file structure and how the game handles these blocks, it would be much easier to write a GBA save editor.
  4. Ahh, ok. So what you're saying is that these ".BIN" files are just encrypted and shuffled versions of the .PKM files. Well that's easy enough to implement. When I get time I will update the program to load / save the files as .BIN files, just for kicks.
  5. Well, it turned out that missing byte is a CRC8 checksum. So it is not in the save file, but rather it is generated during gameplay. That checksum is how the game determines if an FC is genuine or not. By the way, I edited the first post to credit Jiggy for the 'Dex, and to add a bunch of other things to be found.
  6. I can't remember which program it is, but one of the save editors can output .BIN files instead of .PKM files... it might be DSPokeEdit, and I would check right now if I were home. I would suggest attempting to load the .BIN and see if this program will display the Pokémon's name and stuff like it does with regular .PKM files. There's a chance the file structure is the same, so if that is the case, it should work just fine. Does anyone really use that file type for this though?
  7. 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 people. As you may know, one limitation in adding Pokémon to your game using Pokesav is that you cannot load a PC Pokémon into your party. To be honest, it's a rather silly limitation. Thusly: I have created a tool for converting between the two types of PKM files. This is a Windows application, which requires the latest .Net Framework to run. Thanks go to SCV for clearing up the encryption method of the last 100 bytes in a PKM file; thanks go to Sabre for defining the structure of that data. And just so you all know, this is the first preview of a much bigger project I am working on, which hopefully will also be released (in a beta) rather soon. Feedback of any kind, whether comments, compliments, positive or negative, errors... is all welcome. Post here or PM me. EDIT: .BIN files (encrypted and shuffled .PKM files) are now supported. EDIT: As of June 06, 2009, this should be the last update I make... unless of course someone comes across a bug. I added sprites for the loaded PKM files, which will accurately reflect the sprite used in-game. PKMDS PC To Party Tool.zip
  8. Jiggy, I can't ever thank you enough for the work you are doing / have done. I didn't mean not to credit you there. Also, as lame as it sounds, I'm not doing much research anymore, as I am attempting to put what we do know into a code library for programmers. But some of the little things we don't know the location of, I do plan on getting to myself.
  9. Project Pokémon did not create Pokesav and does not update its programming content. That being said, some of us are working on writing software to replace Pokesav, and the Pokédex structure has been (mostly) reverse engineered, so it's just a matter of time now. If you would like to help us map out the rest of the Platinum save file, feel free to join the thread in my signature. The more help we get, the faster this stuff comes out.
  10. I am not sure why the result would be different, but here's what the VB.Net code converted to C# looks like for me (courtesy of this page.): private string PRNG(string seed) { string temp = ""; UInt64 t = default(UInt64); t = Convert.ToUInt64("0x41C64E6D", 16) * Convert.ToUInt64(seed, 16) + Convert.ToUInt64("0x6073", 16); temp = Conversion.Hex(t); if (temp.Length < 16) { for (t = 0; t <= 15 - temp.Length; t += 1) { //just to add zero temp = "0" + temp; } } return temp; }
  11. I'm not sure if this helps, but I believe you could open Pokesav in Visual Studio and edit the GUI using the IDE. If you have access to VS (or if the Express edition works that way), maybe that would work better for you.
  12. Well, according to the wiki, 0xD4-0xEB are seal coordinates, so that's not a footer. There is no footer as far as I know. In a little while when I have some time, I will run those files through some software of mine. But in the meantime, it looks like the checksum is probably different because the Encounter info is different (the infamous 0x85).
  13. What is it in that section that gets messed up by Pokesav? I get the checksum calculation being apparently wrong, but I do not understand how the moveset values could be incorrect without the user noticing an incorrect Move or PP amount.
  14. In Solaceon Town, there is an NPC who will tell you that "no one has ever seen a Pokémon lay an egg, so no one knows if they actually do lay eggs". Supposedly something could just be leaving the eggs there. Yeah. I know.
  15. Jiggy-Ninja, thanks again for your continued help. I am not sure about the fixing part. All I know for sure is that a copy of the Pokémon is made and reserved in the save file. Perhaps we should try uploading a Pokémon with some kind of error that this "GTS fix" can fix, and compare what was uploaded to what was backed up. I wonder if the backup would be fixed, or if the fix happens when you reclaim the Pokémon instead (meaning the fix happens on the Nintendo WFC servers).
  16. That's because Legality Checker does not check "obvious" things such as moves. PokéMod will check everything, but in the meantime it's pretty easy to check that stuff yourself. ;p I'll take a look at it anyway though. EDIT: Looks all right to me. EDIT 2: Upon closer inspection, it does not look all right. The Egg location should be 2000, or "DayCare Couple".
  17. When you say "footer", what part of the data are you talking about? Also, the size for a party Pokémon should be 236 bytes, not 235. When a .PKM file is generated, all of the data in that file should be decrypted. And I've never heard of Pokesav incorrectly calculating PKM checksums (not that it would surprise me). Can you post a .PKM file where the checksum was incorrectly calculated so that I may see it?
  18. Well, if you go back to the GTS, you can take the Pokémon you uploaded back out, or the trade was completed and you download the new Pokémon. Or, if there's a problem, the backup Pokémon is restored to the PC or your party. In any case, the backup data is presumably erased. I don't think the backup being any different from the actual GTS Pokémon would make a difference. I will have to experiment with it some more. EDIT: Added the game's friend code to the to-do list; where it's supposedly located in the save file, one byte appears to be missing from the FC value as seen on the Pal Pad.
  19. Great job so far, Jiggy! I still don't get why the data is spread out like that instead of in one big area. I guess it worked out better for bit packing or whatever. Thanks for posting that, SCV. I was on a little bit of a tangent there with the GTS thing, so I'm glad you had that done. Speaking of the GTS thing, turns out when you upload a Pokémon to the GTS, a copy is made and kept at 0x73E8 (party sized at 236 bytes). A lot of people will be surprised to hear that.
  20. Actually, while I completely agree with that assessment of both Pokesav and PokéMod, I meant "or even" as it won't be as much of an upgrade to Pokesav as PokéMod is. But I can see where that got confused, especially since it no longer makes sense to me. And anyway, I feel like I made my point with the last sentence in my post.
  21. Just FYI, because of the way I have restructured my code, it's actually ridiculously easy to save any part of the save file (that is mapped out), including individual save blocks, individual Pokémon, or even individual Pokémon data blocks as an external file. I may implement some degree of that at some point. But my program will never aim to edit files in the same manner as Pokesav, or even PokéMod for that matter. It was never really intended to. Besides, PokéMod will overshadow everything I accomplish in life (Sabre: ).
  22. I'm just now looking at these. ;p Hm, I don't remember seeing anything about wireless transfers between the DS and PC in the PokéMod feature list, and the last time I saw you mention it, you said it was a bad idea (at least doing it FTP style) due to leaving the user "vulnerable". How do you plan to implement this feature without using flash carts, anyway? I know you and some other people were working on the DS wifi protocol, but I didn't think you'd figured it out yet. Also, after doing some reading on the DS wireless stuff, I see that it may be impossible anyway, due to the DS' requirement of having zero latency. I'm not much of a networking guy, but that sounds difficult to manage with so many different machines running the PokéMod software.
  23. EDIT: By the way, here is a program I made for fixing the checksums in the Diamond and Pearl save files (Platinum support is next, hopefully soon). evandixon, I really do wish I could help you. But unfortunately I do not know how people even figure out checksum algorithms. I was lucky enough that one was documented (and later a more optimized one was discovered by SCV / Sabresite) for DPPt. I guess if I were to try myself, I would figure out what offsets relate to one aspect of the save (I think you said you found the name of your team somewhere), and see how changing it affects the save file. Try to change one character of your team name and see what bytes change. The checksum will be in there somewhere. Change the team name back to exactly what it was before, see what changes again. If something that changed before changes back to what it started as (other than the team name bytes obviously), then hey, there's the checksum. Then you can make other changes and try to infer the mathematical pattern. At least, I guess that's what you would do. Does anyone know of a sophisticated (or effective) way of plotting out these changes to find a formula? Like a T chart in linear systems of equations?
  24. Ahh, right. That. Here's what my config looks like:
×
×
  • Create New...