scripts_n_asm
Thread Id: 28001
Thread Name: R&FR| ASM | Msgbox Efecto "pensamientos" y efecto default
#0
eing 12479
Bueno, hoy os traigo una simple rutina, que he decidido compartir.
Que es la siguiente:

¿A que todos sabeis hacer este efecto?



Bien, pues como soy generoso, y me cansa que siempre hagais esto con Writebytetoffset, gastando un chorrón de bytes y "ensuciando" el código del script, os traigo mi rutina, para que quede mas simple, comodo y limpio.

Es la siguiente:

RUTINA POKEMON RUBY


Rutina pensamientos:

.align 2
.thumb

main:
push {r0-r2,lr}
ldr r0,.dispcnt
ldrh r1, .dispcntv
strh r1,[r0]
ldr r0, .textbox_pos
mov r1, #0x5f
strb r1,[r0]
ldr r0, .textbox_data
ldrh r1, .ff
strh r1, [r0]
mov r2, #0x0
b bucle

bucle:
add r2, #0x2
mov r1, #0x00
strh r1, [r0, r2]
cmp r2, #0x1C
beq end
b bucle

end:
pop {r0-r2,pc}

.align 2
.textbox_data: .word 0x0202f0aa
.ff: .word 0x0000ffff
.dispcnt: .word 0x04000000
.dispcntv: .word 0x00006161
.textbox_pos: .word 0x04000012
Para los perezosos, aquí la tienen compilada.

07 B5 0B 48 0B 49 01 80 0B 48 5F 21 01 70 06 48 06 49 01 80 00 22 FF E7 02 32 00 21 81 52 1C 2A 00 D0 F9 E7 07 BD C0 46 AA F0 02 02 FF FF 00 00 00 00 00 04 61 61 00 00 12 00 00 04Ponerla que empiece en 0,2,4,6,8,a, c o e (Si no no os funcionará)

Y como no, también la rutina para hacer que el msgbox vuelva a la normalidad.


.align 2
.thumb

main:
push {r0-r3,lr}
ldr r0, .dispcnt
ldr r1, .dispcntv
strh r1,[r0]
ldr r0, .textbox_pos
mov r1, #0x0
strb r1,[r0]
mov r2, #0x0
ldr r0, .textbox
ldr r1, .textboxv
b change

change:
ldr r3,[r1] @valor xxxx xxxx r1
str r3,[r0,r2]
add r2,#0x2
add r1,#0x2
cmp r2, #0x1c
beq fin
b change

fin:
pop {r0-r3,pc}


.align 2
.textbox: .word 0x0202f0aa
.dispcnt: .word 0x04000000
.dispcntv: .word 0x00001F70
.textboxv: .word 0x0202ECA8
.textbox_pos: .word 0x04000012
Para los perezosos:
0F B5 09 48 09 49 01 80 06 4A 05 48 08 49 FF E7 0B 68 83 50 02 32 02 31 1C 2A 00 D0 F8 E7 0F BD AA F0 02 02 00 00 00 00 00 00 00 04 70 1F 00 00 A8 EC 02 02Ponerla que empiece en 0,2,4,6,8,a, c o e (Si no no os funcionará)

Como podeis ver, el espacio que ahorramos usando esta rutina es BASTANTE.

Así que os animo a usarla ^^

Ahora solo queda el scirpt de muestra:


#org 0xoffset
callasm 0xoffset_rutina_msgbox_pensamientos+1
msgbox 0x8offset_msgbox
callastd 0x2
callasm 0xoffset_rutina_msgbox_default+1
end

#org 0xoffset_msgbox
= mensaje

RUTINA FR

.align 2
.thumb

main:
push {r0,r3}
ldr r0, .var
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
.var: .word 0x020370c0 @var 0x8004
.dispcnt: .word 0x04000000
.dispcntv: .word 0x00006161
.dispcntvn: .word 0x00007f60
.textbox_pos: .word 0x04000012
.normal_msgbox: .word 0x08471dec
.black_box: .word 0x089F3A10
La dejo compilada:
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 08Si solo copian y pegan, en el offset: 9F 3A 10, habrán de copiar los nuevos colores del textbox. (Los que se usarán para el efecto pensamiento), que son los siguientes:

2E 53 00 00 FF 7F 00 00 FF 7F FF 7F FF 7F FF 7F FF 7F FF 00 00 00 00 00 00 00 00 00 00 00 00 00*Nota: Si el espacio, donde van los nuevos colores está ocupada por algo vuestro, simplemente copien los colores en otro lado, y en la rutina cambien el offset de "black_box", por vuestro nuevo offset. (Y si usan ya la compilada cambiar 10 3a 9f 08 por el offset donde se hayen vuestros colores)

Luego, despues de tener los colores del textbox acabados, y la rutina compilada, hemos de ir al offset siguiente: 08150448

Ahí, habremos de colocar los siguientes valores:
00 4F 38 47 XX XX XX 08

(Donde XX XX XX será el offset donde colocasteis la rutina+1)

Por último, el script sería así:

#org 0xoffset
setvar 0x8004 0x1
msgbox 0x8offset
callstd 0x6
setvar 0x8004 0x0
callasm 0xoffset_rutina+1
CUando la variable esté a 1, se verá efecto pensamientos, si no pues normal.



Dar creditos si se usa a Eing.
#1
J.com 12785
Que mosno (?)
Pues se agradece este aporte, yo tenia el tutorial para hacerlo de una pagina alemana de RH, pero este metodo es mas sencillo creo.

Lo voy a probar en FR y te digo, que no todos los wbto de ruby funcionan en FR como tú dices, por ejemplo, el del cambio de sexo y alguno mas en FR no me funcionaron.

Aún asi esto es ASM no wbto, espero que funcione.

Grachie tito Eing :3
#2
BLAx/Atlas 26580
Otro genial aporte, para variar, ¿no?
#3
Dani_SR_17 28493
Pues muy útil el aporte eh, como no siempre sorprendiendo :D
#4
Decidme_un_nick_4315♪Kuchiki 28197
Todos a comentar! XD
Pues eso, Jota tiene que cambier de sitio esto xD
Pero bueh, genia aporte, nos servirá mucho ^^
Slau2!! :D
#5
J.com 12785
Lo muevo a Tutoriales GBA.
#6
Tito Sayer301 26309
Pues yo tengo por ahi una rutina así que me paso foxz creo... XD pero la verdad que prefier una hecha por ti, que si le encuentro fallos te voy a dar por el culo mazo hasta que los arregles ajajajajjaja (¿Porque no hay un icono lanzando un beso?)

No ya enserio, me renta que empieces a liberar rutinas yaa puto jajajajaj Para aportar algo y sentirme to guay, aqui dejo el offset de las paletas que dices para FR, aunque no se si te refieres a esto pero buehh yo lo dejo y si cuela, cuela XDDD
00471DEC

En fin buena rutina ni dudes que la usaré!

Paz bro!
#7
Rafael_Ma 24715
As ordens Dom Eing!
Aporte de la hostia!
#8
G0LD_ZTHVARD0X! 27515
Esto si es un gran aporte, me gusta el resultado, imagino que para portearla a FR solo hay que cambiar alguna direccion, pero eso lo probare otro dia.

Y no se que tanto se complican para obtener la rutina en hex, solo basta con compilarla, abrir el rom con un editor hex e ir a la offset de la rutina y ya esta la rutina en hex.
#9
PaladinBuceador 27087
Yo tengo una duda. Para los msgbox, que tipo de mensaje hay que poner? 0x6, 0x2 o cual?
Lo he probado con 0x2 tal como recomiendas y el resultado es este:


Uso Fire Red, y he usado las rutinas para fire red que pusiste.

Aquí mi script:

'---------------
#org 0x801980
callasm 0x88018D1
msgbox 0x8801996 '"Funciona!"
callstd 0x2
callasm 0x8801931
end


'---------
' Strings
'---------
#org 0x801996
= Funciona!

Donde la rutina para mostrar el mensaje está en la direccion 0x8018D0
y la rutina para ocultarlo en la direccion 0x801930

Es decir, no se muestran las letras blancas como cuando pierdes un combate, si no que sale una caja de texto normal.
¿Qué estoy haciendo mal?
#10
eing 12479
Iniciado por PaladinBuceador
Yo tengo una duda. Para los msgbox, que tipo de mensaje hay que poner? 0x6, 0x2 o cual?
Lo he probado con 0x2 tal como recomiendas y el resultado es este:


Uso Fire Red, y he usado las rutinas para fire red que pusiste.

Aquí mi script:

'---------------
#org 0x801980
callasm 0x88018D1
msgbox 0x8801996 '"Funciona!"
callstd 0x2
callasm 0x8801931
end


'---------
' Strings
'---------
#org 0x801996
= Funciona!

Donde la rutina para mostrar el mensaje está en la direccion 0x8018D0
y la rutina para ocultarlo en la direccion 0x801930

Es decir, no se muestran las letras blancas como cuando pierdes un combate, si no que sale una caja de texto normal.
¿Qué estoy haciendo mal?


En principio NO estas haciendo nada mal, puesto que la rutina te funcina a medias.
El error es mio por postear algo con prisas y sin comprobar -la rutina asm de fr- asi que te pido disculpas. Cuando llegue a casa la comprobare por mi mismo y la pondre fixeada.

