Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


Everything posted by StarsMmd

  1. I'd presume that you have to run the save file through the decryption code to get it in a readable format. Otherwise it will just look like a bunch of random values with no real meaning. You have the right idea though. You'd want to look at the decrypted save data and figure out where everything is. E.G. First pokemon is at offset 0x100. First 2 bytes is the species, next byte is the level, next byte is it's nature, etc. With that information it's easy to write programs to modify that data.
  2. I can't wait to try it out when it's done! I've never used cheat engine but I'll look into it and see what I can do. I normally use dolphin debug mode to view the ASM code and then locate that code in the game files and edit them in ROM. I can give you the memory address in Dolphin's RAM and what to change it to if that helps. Yeah ASM isn't too bad once you get the general idea. There is a really great tutorial on hacking super smash bros ASM which is really useful. The combination of this and general programming knowledge should be enough and you can ask me if you need any help too .
  3. 1. Basically the other important ones are mt. battle and colosseums. I think that the mt.battle file is only loaded when you're on mt.battle and the colosseum data only when you're in a colosseum. I think when you say 2 slots, you mean how there are 2 copies of the trainer data? In the game files there are 2 copies of each "deck". For example, in story mode there is deck_story.bin and deck_story_EU.bin. I presume the EU one is loaded in the european versions but they're exactly the same data so their purpose is currently unknown to me. However, I know for sure that it has no effect on the US version and the EU one can be ignored. I'm not sure how you can figure out which one is the useless one in RAM but maybe you could find it by trial and error. I've actually deleted all the data in the EU files and the game still runs just the same. 2. That's okay then. Oh also, the miror b. shadow dragonite even is triggered once you've caught exactly 82 shadow pokemon and visit gateon port. Randomising the shadow pokemon means it could be triggered early and it could mess with some flags but I'm not really sure what might be affected if anything. 3. Yeah I set the function to calculate with 0 regardless of the trainers' ids so it stays consistent. I think it won't persist through trades but they probably aren't worth trading anyway. did you set the pid to 0xFFFFFFFD because that makes it shiny? You can actually change a value somewhere in one of the ASM routines so that the game just recalculates the pid until it's shiny, allowing the ability, gender and nature to still be random. I can track that down for you if you'd like. Oh and I have a symbol map from dolphin saved with all the functions I've found being named for convenience. Remind me to send that to you some time. How good is your ASM? I know a good tutorial for ASM hacking in dolphin and since it's all in RAM you could do some really cool stuff by playing around with the functions.
  4. I have no idea actually. I'm a n00b at this stuff myself. Maybe google knows?
  5. It's in the settings somewhere. There's an option to edit your signature.
  6. Is that actually the first hack for explorers of sky? I thought the mystery dungeon hacking scene was pretty far along. That's really impressive. I actually haven't played mystery dungeon since mystery dungeon red though and I'll definitely be going back to that series eventually. I'd love to play this once I've finished the originals though oh, you can try putting it in your signature to help promote it because I think a lot of people would be interested in it.
  7. Tux doesn't appear on the forums very often and I'm not even sure if he's still working on this or even planning on making a program at all. Looking at the RAM probably won't help since the save data will most likely be in a slightly different format. However, the first post has code for decrypting the save file. You could start by creating some save files with known data, decrypt them and see if you can figure out the data formats like how the pokemon are stored. Tux mentioned where to find them but didn't go as far as figuring out which bytes correspond to which values. If you could figure that out then making a program to edit them would be a trivial process.
  8. That sounds extremely useful. Nice find! Interestingly enough, most people have said that XG was too easy! The aim was to make it more challenging but how hard it is really depends on your play style. I've watched many playthroughs of XG (and too) and played through many times myself. As you mentioned, probably the best way to play XD/XG is to have 1-2 shadow pokemon in your party since they completely wall opposing shadow pokemon. It's precisely because of how easy they are to wall that they've been made monstrously strong in XG. I also saw a stream by PinkOnion where he made light work of the game with prankster sleep powder on jumpluff. Paired with a fakeout user it was unstoppable! Shadow jirachi is also really good for the end game shadows. It is possible to go through the game without grinding at all if you use the lucky egg and exp share carefully and don't fill your team too quickly but has Mt.battle in it just for grinding. The starting levels of Mt.Battle are increased so it's really easy to get back on the level curve if you fall behind. There are also colosseum battles and the duel square. Another thing to note is that, as with the original , a lot of the shadow pokemon have increased catch rates so while a lot of the legendaries might look intimidating because you know their real catch rates, they are actually far easier to catch than you'd think. Of course, I know the game inside out by now so I know all the little tricks to the game. I'm not sure I agree on a few points like having no way of making easy money. I also disagree that you have to use specific pokemon. I put a lot of effort in to make each pokemon as useful as possible and I've seen all kinds of pokemon in all kinds of playthroughs. In Jetsplit's playthrough his team was constantly changing throughout. I've watched PinkOnion tear through XG 3 times in a row so it's refreshing to see that it does have an increased difficulty after all. I'm sorry if it wasn't to your liking but hack tools are coming soon so if you ever do come back to XG feel free to tweak the game to your liking
  9. I haven't used gcbanner in a while and I'm not sure if I still have a link to the tutorial I used . I'll see if I can figure it out though. Please do remind me if I forget though. The quickBMS scripts are in the first post, I'll move them to the top so they're more obvious
  10. That sounds like a really cool idea. I have all the code infrastructure to make an randomiser the ROM way but it just hasn't been a priority. Your method sounds really cool though. I probably know the most about the data formats in so let me know if you need any help. A few questions though: 1. The trainer pokemon are divided into several different files. One for the main story mode, one for mt. battle, one for colloseums, one for battle mode and some other less relevant ones. I'm pretty sure they aren't all always in RAM and they are loaded and unloaded as necessary. I can't remember for sure though so I could be mistaken. Have you checked yourself to confirm this and more importantly, if that is indeed the case, would that pose a problem or do you think your program could keep track of this? 2. Are you going to make sure that the shadow pokemon are on required trainer battles? That's how it is in normally so that you don't have to hunt down random trainers looking for shadow pokemon. If you fail to snag a shadow pokemon would it be randomised again by the next time you encounter it? Also, there is a value I recently found in the shadow pokemon data which I haven't documented yet that determines whether or not the shadow pokemon goes to miror b. For example, the hexagon brothers don't pass their shadows to miror b. because they are rebattled. Although the game only includes 83 shadow pokemon, the data accommodates up to 128. The rest just don't have any data so you'd have to fill it in with some randomised data but that's easy enough. As I think you noticed from your code generator, things fall apart if you reuse shadow ids so it might be best to make sure you don't exceed the limit. 3. Does your program factor in the notorious "shiny glitch" in colosseum/xd? In shadow pokemon were never shiny but I ran some tests in my hack and the shiny glitch is definitely in . Would your program be able to change the pokemon's pid upon purification to have the same ability, gender and nature but with shininess calculated using the player's trainer id? Or, I think an easier and better way would be to change the function that calculated shininess in RAM. I know exactly where to find the function and all you would have to do is change it so it always uses the player's trainer id instead of the shadow pokemon's OT. I can't think of anymore potential problems for now but I will be sure to let you know if there's anything else to look out for. Good luck!
  11. Good work dude. Just watched your video and it looks pretty handy! It's nice to see more and more people hacking I don't know if you've seen this page but this was so useful to me. Pokemon gecko codes Also, here is a pokemon colosseum/xd save editor -save-editor'>PkmGCSaveEditor by @Tux. It edits save files while yours creates gecko codes so they achieve the same thing in different ways. Maybe it could help you get ideas. He's included the source code (in c++) and a guide for making legal pokemon in which may be useful if you ever want to add an option for creating "legal" pokemon for trading.
  12. This looks clean One question though. Which programs are good for editing tpls?
  13. I don't have any clue where that routine could be located, sorry . I've never been able to get memory break points to work either. I tried compiling it myself and downloading a precompiled .exe. Maybe dolphin 5? Pretty cool that you go textures from the moves!
  14. 1. If the report says that carvanha had it's snag failed and not that sneasel was failed then that probably means it worked fine. If you reach the point where miror b. starts appearing then it will probably show up 2. I haven't experienced that bug myself but it could be to do with the settings you're using in the emulator? I probably wouldn't be able to do anything about that though. If you try loading up your save in vanilla you could see if it happens in that as well or if it's particular to XG. 3. Yeah I've seen that bug many times. It's a very situational one though. If one of the shadow pokemon uses a move like shadow burst or shadow smash twice so it's had 2 rounds of stat drops, the AI opts to switch that pokemon out. However, if you snag that pokemon on the turn it was supposed to switch out and the trainer had 3 pokemon at that point then they won't send out the third. This is because the game had already selected the 3rd pokemon to switch in on that shadow pokemon's turn. So when you snag the pokemon the AI doesn't think there are any available pokemon to switch in and since the shadow pokemon was snagged it never gets a turn for the pokemon to be switched in. As a result the pokemon is unable to switch in on that turn and must wait for the other pokemon to be defeated for the next switch-in cue. It's a bug in the game's original programming but since that situation never came up in the original (trainers never switched out shadow pokemon) they probably never even considered it. I haven't done anything about it because it's so situational and not game breaking but since I've been hearing it's happened to a lot of people now so maybe I'll change some things around. 4. Yes, you are correct on that. Heal pulse didn't work as I thought it would in the gen III engine. I've taken it out of later versions as a result. 5. I just checked on bulbapedia and it turns out that volt absorb only activated on damaging moves in gen III. Status moves only activated it as of gen IV. 6. Thank you, that will be removed in the next version I think I was actually in that stream. I remember responding to that comment but I'll repeat it here. In the recent versions, there is a new shadow move called "shadow bully" which is a shadow equivalent of seismic toss. Since the damage is set to the user's level it does consistent damage, even to other shadow pokemon. I think it works quite well actually although I don't know for sure if the AI is good enough to choose it against other shadow pokemon. It still doesn't do that much damage though so I don't know if it's enough. I was considering making shadow moves neutral on shadow pokemon if I could find the code responsible. Or if I found the code for sonic boom's 20 damage, I could up the value to something like 100 and use that on a shadow move.
  15. You make me blush. Yeah it's hard to say for sure what the cause could have been. I'll have to see if I can reproduce the bug because I haven't heard of it happening to anyone else. I've played through the game a few times myself and haven't had that happen either. You wouldn't happen to still have the footage would you? Yeah nasty plot uses the animation for mean look which has one animation for the pokemon using the move and then another animation for the pokemon being targeted. Since Houndoom is both the user and the target when using nasty plot it gets 2 animations in a row which is why it looks a little funny. This is also the case with moves like roost (feather dance animation) and anything which has an animation which is supposed to target another pokemon. I think drain punch animates twice because it has no draining animation. Yeah I considered no guard but it should also make the opponent's move's 100% accurate against the ability holder too so it would be another one of those compromise situations. Also, each of the new abilities is currently replacing an old one and I've already taken out all the feasible ones. I was hoping to change lightningrod so it at least grants immunity to electric moves. The easiest way would be to find the code which checks if a pokemon is a ground type and add a little extra to also check it's ability. However, once again it's a question of figuring out where to put the extra code. Light ball I don't have a clue right now but maybe one day! Good luck with everything though and I'll hope to catch your streams when you return to them!
  16. I'm really glad you like it. As I'm sure you can tell I'm a big fan of the game and it was a dream come true for me. I'm really glad I got to share the project with everyone and it's always great to see that I'm not alone! Interestingly enough, I actually caught one of your streams a while back although I don't think you could see the chat so I couldn't say hi. ? I really have no idea why the first glitch would have happened. As far as my tests have gone that's never happened and nobody else has reported that particular issue so far. Maybe since you lost the battle something went funny. I really wasn't sure how the game would handle additional shadow Pokemon and it really depends on how flexible the original programmers made it. So i crossed my fingers and hoped it worked. It seems to have worked perfectly so far so I'll have to look into it. One question: did you play 0.9.7 on a completely new save file As for the other game mechanics as you can tell the game engine just isn't flexible enough. A lot of the programming is very specific so I had to get creative at times or compromise at others. I've actually become pretty comfortable with the assembly programming used in the game and I'm piecing together all the different functions. Over time I will know enough to start making more technical changes. For example, I know exactly where the game makes thunder 100% accurate in rain. I'd like to do the same for hurricane but the only setback is that I can't simply insert the extra code in the middle without breaking the game. So once I figure out how I can put it in (and I have a decent idea) I can do it. I'm always finding little things like that so things will slowly improve over time.
  17. I've actually heard of this issue before but I haven't made any changes that would ameliorate the pid generation. I guess I'd have to rearrange the teams so that all the shadow pokemon are first. The AI doesn't necessarily send the pokemon out in the order that they are specified so it may still work out. That wouldn't be too hard to do programmatically. The alternative would be to make all trainer pokemon have a random nature, gender and ability each battle but that would create a lot of inconsistencies. I'll add it to the todo list
  18. I'm thinking of spending the day on it tomorrow. I have some ideas down on paper but nothing coded into the game yet. So once I have an idea of how long the process will take I will update you
  19. Yeah, I've been following the series. I even managed to catch some of the live streams. Jet actually messaged me to let me know about the series and I try to follow as many playthroughs of XG as I can so I can see what needs improvement. Thanks though
  20. Yeah, that's a good idea actually. Will see what I can do Whoops, my bad. Just fixed it for the next version. Thanks!
  21. ??? I wasnt sure if recovery moves would even be useful in double battles so that's pretty funny to hear. Great, I'll check this out when I get home ?? thanks
  22. Some cool ideas but I realised there are just too many issues with adding shadows to orre colosseum TT-TT 1. You can't use items, including pokeballs 2. Being forced to use 4 pokemon since they are chosen at random 3. Keeping track of whether the pokemon has been caught yet and scripting the game to use a different team if so 4. The levels in orre colosseum match the level of the player's strongest pokemon so the shadow pokemon's level would vary between different attempts Back to the drawing board for me!
  23. Great! Glad you got it to work in the end. Enjoy
  • Create New...