Registrarse

[Duda]¿Como insertar rutina ASM?[Solucionado]

Estado
Cerrado para nuevas respuestas.

MegaSceptile9

Usuario mítico
Bueno pues tengo un problema y es que e estado insertando una rutina para poder cambiar el estado de los pokemon, el problema es que no se si la rutina es para ruby o para fire red, yo uso fire red...Miren aqui esta la rutina es de @Andrea un gran genio por cierto:

.thumb
.align 2

push {r0-r3,lr}
ldr r2, .8002 /*variabile 8002*/
ldrh r2,[r2]
cmp r2, #0x0 /*control var 8002 if it's 0*/
beq parte2
b loop

parte2:
ldr r0, .8000 /*variabile 8000*/
ldrh r0,[r0]
ldr r1,.100 /*interval byte between pokemon team*/
mul r1,r0
ldr r0, .pokemon_data /*offset state*/
add r0, r0, r1
ldr r1, .8001 /*save state*/
strb r1,[r0]
b fine

loop:
ldr r2, .8002 /*variabile 8002*/
ldrh r2,[r2]
ldr r3,.100 /*interval byte between pokemon team*/
mul r3,r2
ldr r0, .pokemon_data /*offset state*/
add r0, r0, r3
ldr r1, .8001 /*save state*/
strb r1,[r0]
sub r2, r2, #0x80 /*tolgo 80*/
sub r2, r2, #0x80 /*tolgo 80*/
cmp r2, #0x0 /*controllo che la var 8002 non sia 0*/
beq fine
b loop

fine:
pop {r0-r3,pc}

.align 2
.pokemon_data:
.word 0x030043B0
.8000:
.word 0x0202e8c4
.8001:
.word 0x0202e8c6
.8002:
.word 0x0202e8c8
.100:
.word 0x00000100
Pues esa es mi duda ¿como la inserto y la pongo en en funcion...?
Porfa el que pueda que me diga porque esto me esta atrasando mucho.
 
Última edición:

Cheve

MoonLover~
Miembro de honor
Respuesta: [Duda]¿Como insertar rutina ASM?

Copia lo que haz puesto en el Code, es decir, la rutina, y la pegas en un bloc de notas, a ese block de notas le pones el nombre que quieras, pero como extensión le pones .asm

Ahora, descarga este .rar

Thumb.rar

Extrae los archivos en una carpeta cualquiera, ahora arrastra con el puntero tu "rutina.asm" sobre el thumb.bat (Sería como abrir como) si la rutina está bien copiada/escrita, en la carpeta del thumb deberia aparecerte un archivo "rutina.bin" a ese archivo lo abres con tu editor hexadecimal preferido y copias todos los bytes que tiene.

Ahora abres tu Rom, y en un espacio vacio, lleno de FF's, y cuya dirrecion termine en 0, 4 , 8, o C (Por ejemplo, 980000 )pegas escribiendo lo que copiaste del "rutina.bin" luego en un scripts haces callasm a esa dirección + 1 (Si es en 980000 haces callasm 0x980001 )

Espero que se entienda
 

Sayer301!

UnityLord!
Miembro de honor
Respuesta: [Duda]¿Como insertar rutina ASM?

No controlo casi nada por no decir nada de ASM, pero yo inserte una rutina hace no demasiado y aunque no se ejecutara igual te lo voy a intentar explicar a mi manera un poco, al menos para que te puedas hacer una idea hasta que venga un sabio y te lo explique como dios manda XD.

Bueno, lo primero es buscar un compilador de rutinas ASM, yo tenía uno pero no lo encuentro y como no me acuerdo como se llama, no me facilita la busqueda, pero seguro que google o algun samaritano te ayuda. El caso, compilas tu rutina en hexadecimal, la copias y abres tu ROM con algun editor hexadecimal, en mi caso usé HxD, lo puedes encontrar en la web.

Bien ya tenemos la rutina en Hex y la Rom abierta con un editor, pues nos vamos a una dirección libre, y al igual que con los scripts, buscala a partir del offset 800000.

Una vez hayas visto un hueco bueno como para insertar la rutina, la copias y la pegas.
ATENCIÓN: HAZLO EN MODO ESCRIBIR, ES MUY IMPORTANTE.

Bueno, ya tienes la rutina insertada (o al menos así debería ser).

Como la ejecutamos?
En un script cuando quieras que se ejecute esta rutina deberás hacer un:
Código:
callasm 0x(direccion de la rutina)
En principio yo creo que sería así, yo personalmente probaría en una copia de mi ROM si así funciona, que sí? Pues genial, asunto zanjado, ¿Que no? Seguro que algún erudito o el propio Andrea te ayudarán.

Un saludo!!

EDITO: Oh mierda, @Cheve_X se me adelantó jajajja
 

MegaSceptile9

Usuario mítico
Respuesta: [Duda]¿Como insertar rutina ASM?

Primero gracias por responder...
Cheve_x me diste lo que necesita y era el THUMB, pero
lo prove se me creo el archivo bin lo inserte en la rom pero cuando lo ejecuto y lo pongo en el script y no pasa nada, creo que el problema esta en esta dirección
.pokemon_data:
.word 0x030043B0
Andrea lo hizo para ruby y creo que esa direccion es para pokemon ruby, intentare encontrar esa direccion en algun lado, de todos modos gracias.
 

Cheve

MoonLover~
Miembro de honor
Respuesta: [Duda]¿Como insertar rutina ASM?

Pues sí, esa rutina es para Pokémon Ruby... Creo que tengo que tener por aquí una que hace lo mismo en Fire Red hecha por JPAN, si la ecnuentro edito... Sino ya se que offset buscar ahora cuando pueda :3
 
Estado
Cerrado para nuevas respuestas.
Arriba