Registrarse

[ASM] Insertar rutinas ASM

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


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
(Creditos a eing por la rutina de efecto pensamiento)

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)

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.

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


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!!

Paso 6
Bueno ahora solo queda hacer el script y ya esta, la tenemos insertada!
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
Listo, ahora queda probarlo!

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
para que se vaya el efecto.


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:
Respuesta: [RyFR]Insertar rutinas ASM

Gracias por el tuto, realmente ayuda para los nuevos, con las imágenes se entiende claramente , sin duda que si hubiera visto este tuto mas antes se me hubiera echo mas facil..., les servira a los nuevos
 

Bugrhak

A long time ago I used to call myself "Subzero".
Respuesta: [RyFR]Insertar rutinas ASM

Esto es algo que ya se ha traído al foro como 3 veces (en español, y en inglés ._.)
Lo de insertar las rutinas, compilarla con thumb y tal, es lo mismo para todos los roms de pokémon, sean roms del idioma ingles, español, alemán, alienígena(?), etc...
Pero aporte, cualquiera, bienvenido sea!
 
Última edición:

Gold

Porrero a tiempo parcial
Miembro insignia
Respuesta: [RyFR]Insertar rutinas ASM

Veo que siguen usando el método dificil, la herramienta Thumb de KarateKid552 te hace lo mismo solo que basta nada mas copiar y pegar el código para insertarlo en el juego y la herramienta hace el resto.
 

Juan Kio

Aprendiendo decomp...
Respuesta: [RyFR]Insertar rutinas ASM

Uff esto ya esta muy repetido...
Pero no viene mal un tutorial mas a wah
Lo veo bien explicado y sencillo
Saludos y ánimos!^^
 
Arriba