CHECK STAT
Es una rutina realmente sencilla que es muy fácil de usar. Su función es decir si una determinada caracteristica de un determinado Pokemon de equipo es menor, igual o superior a un valor a determinar.
Parámetros recividos:
Variable 0x8003: Slot del Pokemon en el equipo (0x0 para el primero y 0x5 para el sexto)
Variable 0x8004: Característica a analizar, a continuación dejo una tabla
Variable 0x8005: Valor al que comparar la estadística
----------------------------------------------------------------------
Parametros devueltos:
Variable 0x8003 Devuelve 0x0 si la estadistica del Pokemon es menor a nuestro valor, 0x1 si es igual y 0x2 si es mayor
0x0: Max PS
0x1: Attack
0x2: Defense
0x3: Speed
0x4: Special Attack
0x5: Special Defense
0x1: Attack
0x2: Defense
0x3: Speed
0x4: Special Attack
0x5: Special Defense
Rutina para Fire Red USA:
Código:
//Check STATS
//Esta rutina comprueba si un determinado stat de un determinado Pokemon
//del equipo es menor, igual o mayor a un valor a determinar
.text
.align 2
.thumb
main:
push {r0-r2,lr}
ldr r0, var_8003
ldrh r0, [r0] //slot del Pokemon
mov r1, #0x64
mul r0, r1
ldr r1, firstpokemon
add r0, r0, r1
add r0, r0, #0x58 //offset de max PS
ldr r1, var_8004
ldrh r1, [r1]
lsl r1, r1, #0x2
add r0, r0, r1
ldrh r0, [r0] //valor de la estadística deseada
ldr r1, var_8005
ldrh r1, [r1] //parámetro al que comparar la estadística
cmp r0, r1
beq equal
cmp r0, r1
blo minus
mov r0, #0x2
b end
equal:
mov r0, #0x1
b end
minus:
mov r0, #0x0
end:
ldr r1, var_8003
strh r0, [r1]
pop {r0-r2,pc}
.align 2
var_8003: .word 0x020370BE
var_8004: .word 0x020370C0
var_8005: .word 0x020370C2
firstpokemon: .word 0x02024284
Como siempre dejo los offsets que haya usado para que puedan ser editados para poder usar la rutina en otras ROMs.
Script de ejemplo:
Código:
#dynamic 0x800000
#org @start
...
setvar 0x8003 0x0
setvar 0x8004 0x2
setvar 0x8005 0xA
callasm 0x(offset de la rutina +1)
compare 0x8003 0x0
if 0x1 call @minus
compare 0x8003 0x1
if 0x1 call @equal
compare 0x8003 0x2
if 0x1 call @plus
...
Última edición: