Fran
Profesional de WaH
¡¡¡Buenas!!!
Voy a ir al punto(pero si siempre dices lo mismo y te enrollas mas :V)
Hoy vamos a aprender a insertar rutinas ASM y de paso ver una rutina muy chula de eing "Efecto pensamiento".
Herramientas que se utilizaran en el tutorial:
-Editor hex(en mi caso HxD)
-Thumb
-Pokemon ruby
-Un cerebro
Paso 1
Debes tener tu rutina, en mi caso esta
(Creditos a eing por la rutina de efecto pensamiento)
Código:
.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
Paso 2
Lo guardamos, en la carpeta thumb
Importante: Siempre, siempre, siempre al final del nombre poner ".asm" y poner en "todos los archivos" antes de guardar.
(no hagan caso a los otros archivos, estan por que yo ya hice el procedimiento)
Importante: Siempre, siempre, siempre al final del nombre poner ".asm" y poner en "todos los archivos" antes de guardar.
(no hagan caso a los otros archivos, estan por que yo ya hice el procedimiento)
Paso 3
Ahora arrastramos el archivo que se nos creo(en mi caso rutina.asm) a thumb
y se nos creara un archivo llamado "rutina.bim" o depende del nombre que pongas a la rutina te saldra en .bim
si por ejemplo tu pusiste caca.asm te saldra caca.bim.
y se nos creara un archivo llamado "rutina.bim" o depende del nombre que pongas a la rutina te saldra en .bim
si por ejemplo tu pusiste caca.asm te saldra caca.bim.
Paso 4(llega el temido HxD)
Ahora, lo que debemos hacer es abrir con HxD nuestra ROM(pokemon ruby)
Paso extra(Abrir la rom con HxD)
Una vez abierta, buscamos un espacio libre en la rom
para eso deben pulsar el boton "buscar" que esta en la parte superior izquierda(se ve claramente en la imagen anterior, por eso no pongo imagen)
al pulsarlo nos saldran 5 opciones, nosotros vamos a pulsar en la ultima "Ir a..."
y nos saldra una ventana nueva como esta
Ahora buscamos un offset con espacio libre, yo por ejemplo voy a buscar el offset 8088F0 por ejemplo y le damos a "aceptar"
y nos llevara hasta ese offset y como veran tenemos espacio libre ahi("FF" significa que ahi hay espacio libre, ya vendra alguien a explicar mejor esta parte, pero no voy a detenerme en algo que si llevan romhackeando un tiempo ya deberian saber)
Paso extra(Abrir la rom con HxD)
En la parte superior izquierda del HxD encontraremos un botonque es como una carpetita con unq flecha verde
Le damos y se nos abre una ventanita
Y bueno, ya la tenemos abierta
Le damos y se nos abre una ventanita
Y bueno, ya la tenemos abierta
Una vez abierta, buscamos un espacio libre en la rom
para eso deben pulsar el boton "buscar" que esta en la parte superior izquierda(se ve claramente en la imagen anterior, por eso no pongo imagen)
al pulsarlo nos saldran 5 opciones, nosotros vamos a pulsar en la ultima "Ir a..."
y nos saldra una ventana nueva como esta
Ahora buscamos un offset con espacio libre, yo por ejemplo voy a buscar el offset 8088F0 por ejemplo y le damos a "aceptar"
y nos llevara hasta ese offset y como veran tenemos espacio libre ahi("FF" significa que ahi hay espacio libre, ya vendra alguien a explicar mejor esta parte, pero no voy a detenerme en algo que si llevan romhackeando un tiempo ya deberian saber)
Paso 5
Recuerdan el archivo .bim que se nos creo? Bueno, debemos arrastrarlo al HxD(o abrirlo al igual que la ROM pero yo prefiero ese metodo)
Una vez echo eso se nos abrira una nueva ventana en el HxD, se nos vera asi
Lo que nosotros debemos hacer ahora es seleccionarla toda y fijarnos en la parte inferior del HxD en que longitud nos sale
aqui un ejemplo
En este caso nos a salido en longitud "3C"
Ahora les voy a explicar uno de los pasos mas complicadillos del tutorial(aunque enrealidad es super facil xD)
Bueno veran, solo podremos insertar rutinas en 00, 04, 08 y 0C
A eso me refiero.de lo contrario se les ira la ROM a la mierda.
Bueno, ahora se acuerdan que no salio en longitud 3C? Bueno, eso tambien es importante
primero vamos a ver la explicacion y luego les voy a explicar(?
Lo primero que deben hacer es, copiar la rutina(la que abrimos con HxD) Y pegarla(recuerden que debe empezar en00, 04, 08 o 0C y debe tener la misma longitud que la rutina, la cual recordemos que era "3C"
deberia verse a si
Ven? nos quedo en longitud "3C" lo cual esta perfecto.
Bien, ahora debemos pegarla y nos quedara asi
Ahora le damos a Ctrl+S para guardar y listo!!
Una vez echo eso se nos abrira una nueva ventana en el HxD, se nos vera asi
Lo que nosotros debemos hacer ahora es seleccionarla toda y fijarnos en la parte inferior del HxD en que longitud nos sale
aqui un ejemplo
En este caso nos a salido en longitud "3C"
Ahora les voy a explicar uno de los pasos mas complicadillos del tutorial(aunque enrealidad es super facil xD)
Bueno veran, solo podremos insertar rutinas en 00, 04, 08 y 0C
A eso me refiero.de lo contrario se les ira la ROM a la mierda.
Bueno, ahora se acuerdan que no salio en longitud 3C? Bueno, eso tambien es importante
primero vamos a ver la explicacion y luego les voy a explicar(?
Lo primero que deben hacer es, copiar la rutina(la que abrimos con HxD) Y pegarla(recuerden que debe empezar en00, 04, 08 o 0C y debe tener la misma longitud que la rutina, la cual recordemos que era "3C"
deberia verse a si
Ven? nos quedo en longitud "3C" lo cual esta perfecto.
Bien, ahora debemos pegarla y nos quedara asi
Ahora le damos a Ctrl+S para guardar y listo!!
Paso 6
Bueno ahora solo queda hacer el script y ya esta, la tenemos insertada!
Bueno este es el script
Listo, ahora queda probarlo!
Bueno este es el script
Código:
#org 0xoffset
callasm 0xoffset_rutina_msgbox_pensamientos+1
msgbox 0x8offset_msgbox
callastd 0x2
callasm 0xoffset_rutina_msgbox_default+1
end
#org 0xoffset_msgbox
= mensaje
Muestra
Espero les haya gustados! saludos!
Pd: Me olvide de la rutina
Código:
.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 0x0400001
Pd: Bueno, cualquier error de codes es porque lo copie y pege de otro foro un poquillo nuevo(Es mio el tuto)
Última edición: