2021-12-19 19:05:40 +00:00
|
|
|
#include "asm/constants/gba_constants.inc"
|
|
|
|
#include "asm/macros.inc"
|
2017-12-11 11:20:15 +00:00
|
|
|
|
|
|
|
.syntax unified
|
|
|
|
|
|
|
|
.text
|
2018-10-17 03:28:27 +00:00
|
|
|
|
2017-12-11 11:20:15 +00:00
|
|
|
thumb_func_start MemorySearchFromFront
|
|
|
|
MemorySearchFromFront:
|
|
|
|
push {r4-r7,lr}
|
|
|
|
adds r5, r0, 0
|
|
|
|
adds r6, r2, 0
|
|
|
|
movs r0, 0x4
|
|
|
|
ands r0, r1
|
|
|
|
cmp r0, 0
|
|
|
|
beq _080030CC
|
|
|
|
movs r4, 0
|
|
|
|
ldr r3, [r5, 0x8]
|
|
|
|
ldr r2, [r5, 0xC]
|
|
|
|
cmp r4, r2
|
|
|
|
bge _08003104
|
|
|
|
ldr r0, [r3, 0x4]
|
|
|
|
movs r1, 0x1
|
|
|
|
ands r0, r1
|
|
|
|
cmp r0, 0
|
|
|
|
bne _08003090
|
|
|
|
ldr r0, [r3, 0x10]
|
|
|
|
cmp r0, r6
|
|
|
|
blt _080030AC
|
|
|
|
movs r0, 0
|
|
|
|
b _08003108
|
|
|
|
_08003090:
|
|
|
|
adds r4, 0x1
|
|
|
|
adds r3, 0x18
|
|
|
|
cmp r4, r2
|
|
|
|
bge _08003104
|
|
|
|
ldr r0, [r3, 0x4]
|
|
|
|
movs r1, 0x1
|
|
|
|
ands r0, r1
|
|
|
|
cmp r0, 0
|
|
|
|
bne _08003090
|
|
|
|
ldr r0, [r3, 0x10]
|
|
|
|
cmp r0, r6
|
|
|
|
blt _080030AC
|
|
|
|
_080030A8:
|
|
|
|
adds r0, r4, 0
|
|
|
|
b _08003108
|
|
|
|
_080030AC:
|
|
|
|
cmp r4, r2
|
|
|
|
bge _08003104
|
|
|
|
movs r5, 0x1
|
|
|
|
adds r1, r2, 0
|
|
|
|
_080030B4:
|
|
|
|
ldr r0, [r3, 0x4]
|
|
|
|
ands r0, r5
|
|
|
|
cmp r0, 0
|
|
|
|
bne _080030C2
|
|
|
|
ldr r0, [r3, 0x10]
|
|
|
|
cmp r0, r6
|
|
|
|
bge _080030A8
|
|
|
|
_080030C2:
|
|
|
|
adds r4, 0x1
|
|
|
|
adds r3, 0x18
|
|
|
|
cmp r4, r1
|
|
|
|
blt _080030B4
|
|
|
|
b _08003104
|
|
|
|
_080030CC:
|
|
|
|
movs r7, 0x1
|
|
|
|
negs r7, r7
|
2018-11-18 08:23:57 +00:00
|
|
|
ldr r1, _08003100
|
2017-12-11 11:20:15 +00:00
|
|
|
movs r4, 0
|
|
|
|
ldr r3, [r5, 0x8]
|
|
|
|
ldr r2, [r5, 0xC]
|
|
|
|
cmp r4, r2
|
|
|
|
bge _080030FC
|
|
|
|
movs r5, 0x1
|
|
|
|
_080030DE:
|
|
|
|
ldr r0, [r3, 0x4]
|
|
|
|
ands r0, r5
|
|
|
|
cmp r0, 0
|
|
|
|
bne _080030F4
|
|
|
|
ldr r0, [r3, 0x10]
|
|
|
|
cmp r0, r6
|
|
|
|
blt _080030F4
|
|
|
|
cmp r0, r1
|
|
|
|
bge _080030F4
|
|
|
|
adds r7, r4, 0
|
|
|
|
adds r1, r0, 0
|
|
|
|
_080030F4:
|
|
|
|
adds r4, 0x1
|
|
|
|
adds r3, 0x18
|
|
|
|
cmp r4, r2
|
|
|
|
blt _080030DE
|
|
|
|
_080030FC:
|
|
|
|
adds r0, r7, 0
|
|
|
|
b _08003108
|
|
|
|
.align 2, 0
|
2018-11-18 08:23:57 +00:00
|
|
|
_08003100: .4byte 0x00024001
|
2017-12-11 11:20:15 +00:00
|
|
|
_08003104:
|
|
|
|
movs r0, 0x1
|
|
|
|
negs r0, r0
|
|
|
|
_08003108:
|
|
|
|
pop {r4-r7}
|
|
|
|
pop {r1}
|
|
|
|
bx r1
|
|
|
|
thumb_func_end MemorySearchFromFront
|
|
|
|
|
|
|
|
thumb_func_start MemorySearchFromBack
|
|
|
|
MemorySearchFromBack:
|
|
|
|
push {r4-r7,lr}
|
|
|
|
adds r4, r0, 0
|
|
|
|
adds r5, r2, 0
|
|
|
|
movs r0, 0x4
|
|
|
|
ands r0, r1
|
|
|
|
cmp r0, 0
|
|
|
|
beq _08003168
|
|
|
|
ldr r0, [r4, 0xC]
|
|
|
|
subs r3, r0, 0x1
|
|
|
|
lsls r0, r3, 1
|
|
|
|
adds r0, r3
|
|
|
|
lsls r0, 3
|
|
|
|
ldr r1, [r4, 0x8]
|
|
|
|
adds r2, r1, r0
|
|
|
|
b _08003132
|
|
|
|
_0800312E:
|
|
|
|
subs r3, 0x1
|
|
|
|
subs r2, 0x18
|
|
|
|
_08003132:
|
|
|
|
cmp r3, 0
|
|
|
|
blt _080031A8
|
|
|
|
ldr r0, [r2, 0x4]
|
|
|
|
movs r1, 0x1
|
|
|
|
ands r0, r1
|
|
|
|
cmp r0, 0
|
|
|
|
bne _0800312E
|
|
|
|
ldr r0, [r2, 0x10]
|
|
|
|
cmp r0, r5
|
|
|
|
blt _0800314A
|
|
|
|
_08003146:
|
|
|
|
adds r0, r3, 0
|
|
|
|
b _080031AC
|
|
|
|
_0800314A:
|
|
|
|
cmp r3, 0
|
|
|
|
blt _080031A8
|
|
|
|
movs r1, 0x1
|
|
|
|
_08003150:
|
|
|
|
ldr r0, [r2, 0x4]
|
|
|
|
ands r0, r1
|
|
|
|
cmp r0, 0
|
|
|
|
bne _0800315E
|
|
|
|
ldr r0, [r2, 0x10]
|
|
|
|
cmp r0, r5
|
|
|
|
bge _08003146
|
|
|
|
_0800315E:
|
|
|
|
subs r3, 0x1
|
|
|
|
subs r2, 0x18
|
|
|
|
cmp r3, 0
|
|
|
|
bge _08003150
|
|
|
|
b _080031A8
|
|
|
|
_08003168:
|
|
|
|
movs r7, 0x1
|
|
|
|
negs r7, r7
|
2018-10-17 03:28:27 +00:00
|
|
|
ldr r6, =0x24001
|
2017-12-11 11:20:15 +00:00
|
|
|
ldr r0, [r4, 0xC]
|
|
|
|
subs r3, r0, 0x1
|
|
|
|
lsls r0, r3, 1
|
|
|
|
adds r0, r3
|
|
|
|
lsls r0, 3
|
|
|
|
ldr r1, [r4, 0x8]
|
|
|
|
adds r2, r1, r0
|
|
|
|
cmp r3, 0
|
|
|
|
blt _080031A0
|
|
|
|
movs r1, 0x1
|
|
|
|
_08003182:
|
|
|
|
ldr r0, [r2, 0x4]
|
|
|
|
ands r0, r1
|
|
|
|
cmp r0, 0
|
|
|
|
bne _08003198
|
|
|
|
ldr r0, [r2, 0x10]
|
|
|
|
cmp r0, r5
|
|
|
|
blt _08003198
|
|
|
|
cmp r0, r6
|
|
|
|
bge _08003198
|
|
|
|
adds r7, r3, 0
|
|
|
|
adds r6, r0, 0
|
|
|
|
_08003198:
|
|
|
|
subs r3, 0x1
|
|
|
|
subs r2, 0x18
|
|
|
|
cmp r3, 0
|
|
|
|
bge _08003182
|
|
|
|
_080031A0:
|
|
|
|
adds r0, r7, 0
|
|
|
|
b _080031AC
|
|
|
|
.align 2, 0
|
2018-10-17 03:28:27 +00:00
|
|
|
.pool
|
2017-12-11 11:20:15 +00:00
|
|
|
_080031A8:
|
|
|
|
movs r0, 0x1
|
|
|
|
negs r0, r0
|
|
|
|
_080031AC:
|
|
|
|
pop {r4-r7}
|
|
|
|
pop {r1}
|
|
|
|
bx r1
|
|
|
|
thumb_func_end MemorySearchFromBack
|
|
|
|
|
2017-12-11 21:50:00 +00:00
|
|
|
thumb_func_start _LocateSetFront
|
|
|
|
_LocateSetFront:
|
2017-12-11 11:20:15 +00:00
|
|
|
push {r4-r7,lr}
|
|
|
|
mov r7, r10
|
|
|
|
mov r6, r9
|
|
|
|
mov r5, r8
|
|
|
|
push {r5-r7}
|
|
|
|
sub sp, 0x14
|
|
|
|
str r0, [sp, 0x8]
|
|
|
|
str r1, [sp, 0xC]
|
|
|
|
str r2, [sp]
|
|
|
|
str r3, [sp, 0x4]
|
|
|
|
adds r0, r3, 0
|
|
|
|
adds r0, 0x3
|
|
|
|
str r0, [sp, 0x10]
|
|
|
|
movs r0, 0x4
|
|
|
|
negs r0, r0
|
|
|
|
ldr r1, [sp, 0x10]
|
|
|
|
ands r1, r0
|
|
|
|
str r1, [sp, 0x10]
|
|
|
|
ldr r2, [sp, 0xC]
|
|
|
|
lsls r2, 1
|
|
|
|
mov r12, r2
|
|
|
|
ldr r0, [sp, 0xC]
|
|
|
|
add r0, r12
|
|
|
|
lsls r0, 3
|
|
|
|
ldr r5, [sp, 0x8]
|
|
|
|
ldr r2, [r5, 0x8]
|
|
|
|
adds r4, r2, r0
|
|
|
|
ldr r0, [r4, 0x10]
|
|
|
|
cmp r0, r1
|
|
|
|
ble _08003260
|
|
|
|
ldr r3, [r5, 0xC]
|
|
|
|
lsls r0, r3, 1
|
|
|
|
adds r0, r3
|
|
|
|
lsls r0, 3
|
|
|
|
adds r1, r2, r0
|
|
|
|
mov r9, r12
|
|
|
|
mov r10, r2
|
|
|
|
mov r12, r3
|
|
|
|
ldr r6, [r5, 0x10]
|
|
|
|
mov r8, r6
|
|
|
|
ldr r7, [sp, 0xC]
|
|
|
|
cmp r12, r7
|
|
|
|
ble _08003222
|
|
|
|
_0800320A:
|
|
|
|
adds r2, r1, 0
|
|
|
|
subs r2, 0x18
|
|
|
|
adds r0, r2, 0
|
|
|
|
ldm r0!, {r5-r7}
|
|
|
|
stm r1!, {r5-r7}
|
|
|
|
ldm r0!, {r5-r7}
|
|
|
|
stm r1!, {r5-r7}
|
|
|
|
subs r3, 0x1
|
|
|
|
adds r1, r2, 0
|
|
|
|
ldr r0, [sp, 0xC]
|
|
|
|
cmp r3, r0
|
|
|
|
bgt _0800320A
|
|
|
|
_08003222:
|
|
|
|
mov r2, r12
|
|
|
|
adds r2, 0x1
|
|
|
|
ldr r1, [sp, 0x8]
|
|
|
|
str r2, [r1, 0xC]
|
|
|
|
cmp r2, r8
|
|
|
|
ble _08003240
|
2018-10-17 03:28:27 +00:00
|
|
|
ldr r0, =gUnknown_80B7EB8
|
|
|
|
ldr r1, =gUnknown_80B7EC4
|
2017-12-11 11:20:15 +00:00
|
|
|
mov r3, r8
|
|
|
|
bl FatalError
|
|
|
|
.align 2, 0
|
2018-10-17 03:28:27 +00:00
|
|
|
.pool
|
2017-12-11 11:20:15 +00:00
|
|
|
_08003240:
|
|
|
|
ldr r0, [sp, 0xC]
|
|
|
|
add r0, r9
|
|
|
|
lsls r0, 3
|
|
|
|
adds r0, 0x18
|
|
|
|
mov r2, r10
|
|
|
|
adds r1, r2, r0
|
|
|
|
ldr r0, [r1, 0xC]
|
|
|
|
ldr r5, [sp, 0x10]
|
|
|
|
adds r0, r5
|
|
|
|
str r0, [r1, 0xC]
|
|
|
|
ldr r0, [r1, 0x10]
|
|
|
|
subs r0, r5
|
|
|
|
str r0, [r1, 0x10]
|
|
|
|
str r5, [r4, 0x10]
|
|
|
|
ldr r6, [sp, 0x4]
|
|
|
|
str r6, [r4, 0x14]
|
|
|
|
_08003260:
|
|
|
|
ldr r0, [sp]
|
|
|
|
bl xxx_memory_attr_related
|
|
|
|
str r0, [r4]
|
|
|
|
ldr r7, [sp]
|
|
|
|
str r7, [r4, 0x4]
|
|
|
|
ldr r0, [sp, 0x34]
|
|
|
|
str r0, [r4, 0x8]
|
|
|
|
adds r0, r4, 0
|
|
|
|
add sp, 0x14
|
|
|
|
pop {r3-r5}
|
|
|
|
mov r8, r3
|
|
|
|
mov r9, r4
|
|
|
|
mov r10, r5
|
|
|
|
pop {r4-r7}
|
|
|
|
pop {r1}
|
|
|
|
bx r1
|
2017-12-11 21:50:00 +00:00
|
|
|
thumb_func_end _LocateSetFront
|
2017-12-11 11:20:15 +00:00
|
|
|
|
2017-12-11 21:50:00 +00:00
|
|
|
thumb_func_start _LocateSetBack
|
|
|
|
_LocateSetBack:
|
2017-12-11 11:20:15 +00:00
|
|
|
push {r4-r7,lr}
|
|
|
|
mov r7, r10
|
|
|
|
mov r6, r9
|
|
|
|
mov r5, r8
|
|
|
|
push {r5-r7}
|
|
|
|
sub sp, 0x14
|
|
|
|
str r0, [sp, 0x8]
|
|
|
|
str r1, [sp, 0xC]
|
|
|
|
str r2, [sp]
|
|
|
|
str r3, [sp, 0x4]
|
|
|
|
adds r0, r3, 0
|
|
|
|
adds r0, 0x3
|
|
|
|
str r0, [sp, 0x10]
|
|
|
|
movs r0, 0x4
|
|
|
|
negs r0, r0
|
|
|
|
ldr r1, [sp, 0x10]
|
|
|
|
ands r1, r0
|
|
|
|
str r1, [sp, 0x10]
|
|
|
|
ldr r2, [sp, 0xC]
|
|
|
|
lsls r0, r2, 1
|
|
|
|
adds r0, r2
|
|
|
|
lsls r0, 3
|
|
|
|
ldr r5, [sp, 0x8]
|
|
|
|
ldr r1, [r5, 0x8]
|
|
|
|
adds r4, r1, r0
|
|
|
|
ldr r0, [r4, 0x10]
|
|
|
|
ldr r6, [sp, 0x10]
|
|
|
|
cmp r0, r6
|
|
|
|
ble _08003328
|
|
|
|
ldr r3, [r5, 0xC]
|
|
|
|
lsls r0, r3, 1
|
|
|
|
adds r0, r3
|
|
|
|
lsls r0, 3
|
|
|
|
adds r1, r0
|
|
|
|
mov r12, r3
|
|
|
|
ldr r7, [r5, 0x10]
|
|
|
|
mov r8, r7
|
|
|
|
ldr r0, [r4, 0xC]
|
|
|
|
mov r9, r0
|
|
|
|
movs r2, 0x18
|
|
|
|
adds r2, r4
|
|
|
|
mov r10, r2
|
|
|
|
ldr r5, [sp, 0xC]
|
|
|
|
cmp r12, r5
|
|
|
|
ble _080032F6
|
|
|
|
_080032DE:
|
|
|
|
adds r2, r1, 0
|
|
|
|
subs r2, 0x18
|
|
|
|
adds r0, r2, 0
|
|
|
|
ldm r0!, {r5-r7}
|
|
|
|
stm r1!, {r5-r7}
|
|
|
|
ldm r0!, {r5-r7}
|
|
|
|
stm r1!, {r5-r7}
|
|
|
|
subs r3, 0x1
|
|
|
|
adds r1, r2, 0
|
|
|
|
ldr r6, [sp, 0xC]
|
|
|
|
cmp r3, r6
|
|
|
|
bgt _080032DE
|
|
|
|
_080032F6:
|
|
|
|
mov r2, r12
|
|
|
|
adds r2, 0x1
|
|
|
|
ldr r7, [sp, 0x8]
|
|
|
|
str r2, [r7, 0xC]
|
|
|
|
cmp r2, r8
|
|
|
|
ble _08003314
|
2018-10-17 03:28:27 +00:00
|
|
|
ldr r0, =gUnknown_80B7EFC
|
|
|
|
ldr r1, =gUnknown_80B7EC4
|
2017-12-11 11:20:15 +00:00
|
|
|
mov r3, r8
|
|
|
|
bl FatalError
|
|
|
|
.align 2, 0
|
2018-10-17 03:28:27 +00:00
|
|
|
.pool
|
2017-12-11 11:20:15 +00:00
|
|
|
_08003314:
|
|
|
|
ldr r0, [r4, 0x10]
|
|
|
|
ldr r1, [sp, 0x10]
|
|
|
|
subs r0, r1
|
|
|
|
str r0, [r4, 0x10]
|
|
|
|
add r0, r9
|
|
|
|
mov r4, r10
|
|
|
|
str r0, [r4, 0xC]
|
|
|
|
str r1, [r4, 0x10]
|
|
|
|
ldr r2, [sp, 0x4]
|
|
|
|
str r2, [r4, 0x14]
|
|
|
|
_08003328:
|
|
|
|
ldr r0, [sp]
|
|
|
|
bl xxx_memory_attr_related
|
|
|
|
str r0, [r4]
|
|
|
|
ldr r5, [sp]
|
|
|
|
str r5, [r4, 0x4]
|
|
|
|
ldr r0, [sp, 0x34]
|
|
|
|
str r0, [r4, 0x8]
|
|
|
|
adds r0, r4, 0
|
|
|
|
add sp, 0x14
|
|
|
|
pop {r3-r5}
|
|
|
|
mov r8, r3
|
|
|
|
mov r9, r4
|
|
|
|
mov r10, r5
|
|
|
|
pop {r4-r7}
|
|
|
|
pop {r1}
|
|
|
|
bx r1
|
2017-12-11 21:50:00 +00:00
|
|
|
thumb_func_end _LocateSetBack
|
2017-12-11 11:20:15 +00:00
|
|
|
|
|
|
|
|
|
|
|
.align 2, 0 @ Don't pad with nop.
|