Un saludo y gracias por el aviso, pense que estaba bien (porque bo la probe lol)
#11
PaladinBuceador 27087
¡Ni mucho menos tienes que disculparte!

Yo soy el que te tiene que dar las gracias, ya que esta es la primera vez que inserto una rutina ASM, así que ahora me voy a animar a hacer más.

Gracias a tí por investigar estas rutinas.
#12
eing 12479
[MENTION=12785]Jotta[/MENTION] [MENTION=27087]PaladinBuceador[/MENTION] [MENTION=26580]BLAx[/MENTION] [MENTION=26309]Sayer301[/MENTION] [MENTION=28493]Dani_SR_17[/MENTION]
Os he citado a todos, porque sois hackers de Fire Red, bien vengo a notificaros que tal como imaginaba la idea de la rutina que os puse antes para FR estaba bien, pero como siempre FR anda tocando las pelotas con la ram, y diversas funciones que son "anti edición" por fuerza bruta (cosa que en rubí no sucede, por eso me gusta más..)
(Puse writebytetooffset 0x0 0x020377DA y no se pone a 0 xD)

Entonces, voy a editar la rutina de cargar las paletas del msgbox. (Por lo tanto no será necesario hacer callasm 0x en nuestro script..) y se medirá según el valor de una variable. (Yo desconozco las variables de Fr, porque sinceramente nunca lo he hackeado y no tengo datos relevantes, así que me vendría bien vuestra ayuda, que variable podría usar para ese fin? Asignarle un valor y mediante este, se cargue un estilo de msgbox u otro).

Por ejemplo:
Setvar 0xvar 0x0 -> msgbox normal
setvar 0xvar 0x1 -> arriba y todo negro (estilo pensamiento)
setvar 0xvar 0x2 -> textbox invisible
??? Ideas

Así que denme ideas, y una variable libre, yo me encargaré de editar la rutina ^^
#13
Tito Sayer301 26309
Iniciado por eing
[MENTION=12785]Jotta[/MENTION] [MENTION=27087]PaladinBuceador[/MENTION] [MENTION=26580]BLAx[/MENTION] [MENTION=26309]Sayer301[/MENTION] [MENTION=28493]Dani_SR_17[/MENTION]
Os he citado a todos, porque sois hackers de Fire Red, bien vengo a notificaros que tal como imaginaba la idea de la rutina que os puse antes para FR estaba bien, pero como siempre FR anda tocando las pelotas con la ram, y diversas funciones que son "anti edición" por fuerza bruta (cosa que en rubí no sucede, por eso me gusta más..)
(Puse writebytetooffset 0x0 0x020377DA y no se pone a 0 xD)

Entonces, voy a editar la rutina de cargar las paletas del msgbox. (Por lo tanto no será necesario hacer callasm 0x en nuestro script..) y se medirá según el valor de una variable. (Yo desconozco las variables de Fr, porque sinceramente nunca lo he hackeado y no tengo datos relevantes, así que me vendría bien vuestra ayuda, que variable podría usar para ese fin? Asignarle un valor y mediante este, se cargue un estilo de msgbox u otro).

Por ejemplo:
Setvar 0xvar 0x0 -> msgbox normal
setvar 0xvar 0x1 -> arriba y todo negro (estilo pensamiento)
setvar 0xvar 0x2 -> textbox invisible
??? Ideas

Así que denme ideas, y una variable libre, yo me encargaré de editar la rutina ^^


Diuu tendría que haberlo probado antes para reportar y sentirme guay(?) jajajajaja

Bueh pues yo creo que curioseando el manual de JPAN, y que no hay mucha mas rutina por aqui en wah, pues creo que la variable 4000 seria una facil de recordar y que no usa nada.

Por otro lado, sería genial el efecto del pensamiento pero a la inversa, en vez de texto blanco sobre un fondo negro, texto negro sobre un fondo blanco.

Dale caña putoo!! Si tu te animas a FR yo participo y ayudo todo lo que quieras!
#14
J.com 12785
Prueba lo que dice Sayer301, es el experto en variables xD
La verdad es que la idea del fondo blanco y texto negro también quedaria bien, pero me conformo con el modo "pensamiento" de siempre aunque, por qué no los dos?

Define que clase de ideas quieres y yo te ilumino amol (L)
#15
eing 12479
@Jotta @PaladinBuceador @BLAx @Sayer301 @Dani_SR_17 @Echoriver @Д£EXI§ @Kyurem Beltza

Después de citaros a cada uno de vosotros, os dire que esta tarde estaba tan rallado con una rutina de rubí que no lograba sacar, que me pasé a FR.
Añadiendole que @Sayer301 se puso pesado(?)

Bien, el caso es que la rutina de los pensamientos y demás, está finalizada.
Es la siguiente:

