![]() |
I'd like to make a request for a step by step tutorial for adding in new Abilities
I've noticed from my searching that there is next to 0 documentation on how to actually implement new abilities into gen 3 games. I see many threads such as this one https://www.pokecommunity.com/showpost.php?p=8989368&postcount=185 showing a thumb script that can be compiled into a rom and the offsets that must be changed to make it work but... that's it. To someone who isn't sure about the details this is all just very confusing. How do I assign the ability to a Pokemon? How do I create a text box for this ability and how do I even make sure the thumb script is assigned to a new ability slot? This type of information is extremely useful IMO but criminally undocumented. I think just a tiny, tiny handful of the people seeing these scripts and wanting to use them actually understand how to get them functioning in the game. If anyone could help explain the process I'm sure a ton of us here would appreciate it!
|
I definitely second these requests. I posted a thread a month ago or so asking how I'd implement an ability idea I had and the only reply was four bytes long: "asm."
Like, yeah, no s*it, it's gonna take ASM, but where do you put the code? How to you tell the game it's an Ability? How do you *make the damn thing work,* let alone write the ability's code? No one seems to want to provide that kind of info and it's really frustrating lmao (I know I'm basically repeating what you said but this is an issue which needs as much attention as it can get) |
You need to use Battle Script Pro for making the ability work. There's a tutorial but it looks like a foreign language to me. I wish someone would make a video tutorial or another tutorial that I can understand.
|
Quote:
Because of this, you will need to understand how to read/write ASM in order to make new effects, because they require editing the game code itself. There is no cookie-cutter method to writing the abilities, each one requires unique logic and a unique location in the game code. Adding the ability/name to the game is pretty simple, and a tutorial already exists for that. The effects are what require assembly. When you expand the ability names, you can update your INIs for tools like G3T, etc, and select your ability from the drop down menu. It's assigned as a byte in the Pokemon data structure, which corresponds to its position in the ability tables. I hope this helps! |
Quote:
|
Quote:
When you expand the name/description table, you can assign your new ability byte to your Pokemon and the inserted code will do the rest. This is easy if you edit your INIs to increase the number of abilities. If this doesn't make sense, I would take a look at the Pokemon data structure some more. |
So if I compile the script and "insert 00 48 00 47 xx+1 xx xx 08 at 0x[address]" how can I assign this code to a new ability slot? I have created new slots using PGE and I have free space to assign new abilities. How can I take this script and assign it to the ability slot?
|
Quote:
|
Quote:
|
Quote:
|
Quote:
|
Quote:
|
Quote:
First, I begin by inserting this code Code:
https://i.imgur.com/YJwHeNZ.png Here I can see that the test compile is successful and there are no issues in the script https://i.imgur.com/ifpwEcW.png Then, using the THUMB Editor and Assembler, I insert the code into my rom at free space offset 0xFE3E00 Now, here's part of where I'm stumped. This code is inserted but how do I assign it to an ability number? Do I need to edit a value in the actual Thumb script itself that is deciding what number each ability is? If so, where even is that? What am I supposed to change to get, say, empty ability slots 78-82 to be these abilities? https://i.imgur.com/cAgRPxF.png Here is the location of the bytes I have changed according to the footnote at the bottom of the Thumb script Also, in this script at the bottom he says "01 48 00 47 00 0 xx+1 xx xx 08 at 0806960E" Is the single 0 a typo? bytes are always supposed to be two digits. Am I supposed to infer this is 00 or am I supposed to simply put one 0 and then the beginning of the offset as the second digit? |
Quote:
Code:
|
Quote:
|
Quote:
|
Quote:
Quote:
Code:
|
Quote:
Code:
After inserting into the rom everything is fine. The issue arises when I attempt to repoint this code using the offset listed at the bottom. "01 48 00 47 00 0 xx+1 xx xx 08 at 0806960E" https://i.gyazo.com/551caab17832253b534bbdb80be5a2b2.png This is the code I have placed at the offset (you can't search the first 08 in a hex editor so it has to be 00 and then the offset. Is this a mistake?) https://i.gyazo.com/7dafdebbe441c21fe60763cafa7a22ff.png This is what I see when I check VBA disassembler (so i definitely did something wrong somehow?) I am following the instructions verbatim but there is something going wrong. Am I missing something in how the offset is supposed to be written? It says XX+1 XX XX so I am converting FE 33 00 to FF 33 00 in the area where I need to place the XX XX XX. Attempting to use any attacks causes a crash EDIT: So I decided to try changing my offset to be formatted as ZZ YY XX+1 the way a thumb script normally is (I didn't do this before because is just says do xx+1 xx xx) and now the abilities seem to just do nothing instead. No crash, but the abilities are totally useless |
Quote:
Just to clarify for when you see this I have managed to get this accomplished: https://i.gyazo.com/c0f82224f6e4ca729edad185724b537c.png I have the proper code assembled in the bytes I was told to change in the THUMB script Here it is in hex: https://i.gyazo.com/77af6ec5face4d4b06d6fdcc9873e26e.png I tried making the abilities index in the thumb script 78, 79, and 80 and had no results. I tried converting 78, 79, and 80 from dec to hex and re-compiling and inserting the script and also had no results. The game isn't crashing or anything, it's just the abilities do literally nothing. I even tried overwriting an existing ability instead of one of the empty, expanded ones just to test and it still did nothing. I just can't figure out what I'm doing wrong here... |
Quote:
Code:
|
Quote:
|
Quote:
|
Quote:
|
Quote:
There are already tutorials that explain it, read the whole thread. |
Quote:
|
| All times are GMT -8. The time now is 9:13 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.