summaryrefslogtreecommitdiff
path: root/asm/battle_controller_safari.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/battle_controller_safari.s')
-rw-r--r--asm/battle_controller_safari.s1402
1 files changed, 1402 insertions, 0 deletions
diff --git a/asm/battle_controller_safari.s b/asm/battle_controller_safari.s
new file mode 100644
index 000000000..e98d4ccd0
--- /dev/null
+++ b/asm/battle_controller_safari.s
@@ -0,0 +1,1402 @@
+ .include "constants/gba_constants.inc"
+ .include "constants/species_constants.inc"
+ .include "asm/macros.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start unref_sub_812B464
+unref_sub_812B464: @ 812B464
+ bx lr
+ thumb_func_end unref_sub_812B464
+
+ thumb_func_start SetBankFuncToSafariBufferRunCommand
+SetBankFuncToSafariBufferRunCommand: @ 812B468
+ ldr r1, _0812B478 @ =gBattleBankFunc
+ ldr r0, _0812B47C @ =gActiveBank
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, _0812B480 @ =SafariBufferRunCommand
+ str r1, [r0]
+ bx lr
+ .align 2, 0
+_0812B478: .4byte gBattleBankFunc
+_0812B47C: .4byte gActiveBank
+_0812B480: .4byte SafariBufferRunCommand
+ thumb_func_end SetBankFuncToSafariBufferRunCommand
+
+ thumb_func_start SafariBufferRunCommand
+SafariBufferRunCommand: @ 812B484
+ push {lr}
+ ldr r2, _0812B4B8 @ =gBattleExecBuffer
+ ldr r1, _0812B4BC @ =gBitTable
+ ldr r0, _0812B4C0 @ =gActiveBank
+ ldrb r3, [r0]
+ lsls r0, r3, 2
+ adds r0, r1
+ ldr r1, [r2]
+ ldr r0, [r0]
+ ands r1, r0
+ cmp r1, 0
+ beq _0812B4D0
+ ldr r0, _0812B4C4 @ =gBattleBufferA
+ lsls r1, r3, 9
+ adds r1, r0
+ ldrb r0, [r1]
+ cmp r0, 0x38
+ bhi _0812B4CC
+ ldr r0, _0812B4C8 @ =gSafariBufferCommands
+ ldrb r1, [r1]
+ lsls r1, 2
+ adds r1, r0
+ ldr r0, [r1]
+ bl _call_via_r0
+ b _0812B4D0
+ .align 2, 0
+_0812B4B8: .4byte gBattleExecBuffer
+_0812B4BC: .4byte gBitTable
+_0812B4C0: .4byte gActiveBank
+_0812B4C4: .4byte gBattleBufferA
+_0812B4C8: .4byte gSafariBufferCommands
+_0812B4CC:
+ bl SafariBufferExecCompleted
+_0812B4D0:
+ pop {r0}
+ bx r0
+ thumb_func_end SafariBufferRunCommand
+
+ thumb_func_start bx_battle_menu_t6_2
+bx_battle_menu_t6_2: @ 812B4D4
+ push {r4,r5,lr}
+ ldr r0, _0812B508 @ =gMain
+ ldrh r1, [r0, 0x2E]
+ movs r2, 0x1
+ adds r0, r2, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _0812B546
+ movs r0, 0x5
+ bl PlaySE
+ bl DestroyMenuCursor
+ ldr r1, _0812B50C @ =gActionSelectionCursor
+ ldr r0, _0812B510 @ =gActiveBank
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ beq _0812B524
+ cmp r0, 0x1
+ bgt _0812B514
+ cmp r0, 0
+ beq _0812B51E
+ b _0812B540
+ .align 2, 0
+_0812B508: .4byte gMain
+_0812B50C: .4byte gActionSelectionCursor
+_0812B510: .4byte gActiveBank
+_0812B514:
+ cmp r0, 0x2
+ beq _0812B52A
+ cmp r0, 0x3
+ beq _0812B536
+ b _0812B540
+_0812B51E:
+ movs r0, 0x1
+ movs r1, 0x5
+ b _0812B52E
+_0812B524:
+ movs r0, 0x1
+ movs r1, 0x6
+ b _0812B52E
+_0812B52A:
+ movs r0, 0x1
+ movs r1, 0x7
+_0812B52E:
+ movs r2, 0
+ bl Emitcmd33
+ b _0812B540
+_0812B536:
+ movs r0, 0x1
+ movs r1, 0x8
+ movs r2, 0
+ bl Emitcmd33
+_0812B540:
+ bl SafariBufferExecCompleted
+ b _0812B64E
+_0812B546:
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ beq _0812B584
+ ldr r5, _0812B57C @ =gActionSelectionCursor
+ ldr r4, _0812B580 @ =gActiveBank
+ ldrb r0, [r4]
+ adds r0, r5
+ ldrb r1, [r0]
+ adds r0, r2, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _0812B64E
+ movs r0, 0x5
+ bl PlaySE
+ ldrb r0, [r4]
+ adds r0, r5
+ ldrb r0, [r0]
+ bl nullsub_8
+ ldrb r1, [r4]
+ adds r1, r5
+ ldrb r0, [r1]
+ movs r2, 0x1
+ b _0812B5F2
+ .align 2, 0
+_0812B57C: .4byte gActionSelectionCursor
+_0812B580: .4byte gActiveBank
+_0812B584:
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _0812B5C0
+ ldr r5, _0812B5B8 @ =gActionSelectionCursor
+ ldr r4, _0812B5BC @ =gActiveBank
+ ldrb r0, [r4]
+ adds r0, r5
+ ldrb r1, [r0]
+ adds r0, r2, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _0812B64E
+ movs r0, 0x5
+ bl PlaySE
+ ldrb r0, [r4]
+ adds r0, r5
+ ldrb r0, [r0]
+ bl nullsub_8
+ ldrb r1, [r4]
+ adds r1, r5
+ ldrb r0, [r1]
+ movs r2, 0x1
+ b _0812B5F2
+ .align 2, 0
+_0812B5B8: .4byte gActionSelectionCursor
+_0812B5BC: .4byte gActiveBank
+_0812B5C0:
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ beq _0812B60C
+ ldr r5, _0812B604 @ =gActionSelectionCursor
+ ldr r4, _0812B608 @ =gActiveBank
+ ldrb r0, [r4]
+ adds r0, r5
+ ldrb r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _0812B64E
+ movs r0, 0x5
+ bl PlaySE
+ ldrb r0, [r4]
+ adds r0, r5
+ ldrb r0, [r0]
+ bl nullsub_8
+ ldrb r1, [r4]
+ adds r1, r5
+ ldrb r0, [r1]
+ movs r2, 0x2
+_0812B5F2:
+ eors r0, r2
+ strb r0, [r1]
+ ldrb r0, [r4]
+ adds r0, r5
+ ldrb r0, [r0]
+ movs r1, 0
+ bl sub_802E3E4
+ b _0812B64E
+ .align 2, 0
+_0812B604: .4byte gActionSelectionCursor
+_0812B608: .4byte gActiveBank
+_0812B60C:
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ beq _0812B64E
+ ldr r5, _0812B654 @ =gActionSelectionCursor
+ ldr r4, _0812B658 @ =gActiveBank
+ ldrb r0, [r4]
+ adds r0, r5
+ ldrb r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ bne _0812B64E
+ movs r0, 0x5
+ bl PlaySE
+ ldrb r0, [r4]
+ adds r0, r5
+ ldrb r0, [r0]
+ bl nullsub_8
+ 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 sub_802E3E4
+_0812B64E:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812B654: .4byte gActionSelectionCursor
+_0812B658: .4byte gActiveBank
+ thumb_func_end bx_battle_menu_t6_2
+
+ thumb_func_start sub_812B65C
+sub_812B65C: @ 812B65C
+ push {lr}
+ ldr r2, _0812B684 @ =gSprites
+ ldr r1, _0812B688 @ =gObjectBankIDs
+ ldr r0, _0812B68C @ =gActiveBank
+ 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, _0812B690 @ =SpriteCallbackDummy
+ cmp r1, r0
+ bne _0812B680
+ bl SafariBufferExecCompleted
+_0812B680:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812B684: .4byte gSprites
+_0812B688: .4byte gObjectBankIDs
+_0812B68C: .4byte gActiveBank
+_0812B690: .4byte SpriteCallbackDummy
+ thumb_func_end sub_812B65C
+
+ thumb_func_start sub_812B694
+sub_812B694: @ 812B694
+ push {lr}
+ ldr r0, _0812B6A8 @ =gUnknown_03004210
+ ldrh r0, [r0, 0x16]
+ cmp r0, 0
+ bne _0812B6A2
+ bl SafariBufferExecCompleted
+_0812B6A2:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812B6A8: .4byte gUnknown_03004210
+ thumb_func_end sub_812B694
+
+ thumb_func_start sub_812B6AC
+sub_812B6AC: @ 812B6AC
+ push {lr}
+ ldr r0, _0812B6DC @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _0812B6D6
+ ldr r2, _0812B6E0 @ =gMain
+ ldr r0, _0812B6E4 @ =0x0000043d
+ adds r3, r2, r0
+ ldrb r1, [r3]
+ movs r0, 0x3
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r3]
+ ldr r0, _0812B6E8 @ =gPreBattleCallback1
+ ldr r0, [r0]
+ str r0, [r2]
+ ldr r0, [r2, 0x8]
+ bl SetMainCallback2
+_0812B6D6:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812B6DC: .4byte gPaletteFade
+_0812B6E0: .4byte gMain
+_0812B6E4: .4byte 0x0000043d
+_0812B6E8: .4byte gPreBattleCallback1
+ thumb_func_end sub_812B6AC
+
+ thumb_func_start bx_wait_t6
+bx_wait_t6: @ 812B6EC
+ push {lr}
+ ldr r0, _0812B718 @ =gDoingBattleAnim
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0812B70E
+ ldr r0, _0812B71C @ =gActiveBank
+ ldrb r1, [r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0812B720 @ =0x02017810
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x40
+ ands r0, r1
+ cmp r0, 0
+ bne _0812B712
+_0812B70E:
+ bl SafariBufferExecCompleted
+_0812B712:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812B718: .4byte gDoingBattleAnim
+_0812B71C: .4byte gActiveBank
+_0812B720: .4byte 0x02017810
+ thumb_func_end bx_wait_t6
+
+ thumb_func_start sub_812B724
+sub_812B724: @ 812B724
+ push {lr}
+ ldr r0, _0812B748 @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _0812B744
+ ldr r1, _0812B74C @ =gBattleBankFunc
+ ldr r0, _0812B750 @ =gActiveBank
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, _0812B754 @ =sub_812B758
+ str r1, [r0]
+ bl sub_810BADC
+_0812B744:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812B748: .4byte gPaletteFade
+_0812B74C: .4byte gBattleBankFunc
+_0812B750: .4byte gActiveBank
+_0812B754: .4byte sub_812B758
+ thumb_func_end sub_812B724
+
+ thumb_func_start sub_812B758
+sub_812B758: @ 812B758
+ push {lr}
+ ldr r0, _0812B784 @ =gMain
+ ldr r1, [r0, 0x4]
+ ldr r0, _0812B788 @ =sub_800F808
+ cmp r1, r0
+ bne _0812B77E
+ ldr r0, _0812B78C @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _0812B77E
+ ldr r0, _0812B790 @ =gScriptItemId
+ ldrh r1, [r0]
+ movs r0, 0x1
+ bl Emitcmd35
+ bl SafariBufferExecCompleted
+_0812B77E:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812B784: .4byte gMain
+_0812B788: .4byte sub_800F808
+_0812B78C: .4byte gPaletteFade
+_0812B790: .4byte gScriptItemId
+ thumb_func_end sub_812B758
+
+ thumb_func_start sub_812B794
+sub_812B794: @ 812B794
+ push {lr}
+ ldr r0, _0812B7B8 @ =gActiveBank
+ ldrb r1, [r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0812B7BC @ =0x02017810
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x20
+ ands r0, r1
+ cmp r0, 0
+ bne _0812B7B2
+ bl SafariBufferExecCompleted
+_0812B7B2:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812B7B8: .4byte gActiveBank
+_0812B7BC: .4byte 0x02017810
+ thumb_func_end sub_812B794
+
+ thumb_func_start SafariBufferExecCompleted
+SafariBufferExecCompleted: @ 812B7C0
+ push {r4,lr}
+ sub sp, 0x4
+ ldr r1, _0812B800 @ =gBattleBankFunc
+ ldr r4, _0812B804 @ =gActiveBank
+ ldrb r0, [r4]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, _0812B808 @ =SafariBufferRunCommand
+ str r1, [r0]
+ ldr r0, _0812B80C @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _0812B814
+ bl GetMultiplayerId
+ mov r1, sp
+ strb r0, [r1]
+ movs r0, 0x2
+ movs r1, 0x4
+ mov r2, sp
+ bl PrepareBufferDataTransferLink
+ ldr r1, _0812B810 @ =gBattleBufferA
+ ldrb r0, [r4]
+ lsls r0, 9
+ adds r0, r1
+ movs r1, 0x38
+ strb r1, [r0]
+ b _0812B826
+ .align 2, 0
+_0812B800: .4byte gBattleBankFunc
+_0812B804: .4byte gActiveBank
+_0812B808: .4byte SafariBufferRunCommand
+_0812B80C: .4byte gBattleTypeFlags
+_0812B810: .4byte gBattleBufferA
+_0812B814:
+ ldr r2, _0812B830 @ =gBattleExecBuffer
+ ldr r1, _0812B834 @ =gBitTable
+ ldrb r0, [r4]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, [r0]
+ ldr r0, [r2]
+ bics r0, r1
+ str r0, [r2]
+_0812B826:
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812B830: .4byte gBattleExecBuffer
+_0812B834: .4byte gBitTable
+ thumb_func_end SafariBufferExecCompleted
+
+ thumb_func_start unref_sub_812B838
+unref_sub_812B838: @ 812B838
+ push {lr}
+ ldr r0, _0812B85C @ =gActiveBank
+ ldrb r1, [r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0812B860 @ =0x02017810
+ adds r0, r1
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ bne _0812B856
+ bl SafariBufferExecCompleted
+_0812B856:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812B85C: .4byte gActiveBank
+_0812B860: .4byte 0x02017810
+ thumb_func_end unref_sub_812B838
+
+ thumb_func_start SafariHandleGetAttributes
+SafariHandleGetAttributes: @ 812B864
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandleGetAttributes
+
+ thumb_func_start SafariHandlecmd1
+SafariHandlecmd1: @ 812B870
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandlecmd1
+
+ thumb_func_start SafariHandleSetAttributes
+SafariHandleSetAttributes: @ 812B87C
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandleSetAttributes
+
+ thumb_func_start SafariHandlecmd3
+SafariHandlecmd3: @ 812B888
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandlecmd3
+
+ thumb_func_start SafariHandleLoadPokeSprite
+SafariHandleLoadPokeSprite: @ 812B894
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandleLoadPokeSprite
+
+ thumb_func_start SafariHandleSendOutPoke
+SafariHandleSendOutPoke: @ 812B8A0
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandleSendOutPoke
+
+ thumb_func_start SafariHandleReturnPokeToBall
+SafariHandleReturnPokeToBall: @ 812B8AC
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandleReturnPokeToBall
+
+ thumb_func_start SafariHandleTrainerThrow
+SafariHandleTrainerThrow: @ 812B8B8
+ push {r4-r6,lr}
+ ldr r4, _0812B96C @ =gSaveBlock2
+ ldrb r0, [r4, 0x8]
+ ldr r5, _0812B970 @ =gActiveBank
+ ldrb r1, [r5]
+ bl LoadPlayerTrainerBankSprite
+ ldrb r6, [r4, 0x8]
+ ldrb r0, [r5]
+ bl GetBankIdentity
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r6, 0
+ bl GetMonSpriteTemplate_803C5A0
+ ldr r0, _0812B974 @ =gUnknown_02024E8C
+ ldr r2, _0812B978 @ =gTrainerBackPicCoords
+ ldrb r1, [r4, 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, _0812B97C @ =gObjectBankIDs
+ ldrb r1, [r5]
+ adds r1, r6
+ strb r0, [r1]
+ ldr r4, _0812B980 @ =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, _0812B984 @ =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, _0812B988 @ =sub_80313A0
+ str r1, [r0]
+ ldr r1, _0812B98C @ =gBattleBankFunc
+ ldrb r0, [r5]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, _0812B990 @ =sub_812B65C
+ str r1, [r0]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812B96C: .4byte gSaveBlock2
+_0812B970: .4byte gActiveBank
+_0812B974: .4byte gUnknown_02024E8C
+_0812B978: .4byte gTrainerBackPicCoords
+_0812B97C: .4byte gObjectBankIDs
+_0812B980: .4byte gSprites
+_0812B984: .4byte 0x0000fffe
+_0812B988: .4byte sub_80313A0
+_0812B98C: .4byte gBattleBankFunc
+_0812B990: .4byte sub_812B65C
+ thumb_func_end SafariHandleTrainerThrow
+
+ thumb_func_start SafariHandleTrainerSlide
+SafariHandleTrainerSlide: @ 812B994
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandleTrainerSlide
+
+ thumb_func_start SafariHandleTrainerSlideBack
+SafariHandleTrainerSlideBack: @ 812B9A0
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandleTrainerSlideBack
+
+ thumb_func_start SafariHandlecmd10
+SafariHandlecmd10: @ 812B9AC
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandlecmd10
+
+ thumb_func_start SafariHandlecmd11
+SafariHandlecmd11: @ 812B9B8
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandlecmd11
+
+ thumb_func_start SafariHandlecmd12
+SafariHandlecmd12: @ 812B9C4
+ push {r4,r5,lr}
+ ldr r1, _0812BA00 @ =0x02017840
+ movs r0, 0x4
+ strb r0, [r1, 0x8]
+ ldr r1, _0812BA04 @ =gDoingBattleAnim
+ movs r0, 0x1
+ strb r0, [r1]
+ ldr r5, _0812BA08 @ =gActiveBank
+ ldrb r4, [r5]
+ movs r0, 0x1
+ bl GetBankByPlayerAI
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r4, 0
+ movs r3, 0x4
+ bl move_anim_start_t4
+ ldr r1, _0812BA0C @ =gBattleBankFunc
+ ldrb r0, [r5]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, _0812BA10 @ =bx_wait_t6
+ str r1, [r0]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812BA00: .4byte 0x02017840
+_0812BA04: .4byte gDoingBattleAnim
+_0812BA08: .4byte gActiveBank
+_0812BA0C: .4byte gBattleBankFunc
+_0812BA10: .4byte bx_wait_t6
+ thumb_func_end SafariHandlecmd12
+
+ thumb_func_start SafariHandleBallThrow
+SafariHandleBallThrow: @ 812BA14
+ push {r4,r5,lr}
+ ldr r1, _0812BA58 @ =gBattleBufferA
+ ldr r5, _0812BA5C @ =gActiveBank
+ ldrb r0, [r5]
+ lsls r0, 9
+ adds r1, 0x1
+ adds r0, r1
+ ldrb r1, [r0]
+ ldr r0, _0812BA60 @ =0x02017840
+ strb r1, [r0, 0x8]
+ ldr r1, _0812BA64 @ =gDoingBattleAnim
+ movs r0, 0x1
+ strb r0, [r1]
+ ldrb r4, [r5]
+ movs r0, 0x1
+ bl GetBankByPlayerAI
+ adds r2, r0, 0
+ lsls r2, 24
+ lsrs r2, 24
+ adds r0, r4, 0
+ adds r1, r4, 0
+ movs r3, 0x4
+ bl move_anim_start_t4
+ ldr r1, _0812BA68 @ =gBattleBankFunc
+ ldrb r0, [r5]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, _0812BA6C @ =bx_wait_t6
+ str r1, [r0]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812BA58: .4byte gBattleBufferA
+_0812BA5C: .4byte gActiveBank
+_0812BA60: .4byte 0x02017840
+_0812BA64: .4byte gDoingBattleAnim
+_0812BA68: .4byte gBattleBankFunc
+_0812BA6C: .4byte bx_wait_t6
+ thumb_func_end SafariHandleBallThrow
+
+ thumb_func_start SafariHandlePuase
+SafariHandlePuase: @ 812BA70
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandlePuase
+
+ thumb_func_start SafariHandleMoveAnimation
+SafariHandleMoveAnimation: @ 812BA7C
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandleMoveAnimation
+
+ thumb_func_start SafariHandlePrintString
+SafariHandlePrintString: @ 812BA88
+ push {r4,lr}
+ sub sp, 0x4
+ ldr r0, _0812BACC @ =gUnknown_030042A4
+ movs r1, 0
+ strh r1, [r0]
+ ldr r0, _0812BAD0 @ =gUnknown_030042A0
+ strh r1, [r0]
+ ldr r4, _0812BAD4 @ =gActiveBank
+ ldrb r0, [r4]
+ lsls r0, 9
+ ldr r1, _0812BAD8 @ =gUnknown_02023A62
+ adds r0, r1
+ ldrh r0, [r0]
+ bl BufferStringBattle
+ ldr r0, _0812BADC @ =gUnknown_03004210
+ ldr r1, _0812BAE0 @ =gDisplayedStringBattle
+ movs r2, 0xF
+ str r2, [sp]
+ movs r2, 0x90
+ movs r3, 0x2
+ bl sub_8002EB0
+ ldr r1, _0812BAE4 @ =gBattleBankFunc
+ ldrb r0, [r4]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, _0812BAE8 @ =sub_812B694
+ str r1, [r0]
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812BACC: .4byte gUnknown_030042A4
+_0812BAD0: .4byte gUnknown_030042A0
+_0812BAD4: .4byte gActiveBank
+_0812BAD8: .4byte gUnknown_02023A62
+_0812BADC: .4byte gUnknown_03004210
+_0812BAE0: .4byte gDisplayedStringBattle
+_0812BAE4: .4byte gBattleBankFunc
+_0812BAE8: .4byte sub_812B694
+ thumb_func_end SafariHandlePrintString
+
+ thumb_func_start SafariHandlePrintStringPlayerOnly
+SafariHandlePrintStringPlayerOnly: @ 812BAEC
+ push {lr}
+ ldr r0, _0812BB04 @ =gActiveBank
+ ldrb r0, [r0]
+ bl GetBankSide
+ lsls r0, 24
+ cmp r0, 0
+ bne _0812BB08
+ bl SafariHandlePrintString
+ b _0812BB0C
+ .align 2, 0
+_0812BB04: .4byte gActiveBank
+_0812BB08:
+ bl SafariBufferExecCompleted
+_0812BB0C:
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandlePrintStringPlayerOnly
+
+.section .text_812BBFC
+
+ thumb_func_start SafariHandlecmd19
+SafariHandlecmd19: @ 812BBFC
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandlecmd19
+
+ thumb_func_start SafariHandlecmd20
+SafariHandlecmd20: @ 812BC08
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandlecmd20
+
+ thumb_func_start SafariHandleOpenBag
+SafariHandleOpenBag: @ 812BC14
+ 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, _0812BC44 @ =gBattleBankFunc
+ ldr r2, _0812BC48 @ =gActiveBank
+ ldrb r0, [r2]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, _0812BC4C @ =sub_812B724
+ str r1, [r0]
+ ldr r1, _0812BC50 @ =gBankInMenu
+ ldrb r0, [r2]
+ strb r0, [r1]
+ add sp, 0x4
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812BC44: .4byte gBattleBankFunc
+_0812BC48: .4byte gActiveBank
+_0812BC4C: .4byte sub_812B724
+_0812BC50: .4byte gBankInMenu
+ thumb_func_end SafariHandleOpenBag
+
+ thumb_func_start SafariHandlecmd22
+SafariHandlecmd22: @ 812BC54
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandlecmd22
+
+ thumb_func_start SafariHandlecmd23
+SafariHandlecmd23: @ 812BC60
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandlecmd23
+
+ thumb_func_start SafariHandleHealthBarUpdate
+SafariHandleHealthBarUpdate: @ 812BC6C
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandleHealthBarUpdate
+
+ thumb_func_start SafariHandleExpBarUpdate
+SafariHandleExpBarUpdate: @ 812BC78
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandleExpBarUpdate
+
+ thumb_func_start SafariHandleStatusIconUpdate
+SafariHandleStatusIconUpdate: @ 812BC84
+ push {lr}
+ ldr r0, _0812BCB0 @ =gHealthboxIDs
+ ldr r1, _0812BCB4 @ =gActiveBank
+ ldrb r1, [r1]
+ adds r0, r1, r0
+ ldrb r0, [r0]
+ ldr r2, _0812BCB8 @ =gBattlePartyID
+ lsls r1, 1
+ adds r1, r2
+ ldrh r2, [r1]
+ movs r1, 0x64
+ muls r1, r2
+ ldr r2, _0812BCBC @ =gPlayerParty
+ adds r1, r2
+ movs r2, 0xB
+ bl sub_8045A5C
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812BCB0: .4byte gHealthboxIDs
+_0812BCB4: .4byte gActiveBank
+_0812BCB8: .4byte gBattlePartyID
+_0812BCBC: .4byte gPlayerParty
+ thumb_func_end SafariHandleStatusIconUpdate
+
+ thumb_func_start SafariHandleStatusAnimation
+SafariHandleStatusAnimation: @ 812BCC0
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandleStatusAnimation
+
+ thumb_func_start SafariHandleStatusXor
+SafariHandleStatusXor: @ 812BCCC
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandleStatusXor
+
+ thumb_func_start SafariHandlecmd29
+SafariHandlecmd29: @ 812BCD8
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandlecmd29
+
+ thumb_func_start SafariHandleDMATransfer
+SafariHandleDMATransfer: @ 812BCE4
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandleDMATransfer
+
+ thumb_func_start SafariHandlecmd31
+SafariHandlecmd31: @ 812BCF0
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandlecmd31
+
+ thumb_func_start SafariHandlecmd32
+SafariHandlecmd32: @ 812BCFC
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandlecmd32
+
+ thumb_func_start SafariHandlecmd33
+SafariHandlecmd33: @ 812BD08
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandlecmd33
+
+ thumb_func_start SafariHandlecmd34
+SafariHandlecmd34: @ 812BD14
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandlecmd34
+
+ thumb_func_start SafariHandlecmd35
+SafariHandlecmd35: @ 812BD20
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandlecmd35
+
+ thumb_func_start SafariHandlecmd36
+SafariHandlecmd36: @ 812BD2C
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandlecmd36
+
+ thumb_func_start SafariHandlecmd37
+SafariHandlecmd37: @ 812BD38
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandlecmd37
+
+ thumb_func_start SafariHandlecmd38
+SafariHandlecmd38: @ 812BD44
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandlecmd38
+
+ thumb_func_start SafariHandlecmd39
+SafariHandlecmd39: @ 812BD50
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandlecmd39
+
+ thumb_func_start SafariHandlecmd40
+SafariHandlecmd40: @ 812BD5C
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandlecmd40
+
+ thumb_func_start SafariHandleHitAnimation
+SafariHandleHitAnimation: @ 812BD68
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandleHitAnimation
+
+ thumb_func_start SafariHandlecmd42
+SafariHandlecmd42: @ 812BD74
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandlecmd42
+
+ thumb_func_start SafariHandleEffectivenessSound
+SafariHandleEffectivenessSound: @ 812BD80
+ push {r4,lr}
+ ldr r4, _0812BDBC @ =gActiveBank
+ ldrb r0, [r4]
+ bl GetBankSide
+ lsls r0, 24
+ movs r3, 0x3F
+ cmp r0, 0
+ bne _0812BD94
+ movs r3, 0xC0
+_0812BD94:
+ ldr r2, _0812BDC0 @ =gBattleBufferA
+ 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
+_0812BDBC: .4byte gActiveBank
+_0812BDC0: .4byte gBattleBufferA
+ thumb_func_end SafariHandleEffectivenessSound
+
+ thumb_func_start SafariHandlecmd44
+SafariHandlecmd44: @ 812BDC4
+ push {lr}
+ ldr r2, _0812BDEC @ =gBattleBufferA
+ ldr r0, _0812BDF0 @ =gActiveBank
+ 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
+_0812BDEC: .4byte gBattleBufferA
+_0812BDF0: .4byte gActiveBank
+ thumb_func_end SafariHandlecmd44
+
+ thumb_func_start SafariHandleFaintingCry
+SafariHandleFaintingCry: @ 812BDF4
+ push {lr}
+ ldr r1, _0812BE24 @ =gBattlePartyID
+ ldr r0, _0812BE28 @ =gActiveBank
+ ldrb r0, [r0]
+ lsls r0, 1
+ adds r0, r1
+ ldrh r1, [r0]
+ movs r0, 0x64
+ muls r0, r1
+ ldr r1, _0812BE2C @ =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
+_0812BE24: .4byte gBattlePartyID
+_0812BE28: .4byte gActiveBank
+_0812BE2C: .4byte gPlayerParty
+ thumb_func_end SafariHandleFaintingCry
+
+ thumb_func_start SafariHandleIntroSlide
+SafariHandleIntroSlide: @ 812BE30
+ push {lr}
+ ldr r1, _0812BE58 @ =gBattleBufferA
+ ldr r0, _0812BE5C @ =gActiveBank
+ ldrb r0, [r0]
+ lsls r0, 9
+ adds r1, 0x1
+ adds r0, r1
+ ldrb r0, [r0]
+ bl sub_80E43C0
+ ldr r2, _0812BE60 @ =gUnknown_02024DE8
+ ldrh r0, [r2]
+ movs r1, 0x1
+ orrs r0, r1
+ strh r0, [r2]
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812BE58: .4byte gBattleBufferA
+_0812BE5C: .4byte gActiveBank
+_0812BE60: .4byte gUnknown_02024DE8
+ thumb_func_end SafariHandleIntroSlide
+
+ thumb_func_start SafariHandleTrainerBallThrow
+SafariHandleTrainerBallThrow: @ 812BE64
+ push {r4,r5,lr}
+ ldr r5, _0812BEA0 @ =gHealthboxIDs
+ ldr r4, _0812BEA4 @ =gActiveBank
+ ldrb r1, [r4]
+ adds r0, r1, r5
+ ldrb r0, [r0]
+ ldr r2, _0812BEA8 @ =gBattlePartyID
+ lsls r1, 1
+ adds r1, r2
+ ldrh r2, [r1]
+ movs r1, 0x64
+ muls r1, r2
+ ldr r2, _0812BEAC @ =gPlayerParty
+ adds r1, r2
+ movs r2, 0xA
+ bl sub_8045A5C
+ ldrb r0, [r4]
+ bl sub_804777C
+ ldrb r0, [r4]
+ adds r0, r5
+ ldrb r0, [r0]
+ bl sub_8043DFC
+ bl SafariBufferExecCompleted
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812BEA0: .4byte gHealthboxIDs
+_0812BEA4: .4byte gActiveBank
+_0812BEA8: .4byte gBattlePartyID
+_0812BEAC: .4byte gPlayerParty
+ thumb_func_end SafariHandleTrainerBallThrow
+
+ thumb_func_start SafariHandlecmd48
+SafariHandlecmd48: @ 812BEB0
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandlecmd48
+
+ thumb_func_start SafariHandlecmd49
+SafariHandlecmd49: @ 812BEBC
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandlecmd49
+
+ thumb_func_start SafariHandlecmd50
+SafariHandlecmd50: @ 812BEC8
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandlecmd50
+
+ thumb_func_start SafariHandleSpriteInvisibility
+SafariHandleSpriteInvisibility: @ 812BED4
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandleSpriteInvisibility
+
+ thumb_func_start SafariHandleBattleAnimation
+SafariHandleBattleAnimation: @ 812BEE0
+ push {r4-r6,lr}
+ sub sp, 0x4
+ ldr r5, _0812BF18 @ =gBattleBufferA
+ ldr r6, _0812BF1C @ =gActiveBank
+ 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 move_anim_start_t3
+ lsls r0, 24
+ cmp r0, 0
+ beq _0812BF20
+ bl SafariBufferExecCompleted
+ b _0812BF2C
+ .align 2, 0
+_0812BF18: .4byte gBattleBufferA
+_0812BF1C: .4byte gActiveBank
+_0812BF20:
+ ldr r0, _0812BF34 @ =gBattleBankFunc
+ ldrb r1, [r6]
+ lsls r1, 2
+ adds r1, r0
+ ldr r0, _0812BF38 @ =sub_812B794
+ str r0, [r1]
+_0812BF2C:
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812BF34: .4byte gBattleBankFunc
+_0812BF38: .4byte sub_812B794
+ thumb_func_end SafariHandleBattleAnimation
+
+ thumb_func_start SafariHandleLinkStandbyMsg
+SafariHandleLinkStandbyMsg: @ 812BF3C
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandleLinkStandbyMsg
+
+ thumb_func_start SafariHandleResetActionMoveSelection
+SafariHandleResetActionMoveSelection: @ 812BF48
+ push {lr}
+ bl SafariBufferExecCompleted
+ pop {r0}
+ bx r0
+ thumb_func_end SafariHandleResetActionMoveSelection
+
+ thumb_func_start SafariHandlecmd55
+SafariHandlecmd55: @ 812BF54
+ push {r4,lr}
+ ldr r2, _0812BF98 @ =gBattleOutcome
+ ldr r1, _0812BF9C @ =gBattleBufferA
+ ldr r4, _0812BFA0 @ =gActiveBank
+ 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, _0812BFA4 @ =gBattleTypeFlags
+ ldrh r1, [r0]
+ movs r0, 0x6
+ ands r0, r1
+ cmp r0, 0x2
+ bne _0812BF90
+ ldr r0, _0812BFA8 @ =gBattleBankFunc
+ ldrb r1, [r4]
+ lsls r1, 2
+ adds r1, r0
+ ldr r0, _0812BFAC @ =sub_812B6AC
+ str r0, [r1]
+_0812BF90:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0812BF98: .4byte gBattleOutcome
+_0812BF9C: .4byte gBattleBufferA
+_0812BFA0: .4byte gActiveBank
+_0812BFA4: .4byte gBattleTypeFlags
+_0812BFA8: .4byte gBattleBankFunc
+_0812BFAC: .4byte sub_812B6AC
+ thumb_func_end SafariHandlecmd55
+
+ thumb_func_start SafariHandlecmd56
+SafariHandlecmd56: @ 812BFB0
+ bx lr
+ thumb_func_end SafariHandlecmd56
+
+ .align 2, 0 @ Don't pad with nop.