Avec ça vous pourrez faire en sorte que le niveau des pokémons adverse (pour les dresseurs uniquement) soit le même que celui du meilleur pokémon de votre équipe, enfin presque, car il y un système pour éviter les abus.
Imaginez une équipe de pokémons niveau 5 qui bat la ligue parce-que le maître à des pokémons niveau 5 lui aussi. J'ai donc fais en sorte que si le meilleur pokémon de l'équipe est trop faible le niveau adverse ne s'adapte pas. Par exemple, si l'adversaire à un pokémon qui aurait du être niveau 49, il y à alors 2 situation:
- mon pokémon le plus fort est niveau 87, dans ce cas l'adversaire sera de niveau 87 lui aussi.
- mon pokémon le plus fort est niveau 38, dans ce cas l'adversaire conservera sont niveau 49.
Voila une petite vidéo pour illustrer ça (regardez les niveaux adverse et le mien): [RH] Niveau du pokémon adverse adapté à notre niveau
Avec ce système la difficulté est garanti tous au long de l'aventure, fini les parties où on se contenter de monter 1 seul pokémon, ici ça ne marchera pas. Il faudra impérativement entraîner plusieurs pokémon de types différents.
Bon, concrètement comment faire, pour commencez il vous faut trouver un espace libre dans la rom d'une taille minimum de 0x3C et noter cette offset.
Maintenant rendez vous à l'offset 0x0003E6F2 (0x000690AA pour emeraude) et remplacer ceci:
Code: [Sélectionner]
50 1E 00 06 00 0E 70 BC 02 BC 08 47 00 00
par ceci:Code: [Sélectionner]
01 48 00 47 00 00 XX XX XX 08 00 00 00 00
Où XX XX XX est un pointeur de l'offset que je vous est demandé de noter, enfin pas tous à fait puisqu'il faut faire +1 à cette offset. Par exemple si j'avais choisis l'offset 0x7134C0 j'aurais alors obtenu le pointeur C1 34 71 08.Pour ceux qui souhaite comprendre à quoi ça sert regardez avec le désassembleur, c'est simple à comprendre.
Ensuite rendez-vous à l'offset que vous aviez choisis et coller y ceci (il s'agit de la routine):
Code: [Sélectionner]
50 1E 00 06 00 0E 7D 25 2D 02 1C 35 6C 46 24 04 24 0C AC 42 0A D1 07 4C 00 25 64 26 6E 43 A6 5D B0 42 00 D2 30 1C 01 35 06 2D F6 D3 70 BC 02 BC 08 47 00 00 D8 42 02 02
Si vous utilisez emeraude remplacez D8 42 02 02 par 40 45 02 02.Et voila, vous pouvez essayer, tous fonctionne correctement, et si jamais ce n'est pas le cas et que vous remarquez un bug n'hésitait pas à en faire par ici, mais normalement j'ai fais ce qu'il fallait pour que seul le niveau des pokémons des dresseurs sois changer.
Pour ceux que ça intéresse voici la routine au format texte:
Code: [Sélectionner]
.align 2
.thumb
start:
sub r0, r2, #0x1
lsl r0, r0, #0x18
lsr r0, r0, #0x18
mov r5, #0x7D
lsl r5, #0x8
add r5, #0x1C
mov r4, r13
lsl r4, #0x10
lsr r4, #0x10
cmp r4, r5
bne end
ldr r4, playerteam
mov r5, #0x0
hightLevel:
mov r6, #0x64
mul r6, r5
ldrb r6, [r4, r6]
cmp r0, r6
bhs checkLast
mov r0, r6
checkLast:
add r5, #0x1
cmp r5, #0x6
blo hightLevel
end:
pop {r4-r6}
pop {r1}
bx r1
playerteam:
.word 0x20242D8