mirror of
https://github.com/pret/pmd-red.git
synced 2024-11-24 05:29:47 +00:00
99a038284b
This decision was made to reduce the complexity of using .include whilst juggling with tools/scaninc and tools/preproc: - tools/scaninc doesn't apply the proper search rules for .include (it assumes #include behavior). In particular, it doesn't consider paths starting from $PWD, and doesn't scan the included files as a result. - .include had to be processed before #include by preproc in many cases, as code was being included that had to be preprocessed by CPP (think of #define). This contradicts standard GCC behavior. To make include paths consistent across the asm/ data/ and src/ directories, the following files were moved: - constants/ → include/asm/constants/ - asm/macros/ → include/asm/macros/ - asm/macros.inc → include/asm/macros.inc - include/macros/m4a.inc → include/asm/macros/m4a.inc As part of the necessary changes for this to work, the scaninc method in the makefile was improved to generate .d files that don't choke when files are missing.
1353 lines
21 KiB
ArmAsm
1353 lines
21 KiB
ArmAsm
#include "asm/constants/gba_constants.inc"
|
|
#include "asm/macros.inc"
|
|
|
|
.syntax unified
|
|
|
|
.text
|
|
|
|
thumb_func_start sub_801BB5C
|
|
sub_801BB5C:
|
|
push {r4-r7,lr}
|
|
ldr r4, _0801BBEC
|
|
ldr r2, [r4]
|
|
adds r1, r2, 0
|
|
adds r1, 0xCC
|
|
ldr r0, _0801BBF0
|
|
str r0, [r1]
|
|
adds r1, 0x4
|
|
movs r0, 0x6
|
|
str r0, [r1]
|
|
ldr r0, [r2, 0x24]
|
|
bl sub_801ADA0
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0801BB86
|
|
ldr r0, [r4]
|
|
adds r0, 0xD0
|
|
movs r1, 0x1
|
|
negs r1, r1
|
|
str r1, [r0]
|
|
_0801BB86:
|
|
ldr r0, [r4]
|
|
mov r12, r0
|
|
movs r3, 0x1
|
|
movs r2, 0x8
|
|
mov r1, r12
|
|
adds r1, 0xD4
|
|
ldr r0, _0801BBF4
|
|
str r0, [r1]
|
|
adds r1, 0x4
|
|
movs r0, 0x7
|
|
str r0, [r1]
|
|
adds r1, 0x4
|
|
ldr r0, _0801BBF8
|
|
ldr r0, [r0]
|
|
str r0, [r1]
|
|
mov r0, r12
|
|
adds r0, 0xE0
|
|
str r2, [r0]
|
|
movs r5, 0x3
|
|
adds r1, 0x8
|
|
movs r0, 0
|
|
str r0, [r1]
|
|
mov r0, r12
|
|
adds r0, 0xE8
|
|
str r3, [r0]
|
|
movs r3, 0
|
|
adds r6, r4, 0
|
|
movs r7, 0x1
|
|
negs r7, r7
|
|
mov r4, r12
|
|
adds r4, 0xC8
|
|
subs r1, 0x14
|
|
_0801BBC6:
|
|
ldr r2, [r1]
|
|
cmp r2, r7
|
|
beq _0801BBD2
|
|
ldr r0, [r4]
|
|
cmp r2, r0
|
|
beq _0801BC1C
|
|
_0801BBD2:
|
|
adds r1, 0x8
|
|
adds r3, 0x1
|
|
cmp r3, r5
|
|
blt _0801BBC6
|
|
movs r3, 0
|
|
cmp r3, r5
|
|
bge _0801BC1C
|
|
ldr r2, [r6]
|
|
adds r0, r2, 0
|
|
adds r0, 0xD0
|
|
ldr r1, [r0]
|
|
b _0801BC0E
|
|
.align 2, 0
|
|
_0801BBEC: .4byte gUnknown_203B234
|
|
_0801BBF0: .4byte gKangaskhanStorage
|
|
_0801BBF4: .4byte gKangaskhanTrash
|
|
_0801BBF8: .4byte gUnknown_80D4970
|
|
_0801BBFC:
|
|
adds r3, 0x1
|
|
cmp r3, r5
|
|
bge _0801BC1C
|
|
ldr r2, [r6]
|
|
lsls r0, r3, 3
|
|
adds r1, r2, 0
|
|
adds r1, 0xD0
|
|
adds r1, r0
|
|
ldr r1, [r1]
|
|
_0801BC0E:
|
|
movs r0, 0x1
|
|
negs r0, r0
|
|
cmp r1, r0
|
|
beq _0801BBFC
|
|
adds r0, r2, 0
|
|
adds r0, 0xC8
|
|
str r1, [r0]
|
|
_0801BC1C:
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_801BB5C
|
|
|
|
thumb_func_start sub_801BC24
|
|
sub_801BC24:
|
|
ldr r0, _0801BC58
|
|
ldr r0, [r0]
|
|
mov r12, r0
|
|
movs r3, 0
|
|
mov r1, r12
|
|
adds r1, 0xCC
|
|
ldr r0, _0801BC5C
|
|
ldr r0, [r0]
|
|
str r0, [r1]
|
|
adds r1, 0x4
|
|
movs r0, 0x2
|
|
str r0, [r1]
|
|
movs r2, 0x1
|
|
adds r1, 0x4
|
|
ldr r0, _0801BC60
|
|
ldr r0, [r0]
|
|
str r0, [r1]
|
|
adds r1, 0x4
|
|
movs r0, 0x3
|
|
str r0, [r1]
|
|
mov r0, r12
|
|
adds r0, 0xDC
|
|
str r3, [r0]
|
|
adds r0, 0x4
|
|
str r2, [r0]
|
|
bx lr
|
|
.align 2, 0
|
|
_0801BC58: .4byte gUnknown_203B234
|
|
_0801BC5C: .4byte gUnknown_80D4920
|
|
_0801BC60: .4byte gUnknown_80D4928
|
|
thumb_func_end sub_801BC24
|
|
|
|
thumb_func_start sub_801BC64
|
|
sub_801BC64:
|
|
push {lr}
|
|
sub sp, 0x4
|
|
mov r0, sp
|
|
bl sub_80144A4
|
|
cmp r0, 0
|
|
bne _0801BC8C
|
|
ldr r0, [sp]
|
|
cmp r0, 0x4
|
|
beq _0801BC7E
|
|
cmp r0, 0x5
|
|
beq _0801BC86
|
|
b _0801BC8C
|
|
_0801BC7E:
|
|
movs r0, 0x8
|
|
bl sub_801B748
|
|
b _0801BC8C
|
|
_0801BC86:
|
|
movs r0, 0x7
|
|
bl sub_801B748
|
|
_0801BC8C:
|
|
add sp, 0x4
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_801BC64
|
|
|
|
thumb_func_start sub_801BC94
|
|
sub_801BC94:
|
|
push {lr}
|
|
sub sp, 0x4
|
|
mov r0, sp
|
|
bl sub_80144A4
|
|
cmp r0, 0
|
|
bne _0801BCC6
|
|
ldr r0, [sp]
|
|
cmp r0, 0x2
|
|
beq _0801BCB8
|
|
cmp r0, 0x2
|
|
bgt _0801BCB2
|
|
cmp r0, 0x1
|
|
beq _0801BCC0
|
|
b _0801BCC6
|
|
_0801BCB2:
|
|
cmp r0, 0x3
|
|
beq _0801BCC0
|
|
b _0801BCC6
|
|
_0801BCB8:
|
|
movs r0, 0xD
|
|
bl sub_801B748
|
|
b _0801BCC6
|
|
_0801BCC0:
|
|
movs r0, 0x6
|
|
bl sub_801B748
|
|
_0801BCC6:
|
|
add sp, 0x4
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_801BC94
|
|
|
|
thumb_func_start sub_801BCCC
|
|
sub_801BCCC:
|
|
push {lr}
|
|
movs r0, 0x1
|
|
bl sub_801A6E8
|
|
cmp r0, 0x4
|
|
bhi _0801BD7A
|
|
lsls r0, 2
|
|
ldr r1, _0801BCE4
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_0801BCE4: .4byte _0801BCE8
|
|
.align 2, 0
|
|
_0801BCE8:
|
|
.4byte _0801BD7A
|
|
.4byte _0801BD7A
|
|
.4byte _0801BD70
|
|
.4byte _0801BCFC
|
|
.4byte _0801BD34
|
|
_0801BCFC:
|
|
bl sub_801A8AC
|
|
ldr r1, _0801BD28
|
|
ldr r2, [r1]
|
|
str r0, [r2, 0x24]
|
|
ldr r1, _0801BD2C
|
|
ldr r1, [r1]
|
|
lsls r0, 2
|
|
adds r1, r0
|
|
ldr r0, [r1]
|
|
str r0, [r2, 0x20]
|
|
ldr r0, _0801BD30
|
|
adds r1, r2, 0
|
|
adds r1, 0x20
|
|
adds r2, 0x14
|
|
bl sub_8090E14
|
|
movs r0, 0xA
|
|
bl sub_801B748
|
|
b _0801BD7A
|
|
.align 2, 0
|
|
_0801BD28: .4byte gUnknown_203B234
|
|
_0801BD2C: .4byte gTeamInventory_203B460
|
|
_0801BD30: .4byte gUnknown_202DEA8
|
|
_0801BD34:
|
|
bl sub_801A8AC
|
|
ldr r1, _0801BD64
|
|
ldr r2, [r1]
|
|
str r0, [r2, 0x24]
|
|
ldr r1, _0801BD68
|
|
ldr r1, [r1]
|
|
lsls r0, 2
|
|
adds r1, r0
|
|
ldr r0, [r1]
|
|
str r0, [r2, 0x20]
|
|
ldr r0, _0801BD6C
|
|
adds r1, r2, 0
|
|
adds r1, 0x20
|
|
adds r2, 0x14
|
|
bl sub_8090E14
|
|
movs r0, 0
|
|
bl sub_8099690
|
|
movs r0, 0xB
|
|
bl sub_801B748
|
|
b _0801BD7A
|
|
.align 2, 0
|
|
_0801BD64: .4byte gUnknown_203B234
|
|
_0801BD68: .4byte gTeamInventory_203B460
|
|
_0801BD6C: .4byte gUnknown_202DEA8
|
|
_0801BD70:
|
|
bl sub_801A928
|
|
movs r0, 0x6
|
|
bl sub_801B748
|
|
_0801BD7A:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_801BCCC
|
|
|
|
thumb_func_start sub_801BD80
|
|
sub_801BD80:
|
|
push {r4,lr}
|
|
sub sp, 0x4
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
bl sub_801A6E8
|
|
ldr r4, _0801BDC4
|
|
ldr r0, [r4]
|
|
adds r0, 0x28
|
|
bl sub_8012FD8
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0801BDB2
|
|
ldr r0, [r4]
|
|
adds r0, 0x28
|
|
mov r1, sp
|
|
bl sub_8013114
|
|
ldr r1, [sp]
|
|
cmp r1, 0x1
|
|
beq _0801BDB2
|
|
ldr r0, [r4]
|
|
adds r0, 0xC8
|
|
str r1, [r0]
|
|
_0801BDB2:
|
|
ldr r0, [sp]
|
|
cmp r0, 0x6
|
|
beq _0801BDD2
|
|
cmp r0, 0x6
|
|
bgt _0801BDC8
|
|
cmp r0, 0x1
|
|
beq _0801BE22
|
|
b _0801BE28
|
|
.align 2, 0
|
|
_0801BDC4: .4byte gUnknown_203B234
|
|
_0801BDC8:
|
|
cmp r0, 0x7
|
|
beq _0801BE0C
|
|
cmp r0, 0x8
|
|
beq _0801BE14
|
|
b _0801BE28
|
|
_0801BDD2:
|
|
ldr r4, _0801BE08
|
|
ldr r0, [r4]
|
|
adds r0, 0x20
|
|
bl MoveToStorage
|
|
ldr r0, [r4]
|
|
ldr r0, [r0, 0x24]
|
|
bl ShiftItemsDownFrom
|
|
ldr r0, [r4]
|
|
adds r0, 0x10
|
|
bl AddItemToInventory
|
|
bl FillInventoryGaps
|
|
movs r0, 0xCB
|
|
bl PlaySound
|
|
movs r0, 0
|
|
bl sub_8099690
|
|
bl sub_801A928
|
|
movs r0, 0xE
|
|
bl sub_801B748
|
|
b _0801BE28
|
|
.align 2, 0
|
|
_0801BE08: .4byte gUnknown_203B234
|
|
_0801BE0C:
|
|
movs r0, 0xC
|
|
bl sub_801B748
|
|
b _0801BE28
|
|
_0801BE14:
|
|
movs r0, 0
|
|
bl sub_8099690
|
|
movs r0, 0xB
|
|
bl sub_801B748
|
|
b _0801BE28
|
|
_0801BE22:
|
|
movs r0, 0x9
|
|
bl sub_801B748
|
|
_0801BE28:
|
|
add sp, 0x4
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_801BD80
|
|
|
|
thumb_func_start sub_801BE30
|
|
sub_801BE30:
|
|
push {r4,lr}
|
|
sub sp, 0x4
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
bl sub_801A6E8
|
|
ldr r4, _0801BE70
|
|
ldr r0, [r4]
|
|
adds r0, 0x28
|
|
bl sub_8012FD8
|
|
ldr r0, [r4]
|
|
adds r0, 0x78
|
|
bl sub_8012FD8
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0801BE5E
|
|
ldr r0, [r4]
|
|
adds r0, 0x78
|
|
mov r1, sp
|
|
bl sub_8013114
|
|
_0801BE5E:
|
|
ldr r0, [sp]
|
|
cmp r0, 0x2
|
|
beq _0801BE80
|
|
cmp r0, 0x2
|
|
bgt _0801BE74
|
|
cmp r0, 0x1
|
|
beq _0801BE78
|
|
b _0801BEA4
|
|
.align 2, 0
|
|
_0801BE70: .4byte gUnknown_203B234
|
|
_0801BE74:
|
|
cmp r0, 0x3
|
|
bne _0801BEA4
|
|
_0801BE78:
|
|
movs r0, 0x9
|
|
bl sub_801B748
|
|
b _0801BEA4
|
|
_0801BE80:
|
|
ldr r0, [r4]
|
|
ldr r0, [r0, 0x24]
|
|
bl ShiftItemsDownFrom
|
|
ldr r0, [r4]
|
|
adds r0, 0x10
|
|
bl AddItemToInventory
|
|
bl FillInventoryGaps
|
|
movs r0, 0xCB
|
|
bl PlaySound
|
|
bl sub_801A928
|
|
movs r0, 0xF
|
|
bl sub_801B748
|
|
_0801BEA4:
|
|
add sp, 0x4
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_801BE30
|
|
|
|
thumb_func_start sub_801BEAC
|
|
sub_801BEAC:
|
|
push {lr}
|
|
bl sub_801B410
|
|
cmp r0, 0x1
|
|
bls _0801BEC4
|
|
cmp r0, 0x3
|
|
bhi _0801BEC4
|
|
bl sub_801B450
|
|
movs r0, 0x9
|
|
bl sub_801B748
|
|
_0801BEC4:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_801BEAC
|
|
|
|
thumb_func_start sub_801BEC8
|
|
sub_801BEC8:
|
|
push {lr}
|
|
sub sp, 0x4
|
|
mov r0, sp
|
|
bl sub_80144A4
|
|
cmp r0, 0
|
|
bne _0801BEE0
|
|
ldr r0, _0801BEE8
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, 0x8]
|
|
bl sub_801B748
|
|
_0801BEE0:
|
|
add sp, 0x4
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0801BEE8: .4byte gUnknown_203B234
|
|
thumb_func_end sub_801BEC8
|
|
|
|
thumb_func_start sub_801BEEC
|
|
sub_801BEEC:
|
|
push {r4-r6,lr}
|
|
lsls r0, 16
|
|
asrs r5, r0, 16
|
|
adds r0, r5, 0
|
|
bl HasNoAvailIQSkills
|
|
lsls r0, 24
|
|
lsrs r6, r0, 24
|
|
cmp r6, 0
|
|
bne _0801BF40
|
|
ldr r4, _0801BF38
|
|
movs r0, 0x92
|
|
lsls r0, 1
|
|
movs r1, 0x8
|
|
bl MemoryAlloc
|
|
str r0, [r4]
|
|
str r6, [r0, 0x30]
|
|
strh r5, [r0, 0x4]
|
|
ldr r3, _0801BF3C
|
|
movs r1, 0x58
|
|
adds r2, r5, 0
|
|
muls r2, r1
|
|
ldr r1, [r3]
|
|
adds r1, r2
|
|
str r1, [r0, 0x8]
|
|
adds r0, 0xC
|
|
movs r2, 0x14
|
|
ldrsh r1, [r1, r2]
|
|
bl GetNumAvailableIQSkills
|
|
ldr r1, [r4]
|
|
str r0, [r1, 0x2C]
|
|
movs r0, 0
|
|
bl sub_801BFB4
|
|
movs r0, 0x1
|
|
b _0801BF42
|
|
.align 2, 0
|
|
_0801BF38: .4byte gUnknown_203B238
|
|
_0801BF3C: .4byte gRecruitedPokemonRef
|
|
_0801BF40:
|
|
movs r0, 0
|
|
_0801BF42:
|
|
pop {r4-r6}
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_801BEEC
|
|
|
|
thumb_func_start sub_801BF48
|
|
sub_801BF48:
|
|
push {lr}
|
|
ldr r0, _0801BF60
|
|
ldr r0, [r0]
|
|
ldr r0, [r0]
|
|
cmp r0, 0x4
|
|
bhi _0801BF90
|
|
lsls r0, 2
|
|
ldr r1, _0801BF64
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_0801BF60: .4byte gUnknown_203B238
|
|
_0801BF64: .4byte _0801BF68
|
|
.align 2, 0
|
|
_0801BF68:
|
|
.4byte _0801BF80
|
|
.4byte _0801BF80
|
|
.4byte _0801BF86
|
|
.4byte _0801BF8C
|
|
.4byte _0801BF7C
|
|
_0801BF7C:
|
|
movs r0, 0x3
|
|
b _0801BF92
|
|
_0801BF80:
|
|
bl sub_801C118
|
|
b _0801BF90
|
|
_0801BF86:
|
|
bl sub_801C1A0
|
|
b _0801BF90
|
|
_0801BF8C:
|
|
bl sub_801C228
|
|
_0801BF90:
|
|
movs r0, 0
|
|
_0801BF92:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_801BF48
|
|
|
|
thumb_func_start sub_801BF98
|
|
sub_801BF98:
|
|
push {r4,lr}
|
|
ldr r4, _0801BFB0
|
|
ldr r0, [r4]
|
|
cmp r0, 0
|
|
beq _0801BFAA
|
|
bl MemoryFree
|
|
movs r0, 0
|
|
str r0, [r4]
|
|
_0801BFAA:
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0801BFB0: .4byte gUnknown_203B238
|
|
thumb_func_end sub_801BF98
|
|
|
|
thumb_func_start sub_801BFB4
|
|
sub_801BFB4:
|
|
push {lr}
|
|
ldr r1, _0801BFC8
|
|
ldr r1, [r1]
|
|
str r0, [r1]
|
|
bl sub_801BFCC
|
|
bl sub_801C03C
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0801BFC8: .4byte gUnknown_203B238
|
|
thumb_func_end sub_801BFB4
|
|
|
|
thumb_func_start sub_801BFCC
|
|
sub_801BFCC:
|
|
push {r4-r7,lr}
|
|
ldr r4, _0801BFF0
|
|
ldr r0, [r4]
|
|
adds r0, 0xC4
|
|
bl sub_8006518
|
|
ldr r1, [r4]
|
|
ldr r0, [r1]
|
|
cmp r0, 0x2
|
|
bne _0801BFF8
|
|
adds r1, 0xF4
|
|
ldr r0, _0801BFF4
|
|
ldm r0!, {r2-r4}
|
|
stm r1!, {r2-r4}
|
|
ldm r0!, {r5-r7}
|
|
stm r1!, {r5-r7}
|
|
b _0801C01A
|
|
.align 2, 0
|
|
_0801BFF0: .4byte gUnknown_203B238
|
|
_0801BFF4: .4byte gUnknown_80DBDB0
|
|
_0801BFF8:
|
|
mov r12, r4
|
|
ldr r4, _0801C034
|
|
movs r3, 0
|
|
movs r2, 0x3
|
|
_0801C000:
|
|
mov r0, r12
|
|
ldr r1, [r0]
|
|
adds r1, r3
|
|
adds r1, 0xC4
|
|
adds r0, r4, 0
|
|
ldm r0!, {r5-r7}
|
|
stm r1!, {r5-r7}
|
|
ldm r0!, {r5-r7}
|
|
stm r1!, {r5-r7}
|
|
adds r3, 0x18
|
|
subs r2, 0x1
|
|
cmp r2, 0
|
|
bge _0801C000
|
|
_0801C01A:
|
|
bl ResetUnusedInputStruct
|
|
ldr r0, _0801C038
|
|
ldr r0, [r0]
|
|
adds r0, 0xC4
|
|
movs r1, 0x1
|
|
movs r2, 0x1
|
|
bl sub_800641C
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0801C034: .4byte gUnknown_80DBD98
|
|
_0801C038: .4byte gUnknown_203B238
|
|
thumb_func_end sub_801BFCC
|
|
|
|
thumb_func_start sub_801C03C
|
|
sub_801C03C:
|
|
push {lr}
|
|
sub sp, 0x8
|
|
ldr r1, _0801C058
|
|
ldr r0, [r1]
|
|
ldr r0, [r0]
|
|
adds r2, r1, 0
|
|
cmp r0, 0x4
|
|
bhi _0801C0C2
|
|
lsls r0, 2
|
|
ldr r1, _0801C05C
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_0801C058: .4byte gUnknown_203B238
|
|
_0801C05C: .4byte _0801C060
|
|
.align 2, 0
|
|
_0801C060:
|
|
.4byte _0801C074
|
|
.4byte _0801C084
|
|
.4byte _0801C08C
|
|
.4byte _0801C0B8
|
|
.4byte _0801C0C2
|
|
_0801C074:
|
|
ldr r0, [r2]
|
|
movs r1, 0x4
|
|
ldrsh r0, [r0, r1]
|
|
movs r1, 0
|
|
movs r2, 0x8
|
|
bl sub_801C244
|
|
b _0801C0C2
|
|
_0801C084:
|
|
movs r0, 0x1
|
|
bl sub_801C3B0
|
|
b _0801C0C2
|
|
_0801C08C:
|
|
bl sub_801C4C8
|
|
bl sub_801C0C8
|
|
ldr r0, _0801C0B4
|
|
ldr r2, [r0]
|
|
adds r0, r2, 0
|
|
adds r0, 0x74
|
|
adds r1, r2, 0
|
|
adds r1, 0x34
|
|
ldr r2, [r2, 0x30]
|
|
str r2, [sp]
|
|
movs r2, 0x2
|
|
str r2, [sp, 0x4]
|
|
movs r2, 0
|
|
movs r3, 0
|
|
bl sub_8012D60
|
|
b _0801C0C2
|
|
.align 2, 0
|
|
_0801C0B4: .4byte gUnknown_203B238
|
|
_0801C0B8:
|
|
ldr r0, [r2]
|
|
adds r0, 0x28
|
|
ldrb r0, [r0]
|
|
bl sub_801C620
|
|
_0801C0C2:
|
|
add sp, 0x8
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_801C03C
|
|
|
|
thumb_func_start sub_801C0C8
|
|
sub_801C0C8:
|
|
push {r4,r5,lr}
|
|
ldr r3, _0801C10C
|
|
ldr r1, [r3]
|
|
movs r4, 0
|
|
ldr r0, _0801C110
|
|
str r0, [r1, 0x34]
|
|
movs r0, 0x2
|
|
str r0, [r1, 0x38]
|
|
movs r2, 0x1
|
|
ldr r0, _0801C114
|
|
ldr r0, [r0]
|
|
str r0, [r1, 0x3C]
|
|
movs r0, 0x3
|
|
str r0, [r1, 0x40]
|
|
movs r5, 0x2
|
|
str r4, [r1, 0x44]
|
|
str r2, [r1, 0x48]
|
|
movs r2, 0
|
|
ldr r4, [r1, 0x30]
|
|
adds r1, 0x38
|
|
_0801C0F0:
|
|
ldr r0, [r1]
|
|
cmp r0, r4
|
|
beq _0801C104
|
|
adds r1, 0x8
|
|
adds r2, 0x1
|
|
cmp r2, r5
|
|
blt _0801C0F0
|
|
ldr r1, [r3]
|
|
movs r0, 0x2
|
|
str r0, [r1, 0x30]
|
|
_0801C104:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0801C10C: .4byte gUnknown_203B238
|
|
_0801C110: .4byte gUnknown_80DBDC8
|
|
_0801C114: .4byte gUnknown_80D4970
|
|
thumb_func_end sub_801C0C8
|
|
|
|
thumb_func_start sub_801C118
|
|
sub_801C118:
|
|
push {lr}
|
|
movs r0, 0x1
|
|
bl sub_801C308
|
|
cmp r0, 0x4
|
|
bhi _0801C19A
|
|
lsls r0, 2
|
|
ldr r1, _0801C130
|
|
adds r0, r1
|
|
ldr r0, [r0]
|
|
mov pc, r0
|
|
.align 2, 0
|
|
_0801C130: .4byte _0801C134
|
|
.align 2, 0
|
|
_0801C134:
|
|
.4byte _0801C19A
|
|
.4byte _0801C19A
|
|
.4byte _0801C190
|
|
.4byte _0801C148
|
|
.4byte _0801C16C
|
|
_0801C148:
|
|
bl sub_801C390
|
|
ldr r1, _0801C168
|
|
ldr r2, [r1]
|
|
str r0, [r2, 0x24]
|
|
adds r1, r2, 0
|
|
adds r1, 0xC
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
adds r2, 0x28
|
|
strb r0, [r2]
|
|
movs r0, 0x2
|
|
bl sub_801BFB4
|
|
b _0801C19A
|
|
.align 2, 0
|
|
_0801C168: .4byte gUnknown_203B238
|
|
_0801C16C:
|
|
bl sub_801C390
|
|
ldr r1, _0801C18C
|
|
ldr r2, [r1]
|
|
str r0, [r2, 0x24]
|
|
adds r1, r2, 0
|
|
adds r1, 0xC
|
|
adds r1, r0
|
|
ldrb r0, [r1]
|
|
adds r2, 0x28
|
|
strb r0, [r2]
|
|
movs r0, 0x3
|
|
bl sub_801BFB4
|
|
b _0801C19A
|
|
.align 2, 0
|
|
_0801C18C: .4byte gUnknown_203B238
|
|
_0801C190:
|
|
bl sub_801C3F8
|
|
movs r0, 0x4
|
|
bl sub_801BFB4
|
|
_0801C19A:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_801C118
|
|
|
|
thumb_func_start sub_801C1A0
|
|
sub_801C1A0:
|
|
push {r4,lr}
|
|
sub sp, 0x4
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
bl sub_801C308
|
|
ldr r4, _0801C1E0
|
|
ldr r0, [r4]
|
|
adds r0, 0x74
|
|
bl sub_8012FD8
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0801C1D0
|
|
ldr r0, [r4]
|
|
adds r0, 0x74
|
|
mov r1, sp
|
|
bl sub_8013114
|
|
ldr r1, [sp]
|
|
cmp r1, 0x1
|
|
beq _0801C1D0
|
|
ldr r0, [r4]
|
|
str r1, [r0, 0x30]
|
|
_0801C1D0:
|
|
ldr r0, [sp]
|
|
cmp r0, 0x2
|
|
beq _0801C1EA
|
|
cmp r0, 0x2
|
|
bgt _0801C1E4
|
|
cmp r0, 0x1
|
|
beq _0801C218
|
|
b _0801C21E
|
|
.align 2, 0
|
|
_0801C1E0: .4byte gUnknown_203B238
|
|
_0801C1E4:
|
|
cmp r0, 0x3
|
|
beq _0801C210
|
|
b _0801C21E
|
|
_0801C1EA:
|
|
ldr r0, _0801C208
|
|
bl PlaySound
|
|
ldr r0, _0801C20C
|
|
ldr r1, [r0]
|
|
ldr r0, [r1, 0x8]
|
|
adds r0, 0x20
|
|
adds r1, 0x28
|
|
ldrb r1, [r1]
|
|
bl ToggleIQSkill
|
|
movs r0, 0x1
|
|
bl sub_801BFB4
|
|
b _0801C21E
|
|
.align 2, 0
|
|
_0801C208: .4byte 0x00000133
|
|
_0801C20C: .4byte gUnknown_203B238
|
|
_0801C210:
|
|
movs r0, 0x3
|
|
bl sub_801BFB4
|
|
b _0801C21E
|
|
_0801C218:
|
|
movs r0, 0x1
|
|
bl sub_801BFB4
|
|
_0801C21E:
|
|
add sp, 0x4
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_801C1A0
|
|
|
|
thumb_func_start sub_801C228
|
|
sub_801C228:
|
|
push {lr}
|
|
bl sub_801C674
|
|
cmp r0, 0x1
|
|
bls _0801C240
|
|
cmp r0, 0x3
|
|
bhi _0801C240
|
|
bl sub_801C6B4
|
|
movs r0, 0x1
|
|
bl sub_801BFB4
|
|
_0801C240:
|
|
pop {r0}
|
|
bx r0
|
|
thumb_func_end sub_801C228
|
|
|
|
thumb_func_start sub_801C244
|
|
sub_801C244:
|
|
push {r4-r7,lr}
|
|
adds r6, r1, 0
|
|
adds r7, r2, 0
|
|
lsls r0, 16
|
|
asrs r0, 16
|
|
adds r4, r0, 0
|
|
bl HasNoAvailIQSkills
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0801C25E
|
|
movs r0, 0
|
|
b _0801C2F6
|
|
_0801C25E:
|
|
ldr r5, _0801C2FC
|
|
ldr r0, [r5]
|
|
cmp r0, 0
|
|
bne _0801C270
|
|
movs r0, 0xC4
|
|
movs r1, 0x8
|
|
bl MemoryAlloc
|
|
str r0, [r5]
|
|
_0801C270:
|
|
ldr r0, [r5]
|
|
strh r4, [r0]
|
|
ldr r3, _0801C300
|
|
movs r1, 0x58
|
|
adds r2, r4, 0
|
|
muls r2, r1
|
|
ldr r1, [r3]
|
|
adds r1, r2
|
|
str r1, [r0, 0x4]
|
|
adds r0, 0x8
|
|
movs r2, 0x14
|
|
ldrsh r1, [r1, r2]
|
|
bl GetNumAvailableIQSkills
|
|
adds r1, r0, 0
|
|
ldr r0, [r5]
|
|
str r1, [r0, 0x20]
|
|
str r6, [r0, 0x58]
|
|
lsls r1, r6, 1
|
|
adds r1, r6
|
|
lsls r1, 3
|
|
adds r1, 0x60
|
|
adds r1, r0, r1
|
|
str r1, [r0, 0x5C]
|
|
adds r0, 0x60
|
|
bl sub_8006518
|
|
ldr r1, [r5]
|
|
ldr r2, [r1, 0x58]
|
|
lsls r0, r2, 1
|
|
adds r0, r2
|
|
lsls r0, 3
|
|
adds r1, r0
|
|
adds r1, 0x60
|
|
ldr r0, _0801C304
|
|
ldm r0!, {r2-r4}
|
|
stm r1!, {r2-r4}
|
|
ldm r0!, {r2-r4}
|
|
stm r1!, {r2-r4}
|
|
ldr r1, [r5]
|
|
ldr r0, [r1, 0x5C]
|
|
adds r1, 0xC0
|
|
str r1, [r0, 0x14]
|
|
adds r1, r7, 0
|
|
bl sub_8012D08
|
|
bl ResetUnusedInputStruct
|
|
ldr r0, [r5]
|
|
adds r0, 0x60
|
|
movs r1, 0x1
|
|
movs r2, 0x1
|
|
bl sub_800641C
|
|
ldr r1, [r5]
|
|
adds r0, r1, 0
|
|
adds r0, 0x24
|
|
ldr r1, [r1, 0x20]
|
|
adds r2, r7, 0
|
|
adds r3, r6, 0
|
|
bl sub_8013818
|
|
bl sub_801C440
|
|
bl sub_801C4C8
|
|
movs r0, 0x1
|
|
_0801C2F6:
|
|
pop {r4-r7}
|
|
pop {r1}
|
|
bx r1
|
|
.align 2, 0
|
|
_0801C2FC: .4byte gUnknown_203B23C
|
|
_0801C300: .4byte gRecruitedPokemonRef
|
|
_0801C304: .4byte gUnknown_80DBDF0
|
|
thumb_func_end sub_801C244
|
|
|
|
thumb_func_start sub_801C308
|
|
sub_801C308:
|
|
push {lr}
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0801C324
|
|
ldr r0, _0801C320
|
|
ldr r0, [r0]
|
|
adds r0, 0x24
|
|
bl sub_8013660
|
|
movs r0, 0
|
|
b _0801C38A
|
|
.align 2, 0
|
|
_0801C320: .4byte gUnknown_203B23C
|
|
_0801C324:
|
|
ldr r0, _0801C33C
|
|
ldr r0, [r0]
|
|
adds r0, 0x24
|
|
bl GetKeyPress
|
|
cmp r0, 0x2
|
|
beq _0801C346
|
|
cmp r0, 0x2
|
|
bgt _0801C340
|
|
cmp r0, 0x1
|
|
beq _0801C350
|
|
b _0801C364
|
|
.align 2, 0
|
|
_0801C33C: .4byte gUnknown_203B23C
|
|
_0801C340:
|
|
cmp r0, 0x4
|
|
beq _0801C35A
|
|
b _0801C364
|
|
_0801C346:
|
|
movs r0, 0x1
|
|
bl PlayMenuSoundEffect
|
|
movs r0, 0x2
|
|
b _0801C38A
|
|
_0801C350:
|
|
movs r0, 0
|
|
bl PlayMenuSoundEffect
|
|
movs r0, 0x3
|
|
b _0801C38A
|
|
_0801C35A:
|
|
movs r0, 0x4
|
|
bl PlayMenuSoundEffect
|
|
movs r0, 0x4
|
|
b _0801C38A
|
|
_0801C364:
|
|
ldr r0, _0801C37C
|
|
ldr r0, [r0]
|
|
adds r0, 0x24
|
|
movs r1, 0x1
|
|
bl sub_80138B8
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
bne _0801C380
|
|
movs r0, 0
|
|
b _0801C38A
|
|
.align 2, 0
|
|
_0801C37C: .4byte gUnknown_203B23C
|
|
_0801C380:
|
|
bl sub_801C440
|
|
bl sub_801C4C8
|
|
movs r0, 0x1
|
|
_0801C38A:
|
|
pop {r1}
|
|
bx r1
|
|
thumb_func_end sub_801C308
|
|
|
|
thumb_func_start sub_801C390
|
|
sub_801C390:
|
|
ldr r0, _0801C3AC
|
|
ldr r2, [r0]
|
|
adds r0, r2, 0
|
|
adds r0, 0x42
|
|
movs r3, 0
|
|
ldrsh r1, [r0, r3]
|
|
subs r0, 0x2
|
|
movs r3, 0
|
|
ldrsh r0, [r0, r3]
|
|
muls r0, r1
|
|
movs r3, 0x3C
|
|
ldrsh r1, [r2, r3]
|
|
adds r0, r1
|
|
bx lr
|
|
.align 2, 0
|
|
_0801C3AC: .4byte gUnknown_203B23C
|
|
thumb_func_end sub_801C390
|
|
|
|
thumb_func_start sub_801C3B0
|
|
sub_801C3B0:
|
|
push {r4,r5,lr}
|
|
adds r4, r0, 0
|
|
lsls r4, 24
|
|
lsrs r4, 24
|
|
bl ResetUnusedInputStruct
|
|
ldr r5, _0801C3F4
|
|
ldr r0, [r5]
|
|
adds r0, 0x60
|
|
movs r1, 0
|
|
movs r2, 0
|
|
bl sub_800641C
|
|
ldr r0, [r5]
|
|
ldr r1, [r0, 0x20]
|
|
adds r2, r0, 0
|
|
adds r2, 0x46
|
|
strh r1, [r2]
|
|
adds r0, 0x24
|
|
bl sub_8013984
|
|
bl sub_801C440
|
|
bl sub_801C4C8
|
|
cmp r4, 0
|
|
beq _0801C3EE
|
|
ldr r0, [r5]
|
|
adds r0, 0x24
|
|
bl AddMenuCursorSprite
|
|
_0801C3EE:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0801C3F4: .4byte gUnknown_203B23C
|
|
thumb_func_end sub_801C3B0
|
|
|
|
thumb_func_start sub_801C3F8
|
|
sub_801C3F8:
|
|
push {r4,r5,lr}
|
|
ldr r4, _0801C438
|
|
ldr r2, [r4]
|
|
cmp r2, 0
|
|
beq _0801C432
|
|
ldr r0, [r2, 0x58]
|
|
lsls r1, r0, 1
|
|
adds r1, r0
|
|
lsls r1, 3
|
|
adds r1, r2, r1
|
|
adds r1, 0x60
|
|
ldr r0, _0801C43C
|
|
ldm r0!, {r2,r3,r5}
|
|
stm r1!, {r2,r3,r5}
|
|
ldm r0!, {r2,r3,r5}
|
|
stm r1!, {r2,r3,r5}
|
|
bl ResetUnusedInputStruct
|
|
ldr r0, [r4]
|
|
adds r0, 0x60
|
|
movs r1, 0x1
|
|
movs r2, 0x1
|
|
bl sub_800641C
|
|
ldr r0, [r4]
|
|
bl MemoryFree
|
|
movs r0, 0
|
|
str r0, [r4]
|
|
_0801C432:
|
|
pop {r4,r5}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0801C438: .4byte gUnknown_203B23C
|
|
_0801C43C: .4byte gUnknown_80DBDD8
|
|
thumb_func_end sub_801C3F8
|
|
|
|
thumb_func_start sub_801C440
|
|
sub_801C440:
|
|
push {r4,lr}
|
|
ldr r4, _0801C4C4
|
|
ldr r0, [r4]
|
|
adds r1, r0, 0
|
|
adds r1, 0x44
|
|
ldrh r1, [r1]
|
|
adds r0, 0xC0
|
|
movs r2, 0
|
|
strb r1, [r0]
|
|
ldr r0, [r4]
|
|
adds r1, r0, 0
|
|
adds r1, 0x42
|
|
ldrh r1, [r1]
|
|
adds r0, 0xC1
|
|
strb r1, [r0]
|
|
ldr r0, [r4]
|
|
adds r0, 0xC2
|
|
movs r1, 0xA
|
|
strb r1, [r0]
|
|
ldr r0, [r4]
|
|
adds r0, 0xC3
|
|
strb r2, [r0]
|
|
bl ResetUnusedInputStruct
|
|
ldr r0, [r4]
|
|
adds r0, 0x60
|
|
movs r1, 0x1
|
|
movs r2, 0x1
|
|
bl sub_800641C
|
|
ldr r0, [r4]
|
|
movs r1, 0x3E
|
|
ldrsh r0, [r0, r1]
|
|
movs r1, 0xC
|
|
bl sub_80095E4
|
|
adds r0, 0x2
|
|
ldr r2, [r4]
|
|
ldr r3, [r2, 0x58]
|
|
lsls r1, r3, 1
|
|
adds r1, r3
|
|
lsls r1, 3
|
|
adds r1, r2, r1
|
|
adds r1, 0x6E
|
|
lsls r0, 16
|
|
lsrs r0, 16
|
|
strh r0, [r1]
|
|
ldr r3, [r2, 0x58]
|
|
lsls r1, r3, 1
|
|
adds r1, r3
|
|
lsls r1, 3
|
|
adds r2, r1
|
|
adds r2, 0x70
|
|
strh r0, [r2]
|
|
bl ResetUnusedInputStruct
|
|
ldr r0, [r4]
|
|
adds r0, 0x60
|
|
movs r1, 0x1
|
|
movs r2, 0x1
|
|
bl sub_800641C
|
|
pop {r4}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0801C4C4: .4byte gUnknown_203B23C
|
|
thumb_func_end sub_801C440
|
|
|
|
thumb_func_start sub_801C4C8
|
|
sub_801C4C8:
|
|
push {r4-r7,lr}
|
|
mov r7, r8
|
|
push {r7}
|
|
sub sp, 0x8
|
|
ldr r6, _0801C594
|
|
ldr r0, [r6]
|
|
ldr r0, [r0, 0x58]
|
|
bl sub_8008C54
|
|
ldr r0, [r6]
|
|
ldr r0, [r0, 0x58]
|
|
bl sub_80073B8
|
|
ldr r0, [r6]
|
|
adds r1, r0, 0
|
|
adds r1, 0x42
|
|
movs r2, 0
|
|
ldrsh r4, [r1, r2]
|
|
lsls r4, 3
|
|
adds r5, r4, 0
|
|
adds r5, 0xA
|
|
ldr r2, _0801C598
|
|
ldr r3, [r0, 0x58]
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
adds r0, r5, 0
|
|
movs r1, 0
|
|
bl xxx_call_draw_string
|
|
adds r4, 0x4
|
|
ldr r1, [r6]
|
|
adds r0, r1, 0
|
|
adds r0, 0xC2
|
|
ldrb r0, [r0]
|
|
lsls r0, 3
|
|
adds r5, r4, r0
|
|
adds r0, r1, 0
|
|
adds r0, 0x42
|
|
movs r3, 0
|
|
ldrsh r2, [r0, r3]
|
|
adds r2, 0x1
|
|
movs r0, 0x7
|
|
str r0, [sp]
|
|
ldr r0, [r1, 0x58]
|
|
str r0, [sp, 0x4]
|
|
adds r0, r5, 0
|
|
movs r1, 0
|
|
movs r3, 0x1
|
|
bl sub_8012BC4
|
|
movs r5, 0
|
|
ldr r0, [r6]
|
|
movs r1, 0x3E
|
|
ldrsh r0, [r0, r1]
|
|
cmp r5, r0
|
|
bge _0801C5CC
|
|
ldr r2, _0801C59C
|
|
mov r8, r2
|
|
_0801C53C:
|
|
ldr r2, [r6]
|
|
adds r0, r2, 0
|
|
adds r0, 0x42
|
|
movs r3, 0
|
|
ldrsh r1, [r0, r3]
|
|
subs r0, 0x2
|
|
movs r3, 0
|
|
ldrsh r0, [r0, r3]
|
|
muls r1, r0
|
|
adds r1, r5
|
|
adds r0, r2, 0
|
|
adds r0, 0x8
|
|
adds r0, r1
|
|
ldrb r4, [r0]
|
|
adds r0, r2, 0
|
|
adds r0, 0x24
|
|
adds r1, r5, 0
|
|
bl sub_8013800
|
|
adds r7, r0, 0
|
|
adds r0, r4, 0
|
|
bl GetIQSkillName
|
|
adds r1, r0, 0
|
|
mov r0, r8
|
|
movs r2, 0x50
|
|
bl strncpy
|
|
ldr r0, [r6]
|
|
ldr r0, [r0, 0x4]
|
|
adds r0, 0x20
|
|
movs r1, 0x1
|
|
lsls r1, r4
|
|
bl IsIQSkillSet
|
|
lsls r0, 24
|
|
cmp r0, 0
|
|
beq _0801C5A4
|
|
mov r0, r8
|
|
subs r0, 0x50
|
|
ldr r1, _0801C5A0
|
|
bl strcpy
|
|
b _0801C5AE
|
|
.align 2, 0
|
|
_0801C594: .4byte gUnknown_203B23C
|
|
_0801C598: .4byte gUnknown_80DBE08
|
|
_0801C59C: .4byte gUnknown_202DEA8
|
|
_0801C5A0: .4byte gUnknown_80DBE14
|
|
_0801C5A4:
|
|
mov r0, r8
|
|
subs r0, 0x50
|
|
ldr r1, _0801C5E4
|
|
bl strcpy
|
|
_0801C5AE:
|
|
ldr r0, [r6]
|
|
ldr r3, [r0, 0x58]
|
|
movs r0, 0
|
|
str r0, [sp]
|
|
movs r0, 0xC
|
|
adds r1, r7, 0
|
|
ldr r2, _0801C5E8
|
|
bl xxx_format_and_draw
|
|
adds r5, 0x1
|
|
ldr r0, [r6]
|
|
movs r1, 0x3E
|
|
ldrsh r0, [r0, r1]
|
|
cmp r5, r0
|
|
blt _0801C53C
|
|
_0801C5CC:
|
|
ldr r0, _0801C5EC
|
|
ldr r0, [r0]
|
|
ldr r0, [r0, 0x58]
|
|
bl sub_80073E0
|
|
add sp, 0x8
|
|
pop {r3}
|
|
mov r8, r3
|
|
pop {r4-r7}
|
|
pop {r0}
|
|
bx r0
|
|
.align 2, 0
|
|
_0801C5E4: .4byte gUnknown_80DBE18
|
|
_0801C5E8: .4byte gUnknown_80DBE1C
|
|
_0801C5EC: .4byte gUnknown_203B23C
|
|
thumb_func_end sub_801C4C8
|
|
|
|
.align 2,0
|