• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

Adding in custom battle messages

Smeargle

Illusory
160
Posts
11
Years
Hello everyone, today I will teach everyone how to truelly make their hacks unique by replacing the generic in-battle messages.
This is my first tutorial so forgive me if anything may be hard to follow, I will work on fixing anything that may hinder the learning process.​

Before I begin I need to credit bugmania for discovering 0xD7360, without this I would not have been able to follow it and find where the all the battle messages that they game has had locked away. I would also like to credit LocksmithArmy for his table on "pokemon characters" that made decoding and writing new battle messages so much easier. (the chart can be found in step 1)

Alright now lets get started shall we.
To start with let me share the information I have gathered while researching:

3FB218 -- 3FEA26 are where all battle messages, this includes EVERY message you have ever seen in battle. It can be a lot of ground to cover.. But I will be giving a few tricks as to how to find specific messages quickly.

3FDF3C -- 3FE513 are where a good some of pointers related to battle messages are stored, but not all of them. Why is this important? Well lets say you wanted to add a bigger message than the game already has inputted. You would have to re-point your new message to somewhere with a bit more space.


Step One: Learning Letters and Commands​
Spoiler:


Step Two: Finding and Following a message​
Spoiler:



Step Three: Re-pointing your message​
Spoiler:



Step Four: Lets Write​
Spoiler:


Thats all, super easy stuff. I hope my tutorial wasn't to confusing, please help out each other in the comments if I am not around to do so.
Credit would be much appreciated if you include this in your hack
thanks,
Smeeeeargle


Edit: Eventually I will be providing a tool for easy translation. Its already half done, but I haven't had much time to finish it lately.​
 
Last edited:

Renegade

Time for real life...
995
Posts
12
Years
Nice little tutorial!
This is my first tutorial so forgive me if anything may be hard to follow, I will work on fixing anything that may hinder the learning process.
Don't worry about this, your tutorial was very easy to follow and straightforward.
It's something small, but this should help people who want to expand their messages larger than what A-text limits them to.
 

Smeargle

Illusory
160
Posts
11
Years
Once I find the time I will add a table of all the more important message offsets.
I really was hoping to add all that stuff originally but I have had no time as of late.
 

Logan

[img]http://pldh.net/media/pokecons_action/403.gif
10,417
Posts
15
Years
Interesting research. I'm wondering what, personally, you had down as an idea to use this for? I hope it could be used for a feature similar to the one implemented in Platinum where the foe comes back into the screen to have a chat with you.
 

Smeargle

Illusory
160
Posts
11
Years
Interesting research. I'm wondering what, personally, you had down as an idea to use this for? I hope it could be used for a feature similar to the one implemented in Platinum where the foe comes back into the screen to have a chat with you.

This can be used for a wide range of thing, alone without ASM it simply replacing messages.
However if someone was to get creative they could with a little assembly they could for sure add, special messages like "Oh! A shadow pokemon!" if one was to make a Colloseum or XD remake.
If someone were to make a custom status affect, its in battle message can now be added to the game. With the information provided, if someone went back and traced a status effect they could even have the game ask if you'd like to use a status healer for the next turn.

This information is a big chunk of the pokemon game considering how many battles we enter. Now that the information is out their its time for the community to make the real magic happen. Behind these messages is quite a bit of information to explore :)
 

Smeargle

Illusory
160
Posts
11
Years
Good and useful tutorial. Thanks.
Nice tutorial......really easy to follow


Great to hear that, come summer I will be including a tool that will translate English to hex to speed the overall process up.

I would also like to point out that these letters and characters are not solely used for in-battle messages. You can use these find a lot of the games text, and then trace the text back to their actual functions :)
 
Last edited:

DaisukE

Just feel it burning ^^
113
Posts
10
Years
Great to hear that, come summer I will be including a tool that will translate English to hex to speed the overall process up.

I would also like to point out that these letters and characters are not solely used for in-battle messages. You can use these find a lot of the games text, and then trace the text back to their actual functions :)

I would be waiting for your tool ....hope its released as soon as possible.
 

Smeargle

Illusory
160
Posts
11
Years
I would be waiting for your tool ....hope its released as soon as possible.

I already have the main part of done, It translates english to Hex perfectly. But for whatever reason it gets a bit buggy when you try to translate Hex to English. I won't be finishing it until may though, I've got a lot of art projects I put off that I need to finish.
 

DaisukE

Just feel it burning ^^
113
Posts
10
Years
I already have the main part of done, It translates english to Hex perfectly. But for whatever reason it gets a bit buggy when you try to translate Hex to English. I won't be finishing it until may though, I've got a lot of art projects I put off that I need to finish.

By the way.....do you know at which offset is the defeating message located
Like bulbasaur fainted or something like that?;)
 
2
Posts
10
Years
  • Age 27
  • Seen Jul 12, 2020
Thank you for this information. I was wondering how to change the descriptions of attacks, because I added 27 new attacks to Pokemon Emerald and couldn't change their descriptions. With this, I finally know which numbers to use for my new descriptions. Thanks for the help!
 

Smeargle

Illusory
160
Posts
11
Years
By the way.....do you know at which offset is the defeating message located
Like bulbasaur fainted or something like that?;)

