EDITAR MENSAJES DE BATALLA
Antes de nada decir que este tutorial es una traducción de este otro tutorial de Pokecommunity, redactado por Smeargle.
Este tuto trata sobre editar los mensajes que te aparecen en las batallas, como por ejemplo, es super efectivo y cosas así. Se pueden añadir nuevos mensajes aunque desconozco la forma de implementarlos en combate en determinadas situaciones. Dicho lo cual, vamos allá.
Código:
[B]Offsets importantes:[/B]
[B]3FB218 -- 3FEA26[/B] Aquí están [B]almacenados todos los lo textos de combate[/B]. Así de simple. Más tarde os enseñaré a encontrar los textos deseados. Igualmente dejaré una lista al final del post.
3FDF3C -- 3FE513 Son donde están [B]almacenados los pointers de los textos antes mencionados[/B]. Pero no están todos los textos. Os ecplico, su queremos añadir un texto nuevo que sustituya a "It´s super effective" con otro texto más largo debemos repointerlo en un espacio vacío.
Antes de nada id al pointer 0x3FB218 que es donde empizan los textos. Bien, puede resultar un tanto sobrecogedor al principio pero veremos que no es para tanto. Todo lo que hay aquí es perfectamente editable (con cuidado de no cargarse la ROM, todo hay que decirlo).
FB=\p Nueva línea
FD=\v llama un dato (al parender un nuevo ataque o al subir un nivel)
FE=\n Nueva página
FF=\x Finaliza el mensaje (todos los textos deben acabar así)
FB=\p Nueva línea
FD=\v llama un dato (al parender un nuevo ataque o al subir un nivel)
FE=\n Nueva página
FF=\x Finaliza el mensaje (todos los textos deben acabar así)
00=(espacio)
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]
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]
Cuando veas un mensaje siempre empezará despúes de un FF y terminará con un FF, siempre. Como ejemplo en este tutorial voy a editar el texto de "(pokemon) used (attack)" por otro texto más largo.
Podéis encontrar este mensaje en el offset 0x3FD57B Al descifrar este mensaje vemos que lo que quiere decir es que llama al nombre del Pokémon, despúes viene la palabra "used" y luego llama al nombre del ataque".
Podréis observar que no podemos ser muy creativos a la hora de editar este mensaje, por tanto, ahora viene el paso de repointear.
Primero vamos al offset donde está repointeado este mesaje, es decir, al 0x3FD57B Para esto permutamos el offeset donde está guardado el mensaje y lo buscamos como valores hexadecimanes y elegimos la opción de rastrear toda la ROM.
Podéis encontrar este mensaje en el offset 0x3FD57B Al descifrar este mensaje vemos que lo que quiere decir es que llama al nombre del Pokémon, despúes viene la palabra "used" y luego llama al nombre del ataque".
Podréis observar que no podemos ser muy creativos a la hora de editar este mensaje, por tanto, ahora viene el paso de repointear.
Primero vamos al offset donde está repointeado este mesaje, es decir, al 0x3FD57B Para esto permutamos el offeset donde está guardado el mensaje y lo buscamos como valores hexadecimanes y elegimos la opción de rastrear toda la ROM.
Ahora toca editar este pointer por otro que nosotros queramos. Es decir, imaginad que quiero guardar el mensaje en el offset 80 00 00. Entonces cambiaremos los valores del offset donde estaba repointeado el anterior texto por nuestro nuevo offset permutado.
Vamos a verlo paso por paso:
Encontramos el offset donde está repointeado el texto original
Ponemos nuestro nuevo offset permutado
Y ahora vamos a dicho offset para escribir nuestro mensaje
Vamos a verlo paso por paso:
Encontramos el offset donde está repointeado el texto original
Ponemos nuestro nuevo offset permutado
Y ahora vamos a dicho offset para escribir nuestro mensaje
No tiene mucho misterio este paso, mirad esto como ejemplo.
Voy a escribir la siguente oración: (pokemon) doesn't like your tone. However, it must obey... (pokemon) used (attack)!
El cual en hex sería así: 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
Lo insertamos y guardamos, recordad que debe finalizar en FF
Voy a escribir la siguente oración: (pokemon) doesn't like your tone. However, it must obey... (pokemon) used (attack)!
El cual en hex sería así: 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
Lo insertamos y guardamos, recordad que debe finalizar en FF
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
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
------------------------------------------------------------------------------------
Ahora comprobad si os ha funcionado. Yo lo he probado en Fire Red y funciona sin problemas. Si hay alguna duda preguntad sin problema. Y ya sabéis un poco de apoyo siempre se agradece.
Gracias por leer y hasta otra
Última edición por un moderador: