Registrarse

Problema con Rutina ASM

Estado
Cerrado para nuevas respuestas.

Redd

PѺРЩER + WΔᄁT =&#369
Buenos días/tarde/noche xD, tengo un problema y es que al compilar estas dos rutinas (por separado, obviamente) asm (de @Javi4315♪) no se crea el archivo .bin

.align 2
.thumb

ldr r6, =0x020370B8
ldrb r6, [r6]
cmp r6, #0x1
beq end
ldr r6, =0x(rutina1 + 1)
bx r6

end:
push {lr}
pop {r0}
bx r0
.align 2
.thumb

ldr r6, =0x(rutina2 + 1)
bx r6
En concreto es la rutina para quitar el marco del showpokepic de este post: https://whackahack.com/foro/t-47631/rutinas-by-javi4315-pokemon-editor-act-01-05-2017-a

Es algo que estoy haciendo mal? O es el código?

Gracias por leerme,
Redd
 
Última edición por un moderador:

pikachu240

Junior C# Developer
a simple vista falta saber que es rutina1 y rutina2, diria que son offsets a esas rutinas de alli que se les sume 1...asi que para empezar yo pondria esos offsets en vez de esos nombres y luego si no compila será algo más complejo
 

Lunos

Enfrentando a La Organización
Miembro insignia
En ese post yo veo 3 rutinas, las dos que mencionaste y la que está antes de ellas:
Código:
.align 2
.thumb

push {lr}
lsl r0, r0, #0x18
lsr r0, r0, #0x18
lsl r1, r1, #0x18
lsr r1, r1, #0x18
mov r2, #0x85
lsl r2, r2, #0x2
mov r3, #0xE
ldr r6, =0x810f2e9
bl call
pop {r0}
bx r0

call:
bx r6
Ademas, Javi mencionó pasos que debes seguir con respecto a las dos que mencionaste.
Tiene pinta de que no es cuestión de insertarlas y listo, si no que hay que meterles un poco de mano.
Acá tenés los pasos exactos, aislados del resto de su post.

Javi4315♪;378518 dijo:
SHOWPOKEPIC PRO​

Lo primero que vamos a hacer es introducir esta rutina en un espacio vacío del rom (¡Apunta el offset!):

Código:
.align 2
.thumb

push {lr}
lsl r0, r0, #0x18
lsr r0, r0, #0x18
lsl r1, r1, #0x18
lsr r1, r1, #0x18
mov r2, #0x85
lsl r2, r2, #0x2
mov r3, #0xE
ldr r6, =0x810f2e9
bl call
pop {r0}
bx r0

call:
bx r6
Código:
00 B5 00 06 00 0E 09 06 09 0E 85 22 92 00 0E 23 02 4E 00 F0 02 F8 01 BC 00 47 30 47 E9 F2 10 08
Ahora tenemos que insertar una segunda rutina en otro espacio vacío del rom (¡Apunta este offset también!):

Código:
.align 2
.thumb

ldr r6, =0x020370B8
ldrb r6, [r6]
cmp r6, #0x1
beq end
ldr r6, =0x(rutina1 + 1)
bx r6

end:
push {lr}
pop {r0}
bx r0
Código:
04 4E 36 78 01 2E 01 D0 03 4E 30 47 00 B5 01 BC 00 47 00 00 B8 70 03 02 XX XX XX 08
Pero esta rutina debe apuntar a la primera rutina que insertamos. Si la primera rutina la insertamos, por ejemplo, en el offset 0x904500, le añadiremos 1. Por lo tanto, en nuestro ejemplo no quedaría 0x904501. Ahora tenemos que permutarlo:

90 45 01 => 01 45 90

Y eso lo reemplazaremos en la XX XX XX de nuestra segunda rutina.

Ahora ya tenemos nuestras dos rutinas insertadas y las hemos conectado. Pero ahora mismo son independientes del comando showpokepic, no las hemos conectado a él. Este es el último paso. Y para ello vamos a introducir una última rutina:

Código:
.align 2
.thumb

ldr r6, =0x(rutina2 + 1)
bx r6
Código:
00 4E 30 47 XX XX XX 08
Pero esta rutina NO la vamos a introducir en un espacio libre del rom, sino que la vamos a introducir en el offset 0xF7750.

Antes, por supuesto, vamos a reemplazar las XX XX XX con el offset + 1 de la segunda rutina. Recuerda permutarlo como hicimos en el paso anterior. Pero presta atención, es el offset de la segunda rutina, el que hicimos en el paso anterior fue el de la primera. No te equivoques y pongas el mismo offset.

Por tanto, la tercera rutina debe apuntar a la segunda. Del mismo modo, la segunda debe apuntar a la primera. Si ya has seguido todos los pasos, felicidades, puedes elegir si tus showpokepic mostraran o no la caja. Para ello, añade un setvar antes de cada showpokepic:​
 

Redd

PѺРЩER + WΔᄁT =&#369
Re: Respuesta: Problema con Rutina ASM

a simple vista falta saber que es rutina1 y rutina2, diria que son offsets a esas rutinas de alli que se les sume 1...asi que para empezar yo pondria esos offsets en vez de esos nombres y luego si no compila será algo más complejo
Si, ya he probado y he puesto los offsets + 1 y todo el temario pero sigue igual sin compilarse :/

Gracias de todos modos

En ese post yo veo 3 rutinas, las dos que mencionaste y la que está antes de ellas:
Código:
.align 2
.thumb

push {lr}
lsl r0, r0, #0x18
lsr r0, r0, #0x18
lsl r1, r1, #0x18
lsr r1, r1, #0x18
mov r2, #0x85
lsl r2, r2, #0x2
mov r3, #0xE
ldr r6, =0x810f2e9
bl call
pop {r0}
bx r0

call:
bx r6
Ademas, Javi mencionó pasos que debes seguir con respecto a las dos que mencionaste.
Tiene pinta de que no es cuestión de insertarlas y listo, si no que hay que meterles un poco de mano.
Acá tenés los pasos exactos, aislados del resto de su post.

La primera se compiló perfectamente y ya la inserté en la ROM, pero esas dos últimas (añadiendo el offset +1 del primero y del segundp en sus respectivas rutinas) siguen sin compilarse ya que al arrastrarlo al thumb no crea el archivo .bin
 

Lunos

Enfrentando a La Organización
Miembro insignia
Respuesta: Re: Respuesta: Problema con Rutina ASM

Si, ya he probado y he puesto los offsets + 1 y todo el temario pero sigue igual sin compilarse :/

Gracias de todos modos



La primera se compiló perfectamente y ya la inserté en la ROM, pero esas dos últimas (añadiendo el offset +1 del primero y del segundp en sus respectivas rutinas) siguen sin compilarse ya que al arrastrarlo al thumb no crea el archivo .bin
Si ya reemplazaste "(rutina1 + 1)" y "(rutina2 + 1)" por sus valores correctos y aun asi no compila, siempre puedes hacerlo del modo manual.

1) Pega la rutina en un archivo de texto, guardalo con el nombre que quieras.

2) Abre un CMD en la carpeta donde tienes thumb.bat (Shift + Click Derecho > Abrir Ventana de Comandos Aqui) y en ella escribe: "thumb NombreDelArchivoConTuRutina.txt"

3) Presiona enter e inmediatamente se habrá creado un archivo con el mismo nombre de tu .txt pero terminado en .bin.

Luego haz con él lo que tengas que hacer.
Si la ventana de comandos te tira algun error, sacale fotito y ponla por aqui.
 

Redd

PѺРЩER + WΔᄁT =&#369
Re: Respuesta: Re: Respuesta: Problema con Rutina ASM

Si ya reemplazaste "(rutina1 + 1)" y "(rutina2 + 1)" por sus valores correctos y aun asi no compila, siempre puedes hacerlo del modo manual.

1) Pega la rutina en un archivo de texto, guardalo con el nombre que quieras.

2) Abre un CMD en la carpeta donde tienes thumb.bat (Shift + Click Derecho > Abrir Ventana de Comandos Aqui) y en ella escribe: "thumb NombreDelArchivoConTuRutina.txt"

3) Presiona enter e inmediatamente se habrá creado un archivo con el mismo nombre de tu .txt pero terminado en .bin.

Luego haz con él lo que tengas que hacer.
Si la ventana de comandos te tira algun error, sacale fotito y ponla por aqui.
EDITADO: Ya lo he solucionado, para el que le haga falta que quite los paréntesis del offset y ya funcionaría ;D
Muchas gracias @Lunos de todas formas :D

Cierren tema cuando puedan.
 
Última edición:

Lunos

Enfrentando a La Organización
Miembro insignia
Respuesta: Re: Respuesta: Re: Respuesta: Problema con Rutina ASM

Ya está hecho, y sí me tira error, aquí tienes la captura:
Pues sinceramente no tengo idea.
Acabo de compilar las 3 rutinas y todas funcionaron de maravilla.


EDITO: Pues nada, recien ví tu EDIT.
 
Estado
Cerrado para nuevas respuestas.
Arriba