Jump to content

codemonkey85

Innovator
  • Posts

    1188
  • Joined

  • Last visited

  • Days Won

    17

Everything posted by codemonkey85

  1. Wow, what a pain in the neck. Hm. Well, that covers the important stuff. Since I already have the aforementioned text table and months of experience in hacking DS saves, this is all the info I need to do... everything. Thanks! ---------- Post added at 07:08 AM ---------- Previous post was at 06:38 AM ---------- Couple questions: If Block ID only goes to 0xD, does that mean there are only 14 blocks instead of 16? You say that each block has a save ID, but some data crosses block boundaries. Does that simply mean half of the blocks comprise the current save and half comprise the backup, like in DS saves? And data within one half can cross block boundaries within that same half?
  2. Since Jiggy-Ninja made a new thread for PPSE, I am closing this one.
  3. Check out my thread for backing up and restoring retail carts. The only thing is that it only backs up half of a Platinum save file, so make sure to save twice before backing it up.
  4. So the data type of this array is Byte? Or is it String? Because if it is a Byte array, it would be much easier for you to arrange the data in a line-by-line format, so you can simply use the index number as a sort of pointer to the correct data in the file. If it is a String array, then I insist that you are doing things the hard way.
  5. This isn't meant for personal use; I plan to add Pal-Parking as a feature in my code library, and I know PPSE will have such a feature as well. It's meant so that you can import Pokémon from GBA games to DS games in a way that is 100% legal and accurate. Not to mention the million other uses I could think of if one were able to extract PKM data from GBA games, like mass-dumping of PKM files for instance.
  6. I don't think you're understanding what the Move Tutor does with Heart Scales. You can't re-teach your Pokémon moves based on what it used to know; only level-up moves that it could have learned at that point, and only for the evolution level the Pokémon is currently at. This is how the ROM functions, so no save editor can change the moves your Froslass can learn via Heart Scales. EDIT: I just re-read your post and now I'm a bit confused. Did you try scrolling the list of available moves? It should be able to learn anything listed here.
  7. I would like to open this discussion up, for sure. For starters, do you know the overall placement of the blocks comprising the GBA save files, and what purpose each block serves? Do you know how to tell which blocks are current and which are backups? There appears to be info out there already for how to calculate block checksums and how to encrypt / shuffle PKM data in the GBA, so if the above questions are answered, I may start digging into GBA save files this week to see if I can extract Pokémon data. At that point, it should be easy enough to convert that data into the DS structure. Then a "virtual Pal Park" app should be doable.
  8. I do not understand what you are doing. Your database will be in an external text file? What format is the data going to be stored in? How are you performing these searches? What is this "hex array" you are referring to... is it a String array? Those numbers are just index numbers. You could easily make a List(Of String) and add each move to that list at startup. Then you could pull the name of a given Move by using List(index), where index is the number of that move. Either 100 or &H64 would pull up the same move. FYI: When I first started PKMDS, my data was also in external files, in CSV format. In order to obtain info, I would iterate through the file, reading one line at a time, and splitting each line into a string array using String.Split(","). Later I wisened up and began hardcoding my data, so now I use Dictionaries (basically hashtables) for lookup. It's much faster and more reliable than external files, and there is minimal (if any) data conversion necessary.
  9. Why? VB knows that 1 is the same thing as &H1, just like it knows 10 is the same thing as &HA. There's no need to convert anything as far as index numbers are concerned; the 1 - 467 will be fine.
  10. Well, there is of course Bulbapedia for a simpler presentation. But the data at Legendary Pokémon is much more comprehensive. The number of the move (on the leftmost column) is the decimal representation of the "hex value". OT gender is mentioned in the Pokémon data structure article for the NDS, in both Bulbapedia and our own wiki. It's stored as a bit in byte 0x84 of the PKM data.
  11. Personally, I would include just about every aspect of a PKM for searches (in fact I plan to), including the above, and also including things such as markings, Nature, shininess, PokéRus status, IVs / calculated stats, held items, and so on.
  12. Here it is, if you want to see it. And here's how I basically use it:
  13. I see. Well, like I said, I suppose I will just write a function to return a byte array instead of a DPSaveFile or PtSaveFile. Hopefully that byte array can be serialized into one of those structures; if not, I suppose you could always work with the data manually.
  14. As far as a PokéText dictionary / string conversion formula goes, Jiggy and I have both done this. I know for my part that the function I wrote will take a string of any size and output the PokéText data as a byte array (including an optional boolean parameter for whether or not to append the FF FF terminator). Conversely, I wrote a function that will accept such a byte array and turn it into a string. Am I misunderstanding your intentions? And I also wrote a function that accepts a filename, determines which kind of save format to use, and returns an object of the matching type. Right now there are two structures to choose from, either DPSaveFile or PtSaveFile. I am using binary serialization to load / save these structures. Jiggy-Ninja and SCV did something different here; I believe Jiggy wrote a series of constructors to obtain the data from a "file vector" or somesuch Qt terminology. Unless you are referring to .DUC, .Sav, and all of those formats. You should take a look at my source one day, if you can manage to read VB.Net without a brain hemmorhage.
  15. Overloaded functions cannot differ by only return types, so I will have to name it as a separate function if I want to do it that way. So ASP.Net cannot read files using streams? That seems like an odd limitation. evandixon, do you mind pasting the specific code you used to open the save file? As for documentation within the .DLL, that is something I plan to do. I will document it using commentation and XML tagging. However, there are thousands of lines of code to go through, so it will take me a while.
  16. WRONG. A shiny Pokémon can have all 31 IVs. Scarling, did you use the PID / IV button in Pokesav? Is that what you mean by "resetting the PID"? It looks like the TID / SID / PID combo results in a legal shiny check, so I'm not sure what else could be causing your problem.
  17. I am interested in your Tyrogue. Let me know if / when you are available. I'll be online for a little bit now before I go to bed.
  18. 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.
  19. 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).
  20. You can convert PKM files between PC storage and party formats using my tool.
  21. 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.
  22. 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...?
  23. 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.
  24. 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.
  25. 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.
×
×
  • Create New...