sub_8063578

This commit is contained in:
DizzyEggg 2025-03-01 15:31:02 +01:00
parent 168b82cafd
commit dca54337fe
2 changed files with 358 additions and 876 deletions

View File

@ -6,881 +6,6 @@
.text
thumb_func_start sub_8062F90
sub_8062F90:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0xE8
mov r8, r0
str r3, [sp, 0xDC]
lsls r1, 24
lsrs r1, 24
str r1, [sp, 0xD4]
lsls r2, 24
lsrs r2, 24
str r2, [sp, 0xD8]
ldr r0, [r0, 0x70]
mov r9, r0
bl GetLeader
ldr r0, [r0, 0x70]
str r0, [sp, 0xE4]
add r4, sp, 0x70
adds r0, r4, 0
movs r1, 0
movs r2, 0x60
bl memset
movs r0, 0x6
str r0, [sp, 0x74]
add r0, sp, 0x78
movs r6, 0
movs r1, 0x2
strh r1, [r0]
strh r1, [r0, 0x2]
add r1, sp, 0x7C
movs r0, 0x12
strh r0, [r1]
mov r0, sp
adds r0, 0x7E
movs r1, 0x10
strh r1, [r0]
add r0, sp, 0x80
strh r1, [r0]
add r5, sp, 0xD0
str r5, [sp, 0x84]
movs r1, 0x3
str r1, [sp, 0x8C]
add r0, sp, 0xA0
str r1, [r0, 0x4]
add r0, sp, 0xB8
str r1, [r0, 0x4]
add r0, sp, 0x10
adds r1, r4, 0
movs r2, 0x60
bl memcpy
ldr r0, _080630A4
str r6, [r0]
movs r3, 0
ldr r7, [sp, 0xE4]
adds r7, 0x44
_08063008:
lsls r0, r3, 3
movs r1, 0x8C
lsls r1, 1
adds r0, r1
mov r1, r9
adds r2, r1, r0
ldrb r1, [r2]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _08063032
ldrb r1, [r2, 0x1]
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _08063032
movs r0, 0xFD
ands r0, r1
strb r0, [r2, 0x1]
ldr r0, _080630A4
str r3, [r0]
_08063032:
adds r3, 0x1
cmp r3, 0x3
ble _08063008
_08063038:
movs r5, 0
movs r2, 0
str r2, [sp, 0xE0]
mov r10, r2
add r0, sp, 0xD0
str r0, [sp]
add r1, sp, 0x70
str r1, [sp, 0x4]
ldr r2, [sp, 0xDC]
str r2, [sp, 0x8]
ldr r0, [sp, 0x108]
str r0, [sp, 0xC]
mov r0, r8
mov r1, r9
ldr r2, [sp, 0xD4]
add r3, sp, 0x10
bl sub_80633E4
_0806305C:
ldr r0, _080630A8
add r1, sp, 0x70
bl AddMenuCursorSprite_
movs r0, 0x1E
bl sub_803E46C
ldr r2, _080630AC
ldrh r1, [r2, 0x4]
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _080630DE
ldrh r0, [r2]
lsrs r0, 8
movs r1, 0x1
ands r0, r1
ldr r1, _080630A8
movs r2, 0x18
ldrsh r6, [r1, r2]
cmp r0, 0
beq _080630BA
movs r0, 0x8C
lsls r0, 1
add r0, r9
adds r1, r6, 0
bl unk_SetMoveToLastInLinkedSequence4
ldr r1, _080630A4
str r0, [r1]
cmp r6, r0
beq _080630B0
movs r0, 0
bl sub_8083CE0
b _080630B4
.align 2, 0
_080630A4: .4byte gUnknown_202F2D8
_080630A8: .4byte gUnknown_202EE10
_080630AC: .4byte gRealInputs
_080630B0:
bl sub_8083D30
_080630B4:
movs r0, 0x1
mov r10, r0
b _080631F4
_080630BA:
movs r0, 0x8C
lsls r0, 1
add r0, r9
adds r1, r6, 0
bl unk_FindMoveEnabledForAIAfter4
adds r1, r0, 0
ldr r0, _08063118
bl sub_8013780
ldr r1, _08063118
movs r2, 0x18
ldrsh r0, [r1, r2]
cmp r6, r0
beq _080630DE
movs r0, 0
bl sub_8083CE0
_080630DE:
ldr r2, _0806311C
ldrh r1, [r2, 0x4]
movs r0, 0x40
ands r0, r1
cmp r0, 0
beq _08063150
ldrh r0, [r2]
lsrs r0, 8
movs r1, 0x1
ands r0, r1
ldr r4, _08063118
movs r1, 0x18
ldrsh r6, [r4, r1]
cmp r0, 0
beq _0806312E
movs r0, 0x8C
lsls r0, 1
add r0, r9
adds r1, r6, 0
bl unk_SetMoveToFirstInLinkedSequence4
ldr r1, _08063120
str r0, [r1]
cmp r6, r0
beq _08063124
movs r0, 0
bl sub_8083CE0
b _08063128
.align 2, 0
_08063118: .4byte gUnknown_202EE10
_0806311C: .4byte gRealInputs
_08063120: .4byte gUnknown_202F2D8
_08063124:
bl sub_8083D30
_08063128:
movs r2, 0x1
mov r10, r2
b _080631F4
_0806312E:
movs r0, 0x8C
lsls r0, 1
add r0, r9
adds r1, r6, 0
bl sub_8092DB8
adds r1, r0, 0
adds r0, r4, 0
bl sub_8013780
movs r1, 0x18
ldrsh r0, [r4, r1]
cmp r6, r0
beq _08063150
movs r0, 0
bl sub_8083CE0
_08063150:
ldr r4, _08063174
ldrh r1, [r4, 0x4]
movs r0, 0x10
ands r0, r1
cmp r0, 0
bne _08063168
ldr r6, _08063178
adds r0, r6, 0
adds r0, 0x2B
ldrb r0, [r0]
cmp r0, 0
beq _0806317C
_08063168:
adds r0, r7, 0
movs r1, 0x6
bl SetMonsterActionFields
b _080631F4
.align 2, 0
_08063174: .4byte gRealInputs
_08063178: .4byte gUnknown_202EE10
_0806317C:
movs r0, 0x20
ands r0, r1
cmp r0, 0
bne _0806318E
adds r0, r6, 0
adds r0, 0x2C
ldrb r0, [r0]
cmp r0, 0
beq _08063198
_0806318E:
adds r0, r7, 0
movs r1, 0x7
bl SetMonsterActionFields
b _080631F4
_08063198:
bl sub_8062D88
ldrh r1, [r4, 0x2]
ands r0, r1
cmp r0, 0
bne _080631AE
adds r0, r6, 0
adds r0, 0x29
ldrb r0, [r0]
cmp r0, 0
beq _080631C8
_080631AE:
ldr r2, [sp, 0xD4]
cmp r2, 0
beq _080631C2
ldrh r0, [r4]
lsrs r0, 8
movs r1, 0x1
ands r0, r1
cmp r0, 0
beq _080631C2
movs r5, 0x3
_080631C2:
bl sub_8083D08
b _080631F4
_080631C8:
movs r0, 0x8
ands r0, r1
cmp r0, 0
bne _0806321C
movs r0, 0x4
ands r0, r1
cmp r0, 0
bne _08063214
movs r0, 0x2
ands r0, r1
cmp r0, 0
bne _080631EC
adds r0, r6, 0
adds r0, 0x2A
ldrb r0, [r0]
cmp r0, 0
bne _080631EC
b _0806305C
_080631EC:
bl sub_8083D30
movs r0, 0x1
str r0, [sp, 0xE0]
_080631F4:
ldr r4, _08063210
adds r0, r4, 0
bl AddMenuCursorSprite
movs r0, 0x1E
bl sub_803E46C
ldrh r0, [r7]
subs r0, 0x6
lsls r0, 16
lsrs r0, 16
cmp r0, 0x1
bhi _08063224
b _080633CC
.align 2, 0
_08063210: .4byte gUnknown_202EE10
_08063214:
movs r5, 0x2
bl sub_8083D44
b _080631F4
_0806321C:
movs r5, 0x1
bl sub_8083D44
b _080631F4
_08063224:
mov r1, r10
cmp r1, 0
beq _0806322C
b _08063038
_0806322C:
ldr r2, [sp, 0xE0]
cmp r2, 0
beq _08063234
b _080633B6
_08063234:
ldr r6, _08063270
movs r1, 0x18
ldrsh r0, [r4, r1]
str r0, [r6]
cmp r5, 0x1
bne _08063274
adds r0, r7, 0
movs r1, 0x1D
bl SetMonsterActionFields
mov r0, r8
adds r0, 0x24
ldrb r1, [r0]
ldr r0, [sp, 0xE4]
adds r0, 0x48
strb r1, [r0]
ldr r1, [r6]
ldr r0, [sp, 0xE4]
adds r0, 0x50
strb r1, [r0]
movs r0, 0
movs r1, 0
bl sub_803EAF0
movs r0, 0x8
movs r1, 0x1B
bl sub_803E708
b _080633B6
.align 2, 0
_08063270: .4byte gUnknown_202F2D8
_08063274:
mov r0, r8
ldr r1, [sp, 0xD4]
ldr r2, [sp, 0xD8]
bl sub_8063698
cmp r5, 0x3
bne _08063298
movs r0, 0x20
bl sub_8044FB4
adds r6, r0, 0
bl sub_8044F3C
lsls r0, 24
cmp r0, 0
bne _080632CC
movs r0, 0x21
b _080632BC
_08063298:
cmp r5, 0x2
bne _080632DE
mov r2, r9
ldrb r0, [r2, 0x7]
cmp r0, 0
beq _080632BA
movs r0, 0x1E
bl sub_8044FB4
adds r6, r0, 0
bl sub_8044F3C
lsls r0, 24
cmp r0, 0
bne _080632CC
movs r0, 0x33
b _080632BC
_080632BA:
movs r0, 0x1F
_080632BC:
bl sub_8044FB4
adds r6, r0, 0
bl sub_8044F3C
lsls r0, 24
cmp r0, 0
beq _080632DE
_080632CC:
mov r0, r8
bl GetTeamMemberEntityIndex
adds r2, r0, 0
adds r0, r7, 0
adds r1, r6, 0
bl sub_80637BC
b _080633B6
_080632DE:
movs r0, 0x2
bl sub_8009524
add r0, sp, 0x10
movs r1, 0x16
bl sub_805FC30
ldr r6, _0806337C
ldr r5, _08063380
movs r0, 0x2A
adds r0, r6
mov r10, r0
adds r4, r7, 0
_080632F8:
adds r0, r6, 0
bl AddMenuCursorSprite
movs r0, 0x1B
bl sub_803E46C
ldrh r1, [r5, 0x4]
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _0806331C
movs r0, 0x1
bl sub_8083CE0
adds r0, r6, 0
movs r1, 0x1
bl sub_80136E0
_0806331C:
ldrh r1, [r5, 0x4]
movs r0, 0x40
ands r0, r1
cmp r0, 0
beq _08063334
movs r0, 0x1
bl sub_8083CE0
adds r0, r6, 0
movs r1, 0x1
bl sub_8013744
_08063334:
bl sub_8062D88
ldrh r1, [r5, 0x2]
ands r1, r0
cmp r1, 0
bne _0806334A
adds r0, r6, 0
adds r0, 0x29
ldrb r0, [r0]
cmp r0, 0
beq _08063388
_0806334A:
movs r1, 0x18
ldrsh r0, [r6, r1]
bl sub_8044F3C
lsls r0, 24
cmp r0, 0
beq _08063384
mov r0, r8
bl GetTeamMemberEntityIndex
adds r1, r0, 0
adds r0, r4, 0
bl sub_80637A4
ldrh r0, [r4]
subs r0, 0x14
lsls r0, 16
lsrs r0, 16
cmp r0, 0x1
bls _08063376
bl sub_8083D08
_08063376:
movs r6, 0
b _080633A0
.align 2, 0
_0806337C: .4byte gUnknown_202EE10
_08063380: .4byte gRealInputs
_08063384:
bl sub_8083D30
_08063388:
ldrh r1, [r5, 0x2]
movs r0, 0x2
ands r0, r1
cmp r0, 0
bne _0806339A
mov r2, r10
ldrb r0, [r2]
cmp r0, 0
beq _080632F8
_0806339A:
bl sub_8083D30
movs r6, 0x1
_080633A0:
ldr r0, _080633E0
bl AddMenuCursorSprite
movs r0, 0x1B
bl sub_803E46C
cmp r6, 0x1
bne _080633B2
b _08063038
_080633B2:
movs r0, 0
str r0, [sp, 0xE0]
_080633B6:
movs r0, 0x1
cmp r0, 0
beq _080633CC
movs r0, 0
movs r1, 0
bl sub_803EAF0
movs r0, 0x8
movs r1, 0x1E
bl sub_803E708
_080633CC:
ldr r0, [sp, 0xE0]
add sp, 0xE8
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_080633E0: .4byte gUnknown_202EE10
thumb_func_end sub_8062F90
thumb_func_start sub_80633E4
sub_80633E4:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x24
str r0, [sp, 0x20]
adds r7, r1, 0
adds r4, r3, 0
ldr r0, [sp, 0x44]
mov r8, r0
lsls r2, 24
lsrs r2, 24
mov r10, r2
add r1, sp, 0x8
ldr r0, _08063508
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
ldm r0!, {r2,r3,r6}
stm r1!, {r2,r3,r6}
movs r0, 0
add r5, sp, 0x50
ldrb r6, [r5]
mov r5, r8
strb r6, [r5]
add r6, sp, 0x4C
ldrb r6, [r6]
strb r6, [r5, 0x1]
strb r0, [r5, 0x3]
movs r6, 0
ldr r5, _0806350C
ldr r0, _08063510
mov r9, r0
movs r1, 0x1
mov r12, r1
movs r3, 0x8C
lsls r3, 1
adds r2, r7, r3
movs r3, 0x3
_08063432:
ldrb r1, [r2]
mov r0, r12
ands r0, r1
cmp r0, 0
beq _0806343E
adds r6, 0x1
_0806343E:
adds r2, 0x8
subs r3, 0x1
cmp r3, 0
bge _08063432
movs r3, 0x4
mov r1, r9
ldr r0, [r1]
movs r1, 0
strh r0, [r5, 0x18]
strh r6, [r5, 0x1A]
strh r3, [r5, 0x1C]
add r2, sp, 0x4C
ldrh r2, [r2]
strh r2, [r5, 0x1E]
add r3, sp, 0x50
ldrh r3, [r3]
strh r3, [r5, 0x20]
strh r1, [r5, 0x4]
movs r0, 0x10
strh r0, [r5, 0x6]
strh r1, [r5, 0x14]
str r1, [r5]
adds r0, r5, 0
adds r0, 0x28
bl sub_801317C
movs r0, 0x4
movs r1, 0xC
bl sub_80095E4
adds r0, 0x2
strh r0, [r4, 0x10]
strh r0, [r4, 0xE]
movs r0, 0xD
mov r6, r8
strb r0, [r6, 0x2]
movs r0, 0x2
strh r0, [r4, 0x8]
adds r1, r4, 0
adds r1, 0x18
adds r0, r4, 0
adds r0, 0x48
ldm r0!, {r2,r3,r6}
stm r1!, {r2,r3,r6}
ldm r0!, {r2,r3,r6}
stm r1!, {r2,r3,r6}
adds r1, r4, 0
adds r1, 0x30
add r0, sp, 0x8
ldm r0!, {r2,r3,r6}
stm r1!, {r2,r3,r6}
ldm r0!, {r2,r3,r6}
stm r1!, {r2,r3,r6}
adds r0, r4, 0
movs r1, 0x1
bl sub_803ECB4
adds r0, r5, 0
movs r1, 0
bl sub_80137B0
ldr r1, _08063514
movs r2, 0
ldrsh r0, [r1, r2]
adds r0, 0x10
lsls r0, 3
strh r0, [r5, 0xC]
movs r3, 0x2
ldrsh r0, [r1, r3]
adds r0, 0x1
lsls r0, 3
subs r0, 0x2
strh r0, [r5, 0xE]
ldr r0, _08063518
adds r1, r7, 0
movs r2, 0
bl SetMessageArgument_2
movs r3, 0
movs r5, 0x1
_080634DE:
lsls r1, r3, 3
movs r4, 0x8C
lsls r4, 1
adds r1, r4
adds r1, r7, r1
ldr r6, [sp, 0x48]
adds r4, r6, r3
movs r0, 0
strb r0, [r4]
ldrb r1, [r1]
adds r2, r5, 0
ands r2, r1
cmp r2, 0
bne _0806351C
ldr r1, _0806350C
movs r4, 0x18
ldrsh r0, [r1, r4]
cmp r0, r3
bne _08063526
strh r2, [r1, 0x18]
b _08063526
.align 2, 0
_08063508: .4byte gUnknown_8106CAC
_0806350C: .4byte gUnknown_202EE10
_08063510: .4byte gUnknown_202F2D8
_08063514: .4byte gUnknown_2027370
_08063518: .4byte gFormatBuffer_Monsters
_0806351C:
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _08063526
strb r5, [r4]
_08063526:
adds r3, 0x1
cmp r3, 0x3
ble _080634DE
movs r5, 0x8C
lsls r5, 1
adds r2, r7, r5
mov r6, r10
str r6, [sp]
ldr r0, [sp, 0x4C]
str r0, [sp, 0x4]
movs r0, 0x4
ldr r1, [sp, 0x20]
movs r3, 0
bl sub_8063578
movs r0, 0x2
bl sub_80073B8
ldr r0, _08063574
ldr r2, [r0]
movs r0, 0
str r0, [sp]
movs r0, 0x4
movs r1, 0
movs r3, 0x2
bl PrintFormattedStringOnWindow
movs r0, 0x2
bl sub_80073E0
add sp, 0x24
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08063574: .4byte gUnknown_80FDFE8
thumb_func_end sub_80633E4
thumb_func_start sub_8063578
sub_8063578:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x20
str r0, [sp, 0x10]
str r1, [sp, 0x14]
adds r5, r2, 0
mov r8, r3
ldr r0, [sp, 0x40]
ldr r4, [sp, 0x44]
lsls r0, 24
lsrs r0, 24
str r0, [sp, 0x18]
ldr r0, [r1, 0x70]
str r0, [sp, 0x1C]
mov r0, r8
bl sub_80073B8
ldr r0, _080635FC
ldr r1, [sp, 0x14]
movs r2, 0
bl SubstitutePlaceholderStringTags
lsls r4, 3
adds r4, 0xA
ldr r0, _08063600
ldr r2, [r0]
movs r0, 0
str r0, [sp]
adds r0, r4, 0
movs r1, 0
mov r3, r8
bl PrintFormattedStringOnWindow
movs r1, 0
mov r9, r1
ldr r0, [sp, 0x10]
cmp r9, r0
bge _08063676
add r1, sp, 0x4
mov r10, r1
adds r7, r5, 0
_080635D0:
movs r0, 0
str r0, [sp, 0x4]
movs r0, 0x6A
str r0, [sp, 0x8]
movs r0, 0
mov r1, r10
strb r0, [r1, 0x8]
mov r1, sp
ldrb r0, [r1, 0x18]
mov r1, r10
strb r0, [r1, 0x9]
ldrb r1, [r7]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _08063668
ldr r1, [sp, 0x1C]
ldrb r0, [r1, 0x7]
cmp r0, 0
beq _08063604
movs r0, 0x2
b _08063606
.align 2, 0
_080635FC: .4byte gFormatBuffer_Monsters
_08063600: .4byte gUnknown_80FE978
_08063604:
movs r0, 0x4
_08063606:
str r0, [sp, 0x4]
ldr r0, [sp, 0x14]
adds r1, r5, 0
movs r2, 0x1
bl CanMonsterUseMove
add r1, sp, 0x4
movs r2, 0
lsls r0, 24
cmp r0, 0
bne _0806361E
movs r2, 0x1
_0806361E:
strb r2, [r1, 0x8]
ldr r0, _0806368C
adds r1, r5, 0
add r2, sp, 0x4
bl BufferMoveName
ldr r0, _08063690
mov r1, r9
bl GetMenuEntryYCoord
adds r4, r0, 0
ldrb r1, [r7]
movs r0, 0x2
ands r0, r1
movs r6, 0xD
cmp r0, 0
bne _08063658
movs r6, 0x8
mov r0, r9
cmp r0, 0
beq _08063658
subs r2, r4, 0x2
movs r0, 0x7
str r0, [sp]
mov r0, r8
movs r1, 0xC
movs r3, 0x78
bl sub_80078A4
_08063658:
movs r1, 0
str r1, [sp]
adds r0, r6, 0
adds r1, r4, 0
ldr r2, _08063694
mov r3, r8
bl PrintFormattedStringOnWindow
_08063668:
adds r7, 0x8
adds r5, 0x8
movs r0, 0x1
add r9, r0
ldr r1, [sp, 0x10]
cmp r9, r1
blt _080635D0
_08063676:
mov r0, r8
bl sub_80073E0
add sp, 0x20
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0806368C: .4byte gFormatBuffer_Items
_08063690: .4byte gUnknown_202EE10
_08063694: .4byte gUnknown_8106CC4
thumb_func_end sub_8063578
thumb_func_start sub_8063698
sub_8063698:
push {r4-r7,lr}

