mirror of https://github.com/zeldaret/tmc.git
2580 lines
43 KiB
ArmAsm
2580 lines
43 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "constants/constants.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
thumb_func_start sub_0801D898
|
|
sub_0801D898: @ 0x0801D898
|
|
push {r4, r5, r6, r7, lr}
|
|
adds r5, r0, #0
|
|
adds r4, r1, #0
|
|
adds r6, r2, #0
|
|
movs r0, #0x80
|
|
lsls r0, r0, #8
|
|
ands r0, r3
|
|
movs r1, #0x20
|
|
mov ip, r1
|
|
cmp r0, #0
|
|
beq _0801D8B2
|
|
movs r0, #0x40
|
|
mov ip, r0
|
|
_0801D8B2:
|
|
ldr r0, _0801D8D8 @ =0x00007FFF
|
|
ands r3, r0
|
|
ldr r1, _0801D8DC @ =0x040000D4
|
|
movs r2, #0x80
|
|
lsls r2, r2, #0x18
|
|
orrs r2, r6
|
|
lsls r7, r6, #1
|
|
mov r0, ip
|
|
lsls r6, r0, #1
|
|
_0801D8C4:
|
|
str r4, [r1]
|
|
str r5, [r1, #4]
|
|
str r2, [r1, #8]
|
|
ldr r0, [r1, #8]
|
|
adds r4, r4, r7
|
|
adds r5, r5, r6
|
|
subs r3, #1
|
|
cmp r3, #0
|
|
bne _0801D8C4
|
|
pop {r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_0801D8D8: .4byte 0x00007FFF
|
|
_0801D8DC: .4byte 0x040000D4
|
|
|
|
thumb_func_start zMalloc
|
|
zMalloc: @ 0x0801D8E0
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
mov ip, r0
|
|
movs r0, #3
|
|
add ip, r0
|
|
subs r0, #7
|
|
mov r1, ip
|
|
ands r1, r0
|
|
mov ip, r1
|
|
ldr r6, _0801D90C @ =gzHeap
|
|
mov sb, r6
|
|
ldrh r7, [r6]
|
|
movs r5, #1
|
|
movs r3, #0x80
|
|
lsls r3, r3, #5
|
|
add r3, sb
|
|
subs r4, r3, r1
|
|
movs r2, #0
|
|
b _0801D926
|
|
.align 2, 0
|
|
_0801D90C: .4byte gzHeap
|
|
_0801D910:
|
|
cmp r1, r4
|
|
bhi _0801D918
|
|
cmp r3, r0
|
|
bls _0801D952
|
|
_0801D918:
|
|
cmp r4, r1
|
|
bhi _0801D920
|
|
cmp r0, r3
|
|
bls _0801D952
|
|
_0801D920:
|
|
adds r0, r2, #1
|
|
lsls r0, r0, #0x10
|
|
lsrs r2, r0, #0x10
|
|
_0801D926:
|
|
cmp r2, r7
|
|
bhs _0801D94A
|
|
lsls r0, r2, #2
|
|
add r0, sb
|
|
ldrh r1, [r0, #2]
|
|
ldr r6, _0801D95C @ =gzHeap
|
|
adds r1, r1, r6
|
|
ldrh r0, [r0, #4]
|
|
adds r0, r0, r6
|
|
cmp r1, r4
|
|
bhi _0801D940
|
|
cmp r4, r0
|
|
bls _0801D952
|
|
_0801D940:
|
|
cmp r1, r3
|
|
bhi _0801D910
|
|
cmp r3, r0
|
|
bhi _0801D910
|
|
movs r5, #0
|
|
_0801D94A:
|
|
lsls r0, r7, #2
|
|
mov sl, r0
|
|
cmp r5, #0
|
|
bne _0801D9D8
|
|
_0801D952:
|
|
movs r1, #0
|
|
mov r8, r1
|
|
lsls r6, r7, #2
|
|
mov sl, r6
|
|
b _0801D970
|
|
.align 2, 0
|
|
_0801D95C: .4byte gzHeap
|
|
_0801D960:
|
|
movs r5, #0
|
|
_0801D962:
|
|
mov r0, r8
|
|
adds r0, #1
|
|
lsls r0, r0, #0x10
|
|
lsrs r0, r0, #0x10
|
|
mov r8, r0
|
|
cmp r8, r7
|
|
bhs _0801D9D4
|
|
_0801D970:
|
|
mov r1, r8
|
|
lsls r0, r1, #2
|
|
add r0, sb
|
|
ldrh r0, [r0, #2]
|
|
ldr r6, _0801D994 @ =gzHeap
|
|
adds r3, r0, r6
|
|
mov r0, ip
|
|
subs r4, r3, r0
|
|
movs r5, #0
|
|
mov r0, sl
|
|
adds r0, #2
|
|
add r0, sb
|
|
adds r0, #4
|
|
cmp r4, r0
|
|
blo _0801D962
|
|
movs r5, #1
|
|
movs r2, #0
|
|
b _0801D9AE
|
|
.align 2, 0
|
|
_0801D994: .4byte gzHeap
|
|
_0801D998:
|
|
cmp r1, r4
|
|
bhi _0801D9A0
|
|
cmp r3, r0
|
|
bls _0801D960
|
|
_0801D9A0:
|
|
cmp r4, r1
|
|
bhi _0801D9A8
|
|
cmp r0, r3
|
|
bls _0801D960
|
|
_0801D9A8:
|
|
adds r0, r2, #1
|
|
lsls r0, r0, #0x10
|
|
lsrs r2, r0, #0x10
|
|
_0801D9AE:
|
|
cmp r2, r7
|
|
bhs _0801D9D0
|
|
lsls r0, r2, #2
|
|
add r0, sb
|
|
ldrh r1, [r0, #2]
|
|
adds r1, r1, r6
|
|
ldrh r0, [r0, #4]
|
|
adds r0, r0, r6
|
|
cmp r1, r4
|
|
bhi _0801D9C6
|
|
cmp r4, r0
|
|
blo _0801D960
|
|
_0801D9C6:
|
|
cmp r1, r3
|
|
bhs _0801D998
|
|
cmp r3, r0
|
|
bhi _0801D998
|
|
movs r5, #0
|
|
_0801D9D0:
|
|
cmp r5, #0
|
|
beq _0801D962
|
|
_0801D9D4:
|
|
cmp r5, #0
|
|
beq _0801DA00
|
|
_0801D9D8:
|
|
ldr r0, _0801D9FC @ =gUnk_02035542
|
|
mov r1, sl
|
|
adds r2, r1, r0
|
|
subs r3, r0, #2
|
|
subs r1, r4, r3
|
|
strh r1, [r2]
|
|
adds r0, #2
|
|
add r0, sl
|
|
add r1, ip
|
|
strh r1, [r0]
|
|
adds r0, r7, #1
|
|
strh r0, [r3]
|
|
adds r0, r4, #0
|
|
mov r1, ip
|
|
bl MemClear
|
|
adds r0, r4, #0
|
|
b _0801DA02
|
|
.align 2, 0
|
|
_0801D9FC: .4byte gUnk_02035542
|
|
_0801DA00:
|
|
movs r0, #0
|
|
_0801DA02:
|
|
pop {r3, r4, r5}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
mov sl, r5
|
|
pop {r4, r5, r6, r7, pc}
|
|
|
|
thumb_func_start zFree
|
|
zFree: @ 0x0801DA0C
|
|
push {r4, r5, lr}
|
|
ldr r3, _0801DA44 @ =gzHeap
|
|
subs r1, r0, r3
|
|
ldr r0, _0801DA48 @ =0x00000FFF
|
|
cmp r1, r0
|
|
bhi _0801DA74
|
|
adds r4, r3, #0
|
|
ldrh r5, [r4]
|
|
adds r4, #2
|
|
movs r2, #0
|
|
cmp r2, r5
|
|
bhs _0801DA74
|
|
ldrh r0, [r4]
|
|
cmp r0, r1
|
|
bne _0801DA4C
|
|
lsls r0, r5, #2
|
|
subs r1, r3, #2
|
|
adds r0, r0, r1
|
|
ldrh r1, [r0]
|
|
strh r1, [r4]
|
|
strh r2, [r0]
|
|
adds r0, #2
|
|
ldrh r1, [r0]
|
|
strh r1, [r4, #2]
|
|
strh r2, [r0]
|
|
subs r0, r5, #1
|
|
strh r0, [r3]
|
|
b _0801DA74
|
|
.align 2, 0
|
|
_0801DA44: .4byte gzHeap
|
|
_0801DA48: .4byte 0x00000FFF
|
|
_0801DA4C:
|
|
adds r4, #4
|
|
adds r2, #1
|
|
cmp r2, r5
|
|
bhs _0801DA74
|
|
ldrh r0, [r4]
|
|
cmp r0, r1
|
|
bne _0801DA4C
|
|
lsls r1, r5, #2
|
|
ldr r3, _0801DA78 @ =gUnk_0203553E
|
|
adds r1, r1, r3
|
|
ldrh r0, [r1]
|
|
strh r0, [r4]
|
|
movs r2, #0
|
|
strh r2, [r1]
|
|
adds r1, #2
|
|
ldrh r0, [r1]
|
|
strh r0, [r4, #2]
|
|
strh r2, [r1]
|
|
subs r0, r5, #1
|
|
strh r0, [r3, #2]
|
|
_0801DA74:
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
_0801DA78: .4byte gUnk_0203553E
|
|
|
|
thumb_func_start zMallocInit
|
|
zMallocInit: @ 0x0801DA7C
|
|
push {lr}
|
|
ldr r0, _0801DA8C @ =gzHeap
|
|
movs r1, #0x80
|
|
lsls r1, r1, #5
|
|
bl MemClear
|
|
pop {pc}
|
|
.align 2, 0
|
|
_0801DA8C: .4byte gzHeap
|
|
|
|
thumb_func_start DispReset
|
|
DispReset: @ 0x0801DA90
|
|
push {r4, r5, lr}
|
|
adds r4, r0, #0
|
|
ldr r1, _0801DAEC @ =gMain
|
|
ldrb r0, [r1]
|
|
movs r3, #0
|
|
movs r0, #1
|
|
strb r0, [r1]
|
|
ldr r0, _0801DAF0 @ =gUnk_03003DE0
|
|
strb r3, [r0]
|
|
ldr r0, _0801DAF4 @ =gFadeControl
|
|
strb r3, [r0]
|
|
ldr r5, _0801DAF8 @ =gScreen
|
|
adds r0, r5, #0
|
|
adds r0, #0x6d
|
|
strb r3, [r0]
|
|
subs r0, #1
|
|
strb r3, [r0]
|
|
ldr r1, _0801DAFC @ =0x040000B0
|
|
ldrh r2, [r1, #0xa]
|
|
ldr r0, _0801DB00 @ =0x0000C5FF
|
|
ands r0, r2
|
|
strh r0, [r1, #0xa]
|
|
ldrh r2, [r1, #0xa]
|
|
ldr r0, _0801DB04 @ =0x00007FFF
|
|
ands r0, r2
|
|
strh r0, [r1, #0xa]
|
|
ldrh r0, [r1, #0xa]
|
|
movs r0, #0x80
|
|
lsls r0, r0, #0x13
|
|
strh r3, [r0]
|
|
bl ClearOAM
|
|
bl sub_0801DB34
|
|
ldr r0, _0801DB08 @ =0x0600C000
|
|
movs r1, #0x20
|
|
bl MemClear
|
|
ldr r0, _0801DB0C @ =gBG0Buffer
|
|
movs r1, #0x80
|
|
lsls r1, r1, #4
|
|
bl MemClear
|
|
strh r4, [r5, #0xe]
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
_0801DAEC: .4byte gMain
|
|
_0801DAF0: .4byte gUnk_03003DE0
|
|
_0801DAF4: .4byte gFadeControl
|
|
_0801DAF8: .4byte gScreen
|
|
_0801DAFC: .4byte 0x040000B0
|
|
_0801DB00: .4byte 0x0000C5FF
|
|
_0801DB04: .4byte 0x00007FFF
|
|
_0801DB08: .4byte 0x0600C000
|
|
_0801DB0C: .4byte gBG0Buffer
|
|
|
|
thumb_func_start ClearOAM
|
|
ClearOAM: @ 0x0801DB10
|
|
push {r4, lr}
|
|
ldr r3, _0801DB30 @ =gUnk_03000020
|
|
movs r1, #0xe0
|
|
lsls r1, r1, #0x13
|
|
movs r0, #0x80
|
|
movs r4, #0xa8
|
|
lsls r4, r4, #2
|
|
adds r2, r4, #0
|
|
_0801DB20:
|
|
strh r2, [r3]
|
|
adds r3, #8
|
|
strh r2, [r1]
|
|
adds r1, #8
|
|
subs r0, #1
|
|
cmp r0, #0
|
|
bne _0801DB20
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_0801DB30: .4byte gUnk_03000020
|
|
|
|
thumb_func_start sub_0801DB34
|
|
sub_0801DB34: @ 0x0801DB34
|
|
push {r4, lr}
|
|
ldr r4, _0801DB6C @ =gScreen
|
|
adds r0, r4, #0
|
|
movs r1, #0x7c
|
|
bl MemClear
|
|
ldr r0, _0801DB70 @ =gBG0Buffer
|
|
str r0, [r4, #0x10]
|
|
ldr r0, _0801DB74 @ =0x00001F0C
|
|
strh r0, [r4, #8]
|
|
ldr r0, _0801DB78 @ =gBG1Buffer
|
|
str r0, [r4, #0x1c]
|
|
ldr r0, _0801DB7C @ =0x00001C01
|
|
strh r0, [r4, #0x14]
|
|
ldr r0, _0801DB80 @ =gBG2Buffer
|
|
str r0, [r4, #0x28]
|
|
ldr r0, _0801DB84 @ =0x00001D02
|
|
strh r0, [r4, #0x20]
|
|
ldr r0, _0801DB88 @ =gBG3Buffer
|
|
str r0, [r4, #0x34]
|
|
ldr r0, _0801DB8C @ =0x00001E03
|
|
strh r0, [r4, #0x2c]
|
|
movs r0, #0xa0
|
|
lsls r0, r0, #1
|
|
strh r0, [r4]
|
|
ldr r0, _0801DB90 @ =0x0000FFFF
|
|
strh r0, [r4, #6]
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_0801DB6C: .4byte gScreen
|
|
_0801DB70: .4byte gBG0Buffer
|
|
_0801DB74: .4byte 0x00001F0C
|
|
_0801DB78: .4byte gBG1Buffer
|
|
_0801DB7C: .4byte 0x00001C01
|
|
_0801DB80: .4byte gBG2Buffer
|
|
_0801DB84: .4byte 0x00001D02
|
|
_0801DB88: .4byte gBG3Buffer
|
|
_0801DB8C: .4byte 0x00001E03
|
|
_0801DB90: .4byte 0x0000FFFF
|
|
|
|
thumb_func_start sub_0801DB94
|
|
sub_0801DB94: @ 0x0801DB94
|
|
ldr r0, _0801DB9C @ =gScreenTransition
|
|
ldrh r0, [r0, #0x1e]
|
|
lsrs r0, r0, #0xb
|
|
bx lr
|
|
.align 2, 0
|
|
_0801DB9C: .4byte gScreenTransition
|
|
|
|
thumb_func_start sub_0801DBA0
|
|
sub_0801DBA0: @ 0x0801DBA0
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sb
|
|
mov r6, r8
|
|
push {r6, r7}
|
|
sub sp, #4
|
|
adds r4, r0, #0
|
|
adds r5, r1, #0
|
|
adds r1, r2, #0
|
|
adds r0, r5, #0
|
|
bl MemClear
|
|
movs r0, #1
|
|
strb r0, [r5]
|
|
ldr r2, _0801DBE4 @ =gScreenTransition
|
|
ldrh r0, [r2, #0x1c]
|
|
lsrs r0, r0, #4
|
|
movs r1, #0x7f
|
|
ands r0, r1
|
|
strb r0, [r5, #1]
|
|
ldrh r0, [r2, #0x1e]
|
|
lsrs r0, r0, #4
|
|
ands r0, r1
|
|
strb r0, [r5, #2]
|
|
adds r5, #3
|
|
ldr r1, _0801DBE8 @ =gUnk_080C9C50
|
|
ldr r0, _0801DBEC @ =gArea
|
|
ldrb r0, [r0, #3]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
lsls r4, r4, #2
|
|
adds r4, r4, r0
|
|
ldr r6, [r4]
|
|
b _0801DD3A
|
|
.align 2, 0
|
|
_0801DBE4: .4byte gScreenTransition
|
|
_0801DBE8: .4byte gUnk_080C9C50
|
|
_0801DBEC: .4byte gArea
|
|
_0801DBF0:
|
|
ldrb r0, [r6]
|
|
ldrb r1, [r6, #1]
|
|
movs r2, #3
|
|
bl GetRoomProperty
|
|
adds r4, r0, #0
|
|
cmp r4, #0
|
|
bne _0801DC04
|
|
adds r6, #8
|
|
b _0801DD3A
|
|
_0801DC04:
|
|
adds r0, r6, #0
|
|
bl sub_0801DF10
|
|
mov r8, r0
|
|
bl sub_0805279C
|
|
movs r1, #8
|
|
adds r1, r1, r6
|
|
mov sb, r1
|
|
cmp r0, #0
|
|
beq _0801DCAE
|
|
ldrb r0, [r4]
|
|
cmp r0, #0
|
|
beq _0801DCAE
|
|
movs r3, #0xfc
|
|
lsls r3, r3, #2
|
|
ldr r7, _0801DC84 @ =0x000007FF
|
|
_0801DC26:
|
|
ldrb r0, [r4]
|
|
cmp r0, #3
|
|
bgt _0801DCA6
|
|
cmp r0, #2
|
|
blt _0801DCA6
|
|
ldrb r1, [r4, #1]
|
|
mov r0, r8
|
|
str r3, [sp]
|
|
bl CheckLocalFlagByOffset
|
|
ldr r3, [sp]
|
|
cmp r0, #0
|
|
bne _0801DCA6
|
|
ldr r0, _0801DC88 @ =gAreaRoomHeaders
|
|
ldrb r2, [r6]
|
|
lsls r2, r2, #2
|
|
adds r2, r2, r0
|
|
ldrb r1, [r6, #1]
|
|
lsls r0, r1, #2
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #1
|
|
ldr r1, [r2]
|
|
adds r2, r1, r0
|
|
movs r0, #2
|
|
strb r0, [r5]
|
|
ldrb r0, [r4]
|
|
cmp r0, #2
|
|
bne _0801DC8C
|
|
ldrh r0, [r4, #4]
|
|
lsls r0, r0, #4
|
|
ands r0, r3
|
|
movs r1, #8
|
|
orrs r0, r1
|
|
ldrh r1, [r2]
|
|
ands r1, r7
|
|
adds r0, r0, r1
|
|
asrs r0, r0, #4
|
|
strb r0, [r5, #1]
|
|
ldrh r0, [r4, #4]
|
|
lsrs r0, r0, #2
|
|
ands r0, r3
|
|
movs r1, #8
|
|
orrs r0, r1
|
|
ldrh r1, [r2, #2]
|
|
ands r1, r7
|
|
b _0801DC9E
|
|
.align 2, 0
|
|
_0801DC84: .4byte 0x000007FF
|
|
_0801DC88: .4byte gAreaRoomHeaders
|
|
_0801DC8C:
|
|
ldrh r0, [r2]
|
|
ands r0, r7
|
|
ldrh r1, [r4, #4]
|
|
adds r0, r0, r1
|
|
asrs r0, r0, #4
|
|
strb r0, [r5, #1]
|
|
ldrh r0, [r2, #2]
|
|
ands r0, r7
|
|
ldrh r1, [r4, #6]
|
|
_0801DC9E:
|
|
adds r0, r0, r1
|
|
asrs r0, r0, #4
|
|
strb r0, [r5, #2]
|
|
adds r5, #3
|
|
_0801DCA6:
|
|
adds r4, #8
|
|
ldrb r0, [r4]
|
|
cmp r0, #0
|
|
bne _0801DC26
|
|
_0801DCAE:
|
|
bl sub_0805279C
|
|
cmp r0, #0
|
|
beq _0801DD16
|
|
ldrb r1, [r6, #2]
|
|
movs r0, #2
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0801DD16
|
|
ldr r0, _0801DD4C @ =gArea
|
|
ldrb r0, [r0, #3]
|
|
adds r0, #1
|
|
bl CheckGlobalFlag
|
|
cmp r0, #0
|
|
bne _0801DD16
|
|
ldr r0, _0801DD50 @ =gAreaRoomHeaders
|
|
ldrb r2, [r6]
|
|
lsls r2, r2, #2
|
|
adds r2, r2, r0
|
|
ldrb r1, [r6, #1]
|
|
lsls r0, r1, #2
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #1
|
|
ldr r1, [r2]
|
|
adds r2, r1, r0
|
|
movs r0, #4
|
|
strb r0, [r5]
|
|
ldrh r0, [r2, #4]
|
|
lsrs r0, r0, #1
|
|
ldrh r1, [r2]
|
|
adds r0, r0, r1
|
|
asrs r1, r0, #4
|
|
adds r0, r1, #0
|
|
cmp r1, #0
|
|
bge _0801DCF8
|
|
adds r0, #0x7f
|
|
_0801DCF8:
|
|
asrs r0, r0, #7
|
|
lsls r0, r0, #7
|
|
subs r0, r1, r0
|
|
strb r0, [r5, #1]
|
|
ldrh r0, [r2, #6]
|
|
lsrs r0, r0, #1
|
|
ldrh r2, [r2, #2]
|
|
adds r0, r0, r2
|
|
asrs r1, r0, #4
|
|
adds r0, r1, #0
|
|
asrs r0, r0, #7
|
|
lsls r0, r0, #7
|
|
subs r0, r1, r0
|
|
strb r0, [r5, #2]
|
|
adds r5, #3
|
|
_0801DD16:
|
|
ldr r2, _0801DD54 @ =gScreenTransition
|
|
ldrh r0, [r6]
|
|
ldrh r1, [r2, #0x16]
|
|
cmp r0, r1
|
|
bne _0801DD38
|
|
movs r0, #3
|
|
strb r0, [r5]
|
|
ldrh r0, [r2, #0x18]
|
|
lsrs r0, r0, #4
|
|
movs r1, #0x7f
|
|
ands r0, r1
|
|
strb r0, [r5, #1]
|
|
ldrh r0, [r2, #0x1a]
|
|
lsrs r0, r0, #4
|
|
ands r0, r1
|
|
strb r0, [r5, #2]
|
|
adds r5, #3
|
|
_0801DD38:
|
|
mov r6, sb
|
|
_0801DD3A:
|
|
ldrb r0, [r6]
|
|
cmp r0, #0
|
|
beq _0801DD42
|
|
b _0801DBF0
|
|
_0801DD42:
|
|
add sp, #4
|
|
pop {r3, r4}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
pop {r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_0801DD4C: .4byte gArea
|
|
_0801DD50: .4byte gAreaRoomHeaders
|
|
_0801DD54: .4byte gScreenTransition
|
|
|
|
thumb_func_start sub_0801DD58
|
|
sub_0801DD58: @ 0x0801DD58
|
|
ldr r2, _0801DD7C @ =gAreaRoomHeaders
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r2
|
|
lsls r2, r1, #2
|
|
adds r2, r2, r1
|
|
lsls r2, r2, #1
|
|
ldr r3, [r0]
|
|
adds r3, r3, r2
|
|
ldr r0, _0801DD80 @ =gArea
|
|
ldr r1, _0801DD84 @ =0x0000085C
|
|
adds r0, r0, r1
|
|
ldr r2, [r0]
|
|
ldrh r1, [r3]
|
|
strh r1, [r2, #4]
|
|
ldr r1, [r0]
|
|
ldrh r0, [r3, #2]
|
|
strh r0, [r1, #6]
|
|
bx lr
|
|
.align 2, 0
|
|
_0801DD7C: .4byte gAreaRoomHeaders
|
|
_0801DD80: .4byte gArea
|
|
_0801DD84: .4byte 0x0000085C
|
|
|
|
thumb_func_start LoadDungeonMap
|
|
LoadDungeonMap: @ 0x0801DD88
|
|
push {lr}
|
|
ldr r0, _0801DD98 @ =gUnk_0201AEE0
|
|
ldr r1, _0801DD9C @ =0x06006000
|
|
movs r2, #0x80
|
|
lsls r2, r2, #6
|
|
bl LoadResourceAsync
|
|
pop {pc}
|
|
.align 2, 0
|
|
_0801DD98: .4byte gUnk_0201AEE0
|
|
_0801DD9C: .4byte 0x06006000
|
|
|
|
thumb_func_start sub_0801DDA0
|
|
sub_0801DDA0: @ 0x0801DDA0
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
sub sp, #0x14
|
|
adds r4, r0, #0
|
|
bl sub_08052690
|
|
cmp r0, #0
|
|
bne _0801DDB8
|
|
b _0801DEEA
|
|
_0801DDB8:
|
|
ldr r1, _0801DDD8 @ =gUnk_080C9C50
|
|
ldr r0, _0801DDDC @ =gArea
|
|
ldrb r0, [r0, #3]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r1
|
|
ldr r1, [r0]
|
|
lsls r0, r4, #2
|
|
adds r0, r0, r1
|
|
ldr r4, [r0]
|
|
ldr r0, _0801DDE0 @ =gUnk_02019EE0
|
|
movs r1, #0x80
|
|
lsls r1, r1, #8
|
|
bl MemClear
|
|
b _0801DEE2
|
|
.align 2, 0
|
|
_0801DDD8: .4byte gUnk_080C9C50
|
|
_0801DDDC: .4byte gArea
|
|
_0801DDE0: .4byte gUnk_02019EE0
|
|
_0801DDE4:
|
|
ldrb r0, [r4]
|
|
ldrb r1, [r4, #1]
|
|
movs r2, #3
|
|
bl GetRoomProperty
|
|
adds r6, r0, #0
|
|
adds r0, r4, #0
|
|
bl sub_0801DF10
|
|
adds r5, r0, #0
|
|
movs r0, #0
|
|
str r0, [sp, #0xc]
|
|
ldrh r2, [r4]
|
|
ldr r0, _0801DE14 @ =gUnk_02032EC0
|
|
ldrh r3, [r0, #0x20]
|
|
ldr r1, _0801DE18 @ =0x0000FFFF
|
|
ands r1, r2
|
|
ldr r0, _0801DE18 @ =0x0000FFFF
|
|
ands r0, r3
|
|
cmp r1, r0
|
|
bne _0801DE1C
|
|
movs r3, #8
|
|
b _0801DE36
|
|
.align 2, 0
|
|
_0801DE14: .4byte gUnk_02032EC0
|
|
_0801DE18: .4byte 0x0000FFFF
|
|
_0801DE1C:
|
|
bl sub_080527CC
|
|
cmp r0, #0
|
|
beq _0801DE28
|
|
movs r0, #2
|
|
str r0, [sp, #0xc]
|
|
_0801DE28:
|
|
adds r0, r6, #0
|
|
adds r1, r5, #0
|
|
bl sub_0801DF90
|
|
cmp r0, #0
|
|
beq _0801DE38
|
|
movs r3, #3
|
|
_0801DE36:
|
|
str r3, [sp, #0xc]
|
|
_0801DE38:
|
|
ldrb r1, [r4, #2]
|
|
movs r0, #1
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
beq _0801DE46
|
|
movs r0, #0
|
|
str r0, [sp, #0xc]
|
|
_0801DE46:
|
|
adds r3, r4, #0
|
|
adds r3, #8
|
|
str r3, [sp, #0x10]
|
|
ldr r0, [sp, #0xc]
|
|
cmp r0, #0
|
|
beq _0801DEE0
|
|
ldr r2, _0801DEF8 @ =0x040000D4
|
|
ldr r0, [r4, #4]
|
|
ldr r1, _0801DEFC @ =gUnk_08324AE4
|
|
adds r0, r0, r1
|
|
str r0, [r2]
|
|
ldr r0, _0801DF00 @ =gUnk_02019EE0
|
|
str r0, [r2, #4]
|
|
ldr r0, _0801DF04 @ =0x84000100
|
|
str r0, [r2, #8]
|
|
ldr r0, [r2, #8]
|
|
ldr r0, _0801DF08 @ =gAreaRoomHeaders
|
|
ldrb r2, [r4]
|
|
lsls r2, r2, #2
|
|
adds r2, r2, r0
|
|
ldrb r1, [r4, #1]
|
|
lsls r0, r1, #2
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #1
|
|
ldr r2, [r2]
|
|
adds r2, r2, r0
|
|
ldrh r0, [r2]
|
|
lsrs r0, r0, #4
|
|
str r0, [sp]
|
|
ldrh r0, [r2, #2]
|
|
ldr r1, _0801DF0C @ =0x000007FF
|
|
ands r0, r1
|
|
lsrs r0, r0, #4
|
|
str r0, [sp, #4]
|
|
ldrh r0, [r2, #4]
|
|
lsrs r7, r0, #4
|
|
ldrh r0, [r2, #6]
|
|
lsrs r0, r0, #4
|
|
mov sl, r0
|
|
adds r0, r7, #3
|
|
lsrs r0, r0, #2
|
|
str r0, [sp, #8]
|
|
movs r6, #0
|
|
cmp r6, sl
|
|
bhs _0801DEE0
|
|
_0801DEA0:
|
|
ldr r3, [sp, #8]
|
|
adds r1, r6, #0
|
|
muls r1, r3, r1
|
|
ldr r0, _0801DF00 @ =gUnk_02019EE0
|
|
adds r1, r1, r0
|
|
mov r8, r1
|
|
movs r5, #0
|
|
adds r0, r6, #1
|
|
mov sb, r0
|
|
cmp r5, r7
|
|
bhs _0801DEDA
|
|
_0801DEB6:
|
|
ldr r3, [sp]
|
|
adds r4, r3, r5
|
|
adds r0, r5, #0
|
|
mov r1, r8
|
|
bl sub_0801DF60
|
|
ldr r1, [sp, #0xc]
|
|
bl sub_0801DF78
|
|
adds r2, r0, #0
|
|
adds r0, r4, #0
|
|
ldr r3, [sp, #4]
|
|
adds r1, r3, r6
|
|
bl sub_0801DF28
|
|
adds r5, #1
|
|
cmp r5, r7
|
|
blo _0801DEB6
|
|
_0801DEDA:
|
|
mov r6, sb
|
|
cmp r6, sl
|
|
blo _0801DEA0
|
|
_0801DEE0:
|
|
ldr r4, [sp, #0x10]
|
|
_0801DEE2:
|
|
ldrb r0, [r4]
|
|
cmp r0, #0
|
|
beq _0801DEEA
|
|
b _0801DDE4
|
|
_0801DEEA:
|
|
add sp, #0x14
|
|
pop {r3, r4, r5}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
mov sl, r5
|
|
pop {r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_0801DEF8: .4byte 0x040000D4
|
|
_0801DEFC: .4byte gUnk_08324AE4
|
|
_0801DF00: .4byte gUnk_02019EE0
|
|
_0801DF04: .4byte 0x84000100
|
|
_0801DF08: .4byte gAreaRoomHeaders
|
|
_0801DF0C: .4byte 0x000007FF
|
|
|
|
thumb_func_start sub_0801DF10
|
|
sub_0801DF10: @ 0x0801DF10
|
|
push {lr}
|
|
adds r1, r0, #0
|
|
ldrb r0, [r1, #3]
|
|
cmp r0, #1
|
|
bne _0801DF20
|
|
movs r0, #0xc0
|
|
lsls r0, r0, #2
|
|
b _0801DF26
|
|
_0801DF20:
|
|
ldrb r0, [r1]
|
|
bl sub_08052D58
|
|
_0801DF26:
|
|
pop {pc}
|
|
|
|
thumb_func_start sub_0801DF28
|
|
sub_0801DF28: @ 0x0801DF28
|
|
push {r4, lr}
|
|
lsrs r4, r1, #3
|
|
lsls r4, r4, #4
|
|
lsrs r3, r0, #3
|
|
adds r4, r4, r3
|
|
lsls r4, r4, #5
|
|
ldr r3, _0801DF58 @ =gUnk_0201AEE0
|
|
adds r4, r4, r3
|
|
movs r3, #7
|
|
ands r1, r3
|
|
lsls r1, r1, #2
|
|
adds r4, r4, r1
|
|
ands r0, r3
|
|
lsls r0, r0, #2
|
|
lsls r2, r0
|
|
ldr r1, _0801DF5C @ =gUnk_080C9460
|
|
adds r0, r0, r1
|
|
ldr r1, [r4]
|
|
ldr r0, [r0]
|
|
ands r1, r0
|
|
orrs r1, r2
|
|
str r1, [r4]
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_0801DF58: .4byte gUnk_0201AEE0
|
|
_0801DF5C: .4byte gUnk_080C9460
|
|
|
|
thumb_func_start sub_0801DF60
|
|
sub_0801DF60: @ 0x0801DF60
|
|
adds r3, r0, #0
|
|
lsrs r0, r3, #2
|
|
adds r0, r0, r1
|
|
ldrb r0, [r0]
|
|
movs r2, #3
|
|
adds r1, r2, #0
|
|
bics r1, r3
|
|
lsls r1, r1, #1
|
|
asrs r0, r1
|
|
ands r0, r2
|
|
bx lr
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_0801DF78
|
|
sub_0801DF78: @ 0x0801DF78
|
|
push {lr}
|
|
cmp r0, #2
|
|
beq _0801DF88
|
|
cmp r0, #2
|
|
blo _0801DF8E
|
|
cmp r0, #3
|
|
beq _0801DF8C
|
|
b _0801DF8E
|
|
_0801DF88:
|
|
adds r0, r1, #0
|
|
b _0801DF8E
|
|
_0801DF8C:
|
|
movs r0, #7
|
|
_0801DF8E:
|
|
pop {pc}
|
|
|
|
thumb_func_start sub_0801DF90
|
|
sub_0801DF90: @ 0x0801DF90
|
|
push {lr}
|
|
adds r2, r1, #0
|
|
cmp r0, #0
|
|
bne _0801DFAA
|
|
b _0801DFB0
|
|
_0801DF9A:
|
|
ldrb r1, [r0, #1]
|
|
adds r0, r2, #0
|
|
bl CheckLocalFlagByOffset
|
|
b _0801DFB2
|
|
_0801DFA4:
|
|
cmp r1, #1
|
|
beq _0801DF9A
|
|
adds r0, #8
|
|
_0801DFAA:
|
|
ldrb r1, [r0]
|
|
cmp r1, #0
|
|
bne _0801DFA4
|
|
_0801DFB0:
|
|
movs r0, #0
|
|
_0801DFB2:
|
|
pop {pc}
|
|
|
|
thumb_func_start sub_0801DFB4
|
|
sub_0801DFB4: @ 0x0801DFB4
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
mov r8, r0
|
|
adds r4, r1, #0
|
|
adds r5, r2, #0
|
|
adds r6, r3, #0
|
|
ldr r7, _0801E004 @ =gUnk_02022740
|
|
adds r0, r7, #0
|
|
movs r1, #0x10
|
|
bl MemClear
|
|
strh r4, [r7, #6]
|
|
strh r5, [r7, #8]
|
|
strh r6, [r7, #0xa]
|
|
mov r0, r8
|
|
str r0, [r7, #0xc]
|
|
ldr r0, _0801E008 @ =gUnk_03003DF0
|
|
ldrb r0, [r0, #2]
|
|
strb r0, [r7, #3]
|
|
mov r1, r8
|
|
cmp r1, #0
|
|
beq _0801DFF8
|
|
ldrb r1, [r1, #0x11]
|
|
lsls r0, r1, #0x1c
|
|
lsrs r0, r0, #0x1c
|
|
strb r0, [r7, #4]
|
|
movs r0, #0x10
|
|
rsbs r0, r0, #0
|
|
ands r0, r1
|
|
movs r1, #2
|
|
orrs r0, r1
|
|
mov r1, r8
|
|
strb r0, [r1, #0x11]
|
|
_0801DFF8:
|
|
movs r0, #0
|
|
strb r0, [r7]
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_0801E004: .4byte gUnk_02022740
|
|
_0801E008: .4byte gUnk_03003DF0
|
|
|
|
thumb_func_start sub_0801E00C
|
|
sub_0801E00C: @ 0x0801E00C
|
|
push {r4, lr}
|
|
ldr r1, _0801E024 @ =gUnk_080C9CAC
|
|
ldr r4, _0801E028 @ =gUnk_02022740
|
|
ldrb r0, [r4, #1]
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
bl _call_via_r0
|
|
ldrb r0, [r4]
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_0801E024: .4byte gUnk_080C9CAC
|
|
_0801E028: .4byte gUnk_02022740
|
|
|
|
thumb_func_start sub_0801E02C
|
|
sub_0801E02C: @ 0x0801E02C
|
|
push {r4, lr}
|
|
ldr r4, _0801E040 @ =gUnk_02022740
|
|
ldrh r0, [r4, #6]
|
|
bl sub_0801E0E0
|
|
movs r0, #3
|
|
strb r0, [r4]
|
|
movs r0, #1
|
|
strb r0, [r4, #1]
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_0801E040: .4byte gUnk_02022740
|
|
|
|
thumb_func_start sub_0801E044
|
|
sub_0801E044: @ 0x0801E044
|
|
push {lr}
|
|
ldr r0, _0801E06C @ =gTextBox
|
|
ldrb r1, [r0]
|
|
movs r0, #0x7f
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0801E06A
|
|
movs r0, #4
|
|
movs r1, #0
|
|
bl MenuFadeIn
|
|
ldr r0, _0801E070 @ =gUnk_02022740
|
|
movs r1, #4
|
|
strb r1, [r0]
|
|
movs r1, #2
|
|
strb r1, [r0, #1]
|
|
movs r0, #0x6b
|
|
bl SoundReq
|
|
_0801E06A:
|
|
pop {pc}
|
|
.align 2, 0
|
|
_0801E06C: .4byte gTextBox
|
|
_0801E070: .4byte gUnk_02022740
|
|
|
|
thumb_func_start sub_0801E074
|
|
sub_0801E074: @ 0x0801E074
|
|
push {lr}
|
|
ldr r0, _0801E084 @ =gUnk_02022740
|
|
ldrb r1, [r0]
|
|
cmp r1, #5
|
|
beq _0801E088
|
|
cmp r1, #6
|
|
beq _0801E08C
|
|
b _0801E098
|
|
.align 2, 0
|
|
_0801E084: .4byte gUnk_02022740
|
|
_0801E088:
|
|
ldrh r0, [r0, #8]
|
|
b _0801E08E
|
|
_0801E08C:
|
|
ldrh r0, [r0, #0xa]
|
|
_0801E08E:
|
|
bl sub_0801E0E0
|
|
ldr r1, _0801E09C @ =gUnk_02022740
|
|
movs r0, #3
|
|
strb r0, [r1, #1]
|
|
_0801E098:
|
|
pop {pc}
|
|
.align 2, 0
|
|
_0801E09C: .4byte gUnk_02022740
|
|
|
|
thumb_func_start sub_0801E0A0
|
|
sub_0801E0A0: @ 0x0801E0A0
|
|
push {r4, lr}
|
|
ldr r0, _0801E0D8 @ =gTextBox
|
|
ldrb r1, [r0]
|
|
movs r0, #0x7f
|
|
ands r0, r1
|
|
cmp r0, #0
|
|
bne _0801E0D4
|
|
ldr r4, _0801E0DC @ =gUnk_02022740
|
|
ldr r3, [r4, #0xc]
|
|
cmp r3, #0
|
|
beq _0801E0C8
|
|
ldrb r0, [r4, #4]
|
|
movs r1, #0xf
|
|
ands r1, r0
|
|
ldrb r2, [r3, #0x11]
|
|
movs r0, #0x10
|
|
rsbs r0, r0, #0
|
|
ands r0, r2
|
|
orrs r0, r1
|
|
strb r0, [r3, #0x11]
|
|
_0801E0C8:
|
|
ldrb r0, [r4]
|
|
movs r1, #1
|
|
cmp r0, #6
|
|
bne _0801E0D2
|
|
movs r1, #2
|
|
_0801E0D2:
|
|
strb r1, [r4]
|
|
_0801E0D4:
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_0801E0D8: .4byte gTextBox
|
|
_0801E0DC: .4byte gUnk_02022740
|
|
|
|
thumb_func_start sub_0801E0E0
|
|
sub_0801E0E0: @ 0x0801E0E0
|
|
push {lr}
|
|
adds r2, r0, #0
|
|
cmp r2, #0
|
|
beq _0801E102
|
|
ldr r0, _0801E0F8 @ =gUnk_02022740
|
|
ldr r1, [r0, #0xc]
|
|
cmp r1, #0
|
|
beq _0801E0FC
|
|
adds r0, r2, #0
|
|
bl TextboxNoOverlap
|
|
b _0801E102
|
|
.align 2, 0
|
|
_0801E0F8: .4byte gUnk_02022740
|
|
_0801E0FC:
|
|
adds r0, r2, #0
|
|
bl TextboxNoOverlapFollow
|
|
_0801E102:
|
|
pop {pc}
|
|
|
|
thumb_func_start sub_0801E104
|
|
sub_0801E104: @ 0x0801E104
|
|
ldr r1, _0801E118 @ =gScreen
|
|
ldrh r2, [r1]
|
|
ldr r0, _0801E11C @ =0x00009FFF
|
|
ands r0, r2
|
|
movs r2, #0
|
|
strh r0, [r1]
|
|
adds r1, #0x6c
|
|
strb r2, [r1]
|
|
bx lr
|
|
.align 2, 0
|
|
_0801E118: .4byte gScreen
|
|
_0801E11C: .4byte 0x00009FFF
|
|
|
|
thumb_func_start sub_0801E120
|
|
sub_0801E120: @ 0x0801E120
|
|
ldr r3, _0801E14C @ =gScreen
|
|
ldrh r1, [r3]
|
|
movs r2, #0x80
|
|
lsls r2, r2, #6
|
|
adds r0, r2, #0
|
|
movs r2, #0
|
|
orrs r0, r1
|
|
strh r0, [r3]
|
|
adds r1, r3, #0
|
|
adds r1, #0x60
|
|
ldr r0, _0801E150 @ =0x00003F37
|
|
strh r0, [r1]
|
|
adds r1, #2
|
|
movs r0, #0x3f
|
|
strh r0, [r1]
|
|
adds r0, r3, #0
|
|
adds r0, #0x58
|
|
strh r2, [r0]
|
|
subs r1, #6
|
|
movs r0, #0xa0
|
|
strh r0, [r1]
|
|
bx lr
|
|
.align 2, 0
|
|
_0801E14C: .4byte gScreen
|
|
_0801E150: .4byte 0x00003F37
|
|
|
|
thumb_func_start sub_0801E154
|
|
sub_0801E154: @ 0x0801E154
|
|
push {lr}
|
|
movs r1, #0
|
|
bl sub_0801E24C
|
|
pop {pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_0801E160
|
|
sub_0801E160: @ 0x0801E160
|
|
push {r4, r5, r6, lr}
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6}
|
|
adds r6, r0, #0
|
|
mov r8, r1
|
|
mov sb, r2
|
|
ldr r5, _0801E1A8 @ =gUnk_03003DE4
|
|
ldrb r1, [r5]
|
|
lsls r0, r1, #2
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #9
|
|
ldr r4, _0801E1AC @ =gUnk_02017AA0
|
|
adds r0, r0, r4
|
|
movs r1, #0xa0
|
|
lsls r1, r1, #4
|
|
bl MemClear
|
|
adds r0, r6, #0
|
|
mov r1, r8
|
|
mov r2, sb
|
|
bl sub_0801E290
|
|
ldrb r1, [r5]
|
|
lsls r0, r1, #2
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #9
|
|
adds r0, r0, r4
|
|
ldr r1, _0801E1B0 @ =0x04000040
|
|
ldr r2, _0801E1B4 @ =0xA2600001
|
|
bl sub_0805622C
|
|
pop {r3, r4}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
pop {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_0801E1A8: .4byte gUnk_03003DE4
|
|
_0801E1AC: .4byte gUnk_02017AA0
|
|
_0801E1B0: .4byte 0x04000040
|
|
_0801E1B4: .4byte 0xA2600001
|
|
|
|
thumb_func_start sub_0801E1B8
|
|
sub_0801E1B8: @ 0x0801E1B8
|
|
push {r4, lr}
|
|
ldr r2, _0801E1E8 @ =gScreen
|
|
mov ip, r2
|
|
ldrh r3, [r2]
|
|
movs r4, #0x80
|
|
lsls r4, r4, #6
|
|
adds r2, r4, #0
|
|
movs r4, #0
|
|
orrs r2, r3
|
|
mov r3, ip
|
|
strh r2, [r3]
|
|
mov r2, ip
|
|
adds r2, #0x60
|
|
strh r0, [r2]
|
|
mov r0, ip
|
|
adds r0, #0x62
|
|
strh r1, [r0]
|
|
subs r0, #0xa
|
|
strh r4, [r0]
|
|
mov r1, ip
|
|
adds r1, #0x5c
|
|
movs r0, #0xa0
|
|
strh r0, [r1]
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_0801E1E8: .4byte gScreen
|
|
|
|
thumb_func_start sub_0801E1EC
|
|
sub_0801E1EC: @ 0x0801E1EC
|
|
push {r4, r5, r6, lr}
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6}
|
|
mov r8, r0
|
|
mov sb, r1
|
|
adds r4, r2, #0
|
|
ldr r6, _0801E23C @ =gUnk_03003DE4
|
|
ldrb r1, [r6]
|
|
lsls r0, r1, #2
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #9
|
|
ldr r5, _0801E240 @ =gUnk_02017AA0
|
|
adds r0, r0, r5
|
|
movs r1, #0xa0
|
|
lsls r1, r1, #4
|
|
bl MemClear
|
|
adds r0, r4, #0
|
|
movs r1, #0
|
|
bl sub_0801E24C
|
|
mov r0, r8
|
|
mov r1, sb
|
|
adds r2, r4, #0
|
|
bl sub_0801E290
|
|
ldrb r1, [r6]
|
|
lsls r0, r1, #2
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #9
|
|
adds r0, r0, r5
|
|
ldr r1, _0801E244 @ =0x04000040
|
|
ldr r2, _0801E248 @ =0xA2600001
|
|
bl sub_0805622C
|
|
pop {r3, r4}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
pop {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_0801E23C: .4byte gUnk_03003DE4
|
|
_0801E240: .4byte gUnk_02017AA0
|
|
_0801E244: .4byte 0x04000040
|
|
_0801E248: .4byte 0xA2600001
|
|
|
|
thumb_func_start sub_0801E24C
|
|
sub_0801E24C: @ 0x0801E24C
|
|
push {r4, r5, lr}
|
|
lsls r1, r1, #1
|
|
ldr r2, _0801E278 @ =gUnk_02018EE0
|
|
adds r5, r1, r2
|
|
movs r3, #0
|
|
adds r2, r0, #0
|
|
lsls r4, r2, #1
|
|
movs r0, #3
|
|
subs r1, r0, r4
|
|
cmp r3, r2
|
|
bgt _0801E28E
|
|
adds r4, r4, r5
|
|
_0801E264:
|
|
lsls r0, r3, #1
|
|
adds r0, r0, r5
|
|
strh r2, [r0]
|
|
strh r3, [r4]
|
|
cmp r1, #0
|
|
bge _0801E27C
|
|
adds r1, #6
|
|
lsls r0, r3, #2
|
|
adds r1, r1, r0
|
|
b _0801E288
|
|
.align 2, 0
|
|
_0801E278: .4byte gUnk_02018EE0
|
|
_0801E27C:
|
|
adds r1, #0xa
|
|
subs r0, r3, r2
|
|
lsls r0, r0, #2
|
|
adds r1, r1, r0
|
|
subs r4, #2
|
|
subs r2, #1
|
|
_0801E288:
|
|
adds r3, #1
|
|
cmp r3, r2
|
|
ble _0801E264
|
|
_0801E28E:
|
|
pop {r4, r5, pc}
|
|
|
|
thumb_func_start sub_0801E290
|
|
sub_0801E290: @ 0x0801E290
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sb
|
|
mov r6, r8
|
|
push {r6, r7}
|
|
mov ip, r0
|
|
adds r6, r2, #0
|
|
ldr r0, _0801E2BC @ =gUnk_03003DE4
|
|
ldrb r0, [r0]
|
|
lsls r2, r0, #2
|
|
adds r2, r2, r0
|
|
lsls r2, r2, #9
|
|
lsls r0, r1, #1
|
|
ldr r3, _0801E2C0 @ =gUnk_02017AA0
|
|
adds r0, r0, r3
|
|
adds r2, r2, r0
|
|
adds r4, r2, #0
|
|
adds r5, r1, #0
|
|
mov sb, r5
|
|
ldr r0, _0801E2C4 @ =gUnk_02018EE0
|
|
mov r8, r0
|
|
b _0801E30A
|
|
.align 2, 0
|
|
_0801E2BC: .4byte gUnk_03003DE4
|
|
_0801E2C0: .4byte gUnk_02017AA0
|
|
_0801E2C4: .4byte gUnk_02018EE0
|
|
_0801E2C8:
|
|
mov r1, r8
|
|
movs r3, #0
|
|
ldrsh r0, [r1, r3]
|
|
movs r7, #2
|
|
add r8, r7
|
|
mov r3, ip
|
|
subs r1, r3, r0
|
|
adds r3, r3, r0
|
|
cmp r1, #0
|
|
bge _0801E2DE
|
|
movs r1, #0
|
|
_0801E2DE:
|
|
cmp r3, #0xef
|
|
ble _0801E2E4
|
|
movs r3, #0xf0
|
|
_0801E2E4:
|
|
mov r7, sb
|
|
lsls r0, r7, #0x10
|
|
lsrs r0, r0, #0x10
|
|
cmp r0, #0x9f
|
|
bhi _0801E2F2
|
|
strb r3, [r4]
|
|
strb r1, [r4, #1]
|
|
_0801E2F2:
|
|
lsls r0, r5, #0x10
|
|
lsrs r0, r0, #0x10
|
|
cmp r0, #0x9f
|
|
bhi _0801E2FE
|
|
strb r3, [r2]
|
|
strb r1, [r2, #1]
|
|
_0801E2FE:
|
|
subs r4, #2
|
|
adds r2, #2
|
|
movs r0, #1
|
|
rsbs r0, r0, #0
|
|
add sb, r0
|
|
adds r5, #1
|
|
_0801E30A:
|
|
adds r0, r6, #0
|
|
subs r6, #1
|
|
cmp r0, #0
|
|
bne _0801E2C8
|
|
pop {r3, r4}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
pop {r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
|
|
thumb_func_start sub_0801E31C
|
|
sub_0801E31C: @ 0x0801E31C
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
sub sp, #0x20
|
|
str r0, [sp]
|
|
str r1, [sp, #4]
|
|
mov sl, r2
|
|
mov sb, r3
|
|
ldr r0, _0801E3AC @ =gUnk_03003DE4
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, #2
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #9
|
|
ldr r1, _0801E3B0 @ =gUnk_02017AA0
|
|
adds r0, r0, r1
|
|
movs r1, #0xa0
|
|
lsls r1, r1, #4
|
|
bl MemClear
|
|
cmp sl, sb
|
|
bge _0801E3DC
|
|
movs r6, #0
|
|
mov r8, sl
|
|
mov r7, r8
|
|
mov r0, r8
|
|
lsls r1, r0, #1
|
|
movs r0, #3
|
|
subs r5, r0, r1
|
|
cmp r6, r8
|
|
ble _0801E35E
|
|
b _0801E45E
|
|
_0801E35E:
|
|
mov r1, r8
|
|
lsls r0, r1, #2
|
|
ldr r4, _0801E3B4 @ =gUnk_02018EE0
|
|
adds r0, r0, r4
|
|
str r0, [sp, #0x10]
|
|
mov r1, sb
|
|
mov r0, r8
|
|
muls r0, r1, r0
|
|
str r0, [sp, #0x14]
|
|
movs r3, #0
|
|
_0801E372:
|
|
adds r0, r3, #0
|
|
mov r1, sl
|
|
str r3, [sp, #0x18]
|
|
bl Div
|
|
adds r4, r0, #0
|
|
lsls r4, r4, #0x10
|
|
lsrs r4, r4, #0x10
|
|
str r4, [sp, #0x1c]
|
|
ldr r0, [sp, #0x14]
|
|
mov r1, sl
|
|
bl Div
|
|
lsls r0, r0, #0x10
|
|
lsrs r0, r0, #0x10
|
|
lsls r2, r6, #2
|
|
ldr r4, _0801E3B4 @ =gUnk_02018EE0
|
|
adds r1, r2, r4
|
|
str r0, [r1]
|
|
ldr r0, [sp, #0x1c]
|
|
ldr r1, [sp, #0x10]
|
|
str r0, [r1]
|
|
ldr r3, [sp, #0x18]
|
|
cmp r5, #0
|
|
bge _0801E3B8
|
|
adds r0, r5, #6
|
|
adds r5, r0, r2
|
|
b _0801E3D2
|
|
.align 2, 0
|
|
_0801E3AC: .4byte gUnk_03003DE4
|
|
_0801E3B0: .4byte gUnk_02017AA0
|
|
_0801E3B4: .4byte gUnk_02018EE0
|
|
_0801E3B8:
|
|
adds r1, r5, #0
|
|
adds r1, #0xa
|
|
subs r0, r6, r7
|
|
lsls r0, r0, #2
|
|
adds r5, r1, r0
|
|
ldr r4, [sp, #0x10]
|
|
subs r4, #4
|
|
str r4, [sp, #0x10]
|
|
ldr r0, [sp, #0x14]
|
|
mov r1, sb
|
|
subs r0, r0, r1
|
|
str r0, [sp, #0x14]
|
|
subs r7, #1
|
|
_0801E3D2:
|
|
add r3, sb
|
|
adds r6, #1
|
|
cmp r6, r7
|
|
ble _0801E372
|
|
b _0801E45E
|
|
_0801E3DC:
|
|
movs r6, #0
|
|
mov r8, sb
|
|
mov r7, r8
|
|
mov r4, r8
|
|
lsls r1, r4, #1
|
|
movs r0, #3
|
|
subs r5, r0, r1
|
|
cmp r6, r8
|
|
bgt _0801E45E
|
|
lsls r0, r4, #2
|
|
ldr r1, _0801E438 @ =gUnk_02018EE0
|
|
adds r0, r0, r1
|
|
str r0, [sp, #8]
|
|
mov r0, sl
|
|
mov r4, r8
|
|
muls r4, r0, r4
|
|
str r4, [sp, #0xc]
|
|
movs r3, #0
|
|
_0801E400:
|
|
adds r0, r3, #0
|
|
mov r1, sb
|
|
str r3, [sp, #0x18]
|
|
bl Div
|
|
adds r4, r0, #0
|
|
lsls r4, r4, #0x10
|
|
lsrs r4, r4, #0x10
|
|
str r4, [sp, #0x1c]
|
|
ldr r0, [sp, #0xc]
|
|
mov r1, sb
|
|
bl Div
|
|
lsls r0, r0, #0x10
|
|
lsrs r0, r0, #0x10
|
|
lsls r2, r6, #2
|
|
ldr r4, _0801E438 @ =gUnk_02018EE0
|
|
adds r1, r2, r4
|
|
str r0, [r1]
|
|
ldr r0, [sp, #0x1c]
|
|
ldr r1, [sp, #8]
|
|
str r0, [r1]
|
|
ldr r3, [sp, #0x18]
|
|
cmp r5, #0
|
|
bge _0801E43C
|
|
adds r0, r5, #6
|
|
adds r5, r0, r2
|
|
b _0801E456
|
|
.align 2, 0
|
|
_0801E438: .4byte gUnk_02018EE0
|
|
_0801E43C:
|
|
adds r1, r5, #0
|
|
adds r1, #0xa
|
|
subs r0, r6, r7
|
|
lsls r0, r0, #2
|
|
adds r5, r1, r0
|
|
ldr r4, [sp, #8]
|
|
subs r4, #4
|
|
str r4, [sp, #8]
|
|
ldr r0, [sp, #0xc]
|
|
mov r1, sl
|
|
subs r0, r0, r1
|
|
str r0, [sp, #0xc]
|
|
subs r7, #1
|
|
_0801E456:
|
|
add r3, sl
|
|
adds r6, #1
|
|
cmp r6, r7
|
|
ble _0801E400
|
|
_0801E45E:
|
|
ldr r0, [sp]
|
|
ldr r1, [sp, #4]
|
|
mov r2, r8
|
|
bl sub_0801E290
|
|
ldr r0, _0801E48C @ =gUnk_03003DE4
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, #2
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #9
|
|
ldr r1, _0801E490 @ =gUnk_02017AA0
|
|
adds r0, r0, r1
|
|
ldr r1, _0801E494 @ =0x04000040
|
|
ldr r2, _0801E498 @ =0xA2600001
|
|
bl sub_0805622C
|
|
add sp, #0x20
|
|
pop {r3, r4, r5}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
mov sl, r5
|
|
pop {r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_0801E48C: .4byte gUnk_03003DE4
|
|
_0801E490: .4byte gUnk_02017AA0
|
|
_0801E494: .4byte 0x04000040
|
|
_0801E498: .4byte 0xA2600001
|
|
|
|
thumb_func_start sub_0801E49C
|
|
sub_0801E49C: @ 0x0801E49C
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
sub sp, #8
|
|
mov r8, r0
|
|
str r1, [sp, #4]
|
|
mov sb, r2
|
|
adds r5, r3, #0
|
|
ldr r0, _0801E5E4 @ =0x0000FFFF
|
|
movs r2, #0xf0
|
|
lsls r2, r2, #3
|
|
ldr r1, _0801E5E8 @ =gUnk_02018EE0
|
|
bl MemFill16
|
|
adds r3, r5, #0
|
|
subs r3, #0x40
|
|
movs r2, #0xff
|
|
ands r3, r2
|
|
ldr r1, _0801E5EC @ =gSineTable
|
|
adds r0, r3, #0
|
|
adds r0, #0x40
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r1
|
|
movs r4, #0
|
|
ldrsh r0, [r0, r4]
|
|
mov r4, sb
|
|
muls r4, r0, r4
|
|
adds r0, r4, #0
|
|
asrs r0, r0, #8
|
|
mov r4, r8
|
|
adds r7, r4, r0
|
|
lsls r0, r3, #1
|
|
adds r0, r0, r1
|
|
movs r3, #0
|
|
ldrsh r0, [r0, r3]
|
|
mov r4, sb
|
|
muls r4, r0, r4
|
|
adds r0, r4, #0
|
|
asrs r0, r0, #8
|
|
ldr r3, [sp, #4]
|
|
adds r3, r3, r0
|
|
mov sl, r3
|
|
adds r3, r5, #0
|
|
adds r3, #0x68
|
|
ands r3, r2
|
|
adds r0, r3, #0
|
|
adds r0, #0x40
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r1
|
|
movs r4, #0
|
|
ldrsh r0, [r0, r4]
|
|
mov r4, sb
|
|
muls r4, r0, r4
|
|
adds r0, r4, #0
|
|
asrs r0, r0, #8
|
|
mov r4, r8
|
|
adds r6, r4, r0
|
|
lsls r0, r3, #1
|
|
adds r0, r0, r1
|
|
movs r3, #0
|
|
ldrsh r0, [r0, r3]
|
|
mov r4, sb
|
|
muls r4, r0, r4
|
|
adds r0, r4, #0
|
|
asrs r0, r0, #8
|
|
ldr r3, [sp, #4]
|
|
adds r4, r3, r0
|
|
adds r3, r5, #0
|
|
subs r3, #0xe8
|
|
ands r3, r2
|
|
adds r0, r3, #0
|
|
adds r0, #0x40
|
|
lsls r0, r0, #1
|
|
adds r0, r0, r1
|
|
movs r2, #0
|
|
ldrsh r0, [r0, r2]
|
|
mov r2, sb
|
|
muls r2, r0, r2
|
|
adds r0, r2, #0
|
|
asrs r0, r0, #8
|
|
mov r2, r8
|
|
adds r5, r2, r0
|
|
lsls r0, r3, #1
|
|
adds r0, r0, r1
|
|
movs r3, #0
|
|
ldrsh r0, [r0, r3]
|
|
mov r1, sb
|
|
muls r1, r0, r1
|
|
adds r0, r1, #0
|
|
asrs r0, r0, #8
|
|
ldr r2, [sp, #4]
|
|
adds r2, r2, r0
|
|
mov r8, r2
|
|
movs r0, #0
|
|
str r0, [sp]
|
|
adds r0, r7, #0
|
|
mov r1, sl
|
|
adds r2, r6, #0
|
|
adds r3, r4, #0
|
|
bl sub_0801E64C
|
|
movs r0, #1
|
|
str r0, [sp]
|
|
adds r0, r7, #0
|
|
mov r1, sl
|
|
adds r2, r5, #0
|
|
mov r3, r8
|
|
bl sub_0801E64C
|
|
movs r0, #2
|
|
str r0, [sp]
|
|
adds r0, r6, #0
|
|
adds r1, r4, #0
|
|
adds r2, r5, #0
|
|
mov r3, r8
|
|
bl sub_0801E64C
|
|
ldr r5, _0801E5F0 @ =gUnk_03003DE4
|
|
ldrb r1, [r5]
|
|
lsls r0, r1, #2
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #9
|
|
ldr r6, _0801E5F4 @ =gUnk_02017AA0
|
|
adds r0, r0, r6
|
|
movs r1, #0xa0
|
|
lsls r1, r1, #4
|
|
bl MemClear
|
|
ldr r2, _0801E5E8 @ =gUnk_02018EE0
|
|
ldrb r1, [r5]
|
|
lsls r0, r1, #2
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #9
|
|
adds r1, r0, r6
|
|
movs r3, #0xa0
|
|
mov sl, r3
|
|
_0801E5B0:
|
|
ldr r7, [r2]
|
|
ldr r6, [r2, #4]
|
|
ldr r5, [r2, #8]
|
|
adds r2, #0xc
|
|
cmp r7, r6
|
|
ble _0801E5C2
|
|
adds r4, r7, #0
|
|
adds r7, r6, #0
|
|
adds r6, r4, #0
|
|
_0801E5C2:
|
|
cmp r7, r5
|
|
ble _0801E5CC
|
|
adds r4, r7, #0
|
|
adds r7, r5, #0
|
|
adds r5, r4, #0
|
|
_0801E5CC:
|
|
cmp r6, r5
|
|
ble _0801E5D6
|
|
adds r4, r6, #0
|
|
adds r6, r5, #0
|
|
adds r5, r4, #0
|
|
_0801E5D6:
|
|
movs r0, #1
|
|
rsbs r0, r0, #0
|
|
cmp r7, r0
|
|
beq _0801E5F8
|
|
strb r5, [r1]
|
|
strb r7, [r1, #1]
|
|
b _0801E60A
|
|
.align 2, 0
|
|
_0801E5E4: .4byte 0x0000FFFF
|
|
_0801E5E8: .4byte gUnk_02018EE0
|
|
_0801E5EC: .4byte gSineTable
|
|
_0801E5F0: .4byte gUnk_03003DE4
|
|
_0801E5F4: .4byte gUnk_02017AA0
|
|
_0801E5F8:
|
|
cmp r6, r7
|
|
beq _0801E602
|
|
strb r5, [r1]
|
|
strb r6, [r1, #1]
|
|
b _0801E60A
|
|
_0801E602:
|
|
cmp r5, r7
|
|
beq _0801E60A
|
|
strb r7, [r1, #1]
|
|
strb r7, [r1]
|
|
_0801E60A:
|
|
movs r4, #1
|
|
rsbs r4, r4, #0
|
|
add sl, r4
|
|
adds r1, #2
|
|
mov r0, sl
|
|
cmp r0, #0
|
|
bgt _0801E5B0
|
|
ldr r0, _0801E63C @ =gUnk_03003DE4
|
|
ldrb r1, [r0]
|
|
lsls r0, r1, #2
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #9
|
|
ldr r1, _0801E640 @ =gUnk_02017AA0
|
|
adds r0, r0, r1
|
|
ldr r1, _0801E644 @ =0x04000040
|
|
ldr r2, _0801E648 @ =0xA2600001
|
|
bl sub_0805622C
|
|
add sp, #8
|
|
pop {r3, r4, r5}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
mov sl, r5
|
|
pop {r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_0801E63C: .4byte gUnk_03003DE4
|
|
_0801E640: .4byte gUnk_02017AA0
|
|
_0801E644: .4byte 0x04000040
|
|
_0801E648: .4byte 0xA2600001
|
|
|
|
thumb_func_start sub_0801E64C
|
|
sub_0801E64C: @ 0x0801E64C
|
|
push {r4, r5, r6, r7, lr}
|
|
adds r5, r0, #0
|
|
adds r4, r1, #0
|
|
adds r6, r3, #0
|
|
ldr r7, _0801E6C4 @ =gUnk_02018EE0
|
|
cmp r4, #0
|
|
bge _0801E65E
|
|
cmp r6, #0
|
|
blt _0801E6C2
|
|
_0801E65E:
|
|
cmp r4, #0x9f
|
|
ble _0801E666
|
|
cmp r6, #0x9f
|
|
bgt _0801E6C2
|
|
_0801E666:
|
|
cmp r4, r6
|
|
ble _0801E676
|
|
adds r1, r4, #0
|
|
adds r4, r6, #0
|
|
adds r6, r1, #0
|
|
adds r1, r5, #0
|
|
adds r5, r2, #0
|
|
adds r2, r1, #0
|
|
_0801E676:
|
|
cmp r4, r6
|
|
beq _0801E6C2
|
|
subs r0, r2, r5
|
|
lsls r0, r0, #0x10
|
|
subs r1, r6, r4
|
|
bl Div
|
|
adds r3, r0, #0
|
|
cmp r4, #0
|
|
bge _0801E694
|
|
rsbs r0, r4, #0
|
|
muls r0, r3, r0
|
|
asrs r0, r0, #0x10
|
|
adds r5, r5, r0
|
|
movs r4, #0
|
|
_0801E694:
|
|
cmp r6, #0x9f
|
|
ble _0801E69A
|
|
movs r6, #0x9f
|
|
_0801E69A:
|
|
lsls r2, r5, #0x10
|
|
lsls r0, r4, #1
|
|
adds r0, r0, r4
|
|
ldr r1, [sp, #0x14]
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #2
|
|
adds r7, r0, r7
|
|
_0801E6A8:
|
|
cmp r5, #0
|
|
bge _0801E6AE
|
|
movs r5, #0
|
|
_0801E6AE:
|
|
cmp r5, #0xf0
|
|
ble _0801E6B4
|
|
movs r5, #0xf0
|
|
_0801E6B4:
|
|
str r5, [r7]
|
|
adds r2, r2, r3
|
|
asrs r5, r2, #0x10
|
|
adds r4, #1
|
|
adds r7, #0xc
|
|
cmp r4, r6
|
|
ble _0801E6A8
|
|
_0801E6C2:
|
|
pop {r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_0801E6C4: .4byte gUnk_02018EE0
|
|
|
|
thumb_func_start sub_0801E6C8
|
|
sub_0801E6C8: @ 0x0801E6C8
|
|
push {r4, r5, r6, lr}
|
|
adds r4, r0, #0
|
|
subs r0, r4, #1
|
|
cmp r0, #0x63
|
|
bhi _0801E722
|
|
movs r1, #0
|
|
ldr r5, _0801E724 @ =gUnk_02022740
|
|
ldr r3, _0801E728 @ =gUnk_02002C01
|
|
movs r2, #0xf1
|
|
_0801E6DA:
|
|
adds r0, r1, r3
|
|
ldrb r6, [r0]
|
|
cmp r4, r6
|
|
bne _0801E6E4
|
|
strb r2, [r0]
|
|
_0801E6E4:
|
|
adds r1, #1
|
|
cmp r1, #0x7f
|
|
bls _0801E6DA
|
|
ldr r0, [r5, #0xc]
|
|
bl sub_08002632
|
|
adds r1, r0, #0
|
|
subs r0, r1, #1
|
|
cmp r0, #0x7e
|
|
bhi _0801E70A
|
|
ldr r0, _0801E72C @ =gSave
|
|
ldr r2, _0801E730 @ =0x000001C1
|
|
adds r0, r0, r2
|
|
adds r1, r1, r0
|
|
ldrb r0, [r1]
|
|
cmp r0, #0xf1
|
|
bne _0801E70A
|
|
movs r0, #0xf2
|
|
strb r0, [r1]
|
|
_0801E70A:
|
|
movs r1, #0
|
|
ldr r0, _0801E734 @ =gUnk_03003DF0
|
|
movs r2, #0xf1
|
|
adds r0, #0xb
|
|
_0801E712:
|
|
ldrb r3, [r0]
|
|
cmp r4, r3
|
|
bne _0801E71A
|
|
strb r2, [r0]
|
|
_0801E71A:
|
|
adds r0, #0xc
|
|
adds r1, #1
|
|
cmp r1, #0x1f
|
|
bls _0801E712
|
|
_0801E722:
|
|
pop {r4, r5, r6, pc}
|
|
.align 2, 0
|
|
_0801E724: .4byte gUnk_02022740
|
|
_0801E728: .4byte gUnk_02002C01
|
|
_0801E72C: .4byte gSave
|
|
_0801E730: .4byte 0x000001C1
|
|
_0801E734: .4byte gUnk_03003DF0
|
|
|
|
thumb_func_start sub_0801E738
|
|
sub_0801E738: @ 0x0801E738
|
|
push {r4, lr}
|
|
adds r4, r0, #0
|
|
bl sub_0801E82C
|
|
adds r0, r4, #0
|
|
subs r0, #0x65
|
|
cmp r0, #0x10
|
|
bhi _0801E790
|
|
adds r0, r4, #0
|
|
bl sub_0801E8B0
|
|
adds r1, r0, #0
|
|
cmp r1, #0
|
|
bge _0801E76E
|
|
movs r1, #0
|
|
ldr r0, _0801E794 @ =gSave
|
|
movs r3, #0x8c
|
|
lsls r3, r3, #1
|
|
adds r2, r0, r3
|
|
ldrb r0, [r2]
|
|
cmp r0, #0
|
|
beq _0801E76E
|
|
_0801E764:
|
|
adds r1, #1
|
|
adds r0, r1, r2
|
|
ldrb r0, [r0]
|
|
cmp r0, #0
|
|
bne _0801E764
|
|
_0801E76E:
|
|
cmp r1, #0x11
|
|
bhi _0801E790
|
|
ldr r2, _0801E794 @ =gSave
|
|
movs r3, #0x8c
|
|
lsls r3, r3, #1
|
|
adds r0, r2, r3
|
|
adds r0, r1, r0
|
|
strb r4, [r0]
|
|
adds r3, #0x13
|
|
adds r0, r2, r3
|
|
adds r1, r1, r0
|
|
ldrb r0, [r1]
|
|
adds r0, #1
|
|
cmp r0, #0x63
|
|
ble _0801E78E
|
|
movs r0, #0x63
|
|
_0801E78E:
|
|
strb r0, [r1]
|
|
_0801E790:
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_0801E794: .4byte gSave
|
|
|
|
thumb_func_start sub_0801E798
|
|
sub_0801E798: @ 0x0801E798
|
|
push {r4, lr}
|
|
bl sub_0801E8B0
|
|
adds r1, r0, #0
|
|
cmp r1, #0
|
|
blt _0801E7C4
|
|
ldr r2, _0801E7C8 @ =gSave
|
|
ldr r3, _0801E7CC @ =0x0000012B
|
|
adds r0, r2, r3
|
|
adds r3, r1, r0
|
|
ldrb r0, [r3]
|
|
subs r0, #1
|
|
cmp r0, #0
|
|
bgt _0801E7C2
|
|
movs r4, #0x8c
|
|
lsls r4, r4, #1
|
|
adds r0, r2, r4
|
|
adds r0, r1, r0
|
|
movs r1, #0
|
|
strb r1, [r0]
|
|
movs r0, #0
|
|
_0801E7C2:
|
|
strb r0, [r3]
|
|
_0801E7C4:
|
|
pop {r4, pc}
|
|
.align 2, 0
|
|
_0801E7C8: .4byte gSave
|
|
_0801E7CC: .4byte 0x0000012B
|
|
|
|
thumb_func_start sub_0801E7D0
|
|
sub_0801E7D0: @ 0x0801E7D0
|
|
push {lr}
|
|
bl sub_0801E8B0
|
|
adds r1, r0, #0
|
|
cmp r1, #0
|
|
blt _0801E7F0
|
|
ldr r0, _0801E7E8 @ =gSave
|
|
ldr r2, _0801E7EC @ =0x0000012B
|
|
adds r0, r0, r2
|
|
adds r0, r1, r0
|
|
ldrb r0, [r0]
|
|
b _0801E7F2
|
|
.align 2, 0
|
|
_0801E7E8: .4byte gSave
|
|
_0801E7EC: .4byte 0x0000012B
|
|
_0801E7F0:
|
|
movs r0, #0
|
|
_0801E7F2:
|
|
pop {pc}
|
|
|
|
thumb_func_start CheckKinstoneFused
|
|
CheckKinstoneFused: @ 0x0801E7F4
|
|
push {lr}
|
|
adds r1, r0, #0
|
|
subs r0, r1, #1
|
|
cmp r0, #0x63
|
|
bhi _0801E80C
|
|
ldr r0, _0801E808 @ =gUnk_02002C81
|
|
bl ReadBit
|
|
b _0801E80E
|
|
.align 2, 0
|
|
_0801E808: .4byte gUnk_02002C81
|
|
_0801E80C:
|
|
movs r0, #0
|
|
_0801E80E:
|
|
pop {pc}
|
|
|
|
thumb_func_start sub_0801E810
|
|
sub_0801E810: @ 0x0801E810
|
|
push {lr}
|
|
adds r1, r0, #0
|
|
subs r0, r1, #1
|
|
cmp r0, #0x63
|
|
bhi _0801E828
|
|
ldr r0, _0801E824 @ =gUnk_02002C8E
|
|
bl ReadBit
|
|
b _0801E82A
|
|
.align 2, 0
|
|
_0801E824: .4byte gUnk_02002C8E
|
|
_0801E828:
|
|
movs r0, #0
|
|
_0801E82A:
|
|
pop {pc}
|
|
|
|
thumb_func_start sub_0801E82C
|
|
sub_0801E82C: @ 0x0801E82C
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, sl
|
|
mov r6, sb
|
|
mov r5, r8
|
|
push {r5, r6, r7}
|
|
ldr r1, _0801E8AC @ =gUnk_02002B54
|
|
movs r5, #0
|
|
adds r2, r1, #4
|
|
_0801E83C:
|
|
ldrb r0, [r2, #0x13]
|
|
adds r3, r1, #4
|
|
mov sl, r3
|
|
cmp r0, #0
|
|
bne _0801E848
|
|
strb r0, [r2]
|
|
_0801E848:
|
|
adds r2, #1
|
|
adds r5, #1
|
|
cmp r5, #0x12
|
|
bls _0801E83C
|
|
movs r0, #0
|
|
strb r0, [r1, #0x16]
|
|
adds r2, r1, #0
|
|
adds r2, #0x29
|
|
strb r0, [r2]
|
|
movs r5, #0
|
|
movs r0, #0x17
|
|
adds r0, r0, r1
|
|
mov sb, r0
|
|
movs r3, #0x18
|
|
adds r3, r3, r1
|
|
mov r8, r3
|
|
adds r7, r1, #4
|
|
adds r6, r1, #5
|
|
_0801E86C:
|
|
mov r1, sl
|
|
adds r0, r1, r5
|
|
ldrb r0, [r0]
|
|
subs r0, #0x65
|
|
cmp r0, #0x10
|
|
bls _0801E890
|
|
movs r4, #0x12
|
|
subs r4, r4, r5
|
|
adds r0, r6, #0
|
|
adds r1, r7, #0
|
|
adds r2, r4, #0
|
|
bl MemCopy
|
|
mov r0, r8
|
|
mov r1, sb
|
|
adds r2, r4, #0
|
|
bl MemCopy
|
|
_0801E890:
|
|
movs r3, #1
|
|
add sb, r3
|
|
add r8, r3
|
|
adds r7, #1
|
|
adds r6, #1
|
|
adds r5, #1
|
|
cmp r5, #0x11
|
|
bls _0801E86C
|
|
pop {r3, r4, r5}
|
|
mov r8, r3
|
|
mov sb, r4
|
|
mov sl, r5
|
|
pop {r4, r5, r6, r7, pc}
|
|
.align 2, 0
|
|
_0801E8AC: .4byte gUnk_02002B54
|
|
|
|
thumb_func_start sub_0801E8B0
|
|
sub_0801E8B0: @ 0x0801E8B0
|
|
push {lr}
|
|
adds r2, r0, #0
|
|
movs r1, #0
|
|
ldr r3, _0801E8C4 @ =gUnk_02002B58
|
|
_0801E8B8:
|
|
adds r0, r1, r3
|
|
ldrb r0, [r0]
|
|
cmp r2, r0
|
|
bne _0801E8C8
|
|
adds r0, r1, #0
|
|
b _0801E8D2
|
|
.align 2, 0
|
|
_0801E8C4: .4byte gUnk_02002B58
|
|
_0801E8C8:
|
|
adds r1, #1
|
|
cmp r1, #0x11
|
|
bls _0801E8B8
|
|
movs r0, #1
|
|
rsbs r0, r0, #0
|
|
_0801E8D2:
|
|
pop {pc}
|
|
|
|
thumb_func_start sub_0801E8D4
|
|
sub_0801E8D4: @ 0x0801E8D4
|
|
.ifdef JP
|
|
push {r4, r5, lr}
|
|
movs r4, #0xa
|
|
_0801E8BC:
|
|
adds r0, r4, #0
|
|
bl CheckKinstoneFused
|
|
cmp r0, #0
|
|
beq _0801E93A
|
|
adds r0, r4, #0
|
|
bl sub_0801E810
|
|
cmp r0, #0
|
|
bne _0801E93A
|
|
ldr r1, _0801E8F4 @ =gUnk_080FC3E4
|
|
lsls r0, r4, #3
|
|
adds r0, r0, r1
|
|
ldrb r1, [r0, #4]
|
|
lsls r0, r1, #2
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #2
|
|
ldr r1, _0801E8F8 @ =gUnk_080FE320
|
|
adds r2, r0, r1
|
|
ldrb r0, [r2, #0x10]
|
|
cmp r0, #4
|
|
bhi _0801E926
|
|
lsls r0, r0, #2
|
|
ldr r1, _0801E8FC @ =_0801E900
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_0801E8F4: .4byte gUnk_080C9CBC
|
|
_0801E8F8: .4byte gUnk_080FE320
|
|
_0801E8FC: .4byte _0801E900
|
|
_0801E900: @ jump table
|
|
.4byte _0801E914 @ case 0
|
|
.4byte _0801E918 @ case 1
|
|
.4byte _0801E91C @ case 2
|
|
.4byte _0801E920 @ case 3
|
|
.4byte _0801E924 @ case 4
|
|
_0801E914:
|
|
movs r5, #0
|
|
b _0801E926
|
|
_0801E918:
|
|
ldrb r5, [r2, #0x11]
|
|
b _0801E926
|
|
_0801E91C:
|
|
movs r5, #0xf
|
|
b _0801E926
|
|
_0801E920:
|
|
movs r5, #0x10
|
|
b _0801E926
|
|
_0801E924:
|
|
movs r5, #0x11
|
|
_0801E926:
|
|
ldrh r1, [r2, #0x12]
|
|
adds r0, r5, #0
|
|
bl sub_0807CB24
|
|
cmp r0, #0
|
|
beq _0801E93A
|
|
ldr r0, _0801E944 @ =0x02002C8E
|
|
adds r1, r4, #0
|
|
bl WriteBit
|
|
_0801E93A:
|
|
adds r4, #1
|
|
cmp r4, #0x64
|
|
bls _0801E8BC
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
_0801E944: .4byte 0x02002C8E
|
|
.else
|
|
.ifdef EU
|
|
push {r4, r5, lr}
|
|
movs r4, #0xa
|
|
_0801E910:
|
|
adds r0, r4, #0
|
|
bl CheckKinstoneFused
|
|
cmp r0, #0
|
|
beq _0801E98E
|
|
adds r0, r4, #0
|
|
bl sub_0801E810
|
|
cmp r0, #0
|
|
bne _0801E98E
|
|
ldr r1, _0801E948 @ =gUnk_080C9CBC
|
|
lsls r0, r4, #3
|
|
adds r0, r0, r1
|
|
ldrb r1, [r0, #4]
|
|
lsls r0, r1, #2
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #2
|
|
ldr r1, _0801E94C @ =gUnk_080FE320
|
|
adds r2, r0, r1
|
|
ldrb r0, [r2, #0x10]
|
|
cmp r0, #4
|
|
bhi _0801E97A
|
|
lsls r0, r0, #2
|
|
ldr r1, _0801E950 @ =_0801E954
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_0801E948: .4byte gUnk_080C9CBC
|
|
_0801E94C: .4byte gUnk_080FE320
|
|
_0801E950: .4byte _0801E954
|
|
_0801E954: @ jump table
|
|
.4byte _0801E968 @ case 0
|
|
.4byte _0801E96C @ case 1
|
|
.4byte _0801E970 @ case 2
|
|
.4byte _0801E974 @ case 3
|
|
.4byte _0801E978 @ case 4
|
|
_0801E968:
|
|
movs r5, #0
|
|
b _0801E97A
|
|
_0801E96C:
|
|
ldrb r5, [r2, #0x11]
|
|
b _0801E97A
|
|
_0801E970:
|
|
movs r5, #0xf
|
|
b _0801E97A
|
|
_0801E974:
|
|
movs r5, #0x10
|
|
b _0801E97A
|
|
_0801E978:
|
|
movs r5, #0x11
|
|
_0801E97A:
|
|
ldrh r1, [r2, #0x12]
|
|
adds r0, r5, #0
|
|
bl sub_0807CB24
|
|
cmp r0, #0
|
|
beq _0801E98E
|
|
ldr r0, _0801E998 @ =gUnk_02002C8E
|
|
adds r1, r4, #0
|
|
bl WriteBit
|
|
_0801E98E:
|
|
adds r4, #1
|
|
cmp r4, #0x64
|
|
bls _0801E910
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
_0801E998: .4byte gUnk_02002C8E
|
|
|
|
.else
|
|
push {r4, r5, lr}
|
|
movs r5, #0xa
|
|
_0801E8D8:
|
|
adds r0, r5, #0
|
|
bl CheckKinstoneFused
|
|
cmp r0, #0
|
|
beq _0801E990
|
|
adds r0, r5, #0
|
|
bl sub_0801E810
|
|
cmp r0, #0
|
|
bne _0801E990
|
|
ldr r1, _0801E910 @ =gUnk_080C9CBC
|
|
lsls r0, r5, #3
|
|
adds r0, r0, r1
|
|
ldrb r1, [r0, #4]
|
|
lsls r0, r1, #2
|
|
adds r0, r0, r1
|
|
lsls r0, r0, #2
|
|
ldr r1, _0801E914 @ =gUnk_080FE320
|
|
adds r2, r0, r1
|
|
ldrh r3, [r2, #0x12]
|
|
ldrb r0, [r2, #0x10]
|
|
cmp r0, #0xa
|
|
bhi _0801E97C
|
|
lsls r0, r0, #2
|
|
ldr r1, _0801E918 @ =_0801E91C
|
|
adds r0, r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_0801E910: .4byte gUnk_080C9CBC
|
|
_0801E914: .4byte gUnk_080FE320
|
|
_0801E918: .4byte _0801E91C
|
|
_0801E91C: @ jump table
|
|
.4byte _0801E948 @ case 0
|
|
.4byte _0801E94C @ case 1
|
|
.4byte _0801E950 @ case 2
|
|
.4byte _0801E954 @ case 3
|
|
.4byte _0801E958 @ case 4
|
|
.4byte _0801E95C @ case 5
|
|
.4byte _0801E962 @ case 6
|
|
.4byte _0801E968 @ case 7
|
|
.4byte _0801E96E @ case 8
|
|
.4byte _0801E972 @ case 9
|
|
.4byte _0801E978 @ case 10
|
|
_0801E948:
|
|
movs r4, #0
|
|
b _0801E97C
|
|
_0801E94C:
|
|
ldrb r4, [r2, #0x11]
|
|
b _0801E97C
|
|
_0801E950:
|
|
movs r4, #0xf
|
|
b _0801E97C
|
|
_0801E954:
|
|
movs r4, #0x10
|
|
b _0801E97C
|
|
_0801E958:
|
|
movs r4, #0x11
|
|
b _0801E97C
|
|
_0801E95C:
|
|
movs r4, #4
|
|
movs r3, #0x83
|
|
b _0801E97C
|
|
_0801E962:
|
|
movs r4, #4
|
|
movs r3, #0x84
|
|
b _0801E97C
|
|
_0801E968:
|
|
movs r4, #4
|
|
movs r3, #0x87
|
|
b _0801E97C
|
|
_0801E96E:
|
|
movs r4, #4
|
|
b _0801E97A
|
|
_0801E972:
|
|
movs r4, #4
|
|
movs r3, #0x8b
|
|
b _0801E97C
|
|
_0801E978:
|
|
movs r4, #5
|
|
_0801E97A:
|
|
movs r3, #0x88
|
|
_0801E97C:
|
|
adds r0, r4, #0
|
|
adds r1, r3, #0
|
|
bl sub_0807CB24
|
|
cmp r0, #0
|
|
beq _0801E990
|
|
ldr r0, _0801E998 @ =gUnk_02002C8E
|
|
adds r1, r5, #0
|
|
bl WriteBit
|
|
_0801E990:
|
|
adds r5, #1
|
|
cmp r5, #0x64
|
|
bls _0801E8D8
|
|
pop {r4, r5, pc}
|
|
.align 2, 0
|
|
_0801E998: .4byte gUnk_02002C8E
|
|
.endif
|
|
.endif
|
|
|
|
thumb_func_start sub_0801E99C
|
|
sub_0801E99C: @ 0x0801E99C
|
|
push {r4, r5, r6, r7, lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
bl sub_08002632
|
|
mov r8, r0
|
|
ldr r1, _0801E9E4 @ =gUnk_08001DCC
|
|
lsls r0, r0, #2
|
|
adds r0, r0, r1
|
|
ldr r7, [r0]
|
|
movs r0, #0x67
|
|
bl GetInventoryValue
|
|
cmp r0, #0
|
|
beq _0801EA56
|
|
ldr r1, _0801E9E8 @ =gSave
|
|
ldrb r0, [r7]
|
|
ldrb r2, [r1, #8]
|
|
cmp r0, r2
|
|
bhi _0801EA56
|
|
ldr r2, _0801E9EC @ =0x000001C1
|
|
adds r0, r1, r2
|
|
add r0, r8
|
|
ldrb r5, [r0]
|
|
subs r2, #0x80
|
|
adds r0, r1, r2
|
|
add r0, r8
|
|
ldrb r6, [r0]
|
|
adds r4, r6, r7
|
|
_0801E9D6:
|
|
cmp r5, #0xf1
|
|
beq _0801E9F6
|
|
cmp r5, #0xf1
|
|
bhi _0801E9F0
|
|
cmp r5, #0
|
|
beq _0801E9F6
|
|
b _0801EA10
|
|
.align 2, 0
|
|
_0801E9E4: .4byte gUnk_08001DCC
|
|
_0801E9E8: .4byte gSave
|
|
_0801E9EC: .4byte 0x000001C1
|
|
_0801E9F0:
|
|
cmp r5, #0xf2
|
|
beq _0801EA0A
|
|
b _0801EA10
|
|
_0801E9F6:
|
|
ldrb r5, [r4, #5]
|
|
cmp r5, #0
|
|
beq _0801EA10
|
|
cmp r5, #0xff
|
|
beq _0801EA14
|
|
adds r0, r5, #0
|
|
bl CheckKinstoneFused
|
|
cmp r0, #0
|
|
beq _0801EA10
|
|
_0801EA0A:
|
|
adds r4, #1
|
|
adds r6, #1
|
|
ldrb r5, [r4, #5]
|
|
_0801EA10:
|
|
cmp r5, #0xff
|
|
bne _0801EA1C
|
|
_0801EA14:
|
|
adds r0, r7, #0
|
|
bl sub_0801EA74
|
|
adds r5, r0, #0
|
|
_0801EA1C:
|
|
cmp r5, #0
|
|
beq _0801EA32
|
|
cmp r5, #0xf2
|
|
beq _0801E9D6
|
|
adds r0, r5, #0
|
|
bl CheckKinstoneFused
|
|
cmp r0, #0
|
|
beq _0801EA34
|
|
movs r5, #0xf1
|
|
b _0801E9D6
|
|
_0801EA32:
|
|
movs r5, #0xf3
|
|
_0801EA34:
|
|
ldr r1, _0801EA5C @ =gSave
|
|
ldr r2, _0801EA60 @ =0x000001C1
|
|
adds r0, r1, r2
|
|
add r0, r8
|
|
strb r5, [r0]
|
|
subs r2, #0x80
|
|
adds r0, r1, r2
|
|
add r0, r8
|
|
strb r6, [r0]
|
|
bl Random
|
|
ldrb r4, [r7, #1]
|
|
movs r1, #0x64
|
|
bl __modsi3
|
|
cmp r4, r0
|
|
bhi _0801EA64
|
|
_0801EA56:
|
|
movs r0, #0
|
|
b _0801EA6E
|
|
.align 2, 0
|
|
_0801EA5C: .4byte gSave
|
|
_0801EA60: .4byte 0x000001C1
|
|
_0801EA64:
|
|
subs r0, r5, #1
|
|
cmp r0, #0x63
|
|
bls _0801EA6C
|
|
movs r5, #0
|
|
_0801EA6C:
|
|
adds r0, r5, #0
|
|
_0801EA6E:
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4, r5, r6, r7, pc}
|
|
|
|
thumb_func_start sub_0801EA74
|
|
sub_0801EA74: @ 0x0801EA74
|
|
push {r4, r5, r6, lr}
|
|
bl Random
|
|
movs r1, #0x12
|
|
bl __modsi3
|
|
adds r5, r0, #0
|
|
movs r6, #0
|
|
_0801EA84:
|
|
ldr r0, _0801EA98 @ =gUnk_080CA11C
|
|
adds r0, r5, r0
|
|
ldrb r4, [r0]
|
|
adds r0, r4, #0
|
|
bl CheckKinstoneFused
|
|
cmp r0, #0
|
|
bne _0801EA9C
|
|
adds r0, r4, #0
|
|
b _0801EAAE
|
|
.align 2, 0
|
|
_0801EA98: .4byte gUnk_080CA11C
|
|
_0801EA9C:
|
|
adds r0, r5, #1
|
|
movs r1, #0x12
|
|
bl __modsi3
|
|
adds r5, r0, #0
|
|
adds r6, #1
|
|
cmp r6, #0x11
|
|
bls _0801EA84
|
|
movs r0, #0xf2
|
|
_0801EAAE:
|
|
pop {r4, r5, r6, pc}
|