[GBA][RF][EM][RS] Apprendre à reprendre des Pokémons donnés avec un script!

Pages: [1]

Andy Sama

  • Membre
  • 47 posts
07 janvier 2022, 13:50
Yoyo :boogyfr:

Je viens vous présenter quelques routines qui vous permettent de reprendre des Pokémons de l'équipe du joueur!



Remarque
Je ne suis en aucun cas l'auteur,ni celui àl'origine des routines,je viens juste apporter des explications sur comment faire ce qui a été dit plus haut
Tous les crédits reviennent à HackMew

Pour voir le tuto d'origine,Tuto de HackMew


Passons,les routines sont (en principe,sur RF en tout cas) compatibles avec les Roms FR

Les Routines

RF/VF
Spoiler
.text
.align 2
.thumb
.thumb_func
.global TakePokemon

main:
   push {r0-r7, lr}
   mov r5, #0x0
   ldr r6, .VAR
   ldr r7, .POKEMON_AMOUNT
   ldrb r4, [r7]
   cmp r4, #0x2
   blt return
   ldrh r3, [r6]
   cmp r3, r4
   bhs return
   sub r2, r4, #0x1
   strb r2, [r7]
   add r3, #0x1
   sub r2, r4, r3
   mov r5, #0x64
   mul r2, r5
   lsr r2, r2, #0x1
   mul r3, r5
   ldr r7, .POKEMON_PARTY
   add r0, r7, r3
   sub r1, r0, r5
   swi #0xB
   mul r4, r5
   add r7, r4
   sub r7, r5
   mov r0, #0x0
   mov r2, #0x19
   mov r5, #0x1

erase_loop:
   stmia r7!, {r0}
   sub r2, #0x1
   cmp r2, #0x0
   bne erase_loop

return:
   strh r5, [r6, #0x10]
   pop {r0-r7, pc}

.align 2
.POKEMON_AMOUNT:
   .word 0x02024029
.POKEMON_PARTY:
   .word 0x02024284
.VAR:
   .word 0x020270B8 + (0x8004 * 2)

R/S
Spoiler
.text
.align 2
.thumb
.thumb_func
.global TakePokemon

main:
   push {r0-r7, lr}
   mov r5, #0x0
   ldr r6, .VAR
   ldr r7, .POKEMON_AMOUNT
   ldrb r4, [r7]
   cmp r4, #0x2
   blt return
   ldrh r3, [r6]
   cmp r3, r4
   bhs return
   sub r2, r4, #0x1
   strb r2, [r7]
   add r3, #0x1
   sub r2, r4, r3
   mov r5, #0x64
   mul r2, r5
   lsr r2, r2, #0x1
   mul r3, r5
   ldr r7, .POKEMON_PARTY
   add r0, r7, r3
   sub r1, r0, r5
   swi #0xB
   mul r4, r5
   add r7, r4
   sub r7, r5
   mov r0, #0x0
   mov r2, #0x19
   mov r5, #0x1

erase_loop:
   stmia r7!, {r0}
   sub r2, #0x1
   cmp r2, #0x0
   bne erase_loop

return:
   strh r5, [r6, #0x10]
   pop {r0-r7, pc}

.align 2
.POKEMON_AMOUNT:
   .word 0x03004350
.POKEMON_PARTY:
   .word 0x03004360
.VAR:
   .word 0x0201E8C4 + (0x8004 * 2)

EM
Spoiler
.text
.align 2
.thumb
.thumb_func
.global TakePokemon

main:
   push {r0-r7, lr}
   mov r5, #0x0
   ldr r6, .VAR
   ldr r7, .POKEMON_AMOUNT
   ldrb r4, [r7]
   cmp r4, #0x2
   blt return
   ldrh r3, [r6]
   cmp r3, r4
   bhs return
   sub r2, r4, #0x1
   strb r2, [r7]
   add r3, #0x1
   sub r2, r4, r3
   mov r5, #0x64
   mul r2, r5
   lsr r2, r2, #0x1
   mul r3, r5
   ldr r7, .POKEMON_PARTY
   add r0, r7, r3
   sub r1, r0, r5
   swi #0xB
   mul r4, r5
   add r7, r4
   sub r7, r5
   mov r0, #0x0
   mov r2, #0x19
   mov r5, #0x1

erase_loop:
   stmia r7!, {r0}
   sub r2, #0x1
   cmp r2, #0x0
   bne erase_loop

return:
   strh r5, [r6, #0x10]
   pop {r0-r7, pc}

.align 2
.POKEMON_AMOUNT:
   .word 0x020244E9
.POKEMON_PARTY:
   .word 0x020244EC
.VAR:
   .word 0x020275D8 + (0x8004 * 2)


L'Utilisation

Pour utiliser les Routines ci-dessus,vous les mettez dans un script

#dynamic 0xoffset




#org @start
setvar 0x8004 0xSlot
callasm 0x8Routine+1
end

Le Slot varie de 0 à 5 (0 pour le premier Slot et 5 pour le dernier)

La Routine+1 est l'offset où vous avez inséré la Routine + 1

Voilà voilà :)
« Modifié: 28 juillet 2022, 14:56 par Andy Sama »

Andy Sama

  • Membre
  • 47 posts
07 janvier 2022, 14:02
Même si des connaissances pour compiler des Routines sont nécessaires,je donne quand même le lien...


Compileur

Il suffit de télécharger le fichier,d'ouvrir le logiciel et de copier/coller les routines vers le logiciel puis vous appuyez sur Compile en haut à droite et vous séléctionnez Output to .bin

Vous avez ainsi la Routine qui peut être insérée dans une Rom ;)

Les autres routines sont disponibles dans le Post de HackMew ;D

Vous ne pourrez pas enlever de Pokémon si il n'y en a qu'un dans l'équipe du joueur :)

Pages: [1]    En haut ↑