![]() |
Expanding the Pokédex into Emerald
1 Attachment(s)
For those who want a better expansion without any bugs, see this post and use this instead. All of what's left here will be a heap of information on how expansion works and is done. This post though gave me cancer. I would like to share a little bit wisdom to all: "PLEASE CREDIT SBIRD. DO NOT CREDIT ME ALONE, YOU MUST CREDIT SBIRD AS WELL. I have noticed numerous hacks that only credit me for the expansion and that's very unfair to SBird, as he was the one who did it first. YOU MUST CREDIT SBIRD." -Chaos Rush It is because SBird is the real mastermind and first person who achieved the expansion on Emerald however, thus on a German ROM. SBird was so kind to post his notes for documentation and guiding everyone, making it possible on any language Emerald ROM. Then, Chaos Rush is the guy who made it working into an English Emerald ROM. Chaos Rush formely handled this thread. I took over for the continuity and adding some improvements while he's away. To be fair on crediting, include SBird as well. Alright! Let's make the expansion into Emerald. This tutorial was formerly copied word-by-word from DoesntKnowHowToPlay’s FireRed Pokédex expansion tutorial. Now, I've cleared and cleaned some. If not, feel to judge. Alright, let's begin: Prerequisites List of tools needed:
Decide the number of new Pokemon Before to get started, you need to think and decide of the new total number of Pokemon with the new ones which you will add later. The current number of slots are 440 (this includes the index 0 at the very beginning). So, you will have to pick a number which is more than 440. The answer can be really higher than 440. Here's a quick help for you to decide which new total number of Pokemon you want to use: Spoiler:
Keep in mind that in the rest of tutorial will be Hex numbers. Advice on typing hex numbers on filters, do not type the "0x08". So, let's move on! Before to go any further, USE AT YOUR OWN RISK!!! The Expansion Step 1: Installing the Save Block Hack Spoiler:
Step 2: Get free RAM for the dex flags Spoiler:
Step 3: Repoint Everything Spoiler:
Step 4: Dealing with Dex Entries Spoiler:
Step 5: Explanation of how Pokémon animations work in Emerald Spoiler:
A Choice Point! At the point, you have read on how the animations work, right? Now, decide: you will disable it or not? It is up to you. Continue at Step 6A if you want to maintain the animations. Or, continue at Step 6B if you want to disable the animations. Either way, after these, you will continue at Step 7. Step 6A: Expanding Pokémon animations Spoiler:
Step 6B: Disabling Pokémon animations Spoiler:
Step 7: Dex-related byte changes Spoiler:
Step 8: Changing lsl operations to make scrolling and other things work properly Spoiler:
Back-up Point! Also make sure you guys back up your ROM before doing the following steps. The very nature of how Step 9 is handled is almost sure to overwite a couple bytes or so that aren't actually constants. Eventually I plan on optimizing it so that we only overwrite bytes that are confirmed to be necessary. I mean, the current implementation of it works but the whole game hasn't been tested thoroughly, so we don't know for sure yet if this will overwrite something that's not actually related to the Pokédex routines. That is why I say use this at your own risk. The reason why I posted this tutorial at this stage is because the more people test this out, the faster we can find any problems that occur. Step 9: Massive byte changes to make scrolling and other things work properly Spoiler:
Step 10: Fix Castform, other glitches, and misc necessary byte changes Spoiler:
Step 11: Fix this one glitch Spoiler:
Now test. If you did everything correctly, you should have a fully working Pokédex expansion on your Emerald ROM. http://i.imgur.com/phHNWhE.png http://i.imgur.com/HhEzlEc.png And, here a video tutorial made by LCCoolJ95 just in case you might want a visual aid on how anyone should be doing this: This tutorial was just to get everything necessary for the Pokédex alone to work. The offsets for the tables that need to be expanded are listed here: Spoiler:
Also one difference from FireRed is that there is no limiter to how high the Seen/Caught total is on the Save menu and on the Trainer Card. Also some of my limiters for the altitude stuff may be wrong. If it is, and if there are any other problems, please report it. As I said earlier, use this at your own risk, as all this was discovered recently and there may be issues we don’t know about yet. I would like to give a huuuuuuuuge thanks to SBird, who did it on a German Emerald ROM first. Without him, none of this would be possible. What I did was find the corresponding English ROM offsets, but as expected that didn’t work out perfectly, as there was a few operation codes I had to find on my own. Nonetheless, his advice helped a lot and pointed me in the right direction, so again, SBird deserves huuuuuuuuuuuge credit for this. Also let me say this again, USE AT YOUR OWN RISK!!! I say this because during Step 8, there might be a few operation codes that I missed, and I alone can't test this out thoroughly. Karatekid552, if you're reading this, and if you're going to implement it into G3HS, I recommend you do it as a beta test type of thing. The main reason being, I only went up to 493 when I did this, so I don't know of any problems that may arise if one were to expand to 649 or 721. (I believe 744 is the max that you can have in the Pokédex in Emerald, as it was the highest number that the Seen/Caught flags would register) Credits:
EDIT (2016/01/07): I've updated the patch that will make steps 8, 9, and 10 to be done. And, also make sure you backed-up your ROM before patching for failing purposes. But, I more recommend to do this manually instead of patching. And now, Generation VII (and including Magearna) is now around. It will be yet to be revealed on how much Pokemon will add on. However, the current expansion only supports in a maximum number of 744. I've read notes of SBird and one of his notes says that it can be expanded to more than 744. I'll try and do some testing soon to make sure if still can go further. The bad news right now is the availability of PC Boxes/Storage in Gen III games (no idea how to expand it more but it will cause troublesome). |
Great post! This is exactly what I needed, thanks!
Question: Quote:
I tried both, see no diff yet... EDIT: If you say there should be 40 pointers, and Search/Replace finds 132, is this ok? Am I doing it wrong? I noticed you copied the numbers of pointers from the other guide. EDIT2: After preforming steps 1&2, I can't open the dex in game, and it displays the wrong number of either seen or caught. |
Nice work Chaos!
I'll try to beta test this with 649 Pokemon. (cuz screw Kalos, I'm not inserting that many sprites) |
Quote:
|
Quote:
EDIT: Looks like Gamer2020 found it a long time ago. I guess I just wasted 2 minutes of my time then :p |
Also make sure you guys back up your ROM before doing Step 9. The very nature of how Step 9 is handled is almost sure to overwite a couple bytes or so that aren't actually constants. Eventually I plan on optimizing it so that we only overwrite bytes that are confirmed to be necessary. I mean, the current implementation of it works but the whole game hasn't been tested thoroughly.
|
Thanks you for the work, a feature like expansion of pokedex is vey cool! BTW, how to find the RAM for the dex flags?
|
Quote:
I found a glitch: When viewing one of the search mode listings (A-Z, by type, smallest/largest, lightest/heaviest, color, etc.) and then going back to the main national listing, the list will appear blank. I'm 90% sure this can be fixed just by finding an lsl opcode that's related to it and adding +1 to it. EDIT: To fix that, put 1B 01 at xBC42E. I have added it to the first post. |
WOW! Just wanted to say, INCREDIBLE job on this, Chaos Rush! One question I have, though... How will the battle frontier work with the extended pokemon? Just a question, that, honestly, I am quite curious about!
|
The reason why this only supports up to 744 Pokémon is actually this:
Search: 81 01 00 00 Replace: E7 02 00 00 Do this for the first 29 occurances in the ROM. Now go back to offset x000000. Search: 9B 01 00 00 Replace: 0D 03 00 00 I guess if you fiddle around with the numbers you should be able to add even more if you are crazy like that. The reason I chose 744 is because I ran into issues with higher numbers at first, but I guess those came from another set of global vars and would be easy to fix anyways. Keep in mind though if you really want to go further in terms of how many entries to place in the dex you also want to allocate more RAM via the malloc operation AND spare some space for the global variables, because neighter me nor chaos rush did calculate exactly how many places there are if you just add 0x700 or shift the bytes one more(which basically means a multiply of two so 0x600 becomes 0xC00) So thats that, the first one controls how many entries are displayed by the way: 0x02E7 = 743(d), that makes 744 if you count entry zero. ~SBird |
Here are some offsets that may or may not be necessary (this would be part of Step 8 should it be confirmed that it's necessary):
080BB3BA: 12 01 080BB5AE: 1B 01 080BC42E: 1B 01 <--- fixes Search-related stuff 080BC4CE: 1B 01 080BF3BE: 1B 01 080BF59E: 1B 01 080BFB80: 09 01 080C17C6: 12 01 080C23F2: 1B 01 |
I found and squashed another bug. The bug was that if you press START in the main Pokédex screen to make that small blue menu slide from the bottom (the one that says "BACK TO LIST/LIST TOP/LIST BOTTOM/CLOSE POKéDEX"), then Pokédex slot #405 (Luxray) would be overwritten with the last menu choice you had in that blue menu (basically it would show either Missingno, Bulbasaur, Ivysaur, or Venusaur where Luxray is supposed to be if you bring up the small blue menu by pressing START). This was because the RAM location of that menu variable conflicted with that of Luxray's slot on the Pokédex RAM. This is fixed by doing the following byte changes:
BB8CA: 09 01 BBABE: 12 01 BBBA8: 24 01 BBBD4: 12 01 BBF96: 09 01 BC140: 09 01 BC288: 1B 01 BC2B4: 12 01 BE892: 09 01 Again, added to the first post as well. EDIT: Found and squashed yet ANOTHER bug. Make these byte changes in order to get the category listings to load correctly when highlighting "SHIFT" in the mode change menu: BC4CE: 1B 01 C1808: 12 01 C23F2: 1B 01 EDIT: There is one last bug that I'm trying to squish. What happens is that the Pokédex doesn't remember the position you were at when you press SELECT to bring up the mode change menu, instead it will always bring you back to Bulbasaur (or Treecko if you're in Hoenn dex mode). The position you were at is held at 02000D1E (0200061E in a vanilla Emerald ROM). It should only be overwriting that offset with 0000 if you are switching between National and Hoenn, but for some reason it is always overwriting it with 0000 whether you switch or not. I don't know what's causing this, and I've tried looking into it but with little success. If someone can help me with this, I'd be very grateful, as this is the last final bug to squish before we have a seemingly perfect Pokédex expansion. |
I am now facing the question which showed as pink color text... may you help me?
Put a pointer to whichever set of flags comes first at x843BC.(Does this mean" if I use the 0x0203D800, then I should type 00D80302 at 0x843BC?) Put 20 1C 00 00 at x8439A. Put XX 22 at x843A0, where XX is the number of bytes taken by your dex flags.[COLOR="rgb(255, 0, 255)"](sorry that I don't understand about the value "XX" Does this mean "number of dex entries- the answer is (number of dex entries)/8, rounded up." )[/COLOR] Put 20 1C at x843A6. Put YY 30 at x843A8, where YY is the number of bytes between the sets of flags. YY is probably the same as XX, but it doesn't have to be. Put XX 22 at x843AC, where XX is the number of bytes taken by your dex flags. Alternatively, instead of these byte changes, you can instead make an OW script that clears the dex with writebytetooffset, and make sure it runs before the player gets the Pokédex. Your choice. |
Omg. This really awesome omg omg! :D I can finally put more x3
|
Quote:
EDIT1+2: Found Hoenn Dex Order. It's at x31DFB8. There are 2 pointers to it. It is 0x194 bytes long, just like the length of the Hoenn dex. EDIT3: Heres what I found from analyzing the data: There are 411 entries in the Hoenn dex table, each one has the National dex ID of the pokemon that appears in that slot in the Hoenn Dex. My guess is that there is a limiter and/or a global variable somewhere. Another thing: I'm not sure if it has one more entry for Missingno or not (probably not) tl;dr: The table is 0x336 bytes long, 2 bytes per entry, 411 entries total. |
Thanks for the deleting the 2nd Frame Tut. ;) It work, but tURuI has right, the end Offsets are not correkt.^^
|
Quote:
And yes, I fixed the frame table ending offsets, thanks for pointing that out :) I am working on fixing the bug where the dex doesn't remember what position you were at when you press SELECT to bring up the mode change menu. Once that's done, then I can say that the Pokédex alone is perfect and will post offsets for all the other easier stuff so that karatekid can add it to his tool :) EDIT: I have literally spent hours trying to fix that one final glitch to no avail (the dex doesn't remember your position when changing modes by pressing SELECT, thus always resetting to Bulbasaur/Treecko). Here is what I've found on it so far: Branch to routine below: 080BBD4E Routine that handles this: 080BBD7C RAM offset of dex slot in SBird's expansion method: 02000D1E RAM offset of dex slot in vanilla Emerald: 0200061E If anyone can help me look into this, it would be greatly appreciated, as I've already worked out all the other bugs earlier. This is really the only thing that needs to be solved until we can call it a perfect Pokédex expansion. |
Something I figured out, I would apreciate confirmation of the english hackers, is: Castform(And its ability) seem to bug when using the expanded pokemon tables etc. I don't know if this is a general bug, which also exists if you do this for FR or if its emerald only. However the sprites, palettes etc. get messed up. Until now I only experienced this for castform(I thinks its the only pokémon of its kind, having a transformation ability)
~SBird |
Quote:
|
Quote:
So a warning to everyone(unless something confirms that this is not an issue bound to the pokédex): Castform will be bugged due to the expansion. ~SBird Edit: The bug exists due to the fact that castform(id 0x181) and the maximum amount of pokémon in the dex(0x181) interfer. To solve the issue you have to check in the search / replace process which 0x81010000 really refer to the pokédex. I'm sorry to have made that error in the first place, but that is also the reason castform does not work anymore ;) |
Quote:
I hope that the glitch CR stated above is fixed soon. Hopefully by tomorrow, since my birthday is tomorrow :3 |
Quote:
I won't be able to do even moderate hacking before the end of this month, but I'll see if I can test out other unique Pokemon. Kecleon might be another culprit, if it's Castform's type changing being the problem. |
I already posted a fix and an explenation why it is castform that is affected, so yeah, it is castform, and non other, at least for this issue, since this is not essentially tested nobody can say what other kinds of issues will occur.
~SBird |
Whenever I have time this weekend or next weekend, I'll try and find the offset for the Castform ID that got changed. It shouldn't be that hard to fix, since it's only one out of 29 offsets.
|
So I experimented with the 29 offsets using an unmodified rom, and at the 5th occurrence, changing the offset there prevented the transformation from working. I think that might be related to the issue with Castform. I haven't completely expanded the pokedex yet, so I can't test it, but that might be the issue on hand.
|
Hello!
I'm new here, and i tried to adapt this to a french version. But i have a problem with the step 1. I found all the equivalent offset for my ROM exept the 0x0DA284. Do you have an idea of how can i do ? Thank you for this tuto ! |
Quote:
|
I hope that the glitches for this project are figured out soon...
EDIT: I'm lost on step 2. Where do I edit the RAM in HxD? |
Quote:
And unfortunately I don't have time right now to check out the problems, since I have work and school almost every day, and I'm trying to get my sprite project finished in the little free time that I have. Whenever I finally have a freaking day off of both work and school, I'll check out the Castform problem. Unfortunately I have no idea when that will be. |
Quote:
|
Quote:
|
Hello,
Please, could you post an exemple of an entire code wich is modified. Because i have an error and i don't know, where is the problem. Thank you for this tutorial ! Edit : With the french version, i have not any problem to make the step one, But with an US version, the game froze after the screen "2005 nintendo..." |
Alright, I've finally fixed the Castform problem. Make these byte changes:
x42730: 81 01 x5DF10: 81 01 x6F100: 81 01 xA5EA4: 81 01 |
Someone can port Expanding Emerald Pokedex to one tool? It was more easier for hackers than write an source code.
|
Quote:
|
Quote:
However, I will test out 721 soon because I suspect there might be a cry table glitch that was also encountered on FireRed when gogojjtech expanded it. It's not a problem when you're going for 493 but it could potentially be a problem if you want 649 or 721. |
Quote:
I've decided that I want to expand my Pokedex with 40 extra entries. Does that mean that I take (439 + 40)/8 = 59.875 = 60? (or should I Take (386 + 40)/8 = 53.25 = 54) That would be XX XX XX 08 = 00 D8 03 08 and YY YY YY 08 = 60 D8 03 08 (or 53 D8 03 08) Further: The number of bytes taken by my dex flags. Would that be Seen AND caught? i.e. 60 + 60 = 120 (then convert it to hex), or do I convert 60 to hex, or do I just write 60 straight up? I guess my YY will be the same as my XX since I want the same amount of Pokemon and Pokedex entries? |
Ok, I have FINALLY fixed the dex position glitch! My fix however, rather than finding the mistake, I just branch to a custom routine that undoes the mistake. To fix it, do these byte changes:
BBD94: 0E 4A BBDD0: 9C 0F 00 02 Next, insert this routine into free space: Code:
C1808: 12 01 C1814: 00 48 00 47 C1818: XX XX XX 08 (offset of the routine +1) This makes sure that the position is remembered if you're NOT switching dex modes. If you ARE switching dex modes (like from National to Hoenn, or vice-versa), then it will reset to Bulbasaur/Treecko (slot 0), which is intended as vanilla RSE behaves like this too. (for those of you that didn't know, the problem I was having was that it was always resetting to Bulbasaur/Treecko even if I wasn't switching dex modes. But that has now been fixed) I would like to say that we now have a perfect Emerald Pokédex expansion, but first I'm going to try out expanding to 721 to address any potential bugs that don't happen with just 493. |
Well, I went through the whole tutorial, adding in all of the 4th gen Pokémon (and Sylveon), and I have some good news and bad news. I can explain it through a picture:
http://i1218.photobucket.com/albums/dd410/LCCoolJ95/GoodandBad_zpse420bff4.png I did a Word document, side by side with your tutorial, and I think there is one more offset you forgot to add in. The offset is not in the Gen 3 Hacking Suite ini, but it is in Pokémon Game Editor's, which I used to edit the names and order of all the Pokémon. PokemonFrontSprites=&H301418 |
Quote:
|
Quote:
|
Quote:
Quote:
Well, in all honesty, I just did this as a test, since this was my first time doing it. I'm just excited to see that it actually worked out. Not to the highest degree, but it worked. So...what happens now? |
Thank you chaos now i dont need the Expand tool that krk552 made :D
|
Could you post a patch please ?
|
Quote:
when you can do it by yourself.... |
Quote:
|
I just want to say that I can confirm everything in the tutorial is correct and all you need, as I'm working on a 721 ROM base and got the Pokédex working solely from the information provided in this tutorial (proof at romhack.me). Also karatekid552 will eventually send me a test version of his tool with Emerald Pokédex expansion implemented, and will become official once it's been tested thoroughly.
|
So, I would just like to double confirm something before I move on and start to add sprites/movesets etc.
I have successfully manged to get all this done. I now have 40 extra slots after Chimeco and repointed every single table. Each table contains the amount of bytes written in the tutorial + (40 x needed bytes depending on table) at the end of each table. I have made all this assuming that the amount of dex entries should be 387 + 40 = 427. What about those Unown/Egg slots? Was I supposed to account for those when I repointed each table, that is The old table + the weird slots + my new extra slots making the total 68 ([439 - 411] + 40). When I edit my mons in the Hacking Suite, should I write that I have 427 mons or 479 in the ini (and thus skip 412 - 439). If I changed sprite and edited some stats on 412, have I ruined the game and need to start over from my last backup or can I fix it? |
Quote:
The dex slots alone, however, are separate from the index numbers. So in your case, you should have 479 index number slots, and 427 dex slots. You should put 479 in the ini. If you edited slot 412, then that is a problem, because that's the Egg slot (or Unown A? I forgot, but it's one of those). |
This is minor, but for those of you that know about the cry table and expanded mon, any Pokémon that uses a cry ID of 0x200 or higher won't play. To fix it, simply put 01 1C 11 E0 at xA35A2.
Credit to DoesntKnowHowToPlay for the FireRed offset, which I used to find the Emerald offset. |
Quote:
1. When I placed an expanded Pokemon in the Wild, I would just battle against a black ring with a question mark in (the indicator that there is no sprite). I solved this by placing 07 E0 at 0x34BFE (a third sprite limiter which was not in the original guide. It seems like Fire Red only has two of these while Emerald has three). 2. This leads me to my current issue. While my expanded mons work in battle, they don't work in the Pokedex. Stuff like Pokedex descriptions and height shows up correctly but the Picture and name does not come up. The name does work in-battle and when looking at the Pokemon's status screem, but not in the Pokedex itself. The name just shows up as "?" and the picture as "??" (not the same as the circle with a ? in) leading me to believe that there is some kind of Pokedex limiter which you might have forgotten to add in this guide. I have checked everything 4 or 5 times already and I have done exactly what you have written down. |
I've just gone through the whole tutorial and after going back and double checking and fixing a few mistakes it all seems to be working fine. I haven't tested out wild encounters yet though. I haven't added new sprites yet but what I have done with each repoint is copy the amount of necessary bytes from the beginning (eg. for now, after all the unowns it begins again with Bulbasaur, Ivysaur etc.). So everything lines up and everything works fine so far.
This brings me to a question about the optional step of disabling animations. I decided to repoint and keep the animations using my same method as before. It is still all working fine, I just have a question about two of the steps: "Now at x308CC0, change the bytes there to 38 F5 2F 08." "At x06EE38, put 00 00. At x06ECC4, put 01." Are these steps optional too or do I need to still make these changes even if I decided not to disable animations? |
Here is another double post, shoot me. Even though no one who has got this right seems interested in helping me with my simple question, I will post the offsets here of all the area of expansion that Chaos Rush did not cover. This can at least save other people the time of doing all the calculating for information that someone else already has. If I have it I might as well share it, this is not my property, it is Game Freak's property, so the idea of ownership of anything in this forum is completely idiotic and blind.
So, even though it seems like it is against the spirit of this community to actually help people, here are the offsets of other tables that need to be repointed. I forgot to save how many bytes per entry in my notes but at least here is a start: Spoiler:
Also, I noticed in the Fire Red tutorial, there is a fix for evolution animations that Chaos Rush did not cover. In Emerald it is here: Spoiler:
I see many Rom hacks available, but if you ask for information, people are quiet. So if you don't feel like sharing, good luck with that and I hope it takes you far. Personally, if I ever feel like taking ownership of an idea or calling it original, I will make my own game and not mod someone else's. As far as modding Pokemon goes (someone else's game), any information I find or breakthroughs that I make, I will be glad to share. P.S. I'm thinking about leaving this community and posting my Emerald progress elsewhere. For most people here I get the impression that this is a competition and I am not interested in sharing with people who look down on others, I would rather share and teach with those who do not know, like me once upon a time. P.P.S. This is aimed at the state of the community in general, and is not aimed at you, Chaos Rush. In fact I bow down to you for doing all of this hard for us AND sharing it. Thank you. |
Well, I expanded almost everything except the cry table. Everything works, except for one thing. When the evolution animation occurs, the Pokémon is still the black question mark I replaced. It doesn't freeze or anything, and when I look at the status screen, it has the regular sprite I inserted. Why does this happen?
|
Quote:
See, I think that we need to test this thoroughly, in all areas of expansion and gameplay before we can ever hope for it to be added to any tool. And sharing information about it helps us reach this goal. If you look at the Fire Red tutorial, there was so much interest that eventually the OP covered all areas of it and had it running to the tee. This thread seems to have just tapered off with everyone sitting back and waiting for it to be added to G3HS, which would make any bugs that still exist karatekid552's problem... @LCCoolJ95 - May I ask how many entries you expanded your Pokedex with? I am interested in doing more then 744.. |
Quote:
|
Quote:
To avoid making another double post I will just edit this one, hope that you read it. Unfortunately I cannot test this out any time soon, I have got a bit carried away with 'deconstructing' my Rom. I want to remove all the known sections and start to map it out properly, I am tired of digging around in the dark with this game. I'm going to go through each location on the map, remove all scripts, then do a byte compare to find the exact address for each locations scripts. Then I hope to narrow it down to start finding other scripts and functions that cannot be reached from mapping. I have a new mission, sorry. |
Quote:
|
I started coding this tutorial (thanks for your credit by the way.:P) and I can't really finish coding it without the missing steps like the evolution table.:/ This needs to be a full hack. I will code what you have here, but in the meantime, if someone could find the rest of the limiters for the other tables, that would be amazing.
Edit: Scrolling up, I see that @Phenom2122 has already got a head start on this. Please help him out guys if you have the skills.:) @Chaos Rush, would you mind testing his stuff and adding it into the tutorial? |
Quote:
The thing is, I don't know what limiters are missing, because I have everything working in my ROM (icon sprites, palettes, battle sprite position, etc.), and most, if not, all limiters should be covered in Step 3 (except the evolution fix that LCCoolJ95 found that I added to Step 10). Just tell me what limiters are missing/need labels and I'll get them. They should all be in the first post though, but I probably didn't label which ones are which and just said "change these bytes lol" EDIT: As for the table offsets themselves, I didn't include the less-important ones (like footprints) because the offsets for those tables could all be found in either G3HS or PGE's ini. However, I can understand why that would be bothersome, but since I have then all written down on a notepad file, I'll add the offsets to the first post next time I'm on my PC (I post from my phone a lot so I can't always update things immediately) EDIT2: I added this under a spoiler tag in the first post: Species Names = 3185C8 Front Sprite Table = 30A18C Back Sprite Table = 3028B8 Front Palette Table = 303678 Shiny Palette Table = 304438 Base Stats = 3203CC Moveset Pointers = 32937C National Dex Order = 31DC82 Pokédex Data = 56B5B0 TM Compatibility = 31E898 Evolution Table = 32531C Icon Sprite Table = 57BCA8 Icon Palette Table = 57C388 Main Cry Table = 69DCF4 Auxillary Cry Table = 31F61C Footprint Table = 56E694 Move Tutor Compatib. = 615048 Animation Table = 3299EC Frame Control Table = 309AAC Back Animation Table = 60A8C8 EnemyY Table = 300D38 PlayerY Table = 3021D8 Enemy Altitude Table = 305DCC |
Quote:
Thanks man! |
Just a question? How does Unown work in this expansion? Do Unown formes other than A show up as the added Pokemon, or is only Form A displayed? And will Pokemon in the Unown slots show up with the name Unown
|
Quote:
I recommend doing the expansion in Fire Red with G3HS and compare with it while expanding Emerald as they are quite similar, so you know how to treat the Unown slots in the hex-editor. |
Assuming I delete Unown (extremely useless), will the above happen? Or must the Unown forms be included? Because I notice Jambo51's FireRed 649 Patch seems to have only 650 Pokemon in the ini file, so I assume the Unown forms have been done away with.
|
Quote:
|
Quote:
Did you check if your Castform fix also fixed opponent's Castform? While your own Castform is fine, it seems like oppoising Castforms still have issues with animation. |
How large are the cry, secondary cry, Move Tutor compatibility, animation and frame controls tables? And how do they work? Do they need to be repointed?
|
Is it okay that if i dont disable animation?
|
That's a good tutorial. While I was with redefine get crazy,I think if you are willing, I hope you make the data of redefining steps into repair share it,thank you
|
Humor me: what would happen if I deleted Unown altoegther from the game? Would slots 412 - 440 cause any problems?
|
About Move Tutor compatibility tables, my method is:
Each pokemon has 8 bytes, while each byte is like this: Every 8 Move Tutor skill as a group, can learn set 1, unable to acquisition is 0, will convert hex is after he arranged his Move Tutor compatibility If there are any errors please correct |
So the move compatibility data of one Pokémon is 8 bytes, making the total size of the table CE0 bytes?
|
I've been having some trouble with the following instructions:
(At 0x152E98, put 00 48 00 47 [XX XX XX 08]. For XX XX XX 08, it's the offset you put the save block routine +0x1. At 0x15284E, put 38 47. At 0x15288C, put [YY YY YY 08]. For YY YY YY 08, it's the offset you put the save block routine +0x61. At 0x0D9CC6, put 38 47. At 0x0D9D04, put [YY YY YY 08]. At 0x0DA284, put 00 48 00 47 [XX XX XX 08].) The very first "00 48 00 47 [XX XX XX 08]" causes my game to freeze with a black screen after the Game Freak screen with all the dates on it. I thought that maybe if I continued through the tut, the issue would resolve, since it was only the first step, yet even after getting past the part where I repoint everything, the game still freezes. Can anyone tell me what's up? |
Quote:
F0 00 00, then reverse it and slap 08 on the end. 00 00 F0 08. That's your pointer. Ok, so for the first pointer specified in the tut, XXXXXX08, it says add 0x01 to the pointer. Basically, add it to the original offset. 0xF00000 + 0x01 is 0xF00001. And using the same pointer method, the new pointer is 01 00 F0 08. Using he same method, the second pointer is 61 00 F0 08 |
Quote:
|
I am really sorry for the double post, but I've just gone through the entire tut, and all of my sprites are buggy like I've run into a pissed off missingno. When I try to battle a wild poke, and use a move, or go to view my pokemon stats, the rom crashes. Also... my starter(torchic) knows thunderpunch instead of scratch as its first move. I know I've made a mistake somewhere; can someone point me in the right direction.
|
Chaos Rush CAN U PLZ SHARE UR EXPANDED POKEMON ROM WITH ME
PLZ SIR |
I'm confused on how to do this. What tools do I need?
|
Hey chaos do you think I could add this expansion hack to my new program?
|
One potential major problem with this Pokedex Expansion is that it messes up the Pokedex after Entering the Battle Factory. I've had a lot of people reporting this glitch to me in my hack which uses this Expanded Pokedex, and I'd say this is the most likely cause of it.
|
Hey guys can you help me?? I've got a problem in Step 2.. I really don't understand at all! also when i test the game, after the copyrights, it becomes black screen..
Can you explain this more detailed to me?? Once you've decided, figure out how many bits it will take to encode the number of dex entries- the answer is (number of dex entries)/8, rounded up. Using this, pick two locations in the RAM freed by JPAN/diegoisawesome's hack to be where Seen and Caught flags will go. Note that later steps will be easier if you put them next to each other. In all honesty the only area I’m 100% sure of is safe to use for the new dex flags is 0203D800. So we are going to use that area. Make these byte changes: C06EC: point to new SEEN flags C06AC: 00 00 C06AE: 00 00 This makes the game read using the new SEEN flags. C0744: point to new CAUGHT flags C06FE: 00 00 C0700: 00 00 C0702: 00 00 C0710: 15 E0 This makes the game read using the new CAUGHT flags. C0720: 0D E0 This makes both of the above bypass redundant SEEN flags. C07C8: point to new SEEN flags C079E: 00 00 C07A0: 00 00 C07AC: 1C E0 This makes the game write to the new SEEN flags. C07F0: point to new CAUGHT flags C07DA: 00 00 C07DC: 00 00 This makes the game write to the new CAUGHT flags. We also need to make the game clear these flags properly when the player selects New Game at the main menu. We can do this with the following edits: Put a pointer to whichever set of flags comes first at x843BC. Put 20 1C 00 00 at x8439A. Put XX 22 at x843A0, where XX is the number of bytes taken by your dex flags. Put 20 1C at x843A6. Put YY 30 at x843A8, where YY is the number of bytes between the sets of flags. YY is probably the same as XX, but it doesn't have to be. Put XX 22 at x843AC, where XX is the number of bytes taken by your dex flags. |
Quote:
---- Found a minor bug but it doesn't give threat a lot: After I caught a Pokemon which are from the expanded slots, it holds the ???????? (eight question mark) item. How to fix this? |
Yup! i've got it.. Thanks!
|
Frist things frist, sorry for my english and thank you very much for this tutorial n.n
Okay, I followed the steps of the tutorial and now I've a lot of new slots... Everything is okay except for... the Trainer battle and the Wild battle! What's the problem? Well, the sprites of Pokémon are shown perfectly in the stats, in the evo, in the dex, in the contest... But when I put a over-440 pokémon in a trainer battle or I set it in a route, the game doesn't load the sprite, it loads the missigno ((?)) instead with the pallete of the sprite that should appear. In a wild battle, if I catch the pokémon, when the game asks me to put a name, the sprite loads perfectly, so I don't understand what's happening, maybe some limiter in trainer battles/wild battles? I dont know... Someone help me >.< Greetings! |
Guys! One error needs to be fix: when you are going to talk and fight with a swimmer (or anyone with the 8 as encounter music), it doesn't play. It is really involved with the expansion. After the steps, just go to 0xB1C30 and type 81 01 00 00.
|
Quote:
|
It shows the ? sprite of Pokémon #0 (i.e. ??????) with the palette of the Pokémon that was supposed to be displayed
|
Okay, after testing this with an expanded number of Pokemon Emerald ROM, with 8 evolutions per mon, and a regular Emerald ROM with just the number of evolutions changed, I can confirm that new evolution methods will NOT work if you expand the amount of Pokemon in the game. Has anyone looked into fixing this yet, or no?
|
Quote:
|
I think it should be always 440 or 0x1B8 while doing the expansion of pokedex. Let us all consider this since that is the overall total of slots in game. This shares too with non-Emerald pokedex expansion.
|
i encountered a glitch when encountering expanded pokemon in the wild where their names only come up as ????????, i dunno why this is, i've checked all my pointers and they all seem to be correct
|
Quote:
Quote:
|
Quote:
|
sorry for the double post but i found something that i thought i'd share.
in order to stop wild pokemon holding the ???????? item you need to put a pointer to the 13th byte of the repointed base stat table at 0x6EB7C and a pointer to the 15th byte of the repointed base stat table at 0x6EBA0 & 0x6EB28 in not 100% sure if this works fully but since those pointers all point to the old base stats i assume they'd need to change regardless |
Just to let everyone know, I will be doing a video tutorial of this whole process, just to make it more clear and that way people can see how the process is done through a visual way rather than reading and being completely confused.
|
Quote:
|
Quote:
|
Well, here's a video tutorial of this whole tutorial, with minor things added, like some glitch fixes that are not listed in the first post.
https://www.youtube.com/watch?v=mjemZhVlZg4 |
I have changed the animation index to 00 and the animation timing pointer to 40 98 30 08, the same timing that Swalot uses. Pokémon in slots below #495 work perfectly fine in my repointed table with the changed index and animation timing pointers, so I have no idea what is the issue with Pokémon above #495.
|
regarding the animations, there seems to be a table at 0x329B87, this seems to control how much time passes before it plays the pokemon animation on the summary screen.
Also it switches between the frames too many times on the summary screen for the expanded mon, i've tried finding out why, but i haven't been able to come up with anything |
| All times are GMT -8. The time now is 8:43 AM. |
![]()
© 2002 - 2018 The PokéCommunity™, pokecommunity.com.
Pokémon characters and images belong to The Pokémon Company International and Nintendo. This website is in no way affiliated with or endorsed by Nintendo, Creatures, GAMEFREAK, The Pokémon Company or The Pokémon Company International. We just love Pokémon.
All forum styles, their images (unless noted otherwise) and site designs are © 2002 - 2016 The PokéCommunity / PokéCommunity.com.
PokéCommunity™ is a trademark of The PokéCommunity. All rights reserved. Sponsor advertisements do not imply our endorsement of that product or service. User generated content remains the property of its creator.
Acknowledgements
Use of PokéCommunity Assets
vB Optimise by DragonByte Technologies Ltd © 2023.