mirror of
https://github.com/pret/pokediamond.git
synced 2026-04-26 16:26:59 -05:00
1933 lines
34 KiB
ArmAsm
1933 lines
34 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "global.inc"
|
|
|
|
.text
|
|
|
|
thumb_func_start sub_0204653C
|
|
sub_0204653C: ; 0x0204653C
|
|
push {r4-r6, lr}
|
|
add r4, r0, #0x0
|
|
bl sub_02046528
|
|
add r5, r0, #0x0
|
|
add r0, r4, #0x0
|
|
bl sub_0204652C
|
|
add r6, r0, #0x0
|
|
add r0, r4, #0x0
|
|
bl sub_02046530
|
|
add r4, r0, #0x0
|
|
ldr r0, [r4, #0x0]
|
|
cmp r0, #0x0
|
|
beq _02046562
|
|
cmp r0, #0x1
|
|
beq _02046572
|
|
b _02046580
|
|
_02046562:
|
|
add r0, r5, #0x0
|
|
add r1, r6, #0x0
|
|
bl sub_0203780C
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02046580
|
|
_02046572:
|
|
add r0, r5, #0x0
|
|
bl sub_0204647C
|
|
cmp r0, #0x0
|
|
bne _02046580
|
|
mov r0, #0x1
|
|
pop {r4-r6, pc}
|
|
_02046580:
|
|
mov r0, #0x0
|
|
pop {r4-r6, pc}
|
|
|
|
thumb_func_start sub_02046584
|
|
sub_02046584: ; 0x02046584
|
|
ldr r3, _0204658C ; =sub_0204640C
|
|
add r2, r1, #0x0
|
|
ldr r1, _02046590 ; =sub_0204653C
|
|
bx r3
|
|
.balign 4
|
|
_0204658C: .word sub_0204640C
|
|
_02046590: .word sub_0204653C
|
|
|
|
thumb_func_start sub_02046594
|
|
sub_02046594: ; 0x02046594
|
|
push {r3-r7, lr}
|
|
add r5, r0, #0x0
|
|
add r6, r1, #0x0
|
|
mov r0, #0xb
|
|
mov r1, #0x14
|
|
add r7, r2, #0x0
|
|
add r4, r3, #0x0
|
|
bl AllocFromHeapAtEnd
|
|
str r4, [r0, #0x0]
|
|
cmp r4, #0x0
|
|
beq _020465B0
|
|
mov r1, #0x0
|
|
str r1, [r4, #0x0]
|
|
_020465B0:
|
|
str r6, [r0, #0x4]
|
|
str r7, [r0, #0x8]
|
|
str r5, [r0, #0x10]
|
|
pop {r3-r7, pc}
|
|
|
|
thumb_func_start sub_020465B8
|
|
sub_020465B8: ; 0x020465B8
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
ldr r0, [r4, #0x10]
|
|
bl sub_02047964
|
|
add r0, r4, #0x0
|
|
bl FreeToHeap
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_020465CC
|
|
sub_020465CC: ; 0x020465CC
|
|
ldr r2, [r0, #0x0]
|
|
cmp r2, #0x0
|
|
beq _020465D8
|
|
ldr r1, [r0, #0x10]
|
|
ldr r1, [r1, #0x14]
|
|
str r1, [r2, #0x0]
|
|
_020465D8:
|
|
ldr r0, [r0, #0x10]
|
|
ldr r3, _020465E0 ; =sub_020480B8
|
|
ldr r0, [r0, #0x14]
|
|
bx r3
|
|
.balign 4
|
|
_020465E0: .word sub_020480B8
|
|
|
|
thumb_func_start sub_020465E4
|
|
sub_020465E4: ; 0x020465E4
|
|
push {r3, lr}
|
|
mov r2, #0x2
|
|
ldr r3, [r0, #0x0]
|
|
lsl r2, r2, #0x1e
|
|
tst r2, r3
|
|
bne _020465F4
|
|
bl sub_02047F38
|
|
_020465F4:
|
|
pop {r3, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_020465F8
|
|
sub_020465F8: ; 0x020465F8
|
|
push {r3-r7, lr}
|
|
add r7, r0, #0x0
|
|
bl sub_02046528
|
|
add r6, r0, #0x0
|
|
add r0, r7, #0x0
|
|
bl sub_0204652C
|
|
add r5, r0, #0x0
|
|
add r0, r7, #0x0
|
|
bl sub_02046530
|
|
add r4, r0, #0x0
|
|
ldr r0, [r4, #0x0]
|
|
cmp r0, #0x5
|
|
bhi _020466F8
|
|
add r0, r0, r0
|
|
add r0, pc
|
|
ldrh r0, [r0, #0x6]
|
|
lsl r0, r0, #0x10
|
|
asr r0, r0, #0x10
|
|
add pc, r0
|
|
_02046624: ; jump table (using 16-bit offset)
|
|
.short _02046630 - _02046624 - 2; case 0
|
|
.short _02046648 - _02046624 - 2; case 1
|
|
.short _02046656 - _02046624 - 2; case 2
|
|
.short _02046666 - _02046624 - 2; case 3
|
|
.short _020466DA - _02046624 - 2; case 4
|
|
.short _020466EE - _02046624 - 2; case 5
|
|
_02046630:
|
|
ldr r0, [r6, #0x34]
|
|
bl sub_02058780
|
|
ldr r1, [r5, #0x4]
|
|
ldr r2, [r5, #0x8]
|
|
add r0, r7, #0x0
|
|
bl sub_0204AEF8
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _020466F8
|
|
_02046648:
|
|
add r0, r7, #0x0
|
|
bl sub_0204AF3C
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _020466F8
|
|
_02046656:
|
|
ldr r1, [r5, #0x10]
|
|
add r0, r7, #0x0
|
|
bl sub_02046584
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _020466F8
|
|
_02046666:
|
|
ldr r0, [r5, #0x10]
|
|
add r1, r6, #0x0
|
|
bl sub_020465E4
|
|
ldr r2, [r5, #0x10]
|
|
ldr r1, [r2, #0x0]
|
|
cmp r1, #0x0
|
|
beq _02046682
|
|
mov r0, #0x1
|
|
lsl r0, r0, #0x8
|
|
cmp r1, r0
|
|
beq _02046682
|
|
cmp r1, #0x4a
|
|
bne _02046690
|
|
_02046682:
|
|
mov r1, #0x4d
|
|
lsl r1, r1, #0x2
|
|
ldr r1, [r2, r1]
|
|
ldr r2, [r2, #0x14]
|
|
add r0, r6, #0x0
|
|
bl sub_02061080
|
|
_02046690:
|
|
add r0, r5, #0x0
|
|
bl sub_020465CC
|
|
cmp r0, #0x0
|
|
bne _020466A4
|
|
add r0, r5, #0x0
|
|
bl sub_020465B8
|
|
mov r0, #0x1
|
|
pop {r3-r7, pc}
|
|
_020466A4:
|
|
ldr r0, [r6, #0xc]
|
|
bl SaveArray_Flags_Get
|
|
bl sub_0205ED3C
|
|
cmp r0, #0x0
|
|
beq _020466BC
|
|
ldr r0, [r6, #0xc]
|
|
bl SaveArray_PlayerParty_Get
|
|
bl HealParty
|
|
_020466BC:
|
|
ldr r1, [r5, #0x10]
|
|
add r0, r6, #0x0
|
|
bl sub_020472F4
|
|
ldr r1, [r5, #0x10]
|
|
add r0, r6, #0x0
|
|
bl sub_020473CC
|
|
add r0, r7, #0x0
|
|
bl sub_0204AF84
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _020466F8
|
|
_020466DA:
|
|
ldr r0, [r6, #0x34]
|
|
bl sub_020587B0
|
|
add r0, r7, #0x0
|
|
bl sub_0204B00C
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _020466F8
|
|
_020466EE:
|
|
add r0, r5, #0x0
|
|
bl sub_020465B8
|
|
mov r0, #0x1
|
|
pop {r3-r7, pc}
|
|
_020466F8:
|
|
mov r0, #0x0
|
|
pop {r3-r7, pc}
|
|
|
|
thumb_func_start sub_020466FC
|
|
sub_020466FC: ; 0x020466FC
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
add r0, r1, #0x0
|
|
add r1, r2, #0x0
|
|
add r2, r3, #0x0
|
|
ldr r3, [sp, #0x8]
|
|
bl sub_02046594
|
|
add r2, r0, #0x0
|
|
ldr r1, _02046718 ; =sub_020465F8
|
|
add r0, r4, #0x0
|
|
bl sub_0204640C
|
|
pop {r4, pc}
|
|
.balign 4
|
|
_02046718: .word sub_020465F8
|
|
|
|
thumb_func_start sub_0204671C
|
|
sub_0204671C: ; 0x0204671C
|
|
push {r3, lr}
|
|
mov r2, #0xf
|
|
and r0, r2
|
|
cmp r0, #0x6
|
|
bhi _02046754
|
|
add r0, r0, r0
|
|
add r0, pc
|
|
ldrh r0, [r0, #0x6]
|
|
lsl r0, r0, #0x10
|
|
asr r0, r0, #0x10
|
|
add pc, r0
|
|
_02046732: ; jump table (using 16-bit offset)
|
|
.short _02046754 - _02046732 - 2; case 0
|
|
.short _02046740 - _02046732 - 2; case 1
|
|
.short _0204674A - _02046732 - 2; case 2
|
|
.short _02046754 - _02046732 - 2; case 3
|
|
.short _02046754 - _02046732 - 2; case 4
|
|
.short _0204674A - _02046732 - 2; case 5
|
|
.short _02046740 - _02046732 - 2; case 6
|
|
_02046740:
|
|
ldr r0, [r1, #0xc]
|
|
mov r1, #0x1
|
|
bl sub_0202E25C
|
|
pop {r3, pc}
|
|
_0204674A:
|
|
ldr r0, [r1, #0xc]
|
|
sub r2, #0x10
|
|
add r1, r2, #0x0
|
|
bl sub_0202E25C
|
|
_02046754:
|
|
pop {r3, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_02046758
|
|
sub_02046758: ; 0x02046758
|
|
push {r3-r7, lr}
|
|
add r6, r0, #0x0
|
|
bl sub_02046528
|
|
add r7, r0, #0x0
|
|
add r0, r6, #0x0
|
|
bl sub_0204652C
|
|
add r5, r0, #0x0
|
|
add r0, r6, #0x0
|
|
bl sub_02046530
|
|
add r4, r0, #0x0
|
|
ldr r0, [r4, #0x0]
|
|
cmp r0, #0x5
|
|
bhi _020467F6
|
|
add r0, r0, r0
|
|
add r0, pc
|
|
ldrh r0, [r0, #0x6]
|
|
lsl r0, r0, #0x10
|
|
asr r0, r0, #0x10
|
|
add pc, r0
|
|
_02046784: ; jump table (using 16-bit offset)
|
|
.short _02046790 - _02046784 - 2; case 0
|
|
.short _020467A2 - _02046784 - 2; case 1
|
|
.short _020467B0 - _02046784 - 2; case 2
|
|
.short _020467C0 - _02046784 - 2; case 3
|
|
.short _020467EC - _02046784 - 2; case 4
|
|
.short _020467EC - _02046784 - 2; case 5
|
|
_02046790:
|
|
ldr r1, [r5, #0x4]
|
|
ldr r2, [r5, #0x8]
|
|
add r0, r6, #0x0
|
|
bl sub_0204AEF8
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _020467F6
|
|
_020467A2:
|
|
add r0, r6, #0x0
|
|
bl sub_0204AF3C
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _020467F6
|
|
_020467B0:
|
|
ldr r1, [r5, #0x10]
|
|
add r0, r6, #0x0
|
|
bl sub_02046584
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _020467F6
|
|
_020467C0:
|
|
ldr r0, [r5, #0x10]
|
|
add r1, r7, #0x0
|
|
ldr r0, [r0, #0x14]
|
|
bl sub_0204671C
|
|
ldr r0, [r5, #0x10]
|
|
add r1, r7, #0x0
|
|
bl sub_02047FA4
|
|
ldr r0, [r7, #0xc]
|
|
bl Save_GameStats_Get
|
|
mov r1, #0x15
|
|
bl GameStats_AddSpecial
|
|
add r0, r6, #0x0
|
|
bl sub_0204AF84
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _020467F6
|
|
_020467EC:
|
|
add r0, r5, #0x0
|
|
bl sub_020465B8
|
|
mov r0, #0x1
|
|
pop {r3-r7, pc}
|
|
_020467F6:
|
|
mov r0, #0x0
|
|
pop {r3-r7, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_020467FC
|
|
sub_020467FC: ; 0x020467FC
|
|
push {r3-r7, lr}
|
|
add r7, r0, #0x0
|
|
bl sub_02046528
|
|
add r6, r0, #0x0
|
|
add r0, r7, #0x0
|
|
bl sub_0204652C
|
|
add r5, r0, #0x0
|
|
add r0, r7, #0x0
|
|
bl sub_02046530
|
|
add r4, r0, #0x0
|
|
ldr r0, [r4, #0x0]
|
|
cmp r0, #0x0
|
|
beq _02046826
|
|
cmp r0, #0x1
|
|
beq _02046844
|
|
cmp r0, #0x2
|
|
beq _0204686A
|
|
b _02046874
|
|
_02046826:
|
|
ldr r1, [r5, #0x8]
|
|
mov r0, #0x5
|
|
lsl r1, r1, #0x10
|
|
lsr r1, r1, #0x10
|
|
mov r2, #0x1
|
|
bl sub_0200433C
|
|
ldr r1, [r5, #0x10]
|
|
add r0, r7, #0x0
|
|
bl sub_02046584
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02046874
|
|
_02046844:
|
|
ldr r0, [r5, #0x10]
|
|
add r1, r6, #0x0
|
|
ldr r0, [r0, #0x14]
|
|
bl sub_0204671C
|
|
ldr r0, [r5, #0x10]
|
|
add r1, r6, #0x0
|
|
bl sub_02047FA4
|
|
ldr r0, [r6, #0xc]
|
|
bl Save_GameStats_Get
|
|
mov r1, #0x15
|
|
bl GameStats_AddSpecial
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02046874
|
|
_0204686A:
|
|
add r0, r5, #0x0
|
|
bl sub_020465B8
|
|
mov r0, #0x1
|
|
pop {r3-r7, pc}
|
|
_02046874:
|
|
mov r0, #0x0
|
|
pop {r3-r7, pc}
|
|
|
|
thumb_func_start sub_02046878
|
|
sub_02046878: ; 0x02046878
|
|
push {r3-r7, lr}
|
|
add r6, r0, #0x0
|
|
bl sub_02046528
|
|
add r7, r0, #0x0
|
|
add r0, r6, #0x0
|
|
bl sub_0204652C
|
|
add r5, r0, #0x0
|
|
add r0, r6, #0x0
|
|
bl sub_02046530
|
|
add r4, r0, #0x0
|
|
ldr r0, [r4, #0x0]
|
|
cmp r0, #0x5
|
|
bhi _02046922
|
|
add r0, r0, r0
|
|
add r0, pc
|
|
ldrh r0, [r0, #0x6]
|
|
lsl r0, r0, #0x10
|
|
asr r0, r0, #0x10
|
|
add pc, r0
|
|
_020468A4: ; jump table (using 16-bit offset)
|
|
.short _020468B0 - _020468A4 - 2; case 0
|
|
.short _020468C2 - _020468A4 - 2; case 1
|
|
.short _020468D0 - _020468A4 - 2; case 2
|
|
.short _020468E0 - _020468A4 - 2; case 3
|
|
.short _0204690A - _020468A4 - 2; case 4
|
|
.short _02046918 - _020468A4 - 2; case 5
|
|
_020468B0:
|
|
ldr r1, [r5, #0x4]
|
|
ldr r2, [r5, #0x8]
|
|
add r0, r6, #0x0
|
|
bl sub_0204AEF8
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02046922
|
|
_020468C2:
|
|
add r0, r6, #0x0
|
|
bl sub_0204AF3C
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02046922
|
|
_020468D0:
|
|
ldr r1, [r5, #0x10]
|
|
add r0, r6, #0x0
|
|
bl sub_02046584
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02046922
|
|
_020468E0:
|
|
ldr r0, [r5, #0x10]
|
|
add r1, r7, #0x0
|
|
bl sub_02047FA4
|
|
mov r1, #0x4e
|
|
ldr r2, [r5, #0x10]
|
|
lsl r1, r1, #0x2
|
|
add r0, r7, #0x0
|
|
add r1, r2, r1
|
|
bl sub_02060044
|
|
add r0, r5, #0x0
|
|
bl sub_020465CC
|
|
add r0, r6, #0x0
|
|
bl sub_0204AF84
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02046922
|
|
_0204690A:
|
|
add r0, r6, #0x0
|
|
bl sub_0204B00C
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02046922
|
|
_02046918:
|
|
add r0, r5, #0x0
|
|
bl sub_020465B8
|
|
mov r0, #0x1
|
|
pop {r3-r7, pc}
|
|
_02046922:
|
|
mov r0, #0x0
|
|
pop {r3-r7, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_02046928
|
|
sub_02046928: ; 0x02046928
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
add r0, r1, #0x0
|
|
add r1, r2, #0x0
|
|
add r2, r3, #0x0
|
|
ldr r3, [sp, #0x8]
|
|
bl sub_02046594
|
|
add r2, r0, #0x0
|
|
ldr r1, _02046944 ; =sub_02046878
|
|
add r0, r4, #0x0
|
|
bl sub_0204640C
|
|
pop {r4, pc}
|
|
.balign 4
|
|
_02046944: .word sub_02046878
|
|
|
|
thumb_func_start sub_02046948
|
|
sub_02046948: ; 0x02046948
|
|
push {r3-r7, lr}
|
|
add r4, r1, #0x0
|
|
add r7, r0, #0x0
|
|
add r5, r2, #0x0
|
|
bl sub_02046528
|
|
add r1, r0, #0x0
|
|
add r0, r4, #0x0
|
|
bl ov06_02244558
|
|
add r4, r0, #0x0
|
|
bl sub_020475A0
|
|
add r6, r0, #0x0
|
|
add r0, r4, #0x0
|
|
bl sub_020475B0
|
|
add r3, r0, #0x0
|
|
add r0, r7, #0x0
|
|
add r1, r4, #0x0
|
|
add r2, r6, #0x0
|
|
str r5, [sp, #0x0]
|
|
bl sub_02046928
|
|
pop {r3-r7, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_0204697C
|
|
sub_0204697C: ; 0x0204697C
|
|
push {r3-r7, lr}
|
|
add r5, r0, #0x0
|
|
add r6, r1, #0x0
|
|
mov r0, #0xb
|
|
mov r1, #0x14
|
|
add r7, r2, #0x0
|
|
add r4, r3, #0x0
|
|
bl AllocFromHeapAtEnd
|
|
str r4, [r0, #0xc]
|
|
cmp r4, #0x0
|
|
beq _02046998
|
|
mov r1, #0x0
|
|
str r1, [r4, #0x0]
|
|
_02046998:
|
|
str r6, [r0, #0x4]
|
|
str r7, [r0, #0x8]
|
|
str r5, [r0, #0x10]
|
|
mov r1, #0x0
|
|
str r1, [r0, #0x0]
|
|
pop {r3-r7, pc}
|
|
|
|
thumb_func_start sub_020469A4
|
|
sub_020469A4: ; 0x020469A4
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
ldr r0, [r4, #0x10]
|
|
bl sub_02047964
|
|
add r0, r4, #0x0
|
|
bl FreeToHeap
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_020469B8
|
|
sub_020469B8: ; 0x020469B8
|
|
push {r4-r6, lr}
|
|
add r5, r0, #0x0
|
|
ldr r0, [r5, #0xc]
|
|
add r4, r1, #0x0
|
|
bl SaveArray_Flags_Get
|
|
bl sub_0205F214
|
|
cmp r0, #0x0
|
|
beq _020469F2
|
|
add r0, r4, #0x0
|
|
bl sub_020475A0
|
|
add r6, r0, #0x0
|
|
add r0, r4, #0x0
|
|
bl sub_020475B0
|
|
add r2, r0, #0x0
|
|
add r0, r4, #0x0
|
|
add r1, r6, #0x0
|
|
mov r3, #0x0
|
|
bl sub_02046594
|
|
add r2, r0, #0x0
|
|
ldr r1, _02046A18 ; =sub_02046C1C
|
|
add r0, r5, #0x0
|
|
bl sub_020463CC
|
|
pop {r4-r6, pc}
|
|
_020469F2:
|
|
add r0, r4, #0x0
|
|
bl sub_020475A0
|
|
add r6, r0, #0x0
|
|
add r0, r4, #0x0
|
|
bl sub_020475B0
|
|
add r2, r0, #0x0
|
|
add r0, r4, #0x0
|
|
add r1, r6, #0x0
|
|
mov r3, #0x0
|
|
bl sub_0204697C
|
|
add r2, r0, #0x0
|
|
ldr r1, _02046A1C ; =sub_02046A88
|
|
add r0, r5, #0x0
|
|
bl sub_020463CC
|
|
pop {r4-r6, pc}
|
|
.balign 4
|
|
_02046A18: .word sub_02046C1C
|
|
_02046A1C: .word sub_02046A88
|
|
|
|
thumb_func_start sub_02046A20
|
|
sub_02046A20: ; 0x02046A20
|
|
push {r4-r6, lr}
|
|
ldr r0, [r0, #0xc]
|
|
add r5, r1, #0x0
|
|
add r4, r2, #0x0
|
|
bl SaveArray_Flags_Get
|
|
bl sub_0205F214
|
|
cmp r0, #0x0
|
|
beq _02046A5A
|
|
add r0, r4, #0x0
|
|
bl sub_020475A0
|
|
add r6, r0, #0x0
|
|
add r0, r4, #0x0
|
|
bl sub_020475B0
|
|
add r2, r0, #0x0
|
|
add r0, r4, #0x0
|
|
add r1, r6, #0x0
|
|
mov r3, #0x0
|
|
bl sub_02046594
|
|
add r2, r0, #0x0
|
|
ldr r1, _02046A80 ; =sub_02046C1C
|
|
add r0, r5, #0x0
|
|
bl sub_020463EC
|
|
pop {r4-r6, pc}
|
|
_02046A5A:
|
|
add r0, r4, #0x0
|
|
bl sub_020475A0
|
|
add r6, r0, #0x0
|
|
add r0, r4, #0x0
|
|
bl sub_020475B0
|
|
add r2, r0, #0x0
|
|
add r0, r4, #0x0
|
|
add r1, r6, #0x0
|
|
mov r3, #0x0
|
|
bl sub_0204697C
|
|
add r2, r0, #0x0
|
|
ldr r1, _02046A84 ; =sub_02046A88
|
|
add r0, r5, #0x0
|
|
bl sub_020463EC
|
|
pop {r4-r6, pc}
|
|
.balign 4
|
|
_02046A80: .word sub_02046C1C
|
|
_02046A84: .word sub_02046A88
|
|
|
|
thumb_func_start sub_02046A88
|
|
sub_02046A88: ; 0x02046A88
|
|
push {r4-r6, lr}
|
|
add r6, r0, #0x0
|
|
bl sub_02046528
|
|
add r5, r0, #0x0
|
|
add r0, r6, #0x0
|
|
bl sub_0204652C
|
|
add r4, r0, #0x0
|
|
ldr r0, [r4, #0x0]
|
|
cmp r0, #0x6
|
|
bls _02046AA2
|
|
b _02046C12
|
|
_02046AA2:
|
|
add r0, r0, r0
|
|
add r0, pc
|
|
ldrh r0, [r0, #0x6]
|
|
lsl r0, r0, #0x10
|
|
asr r0, r0, #0x10
|
|
add pc, r0
|
|
_02046AAE: ; jump table (using 16-bit offset)
|
|
.short _02046ABC - _02046AAE - 2; case 0
|
|
.short _02046AE0 - _02046AAE - 2; case 1
|
|
.short _02046AEE - _02046AAE - 2; case 2
|
|
.short _02046AFE - _02046AAE - 2; case 3
|
|
.short _02046BAE - _02046AAE - 2; case 4
|
|
.short _02046BC4 - _02046AAE - 2; case 5
|
|
.short _02046BF4 - _02046AAE - 2; case 6
|
|
_02046ABC:
|
|
ldr r0, [r5, #0x34]
|
|
bl sub_02058780
|
|
ldr r0, [r5, #0xc]
|
|
bl Save_GameStats_Get
|
|
mov r1, #0x7
|
|
bl GameStats_Inc
|
|
ldr r1, [r4, #0x4]
|
|
ldr r2, [r4, #0x8]
|
|
add r0, r6, #0x0
|
|
bl sub_0204AEF8
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02046C12
|
|
_02046AE0:
|
|
add r0, r6, #0x0
|
|
bl sub_0204AF3C
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02046C12
|
|
_02046AEE:
|
|
ldr r1, [r4, #0x10]
|
|
add r0, r6, #0x0
|
|
bl sub_02046584
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02046C12
|
|
_02046AFE:
|
|
ldr r0, [r4, #0x10]
|
|
add r1, r5, #0x0
|
|
bl sub_020465E4
|
|
mov r1, #0x4d
|
|
ldr r2, [r4, #0x10]
|
|
lsl r1, r1, #0x2
|
|
ldr r1, [r2, r1]
|
|
ldr r2, [r2, #0x14]
|
|
add r0, r5, #0x0
|
|
bl sub_02061080
|
|
ldr r0, [r4, #0x10]
|
|
ldr r0, [r0, #0x14]
|
|
bl sub_020480B8
|
|
cmp r0, #0x0
|
|
bne _02046B3E
|
|
add r0, r4, #0x0
|
|
bl sub_020469A4
|
|
add r5, #0x90
|
|
ldr r0, [r5, #0x0]
|
|
bl sub_0205DD40
|
|
ldr r1, _02046C18 ; =sub_0204837C
|
|
add r0, r6, #0x0
|
|
mov r2, #0x0
|
|
bl sub_020463EC
|
|
mov r0, #0x0
|
|
pop {r4-r6, pc}
|
|
_02046B3E:
|
|
ldr r0, [r5, #0xc]
|
|
bl SaveArray_Flags_Get
|
|
bl sub_0205ED3C
|
|
cmp r0, #0x0
|
|
beq _02046B56
|
|
ldr r0, [r5, #0xc]
|
|
bl SaveArray_PlayerParty_Get
|
|
bl HealParty
|
|
_02046B56:
|
|
ldr r1, [r4, #0x10]
|
|
add r0, r5, #0x0
|
|
bl sub_020472F4
|
|
ldr r1, [r4, #0x10]
|
|
add r0, r5, #0x0
|
|
bl sub_020473CC
|
|
add r0, r5, #0x0
|
|
add r0, #0x90
|
|
ldr r0, [r0, #0x0]
|
|
bl sub_0205E128
|
|
cmp r0, #0x0
|
|
beq _02046BA0
|
|
add r0, r5, #0x0
|
|
add r0, #0x90
|
|
ldr r0, [r0, #0x0]
|
|
bl sub_0205E0A4
|
|
cmp r0, #0x0
|
|
beq _02046B98
|
|
ldr r0, [r4, #0x10]
|
|
ldr r0, [r0, #0x14]
|
|
cmp r0, #0x1
|
|
beq _02046BA0
|
|
cmp r0, #0x4
|
|
beq _02046BA0
|
|
add r5, #0x90
|
|
ldr r0, [r5, #0x0]
|
|
bl sub_0205DD40
|
|
b _02046BA0
|
|
_02046B98:
|
|
add r5, #0x90
|
|
ldr r0, [r5, #0x0]
|
|
bl sub_0205DD40
|
|
_02046BA0:
|
|
add r0, r6, #0x0
|
|
bl sub_0204AF84
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02046C12
|
|
_02046BAE:
|
|
ldr r1, [r4, #0x10]
|
|
add r0, r5, #0x0
|
|
bl ov06_02248724
|
|
add r0, r6, #0x0
|
|
bl sub_0204B00C
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02046C12
|
|
_02046BC4:
|
|
add r0, r5, #0x0
|
|
add r0, #0x90
|
|
ldr r0, [r0, #0x0]
|
|
bl sub_0205E128
|
|
cmp r0, #0x0
|
|
beq _02046BEC
|
|
ldr r1, [r4, #0x10]
|
|
add r2, r5, #0x0
|
|
add r2, #0x90
|
|
ldr r1, [r1, #0x14]
|
|
ldr r2, [r2, #0x0]
|
|
add r0, r5, #0x0
|
|
bl sub_0205DED4
|
|
add r0, r5, #0x0
|
|
add r5, #0x90
|
|
ldr r1, [r5, #0x0]
|
|
bl sub_0205DF44
|
|
_02046BEC:
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02046C12
|
|
_02046BF4:
|
|
add r0, r5, #0x0
|
|
add r0, #0x90
|
|
ldr r0, [r0, #0x0]
|
|
bl sub_0205DF9C
|
|
cmp r0, #0x0
|
|
beq _02046C12
|
|
ldr r0, [r5, #0x34]
|
|
bl sub_020587B0
|
|
add r0, r4, #0x0
|
|
bl sub_020469A4
|
|
mov r0, #0x1
|
|
pop {r4-r6, pc}
|
|
_02046C12:
|
|
mov r0, #0x0
|
|
pop {r4-r6, pc}
|
|
nop
|
|
_02046C18: .word sub_0204837C
|
|
|
|
thumb_func_start sub_02046C1C
|
|
sub_02046C1C: ; 0x02046C1C
|
|
push {r4-r7, lr}
|
|
sub sp, #0xc
|
|
add r7, r0, #0x0
|
|
bl sub_02046528
|
|
add r6, r0, #0x0
|
|
add r0, r7, #0x0
|
|
bl sub_0204652C
|
|
add r5, r0, #0x0
|
|
add r0, r7, #0x0
|
|
bl sub_02046530
|
|
add r4, r0, #0x0
|
|
ldr r0, [r6, #0xc]
|
|
bl Save_LocalFieldData_Get
|
|
bl sub_02034E24
|
|
str r0, [sp, #0x0]
|
|
ldr r0, [r4, #0x0]
|
|
cmp r0, #0x7
|
|
bls _02046C4C
|
|
b _02046DA0
|
|
_02046C4C:
|
|
add r0, r0, r0
|
|
add r0, pc
|
|
ldrh r0, [r0, #0x6]
|
|
lsl r0, r0, #0x10
|
|
asr r0, r0, #0x10
|
|
add pc, r0
|
|
_02046C58: ; jump table (using 16-bit offset)
|
|
.short _02046C68 - _02046C58 - 2; case 0
|
|
.short _02046C8C - _02046C58 - 2; case 1
|
|
.short _02046C9A - _02046C58 - 2; case 2
|
|
.short _02046CAA - _02046C58 - 2; case 3
|
|
.short _02046D0E - _02046C58 - 2; case 4
|
|
.short _02046D1C - _02046C58 - 2; case 5
|
|
.short _02046D30 - _02046C58 - 2; case 6
|
|
.short _02046D94 - _02046C58 - 2; case 7
|
|
_02046C68:
|
|
ldr r0, [r6, #0x34]
|
|
bl sub_02058780
|
|
ldr r0, [r6, #0xc]
|
|
bl Save_GameStats_Get
|
|
mov r1, #0x7
|
|
bl GameStats_Inc
|
|
ldr r1, [r5, #0x4]
|
|
ldr r2, [r5, #0x8]
|
|
add r0, r7, #0x0
|
|
bl sub_0204AEF8
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02046DA0
|
|
_02046C8C:
|
|
add r0, r7, #0x0
|
|
bl sub_0204AF3C
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02046DA0
|
|
_02046C9A:
|
|
ldr r1, [r5, #0x10]
|
|
add r0, r7, #0x0
|
|
bl sub_02046584
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02046DA0
|
|
_02046CAA:
|
|
ldr r0, [r5, #0x10]
|
|
add r1, r6, #0x0
|
|
bl sub_020465E4
|
|
ldr r0, [r5, #0x10]
|
|
ldr r0, [r0, #0x14]
|
|
cmp r0, #0x4
|
|
bne _02046CD4
|
|
ldr r0, [r6, #0xc]
|
|
bl sub_02022504
|
|
str r0, [sp, #0x4]
|
|
ldr r0, [r5, #0x10]
|
|
mov r1, #0x0
|
|
ldr r0, [r0, #0x8]
|
|
bl GetPartyMonByIndex
|
|
add r1, r0, #0x0
|
|
ldr r0, [sp, #0x4]
|
|
bl sub_02060FE0
|
|
_02046CD4:
|
|
ldr r1, [r5, #0x10]
|
|
add r0, r6, #0x0
|
|
bl sub_020472F4
|
|
ldr r0, [sp, #0x0]
|
|
ldrh r0, [r0, #0x0]
|
|
cmp r0, #0x0
|
|
bne _02046CFE
|
|
ldr r0, [r5, #0x10]
|
|
ldr r0, [r0, #0x14]
|
|
cmp r0, #0x4
|
|
beq _02046CFE
|
|
ldr r0, [r6, #0xc]
|
|
bl Save_LocalFieldData_Get
|
|
bl LocalFieldData_GetDynamicWarp
|
|
add r1, r0, #0x0
|
|
add r0, r7, #0x0
|
|
bl sub_02049160
|
|
_02046CFE:
|
|
ldr r1, [r5, #0x10]
|
|
add r0, r6, #0x0
|
|
bl sub_020473CC
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02046DA0
|
|
_02046D0E:
|
|
add r0, r7, #0x0
|
|
bl sub_0204AF84
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02046DA0
|
|
_02046D1C:
|
|
ldr r0, [r6, #0x34]
|
|
bl sub_020587B0
|
|
add r0, r7, #0x0
|
|
bl sub_0204B00C
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02046DA0
|
|
_02046D30:
|
|
ldr r0, [sp, #0x0]
|
|
ldrh r0, [r0, #0x0]
|
|
cmp r0, #0x0
|
|
bne _02046D5C
|
|
ldr r0, [r5, #0x10]
|
|
ldr r0, [r0, #0x14]
|
|
cmp r0, #0x4
|
|
bne _02046D4E
|
|
mov r2, #0x0
|
|
ldr r1, _02046DA8 ; =0x00002262
|
|
add r0, r7, #0x0
|
|
add r3, r2, #0x0
|
|
bl sub_02038CD8
|
|
b _02046D8C
|
|
_02046D4E:
|
|
mov r2, #0x0
|
|
ldr r1, _02046DAC ; =0x00002269
|
|
add r0, r7, #0x0
|
|
add r3, r2, #0x0
|
|
bl sub_02038CD8
|
|
b _02046D8C
|
|
_02046D5C:
|
|
ldr r0, [r6, #0xc]
|
|
bl GetStoragePCPointer
|
|
str r0, [sp, #0x8]
|
|
ldr r0, [r6, #0xc]
|
|
bl SaveArray_PlayerParty_Get
|
|
add r5, r0, #0x0
|
|
ldr r0, [sp, #0x8]
|
|
bl PCStorage_FindFirstBoxWithEmptySlot
|
|
cmp r0, #0x12
|
|
bne _02046D8C
|
|
add r0, r5, #0x0
|
|
bl GetPartyCount
|
|
cmp r0, #0x6
|
|
bne _02046D8C
|
|
mov r2, #0x0
|
|
ldr r1, _02046DB0 ; =0x00002276
|
|
add r0, r7, #0x0
|
|
add r3, r2, #0x0
|
|
bl sub_02038CD8
|
|
_02046D8C:
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02046DA0
|
|
_02046D94:
|
|
add r0, r5, #0x0
|
|
bl sub_020465B8
|
|
add sp, #0xc
|
|
mov r0, #0x1
|
|
pop {r4-r7, pc}
|
|
_02046DA0:
|
|
mov r0, #0x0
|
|
add sp, #0xc
|
|
pop {r4-r7, pc}
|
|
nop
|
|
_02046DA8: .word 0x00002262
|
|
_02046DAC: .word 0x00002269
|
|
_02046DB0: .word 0x00002276
|
|
|
|
thumb_func_start SetupAndStartHoneyTreeBattle
|
|
SetupAndStartHoneyTreeBattle: ; 0x02046DB4
|
|
push {r3-r7, lr}
|
|
add r7, r0, #0x0
|
|
add r6, r1, #0x0
|
|
bl sub_02046528
|
|
add r5, r0, #0x0
|
|
add r0, #0x90
|
|
ldr r0, [r0, #0x0]
|
|
bl sub_0205DD40
|
|
mov r0, #0xb
|
|
mov r1, #0x0
|
|
bl sub_020476CC
|
|
add r1, r5, #0x0
|
|
add r4, r0, #0x0
|
|
bl sub_02047BB0
|
|
mov r0, #0x15
|
|
mov r1, #0x0
|
|
lsl r0, r0, #0x4
|
|
str r1, [r4, r0]
|
|
add r0, r0, #0x4
|
|
str r1, [r4, r0]
|
|
add r0, r5, #0x0
|
|
add r1, r4, #0x0
|
|
bl ov06_0223CCDC
|
|
ldr r0, [r5, #0xc]
|
|
bl Save_GameStats_Get
|
|
mov r1, #0x7
|
|
bl GameStats_Inc
|
|
add r0, r4, #0x0
|
|
bl sub_020475A0
|
|
add r5, r0, #0x0
|
|
add r0, r4, #0x0
|
|
bl sub_020475B0
|
|
add r3, r0, #0x0
|
|
add r0, r7, #0x0
|
|
add r1, r4, #0x0
|
|
add r2, r5, #0x0
|
|
str r6, [sp, #0x0]
|
|
bl sub_020466FC
|
|
pop {r3-r7, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start SetupAndStartWildBattle
|
|
SetupAndStartWildBattle: ; 0x02046E18
|
|
push {r4-r7, lr}
|
|
sub sp, #0xc
|
|
str r0, [sp, #0x4]
|
|
add r7, r1, #0x0
|
|
str r2, [sp, #0x8]
|
|
add r6, r3, #0x0
|
|
bl sub_02046528
|
|
add r5, r0, #0x0
|
|
add r0, #0x90
|
|
ldr r0, [r0, #0x0]
|
|
bl sub_0205DD40
|
|
mov r0, #0xb
|
|
mov r1, #0x0
|
|
bl sub_020476CC
|
|
add r1, r5, #0x0
|
|
add r4, r0, #0x0
|
|
bl sub_02047BB0
|
|
ldr r2, [sp, #0x8]
|
|
add r0, r5, #0x0
|
|
add r1, r7, #0x0
|
|
add r3, r4, #0x0
|
|
bl ov06_0223CD7C
|
|
ldr r0, [sp, #0x20]
|
|
cmp r0, #0x0
|
|
beq _02046E60
|
|
mov r1, #0x63
|
|
lsl r1, r1, #0x2
|
|
ldr r2, [r4, r1]
|
|
mov r0, #0x8
|
|
orr r0, r2
|
|
str r0, [r4, r1]
|
|
_02046E60:
|
|
ldr r0, [r5, #0xc]
|
|
bl Save_GameStats_Get
|
|
mov r1, #0x7
|
|
bl GameStats_Inc
|
|
add r0, r4, #0x0
|
|
bl sub_020475A0
|
|
add r5, r0, #0x0
|
|
add r0, r4, #0x0
|
|
bl sub_020475B0
|
|
add r3, r0, #0x0
|
|
ldr r0, [sp, #0x4]
|
|
add r1, r4, #0x0
|
|
add r2, r5, #0x0
|
|
str r6, [sp, #0x0]
|
|
bl sub_020466FC
|
|
add sp, #0xc
|
|
pop {r4-r7, pc}
|
|
|
|
thumb_func_start sub_02046E8C
|
|
sub_02046E8C: ; 0x02046E8C
|
|
push {r3-r7, lr}
|
|
add r7, r0, #0x0
|
|
bl sub_02046528
|
|
add r6, r0, #0x0
|
|
add r0, r7, #0x0
|
|
bl sub_0204652C
|
|
add r5, r0, #0x0
|
|
add r0, r7, #0x0
|
|
bl sub_02046530
|
|
add r4, r0, #0x0
|
|
ldr r0, [r4, #0x0]
|
|
cmp r0, #0x6
|
|
bhi _02046F6C
|
|
add r0, r0, r0
|
|
add r0, pc
|
|
ldrh r0, [r0, #0x6]
|
|
lsl r0, r0, #0x10
|
|
asr r0, r0, #0x10
|
|
add pc, r0
|
|
_02046EB8: ; jump table (using 16-bit offset)
|
|
.short _02046EC6 - _02046EB8 - 2; case 0
|
|
.short _02046EEA - _02046EB8 - 2; case 1
|
|
.short _02046EF8 - _02046EB8 - 2; case 2
|
|
.short _02046F08 - _02046EB8 - 2; case 3
|
|
.short _02046F28 - _02046EB8 - 2; case 4
|
|
.short _02046F36 - _02046EB8 - 2; case 5
|
|
.short _02046F4A - _02046EB8 - 2; case 6
|
|
_02046EC6:
|
|
ldr r0, [r6, #0x34]
|
|
bl sub_02058780
|
|
ldr r0, [r6, #0xc]
|
|
bl Save_GameStats_Get
|
|
mov r1, #0x7
|
|
bl GameStats_Inc
|
|
ldr r1, [r5, #0x4]
|
|
ldr r2, [r5, #0x8]
|
|
add r0, r7, #0x0
|
|
bl sub_0204AEF8
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02046F6C
|
|
_02046EEA:
|
|
add r0, r7, #0x0
|
|
bl sub_0204AF3C
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02046F6C
|
|
_02046EF8:
|
|
ldr r1, [r5, #0x10]
|
|
add r0, r7, #0x0
|
|
bl sub_02046584
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02046F6C
|
|
_02046F08:
|
|
ldr r0, [r5, #0x10]
|
|
add r1, r6, #0x0
|
|
bl sub_020465E4
|
|
ldr r1, [r5, #0x10]
|
|
add r0, r6, #0x0
|
|
bl sub_0204BAA0
|
|
ldr r1, [r5, #0x10]
|
|
add r0, r6, #0x0
|
|
bl sub_020472F4
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02046F6C
|
|
_02046F28:
|
|
add r0, r7, #0x0
|
|
bl sub_0204AF84
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02046F6C
|
|
_02046F36:
|
|
ldr r0, [r6, #0x34]
|
|
bl sub_020587B0
|
|
add r0, r7, #0x0
|
|
bl sub_0204B00C
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02046F6C
|
|
_02046F4A:
|
|
add r0, r5, #0x0
|
|
bl sub_020465B8
|
|
add r0, r6, #0x0
|
|
bl sub_0204BAB0
|
|
cmp r0, #0x0
|
|
bne _02046F68
|
|
add r0, r7, #0x0
|
|
mov r1, #0x3
|
|
mov r2, #0x0
|
|
bl sub_02038D10
|
|
mov r0, #0x0
|
|
pop {r3-r7, pc}
|
|
_02046F68:
|
|
mov r0, #0x1
|
|
pop {r3-r7, pc}
|
|
_02046F6C:
|
|
mov r0, #0x0
|
|
pop {r3-r7, pc}
|
|
|
|
thumb_func_start sub_02046F70
|
|
sub_02046F70: ; 0x02046F70
|
|
push {r4-r6, lr}
|
|
add r4, r1, #0x0
|
|
add r5, r0, #0x0
|
|
add r0, r4, #0x0
|
|
bl sub_020475A0
|
|
add r6, r0, #0x0
|
|
add r0, r4, #0x0
|
|
bl sub_020475B0
|
|
add r2, r0, #0x0
|
|
add r0, r4, #0x0
|
|
add r1, r6, #0x0
|
|
mov r3, #0x0
|
|
bl sub_02046594
|
|
add r2, r0, #0x0
|
|
ldr r1, _02046F9C ; =sub_02046E8C
|
|
add r0, r5, #0x0
|
|
bl sub_020463CC
|
|
pop {r4-r6, pc}
|
|
.balign 4
|
|
_02046F9C: .word sub_02046E8C
|
|
|
|
thumb_func_start SetupAndStartFirstBattle
|
|
SetupAndStartFirstBattle: ; 0x02046FA0
|
|
push {r3-r7, lr}
|
|
sub sp, #0x8
|
|
str r0, [sp, #0x4]
|
|
add r6, r1, #0x0
|
|
add r7, r2, #0x0
|
|
bl sub_02046528
|
|
add r5, r0, #0x0
|
|
mov r0, #0xb
|
|
mov r1, #0x0
|
|
bl sub_020476CC
|
|
add r4, r0, #0x0
|
|
add r1, r5, #0x0
|
|
bl sub_02047BB0
|
|
add r0, r5, #0x0
|
|
add r1, r6, #0x0
|
|
add r2, r7, #0x0
|
|
add r3, r4, #0x0
|
|
bl ov06_0223CD7C
|
|
mov r0, #0x63
|
|
mov r1, #0x1
|
|
lsl r0, r0, #0x2
|
|
str r1, [r4, r0]
|
|
ldr r0, [r5, #0xc]
|
|
bl Save_GameStats_Get
|
|
mov r1, #0x7
|
|
bl GameStats_Inc
|
|
add r0, r4, #0x0
|
|
bl sub_020475A0
|
|
add r5, r0, #0x0
|
|
add r0, r4, #0x0
|
|
bl sub_020475B0
|
|
add r3, r0, #0x0
|
|
mov r0, #0x0
|
|
str r0, [sp, #0x0]
|
|
ldr r0, [sp, #0x4]
|
|
add r1, r4, #0x0
|
|
add r2, r5, #0x0
|
|
bl sub_020466FC
|
|
add sp, #0x8
|
|
pop {r3-r7, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_02047004
|
|
sub_02047004: ; 0x02047004
|
|
push {r3-r7, lr}
|
|
add r5, r0, #0x0
|
|
bl sub_0204652C
|
|
add r6, r0, #0x0
|
|
add r0, r5, #0x0
|
|
bl sub_02046528
|
|
add r7, r0, #0x0
|
|
add r0, r5, #0x0
|
|
bl sub_02046530
|
|
add r4, r0, #0x0
|
|
ldr r0, [r4, #0x0]
|
|
cmp r0, #0x6
|
|
bhi _020470A6
|
|
add r1, r0, r0
|
|
add r1, pc
|
|
ldrh r1, [r1, #0x6]
|
|
lsl r1, r1, #0x10
|
|
asr r1, r1, #0x10
|
|
add pc, r1
|
|
_02047030: ; jump table (using 16-bit offset)
|
|
.short _0204703E - _02047030 - 2; case 0
|
|
.short _02047056 - _02047030 - 2; case 1
|
|
.short _02047064 - _02047030 - 2; case 2
|
|
.short _02047074 - _02047030 - 2; case 3
|
|
.short _0204707A - _02047030 - 2; case 4
|
|
.short _02047088 - _02047030 - 2; case 5
|
|
.short _0204709C - _02047030 - 2; case 6
|
|
_0204703E:
|
|
ldr r0, [r7, #0x34]
|
|
bl sub_02058780
|
|
ldr r1, [r6, #0x4]
|
|
ldr r2, [r6, #0x8]
|
|
add r0, r5, #0x0
|
|
bl sub_0204AEF8
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _020470A6
|
|
_02047056:
|
|
add r0, r5, #0x0
|
|
bl sub_0204AF3C
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _020470A6
|
|
_02047064:
|
|
ldr r1, [r6, #0x10]
|
|
add r0, r5, #0x0
|
|
bl sub_02046584
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _020470A6
|
|
_02047074:
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _020470A6
|
|
_0204707A:
|
|
add r0, r5, #0x0
|
|
bl sub_0204AF84
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _020470A6
|
|
_02047088:
|
|
ldr r0, [r7, #0x34]
|
|
bl sub_020587B0
|
|
add r0, r5, #0x0
|
|
bl sub_0204B00C
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _020470A6
|
|
_0204709C:
|
|
add r0, r6, #0x0
|
|
bl sub_020465B8
|
|
mov r0, #0x1
|
|
pop {r3-r7, pc}
|
|
_020470A6:
|
|
mov r0, #0x0
|
|
pop {r3-r7, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start SetupAndStartTutorialBattle
|
|
SetupAndStartTutorialBattle: ; 0x020470AC
|
|
push {r4-r6, lr}
|
|
add r5, r0, #0x0
|
|
bl sub_02046528
|
|
add r1, r0, #0x0
|
|
mov r0, #0xb
|
|
bl sub_02047814
|
|
add r4, r0, #0x0
|
|
bl sub_020475A0
|
|
add r6, r0, #0x0
|
|
add r0, r4, #0x0
|
|
bl sub_020475B0
|
|
add r2, r0, #0x0
|
|
add r0, r4, #0x0
|
|
add r1, r6, #0x0
|
|
mov r3, #0x0
|
|
bl sub_02046594
|
|
add r2, r0, #0x0
|
|
ldr r1, _020470E4 ; =sub_02047004
|
|
add r0, r5, #0x0
|
|
bl sub_0204640C
|
|
pop {r4-r6, pc}
|
|
nop
|
|
_020470E4: .word sub_02047004
|
|
|
|
thumb_func_start sub_020470E8
|
|
sub_020470E8: ; 0x020470E8
|
|
push {r4-r7, lr}
|
|
sub sp, #0xc
|
|
str r0, [sp, #0x4]
|
|
add r6, r1, #0x0
|
|
add r5, r2, #0x0
|
|
str r3, [sp, #0x8]
|
|
bl sub_02046528
|
|
add r7, r0, #0x0
|
|
cmp r5, #0x0
|
|
beq _02047110
|
|
cmp r6, r5
|
|
beq _02047110
|
|
ldr r0, [sp, #0x8]
|
|
cmp r0, #0x0
|
|
bne _0204710C
|
|
mov r4, #0x13
|
|
b _0204711A
|
|
_0204710C:
|
|
mov r4, #0x4b
|
|
b _0204711A
|
|
_02047110:
|
|
cmp r6, r5
|
|
bne _02047118
|
|
mov r4, #0x3
|
|
b _0204711A
|
|
_02047118:
|
|
mov r4, #0x1
|
|
_0204711A:
|
|
add r0, r7, #0x0
|
|
add r0, #0x90
|
|
ldr r0, [r0, #0x0]
|
|
bl sub_0205DD40
|
|
mov r0, #0xb
|
|
add r1, r4, #0x0
|
|
bl sub_020476CC
|
|
add r4, r0, #0x0
|
|
add r1, r7, #0x0
|
|
bl sub_02047BB0
|
|
str r6, [r4, #0x1c]
|
|
ldr r0, [sp, #0x8]
|
|
str r5, [r4, #0x24]
|
|
str r0, [r4, #0x20]
|
|
ldr r1, [r7, #0xc]
|
|
ldr r2, [sp, #0x20]
|
|
add r0, r4, #0x0
|
|
bl EnemyTrainerSet_Init
|
|
ldr r0, [r7, #0xc]
|
|
bl Save_GameStats_Get
|
|
mov r1, #0x8
|
|
bl GameStats_Inc
|
|
add r0, r4, #0x0
|
|
bl sub_020475A0
|
|
add r5, r0, #0x0
|
|
add r0, r4, #0x0
|
|
bl sub_020475B0
|
|
add r3, r0, #0x0
|
|
ldr r0, [sp, #0x24]
|
|
add r1, r4, #0x0
|
|
str r0, [sp, #0x0]
|
|
ldr r0, [sp, #0x4]
|
|
add r2, r5, #0x0
|
|
bl sub_020466FC
|
|
add sp, #0xc
|
|
pop {r4-r7, pc}
|
|
|
|
thumb_func_start sub_02047174
|
|
sub_02047174: ; 0x02047174
|
|
push {r3-r7, lr}
|
|
add r5, r2, #0x0
|
|
add r7, r0, #0x0
|
|
add r4, r1, #0x0
|
|
bl sub_02046528
|
|
add r6, r0, #0x0
|
|
mov r0, #0xb
|
|
add r1, r5, #0x0
|
|
bl sub_020476CC
|
|
add r5, r0, #0x0
|
|
add r1, r6, #0x0
|
|
add r2, r4, #0x0
|
|
bl sub_02047F1C
|
|
add r0, r5, #0x0
|
|
bl sub_020475A0
|
|
add r4, r0, #0x0
|
|
add r0, r5, #0x0
|
|
bl sub_020475B0
|
|
add r2, r0, #0x0
|
|
add r0, r5, #0x0
|
|
add r1, r4, #0x0
|
|
mov r3, #0x0
|
|
bl sub_02046594
|
|
add r2, r0, #0x0
|
|
ldr r1, _020471BC ; =sub_02046758
|
|
add r0, r7, #0x0
|
|
bl sub_0204640C
|
|
pop {r3-r7, pc}
|
|
nop
|
|
_020471BC: .word sub_02046758
|
|
|
|
thumb_func_start sub_020471C0
|
|
sub_020471C0: ; 0x020471C0
|
|
push {r3-r7, lr}
|
|
str r0, [sp, #0x0]
|
|
add r5, r1, #0x0
|
|
add r6, r2, #0x0
|
|
add r4, r3, #0x0
|
|
bl sub_02046528
|
|
add r7, r0, #0x0
|
|
cmp r4, #0x0
|
|
beq _020471DE
|
|
mov r0, #0xb
|
|
mov r1, #0x5
|
|
bl sub_020476CC
|
|
b _020471E6
|
|
_020471DE:
|
|
mov r0, #0xb
|
|
mov r1, #0x7
|
|
bl sub_020476CC
|
|
_020471E6:
|
|
add r4, r0, #0x0
|
|
add r0, r4, #0x0
|
|
add r1, r7, #0x0
|
|
add r2, r6, #0x0
|
|
bl sub_02047BC0
|
|
add r0, r4, #0x0
|
|
bl sub_020475A0
|
|
add r6, r0, #0x0
|
|
add r0, r4, #0x0
|
|
bl sub_020475B0
|
|
add r2, r0, #0x0
|
|
add r0, r4, #0x0
|
|
add r1, r6, #0x0
|
|
mov r3, #0x0
|
|
bl sub_02046594
|
|
add r2, r0, #0x0
|
|
ldr r0, [sp, #0x0]
|
|
ldr r1, _0204721C ; =sub_020467FC
|
|
str r5, [r2, #0xc]
|
|
bl sub_0204640C
|
|
pop {r3-r7, pc}
|
|
nop
|
|
_0204721C: .word sub_020467FC
|
|
|
|
thumb_func_start sub_02047220
|
|
sub_02047220: ; 0x02047220
|
|
push {r3-r7, lr}
|
|
add r5, r0, #0x0
|
|
bl sub_02046528
|
|
add r6, r0, #0x0
|
|
add r0, r5, #0x0
|
|
bl sub_0204652C
|
|
add r7, r0, #0x0
|
|
add r0, r5, #0x0
|
|
bl sub_02046530
|
|
add r4, r0, #0x0
|
|
ldr r0, [r4, #0x0]
|
|
cmp r0, #0x0
|
|
beq _02047246
|
|
cmp r0, #0x1
|
|
beq _02047258
|
|
b _02047262
|
|
_02047246:
|
|
ldr r1, _02047268 ; =sub_02046758
|
|
add r0, r5, #0x0
|
|
add r2, r7, #0x0
|
|
bl sub_0204640C
|
|
ldr r0, [r4, #0x0]
|
|
add r0, r0, #0x1
|
|
str r0, [r4, #0x0]
|
|
b _02047262
|
|
_02047258:
|
|
add r0, r6, #0x0
|
|
bl sub_0204FF5C
|
|
mov r0, #0x1
|
|
pop {r3-r7, pc}
|
|
_02047262:
|
|
mov r0, #0x0
|
|
pop {r3-r7, pc}
|
|
nop
|
|
_02047268: .word sub_02046758
|
|
|
|
thumb_func_start sub_0204726C
|
|
sub_0204726C: ; 0x0204726C
|
|
push {r4-r6, lr}
|
|
add r5, r0, #0x0
|
|
add r6, r1, #0x0
|
|
mov r0, #0xb
|
|
add r1, r2, #0x0
|
|
bl sub_020476CC
|
|
add r4, r0, #0x0
|
|
add r1, r5, #0x0
|
|
add r2, r6, #0x0
|
|
bl sub_02047F1C
|
|
add r0, r4, #0x0
|
|
bl sub_020475A0
|
|
add r6, r0, #0x0
|
|
add r0, r4, #0x0
|
|
bl sub_020475B0
|
|
add r2, r0, #0x0
|
|
add r0, r4, #0x0
|
|
add r1, r6, #0x0
|
|
mov r3, #0x0
|
|
bl sub_02046594
|
|
add r2, r0, #0x0
|
|
ldr r1, _020472AC ; =sub_02047220
|
|
add r0, r5, #0x0
|
|
bl sub_020463CC
|
|
pop {r4-r6, pc}
|
|
nop
|
|
_020472AC: .word sub_02047220
|
|
|
|
thumb_func_start sub_020472B0
|
|
sub_020472B0: ; 0x020472B0
|
|
push {r4-r6, lr}
|
|
add r5, r0, #0x0
|
|
add r6, r1, #0x0
|
|
mov r0, #0xb
|
|
add r1, r2, #0x0
|
|
bl sub_020476CC
|
|
add r4, r0, #0x0
|
|
add r1, r5, #0x0
|
|
add r2, r6, #0x0
|
|
mov r3, #0x0
|
|
bl sub_02047D48
|
|
add r0, r4, #0x0
|
|
bl sub_020475A0
|
|
add r6, r0, #0x0
|
|
add r0, r4, #0x0
|
|
bl sub_020475B0
|
|
add r2, r0, #0x0
|
|
add r0, r4, #0x0
|
|
add r1, r6, #0x0
|
|
mov r3, #0x0
|
|
bl sub_02046594
|
|
add r2, r0, #0x0
|
|
ldr r1, _020472F0 ; =sub_02047220
|
|
add r0, r5, #0x0
|
|
bl sub_020463CC
|
|
pop {r4-r6, pc}
|
|
.balign 4
|
|
_020472F0: .word sub_02047220
|
|
|
|
thumb_func_start sub_020472F4
|
|
sub_020472F4: ; 0x020472F4
|
|
push {r3-r5, lr}
|
|
add r4, r0, #0x0
|
|
ldr r0, [r1, #0x0]
|
|
mov r3, #0x4
|
|
ldr r2, [r1, #0x14]
|
|
tst r3, r0
|
|
bne _020473C8
|
|
mov r3, #0x80
|
|
add r5, r0, #0x0
|
|
tst r5, r3
|
|
bne _020473C8
|
|
cmp r0, #0x0
|
|
beq _02047318
|
|
add r3, #0x80
|
|
cmp r0, r3
|
|
beq _02047318
|
|
cmp r0, #0x4a
|
|
bne _02047364
|
|
_02047318:
|
|
cmp r2, #0x1
|
|
bne _0204732A
|
|
ldr r0, [r4, #0xc]
|
|
bl Save_GameStats_Get
|
|
mov r1, #0x8
|
|
bl GameStats_AddSpecial
|
|
pop {r3-r5, pc}
|
|
_0204732A:
|
|
cmp r2, #0x4
|
|
bne _020473C8
|
|
ldr r0, [r1, #0x8]
|
|
mov r1, #0x0
|
|
bl GetPartyMonByIndex
|
|
mov r1, #0x5
|
|
mov r2, #0x0
|
|
bl GetMonData
|
|
add r1, r0, #0x0
|
|
mov r0, #0x0
|
|
bl sub_0206BB48
|
|
cmp r0, #0x0
|
|
ldr r0, [r4, #0xc]
|
|
beq _02047358
|
|
bl Save_GameStats_Get
|
|
mov r1, #0x9
|
|
bl GameStats_AddSpecial
|
|
pop {r3-r5, pc}
|
|
_02047358:
|
|
bl Save_GameStats_Get
|
|
mov r1, #0xa
|
|
bl GameStats_AddSpecial
|
|
pop {r3-r5, pc}
|
|
_02047364:
|
|
mov r3, #0x1
|
|
tst r3, r0
|
|
bne _02047370
|
|
mov r3, #0x10
|
|
tst r3, r0
|
|
beq _02047382
|
|
_02047370:
|
|
cmp r2, #0x1
|
|
bne _020473C8
|
|
ldr r0, [r4, #0xc]
|
|
bl Save_GameStats_Get
|
|
mov r1, #0xb
|
|
bl GameStats_AddSpecial
|
|
pop {r3-r5, pc}
|
|
_02047382:
|
|
mov r3, #0x20
|
|
add r5, r0, #0x0
|
|
tst r5, r3
|
|
bne _02047390
|
|
lsl r3, r3, #0x4
|
|
tst r0, r3
|
|
beq _020473C8
|
|
_02047390:
|
|
cmp r2, #0x4
|
|
bne _020473C8
|
|
ldr r0, [r1, #0x8]
|
|
mov r1, #0x0
|
|
bl GetPartyMonByIndex
|
|
mov r1, #0x5
|
|
mov r2, #0x0
|
|
bl GetMonData
|
|
add r1, r0, #0x0
|
|
mov r0, #0x0
|
|
bl sub_0206BB48
|
|
cmp r0, #0x0
|
|
ldr r0, [r4, #0xc]
|
|
beq _020473BE
|
|
bl Save_GameStats_Get
|
|
mov r1, #0x9
|
|
bl GameStats_AddSpecial
|
|
pop {r3-r5, pc}
|
|
_020473BE:
|
|
bl Save_GameStats_Get
|
|
mov r1, #0xa
|
|
bl GameStats_AddSpecial
|
|
_020473C8:
|
|
pop {r3-r5, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_020473CC
|
|
sub_020473CC: ; 0x020473CC
|
|
push {r4-r7, lr}
|
|
sub sp, #0xc
|
|
add r4, r1, #0x0
|
|
add r5, r0, #0x0
|
|
ldr r0, [r4, #0x0]
|
|
mov r2, #0x4
|
|
ldr r1, [r4, #0x14]
|
|
tst r2, r0
|
|
bne _020473EC
|
|
mov r3, #0x80
|
|
add r2, r0, #0x0
|
|
tst r2, r3
|
|
bne _020473EC
|
|
lsl r2, r3, #0x2
|
|
tst r2, r0
|
|
beq _020473EE
|
|
_020473EC:
|
|
b _020474FC
|
|
_020473EE:
|
|
cmp r0, #0x0
|
|
beq _02047400
|
|
add r3, #0x80
|
|
cmp r0, r3
|
|
beq _02047400
|
|
cmp r0, #0x4a
|
|
beq _02047400
|
|
cmp r0, #0x20
|
|
bne _020474D2
|
|
_02047400:
|
|
cmp r1, #0x1
|
|
bne _02047470
|
|
add r0, r5, #0x0
|
|
add r0, #0x76
|
|
ldrh r0, [r0, #0x0]
|
|
add r1, r0, #0x1
|
|
add r0, r5, #0x0
|
|
add r0, #0x76
|
|
strh r1, [r0, #0x0]
|
|
add r0, r5, #0x0
|
|
add r0, #0x76
|
|
ldrh r0, [r0, #0x0]
|
|
cmp r0, #0x5
|
|
blo _020474FC
|
|
ldr r0, [r4, #0x8]
|
|
mov r1, #0x0
|
|
bl GetPartyMonByIndex
|
|
add r6, r0, #0x0
|
|
ldr r0, [r5, #0xc]
|
|
bl Save_PlayerData_GetIGTAddr
|
|
str r0, [sp, #0x4]
|
|
add r0, r6, #0x0
|
|
mov r1, #0x5
|
|
mov r2, #0x0
|
|
bl GetMonData
|
|
add r7, r0, #0x0
|
|
add r0, r6, #0x0
|
|
mov r1, #0x6f
|
|
mov r2, #0x0
|
|
bl GetMonData
|
|
add r2, r0, #0x0
|
|
mov r3, #0xb
|
|
str r3, [sp, #0x0]
|
|
lsl r3, r3, #0x5
|
|
ldr r3, [r4, r3]
|
|
lsl r1, r7, #0x10
|
|
lsl r2, r2, #0x18
|
|
lsl r3, r3, #0x18
|
|
ldr r0, [sp, #0x4]
|
|
lsr r1, r1, #0x10
|
|
lsr r2, r2, #0x18
|
|
lsr r3, r3, #0x18
|
|
bl sub_0202920C
|
|
add r5, #0x98
|
|
add r1, r0, #0x0
|
|
ldr r0, [r5, #0x0]
|
|
mov r2, #0x2
|
|
bl sub_02028AD4
|
|
add sp, #0xc
|
|
pop {r4-r7, pc}
|
|
_02047470:
|
|
cmp r1, #0x4
|
|
bne _020474FC
|
|
mov r0, #0x17
|
|
lsl r0, r0, #0x4
|
|
ldr r0, [r4, r0]
|
|
mov r1, #0x0
|
|
lsl r0, r0, #0x2
|
|
add r0, r4, r0
|
|
ldr r0, [r0, #0x4]
|
|
bl GetPartyMonByIndex
|
|
add r6, r0, #0x0
|
|
ldr r0, [r5, #0xc]
|
|
bl Save_PlayerData_GetIGTAddr
|
|
str r0, [sp, #0x8]
|
|
add r0, r6, #0x0
|
|
mov r1, #0x5
|
|
mov r2, #0x0
|
|
bl GetMonData
|
|
add r7, r0, #0x0
|
|
add r0, r6, #0x0
|
|
mov r1, #0x6f
|
|
mov r2, #0x0
|
|
bl GetMonData
|
|
add r2, r0, #0x0
|
|
mov r3, #0xb
|
|
str r3, [sp, #0x0]
|
|
lsl r3, r3, #0x5
|
|
ldr r3, [r4, r3]
|
|
lsl r1, r7, #0x10
|
|
lsl r2, r2, #0x18
|
|
lsl r3, r3, #0x18
|
|
ldr r0, [sp, #0x8]
|
|
lsr r1, r1, #0x10
|
|
lsr r2, r2, #0x18
|
|
lsr r3, r3, #0x18
|
|
bl sub_0202918C
|
|
add r5, #0x98
|
|
add r1, r0, #0x0
|
|
ldr r0, [r5, #0x0]
|
|
mov r2, #0x2
|
|
bl sub_02028AD4
|
|
add sp, #0xc
|
|
pop {r4-r7, pc}
|
|
_020474D2:
|
|
mov r2, #0x1
|
|
tst r2, r0
|
|
bne _020474DE
|
|
mov r2, #0x10
|
|
tst r0, r2
|
|
beq _020474FC
|
|
_020474DE:
|
|
cmp r1, #0x1
|
|
bne _020474FC
|
|
ldr r1, [r5, #0x1c]
|
|
add r0, r5, #0x0
|
|
ldr r1, [r1, #0x0]
|
|
ldr r2, [r4, #0x1c]
|
|
add r0, #0x98
|
|
lsl r1, r1, #0x10
|
|
lsl r2, r2, #0x10
|
|
ldr r0, [r0, #0x0]
|
|
lsr r1, r1, #0x10
|
|
lsr r2, r2, #0x10
|
|
mov r3, #0xb
|
|
bl sub_020299DC
|
|
_020474FC:
|
|
add sp, #0xc
|
|
pop {r4-r7, pc}
|