Author Id: 13374 Author Name: Javi4315♪ Post Content: [QUOTE][url=http://wahackforo.com/showthread.php?p=250100]Iniciado por eing[/url] Sí, puedes cambiar la variable. Para ello asigna un script así: #org 0xoffset setvar 0xvar 0x1234 end Entonces una vez compilado y asignado a un mini, procedemos a hablar con él. Tras hablar con él, vamos en el emulador a cheats -> search cheats for cheats. Se nos abrirá una ventania y pon que sea busqueda igual, y en formato 16 bits. Busca el valor 1234. Entonces te saldrá una direccion o varias. (Si son varias comprueba cual es la de la var, haciendo cambios con el visual viewer) Una vez encontrada, ya solo hemos de cambiar los siguientes bytes de nuestra rutina. (Los que están en negrita, cambiarlos por la direccion de nuestra var, y acordarse de que sea permutado el offset). 09 B4 0D 48 00 88 00 28 0A D0 0C 48 0C 4B 03 80 0D 48 5F 23 03 70 09 BC 0D 49 40 18 02 BC 08 47 06 48 08 4B 03 80 08 48 00 23 03 70 09 BC 07 49 40 18 02 BC 08 47 C0 46 C0 70 03 02 00 00 00 04 61 61 00 00 60 7F 00 00 12 00 00 04 EC 1D 47 08 10 3A 9F 08[/QUOTE] Como siempre, Fire Red fastidiando con la ram. A partir de la variable 0x8000 son estáticas, pero las demás (0x3800 - 0x7FFF) son dinámica (es decir, se mueven continuamente de sitio. Así que ese método no funciona porque las localizarás para ese momento exacto, pero se moverán y las perderás de nuevo. Le he hecho una rutina a Sayer para arreglarlo: [QUOTE].align 2 .thumb push {r0-r3,lr} ldr r0, .pointer ldrh r1, [r0,#0x2] ldrh r2, [r0] ldr r0, =0x4FFF ldr r3, =0x3800 sub r0, r0, r3 ldr r3, =0x2 mul r0, r3 add r2, r2, r0 ldr r3, =0x10000 mul r1, r3 add r0, r1, r2 pop {r0-r3,pc} .pointer: .word 0x03005008[/QUOTE] Lo que hace es localizar la variable que pongas en la parte que está en negrita (recuerdo, desde la 0x3800 hasta la 0x7FFF) y guardarla en r0. De ese modo, si se integra en la rutina de Eing, puedes usar la variable que quieras: [QUOTE].align 2 .thumb init: push {r0,r3} ldr r0, .pointer ldrh r1, [r0,#0x2] ldrh r2, [r0] ldr r0, =0x4FFF ldr r3, =0x3800 sub r0, r0, r3 ldr r3, =0x2 mul r0, r3 add r2, r2, r0 ldr r3, =0x10000 mul r1, r3 add r0, r1, r2 b main main: ldrh r0, [r0,#0x0] cmp r0, #0x0 beq normal ldr r0,.dispcnt ldrh r3, .dispcntv strh r3,[r0] ldr r0, .textbox_pos mov r3, #0x5f strb r3,[r0] pop {r0,r3} ldr r1, .black_box add r0,r0,r1 pop {r1} bx r1 normal: ldr r0,.dispcnt ldrh r3, .dispcntvn strh r3,[r0] ldr r0, .textbox_pos mov r3, #0x0 strb r3,[r0] pop {r0,r3} ldr r1, .normal_msgbox add r0,r0,r1 pop {r1} bx r1 .align 2 .dispcnt: .word 0x04000000 .dispcntv: .word 0x00006161 .dispcntvn: .word 0x00007f60 .textbox_pos: .word 0x04000012 .normal_msgbox: .word 0x08471dec .black_box: .word 0x089F3A10 .pointer: .word 0x03005008[/QUOTE] Compilada quedaría así: 09 B4 19 48 41 88 02 88 18 48 19 4B C0 1A 02 23 58 43 12 18 17 4B 59 43 88 18 FF E7 00 88 00 28 0A D0 0B 48 0B 4B 03 80 0C 48 5F 23 03 70 09 BC 0C 49 40 18 02 BC 08 47 05 48 07 4B 03 80 07 48 00 23 03 70 09 BC 06 49 40 18 02 BC 08 47 C0 46 00 00 00 04 61 61 00 00 60 7F 00 00 12 00 00 04 EC 1D 47 08 10 3A 9F 08 08 50 00 03 FF 4F 00 00 00 38 00 00 00 00 01 00 Si se busca al final de la rutina, estará el "FF4F" que corresponde a la variable 0x4FFF permutada. Se puede cambiar por la variable que se quiera siempre que sea segura para evitar problemas (permutada, claro).