View Single Post
Old September 1st, 2010 (9:30 PM).
JPAN JPAN is offline
pokemon rom researcher
Join Date: Dec 2008
Posts: 104
You can use this routine to clear 0x1000 bytes. Just replace the last pointer for the one you will be using.
.align 2
Fill_memory: push {r4-r7, lr}
    mov r4, #0x10
    lsl r4, r4, #0x8 /*value = 0x1000*/
    ldr r5, start_addr
    add r4, r5, r4
    mov r0, #0x0
    mov r1, #0x0
    mov r2, #0x0
    mov r3, #0x0
fill_loop:  stmia r5!, {r0-r3}
    cmp r4, r5
    bgt fill_loop
    pop {r4-r7,pc}
.hword 0x0000    
start_addr:  .word 0x0203f000 /*change as needed*/
or, in byte code, this:
f0 b5 10 24 240205 4d 2c 19 00 20 00 21 00 22
00 23 0f c5 ac 42 fc dc f0 bd 00 00 00 f0 03 02
The last bolded bytes are the pointer you wish to use. replace for your own. The bolded number above is the instruction needed to replace to make different sizes. For instance, if your replace 10 with 20, you will clear 0x2000 bytes. This code will always cover 0x100 bytes minimum (0x1).
Here are the links for my work

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