.align 2
.thumb

main:
push {r0,r3}
ldr r0, .var
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
.var: .word 0x020370c0 @var 0x8004
.dispcnt: .word 0x04000000
.dispcntv: .word 0x00006161
.dispcntvn: .word 0x00007f60
.textbox_pos: .word 0x04000012
.normal_msgbox: .word 0x08471dec
.black_box: .word 0x089F3A10
La dejo compilada:
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 08Si solo copian y pegan, en el offset: 9F 3A 10, habrán de copiar los nuevos colores del textbox. (Los que se usarán para el efecto pensamiento), que son los siguientes:

2E 53 00 00 FF 7F 00 00 FF 7F FF 7F FF 7F FF 7F FF 7F FF 00 00 00 00 00 00 00 00 00 00 00 00 00*Nota: Si el espacio, donde van los nuevos colores está ocupada por algo vuestro, simplemente copien los colores en otro lado, y en la rutina cambien el offset de "black_box", por vuestro nuevo offset. (Y si usan ya la compilada cambiar 10 3a 9f 08 por el offset donde se hayen vuestros colores)

Luego, despues de tener los colores del textbox acabados, y la rutina compilada, hemos de ir al offset siguiente: 08150448

Ahí, habremos de colocar los siguientes valores:
00 4F 38 47 XX XX XX 08

(Donde XX XX XX será el offset donde colocasteis la rutina+1)

Por último, el script sería así:

#org 0xoffset
setvar 0x8004 0x1
msgbox 0x8offset
callstd 0x6
setvar 0x8004 0x0
callasm 0xoffset_rutina+1
CUando la variable esté a 1, se verá efecto pensamientos, si no pues normal.
(Y si, luego han de refrescar la pantalla, si no se continuará viendo negro. Cosas del fr.. ^^)

Ahora para los aprendices de ASM, o que saben asm directamente, pueden tener más efectos de textbox, modificando esta rutina. (Por ejemplo efecto invisble..)

Solo queda decir, que cualquier bug, notificarlo, y si la usais debeis dar creditos a eing.
#16
Dani_SR_17 28493
Que grande Eing, ya te lo he comentado por skype, pero vaya, no quito la posibilidad de usarlo alguna vez :D

Bien explicadito y masticadito todo. Perfecto para los que no tienen ni zorra de ASM, algún día tengo que meterme con eso...

Bueno, a ver cuando nos sorprendes mas cosas para FR :rolleyes:
#17
eing 12479
Acabo de editar el manual de FR.
Para que se vean los cambios correctamente.

Ah, y si usais esa var para los terremotos, despúes de estos, poner setvar 0x8004 0x0.

Si no, cada vez que entreis en un mapa, las paletas se bugearán. (Dado que la rutina es para que se ponga solo 0 o 1, no se contempla ningun otro valor).
#18
J.com 12785
Iniciado por eing
Acabo de editar el manual de FR.
Para que se vean los cambios correctamente.

Ah, y si usais esa var para los terremotos, despúes de estos, poner setvar 0x8004 0x0.

Si no, cada vez que entreis en un mapa, las paletas se bugearán. (Dado que la rutina es para que se ponga solo 0 o 1, no se contempla ningun otro valor).


¿Pero se puede usar otra var para que la rutina de los pensamientos no use la misma que los terremotos?
Es que me da perezoon buscar todos los terremotos de mi hack y añadir ese comando, si al menos fuese una rom recién empezada...

Y gracias por corregir el manual, por qué probé la rutina el otro dia y no me iva, a ver si ahora me sale xD

Gracias tito Eing :3
#19
eing 12479
Iniciado por Jotta
¿Pero se puede usar otra var para que la rutina de los pensamientos no use la misma que los terremotos?
Es que me da perezoon buscar todos los terremotos de mi hack y añadir ese comando, si al menos fuese una rom recién empezada...

Y gracias por corregir el manual, por qué probé la rutina el otro dia y no me iva, a ver si ahora me sale xD

Gracias tito Eing :3

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
#20
Javi4315♪ 13374
Iniciado por eing
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


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:

.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


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:

.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


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).
#21
eing 12479
Iniciado por Javi4315♪
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:



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:



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).


Veo que vas aprendiendo nada mal.. Aunque no te lo tomes a mal pero desde mi punto de vista es innecesario la parte que adjuntaste, dado que se alarga la rutina para cargar y buscar una variable que el mismo dom hacker puede buscar por si solo y acortarla. Esa idea vendria bien para otros datos qje en cierto modo no puedas buscar o no se pueda editar tan directo como la variable .
O para la gente que es vaga y le da pereza buscar la variable y asignarle la doreccion a r0..
Pero bue, para gustos los colores .. D: