Author Id: 17082 Author Name: Sonicarvalho Post Content: Rutina: FireRed 0806A5DC 0806A5DC @ =============== S U B R O U T I N E ======================================= 0806A5DC 0806A5DC 0806A5DC s8F_get_random_val: @ DATA XREF: ROM:0815FBF0o 0806A5DC PUSH {R4,R5,LR} 0806A5DE BL script_read_halfword 0806A5E2 LSLS R0, R0, #0x10 0806A5E4 LSRS R0, R0, #0x10 0806A5E6 BL var_load 0806A5EA MOVS R4, R0 0806A5EC LSLS R4, R4, #0x10 0806A5EE LSRS R4, R4, #0x10 0806A5F0 LDR R5, =var_800D 0806A5F2 BL rand 0806A5F6 LSLS R0, R0, #0x10 0806A5F8 LSRS R0, R0, #0x10 0806A5FA MOVS R1, R4 0806A5FC BL modulo 0806A600 STRH R0, [R5] 0806A602 MOVS R0, #0 0806A604 POP {R4,R5} 0806A606 POP {R1} 0806A608 BX R1 0806A608 @ End of function s8F_get_random_val 0806A608 Bien, pienso que no necesito explicarte mucho, cierto? El comando empieza grabando el valor especificado por el scripter en R1. Después, utilizando el [URL="http://en.wikipedia.org/wiki/Pseudorandom_number_generator"]PRNG[/URL] del juego, graba un valor cualquier (aleatorio) en R0, lo cual después utiliza para hacer un [URL="http://en.wikipedia.org/wiki/Modulo_operation"]MODULO[/URL] (porque como sabes, el valor del PNRG es un valor de 16bit (2 bytes). Osea, sí, funciona así. El argumento puede ser un numero normal (hasta 0x3FFF) o una variable (0x4000->...) Saludos, alguna duda pregunta!