View File

@ -116,7 +116,7 @@ void ShowTacticsMenu(ActionContainer *a0);
void sub_804A728(DungeonPos *pos, s32 a1, u8 a2, u8 a3);
extern bool8 sub_8071A8C(Entity *pokemon);
extern void sub_80643AC(Entity *pokemon);
extern u8 sub_8062F90(Entity *, u32, u32, u32, u32);
extern bool8 sub_8062F90(Entity * entity, u8 a1, u8 a2, s32 a3, s32 a4);
extern u8 gUnknown_202EE00;
extern Entity *gLeaderPointer;
@ -4115,4 +4115,361 @@ void sub_8062D8C(ActionContainer *a0)
sub_804A728(&entityOrg->pos, 0, 1, 1);
}
extern s32 gUnknown_202F2D8;
extern s32 sub_8044FB4(u16 param_1);
void sub_80633E4(Entity *entity, EntityInfo *entInfo, u8 a2, Windows *windows, WindowHeader *header, u8 *arg5, s32 arg6, s32 arg7);
void sub_8063698(Entity *entity, u8 a1, u8 a2);
void sub_80637BC(ActionContainer *a0, s32 a1, s32 a2);
void sub_80637A4(ActionContainer *a0, s32 a1);
bool8 sub_8062F90(Entity * entity, u8 a1, u8 a2, s32 a3, s32 a4)
{
s32 i;
bool8 ret;
EntityInfo *entInfo = GetEntInfo(entity);
bool8 unkBool = TRUE;
EntityInfo *leaderInfo = GetEntInfo(GetLeader());
WindowHeader header;
Windows windows = {
.id = {
[0] = {
.type = WINDOW_TYPE_WITH_HEADER,
.pos = {2, 2},
.width = 18,
.height = 16,
.unk10 = 16,
.unk12 = 0,
.unk14 = &header,
},
[1] = WINDOW_DUMMY,
[2] = WINDOW_DUMMY,
[3] = WINDOW_DUMMY,
}
};
u8 unk[0x60];
bool8 r10;
s32 r5;
bool8 bPress;
gUnknown_202F2D8 = 0;
for (i = 0; i < MAX_MON_MOVES; i++) {
Move *move = &entInfo->moves.moves[i];
if (MoveFlagExists(move) && move->moveFlags2 & 2) {
move->moveFlags2 &= ~(2);
gUnknown_202F2D8 = i;
}
}
while (1) {
r5 = 0;
ret = FALSE;
r10 = FALSE;
sub_80633E4(entity, entInfo, a1, &windows, &header, unk, a3, a4);
while (1) {
AddMenuCursorSprite_(&gUnknown_202EE10, unk);
sub_803E46C(0x1E);
if (gRealInputs.repeated & DPAD_DOWN) {
bool8 rHeld = (gRealInputs.held & R_BUTTON) != 0;
s32 id = gUnknown_202EE10.menuIndex;
if (rHeld) {
gUnknown_202F2D8 = unk_SetMoveToLastInLinkedSequence4(entInfo->moves.moves, id);
if (id != gUnknown_202F2D8) {
sub_8083CE0(0);
}
else {
sub_8083D30();
}
r10 = TRUE;
break;
}
else {
sub_8013780(&gUnknown_202EE10, unk_FindMoveEnabledForAIAfter4(entInfo->moves.moves, id));
if (id != gUnknown_202EE10.menuIndex) {
sub_8083CE0(0);
}
}
}
if (gRealInputs.repeated & DPAD_UP) {
bool8 rHeld = (gRealInputs.held & R_BUTTON) != 0;
s32 id = gUnknown_202EE10.menuIndex;
if (rHeld) {
gUnknown_202F2D8 = unk_SetMoveToFirstInLinkedSequence4(entInfo->moves.moves, id);
if (id != gUnknown_202F2D8) {
sub_8083CE0(0);
}
else {
sub_8083D30();
}
r10 = TRUE;
break;
}
else {
sub_8013780(&gUnknown_202EE10, sub_8092DB8(entInfo->moves.moves, id));
if (id != gUnknown_202EE10.menuIndex) {
sub_8083CE0(0);
}
}
}
if ((gRealInputs.repeated & DPAD_RIGHT) || gUnknown_202EE10.unk28.dpad_right) {
SetMonsterActionFields(&leaderInfo->action, 6);
break;
}
if ((gRealInputs.repeated & DPAD_LEFT) || gUnknown_202EE10.unk28.dpad_left) {
SetMonsterActionFields(&leaderInfo->action, 7);
break;
}
if ((gRealInputs.pressed & sub_8062D88()) || gUnknown_202EE10.unk28.a_button) {
if (a1) {
bool8 rHeld = (gRealInputs.held & R_BUTTON) != 0;
if (rHeld) {
r5 = 3;
}
}
sub_8083D08();
break;
}
if (gRealInputs.pressed & START_BUTTON) {
r5 = 1;
sub_8083D44();
break;
}
if (gRealInputs.pressed & SELECT_BUTTON) {
r5 = 2;
sub_8083D44();
break;
}
// Fixme: r0/r1 regswap...
{
u32 pressed = B_BUTTON;
pressed &= gRealInputs.pressed;
if ((pressed) || gUnknown_202EE10.unk28.b_button) {
sub_8083D30();
ret = TRUE;
break;
}
}
}
AddMenuCursorSprite(&gUnknown_202EE10);
sub_803E46C(0x1E);
if (leaderInfo->action.action == 6 || leaderInfo->action.action == 7) {
unkBool = FALSE;
break;
}
if (r10)
continue;
if (ret)
break;
gUnknown_202F2D8 = gUnknown_202EE10.menuIndex;
if (r5 == 1) {
SetMonsterActionFields(&leaderInfo->action, 0x1D);
leaderInfo->action.actionParameters[0].actionUseIndex = entity->unk24;
leaderInfo->action.actionParameters[1].actionUseIndex = gUnknown_202F2D8;
sub_803EAF0(0, NULL);
sub_803E708(8, 0x1B);
ret = FALSE;
break;
}
sub_8063698(entity, a1, a2);
if (r5 == 3) {
s32 r6 = sub_8044FB4(0x20);
if (!sub_8044F3C(r6)) {
r6 = sub_8044FB4(0x21);
if (sub_8044F3C(r6)) {
sub_80637BC(&leaderInfo->action, r6, GetTeamMemberEntityIndex(entity));
break;
}
}
else {
sub_80637BC(&leaderInfo->action, r6, GetTeamMemberEntityIndex(entity));
break;
}
}
else if (r5 == 2) {
if (entInfo->isTeamLeader) {
s32 r6 = sub_8044FB4(0x1E);
if (!sub_8044F3C(r6)) {
r6 = sub_8044FB4(0x33);
if (sub_8044F3C(r6)) {
sub_80637BC(&leaderInfo->action, r6, GetTeamMemberEntityIndex(entity));
break;
}
}
else {
sub_80637BC(&leaderInfo->action, r6, GetTeamMemberEntityIndex(entity));
break;
}
}
else {
s32 r6 = sub_8044FB4(0x1F);
if (sub_8044F3C(r6)) {
sub_80637BC(&leaderInfo->action, r6, GetTeamMemberEntityIndex(entity));
break;
}
}
}
sub_8009524(2);
sub_805FC30(&windows, 0x16);
while (1) {
AddMenuCursorSprite(&gUnknown_202EE10);
sub_803E46C(0x1B);
if (gRealInputs.repeated & DPAD_DOWN) {
sub_8083CE0(1);
sub_80136E0(&gUnknown_202EE10, 1);
}
if (gRealInputs.repeated & DPAD_UP) {
sub_8083CE0(1);
sub_8013744(&gUnknown_202EE10, 1);
}
if ((gRealInputs.pressed & sub_8062D88()) || gUnknown_202EE10.unk28.a_button) {
if (sub_8044F3C(gUnknown_202EE10.menuIndex)) {
sub_80637A4(&leaderInfo->action, GetTeamMemberEntityIndex(entity));
if (leaderInfo->action.action != 20 && leaderInfo->action.action != 21) {
sub_8083D08();
}
bPress = FALSE;
break;
}
sub_8083D30();
}
if ((gRealInputs.pressed & B_BUTTON) || gUnknown_202EE10.unk28.b_button) {
sub_8083D30();
bPress = TRUE;
break;
}
}
AddMenuCursorSprite(&gUnknown_202EE10);
sub_803E46C(0x1B);
if (bPress != TRUE) {
ret = 0;
break;
}
}
if (unkBool) {
sub_803EAF0(0, NULL);
sub_803E708(8, 0x1E);
}
return ret;
}
extern const Window gUnknown_8106CAC;
void sub_8063578(s32 a0, Entity *entity, Moves *moves, s32 a3, u8 a4, s32 a5);
extern const u8 *const gUnknown_80FDFE8;
void sub_80633E4(Entity *entity, EntityInfo *entInfo, u8 a2, Windows *windows, WindowHeader *header, u8 *arg5, s32 arg6, s32 arg7)
{
s32 i, movesCount;
Window windowNew = gUnknown_8106CAC;
header->f0 = arg7;
header->f1 = arg6;
header->f3 = 0;
movesCount = 0;
for (i = 0; i < MAX_MON_MOVES; i++) {
Move *move = &entInfo->moves.moves[i];
if (MoveFlagExists(move)) {
movesCount++;
}
}
gUnknown_202EE10.menuIndex = gUnknown_202F2D8;
gUnknown_202EE10.unk1A = movesCount;
gUnknown_202EE10.unk1C = 4;
gUnknown_202EE10.unk1E = arg6;
gUnknown_202EE10.unk20 = arg7;
gUnknown_202EE10.unk4 = 0;
gUnknown_202EE10.firstEntryY = 16;
gUnknown_202EE10.unk14.x = 0;
gUnknown_202EE10.unk0 = 0;
sub_801317C(&gUnknown_202EE10.unk28);
windows->id[0].height = windows->id[0].unk10 = sub_80095E4(4, 0xC) + 2;
header->f2 = 13;
windows->id[0].pos.x = 2;
windows->id[1] = windows->id[3];
windows->id[2] = windowNew;
sub_803ECB4(windows, TRUE);
sub_80137B0(&gUnknown_202EE10, 0);
gUnknown_202EE10.unkC = (gUnknown_2027370[0].unk0 + 16) * 8;
gUnknown_202EE10.unkE = ((gUnknown_2027370[0].unk2 + 1) * 8) - 2;
SetMessageArgument_2(gFormatBuffer_Monsters[0], entInfo, 0);
for (i = 0; i < MAX_MON_MOVES; i++) {
Move *move = &entInfo->moves.moves[i];
arg5[i] = 0;
if (!MoveFlagExists(move)) {
if (gUnknown_202EE10.menuIndex == i) {
gUnknown_202EE10.menuIndex = 0;
}
}
else if (MoveFlagLinkChain(move)) {
arg5[i] = 1;
}
}
sub_8063578(4, entity, &entInfo->moves, 0, a2, arg6);
sub_80073B8(2);
PrintFormattedStringOnWindow(4, 0, gUnknown_80FDFE8, 2, '\0');
sub_80073E0(2);
}
extern const u8 gUnknown_8106CC4[];
void sub_8063578(s32 count, Entity *entity, Moves *moves, s32 windowId, u8 a4, s32 a5)
{
s32 i;
EntityInfo *entInfo = GetEntInfo(entity);
sub_80073B8(windowId);
SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[0], entity, 0);
PrintFormattedStringOnWindow((a5 * 8) + 10, 0, gUnknown_80FE978, windowId, '\0');
for (i = 0; i < count; i++) {
s32 x, y;
unkStruct_80928C0 movStruct = {0, 106, 0, a4};
Move *move = &moves->moves[i];
if (MoveFlagExists(move)) {
if (entInfo->isTeamLeader) {
movStruct.unk0 = 2;
}
else {
movStruct.unk0 = 4;
}
movStruct.unk8 = (CanMonsterUseMove(entity, move, TRUE) == FALSE);
BufferMoveName(gFormatBuffer_Items[0], move, &movStruct);
y = GetMenuEntryYCoord(&gUnknown_202EE10, i);
if (MoveFlagLinkChain(move)) {
x = 13;
}
else {
x = 8;
if (i != 0) {
sub_80078A4(windowId, 12, y - 2, 120, 7);
}
}
PrintFormattedStringOnWindow(x, y, gUnknown_8106CC4, windowId, '\0');
}
}
sub_80073E0(windowId);
}
//