Yup, you can find that at 3FB40E-3FB419.
should look like this: FD 10 FE DA D5 DD E2 E8 D9 D8 AB FB FF

Here are a few message pointers straight out of my notes as well.
If you have any others you can't seem to find just let me know :)

3FCC8A -- ## = begins to store escape messages
3FCC74 - 88 = It's super effective
3FCBE4 -- F3 = A critical hit!
3FB31F -- 2D = Stop(space)learning/n/v01?

3FB2B6 -- D0 = \v00(space)is(space)trying(space)to(newline)learn(space)\v01.\p\x
3FB2FC -- 3FB31F = delete(space)a(space)move(space)to(space)make(newline)room(space)for(space)\v01?\x
3FB2D1 -- FB = But,(space)/v00(space)cannot(space)learn(newline)more(space)than(space)four(space)moves.\p\


3FB2A7 -- B5 = learned\n\v01
3FB291 -- A3 = grew(space)to(new line)LV.\v(data)!
3FB262 -- 6F = (2F)(double space)gained /v À <---- gained exp
3FD274 -- 78 = EXP. (space)
3FD279 -- 7E = Points!
3FB252 -- 60 = (pokemon), come back!
3Fd57E -- 81 = used <---- attacks
 

DaisukE

Just feel it burning ^^
113
Posts
10
Years
Yup, you can find that at 3FB40E-3FB419.
should look like this: FD 10 FE DA D5 DD E2 E8 D9 D8 AB FB FF

Here are a few message pointers straight out of my notes as well.
If you have any others you can't seem to find just let me know :)

3FCC8A -- ## = begins to store escape messages
3FCC74 - 88 = It's super effective
3FCBE4 -- F3 = A critical hit!
3FB31F -- 2D = Stop(space)learning/n/v01?

3FB2B6 -- D0 = \v00(space)is(space)trying(space)to(newline)learn(space)\v01.\p\x
3FB2FC -- 3FB31F = delete(space)a(space)move(space)to(space)make(newline)room(space)for(space)\v01?\x
3FB2D1 -- FB = But,(space)/v00(space)cannot(space)learn(newline)more(space)than(space)four(space)moves.\p\


3FB2A7 -- B5 = learned\n\v01
3FB291 -- A3 = grew(space)to(new line)LV.\v(data)!
3FB262 -- 6F = (2F)(double space)gained /v À <---- gained exp
3FD274 -- 78 = EXP. (space)
3FD279 -- 7E = Points!
3FB252 -- 60 = (pokemon), come back!
3Fd57E -- 81 = used <---- attacks

Thank you very much for it..........
 

Astraea

The Storm of Friendship
2,107
Posts
10
Years
  • Age 25
  • IDK
  • Seen Jan 23, 2022
Its great tutorial, Easy to follow and I have got quite a lots of help from it!
 

Le pug

Creator of Pokémon: Discovery / Fat Kid
870
Posts
10
Years
Is there any way to manipulate this in a script ... to which the bytes can be changed at the offsets by some command and then changed back at the end of the script?
 

loldamaru

say lol
80
Posts
10
Years
Hi Smeargle, i have a question
If you have special message like:

- [Trainer] would like to battle
- [Trainer] is about to use [Pokemon]
- Will [player] change Pokemon?

The [Trainer], [Pokemon], and [Player] word, how to search them? What hex code of it? Or we just ignore it and search "... would like to battle"?
Thanks before
 
275
Posts
9
Years
Hi Smeargle, i have a question
If you have special message like:

- [Trainer] would like to battle
- [Trainer] is about to use [Pokemon]
- Will [player] change Pokemon?

The [Trainer], [Pokemon], and [Player] word, how to search them? What hex code of it? Or we just ignore it and search "... would like to battle"?
Thanks before

For trainers there is two words: trainer class and name. Class's code is FD 1C and name's code is FD 1D. So full trainer name code is FD 1C 00 FD 1D.
For Pokemon code is FD 0F, and for attacks - FD 01

FB=\p - new line
FD=\v - calls on data (like when learning a new attack or leveling up)
FE=\n - new page

You are wrong here. FB is new page, and FE is new line.
 
35
Posts
10
Years
  • Age 37
  • Seen Jul 27, 2016
if i want to put: A wild "nature" "pokemon specie" appear!!!
how can i do it???? especialy the code for the nature
 

Thicowinchester7

Thicowinchester
3
Posts
9
Years
Hey guys, i need a help...I'm trying to replace the following text:
[Trainer] is about to use [Pokemon]... for something like: [Trainer] is about to call the next pokémon...
I've sucess at remove the "[Trainer] is about to use [Pokemon]..." message, but...the battle skipped the part of "...Will [player] change Pokemon? [YES/NO]" I deduced which all this is a single script, but, i need support to keep the part of "...Will [player] change Pokemon? [YES/NO]" I must re-write all the script in a free space? If "yes" is the answer...How i can put the data part of "[Trainer]" and "[Player]" and the "[YES/NO]" at the script? (Sorry if was a noob question, im beginner haha :v) I'll try to see here, but a answer is welcome =)

* Great tutorial, easy to understand and very explained. :)
 
Last edited:
Back
Top