mirror of
https://github.com/pret/pmd-red.git
synced 2026-04-21 22:48:18 -05:00
sub_8067A80
This commit is contained in:
parent
1ce273c082
commit
afb9fbeaf8
|
|
@ -5,927 +5,6 @@
|
|||
|
||||
.text
|
||||
|
||||
|
||||
|
||||
thumb_func_start sub_8067794
|
||||
sub_8067794:
|
||||
push {r4-r7,lr}
|
||||
sub sp, 0x40
|
||||
adds r7, r1, 0
|
||||
ldr r4, [r7, 0x70]
|
||||
cmp r7, 0
|
||||
bne _080677B4
|
||||
ldr r0, _080677B0
|
||||
ldr r1, [r0]
|
||||
movs r0, 0
|
||||
movs r2, 0x1
|
||||
bl DisplayDungeonMessage
|
||||
b _0806786C
|
||||
.align 2, 0
|
||||
_080677B0: .4byte gCannotFarewell
|
||||
_080677B4:
|
||||
ldr r0, _080677F0
|
||||
adds r1, r7, 0
|
||||
movs r2, 0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
ldr r0, _080677F4
|
||||
ldr r5, [r0]
|
||||
ldr r0, _080677F8
|
||||
ldr r6, [r0]
|
||||
ldrb r2, [r4, 0xA]
|
||||
cmp r2, 0
|
||||
blt _08067834
|
||||
ldr r1, _080677FC
|
||||
movs r0, 0x64
|
||||
muls r0, r2
|
||||
ldr r2, _08067800
|
||||
adds r0, r2
|
||||
ldr r1, [r1]
|
||||
adds r4, r1, r0
|
||||
movs r1, 0xA
|
||||
ldrsh r0, [r4, r1]
|
||||
bl sub_806A564
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0806780C
|
||||
ldr r0, _08067804
|
||||
ldr r5, [r0]
|
||||
ldr r0, _08067808
|
||||
b _08067832
|
||||
.align 2, 0
|
||||
_080677F0: .4byte gFormatBuffer_Monsters
|
||||
_080677F4: .4byte gSayFarewellQ
|
||||
_080677F8: .4byte gUnknown_80F913C
|
||||
_080677FC: .4byte gRecruitedPokemonRef
|
||||
_08067800: .4byte 0x00008df8
|
||||
_08067804: .4byte gUnknown_80F9114
|
||||
_08067808: .4byte gMonDisappointedAndLeft
|
||||
_0806780C:
|
||||
movs r2, 0xA
|
||||
ldrsh r0, [r4, r2]
|
||||
bl sub_806A58C
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08067834
|
||||
bl IsMakuhitaTrainingMaze
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0806782C
|
||||
ldr r0, _08067828
|
||||
b _0806782E
|
||||
.align 2, 0
|
||||
_08067828: .4byte gSendMonBackQ
|
||||
_0806782C:
|
||||
ldr r0, _08067874
|
||||
_0806782E:
|
||||
ldr r5, [r0]
|
||||
ldr r0, _08067878
|
||||
_08067832:
|
||||
ldr r6, [r0]
|
||||
_08067834:
|
||||
movs r0, 0
|
||||
adds r1, r5, 0
|
||||
movs r2, 0
|
||||
bl DisplayDungeonYesNoMessage
|
||||
cmp r0, 0x1
|
||||
bne _0806786C
|
||||
ldr r4, _0806787C
|
||||
mov r0, sp
|
||||
adds r1, r4, 0
|
||||
movs r2, 0x40
|
||||
bl strncpy
|
||||
ldr r1, _08067880
|
||||
adds r0, r7, 0
|
||||
movs r2, 0
|
||||
bl sub_8068FE0
|
||||
adds r0, r4, 0
|
||||
mov r1, sp
|
||||
movs r2, 0x40
|
||||
bl strncpy
|
||||
movs r0, 0
|
||||
adds r1, r6, 0
|
||||
movs r2, 0x1
|
||||
bl DisplayDungeonMessage
|
||||
_0806786C:
|
||||
add sp, 0x40
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08067874: .4byte gSendMonBackWithItemQ
|
||||
_08067878: .4byte gMonWentBack
|
||||
_0806787C: .4byte gFormatBuffer_Monsters
|
||||
_08067880: .4byte 0x0000021d
|
||||
thumb_func_end sub_8067794
|
||||
|
||||
thumb_func_start HandleUseMovePlayerAction
|
||||
HandleUseMovePlayerAction:
|
||||
push {r4-r6,lr}
|
||||
sub sp, 0x4
|
||||
adds r5, r0, 0
|
||||
movs r6, 0
|
||||
b _0806789A
|
||||
_0806788E:
|
||||
ldr r1, _08067900
|
||||
adds r0, r4, r1
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _080678C6
|
||||
adds r6, 0x1
|
||||
_0806789A:
|
||||
adds r0, r5, 0
|
||||
movs r1, 0x1
|
||||
bl sub_8070828
|
||||
cmp r6, r0
|
||||
bge _080678C6
|
||||
ldr r4, [r5, 0x70]
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x50
|
||||
ldrb r1, [r0]
|
||||
movs r0, 0
|
||||
str r0, [sp]
|
||||
adds r0, r5, 0
|
||||
movs r2, 0x1
|
||||
movs r3, 0
|
||||
bl sub_8055A00
|
||||
bl sub_8044B28
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0806788E
|
||||
_080678C6:
|
||||
adds r0, r5, 0
|
||||
movs r1, 0x1
|
||||
bl sub_8057588
|
||||
bl sub_8044B28
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _080678F6
|
||||
adds r0, r5, 0
|
||||
bl EntityIsValid
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _080678F0
|
||||
ldr r0, [r5, 0x70]
|
||||
adds r0, 0x50
|
||||
ldrb r1, [r0]
|
||||
adds r0, r5, 0
|
||||
bl sub_806A9B4
|
||||
_080678F0:
|
||||
adds r0, r5, 0
|
||||
bl sub_806A1B0
|
||||
_080678F6:
|
||||
add sp, 0x4
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08067900: .4byte 0x00000159
|
||||
thumb_func_end HandleUseMovePlayerAction
|
||||
|
||||
thumb_func_start sub_8067904
|
||||
sub_8067904:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x14
|
||||
adds r5, r0, 0
|
||||
lsls r1, 16
|
||||
lsrs r1, 16
|
||||
mov r9, r1
|
||||
ldr r6, [r5, 0x70]
|
||||
ldr r1, _08067940
|
||||
movs r0, 0
|
||||
str r0, [r1]
|
||||
add r0, sp, 0x8
|
||||
mov r1, r9
|
||||
bl InitPokemonMove
|
||||
adds r0, r6, 0
|
||||
adds r0, 0xBC
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x1
|
||||
bne _0806794C
|
||||
ldr r0, _08067944
|
||||
adds r1, r5, 0
|
||||
movs r2, 0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
ldr r0, _08067948
|
||||
b _08067962
|
||||
.align 2, 0
|
||||
_08067940: .4byte gUnknown_202F208
|
||||
_08067944: .4byte gFormatBuffer_Monsters
|
||||
_08067948: .4byte gMonCringing
|
||||
_0806794C:
|
||||
adds r0, r6, 0
|
||||
adds r0, 0xAC
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x4
|
||||
bne _08067974
|
||||
ldr r0, _0806796C
|
||||
adds r1, r5, 0
|
||||
movs r2, 0
|
||||
bl SubstitutePlaceholderStringTags
|
||||
ldr r0, _08067970
|
||||
_08067962:
|
||||
ldr r1, [r0]
|
||||
adds r0, r5, 0
|
||||
bl LogMessageByIdWithPopupCheckUser
|
||||
b _08067A56
|
||||
.align 2, 0
|
||||
_0806796C: .4byte gFormatBuffer_Monsters
|
||||
_08067970: .4byte gMonParalyzed
|
||||
_08067974:
|
||||
movs r0, 0xB0
|
||||
lsls r0, 1
|
||||
movs r1, 0
|
||||
mov r10, r1
|
||||
cmp r9, r0
|
||||
bne _08067984
|
||||
movs r2, 0x1
|
||||
mov r10, r2
|
||||
_08067984:
|
||||
movs r0, 0
|
||||
mov r8, r0
|
||||
movs r7, 0
|
||||
add r4, sp, 0x8
|
||||
b _080679D2
|
||||
_0806798E:
|
||||
movs r1, 0xBC
|
||||
lsls r1, 1
|
||||
adds r0, r6, r1
|
||||
strh r7, [r0]
|
||||
ldrb r0, [r4]
|
||||
movs r1, 0x8
|
||||
orrs r0, r1
|
||||
orrs r0, r7
|
||||
movs r1, 0x4
|
||||
orrs r0, r1
|
||||
strb r0, [r4]
|
||||
movs r0, 0xA
|
||||
strb r0, [r4, 0x4]
|
||||
str r7, [sp]
|
||||
str r4, [sp, 0x4]
|
||||
adds r0, r5, 0
|
||||
mov r1, r10
|
||||
movs r2, 0
|
||||
movs r3, 0
|
||||
bl TryUseChosenMove
|
||||
adds r0, r5, 0
|
||||
bl EntityIsValid
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _080679DE
|
||||
ldr r2, _08067A68
|
||||
adds r0, r6, r2
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _080679DE
|
||||
movs r0, 0x1
|
||||
add r8, r0
|
||||
_080679D2:
|
||||
adds r0, r5, 0
|
||||
movs r1, 0x1
|
||||
bl sub_8070828
|
||||
cmp r8, r0
|
||||
blt _0806798E
|
||||
_080679DE:
|
||||
adds r0, r5, 0
|
||||
bl EntityIsValid
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08067A56
|
||||
movs r0, 0xB0
|
||||
lsls r0, 1
|
||||
cmp r9, r0
|
||||
bne _08067A04
|
||||
ldr r0, _08067A6C
|
||||
ldr r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _08067A04
|
||||
ldr r0, _08067A70
|
||||
ldr r1, [r0]
|
||||
adds r0, r5, 0
|
||||
bl LogMessageByIdWithPopupCheckUser
|
||||
_08067A04:
|
||||
ldrb r0, [r6, 0x7]
|
||||
cmp r0, 0
|
||||
beq _08067A50
|
||||
movs r0, 0xB0
|
||||
lsls r0, 1
|
||||
cmp r9, r0
|
||||
beq _08067A50
|
||||
ldr r4, _08067A74
|
||||
adds r3, r6, 0
|
||||
adds r3, 0x46
|
||||
ldrb r0, [r3]
|
||||
lsls r0, 2
|
||||
adds r0, r4
|
||||
ldrh r0, [r0]
|
||||
ldrh r1, [r5, 0x4]
|
||||
adds r0, r1
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
ldr r2, _08067A78
|
||||
ldr r1, [sp, 0x10]
|
||||
ands r1, r2
|
||||
orrs r1, r0
|
||||
str r1, [sp, 0x10]
|
||||
ldrb r0, [r3]
|
||||
lsls r0, 2
|
||||
adds r0, r4
|
||||
ldrh r0, [r0, 0x2]
|
||||
ldrh r2, [r5, 0x6]
|
||||
adds r0, r2
|
||||
lsls r0, 16
|
||||
ldr r2, _08067A7C
|
||||
ands r1, r2
|
||||
orrs r1, r0
|
||||
str r1, [sp, 0x10]
|
||||
add r0, sp, 0x10
|
||||
movs r1, 0x1
|
||||
bl sub_807FE44
|
||||
_08067A50:
|
||||
adds r0, r5, 0
|
||||
bl sub_8071DA4
|
||||
_08067A56:
|
||||
add sp, 0x14
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08067A68: .4byte 0x00000159
|
||||
_08067A6C: .4byte gUnknown_202F208
|
||||
_08067A70: .4byte gUnknown_80FC690
|
||||
_08067A74: .4byte gAdjacentTileOffsets
|
||||
_08067A78: .4byte 0xffff0000
|
||||
_08067A7C: .4byte 0x0000ffff
|
||||
thumb_func_end sub_8067904
|
||||
|
||||
thumb_func_start sub_8067A80
|
||||
sub_8067A80:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x6C
|
||||
str r1, [sp, 0x68]
|
||||
mov r8, r2
|
||||
mov r9, r3
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
str r0, [sp, 0x64]
|
||||
ldr r1, _08067AC8
|
||||
add r0, sp, 0x4
|
||||
movs r2, 0x60
|
||||
bl memcpy
|
||||
ldr r1, _08067ACC
|
||||
movs r0, 0
|
||||
str r0, [r1]
|
||||
mov r10, r0
|
||||
cmp r10, r8
|
||||
blt _08067AB0
|
||||
b _08067ED8
|
||||
_08067AB0:
|
||||
ldr r5, _08067AD0
|
||||
mov r4, r9
|
||||
mov r3, r8
|
||||
_08067AB6:
|
||||
ldm r4!, {r2}
|
||||
ldrh r1, [r2]
|
||||
adds r0, r5, 0
|
||||
ands r0, r1
|
||||
strh r0, [r2]
|
||||
subs r3, 0x1
|
||||
cmp r3, 0
|
||||
bne _08067AB6
|
||||
b _08067ED8
|
||||
.align 2, 0
|
||||
_08067AC8: .4byte gUnknown_8106DC8
|
||||
_08067ACC: .4byte gUnknown_202F30C
|
||||
_08067AD0: .4byte 0x00007fff
|
||||
_08067AD4:
|
||||
movs r7, 0
|
||||
ldr r1, _08067B98
|
||||
movs r0, 0x1
|
||||
strb r0, [r1]
|
||||
strb r7, [r1, 0x1]
|
||||
movs r0, 0xE
|
||||
strb r0, [r1, 0x2]
|
||||
strb r7, [r1, 0x3]
|
||||
add r0, sp, 0x4
|
||||
movs r1, 0x1
|
||||
bl sub_803ECB4
|
||||
ldr r5, _08067B9C
|
||||
ldr r2, [r5]
|
||||
ldr r0, [sp, 0x68]
|
||||
str r0, [sp]
|
||||
ldr r0, [sp, 0x64]
|
||||
mov r1, r9
|
||||
mov r3, r8
|
||||
bl sub_8067F00
|
||||
ldr r4, _08067BA0
|
||||
mov r0, r8
|
||||
cmp r0, 0x8
|
||||
ble _08067B08
|
||||
movs r0, 0x8
|
||||
_08067B08:
|
||||
strh r0, [r4, 0x1A]
|
||||
mov r1, r10
|
||||
strh r1, [r4, 0x18]
|
||||
movs r0, 0x8
|
||||
strh r0, [r4, 0x1C]
|
||||
strh r7, [r4, 0x1E]
|
||||
strh r7, [r4, 0x20]
|
||||
strh r7, [r4, 0x4]
|
||||
movs r0, 0x12
|
||||
strh r0, [r4, 0x6]
|
||||
strh r7, [r4, 0xC]
|
||||
strh r7, [r4, 0xE]
|
||||
strh r7, [r4, 0x14]
|
||||
str r7, [r4]
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x28
|
||||
bl sub_801317C
|
||||
adds r0, r4, 0
|
||||
movs r1, 0
|
||||
bl sub_80137B0
|
||||
adds r6, r5, 0
|
||||
_08067B36:
|
||||
ldr r0, _08067BA0
|
||||
bl AddMenuCursorSprite
|
||||
movs r5, 0
|
||||
movs r7, 0
|
||||
ldr r0, [r6]
|
||||
mov r2, r8
|
||||
subs r0, r2, r0
|
||||
cmp r0, 0x8
|
||||
ble _08067B50
|
||||
movs r5, 0x1
|
||||
bl sub_80684C4
|
||||
_08067B50:
|
||||
ldr r0, [r6]
|
||||
cmp r0, 0
|
||||
beq _08067B5C
|
||||
movs r7, 0x1
|
||||
bl sub_8068344
|
||||
_08067B5C:
|
||||
movs r0, 0
|
||||
ldr r1, _08067BA4
|
||||
bl sub_8014140
|
||||
adds r4, r0, 0
|
||||
movs r0, 0x37
|
||||
bl sub_803E46C
|
||||
cmp r4, 0x2
|
||||
bne _08067BAC
|
||||
cmp r5, 0
|
||||
beq _08067BAC
|
||||
ldr r0, [r6]
|
||||
mov r3, r8
|
||||
subs r0, r3, r0
|
||||
cmp r0, 0x8
|
||||
ble _08067BF0
|
||||
ldr r5, _08067BA8
|
||||
movs r4, 0x5
|
||||
_08067B82:
|
||||
ldr r1, [r5]
|
||||
movs r0, 0
|
||||
bl _call_via_r1
|
||||
movs r0, 0x37
|
||||
bl sub_803E46C
|
||||
subs r4, 0x1
|
||||
cmp r4, 0
|
||||
bge _08067B82
|
||||
b _08067BEA
|
||||
.align 2, 0
|
||||
_08067B98: .4byte gUnknown_202F308
|
||||
_08067B9C: .4byte gUnknown_202F30C
|
||||
_08067BA0: .4byte gUnknown_202EE10
|
||||
_08067BA4: .4byte gUnknown_8106DA4
|
||||
_08067BA8: .4byte gIwramTextFunc1
|
||||
_08067BAC:
|
||||
ldr r0, _08067BF8
|
||||
ldrh r1, [r0, 0x4]
|
||||
movs r0, 0x80
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _08067C0C
|
||||
movs r0, 0x1
|
||||
bl sub_8083CE0
|
||||
ldr r1, _08067BFC
|
||||
movs r2, 0x18
|
||||
ldrsh r0, [r1, r2]
|
||||
cmp r0, 0x7
|
||||
bne _08067C04
|
||||
ldr r0, [r6]
|
||||
mov r3, r8
|
||||
subs r0, r3, r0
|
||||
cmp r0, 0x8
|
||||
ble _08067BF0
|
||||
ldr r5, _08067C00
|
||||
movs r4, 0x5
|
||||
_08067BD6:
|
||||
ldr r1, [r5]
|
||||
movs r0, 0
|
||||
bl _call_via_r1
|
||||
movs r0, 0x37
|
||||
bl sub_803E46C
|
||||
subs r4, 0x1
|
||||
cmp r4, 0
|
||||
bge _08067BD6
|
||||
_08067BEA:
|
||||
ldr r0, [r6]
|
||||
adds r0, 0x1
|
||||
str r0, [r6]
|
||||
_08067BF0:
|
||||
movs r7, 0
|
||||
movs r0, 0x7
|
||||
mov r10, r0
|
||||
b _08067CF6
|
||||
.align 2, 0
|
||||
_08067BF8: .4byte gRealInputs
|
||||
_08067BFC: .4byte gUnknown_202EE10
|
||||
_08067C00: .4byte gIwramTextFunc1
|
||||
_08067C04:
|
||||
adds r0, r1, 0
|
||||
movs r1, 0
|
||||
bl sub_80136E0
|
||||
_08067C0C:
|
||||
cmp r4, 0x1
|
||||
bne _08067C44
|
||||
cmp r7, 0
|
||||
beq _08067C44
|
||||
ldr r0, [r6]
|
||||
cmp r0, 0
|
||||
beq _08067C38
|
||||
ldr r5, _08067C40
|
||||
movs r4, 0x5
|
||||
_08067C1E:
|
||||
ldr r1, [r5]
|
||||
movs r0, 0
|
||||
bl _call_via_r1
|
||||
movs r0, 0x37
|
||||
bl sub_803E46C
|
||||
subs r4, 0x1
|
||||
cmp r4, 0
|
||||
bge _08067C1E
|
||||
ldr r0, [r6]
|
||||
subs r0, 0x1
|
||||
str r0, [r6]
|
||||
_08067C38:
|
||||
movs r7, 0
|
||||
movs r1, 0
|
||||
mov r10, r1
|
||||
b _08067CF6
|
||||
.align 2, 0
|
||||
_08067C40: .4byte gIwramTextFunc2
|
||||
_08067C44:
|
||||
ldr r0, _08067C8C
|
||||
ldrh r1, [r0, 0x4]
|
||||
movs r0, 0x40
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _08067CA0
|
||||
movs r0, 0x1
|
||||
bl sub_8083CE0
|
||||
ldr r1, _08067C90
|
||||
movs r2, 0x18
|
||||
ldrsh r0, [r1, r2]
|
||||
cmp r0, 0
|
||||
bne _08067C98
|
||||
ldr r0, [r6]
|
||||
cmp r0, 0
|
||||
beq _08067C84
|
||||
ldr r5, _08067C94
|
||||
movs r4, 0x5
|
||||
_08067C6A:
|
||||
ldr r1, [r5]
|
||||
movs r0, 0
|
||||
bl _call_via_r1
|
||||
movs r0, 0x37
|
||||
bl sub_803E46C
|
||||
subs r4, 0x1
|
||||
cmp r4, 0
|
||||
bge _08067C6A
|
||||
ldr r0, [r6]
|
||||
subs r0, 0x1
|
||||
str r0, [r6]
|
||||
_08067C84:
|
||||
movs r7, 0
|
||||
movs r3, 0
|
||||
mov r10, r3
|
||||
b _08067CF6
|
||||
.align 2, 0
|
||||
_08067C8C: .4byte gRealInputs
|
||||
_08067C90: .4byte gUnknown_202EE10
|
||||
_08067C94: .4byte gIwramTextFunc2
|
||||
_08067C98:
|
||||
adds r0, r1, 0
|
||||
movs r1, 0
|
||||
bl sub_8013744
|
||||
_08067CA0:
|
||||
bl sub_80048C8
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _08067CAC
|
||||
b _08067B36
|
||||
_08067CAC:
|
||||
ldr r0, _08067CD4
|
||||
ldrh r1, [r0, 0x2]
|
||||
movs r0, 0x8
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _08067D40
|
||||
movs r0, 0x1
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _08067CCC
|
||||
ldr r2, _08067CD8
|
||||
adds r0, r2, 0
|
||||
adds r0, 0x29
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _08067CDC
|
||||
_08067CCC:
|
||||
bl sub_8083D08
|
||||
movs r7, 0x1
|
||||
b _08067CF6
|
||||
.align 2, 0
|
||||
_08067CD4: .4byte gRealInputs
|
||||
_08067CD8: .4byte gUnknown_202EE10
|
||||
_08067CDC:
|
||||
movs r0, 0x2
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _08067CF0
|
||||
adds r0, r2, 0
|
||||
adds r0, 0x2A
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
bne _08067CF0
|
||||
b _08067B36
|
||||
_08067CF0:
|
||||
bl sub_8083D30
|
||||
movs r7, 0x2
|
||||
_08067CF6:
|
||||
ldr r4, _08067D34
|
||||
adds r0, r4, 0
|
||||
bl AddMenuCursorSprite
|
||||
movs r0, 0x37
|
||||
bl sub_803E46C
|
||||
cmp r7, 0
|
||||
bne _08067D0A
|
||||
b _08067AD4
|
||||
_08067D0A:
|
||||
cmp r7, 0x2
|
||||
bne _08067D48
|
||||
movs r1, 0x18
|
||||
ldrsh r0, [r4, r1]
|
||||
mov r10, r0
|
||||
ldr r0, _08067D38
|
||||
ldr r0, [r0]
|
||||
ldr r2, [sp, 0x68]
|
||||
cmp r0, r2
|
||||
bge _08067D20
|
||||
b _08067AD4
|
||||
_08067D20:
|
||||
ldr r0, _08067D3C
|
||||
ldr r1, [r0]
|
||||
movs r0, 0
|
||||
movs r2, 0x1
|
||||
bl DisplayDungeonYesNoMessage
|
||||
cmp r0, 0x1
|
||||
bne _08067D32
|
||||
b _08067ED8
|
||||
_08067D32:
|
||||
b _08067AD4
|
||||
.align 2, 0
|
||||
_08067D34: .4byte gUnknown_202EE10
|
||||
_08067D38: .4byte gUnknown_202F310
|
||||
_08067D3C: .4byte gUnknown_80FDFB8
|
||||
_08067D40:
|
||||
bl sub_8083D1C
|
||||
movs r7, 0x3
|
||||
b _08067CF6
|
||||
_08067D48:
|
||||
cmp r7, 0x3
|
||||
bne _08067D64
|
||||
movs r0, 0x18
|
||||
ldrsh r3, [r4, r0]
|
||||
mov r10, r3
|
||||
ldr r0, _08067D60
|
||||
ldr r0, [r0]
|
||||
add r0, r10
|
||||
lsls r0, 2
|
||||
add r0, r9
|
||||
b _08067ED0
|
||||
.align 2, 0
|
||||
_08067D60: .4byte gUnknown_202F30C
|
||||
_08067D64:
|
||||
movs r2, 0x18
|
||||
ldrsh r1, [r4, r2]
|
||||
mov r10, r1
|
||||
ldr r0, _08067DAC
|
||||
ldr r0, [r0]
|
||||
adds r4, r0, r1
|
||||
ldr r1, _08067DB0
|
||||
movs r0, 0
|
||||
str r0, [r1]
|
||||
movs r0, 0x29
|
||||
movs r1, 0
|
||||
bl sub_8044F5C
|
||||
movs r0, 0x2A
|
||||
movs r1, 0
|
||||
bl sub_8044F5C
|
||||
movs r0, 0x40
|
||||
movs r1, 0
|
||||
bl sub_8044F5C
|
||||
lsls r0, r4, 2
|
||||
add r0, r9
|
||||
ldr r0, [r0]
|
||||
ldrh r0, [r0]
|
||||
movs r3, 0x80
|
||||
lsls r3, 8
|
||||
adds r1, r3, 0
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _08067DBC
|
||||
movs r0, 0x29
|
||||
bl sub_8044FF0
|
||||
b _08067DC2
|
||||
.align 2, 0
|
||||
_08067DAC: .4byte gUnknown_202F30C
|
||||
_08067DB0: .4byte gUnknown_202EE6C
|
||||
_08067DB4:
|
||||
bl sub_8083D08
|
||||
movs r7, 0x1
|
||||
b _08067E6E
|
||||
_08067DBC:
|
||||
movs r0, 0x2A
|
||||
bl sub_8044FF0
|
||||
_08067DC2:
|
||||
lsls r0, r4, 2
|
||||
mov r2, r9
|
||||
adds r1, r0, r2
|
||||
ldr r2, [r1]
|
||||
ldrb r1, [r2, 0x2]
|
||||
adds r6, r0, 0
|
||||
cmp r1, 0
|
||||
bne _08067DDC
|
||||
ldrb r1, [r2, 0x4]
|
||||
cmp r1, 0x40
|
||||
beq _08067DDC
|
||||
cmp r1, 0x41
|
||||
bne _08067DE2
|
||||
_08067DDC:
|
||||
movs r0, 0x29
|
||||
bl sub_8044FF0
|
||||
_08067DE2:
|
||||
bl sub_8045064
|
||||
add r0, sp, 0x4
|
||||
movs r1, 0x15
|
||||
bl sub_805FC30
|
||||
ldr r4, _08067EA0
|
||||
ldr r5, _08067EA4
|
||||
adds r7, r4, 0
|
||||
adds r7, 0x2A
|
||||
_08067DF6:
|
||||
adds r0, r4, 0
|
||||
bl AddMenuCursorSprite
|
||||
movs r0, 0x37
|
||||
bl sub_803E46C
|
||||
ldrh r1, [r5, 0x4]
|
||||
movs r0, 0x80
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _08067E1A
|
||||
movs r0, 0x1
|
||||
bl sub_8083CE0
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x1
|
||||
bl sub_80136E0
|
||||
_08067E1A:
|
||||
ldrh r1, [r5, 0x4]
|
||||
movs r0, 0x40
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
beq _08067E32
|
||||
movs r0, 0x1
|
||||
bl sub_8083CE0
|
||||
adds r0, r4, 0
|
||||
movs r1, 0x1
|
||||
bl sub_8013744
|
||||
_08067E32:
|
||||
ldrh r1, [r5, 0x2]
|
||||
movs r0, 0x1
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _08067E46
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x29
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
beq _08067E58
|
||||
_08067E46:
|
||||
movs r3, 0x18
|
||||
ldrsh r0, [r4, r3]
|
||||
bl sub_8044F3C
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08067DB4
|
||||
bl sub_8083D30
|
||||
_08067E58:
|
||||
ldrh r1, [r5, 0x2]
|
||||
movs r0, 0x2
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _08067E68
|
||||
ldrb r0, [r7]
|
||||
cmp r0, 0
|
||||
beq _08067DF6
|
||||
_08067E68:
|
||||
bl sub_8083D30
|
||||
movs r7, 0
|
||||
_08067E6E:
|
||||
ldr r4, _08067EA0
|
||||
adds r0, r4, 0
|
||||
bl AddMenuCursorSprite
|
||||
movs r0, 0x37
|
||||
bl sub_803E46C
|
||||
cmp r7, 0
|
||||
bne _08067E82
|
||||
b _08067AD4
|
||||
_08067E82:
|
||||
movs r1, 0x18
|
||||
ldrsh r0, [r4, r1]
|
||||
cmp r0, 0
|
||||
bne _08067EA8
|
||||
mov r2, r9
|
||||
adds r0, r6, r2
|
||||
ldr r1, [r0]
|
||||
ldrh r2, [r1]
|
||||
movs r3, 0x80
|
||||
lsls r3, 8
|
||||
adds r0, r3, 0
|
||||
orrs r0, r2
|
||||
strh r0, [r1]
|
||||
b _08067EBC
|
||||
.align 2, 0
|
||||
_08067EA0: .4byte gUnknown_202EE10
|
||||
_08067EA4: .4byte gRealInputs
|
||||
_08067EA8:
|
||||
cmp r0, 0x1
|
||||
bne _08067ECC
|
||||
mov r1, r9
|
||||
adds r0, r6, r1
|
||||
ldr r2, [r0]
|
||||
ldrh r0, [r2]
|
||||
ldr r3, _08067EC8
|
||||
adds r1, r3, 0
|
||||
ands r0, r1
|
||||
strh r0, [r2]
|
||||
_08067EBC:
|
||||
mov r0, r8
|
||||
mov r1, r9
|
||||
bl sub_8068310
|
||||
b _08067AD4
|
||||
.align 2, 0
|
||||
_08067EC8: .4byte 0x00007fff
|
||||
_08067ECC:
|
||||
mov r1, r9
|
||||
adds r0, r6, r1
|
||||
_08067ED0:
|
||||
ldr r0, [r0]
|
||||
bl sub_806806C
|
||||
b _08067AD4
|
||||
_08067ED8:
|
||||
mov r0, r8
|
||||
mov r1, r9
|
||||
bl sub_8068310
|
||||
ldr r0, _08067EFC
|
||||
ldr r0, [r0]
|
||||
ldr r2, [sp, 0x68]
|
||||
cmp r0, r2
|
||||
bge _08067EEC
|
||||
b _08067AD4
|
||||
_08067EEC:
|
||||
add sp, 0x6C
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08067EFC: .4byte gUnknown_202F310
|
||||
thumb_func_end sub_8067A80
|
||||
|
||||
thumb_func_start sub_8067F00
|
||||
sub_8067F00:
|
||||
push {r4-r7,lr}
|
||||
|
|
|
|||
9
include/dungeon_move.h
Normal file
9
include/dungeon_move.h
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
#ifndef GUARD_DUNGEON_MOVE_H
|
||||
#define GUARD_DUNGEON_MOVE_H
|
||||
|
||||
#include "structs/str_pokemon.h"
|
||||
#include "structs/str_moves.h"
|
||||
|
||||
bool8 TryUseChosenMove(struct Entity *attacker, u32 r6, s32 itemId, u32 var_30, bool32 isLinkedMove, struct Move *move);
|
||||
|
||||
#endif
|
||||
|
|
@ -10,17 +10,27 @@
|
|||
#include "position_util.h"
|
||||
#include "dungeon_util.h"
|
||||
#include "items.h"
|
||||
#include "input.h"
|
||||
#include "text.h"
|
||||
#include "code_803E46C.h"
|
||||
#include "string_format.h"
|
||||
#include "dungeon_leader.h"
|
||||
#include "status_checks_1.h"
|
||||
#include "dungeon_ai_targeting.h"
|
||||
#include "dungeon_engine.h"
|
||||
#include "dungeon_move.h"
|
||||
#include "dungeon_items.h"
|
||||
#include "dungeon_random.h"
|
||||
#include "code_8077274_1.h"
|
||||
#include "code_8084778.h"
|
||||
#include "pokemon.h"
|
||||
#include "trap.h"
|
||||
#include "moves.h"
|
||||
#include "menu_input.h"
|
||||
#include "dungeon_capabilities.h"
|
||||
#include "constants/item.h"
|
||||
#include "constants/dungeon.h"
|
||||
#include "constants/move_id.h"
|
||||
|
||||
extern u8 *gUnknown_80F8BE0[];
|
||||
extern u8 *gUnknown_80FF76C[];
|
||||
|
|
@ -46,16 +56,40 @@ extern u8 *gNoExchangesHere[];
|
|||
extern u8 *gSwappedGroundItem[];
|
||||
extern const u8 *const gMonThrewItem2;
|
||||
extern const u8 *const gMonThrewItem1;
|
||||
extern const u8 *const gCannotFarewell;
|
||||
extern const u8 *const gSayFarewellQ;
|
||||
extern const u8 *const gUnknown_80FDFB8;
|
||||
extern const u8 *const gUnknown_80F913C;
|
||||
extern const u8 *const gCannotTalk;
|
||||
extern const u8 *const gUnknown_80FE008;
|
||||
extern const u8 *const gUnknown_80FDF74;
|
||||
extern const u8 *const gUnknown_80FF674;
|
||||
extern const u8 *const gUnknown_80F9114;
|
||||
extern const u8 *const gMonDisappointedAndLeft;
|
||||
extern const u8 *const gSendMonBackQ;
|
||||
extern const u8 *const gSendMonBackWithItemQ;
|
||||
extern const u8 *const gMonWentBack;
|
||||
extern const u8 *const gMonCringing;
|
||||
extern const u8 *const gMonParalyzed;
|
||||
extern const u8 *const gUnknown_80FC690;
|
||||
|
||||
extern s32 gUnknown_202EE6C;
|
||||
|
||||
extern void sub_8071DA4(Entity *);
|
||||
extern void sub_806A1B0(Entity *);
|
||||
extern void sub_806A9B4(Entity *, u32);
|
||||
extern void sub_8057588(Entity * pokemon, u8 param_2);
|
||||
extern void sub_8068FE0(Entity *, u32, Entity *r2);
|
||||
extern bool8 sub_806A58C(s16 a0);
|
||||
extern bool8 sub_806A564(s16 r0);
|
||||
extern void sub_8045C08(u8 *buffer, Item *item);
|
||||
extern bool8 sub_8045888(Entity *);
|
||||
extern Item *sub_8044D90(Entity *, s32, u32);
|
||||
void sub_8045BF8(u8 *, Item *);
|
||||
u8 sub_8048D50();
|
||||
void sub_8044FF0(u16 param_1);
|
||||
u8 * sub_80464AC();
|
||||
void sub_8044F5C(u16 param_1, u8 param_2);
|
||||
void sub_8044DF0();
|
||||
void sub_8042208(Entity *pokemon, u8 r1);
|
||||
void sub_803E708();
|
||||
|
|
@ -67,6 +101,8 @@ extern void sub_806A6E8(Entity *);
|
|||
extern void sub_8044DF0(Entity *, u32, u32);
|
||||
extern void sub_8045DB4(DungeonPos *, u32);
|
||||
extern bool8 sub_80461C8(DungeonPos *, u32);
|
||||
extern bool32 sub_8055A00(Entity *attacker, s32 firstMoveId, s32 var_34, s32 itemId, s32 arg_0);
|
||||
extern bool8 sub_8044B28(void);
|
||||
|
||||
void HandlePickUpPlayerAction(Entity *entity)
|
||||
{
|
||||
|
|
@ -735,3 +771,395 @@ void sub_8067768(ActionContainer *a0)
|
|||
Entity *targetEntity = gDungeon->teamPokemon[a0->actionParameters[0].actionUseIndex];
|
||||
sub_8067794(GetLeader(), targetEntity, 0);
|
||||
}
|
||||
|
||||
void sub_8067794(Entity *entity, Entity *targetEntity, s32 a2)
|
||||
{
|
||||
const u8 *stringPtr1;
|
||||
const u8 *stringPtr2;
|
||||
s32 teamIndex;
|
||||
EntityInfo *info2 = GetEntInfo(targetEntity);
|
||||
|
||||
if (targetEntity == NULL) {
|
||||
DisplayDungeonMessage(NULL, gCannotFarewell, TRUE);
|
||||
return;
|
||||
}
|
||||
|
||||
SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[0], targetEntity, 0);
|
||||
stringPtr1 = gSayFarewellQ;
|
||||
stringPtr2 = gUnknown_80F913C;
|
||||
teamIndex = info2->teamIndex;
|
||||
if (teamIndex >= 0) {
|
||||
PokemonStruct2 *pokeStruct = &gRecruitedPokemonRef->pokemon2[teamIndex];
|
||||
if (sub_806A564(pokeStruct->unkA)) {
|
||||
stringPtr1 = gUnknown_80F9114;
|
||||
stringPtr2 = gMonDisappointedAndLeft;
|
||||
}
|
||||
else if (sub_806A58C(pokeStruct->unkA)) {
|
||||
if (IsMakuhitaTrainingMaze()) {
|
||||
stringPtr1 = gSendMonBackQ;
|
||||
}
|
||||
else {
|
||||
stringPtr1 = gSendMonBackWithItemQ;
|
||||
}
|
||||
stringPtr2 = gMonWentBack;
|
||||
}
|
||||
}
|
||||
|
||||
if (DisplayDungeonYesNoMessage(NULL, stringPtr1, FALSE) == 1) {
|
||||
u8 tempText[64];
|
||||
|
||||
strncpy(tempText, gFormatBuffer_Monsters[0], sizeof(tempText));
|
||||
sub_8068FE0(targetEntity, 0x21D, 0);
|
||||
strncpy(gFormatBuffer_Monsters[0], tempText, sizeof(tempText));
|
||||
DisplayDungeonMessage(NULL, stringPtr2, TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
void HandleUseMovePlayerAction(Entity *entity)
|
||||
{
|
||||
s32 i = 0;
|
||||
|
||||
while (i < sub_8070828(entity, TRUE)) {
|
||||
EntityInfo *info = GetEntInfo(entity);
|
||||
|
||||
sub_8055A00(entity, info->action.actionParameters[1].actionUseIndex, 1, 0, 0);
|
||||
if (sub_8044B28()) {
|
||||
break;
|
||||
}
|
||||
if (info->unk159 != 0) {
|
||||
break;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
|
||||
sub_8057588(entity, 1);
|
||||
if (!sub_8044B28()) {
|
||||
if (EntityIsValid(entity)) {
|
||||
sub_806A9B4(entity, GetEntInfo(entity)->action.actionParameters[1].actionUseIndex);
|
||||
}
|
||||
sub_806A1B0(entity);
|
||||
}
|
||||
}
|
||||
|
||||
extern u32 gUnknown_202F208;
|
||||
|
||||
void sub_8067904(Entity *entity, u16 moveId)
|
||||
{
|
||||
Move move;
|
||||
EntityInfo *info = GetEntInfo(entity);
|
||||
|
||||
gUnknown_202F208 = 0;
|
||||
InitPokemonMove(&move, moveId);
|
||||
if (info->cringeClassStatus.status == STATUS_CRINGE) {
|
||||
SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[0], entity, 0);
|
||||
LogMessageByIdWithPopupCheckUser(entity, gMonCringing);
|
||||
}
|
||||
else if (info->burnClassStatus.status == STATUS_PARALYSIS) {
|
||||
SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[0], entity, 0);
|
||||
LogMessageByIdWithPopupCheckUser(entity, gMonParalyzed);
|
||||
}
|
||||
else {
|
||||
s32 i;
|
||||
bool32 isStrugle;
|
||||
|
||||
if (moveId == MOVE_STRUGGLE) {
|
||||
isStrugle = TRUE;
|
||||
}
|
||||
else {
|
||||
isStrugle = FALSE;
|
||||
}
|
||||
|
||||
i = 0;
|
||||
while (i < sub_8070828(entity, TRUE)) {
|
||||
info->abilityEffectFlags = 0;
|
||||
move.moveFlags |= 8;
|
||||
move.moveFlags |= 4;
|
||||
move.PP = 10;
|
||||
TryUseChosenMove(entity, isStrugle, 0, 0, FALSE, &move);
|
||||
|
||||
if (!EntityIsValid(entity) || info->unk159 != 0) {
|
||||
break;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
|
||||
if (EntityIsValid(entity)) {
|
||||
if (moveId == MOVE_STRUGGLE && gUnknown_202F208 == 0) {
|
||||
LogMessageByIdWithPopupCheckUser(entity, gUnknown_80FC690);
|
||||
}
|
||||
if (info->isTeamLeader && moveId != MOVE_STRUGGLE) {
|
||||
DungeonPos pos;
|
||||
|
||||
pos.x = entity->pos.x + gAdjacentTileOffsets[info->action.direction].x;
|
||||
pos.y = entity->pos.y + gAdjacentTileOffsets[info->action.direction].y;
|
||||
sub_807FE44(&pos, 1);
|
||||
}
|
||||
sub_8071DA4(entity);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
typedef struct UnkTextStruct3 {
|
||||
UnkTextStruct2 a0[4];
|
||||
} UnkTextStruct3;
|
||||
|
||||
extern void sub_80684C4(void);
|
||||
void sub_8045064(void);
|
||||
extern void sub_8083CE0(u8 param_1);
|
||||
extern void sub_8068344(void);
|
||||
bool8 sub_8044F3C(s32 param_1);
|
||||
void sub_8068310(s32 a0, PokemonStruct1 **a1);
|
||||
void sub_8067F00(s32 a0, PokemonStruct1 **a1, s32 a2, s32 a3, s32 a4);
|
||||
extern void sub_803ECB4(UnkTextStruct3 *a0, u8 a1);
|
||||
u32 sub_8014140(s32 a0, const void *a1);
|
||||
void sub_8083D1C(void);
|
||||
void sub_8083D08(void);
|
||||
void sub_8083D30(void);
|
||||
void sub_806806C(PokemonStruct1 *a0);
|
||||
void sub_805FC30(UnkTextStruct3 *a0, s32 a1);
|
||||
|
||||
extern const u8 gUnknown_8106DA4[];
|
||||
extern MenuInputStruct gUnknown_202EE10;
|
||||
extern const UnkTextStruct3 gUnknown_8106DC8;
|
||||
extern s32 gUnknown_202F30C;
|
||||
extern s32 gUnknown_202F310;
|
||||
extern u8 gUnknown_202F308[];
|
||||
|
||||
void sub_8067A80(u8 a0, s32 a1, s32 a2, PokemonStruct1 **a3)
|
||||
{
|
||||
s32 i;
|
||||
s32 r10;
|
||||
UnkTextStruct3 spTxtStruct = gUnknown_8106DC8;
|
||||
|
||||
gUnknown_202F30C = 0;
|
||||
r10 = 0;
|
||||
for (i = 0; i < a2; i++) {
|
||||
a3[i]->unk0 &= ~(0x8000);
|
||||
}
|
||||
|
||||
while (1) {
|
||||
sub_8068310(a2, a3);
|
||||
if (gUnknown_202F310 >= a1)
|
||||
break;
|
||||
while (1) {
|
||||
s32 r7 = 0, r5 = 0;
|
||||
|
||||
gUnknown_202F308[0] = 1;
|
||||
gUnknown_202F308[1] = 0;
|
||||
gUnknown_202F308[2] = 0xE;
|
||||
gUnknown_202F308[3] = 0;
|
||||
|
||||
ASM_MATCH_TRICK(r7);
|
||||
|
||||
sub_803ECB4(&spTxtStruct, 1);
|
||||
sub_8067F00(a0, a3, gUnknown_202F30C, a2, a1);
|
||||
gUnknown_202EE10.unk1A = min(a2, 8);
|
||||
gUnknown_202EE10.menuIndex = r10;
|
||||
gUnknown_202EE10.unk1C = 8;
|
||||
gUnknown_202EE10.unk1E = 0;
|
||||
gUnknown_202EE10.unk20 = 0;
|
||||
gUnknown_202EE10.unk4 = 0;
|
||||
gUnknown_202EE10.unk6 = 18;
|
||||
gUnknown_202EE10.unkC = 0;
|
||||
gUnknown_202EE10.unkE = 0;
|
||||
gUnknown_202EE10.unk14.x = 0;
|
||||
gUnknown_202EE10.unk0 = 0;
|
||||
sub_801317C(&gUnknown_202EE10.unk28);
|
||||
sub_80137B0(&gUnknown_202EE10, 0);
|
||||
while (1) {
|
||||
s32 r4;
|
||||
|
||||
AddMenuCursorSprite(&gUnknown_202EE10);
|
||||
r5 = 0;
|
||||
r7 = 0;
|
||||
if (a2 - gUnknown_202F30C > 8) {
|
||||
r5 = 1;
|
||||
sub_80684C4();
|
||||
}
|
||||
if (gUnknown_202F30C != 0) {
|
||||
r7 = 1;
|
||||
sub_8068344();
|
||||
}
|
||||
|
||||
r4 = sub_8014140(0, gUnknown_8106DA4);
|
||||
sub_803E46C(0x37);
|
||||
if (r4 == 2 && r5) {
|
||||
if (a2 - gUnknown_202F30C > 8) {
|
||||
s32 i;
|
||||
for (i = 0; i < 6; i++) {
|
||||
gIwramTextFunc1(0);
|
||||
sub_803E46C(0x37);
|
||||
}
|
||||
gUnknown_202F30C++;
|
||||
}
|
||||
r7 = 0;
|
||||
r10 = 7;
|
||||
break;
|
||||
}
|
||||
if (gRealInputs.repeated & DPAD_DOWN) {
|
||||
sub_8083CE0(1);
|
||||
if (gUnknown_202EE10.menuIndex == 7) {
|
||||
if (a2 - gUnknown_202F30C > 8) {
|
||||
s32 i;
|
||||
for (i = 0; i < 6; i++) {
|
||||
gIwramTextFunc1(0);
|
||||
sub_803E46C(0x37);
|
||||
}
|
||||
gUnknown_202F30C++;
|
||||
}
|
||||
r7 = 0;
|
||||
r10 = 7;
|
||||
break;
|
||||
}
|
||||
sub_80136E0(&gUnknown_202EE10, 0);
|
||||
}
|
||||
|
||||
if (r4 == 1 && r7 != 0) {
|
||||
if (gUnknown_202F30C != 0) {
|
||||
s32 i;
|
||||
for (i = 0; i < 6; i++) {
|
||||
gIwramTextFunc2(0);
|
||||
sub_803E46C(0x37);
|
||||
}
|
||||
gUnknown_202F30C--;
|
||||
}
|
||||
r7 = 0;
|
||||
r10 = 0;
|
||||
break;
|
||||
}
|
||||
if (gRealInputs.repeated & DPAD_UP) {
|
||||
sub_8083CE0(1);
|
||||
if (gUnknown_202EE10.menuIndex == 0) {
|
||||
if (gUnknown_202F30C != 0) {
|
||||
s32 i;
|
||||
for (i = 0; i < 6; i++) {
|
||||
gIwramTextFunc2(0);
|
||||
sub_803E46C(0x37);
|
||||
}
|
||||
gUnknown_202F30C--;
|
||||
}
|
||||
r7 = 0;
|
||||
r10 = 0;
|
||||
break;
|
||||
}
|
||||
sub_8013744(&gUnknown_202EE10, 0);
|
||||
}
|
||||
|
||||
if (sub_80048C8()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (gRealInputs.pressed & START_BUTTON) {
|
||||
sub_8083D1C();
|
||||
r7 = 3;
|
||||
break;
|
||||
}
|
||||
if ((gRealInputs.pressed & A_BUTTON) || gUnknown_202EE10.unk28.a_button) {
|
||||
sub_8083D08();
|
||||
r7 = 1;
|
||||
break;
|
||||
}
|
||||
if ((gRealInputs.pressed & B_BUTTON) || gUnknown_202EE10.unk28.b_button) {
|
||||
sub_8083D30();
|
||||
r7 = 2;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
AddMenuCursorSprite(&gUnknown_202EE10);
|
||||
sub_803E46C(0x37);
|
||||
if (r7 == 0) {
|
||||
continue;
|
||||
}
|
||||
else if (r7 == 2) {
|
||||
r10 = gUnknown_202EE10.menuIndex;
|
||||
if (gUnknown_202F310 < a1) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (DisplayDungeonYesNoMessage(NULL, gUnknown_80FDFB8, TRUE) == 1) {
|
||||
break;
|
||||
}
|
||||
else {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else if (r7 == 3) {
|
||||
r10 = gUnknown_202EE10.menuIndex;
|
||||
sub_806806C(a3[gUnknown_202F30C + r10]);
|
||||
continue;
|
||||
}
|
||||
else {
|
||||
s32 arrId;
|
||||
u8 locIdIsPartner;
|
||||
|
||||
r10 = gUnknown_202EE10.menuIndex;
|
||||
arrId = gUnknown_202F30C + r10;
|
||||
gUnknown_202EE6C = 0;
|
||||
sub_8044F5C(0x29, 0);
|
||||
sub_8044F5C(0x2A, 0);
|
||||
sub_8044F5C(0x40, 0);
|
||||
if (a3[arrId]->unk0 & 0x8000) {
|
||||
sub_8044FF0(0x29);
|
||||
}
|
||||
else {
|
||||
sub_8044FF0(0x2A);
|
||||
}
|
||||
|
||||
// This unnecessary variable is required to match.
|
||||
locIdIsPartner = DUNGEON_JOIN_LOCATION_PARTNER;
|
||||
if (a3[arrId]->isTeamLeader || (a3[arrId]->dungeonLocation.id == DUNGEON_JOIN_LOCATION_LEADER || a3[arrId]->dungeonLocation.id == locIdIsPartner)) {
|
||||
sub_8044FF0(0x29);
|
||||
}
|
||||
|
||||
sub_8045064();
|
||||
sub_805FC30(&spTxtStruct, 0x15);
|
||||
|
||||
while (1) {
|
||||
AddMenuCursorSprite(&gUnknown_202EE10);
|
||||
sub_803E46C(0x37);
|
||||
|
||||
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 & A_BUTTON) || gUnknown_202EE10.unk28.a_button) {
|
||||
if (sub_8044F3C(gUnknown_202EE10.menuIndex)) {
|
||||
sub_8083D08();
|
||||
r7 = 1;
|
||||
break;
|
||||
}
|
||||
sub_8083D30();
|
||||
}
|
||||
if ((gRealInputs.pressed & B_BUTTON) || gUnknown_202EE10.unk28.b_button) {
|
||||
sub_8083D30();
|
||||
r7 = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
AddMenuCursorSprite(&gUnknown_202EE10);
|
||||
sub_803E46C(0x37);
|
||||
if (r7 != 0) {
|
||||
if (gUnknown_202EE10.menuIndex == 0) {
|
||||
a3[arrId]->unk0 |= 0x8000;
|
||||
sub_8068310(a2, a3);
|
||||
}
|
||||
else if (gUnknown_202EE10.menuIndex == 1) {
|
||||
a3[arrId]->unk0 &= ~(0x8000);
|
||||
sub_8068310(a2, a3);
|
||||
}
|
||||
else {
|
||||
sub_806806C(a3[arrId]);
|
||||
}
|
||||
}
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#include "global.h"
|
||||
#include "dungeon_move.h"
|
||||
#include "dungeon_pokemon_attributes.h"
|
||||
#include "dungeon_util.h"
|
||||
#include "dungeon_message.h"
|
||||
|
|
@ -304,7 +305,6 @@ s32 HandleDamagingMove(Entity *, Entity *, Move *, s24_8, s32);
|
|||
static s32 TryHitTarget(Entity *attacker, Entity *target, Move *move, struct DamageStruct *dmgStruct, s16 unk);
|
||||
static void TriggerTargetAbilityEffect(Entity *attacker);
|
||||
static bool8 AccuracyCalc(Entity *attacker, Entity *target, Move *move, s32 accuracyType, bool8 selfAlwaysHits);
|
||||
bool8 TryUseChosenMove(struct Entity *attacker, u32 r6, s32 itemId, u32 var_30, bool32 isLinkedMove, struct Move *move);
|
||||
bool8 sub_8056468(Entity *entity, Move *move, const u8 *str, Entity **unkArray, bool32 itemId, bool8 arg_4, bool32 unused);
|
||||
bool8 sub_805744C(Entity * pokemon, Move *move, bool8 param_3);
|
||||
static void SetTargetsForMove(Entity **targetsArray, Entity *attacker, Move *move);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user