Misdreavus Posted December 9, 2017 Share Posted December 9, 2017 (edited) I was told that it was possible to edit the checksum in a Ruby or Sapphire save file using a save editor to cause the Colosseum Bonus Disc to give me a shiny Jirachi (or any other Jirachi of my choice out of the possible 65536). Is this something that can be done with PKHex? I opened up a save file with it and I don't see an option to edit the checksum (only an option to verify it). Also, the same source told me that I may need to edit other variables so that my checksum remains valid, or else the disc will catch that I have an invalid checksum and won't give me the Jirachi. What would I need to edit? I've attempted to RNG this Jirachi with no luck, so I've used rschecksum before. Do I need to edit my information in PkHex so that it matches whatever info in rschecksum which causes the output seed to be the seed of the desired Jirachi? Is this my checksum? rschecksum also uses several other variables (starter, Pokémon encountered, time in game, clock setting game options) in computing my output seed, so I'm not sure how I would account for these in a save editor. Any and all help is appreciated! EDIT: Alternatively, what I may do is play through until I get the Pokédex and Running Shoes, save once at a predetermined point using EonTimer (leaving the other save bank blank) and backup my save. When viewing my save in a save editor, I'd like to know how far off I am, so how can I simply view the checksum so that I can see how long I should open the game before I save again? When I do save again, I can then view my checksum again and see if it's what I want it to be. If it is, I get the Jirachi. If it's not, I restore the save file from my initial backup, and try again. Edited December 9, 2017 by Misdreavus Link to comment Share on other sites More sharing options...
Sabresite Posted December 9, 2017 Share Posted December 9, 2017 16 hours ago, Misdreavus said: I was told that it was possible to edit the checksum in a Ruby or Sapphire save file using a save editor to cause the Colosseum Bonus Disc to give me a shiny Jirachi (or any other Jirachi of my choice out of the possible 65536). Is this something that can be done with PKHex? I opened up a save file with it and I don't see an option to edit the checksum (only an option to verify it). Also, the same source told me that I may need to edit other variables so that my checksum remains valid, or else the disc will catch that I have an invalid checksum and won't give me the Jirachi. What would I need to edit? I've attempted to RNG this Jirachi with no luck, so I've used rschecksum before. Do I need to edit my information in PkHex so that it matches whatever info in rschecksum which causes the output seed to be the seed of the desired Jirachi? Is this my checksum? rschecksum also uses several other variables (starter, Pokémon encountered, time in game, clock setting game options) in computing my output seed, so I'm not sure how I would account for these in a save editor. Any and all help is appreciated! EDIT: Alternatively, what I may do is play through until I get the Pokédex and Running Shoes, save once at a predetermined point using EonTimer (leaving the other save bank blank) and backup my save. When viewing my save in a save editor, I'd like to know how far off I am, so how can I simply view the checksum so that I can see how long I should open the game before I save again? When I do save again, I can then view my checksum again and see if it's what I want it to be. If it is, I get the Jirachi. If it's not, I restore the save file from my initial backup, and try again. I did this manually using a hex editor and then had a program regenerate the checksum. The checksum algorithm is so simple that editing manually using a hex editor is easy to do since it is easy to predict how the checksum will change. Link to comment Share on other sites More sharing options...
Misdreavus Posted December 9, 2017 Author Share Posted December 9, 2017 11 minutes ago, Sabresite said: I did this manually using a hex editor and then had a program regenerate the checksum. The checksum algorithm is so simple that editing manually using a hex editor is easy to do since it is easy to predict how the checksum will change. Thanks for your reply. What programs did you use for hex editing and checksum regeneration? Also, would you mind explaining to me (or pointing me to the proper resources) how it changes? Link to comment Share on other sites More sharing options...
Sabresite Posted December 10, 2017 Share Posted December 10, 2017 9 hours ago, Misdreavus said: Thanks for your reply. What programs did you use for hex editing and checksum regeneration? Also, would you mind explaining to me (or pointing me to the proper resources) how it changes? You are lucky because PKHex can do it now. And you can read the code on github to find out how. Link to comment Share on other sites More sharing options...
Misdreavus Posted December 14, 2017 Author Share Posted December 14, 2017 I found my checksum in HxD hex editor at line 2FF0. It's EDED (pic). I'm sure this is it because I claimed a Jirachi whose seed is EDED. My target Jirachi has a seed of F500. I changed EDED to 00F5, then loaded my game in PKHeX. I used the "Verify Checksums" option, and it outputted the following to the clipboard: Block 00 @ 02000 invalid. That block contains the value C8 (pic). What should I change this to so that my checksum is valid? I've looked for guides on hex editing, but haven't come up with anything for Ruby/Sapphire. Link to comment Share on other sites More sharing options...
Sabresite Posted December 14, 2017 Share Posted December 14, 2017 16 minutes ago, Misdreavus said: I found my checksum in HxD hex editor at line 2FF0. It's EDED (pic). I'm sure this is it because I claimed a Jirachi whose seed is EDED. My target Jirachi has a seed of F500. I changed EDED to 00F5, then loaded my game in PKHeX. I used the "Verify Checksums" option, and it outputted the following to the clipboard: Block 00 @ 02000 invalid. That block contains the value C8 (pic). What should I change this to so that my checksum is valid? I've looked for guides on hex editing, but haven't come up with anything for Ruby/Sapphire. You have to change data in that block so when the checksum is regenerated by PKHex, it is 0xF500. Link to comment Share on other sites More sharing options...
Misdreavus Posted December 14, 2017 Author Share Posted December 14, 2017 3 minutes ago, Sabresite said: You have to change data in that block so when the checksum is regenerated by PKHex, it is 0xF500. Pardon my ignorance, but would you mind explaining how PKHeX regenerates the checksum? I don't see an option for it. Link to comment Share on other sites More sharing options...
Sabresite Posted December 14, 2017 Share Posted December 14, 2017 8 hours ago, Misdreavus said: Pardon my ignorance, but would you mind explaining how PKHeX regenerates the checksum? I don't see an option for it. It is done automagically when you save. Link to comment Share on other sites More sharing options...
Misdreavus Posted December 14, 2017 Author Share Posted December 14, 2017 (edited) 58 minutes ago, Sabresite said: It is done automagically when you save. Okay. So you're saying to change that block first, rather than directly changing my checksum to 00F5? How do I know what to change that block to (either manually in a hex editor, or by changing something in PKHeX)? Edited December 14, 2017 by Misdreavus Link to comment Share on other sites More sharing options...
Misdreavus Posted December 14, 2017 Author Share Posted December 14, 2017 (edited) 1 hour ago, ajxpk said: Well... first I think you should get an understanding about what an checksum is. A checksum is the sum from calculated data and it is for checking purpose. It's in fact to there to protect the data from being manipulated and to prevent errors. Whenever data is saved and stored the checksum gets recalculated. Now if you change data from an block the old checksum that was based on the state prior the editing becomes invalid. The same goes vice versa, meaning if you just edit the the checksum the checksum becomes invalid. Once you understand this it should also become logical for you that it simply isn't possible to change the checksum without changing anything inside the block. This has nothing to do with PKHeX. PKHex just uses the same mechanic that the game uses for getting the correct results... which just makes sense, right? So whatever you do to your checksum, PKHeX is correcting it. (Thankfully!) So... what you are going to do is changing data from the block and then you use PKHeX to get your new checksum. You could of course do all of it using PKHeX. I personally recommend to use the Playtime, just stick to the minutes and hours... Otherwise you can mess with the IDs, but keep in mind that in RS not every TID/SID combination might be legal. So better use FR/LG or Emerald in case you want to reuse the save file for something else... (It doesn't affects the Jirachi, I just say this because I think TID/SID combinations aren't considered in legality checking yet from what I know... so I don't want to encourage to mess with it.) Thanks for the explanation! So how do I know what to change the playtime to? Do I have to just tweak it, check the checksum in HxD, and repeat until I get my desired checksum? Also: 1) I don't know about all, but I would think there would be a lofty combination of TID/SID in R/S if there is a live battery at the point of generation, as that gives R/S more seeds to work with. 2) The Jirachi bonus disc is only compatible with R/S. Edited December 14, 2017 by Misdreavus Link to comment Share on other sites More sharing options...
Sabresite Posted December 14, 2017 Share Posted December 14, 2017 2 hours ago, Misdreavus said: Thanks for the explanation! So how do I know what to change the playtime to? Do I have to just tweak it, check the checksum in HxD, and repeat until I get my desired checksum? Also: 1) I don't know about all, but I would think there would be a lofty combination of TID/SID in R/S if there is a live battery at the point of generation, as that gives R/S more seeds to work with. 2) The Jirachi bonus disc is only compatible with R/S. I would take an area of all 00's, and change one value to 01 and see how PKHex recalculates checksum. Then change it back to 0, and change the next offset to 1 and see how that changes the checksum. Then change the value back to 0, and change another 00 to 0x2 or 0xF, and see how that changes the checksum when PKHex recalculates it. You will find it is arithmetic and you will be able to easily find a pattern of changes to get the checksum you want. Good luck! Link to comment Share on other sites More sharing options...
DeathAngel74 Posted December 15, 2017 Share Posted December 15, 2017 (edited) I think there is/was an event in the mystery gift database or github now? I don't remember if this is the one, its been a while.... Met at level 5, from Ruby, in a pokeball. Edited December 15, 2017 by DeathAngel74 typos Link to comment Share on other sites More sharing options...
Misdreavus Posted December 15, 2017 Author Share Posted December 15, 2017 (edited) 9 hours ago, Sabresite said: I would take an area of all 00's, and change one value to 01 and see how PKHex recalculates checksum. Then change it back to 0, and change the next offset to 1 and see how that changes the checksum. Then change the value back to 0, and change another 00 to 0x2 or 0xF, and see how that changes the checksum when PKHex recalculates it. You will find it is arithmetic and you will be able to easily find a pattern of changes to get the checksum you want. Good luck! I took the very first value in HxD (block 00 in offset 0) and changed it to 01, but after opening in PKHeX and saving, my checksum did not change. Why would this be? And thanks! EDIT: I did, however, get the checksum to 00 F5 by changing my TID to 44405 (and keeping my SID the same at 40171). How can I tell if this is a valid TID/SID combo given the vast amount of seeds that could be obtained with a live battery? The only way I can think of is to search each minute of each hour of each calendar day, which is impossible. EDIT2: I got the checksum to 00 F5 by changing my game time to 5 hr 26 min 30 sec. EDIT3: I GOT IT! Thanks everyone for all your help! Edited December 15, 2017 by Misdreavus 3 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now