24977-Crianza_de_Pokémon_Shiny_en_la_guardería_\[100%]_\[INVESTIGACIÓN_FINALIZADA]_\[RUBY]
#9
Doctor Juanjo 12932
Iniciado por Cheve_X
¡Hola Chicos! Al fin pude hacer algo útil en ASM :3 Me siento muy bien!

Bueno, miren, les diré como funciona la rutina (Lo unico malo que tiene, por ahora, es que solo chequea el Primer Pokémon que Guardamos si guardamos el shiny segundo, será como que no haya ninguno (Cuando pueda lo arreglo, que ahora estoy emocionado)

Funciona así:

Carga los valores de la OTID1 y la OTID2 y hace XOR, y guarda el resultado.
Carga los valores de la ID y SID y hace XOR, y guarda el resultado.
Hace XOR entre los resultados guardados y guarda ese resultado en la variable LASTRESULT :3

Bueno, aquí la rutina:


.text
.align 2
.thumb
.thumb_func
.global lesson1

main:
push {r0-r4, lr}
ldr r4, .PKMN_DATA
ldrh r0, [r4]
ldrh r2, [r4, #0X2]
EOR r0, r2
ldr r4, .PKMN_DATA2
ldrh r3, [r4]
ldr r4, .PKMN_DATA3
ldrh r2, [r4]
EOR r3, r2
EOR r0,r3
ldr r1, .VAR
strh r0, [r1]
pop {r0-r1, pc}


.align 2
.PKMN_DATA:
.word 0x20286D0

.PKMN_DATA2:
.word 0x2024EB0

.PKMN_DATA3:
.word 0x2024EAE

.VAR:
.word 0x0201E8C2 + (0x800D * 2)



Para aquellos con problemas en pasarla a HEX...


1F B5 06 4C 20 88 62 88 50 40 05 4C 23 88 05 4C 22 88 53 40 58 40 04 49 08 80 03 BD D0 86 02 02 B0 4E 02 02 AE 4E 02 02 DC E8 02 02

Deben copiar ese código en un Offset vacío que termine en 0, 4, 8 o C, luego deberan usar un callasm a esa direccion+1

Si por ejemplo lo ponen en 0x700000 un script simple con ésto funcionando sería así:


#include std.rbh
#DYNAMIC 0x800000

#org @Inicio
callasm 0x700001
compare LASTRESULT 0x8
if B_> call @NoShiny
msgbox @sms1 MSG_NORMAL
end


#org @NoShiny
msgbox @sms2 MSG_NORMAL '"o hay un Shiny"
end



#org @sms1
= Hay un Shiny

#org @sms2
= No hay un Shiny




RECUERDEN QUE ES SOLO PARA RUBY
.

Chevesito :D lo hiciste. ¡Eres fantástico! Cuando llegue a mi casa lo probaré y te digo. ¡Eres genial! Aunque la pregunta es que el resultado son 2 bytes. ¿Eso está incluído?