24977-Crianza_de_Pokémon_Shiny_en_la_guardería_\[100%]_\[INVESTIGACIÓN_FINALIZADA]_\[RUBY]
#6
Cheve_X 15014
¿Que tal chicos? Bueno, pues no trabajo mucho con ruby, pero aquí vá mi granito de arena...




.align 2
.thumb

/*Special 0x44 is the Logical XOR operation.
returns 1st ^^ 2nd. Doesn't change the originals*/
special_44: push {r1-r4, lr}
ldr r3, pointer7
ldrh r0, [r3]
ldrh r4, [r3, #0x2]
bl call_var_decrypt
add r3, r0, #0x0
add r0, r4, #0x0
add r4, r3, #0x0
bl call_var_decrypt
ldrh r0, [r0]
ldrh r2, [r4]
EOR r0, r2
pop {r1-r4, pc}
.hword 0x0000
pointer7: .word 0x0203f4d8

call_var_decrypt: ldr r1, var_decrypt
bx r1
var_decrypt:.word 0x0806E455



Ésta rutina actualmente, carga dos variables que hayamos puesto en 0x0203f4d8 de la siguiente manera:

Writebytetooffset 0x50 0x0203f4d8
Writebytetooffset 0x60 0x0203f4d9
Writebytetooffset 0x06 0x0203f4da
Writebytetooffset 0x80 0x0203f4db

aqui cargamos la variable 6050 y 8008


Pero hay un problema, ésta rutina fue hecha para reemplazar un Special (El 0x44) en FireRed, y ser usada con un special2 de forma que pueda devolver el valor a una variable que nosotros le digamos... Mañana con tiempo veré si usando el IDA PRO, IPS y algun que otro truco me doy cuenta como funciona, o, miro otras rutinas para intentar lograr que carge el resultado en la primer variable que seteamos