pokefirered/asm/battle_controller_safari.s
2018-10-12 20:18:48 -04:00

1535 lines
30 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start nullsub_79
nullsub_79: @ 80DD534
bx lr
thumb_func_end nullsub_79
thumb_func_start sub_80DD538
sub_80DD538: @ 80DD538
ldr r1, _080DD548 @ =gUnknown_3004FE0
ldr r0, _080DD54C @ =gActiveBattler
ldrb r0, [r0]
lsls r0, 2
adds r0, r1
ldr r1, _080DD550 @ =SafariBufferRunCommand
str r1, [r0]
bx lr
.align 2, 0
_080DD548: .4byte gUnknown_3004FE0
_080DD54C: .4byte gActiveBattler
_080DD550: .4byte SafariBufferRunCommand
thumb_func_end sub_80DD538
thumb_func_start SafariBufferRunCommand
SafariBufferRunCommand: @ 80DD554
push {lr}
ldr r2, _080DD588 @ =gUnknown_2023BC8
ldr r1, _080DD58C @ =gBitTable
ldr r0, _080DD590 @ =gActiveBattler
ldrb r3, [r0]
lsls r0, r3, 2
adds r0, r1
ldr r1, [r2]
ldr r0, [r0]
ands r1, r0
cmp r1, 0
beq _080DD5A0
ldr r0, _080DD594 @ =gUnknown_2022BC4
lsls r1, r3, 9
adds r1, r0
ldrb r0, [r1]
cmp r0, 0x38
bhi _080DD59C
ldr r0, _080DD598 @ =gUnknown_83FED00
ldrb r1, [r1]
lsls r1, 2
adds r1, r0
ldr r0, [r1]
bl _call_via_r0
b _080DD5A0
.align 2, 0
_080DD588: .4byte gUnknown_2023BC8
_080DD58C: .4byte gBitTable
_080DD590: .4byte gActiveBattler
_080DD594: .4byte gUnknown_2022BC4
_080DD598: .4byte gUnknown_83FED00
_080DD59C:
bl SafariBufferExecCompleted
_080DD5A0:
pop {r0}
bx r0
thumb_func_end SafariBufferRunCommand
thumb_func_start HandleInputChooseAction_0
HandleInputChooseAction_0: @ 80DD5A4
push {r4,r5,lr}
ldr r0, _080DD5D4 @ =gMain
ldrh r1, [r0, 0x2E]
movs r2, 0x1
adds r0, r2, 0
ands r0, r1
cmp r0, 0
beq _080DD612
movs r0, 0x5
bl PlaySE
ldr r1, _080DD5D8 @ =gUnknown_2023FF8
ldr r0, _080DD5DC @ =gActiveBattler
ldrb r0, [r0]
adds r0, r1
ldrb r0, [r0]
cmp r0, 0x1
beq _080DD5F0
cmp r0, 0x1
bgt _080DD5E0
cmp r0, 0
beq _080DD5EA
b _080DD60C
.align 2, 0
_080DD5D4: .4byte gMain
_080DD5D8: .4byte gUnknown_2023FF8
_080DD5DC: .4byte gActiveBattler
_080DD5E0:
cmp r0, 0x2
beq _080DD5F6
cmp r0, 0x3
beq _080DD602
b _080DD60C
_080DD5EA:
movs r0, 0x1
movs r1, 0x5
b _080DD5FA
_080DD5F0:
movs r0, 0x1
movs r1, 0x6
b _080DD5FA
_080DD5F6:
movs r0, 0x1
movs r1, 0x7
_080DD5FA:
movs r2, 0
bl EmitTwoReturnValues
b _080DD60C
_080DD602:
movs r0, 0x1
movs r1, 0x8
movs r2, 0
bl EmitTwoReturnValues
_080DD60C:
bl SafariBufferExecCompleted
b _080DD71A
_080DD612:
movs r0, 0x20
ands r0, r1
cmp r0, 0
beq _080DD650
ldr r5, _080DD648 @ =gUnknown_2023FF8
ldr r4, _080DD64C @ =gActiveBattler
ldrb r0, [r4]
adds r0, r5
ldrb r1, [r0]
adds r0, r2, 0
ands r0, r1
cmp r0, 0
beq _080DD71A
movs r0, 0x5
bl PlaySE
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
bl ActionSelectionDestroyCursorAt
ldrb r1, [r4]
adds r1, r5
ldrb r0, [r1]
movs r2, 0x1
b _080DD6BE
.align 2, 0
_080DD648: .4byte gUnknown_2023FF8
_080DD64C: .4byte gActiveBattler
_080DD650:
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _080DD68C
ldr r5, _080DD684 @ =gUnknown_2023FF8
ldr r4, _080DD688 @ =gActiveBattler
ldrb r0, [r4]
adds r0, r5
ldrb r1, [r0]
adds r0, r2, 0
ands r0, r1
cmp r0, 0
bne _080DD71A
movs r0, 0x5
bl PlaySE
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
bl ActionSelectionDestroyCursorAt
ldrb r1, [r4]
adds r1, r5
ldrb r0, [r1]
movs r2, 0x1
b _080DD6BE
.align 2, 0
_080DD684: .4byte gUnknown_2023FF8
_080DD688: .4byte gActiveBattler
_080DD68C:
movs r0, 0x40
ands r0, r1
cmp r0, 0
beq _080DD6D8
ldr r5, _080DD6D0 @ =gUnknown_2023FF8
ldr r4, _080DD6D4 @ =gActiveBattler
ldrb r0, [r4]
adds r0, r5
ldrb r1, [r0]
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _080DD71A
movs r0, 0x5
bl PlaySE
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
bl ActionSelectionDestroyCursorAt
ldrb r1, [r4]
adds r1, r5
ldrb r0, [r1]
movs r2, 0x2
_080DD6BE:
eors r0, r2
strb r0, [r1]
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
movs r1, 0
bl ActionSelectionCreateCursorAt
b _080DD71A
.align 2, 0
_080DD6D0: .4byte gUnknown_2023FF8
_080DD6D4: .4byte gActiveBattler
_080DD6D8:
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _080DD71A
ldr r5, _080DD720 @ =gUnknown_2023FF8
ldr r4, _080DD724 @ =gActiveBattler
ldrb r0, [r4]
adds r0, r5
ldrb r1, [r0]
movs r0, 0x2
ands r0, r1
cmp r0, 0
bne _080DD71A
movs r0, 0x5
bl PlaySE
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
bl ActionSelectionDestroyCursorAt
ldrb r1, [r4]
adds r1, r5
ldrb r0, [r1]
movs r2, 0x2
eors r0, r2
strb r0, [r1]
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
movs r1, 0
bl ActionSelectionCreateCursorAt
_080DD71A:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080DD720: .4byte gUnknown_2023FF8
_080DD724: .4byte gActiveBattler
thumb_func_end HandleInputChooseAction_0
thumb_func_start sub_80DD728
sub_80DD728: @ 80DD728
push {lr}
ldr r2, _080DD750 @ =gSprites
ldr r1, _080DD754 @ =gUnknown_2023D44
ldr r0, _080DD758 @ =gActiveBattler
ldrb r0, [r0]
adds r0, r1
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r2, 0x1C
adds r0, r2
ldr r1, [r0]
ldr r0, _080DD75C @ =SpriteCallbackDummy
cmp r1, r0
bne _080DD74C
bl SafariBufferExecCompleted
_080DD74C:
pop {r0}
bx r0
.align 2, 0
_080DD750: .4byte gSprites
_080DD754: .4byte gUnknown_2023D44
_080DD758: .4byte gActiveBattler
_080DD75C: .4byte SpriteCallbackDummy
thumb_func_end sub_80DD728
thumb_func_start CompleteOnInactiveTextPrinter_3
CompleteOnInactiveTextPrinter_3: @ 80DD760
push {lr}
movs r0, 0
bl IsTextPrinterActive
lsls r0, 16
cmp r0, 0
bne _080DD772
bl SafariBufferExecCompleted
_080DD772:
pop {r0}
bx r0
thumb_func_end CompleteOnInactiveTextPrinter_3
thumb_func_start sub_80DD778
sub_80DD778: @ 80DD778
push {lr}
ldr r2, _080DD7A0 @ =gSprites
ldr r1, _080DD7A4 @ =gUnknown_3004FF0
ldr r0, _080DD7A8 @ =gActiveBattler
ldrb r0, [r0]
adds r0, r1
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r2, 0x1C
adds r0, r2
ldr r1, [r0]
ldr r0, _080DD7AC @ =SpriteCallbackDummy
cmp r1, r0
bne _080DD79C
bl SafariBufferExecCompleted
_080DD79C:
pop {r0}
bx r0
.align 2, 0
_080DD7A0: .4byte gSprites
_080DD7A4: .4byte gUnknown_3004FF0
_080DD7A8: .4byte gActiveBattler
_080DD7AC: .4byte SpriteCallbackDummy
thumb_func_end sub_80DD778
thumb_func_start sub_80DD7B0
sub_80DD7B0: @ 80DD7B0
push {lr}
ldr r0, _080DD7E0 @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _080DD7DA
ldr r2, _080DD7E4 @ =gMain
ldr r0, _080DD7E8 @ =0x00000439
adds r3, r2, r0
ldrb r1, [r3]
movs r0, 0x3
negs r0, r0
ands r0, r1
strb r0, [r3]
ldr r0, _080DD7EC @ =gUnknown_3004F80
ldr r0, [r0]
str r0, [r2]
ldr r0, [r2, 0x8]
bl SetMainCallback2
_080DD7DA:
pop {r0}
bx r0
.align 2, 0
_080DD7E0: .4byte gPaletteFade
_080DD7E4: .4byte gMain
_080DD7E8: .4byte 0x00000439
_080DD7EC: .4byte gUnknown_3004F80
thumb_func_end sub_80DD7B0
thumb_func_start CompleteOnSpecialAnimDone_0
CompleteOnSpecialAnimDone_0: @ 80DD7F0
push {lr}
ldr r0, _080DD820 @ =gUnknown_2024005
ldrb r0, [r0]
cmp r0, 0
beq _080DD816
ldr r0, _080DD824 @ =gUnknown_2024018
ldr r2, [r0]
ldr r0, _080DD828 @ =gActiveBattler
ldrb r1, [r0]
ldr r2, [r2, 0x4]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r1, [r0]
movs r0, 0x40
ands r0, r1
cmp r0, 0
bne _080DD81A
_080DD816:
bl SafariBufferExecCompleted
_080DD81A:
pop {r0}
bx r0
.align 2, 0
_080DD820: .4byte gUnknown_2024005
_080DD824: .4byte gUnknown_2024018
_080DD828: .4byte gActiveBattler
thumb_func_end CompleteOnSpecialAnimDone_0
thumb_func_start sub_80DD82C
sub_80DD82C: @ 80DD82C
push {lr}
ldr r0, _080DD84C @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _080DD848
ldr r1, _080DD850 @ =gUnknown_3004FE0
ldr r0, _080DD854 @ =gActiveBattler
ldrb r0, [r0]
lsls r0, 2
adds r0, r1
ldr r1, _080DD858 @ =CompleteWhenChosePokeblock
str r1, [r0]
_080DD848:
pop {r0}
bx r0
.align 2, 0
_080DD84C: .4byte gPaletteFade
_080DD850: .4byte gUnknown_3004FE0
_080DD854: .4byte gActiveBattler
_080DD858: .4byte CompleteWhenChosePokeblock
thumb_func_end sub_80DD82C
thumb_func_start CompleteWhenChosePokeblock
CompleteWhenChosePokeblock: @ 80DD85C
push {lr}
ldr r0, _080DD888 @ =gMain
ldr r1, [r0, 0x4]
ldr r0, _080DD88C @ =sub_8011100
cmp r1, r0
bne _080DD882
ldr r0, _080DD890 @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _080DD882
ldr r0, _080DD894 @ =gUnknown_203AD30
ldrh r1, [r0]
movs r0, 0x1
bl EmitOneReturnValue
bl SafariBufferExecCompleted
_080DD882:
pop {r0}
bx r0
.align 2, 0
_080DD888: .4byte gMain
_080DD88C: .4byte sub_8011100
_080DD890: .4byte gPaletteFade
_080DD894: .4byte gUnknown_203AD30
thumb_func_end CompleteWhenChosePokeblock
thumb_func_start CompleteOnFinishedBattleAnimation_3
CompleteOnFinishedBattleAnimation_3: @ 80DD898
push {lr}
ldr r0, _080DD8C0 @ =gUnknown_2024018
ldr r2, [r0]
ldr r0, _080DD8C4 @ =gActiveBattler
ldrb r1, [r0]
ldr r2, [r2, 0x4]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r1, [r0]
movs r0, 0x20
ands r0, r1
cmp r0, 0
bne _080DD8BA
bl SafariBufferExecCompleted
_080DD8BA:
pop {r0}
bx r0
.align 2, 0
_080DD8C0: .4byte gUnknown_2024018
_080DD8C4: .4byte gActiveBattler
thumb_func_end CompleteOnFinishedBattleAnimation_3
thumb_func_start SafariBufferExecCompleted
SafariBufferExecCompleted: @ 80DD8C8
push {r4,lr}
sub sp, 0x4
ldr r1, _080DD908 @ =gUnknown_3004FE0
ldr r4, _080DD90C @ =gActiveBattler
ldrb r0, [r4]
lsls r0, 2
adds r0, r1
ldr r1, _080DD910 @ =SafariBufferRunCommand
str r1, [r0]
ldr r0, _080DD914 @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x2
ands r0, r1
cmp r0, 0
beq _080DD91C
bl GetMultiplayerId
mov r1, sp
strb r0, [r1]
movs r0, 0x2
movs r1, 0x4
mov r2, sp
bl PrepareBufferDataTransferLink
ldr r1, _080DD918 @ =gUnknown_2022BC4
ldrb r0, [r4]
lsls r0, 9
adds r0, r1
movs r1, 0x38
strb r1, [r0]
b _080DD92E
.align 2, 0
_080DD908: .4byte gUnknown_3004FE0
_080DD90C: .4byte gActiveBattler
_080DD910: .4byte SafariBufferRunCommand
_080DD914: .4byte gBattleTypeFlags
_080DD918: .4byte gUnknown_2022BC4
_080DD91C:
ldr r2, _080DD938 @ =gUnknown_2023BC8
ldr r1, _080DD93C @ =gBitTable
ldrb r0, [r4]
lsls r0, 2
adds r0, r1
ldr r1, [r0]
ldr r0, [r2]
bics r0, r1
str r0, [r2]
_080DD92E:
add sp, 0x4
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080DD938: .4byte gUnknown_2023BC8
_080DD93C: .4byte gBitTable
thumb_func_end SafariBufferExecCompleted
thumb_func_start CompleteOnFinishedStatusAnimation_3
CompleteOnFinishedStatusAnimation_3: @ 80DD940
push {lr}
ldr r0, _080DD968 @ =gUnknown_2024018
ldr r2, [r0]
ldr r0, _080DD96C @ =gActiveBattler
ldrb r1, [r0]
ldr r2, [r2, 0x4]
lsls r0, r1, 1
adds r0, r1
lsls r0, 2
adds r0, r2
ldrb r1, [r0]
movs r0, 0x10
ands r0, r1
cmp r0, 0
bne _080DD962
bl SafariBufferExecCompleted
_080DD962:
pop {r0}
bx r0
.align 2, 0
_080DD968: .4byte gUnknown_2024018
_080DD96C: .4byte gActiveBattler
thumb_func_end CompleteOnFinishedStatusAnimation_3
thumb_func_start sub_80DD970
sub_80DD970: @ 80DD970
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DD970
thumb_func_start sub_80DD97C
sub_80DD97C: @ 80DD97C
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DD97C
thumb_func_start sub_80DD988
sub_80DD988: @ 80DD988
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DD988
thumb_func_start sub_80DD994
sub_80DD994: @ 80DD994
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DD994
thumb_func_start sub_80DD9A0
sub_80DD9A0: @ 80DD9A0
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DD9A0
thumb_func_start sub_80DD9AC
sub_80DD9AC: @ 80DD9AC
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DD9AC
thumb_func_start sub_80DD9B8
sub_80DD9B8: @ 80DD9B8
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DD9B8
thumb_func_start SafariHandleDrawTrainerPic
SafariHandleDrawTrainerPic: @ 80DD9C4
push {r4-r6,lr}
ldr r4, _080DDA7C @ =gSaveBlock2Ptr
ldr r0, [r4]
ldrb r0, [r0, 0x8]
ldr r5, _080DDA80 @ =gActiveBattler
ldrb r1, [r5]
bl sub_8034750
ldr r0, [r4]
ldrb r6, [r0, 0x8]
ldrb r0, [r5]
bl GetBattlerPosition
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
adds r0, r6, 0
bl SetMultiuseSpriteTemplateToTrainerBack
ldr r0, _080DDA84 @ =gMultiuseSpriteTemplate
ldr r2, _080DDA88 @ =gUnknown_8239F8C
ldr r1, [r4]
ldrb r1, [r1, 0x8]
lsls r1, 2
adds r1, r2
ldrb r1, [r1]
movs r2, 0x8
subs r2, r1
lsls r2, 18
movs r1, 0xA0
lsls r1, 15
adds r2, r1
asrs r2, 16
movs r1, 0x50
movs r3, 0x1E
bl CreateSprite
ldr r6, _080DDA8C @ =gUnknown_2023D44
ldrb r1, [r5]
adds r1, r6
strb r0, [r1]
ldr r4, _080DDA90 @ =gSprites
ldrb r3, [r5]
adds r0, r3, r6
ldrb r0, [r0]
lsls r1, r0, 4
adds r1, r0
lsls r1, 2
adds r1, r4
lsls r3, 4
ldrb r2, [r1, 0x5]
movs r0, 0xF
ands r0, r2
orrs r0, r3
strb r0, [r1, 0x5]
ldrb r0, [r5]
adds r0, r6
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
movs r1, 0xF0
strh r1, [r0, 0x24]
ldrb r0, [r5]
adds r0, r6
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r0, r4
ldr r1, _080DDA94 @ =0x0000fffe
strh r1, [r0, 0x2E]
ldrb r0, [r5]
adds r0, r6
ldrb r1, [r0]
lsls r0, r1, 4
adds r0, r1
lsls r0, 2
adds r4, 0x1C
adds r0, r4
ldr r1, _080DDA98 @ =sub_8033EEC
str r1, [r0]
ldr r1, _080DDA9C @ =gUnknown_3004FE0
ldrb r0, [r5]
lsls r0, 2
adds r0, r1
ldr r1, _080DDAA0 @ =sub_80DD728
str r1, [r0]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080DDA7C: .4byte gSaveBlock2Ptr
_080DDA80: .4byte gActiveBattler
_080DDA84: .4byte gMultiuseSpriteTemplate
_080DDA88: .4byte gUnknown_8239F8C
_080DDA8C: .4byte gUnknown_2023D44
_080DDA90: .4byte gSprites
_080DDA94: .4byte 0x0000fffe
_080DDA98: .4byte sub_8033EEC
_080DDA9C: .4byte gUnknown_3004FE0
_080DDAA0: .4byte sub_80DD728
thumb_func_end SafariHandleDrawTrainerPic
thumb_func_start sub_80DDAA4
sub_80DDAA4: @ 80DDAA4
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DDAA4
thumb_func_start sub_80DDAB0
sub_80DDAB0: @ 80DDAB0
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DDAB0
thumb_func_start sub_80DDABC
sub_80DDABC: @ 80DDABC
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DDABC
thumb_func_start sub_80DDAC8
sub_80DDAC8: @ 80DDAC8
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DDAC8
thumb_func_start sub_80DDAD4
sub_80DDAD4: @ 80DDAD4
push {r4,r5,lr}
ldr r0, _080DDB14 @ =gUnknown_2024018
ldr r0, [r0]
ldr r1, [r0, 0x8]
movs r0, 0x4
strb r0, [r1, 0x8]
ldr r1, _080DDB18 @ =gUnknown_2024005
movs r0, 0x1
strb r0, [r1]
ldr r5, _080DDB1C @ =gActiveBattler
ldrb r4, [r5]
movs r0, 0x1
bl GetBattlerAtPosition
adds r2, r0, 0
lsls r2, 24
lsrs r2, 24
adds r0, r4, 0
adds r1, r4, 0
movs r3, 0x4
bl InitAndLaunchSpecialAnimation
ldr r1, _080DDB20 @ =gUnknown_3004FE0
ldrb r0, [r5]
lsls r0, 2
adds r0, r1
ldr r1, _080DDB24 @ =CompleteOnSpecialAnimDone_0
str r1, [r0]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080DDB14: .4byte gUnknown_2024018
_080DDB18: .4byte gUnknown_2024005
_080DDB1C: .4byte gActiveBattler
_080DDB20: .4byte gUnknown_3004FE0
_080DDB24: .4byte CompleteOnSpecialAnimDone_0
thumb_func_end sub_80DDAD4
thumb_func_start sub_80DDB28
sub_80DDB28: @ 80DDB28
push {r4,r5,lr}
ldr r1, _080DDB70 @ =gUnknown_2022BC4
ldr r5, _080DDB74 @ =gActiveBattler
ldrb r0, [r5]
lsls r0, 9
adds r1, 0x1
adds r0, r1
ldrb r1, [r0]
ldr r0, _080DDB78 @ =gUnknown_2024018
ldr r0, [r0]
ldr r0, [r0, 0x8]
strb r1, [r0, 0x8]
ldr r1, _080DDB7C @ =gUnknown_2024005
movs r0, 0x1
strb r0, [r1]
ldrb r4, [r5]
movs r0, 0x1
bl GetBattlerAtPosition
adds r2, r0, 0
lsls r2, 24
lsrs r2, 24
adds r0, r4, 0
adds r1, r4, 0
movs r3, 0x4
bl InitAndLaunchSpecialAnimation
ldr r1, _080DDB80 @ =gUnknown_3004FE0
ldrb r0, [r5]
lsls r0, 2
adds r0, r1
ldr r1, _080DDB84 @ =CompleteOnSpecialAnimDone_0
str r1, [r0]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080DDB70: .4byte gUnknown_2022BC4
_080DDB74: .4byte gActiveBattler
_080DDB78: .4byte gUnknown_2024018
_080DDB7C: .4byte gUnknown_2024005
_080DDB80: .4byte gUnknown_3004FE0
_080DDB84: .4byte CompleteOnSpecialAnimDone_0
thumb_func_end sub_80DDB28
thumb_func_start sub_80DDB88
sub_80DDB88: @ 80DDB88
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DDB88
thumb_func_start sub_80DDB94
sub_80DDB94: @ 80DDB94
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DDB94
thumb_func_start sub_80DDBA0
sub_80DDBA0: @ 80DDBA0
push {r4,lr}
ldr r0, _080DDBD4 @ =gUnknown_2022974
movs r1, 0
strh r1, [r0]
ldr r0, _080DDBD8 @ =gUnknown_2022976
strh r1, [r0]
ldr r0, _080DDBDC @ =gActiveBattler
ldrb r4, [r0]
lsls r4, 9
ldr r0, _080DDBE0 @ =gUnknown_2022BC6
adds r4, r0
ldrh r0, [r4]
bl sub_80D7274
ldrh r0, [r4]
bl sub_80D89B0
lsls r0, 24
cmp r0, 0
beq _080DDBE8
ldr r0, _080DDBE4 @ =gDisplayedStringBattle
movs r1, 0x40
bl sub_80D87BC
b _080DDBF0
.align 2, 0
_080DDBD4: .4byte gUnknown_2022974
_080DDBD8: .4byte gUnknown_2022976
_080DDBDC: .4byte gActiveBattler
_080DDBE0: .4byte gUnknown_2022BC6
_080DDBE4: .4byte gDisplayedStringBattle
_080DDBE8:
ldr r0, _080DDC04 @ =gDisplayedStringBattle
movs r1, 0
bl sub_80D87BC
_080DDBF0:
ldr r1, _080DDC08 @ =gUnknown_3004FE0
ldr r0, _080DDC0C @ =gActiveBattler
ldrb r0, [r0]
lsls r0, 2
adds r0, r1
ldr r1, _080DDC10 @ =CompleteOnInactiveTextPrinter_3
str r1, [r0]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080DDC04: .4byte gDisplayedStringBattle
_080DDC08: .4byte gUnknown_3004FE0
_080DDC0C: .4byte gActiveBattler
_080DDC10: .4byte CompleteOnInactiveTextPrinter_3
thumb_func_end sub_80DDBA0
thumb_func_start sub_80DDC14
sub_80DDC14: @ 80DDC14
push {lr}
ldr r0, _080DDC2C @ =gActiveBattler
ldrb r0, [r0]
bl GetBattlerSide
lsls r0, 24
cmp r0, 0
bne _080DDC30
bl sub_80DDBA0
b _080DDC34
.align 2, 0
_080DDC2C: .4byte gActiveBattler
_080DDC30:
bl SafariBufferExecCompleted
_080DDC34:
pop {r0}
bx r0
thumb_func_end sub_80DDC14
thumb_func_start sub_80DDC38
sub_80DDC38: @ 80DDC38
push {lr}
bl IsDma3ManagerBusyWithBgCopy
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0
bne _080DDC5E
ldr r0, _080DDC64 @ =gUnknown_2022974
strh r1, [r0]
ldr r1, _080DDC68 @ =gUnknown_2022976
movs r0, 0xA0
strh r0, [r1]
ldr r1, _080DDC6C @ =gUnknown_3004FE0
ldr r0, _080DDC70 @ =gActiveBattler
ldrb r0, [r0]
lsls r0, 2
adds r0, r1
ldr r1, _080DDC74 @ =HandleInputChooseAction_0
str r1, [r0]
_080DDC5E:
pop {r0}
bx r0
.align 2, 0
_080DDC64: .4byte gUnknown_2022974
_080DDC68: .4byte gUnknown_2022976
_080DDC6C: .4byte gUnknown_3004FE0
_080DDC70: .4byte gActiveBattler
_080DDC74: .4byte HandleInputChooseAction_0
thumb_func_end sub_80DDC38
thumb_func_start sub_80DDC78
sub_80DDC78: @ 80DDC78
push {r4,lr}
ldr r1, _080DDCCC @ =gUnknown_3004FE0
ldr r0, _080DDCD0 @ =gActiveBattler
ldrb r0, [r0]
lsls r0, 2
adds r0, r1
ldr r1, _080DDCD4 @ =sub_80DDC38
str r1, [r0]
ldr r0, _080DDCD8 @ =gUnknown_83FDA4C
movs r1, 0
bl sub_80D87BC
ldr r0, _080DDCDC @ =gUnknown_83FE747
movs r1, 0x2
bl sub_80D87BC
movs r4, 0
_080DDC9A:
lsls r0, r4, 24
lsrs r0, 24
bl ActionSelectionDestroyCursorAt
adds r4, 0x1
cmp r4, 0x3
ble _080DDC9A
ldr r1, _080DDCE0 @ =gUnknown_2023FF8
ldr r0, _080DDCD0 @ =gActiveBattler
ldrb r0, [r0]
adds r0, r1
ldrb r0, [r0]
movs r1, 0
bl ActionSelectionCreateCursorAt
ldr r0, _080DDCE4 @ =gUnknown_83FE6E6
bl BattleStringExpandPlaceholdersToDisplayedString
ldr r0, _080DDCE8 @ =gDisplayedStringBattle
movs r1, 0x1
bl sub_80D87BC
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080DDCCC: .4byte gUnknown_3004FE0
_080DDCD0: .4byte gActiveBattler
_080DDCD4: .4byte sub_80DDC38
_080DDCD8: .4byte gUnknown_83FDA4C
_080DDCDC: .4byte gUnknown_83FE747
_080DDCE0: .4byte gUnknown_2023FF8
_080DDCE4: .4byte gUnknown_83FE6E6
_080DDCE8: .4byte gDisplayedStringBattle
thumb_func_end sub_80DDC78
thumb_func_start sub_80DDCEC
sub_80DDCEC: @ 80DDCEC
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DDCEC
thumb_func_start sub_80DDCF8
sub_80DDCF8: @ 80DDCF8
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DDCF8
thumb_func_start sub_80DDD04
sub_80DDD04: @ 80DDD04
push {lr}
sub sp, 0x4
movs r0, 0x1
negs r0, r0
movs r1, 0
str r1, [sp]
movs r2, 0
movs r3, 0x10
bl BeginNormalPaletteFade
ldr r1, _080DDD34 @ =gUnknown_3004FE0
ldr r2, _080DDD38 @ =gActiveBattler
ldrb r0, [r2]
lsls r0, 2
adds r0, r1
ldr r1, _080DDD3C @ =sub_80DD82C
str r1, [r0]
ldr r1, _080DDD40 @ =gBattlerInMenuId
ldrb r0, [r2]
strb r0, [r1]
add sp, 0x4
pop {r0}
bx r0
.align 2, 0
_080DDD34: .4byte gUnknown_3004FE0
_080DDD38: .4byte gActiveBattler
_080DDD3C: .4byte sub_80DD82C
_080DDD40: .4byte gBattlerInMenuId
thumb_func_end sub_80DDD04
thumb_func_start sub_80DDD44
sub_80DDD44: @ 80DDD44
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DDD44
thumb_func_start sub_80DDD50
sub_80DDD50: @ 80DDD50
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DDD50
thumb_func_start sub_80DDD5C
sub_80DDD5C: @ 80DDD5C
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DDD5C
thumb_func_start sub_80DDD68
sub_80DDD68: @ 80DDD68
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DDD68
thumb_func_start SafariHandleStatusIconUpdate
SafariHandleStatusIconUpdate: @ 80DDD74
push {lr}
ldr r0, _080DDDA0 @ =gUnknown_3004FF0
ldr r1, _080DDDA4 @ =gActiveBattler
ldrb r1, [r1]
adds r0, r1, r0
ldrb r0, [r0]
ldr r2, _080DDDA8 @ =gBattlerPartyIndexes
lsls r1, 1
adds r1, r2
ldrh r2, [r1]
movs r1, 0x64
muls r1, r2
ldr r2, _080DDDAC @ =gPlayerParty
adds r1, r2
movs r2, 0xB
bl UpdateHealthboxAttribute
bl SafariBufferExecCompleted
pop {r0}
bx r0
.align 2, 0
_080DDDA0: .4byte gUnknown_3004FF0
_080DDDA4: .4byte gActiveBattler
_080DDDA8: .4byte gBattlerPartyIndexes
_080DDDAC: .4byte gPlayerParty
thumb_func_end SafariHandleStatusIconUpdate
thumb_func_start sub_80DDDB0
sub_80DDDB0: @ 80DDDB0
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DDDB0
thumb_func_start sub_80DDDBC
sub_80DDDBC: @ 80DDDBC
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DDDBC
thumb_func_start sub_80DDDC8
sub_80DDDC8: @ 80DDDC8
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DDDC8
thumb_func_start sub_80DDDD4
sub_80DDDD4: @ 80DDDD4
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DDDD4
thumb_func_start sub_80DDDE0
sub_80DDDE0: @ 80DDDE0
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DDDE0
thumb_func_start sub_80DDDEC
sub_80DDDEC: @ 80DDDEC
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DDDEC
thumb_func_start sub_80DDDF8
sub_80DDDF8: @ 80DDDF8
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DDDF8
thumb_func_start sub_80DDE04
sub_80DDE04: @ 80DDE04
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DDE04
thumb_func_start sub_80DDE10
sub_80DDE10: @ 80DDE10
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DDE10
thumb_func_start sub_80DDE1C
sub_80DDE1C: @ 80DDE1C
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DDE1C
thumb_func_start sub_80DDE28
sub_80DDE28: @ 80DDE28
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DDE28
thumb_func_start sub_80DDE34
sub_80DDE34: @ 80DDE34
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DDE34
thumb_func_start sub_80DDE40
sub_80DDE40: @ 80DDE40
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DDE40
thumb_func_start sub_80DDE4C
sub_80DDE4C: @ 80DDE4C
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DDE4C
thumb_func_start sub_80DDE58
sub_80DDE58: @ 80DDE58
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DDE58
thumb_func_start sub_80DDE64
sub_80DDE64: @ 80DDE64
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DDE64
thumb_func_start SafariHandlePlaySE
SafariHandlePlaySE: @ 80DDE70
push {r4,lr}
ldr r4, _080DDEAC @ =gActiveBattler
ldrb r0, [r4]
bl GetBattlerSide
lsls r0, 24
movs r3, 0x3F
cmp r0, 0
bne _080DDE84
movs r3, 0xC0
_080DDE84:
ldr r2, _080DDEB0 @ =gUnknown_2022BC4
ldrb r1, [r4]
lsls r1, 9
adds r0, r2, 0x1
adds r0, r1, r0
ldrb r0, [r0]
adds r2, 0x2
adds r1, r2
ldrb r1, [r1]
lsls r1, 8
orrs r0, r1
lsls r1, r3, 24
asrs r1, 24
bl PlaySE12WithPanning
bl SafariBufferExecCompleted
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080DDEAC: .4byte gActiveBattler
_080DDEB0: .4byte gUnknown_2022BC4
thumb_func_end SafariHandlePlaySE
thumb_func_start SafariHandlecmd44
SafariHandlecmd44: @ 80DDEB4
push {lr}
ldr r2, _080DDEDC @ =gUnknown_2022BC4
ldr r0, _080DDEE0 @ =gActiveBattler
ldrb r1, [r0]
lsls r1, 9
adds r0, r2, 0x1
adds r0, r1, r0
ldrb r0, [r0]
adds r2, 0x2
adds r1, r2
ldrb r1, [r1]
lsls r1, 8
orrs r0, r1
bl PlayFanfare
bl SafariBufferExecCompleted
pop {r0}
bx r0
.align 2, 0
_080DDEDC: .4byte gUnknown_2022BC4
_080DDEE0: .4byte gActiveBattler
thumb_func_end SafariHandlecmd44
thumb_func_start SafariHandleFaintingCry
SafariHandleFaintingCry: @ 80DDEE4
push {lr}
ldr r1, _080DDF14 @ =gBattlerPartyIndexes
ldr r0, _080DDF18 @ =gActiveBattler
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
ldrh r1, [r0]
movs r0, 0x64
muls r0, r1
ldr r1, _080DDF1C @ =gPlayerParty
adds r0, r1
movs r1, 0xB
bl GetMonData
lsls r0, 16
lsrs r0, 16
movs r1, 0x19
bl PlayCry1
bl SafariBufferExecCompleted
pop {r0}
bx r0
.align 2, 0
_080DDF14: .4byte gBattlerPartyIndexes
_080DDF18: .4byte gActiveBattler
_080DDF1C: .4byte gPlayerParty
thumb_func_end SafariHandleFaintingCry
thumb_func_start SafariHandleIntroSlide
SafariHandleIntroSlide: @ 80DDF20
push {lr}
ldr r1, _080DDF48 @ =gUnknown_2022BC4
ldr r0, _080DDF4C @ =gActiveBattler
ldrb r0, [r0]
lsls r0, 9
adds r1, 0x1
adds r0, r1
ldrb r0, [r0]
bl sub_80BC3A0
ldr r2, _080DDF50 @ =gUnknown_2023F4C
ldrh r0, [r2]
movs r1, 0x1
orrs r0, r1
strh r0, [r2]
bl SafariBufferExecCompleted
pop {r0}
bx r0
.align 2, 0
_080DDF48: .4byte gUnknown_2022BC4
_080DDF4C: .4byte gActiveBattler
_080DDF50: .4byte gUnknown_2023F4C
thumb_func_end SafariHandleIntroSlide
thumb_func_start SafariHandleIntroTrainerBallThrow
SafariHandleIntroTrainerBallThrow: @ 80DDF54
push {r4,r5,lr}
ldr r5, _080DDF98 @ =gUnknown_3004FF0
ldr r4, _080DDF9C @ =gActiveBattler
ldrb r1, [r4]
adds r0, r1, r5
ldrb r0, [r0]
ldr r2, _080DDFA0 @ =gBattlerPartyIndexes
lsls r1, 1
adds r1, r2
ldrh r2, [r1]
movs r1, 0x64
muls r1, r2
ldr r2, _080DDFA4 @ =gPlayerParty
adds r1, r2
movs r2, 0xA
bl UpdateHealthboxAttribute
ldrb r0, [r4]
bl sub_804BD94
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
bl SetHealthboxSpriteVisible
ldr r1, _080DDFA8 @ =gUnknown_3004FE0
ldrb r0, [r4]
lsls r0, 2
adds r0, r1
ldr r1, _080DDFAC @ =sub_80DD778
str r1, [r0]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080DDF98: .4byte gUnknown_3004FF0
_080DDF9C: .4byte gActiveBattler
_080DDFA0: .4byte gBattlerPartyIndexes
_080DDFA4: .4byte gPlayerParty
_080DDFA8: .4byte gUnknown_3004FE0
_080DDFAC: .4byte sub_80DD778
thumb_func_end SafariHandleIntroTrainerBallThrow
thumb_func_start sub_80DDFB0
sub_80DDFB0: @ 80DDFB0
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DDFB0
thumb_func_start sub_80DDFBC
sub_80DDFBC: @ 80DDFBC
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DDFBC
thumb_func_start sub_80DDFC8
sub_80DDFC8: @ 80DDFC8
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DDFC8
thumb_func_start sub_80DDFD4
sub_80DDFD4: @ 80DDFD4
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DDFD4
thumb_func_start SafariHandleBattleAnimation
SafariHandleBattleAnimation: @ 80DDFE0
push {r4-r6,lr}
sub sp, 0x4
ldr r5, _080DE018 @ =gUnknown_2022BC4
ldr r6, _080DE01C @ =gActiveBattler
ldrb r2, [r6]
lsls r1, r2, 9
adds r0, r5, 0x1
adds r0, r1, r0
ldrb r3, [r0]
adds r0, r5, 0x2
adds r0, r1, r0
ldrb r4, [r0]
adds r5, 0x3
adds r1, r5
ldrb r0, [r1]
lsls r0, 8
orrs r4, r0
str r4, [sp]
adds r0, r2, 0
adds r1, r2, 0
bl TryHandleLaunchBattleTableAnimation
lsls r0, 24
cmp r0, 0
beq _080DE020
bl SafariBufferExecCompleted
b _080DE02C
.align 2, 0
_080DE018: .4byte gUnknown_2022BC4
_080DE01C: .4byte gActiveBattler
_080DE020:
ldr r0, _080DE034 @ =gUnknown_3004FE0
ldrb r1, [r6]
lsls r1, 2
adds r1, r0
ldr r0, _080DE038 @ =CompleteOnFinishedBattleAnimation_3
str r0, [r1]
_080DE02C:
add sp, 0x4
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080DE034: .4byte gUnknown_3004FE0
_080DE038: .4byte CompleteOnFinishedBattleAnimation_3
thumb_func_end SafariHandleBattleAnimation
thumb_func_start sub_80DE03C
sub_80DE03C: @ 80DE03C
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DE03C
thumb_func_start sub_80DE048
sub_80DE048: @ 80DE048
push {lr}
bl SafariBufferExecCompleted
pop {r0}
bx r0
thumb_func_end sub_80DE048
thumb_func_start SafariHandleCmd55
SafariHandleCmd55: @ 80DE054
push {r4,lr}
ldr r2, _080DE098 @ =gUnknown_2023E8A
ldr r1, _080DE09C @ =gUnknown_2022BC4
ldr r4, _080DE0A0 @ =gActiveBattler
ldrb r0, [r4]
lsls r0, 9
adds r1, 0x1
adds r0, r1
ldrb r0, [r0]
strb r0, [r2]
movs r0, 0x5
bl FadeOutMapMusic
movs r0, 0x3
bl BeginFastPaletteFade
bl SafariBufferExecCompleted
ldr r0, _080DE0A4 @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x6
ands r0, r1
cmp r0, 0x2
bne _080DE090
ldr r0, _080DE0A8 @ =gUnknown_3004FE0
ldrb r1, [r4]
lsls r1, 2
adds r1, r0
ldr r0, _080DE0AC @ =sub_80DD7B0
str r0, [r1]
_080DE090:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_080DE098: .4byte gUnknown_2023E8A
_080DE09C: .4byte gUnknown_2022BC4
_080DE0A0: .4byte gActiveBattler
_080DE0A4: .4byte gBattleTypeFlags
_080DE0A8: .4byte gUnknown_3004FE0
_080DE0AC: .4byte sub_80DD7B0
thumb_func_end SafariHandleCmd55
thumb_func_start nullsub_80
nullsub_80: @ 80DE0B0
bx lr
thumb_func_end nullsub_80
.align 2, 0 @ Don't pad with nop.