Jump to content

Codr

Former Staff
  • Posts

    1576
  • Joined

  • Last visited

Everything posted by Codr

  1. PokeGen hides the FFFF 0000 ... from you, since it's pointless for you to see it. The idea is that you don't need to think about it.
  2. When you load a file, regardless of what it is, it'll display any name bytes that aren't set as the game sets them. The games set most names (Pal Park and in-game-received eggs seem to be the exceptions, but there could be more) to <name> with 0xFFFF and 0x0 repeating until the remaining bytes are used up. When you just type in a normal name in PokeGen, it'll append 0xFFFF to the end with 0x0 repeating until all characters are filled, as the game typically does. Obviously if you put in the maximum number of characters, there isn't even room for 0xFFFF, which isn't what the game allows.
  3. If you use the proper program, you can find a PID without changing anything. *points at signature* You didn't change any of the unused bytes. In fact, the trainer name unused bytes are still set differently than how the games set them. Again, this is easily visible and fixable in PokeGen. lmao This is antiquated! So in summary: Pokesav makes things pointlessly difficult, there's no reason to use it for Pokemon editing.
  4. You don't need to worry about the raw values if you're using PokeGen. It sets them right for you based on what you select in the program. (Well, it's possible that there are still some bugs, but I know of none at the moment.) As I said in my previous post, 0x46 is a 2-byte value. Two bytes make up the number stored at this address. It's not 0xBA, it's 0x0BBA, or 3002, which I also said.
  5. The one in my signature can do it. It can also give you a shiny PID for any set of IDs.
  6. Surely you can understand Pingouin7's frustration. The majority of people here post without doing much, if anything, to help themselves prior to posting. They just want quick answers or work done for them with no effort or thought on their part.
  7. 2.301 - Fixed the positioning of the code input dialog when the main dialog is moved. - Added randomize IVs and EVs buttons. - Slightly changed some of the encounter names. - Fixed a crash that was occurring when switching code types under certain conditions. - Changed the country, origin, and shiny leaf comboboxes to not be editable, since they have such short lists. - Enabled tab key navigation on the code input dialog.
  8. 0x46 is a 2-byte value. Faraway Place is 3002, or 0xBBA. The data is being written correctly based on your input. I don't know which values are appropriate for what you're trying to do, though.
  9. Not only that, people that present things the way you have generally don't even have the knowledge or ability to make anything to begin with.
  10. Updated to: 2.3 - Added support for loading and saving of encrypted Pokemon files. - Added support for loading Pokemon from codes. - Writing to PCD and PGT files hasn't been working all this time. This has been fixed. - Changed the program's font to utilize ClearType rendering. - Fixed some potential problems with switching between code types. Loading a Pokemon from a code may be buggy. It supports party and PC codes only. However, you can also put in the raw data for a party or PC Pokemon by itself. (In hexadecimal dword format. Raw data should be 59 dwords for party Pokemon and 34 dwords for PC Pokemon.)
  11. I'd imagine it happens to everyone. It certainly does to me. I can't tell you how long it took me to wrap my head around the logic for the PID finder initially. I have no experience in Java and my only Python experience is from modding of a game that used it for what I guess would be considered modules. I doubt I won't understand either though, so feel free to post if you want.
  12. PokeGen can do this.
  13. It's amazing how much easier appropriate tools make things.
  14. There's a lot of skepticism that I place toward people I don't know. In almost every case, people make little or no effort to figure something out for themselves and just want answers. That infuriates me. I'm not saying that's what you're doing, and it's pretty obvious that it isn't, so I agree that it'd be more educational. If you're really that desperate, I suppose I can give a coded example in a PM. I thought about that after I made my post. You're right, it is essentially doing the work for people with the program, but not quite in the same way. I don't think I could accurately explain my views on the matter well enough to make any sense, so I'm not even going to try. Maybe it's just genuinely contradicting, I don't know. As you can see by my example rand() function, it sets the seed to the 4-byte result and returns a 2-byte result. The next call deals with what "seed" was set to. One thing that may be ruining your efforts: the blocks aren't reorganized prior to decrypting. This only occurs after decryption.
  15. Earlier versions had support for generation 3 codes, but not save files. It's no longer available though.
  16. There's no need to apologize. I wasn't implying that I'm annoyed by other people using them. At the appropriate offset for the species value, yes. No, they're all stored in big endian, which is what PCs read and write with. It's always more beneficial to your own knowledge to figure it out for yourself. Ask more questions, I have no problem answering them. To answer this quoted question though, no, I don't. There essentially is with multiple open source projects available. Again though, I haven't done anything like this because of what I said before. I refuse to do the work for someone.
  17. Just because they have the data there doesn't mean it's guaranteed to be accurate. Yes, there are two zeroed bytes with the checksum, but if you change those bytes to non-zero, it'll cause problems. So I simply consider it part of the checksum. Considering modifying the two zeroed bytes causes problems, they're not unused as documented on the wiki. I assumed this is what you meant, but I don't know why you'd be measuring anything in half-bytes. That's correct, the output is uint32, so anything beyond 32 bits is simply truncated. There was some assumption that you'd be familiar with C++-like concepts, sorry. The problem is that I'm a very avid proponent of not doing the work for people. I realize you're not entirely asking for that, but you have more than enough information here to do what you want. Also, just as a note, you shouldn't take anything I'm saying as hostile or negative, because I assure you that's not what's going through my head. I just don't fill my posts with smileys to help show that.
  18. It doesn't have support for GBA save files, although it's being considered.
  19. The checksum is stored in the Pokemon data as XXXX0000. The method used for encryption only uses the 2 upper bytes, so it needs to be shifted down. I have no idea what you're referring to by "nybbles". The seed used by the rand function is 4 bytes, but in the case of Pokemon encryption, only 2 bytes are given to it. I could, but I can't say that I want to, sorry.
  20. You should use "& 0xFFFFFFFF" instead of "% 0x100000000", btw. It'll do the same thing, it's just more efficient, assuming the compiler doesn't make that optimization for you. Each time rand() is called, seed is set to the result of 0x41C64E6D * seed + 0x6073. The result of rand(), however, is shifted down by 16 bits before being used. So you can define rand() as: uint32 seed; void srand(uint32 newSeed) { seed = newSeed; } uint32 rand() { seed = 0x41C64E6D * seed + 0x6073; return seed >> 16; } To decrypt: srand(checksum >> 16); Then, starting at offset 8 of the Pokemon data, XOR every 2 bytes with the result of rand().
  21. Codr

    Evolutionary Changes

    There's only one thing I'm aware of. If the base Pokemon is one that existed in generation 3, only had one ability in generation 3, but now has two abilities in generation 4, it'll change to the new ability when it evolves if the PID indicates ability 2.
  22. So put in whatever IDs you want and search for new PIDs? I don't know why you don't do this.
  23. I see, well, I intend to add exporting of an XML file for codes, I'm just not sure when. Maybe on the next update, since it's not particularly difficult. Edit: It's been added. Edit2: Since I'm sure this won't be obvious to some people... somehow... you have to have selected Pokemon before you can export codes, just as when generating codes.
  24. Download PokeGen and search for them. It's easy.
×
×
  • Create New...