.text
.align 2
.thumb
.thumb_func
Prestart:
add r0, r0, r5
lsl r0, r0, #0x03
ldr r1, .Replaced_Address
add r4, r0, r1
push {r0-r5}
ldr r0, .SplitImages
ldr r1, .OBJVRAM
mov r2, #0xC0
swi #0xB
ldr r0, .CurMoveIndex_DMA
ldr r0, [r0]
mov r2, #0x10
lsl r2, #8
add r2, #0xD
add r0, r2
ldrb r0, [r0]
cmp r0, #0x0
bne StatFinish
mov r2, #0x10
lsl r2, #8
add r2, #0xA
cmp r6, #0x0
beq StatPreStart
Start:
ldr r0, .CurMoveIndex_DMA
ldr r0, [r0]
add r0, r2
cmp r6, #0x1
bne Continue
add r0, #0x1
Continue:
ldrb r1, [r0]
cmp r1, #0x0
bne GetMove
mov r2, #0x20
lsl r2, #8
add r0, r2
ldrb r1, [r0]
GetMove:
cmp r1, #0x4
beq GetFifthMove
lsl r1, r1, #1
ldr r0, .Move_List_DMA
ldr r2, [r0]
add r2, #0x84
mov r0, r2
add r0, r1
ldrh r3, [r0]
Body:
mov r0, #0x0
lsl r0, r3, #1
add r0, r3
lsl r0, r0, #2
ldr r1, .MoveBase
add r0, r1
ldrb r4, [r0, #10]
(MoveBase+12*halfword)+0x10*/
lsl r4, #1
mov r0, #0x40
lsl r0, #20
ldr r1, [r0]
mov r2, #0x20
orr r1, r2
stm r0!, {r1}
ldr r0, .OAMMemAddress
ldr r1, .IconOAM1
ldr r2, .IconOAM2
cmp r4, #0x2
beq SpecAdd
cmp r4, #0x4
beq StatAdd
Draw:
stmia r0!, {r1, r2}
ldr r0, .OAMMemAddress
mov r1, #0x70
lsl r1, #20
add r1, #0xD8
mov r2, #0x4
swi #0xb
StatFinish:
cmp r6, #0x1
beq MoveFinish
cmp r6, #0x2
beq LearnFinish
pop {r0-r6}
ldr r0, .Return_Address_Stat
bx r0
GetFifthMove:
cmp r6, #0x2
bne StatFinish
ldr r0, .CurMoveIndex_DMA
ldr r0, [r0]
mov r2, #0x10
lsl r2, #8
add r2, #0xA
add r0, r2
sub r0, #0x2
ldrh r3, [r0]
cmp r3, #0x0
bne Body
mov r2, #0x20
lsl r2, #8
add r0, r2
ldrh r3, [r0]
cmp r3, #0x0
bne Body
b Start
StatPreStart:
mov r3, #0x20
lsl r3, #8
add r2, r3
b Start
LearnFinish:
pop {r0-r6}
ldr r0, .Return_Address_Learn
bx r0
MoveFinish:
pop {r0-r6}
ldr r0, .Return_Address_Move
bx r0
SpecAdd:
mov r3, #0x20
lsl r3, #8
add r3, #0x04
add r2, r3
b Draw
StatAdd:
mov r3, #0x20
lsl r3, #8
add r3, #0x08
add r2, r3
b Draw
.align 2
.MoveBase: .word 0x0831C898
.CurMoveIndex_DMA: .word 0x0300090C
.Move_List_DMA: .word 0x0203CF1C
.Replaced_Address: .word 0x03005E08
.Return_Address_Stat: .word 0x081C0F57
.Return_Address_Move: .word 0x081C12F7
.Return_Address_Learn: .word 0x081C175D
.IconOAM1: .word 0x40280078
.IconOAM2: .word 0x0000D580
.OBJVRAM: .word 0x06013000
.OAMMemAddress: .word 0x030023E4
.SplitImages: .word 0x[insert address to images]