Registrarse

[ASM] FR | Comprobar el género de un Pokémon

Rubire4

Rubén#1506
En este tutorial veremos cómo comprobar el género del Pokémon que queramos.
Este post es la traducción de esta rutina de FBI: https://www.pokecommunity.com/showpost.php?p=8538181&postcount=341

  1. Insertamos la siguiente rutina: (Tutorial de cómo insertar rutinas ASM):
    Código:
    .text
    .align 2
    .thumb
    .thumb_func 
    
    [PLAIN]@Genderless = 0[/PLAIN]
    @Female = 1
    @Male = 2
    
    main:
    	push {r0-r4, lr}
    	ldr r0, =(0x20370C0)
    	ldrb r0, [r0]
    	mov r1, #0x64
    	mul r1, r1, r0
    	ldr r0, =(0x2024284)
    	add r0, r0, r1 @slot
    	mov r4, r0
    
    getGender:
    	mov r1, #0xB
    	ldr r2, =(0x803FBE8 +1) @get species
    	bl linker
    	mov r2, r0 @species
    	push {r2}
    	mov r0, r4
    	mov r1, #0x0
    	ldr r2, =(0x803FBE8 +1) @get PID
    	bl linker
    	pop {r2}
    	mov r1, r0 @PID
    	mov r0, r2 @species
    	ldr r2, =(0x803F78C +1)
    	bl linker
    
    fixReturn:
    	ldr r1, =(0x20370B8)
    	mov r2, #0xFF
    	sub r0, r2, r0
    	cmp r0, r2
    	bne store
    	mov r0, #0x2
    	
    store:
    	strb r0, [r1]
    	pop {r0-r4, pc}
    
    linker:
    	bx r2
    
    .align 2

    Aquí tenéis la rutina ya compilada:

    Código:
    1F B5 10 48 00 78 64 21 41 43 0F 48 40 18 04 1C 0B 21 0E 4A 00 F0 15 F8 02 1C 04 B4 20 1C 00 21 0A 4A 00 F0 0E F8 04 BC 01 1C 10 1C 08 4A 00 F0 08 F8 08 49 FF 22 10 1A 90 42 00 D1 02 20 08 70 1F BD 10 47 C0 70 03 02 84 42 02 02 E9 FB 03 08 8D F7 03 08 B8 70 03 02


  2. Creamos un script de la siguiente forma:

    Código:
    ...
    setvar 0x8004 0x[Nº del slot del Pokémon]
    callasm 0x[dirección de la rutina]
    compare LASTRESULT
    ...
    Si no tiene género entonces LASTRESULT= 0
    Si es hembra entonces LASTRESULT = 1
    Si es macho entonces LASTRESULT= 2
 
Última edición:

Umbreon

Oscuro
quiero hacer un script de give pokémon que solo te de el pokémon de un genero especifico, no se si esta rutina sirva y como podria hacer tal script? estoy aprendiendo de scripting.
 

Dr._Seuss

Average RomHacker
quiero hacer un script de give pokémon que solo te de el pokémon de un genero especifico, no se si esta rutina sirva y como podria hacer tal script? estoy aprendiendo de scripting.
Esta rutina solo comprueba el genero de un Pokémon y devuelve un valor dependiendo del género. Lo que tú necesitas requiere de otro tipo de rutina ASM
 

Jaizu

Decomp user
No hay un givepokemon silencioso? Que se lo dé, compruebe el género, y si no coincide que se lo borre y repita el proceso.
 

Umbreon

Oscuro
No hay un givepokemon silencioso? Que se lo dé, compruebe el género, y si no coincide que se lo borre y repita el proceso.
de hecho creo que es lo que tratare, seria algo así de inicia la rutina, checa la flag, te da el pokemon esta rutina asm comprueba el sexo da el valor sie es 0x1 (hembra) elimina el pokemon y regresa a la parte de givepokemon y así hasta que el valor sea 0x2
 
Arriba