Okay, so like if I wanted to make a custom ability, say Arceus's multitype, then I would just
follow the if(pokemon.ability == ...) syntax and add in an item check, and if the item check
returns true, then i should make it change the sprite of the pokemon, right? And if I did manage to write a code for a new ability, how do i add it into the game? (I heard there were specifics spots you had to put it in for it to work)
And what code is the special case branching from? Is it the pokemon's battle struct or just pokemon struct?
Do you know the offsets for the ability name and description tables and how many bytes I need to copy in order to expand it, as well as where the pokemon structs and battle structs are stored. Also, the code for the ability "if(pokemon.ability == ABIL_NATURALCURE)
pokemon.status = 0;" would be stored in the battle struct, right?
You mentioned decompiling, could you show me how to do it so i can analyze codes myself?
Sorry for all the questions, I'm just a little bit frustrated about adding new abilities, because whenever I ask other members, they just say how hard it is or I need to know ASM
so this is really going to help since you're explaining in full detail. Thanks a bunch.
I couldn't find any other posts on ability editing, so what do you mean by ability checks? like does each pokemon have data with bits, like .PLAYER_DATA does in HackMew's tut, which if it does, is there a bit to tell which ability it has? (and what do you mean by special cases?)
Thanks! Now I got to go learn some ASM. Oh, and one more thing: is the ability table and description table expandable through a hex editor? is it just like copying it to free space and repointing it for both?
Hello! I was just wondering I you could help me(or at least get me started) on expanding the ability table of Pokemon Firered and adding new custom ones. I saw that MrDollSteak had made a rom base and gave you credit, so can you? XD I don't want to use his rom base because it has 5th gen moves also, and I don't want to be to dependent. Thanks! EDIT: Saw a previous post just after submitting this...so if you could teach me any required ASM to do this, I'll gladly learn it! XP
Awesome dude, thanks for the fast reply. In case of lazyness or just lack of time, I offer my complete help. I've got a good understanding of asm and thumb, have lots of free time and desire to learn. Good luck at speedhackin'!
Hello Mr Doesnt, I recently read about your proficiency at making new abilities as those featured in your hack and MrDrollSteack's rombase. I humbly ask if maybe you could make a post similar to Mr jambos51's new move and effect thread about abilities, explaining for example the awesome prankster code or technician. Im sorry if this may sound rude or over naive, as i've been only able to repoint and edit the names and descriptions of the original abilities. Big respect.
For some reason, no matter how much I search on google I cannot find your thread with the download link for your pokemon emerald physical/special split patch. Was the thread deleted, or what? If it's not there anymore, and as long as your allowed to, can you PM me the patch file?... or at least a link to the patch? Like I said, if something happened and your not allowed to post it, then don't worry about it. I just can't seem to find it any other way.
I think loading of the argument in the r2 is not working. Evolutions that don't compare the arguments still work, so I think that could be the problem. Are you sure your routines don't change the arguments? Or how the routine reads the evolution?
I made my tut using vanilla evolution methods, when the G3HS uses your mon expansion it also stops my routines from working. Can I please see what you have changed or have a look at my scripts to see what needs to be changed!?
It worked! I combined my code with your trick, and shrunked the code by a lot! Thank you, Doesnt!
However, I wanted to show it to you first before posting it on the quick research thread.
Here it goes:
1-The bytes to put into freespace: 2E E0 3F 02 02 00 2E 0C 3C 02 02 00 2E 0D 3C 02 02 00 23 00 F1 63 9A 1D 08 28 58 9A 1D 08
2-The bytes to replace at 1D9A53: 41 XX XX XX 08 (XX = pointer to the code above).
3-Just like you wrote earlier, replace the bytes at 15A68 with A1 5A 01 08.