View Single Post
  #33    
Old July 14th, 2011, 12:19 PM
JPAN
pokemon rom researcher
 
Join Date: Dec 2008
Quote:
Originally Posted by metapod23 View Post
I tried it out, but haven't gotten it to work. Here's the code I'm using:
Code:
.thumb
.align 2
 
Catch_me_not:     ldr r0, =00007015
                bl    LoadVariable
                cmp r0, #0x01
                bne return_to_normal
                ldrb r0, [r0]
                cmp r0, #0x1
                bne return_to_normal
                ldr r1, battleFlags
                ldr r1, [r1]
                ldr r0, afterGhostAddr
                bx r0
 
return_to_normal:    ldr r1, battleFlags
                    ldr r1, [r1]
                    ldr r0, ghostCheckAddr
                    bx r0
 
battleFlags:    .word 0x02022b4c
afterGhostAddr: .word 0x0802d461
ghostCheckAddr:    .word 0x0802d457
 
 
LoadVariable:    ldr r1, ld_Var_addr
                bx r1
ld_Var_addr:    .word 0x0806e569
All the underlined code is what's throwing the code off. The value returned by the variable loader is the value to compare right after. After that, loading from R0 would be loading from address 1, a BIOS address. That address value (if even loaded) will most likely not be 1, so the second check fails.
That second check is used only on the "address reading" version of the code. Clean it off, and it should work.
__________________
Here are the links for my work


Currently working on:
Battle Script Documentation
Another large project
Reply With Quote