Smeargle
Illusory
- 160
- Posts
- 12
- Years
- In the fabric of life
- Seen Oct 21, 2015
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.
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.Alright now lets get started shall we.
To start with let me share the information I have gathered while researching:
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:
First off open Your rom with any hex editor and go to 0x3FB218, this is where all battle messages are stored. Things may look a bit overwhelming at first but there is a pattern to it all. Everything here is editable, and a few important commands to know when editing a message, or even searching for one are the Hex/Commands:
FB=\p - new line
FD=\v - calls on data (like when learning a new attack or leveling up)
FE=\n - new page
FF=\x - ends a message (You will find the start of a new message right behind a FF)
These are great and all but without knowing the letters your not going to make it very far.
00= (space)
01=À
02=Á
03=Â
04=Ç
05=È
06=É
07=Ê
08=Ë
09=Ì
0B=Î
0C=Ï
0D=Ò
0E=Ó
0F=Ô
10=Œ
11=Ù
12=Ú
13=Û
14=Ñ
15=ß
16=à
17=á
19=ç
1A=è
1B=é
1C=ê
1D=ë
1E=ì
20=î
21=ï
22=ò
23=ó
24=ô
25=œ
26=ù
27=ú
28=û
29=ñ
2A=º
2B=ª
2D=&
2E=+
34=[Lv]
35==
36=;
51=¿
52=¡
53=[pk]
54=[mn]
55=[po]
56=[ké]
57=[bl]
58=[oc]
59=[k]
5A=Í
5B=%
5C=(
5D=)
68=â
6F=í
79=
7A=[D]
7B=[L]
7C=[R]
85=<
86=>
A1=0
A2=1
A3=2
A4=3
A5=4
A6=5
A7=6
A8=7
A9=8
AA=9
AB=!
AC=?
AD=.
AE=-
AF=·
B0=[.]
B1=[""]
B2=""
B3=[']
B4='
B5=[m]
B6=[f]
B7=[$]
B8=,
B9=[x]
BA=/
BB=A
BC=B
BD=C
BE=D
BF=E
C0=F
C1=G
C2=H
C3=I
C4=J
C5=K
C6=L
C7=M
C8=N
C9=O
CA=P
CB=Q
CC=R
CD=S
CE=T
CF=U
D0=V
D1=W
D2=X
D3=Y
D4=Z
D5=a
D6=b
D7=c
D8=d
D9=e
DA=f
DB=g
DC=h
DD=i
DE=j
DF=k
E0=l
E1=m
E2=n
E3=o
E4=p
E5=q
E6=r
E7=s
E8=t
E9=u
EA=v
EB=w
EC=x
ED=y
EE=z
EF=[>]
F0=:
F1=Ä
F2=Ö
F3=Ü
F4=ä
F5=ö
F6=ü
F7=
F8=[d]
F9=[l]
FB=\p - new line
FD=\v - calls on data (like when learning a new attack or leveling up)
FE=\n - new page
FF=\x - ends a message (You will find the start of a new message right behind a FF)
These are great and all but without knowing the letters your not going to make it very far.
Spoiler:
00= (space)
01=À
02=Á
03=Â
04=Ç
05=È
06=É
07=Ê
08=Ë
09=Ì
0B=Î
0C=Ï
0D=Ò
0E=Ó
0F=Ô
10=Œ
11=Ù
12=Ú
13=Û
14=Ñ
15=ß
16=à
17=á
19=ç
1A=è
1B=é
1C=ê
1D=ë
1E=ì
20=î
21=ï
22=ò
23=ó
24=ô
25=œ
26=ù
27=ú
28=û
29=ñ
2A=º
2B=ª
2D=&
2E=+
34=[Lv]
35==
36=;
51=¿
52=¡
53=[pk]
54=[mn]
55=[po]
56=[ké]
57=[bl]
58=[oc]
59=[k]
5A=Í
5B=%
5C=(
5D=)
68=â
6F=í
79=
7A=[D]
7B=[L]
7C=[R]
85=<
86=>
A1=0
A2=1
A3=2
A4=3
A5=4
A6=5
A7=6
A8=7
A9=8
AA=9
AB=!
AC=?
AD=.
AE=-
AF=·
B0=[.]
B1=[""]
B2=""
B3=[']
B4='
B5=[m]
B6=[f]
B7=[$]
B8=,
B9=[x]
BA=/
BB=A
BC=B
BD=C
BE=D
BF=E
C0=F
C1=G
C2=H
C3=I
C4=J
C5=K
C6=L
C7=M
C8=N
C9=O
CA=P
CB=Q
CC=R
CD=S
CE=T
CF=U
D0=V
D1=W
D2=X
D3=Y
D4=Z
D5=a
D6=b
D7=c
D8=d
D9=e
DA=f
DB=g
DC=h
DD=i
DE=j
DF=k
E0=l
E1=m
E2=n
E3=o
E4=p
E5=q
E6=r
E7=s
E8=t
E9=u
EA=v
EB=w
EC=x
ED=y
EE=z
EF=[>]
F0=:
F1=Ä
F2=Ö
F3=Ü
F4=ä
F5=ö
F6=ü
F7=
F8=[d]
F9=[l]
Step Two: Finding and Following a message
Spoiler:
When looking for a message, you will always find one right after a FF.
![[PokeCommunity.com] Adding in custom battle messages [PokeCommunity.com] Adding in custom battle messages](https://i.imgur.com/U9c1gK4.png)
For the sake of this tutorial I will be editing the (pokemon) used (attack) message.
This can be found at 0x3FD57B. After properly decoding the message with the table found in step one I find that this message first calls on the name of the Pokemon, then says "used", and finally calls on the name of the attack chosen.
Now with the picture above you can see there isn't much room to get creative with our message, we only have 11 bytes we can edit. The only way we are going to be able to fit a nice message in is if we re-point, luckily this is very easy.
Its time to follow our pointer, depending on your hex editor this may be different.
![[PokeCommunity.com] Adding in custom battle messages [PokeCommunity.com] Adding in custom battle messages](https://i.imgur.com/eMbJ4Gy.png)
Your simply going to type in the offset in your search bar, only a little scrambled.
Here we have the offset 3FD57B, so I would search 7B D5 3F 08. What this is doing is searching for where the offset for this message is stored.
Hit ok and BOOM
![[PokeCommunity.com] Adding in custom battle messages [PokeCommunity.com] Adding in custom battle messages](https://i.imgur.com/2tTwi0L.png)
We found it.
Step Three: Re-pointing your message
Spoiler:
So now that we found the pointer that tells the game where our message is located, lets change it so we can make one a little bigger.
![[PokeCommunity.com] Adding in custom battle messages [PokeCommunity.com] Adding in custom battle messages](https://i.imgur.com/UotgEcb.png)
You can place it anywhere with free space, I recommend using Free Space Finder, but for this tutorial I already know I have free space at 0x800000
Anyways here you will place your new pointer.
Remember to always put in your pointers in backwards, your offset may be 0x800000 but the game will only go if you reverse the order like 00 00 80 ending with a 08 to tell the rom it is a pointer.
Alright now lets go to our offset.
![[PokeCommunity.com] Adding in custom battle messages [PokeCommunity.com] Adding in custom battle messages](https://i.imgur.com/aM8n2PX.png)
Hopefully you will see "FF" Hex Data, this is unused blank data that you will be able to write over. If your offset leads you to a bunch of used Hex, go back and lead it to something you know has no data being used.
Step Four: Lets Write
Spoiler:
Now we have a blank canvas, we can make our new message as long or as short as we want. Heck, you can even leave it entirely blank if you want to.
Something to keep in mind is that some messages are universal, shared by both you and the opposing pokemon so just keep that in mind when writing your message.
The (pokemon) used (attack) message is one of these universal messages.
But because this is a tutorial and not a romhack I don't really mind if their are oddities by making a message completely talking about the player.
So I will be adding in the following message:
(pokemon) doesn't like your tone. However, it must obey... (pokemon) used (attack)!
This translated in hex:
FD 0F 00 D8 E3 D9 E7 E2 B4 E8 FE E0 DD DF D9 00 ED E3 E9 E6 00 E8 E3 E3 D9 AB FB DC E3 EB D9 EA D9 E6 B8 00 DD E8 00 E1 E9 E7 E8 FE E3 D6 D9 ED AD AD AD FB FD 0F 00 E9 E7 D9 D8 FE FD 01 FF
![[PokeCommunity.com] Adding in custom battle messages [PokeCommunity.com] Adding in custom battle messages](https://i.imgur.com/6KICQM5.png)
Make sure you end it with FF, this tells the rom that the message is over.
Now insert whatever message you want ingame, and save.
Here are the results:
![[PokeCommunity.com] Adding in custom battle messages [PokeCommunity.com] Adding in custom battle messages](https://i.imgur.com/LPWpIUN.png)
![[PokeCommunity.com] Adding in custom battle messages [PokeCommunity.com] Adding in custom battle messages](https://i.imgur.com/qi3kI7Y.png)
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: