Registrarse

[RH - ASM] Duda con Rutina ASM para evolucionar basado en una flag.

Estado
Cerrado para nuevas respuestas.

Gold

Porrero a tiempo parcial
Miembro insignia
Necesito ayuda con esta rutina para evolucionar un Pokémon basado en una flag enteramente. El problema es que la rutina parece que si comprueba el número de flag y si está activa o no. Si no está funciona y no hace nada. El problema es que al momento de la flag seleccionada estar activa la rom se crashea. Ignoro que pueda estar incorrecto en la rutina.

Este es el código:

C:
.text
.align 2
.thumb
.thumb_func
.global setflagevo

main:
    push {r0-r7}
    add r0, r6, r7
    lsl r0, r0, #0x3
    add r0, r2, r0
    add r3, r0, r3
    ldrh r2, [r3, #0x2]
    mov r0, r8
    mov r5, #0x0
    ldr r0, flag_number
    ldr r2, flag_routine
    ldrh r2, [r2, #0x0]
    bl linker
    cmp r0, #0x1
    bne flagnotset
    mov r10, r3
    pop {r0-r7}
    mov r1, r10
    ldr r0, levelcheckloc
    bx r0

linker:
    bx r2

flagnotset:
    pop {r0-r7}
    ldr r0, noevo
    bx r0

.align
flag_number: .word 0x000018FA
flag_routine: .word 0x0806E6D0 +1
levelcheckloc: .word 0x08043017
noevo: .word 0x08043111
Aquí el tuto con guía sobre los métodos evolutivos https://www.pokecommunity.com/showthread.php?t=329357

Cualquier ayuda será bienvenida.
 

MetalKaktus

A la luz del quinto día, mira al este
Miembro insignia
Si crashea lo más normal es que algún salto de bl o bx no se ha ejecutado correctamente, sea porque no has sumado 1 o porque no apunten a donde deben. La rutina en si no parece que tenga nada mal pero has comprobado que has seguido correctamente en paso de repuntear la tabla de direcciones de las rutinas? Has cambiado el limite de evoluciones?
 
Estado
Cerrado para nuevas respuestas.
Arriba