summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/battle_anim_8137220.s4139
-rw-r--r--include/battle.h3
-rw-r--r--include/battle_message.h2
-rwxr-xr-xld_script.txt1
-rw-r--r--src/battle_anim_8137220.c1169
5 files changed, 1171 insertions, 4143 deletions
diff --git a/asm/battle_anim_8137220.s b/asm/battle_anim_8137220.s
deleted file mode 100644
index 05d840ee6..000000000
--- a/asm/battle_anim_8137220.s
+++ /dev/null
@@ -1,4139 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start dp01t_00_5_getattr
-dp01t_00_5_getattr: @ 8137A10
- push {r4-r6,lr}
- sub sp, 0x100
- movs r6, 0
- ldr r1, _08137A3C @ =gBattleBufferA
- ldr r0, _08137A40 @ =gActiveBank
- ldrb r2, [r0]
- lsls r0, r2, 9
- adds r1, 0x2
- adds r1, r0, r1
- ldrb r0, [r1]
- cmp r0, 0
- bne _08137A48
- ldr r0, _08137A44 @ =gBattlePartyID
- lsls r1, r2, 1
- adds r1, r0
- ldrb r0, [r1]
- mov r1, sp
- bl sub_8137A84
- adds r6, r0, 0
- b _08137A6A
- .align 2, 0
-_08137A3C: .4byte gBattleBufferA
-_08137A40: .4byte gActiveBank
-_08137A44: .4byte gBattlePartyID
-_08137A48:
- ldrb r4, [r1]
- movs r5, 0
-_08137A4C:
- movs r0, 0x1
- ands r0, r4
- cmp r0, 0
- beq _08137A62
- lsls r0, r5, 24
- lsrs r0, 24
- mov r2, sp
- adds r1, r2, r6
- bl sub_8137A84
- adds r6, r0
-_08137A62:
- lsrs r4, 1
- adds r5, 0x1
- cmp r5, 0x5
- ble _08137A4C
-_08137A6A:
- lsls r1, r6, 16
- lsrs r1, 16
- movs r0, 0x1
- mov r2, sp
- bl dp01_build_cmdbuf_x1D_1D_numargs_varargs
- bl WallyBufferExecCompleted
- add sp, 0x100
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end dp01t_00_5_getattr
-
- thumb_func_start sub_8137A84
-sub_8137A84: @ 8137A84
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x90
- adds r7, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- movs r6, 0
- ldr r2, _08137AB8 @ =gBattleBufferA
- ldr r3, _08137ABC @ =gActiveBank
- ldrb r0, [r3]
- lsls r0, 9
- adds r1, r2, 0x1
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x3B
- bls _08137AAE
- bl _0813821A
-_08137AAE:
- lsls r0, 2
- ldr r1, _08137AC0 @ =_08137AC4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08137AB8: .4byte gBattleBufferA
-_08137ABC: .4byte gActiveBank
-_08137AC0: .4byte _08137AC4
- .align 2, 0
-_08137AC4:
- .4byte _08137BB4
- .4byte _08137DD8
- .4byte _08137DE8
- .4byte _08137DF8
- .4byte _08137E60
- .4byte _08137E60
- .4byte _08137E60
- .4byte _08137E60
- .4byte _08137E7C
- .4byte _08137EB8
- .4byte _08137EB8
- .4byte _08137EB8
- .4byte _08137EB8
- .4byte _0813821A
- .4byte _0813821A
- .4byte _0813821A
- .4byte _0813821A
- .4byte _08137ED4
- .4byte _08137EE4
- .4byte _08137F14
- .4byte _08137F24
- .4byte _08137F34
- .4byte _08137F44
- .4byte _08137F54
- .4byte _08137F64
- .4byte _08137F74
- .4byte _08137F84
- .4byte _08137F94
- .4byte _08137FA4
- .4byte _08137FB4
- .4byte _08137FC4
- .4byte _08137FD4
- .4byte _08138024
- .4byte _08138034
- .4byte _08138044
- .4byte _08138054
- .4byte _08138064
- .4byte _08138074
- .4byte _08138084
- .4byte _08138094
- .4byte _081380A4
- .4byte _081380D8
- .4byte _081380E8
- .4byte _081380F8
- .4byte _08138108
- .4byte _08138118
- .4byte _08138128
- .4byte _08138138
- .4byte _08138148
- .4byte _08138168
- .4byte _08138178
- .4byte _08138188
- .4byte _08138198
- .4byte _081381A8
- .4byte _081381B8
- .4byte _081381C8
- .4byte _081381D8
- .4byte _081381E8
- .4byte _081381F8
- .4byte _08138208
-_08137BB4:
- movs r0, 0x64
- adds r4, r5, 0
- muls r4, r0
- ldr r0, _08137DC8 @ =gPlayerParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- mov r1, sp
- strh r0, [r1]
- adds r0, r4, 0
- movs r1, 0xC
- bl GetMonData
- mov r1, sp
- strh r0, [r1, 0x2E]
- movs r6, 0
- add r0, sp, 0x24
- mov r9, r0
- movs r1, 0x3B
- add r1, sp
- mov r10, r1
- mov r2, sp
- adds r2, 0x2B
- str r2, [sp, 0x80]
- mov r0, sp
- adds r0, 0x2A
- str r0, [sp, 0x7C]
- mov r1, sp
- adds r1, 0x68
- str r1, [sp, 0x8C]
- adds r2, 0x5
- str r2, [sp, 0x84]
- adds r0, 0x12
- str r0, [sp, 0x88]
- mov r8, r4
- add r4, sp, 0xC
-_08137C00:
- adds r1, r6, 0
- adds r1, 0xD
- mov r0, r8
- bl GetMonData
- strh r0, [r4]
- adds r1, r6, 0
- adds r1, 0x11
- mov r0, r8
- bl GetMonData
- mov r2, r9
- adds r1, r2, r6
- strb r0, [r1]
- adds r4, 0x2
- adds r6, 0x1
- cmp r6, 0x3
- ble _08137C00
- movs r0, 0x64
- adds r4, r5, 0
- muls r4, r0
- ldr r0, _08137DC8 @ =gPlayerParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x15
- bl GetMonData
- mov r1, r10
- strb r0, [r1]
- adds r0, r4, 0
- movs r1, 0x20
- bl GetMonData
- ldr r2, [sp, 0x80]
- strb r0, [r2]
- adds r0, r4, 0
- movs r1, 0x19
- bl GetMonData
- str r0, [sp, 0x44]
- adds r0, r4, 0
- movs r1, 0x27
- bl GetMonData
- mov r3, sp
- movs r5, 0x1F
- ands r0, r5
- ldrb r2, [r3, 0x14]
- movs r1, 0x20
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0x14]
- adds r0, r4, 0
- movs r1, 0x28
- bl GetMonData
- mov r3, sp
- movs r6, 0x1F
- ands r0, r6
- lsls r0, 5
- ldrh r2, [r3, 0x14]
- ldr r1, _08137DCC @ =0xfffffc1f
- ands r1, r2
- orrs r1, r0
- strh r1, [r3, 0x14]
- adds r0, r4, 0
- movs r1, 0x29
- bl GetMonData
- mov r3, sp
- ands r0, r5
- lsls r0, 2
- ldrb r2, [r3, 0x15]
- movs r1, 0x7D
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0x15]
- adds r0, r4, 0
- movs r1, 0x2A
- bl GetMonData
- movs r1, 0x1F
- ands r1, r0
- lsls r1, 15
- ldr r0, [sp, 0x14]
- ldr r2, _08137DD0 @ =0xfff07fff
- ands r0, r2
- orrs r0, r1
- str r0, [sp, 0x14]
- adds r0, r4, 0
- movs r1, 0x2B
- bl GetMonData
- mov r3, sp
- ands r0, r6
- lsls r0, 4
- ldrh r2, [r3, 0x16]
- ldr r1, _08137DD4 @ =0xfffffe0f
- ands r1, r2
- orrs r1, r0
- strh r1, [r3, 0x16]
- adds r0, r4, 0
- movs r1, 0x2C
- bl GetMonData
- mov r3, sp
- ands r0, r5
- lsls r0, 1
- ldrb r2, [r3, 0x17]
- movs r1, 0x3F
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0x17]
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- str r0, [sp, 0x48]
- adds r0, r4, 0
- movs r1, 0x37
- bl GetMonData
- str r0, [sp, 0x4C]
- adds r0, r4, 0
- movs r1, 0x38
- bl GetMonData
- ldr r1, [sp, 0x7C]
- strb r0, [r1]
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- mov r1, sp
- strh r0, [r1, 0x28]
- adds r0, r4, 0
- movs r1, 0x3A
- bl GetMonData
- mov r1, sp
- strh r0, [r1, 0x2C]
- adds r0, r4, 0
- movs r1, 0x3B
- bl GetMonData
- mov r1, sp
- strh r0, [r1, 0x2]
- adds r0, r4, 0
- movs r1, 0x3C
- bl GetMonData
- mov r1, sp
- strh r0, [r1, 0x4]
- adds r0, r4, 0
- movs r1, 0x3D
- bl GetMonData
- mov r1, sp
- strh r0, [r1, 0x6]
- adds r0, r4, 0
- movs r1, 0x3E
- bl GetMonData
- mov r1, sp
- strh r0, [r1, 0x8]
- adds r0, r4, 0
- movs r1, 0x3F
- bl GetMonData
- mov r1, sp
- strh r0, [r1, 0xA]
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- mov r3, sp
- movs r1, 0x1
- ands r0, r1
- lsls r0, 6
- ldrb r2, [r3, 0x17]
- movs r1, 0x41
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0x17]
- adds r0, r4, 0
- movs r1, 0x2E
- bl GetMonData
- mov r3, sp
- lsls r0, 7
- ldrb r2, [r3, 0x17]
- movs r1, 0x7F
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0x17]
- adds r0, r4, 0
- movs r1, 0x1
- bl GetMonData
- str r0, [sp, 0x54]
- adds r0, r4, 0
- movs r1, 0x2
- ldr r2, [sp, 0x8C]
- bl GetMonData
- ldr r0, [sp, 0x84]
- ldr r1, [sp, 0x8C]
- bl StringCopy10
- adds r0, r4, 0
- movs r1, 0x7
- ldr r2, [sp, 0x88]
- bl GetMonData
- mov r2, sp
- movs r6, 0
-_08137DB8:
- adds r0, r7, r6
- adds r1, r2, r6
- ldrb r1, [r1]
- strb r1, [r0]
- adds r6, 0x1
- cmp r6, 0x57
- bls _08137DB8
- b _0813821A
- .align 2, 0
-_08137DC8: .4byte gPlayerParty
-_08137DCC: .4byte 0xfffffc1f
-_08137DD0: .4byte 0xfff07fff
-_08137DD4: .4byte 0xfffffe0f
-_08137DD8:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08137DE4 @ =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- b _08138152
- .align 2, 0
-_08137DE4: .4byte gPlayerParty
-_08137DE8:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08137DF4 @ =gPlayerParty
- adds r0, r1
- movs r1, 0xC
- b _08138152
- .align 2, 0
-_08137DF4: .4byte gPlayerParty
-_08137DF8:
- movs r6, 0
- add r2, sp, 0x58
- mov r9, r2
- add r0, sp, 0x60
- mov r10, r0
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, _08137E5C @ =gPlayerParty
- adds r4, r1, r0
- mov r8, r9
-_08137E0E:
- adds r1, r6, 0
- adds r1, 0xD
- adds r0, r4, 0
- bl GetMonData
- mov r1, r8
- strh r0, [r1]
- adds r1, r6, 0
- adds r1, 0x11
- adds r0, r4, 0
- bl GetMonData
- mov r2, r10
- adds r1, r2, r6
- strb r0, [r1]
- movs r0, 0x2
- add r8, r0
- adds r6, 0x1
- cmp r6, 0x3
- ble _08137E0E
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08137E5C @ =gPlayerParty
- adds r0, r1
- movs r1, 0x15
- bl GetMonData
- mov r1, r9
- strb r0, [r1, 0xC]
- mov r2, r9
- movs r6, 0
-_08137E4C:
- adds r0, r7, r6
- adds r1, r2, r6
- ldrb r1, [r1]
- strb r1, [r0]
- adds r6, 0x1
- cmp r6, 0xF
- bls _08137E4C
- b _0813821A
- .align 2, 0
-_08137E5C: .4byte gPlayerParty
-_08137E60:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08137E78 @ =gPlayerParty
- adds r0, r1
- ldrb r1, [r3]
- lsls r1, 9
- adds r2, 0x1
- adds r1, r2
- ldrb r1, [r1]
- adds r1, 0x9
- b _08138152
- .align 2, 0
-_08137E78: .4byte gPlayerParty
-_08137E7C:
- movs r6, 0
- movs r0, 0x64
- adds r4, r5, 0
- muls r4, r0
- ldr r2, _08137EB4 @ =gPlayerParty
- mov r8, r2
-_08137E88:
- adds r1, r6, 0
- adds r1, 0x11
- mov r2, r8
- adds r0, r4, r2
- bl GetMonData
- adds r1, r7, r6
- strb r0, [r1]
- adds r6, 0x1
- cmp r6, 0x3
- ble _08137E88
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08137EB4 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x15
- bl GetMonData
- adds r1, r7, r6
- strb r0, [r1]
- adds r6, 0x1
- b _0813821A
- .align 2, 0
-_08137EB4: .4byte gPlayerParty
-_08137EB8:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08137ED0 @ =gPlayerParty
- adds r0, r1
- ldrb r1, [r3]
- lsls r1, 9
- adds r2, 0x1
- adds r1, r2
- ldrb r1, [r1]
- adds r1, 0x8
- b _08138212
- .align 2, 0
-_08137ED0: .4byte gPlayerParty
-_08137ED4:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08137EE0 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x1
- b _08137EEE
- .align 2, 0
-_08137EE0: .4byte gPlayerParty
-_08137EE4:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08137F10 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x19
-_08137EEE:
- bl GetMonData
- adds r1, r0, 0
- strb r1, [r7]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- lsrs r0, 8
- strb r0, [r7, 0x1]
- movs r0, 0xFF
- lsls r0, 16
- ands r0, r1
- lsrs r0, 16
- strb r0, [r7, 0x2]
- movs r6, 0x3
- b _0813821A
- .align 2, 0
-_08137F10: .4byte gPlayerParty
-_08137F14:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08137F20 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x1A
- b _08138212
- .align 2, 0
-_08137F20: .4byte gPlayerParty
-_08137F24:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08137F30 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x1B
- b _08138212
- .align 2, 0
-_08137F30: .4byte gPlayerParty
-_08137F34:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08137F40 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x1C
- b _08138212
- .align 2, 0
-_08137F40: .4byte gPlayerParty
-_08137F44:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08137F50 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x1D
- b _08138212
- .align 2, 0
-_08137F50: .4byte gPlayerParty
-_08137F54:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08137F60 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x1E
- b _08138212
- .align 2, 0
-_08137F60: .4byte gPlayerParty
-_08137F64:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08137F70 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x1F
- b _08138212
- .align 2, 0
-_08137F70: .4byte gPlayerParty
-_08137F74:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08137F80 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x20
- b _08138212
- .align 2, 0
-_08137F80: .4byte gPlayerParty
-_08137F84:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08137F90 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x22
- b _08138212
- .align 2, 0
-_08137F90: .4byte gPlayerParty
-_08137F94:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08137FA0 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x23
- b _08138212
- .align 2, 0
-_08137FA0: .4byte gPlayerParty
-_08137FA4:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08137FB0 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x24
- b _08138212
- .align 2, 0
-_08137FB0: .4byte gPlayerParty
-_08137FB4:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08137FC0 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x25
- b _08138212
- .align 2, 0
-_08137FC0: .4byte gPlayerParty
-_08137FC4:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08137FD0 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x26
- b _08138212
- .align 2, 0
-_08137FD0: .4byte gPlayerParty
-_08137FD4:
- movs r0, 0x64
- adds r4, r5, 0
- muls r4, r0
- ldr r0, _08138020 @ =gPlayerParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x27
- bl GetMonData
- strb r0, [r7]
- adds r0, r4, 0
- movs r1, 0x28
- bl GetMonData
- strb r0, [r7, 0x1]
- adds r0, r4, 0
- movs r1, 0x29
- bl GetMonData
- strb r0, [r7, 0x2]
- adds r0, r4, 0
- movs r1, 0x2A
- bl GetMonData
- strb r0, [r7, 0x3]
- adds r0, r4, 0
- movs r1, 0x2B
- bl GetMonData
- strb r0, [r7, 0x4]
- adds r0, r4, 0
- movs r1, 0x2C
- bl GetMonData
- strb r0, [r7, 0x5]
- movs r6, 0x6
- b _0813821A
- .align 2, 0
-_08138020: .4byte gPlayerParty
-_08138024:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08138030 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x27
- b _08138212
- .align 2, 0
-_08138030: .4byte gPlayerParty
-_08138034:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08138040 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x28
- b _08138212
- .align 2, 0
-_08138040: .4byte gPlayerParty
-_08138044:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08138050 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x29
- b _08138212
- .align 2, 0
-_08138050: .4byte gPlayerParty
-_08138054:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08138060 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x2A
- b _08138212
- .align 2, 0
-_08138060: .4byte gPlayerParty
-_08138064:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08138070 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x2B
- b _08138212
- .align 2, 0
-_08138070: .4byte gPlayerParty
-_08138074:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08138080 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x2C
- b _08138212
- .align 2, 0
-_08138080: .4byte gPlayerParty
-_08138084:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08138090 @ =gPlayerParty
- adds r0, r1
- movs r1, 0
- b _081380AE
- .align 2, 0
-_08138090: .4byte gPlayerParty
-_08138094:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _081380A0 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x9
- b _08138152
- .align 2, 0
-_081380A0: .4byte gPlayerParty
-_081380A4:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _081380D4 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x37
-_081380AE:
- bl GetMonData
- adds r1, r0, 0
- strb r1, [r7]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- lsrs r0, 8
- strb r0, [r7, 0x1]
- movs r0, 0xFF
- lsls r0, 16
- ands r0, r1
- lsrs r0, 16
- strb r0, [r7, 0x2]
- lsrs r0, r1, 24
- strb r0, [r7, 0x3]
- movs r6, 0x4
- b _0813821A
- .align 2, 0
-_081380D4: .4byte gPlayerParty
-_081380D8:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _081380E4 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x38
- b _08138212
- .align 2, 0
-_081380E4: .4byte gPlayerParty
-_081380E8:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _081380F4 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x39
- b _08138152
- .align 2, 0
-_081380F4: .4byte gPlayerParty
-_081380F8:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08138104 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x3A
- b _08138152
- .align 2, 0
-_08138104: .4byte gPlayerParty
-_08138108:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08138114 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x3B
- b _08138152
- .align 2, 0
-_08138114: .4byte gPlayerParty
-_08138118:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08138124 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x3C
- b _08138152
- .align 2, 0
-_08138124: .4byte gPlayerParty
-_08138128:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08138134 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x3D
- b _08138152
- .align 2, 0
-_08138134: .4byte gPlayerParty
-_08138138:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08138144 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x3E
- b _08138152
- .align 2, 0
-_08138144: .4byte gPlayerParty
-_08138148:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08138164 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x3F
-_08138152:
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- strb r0, [r7]
- lsrs r0, 8
- strb r0, [r7, 0x1]
- movs r6, 0x2
- b _0813821A
- .align 2, 0
-_08138164: .4byte gPlayerParty
-_08138168:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08138174 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x16
- b _08138212
- .align 2, 0
-_08138174: .4byte gPlayerParty
-_08138178:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08138184 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x17
- b _08138212
- .align 2, 0
-_08138184: .4byte gPlayerParty
-_08138188:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08138194 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x18
- b _08138212
- .align 2, 0
-_08138194: .4byte gPlayerParty
-_08138198:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _081381A4 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x21
- b _08138212
- .align 2, 0
-_081381A4: .4byte gPlayerParty
-_081381A8:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _081381B4 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x2F
- b _08138212
- .align 2, 0
-_081381B4: .4byte gPlayerParty
-_081381B8:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _081381C4 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x30
- b _08138212
- .align 2, 0
-_081381C4: .4byte gPlayerParty
-_081381C8:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _081381D4 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x32
- b _08138212
- .align 2, 0
-_081381D4: .4byte gPlayerParty
-_081381D8:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _081381E4 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x33
- b _08138212
- .align 2, 0
-_081381E4: .4byte gPlayerParty
-_081381E8:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _081381F4 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x34
- b _08138212
- .align 2, 0
-_081381F4: .4byte gPlayerParty
-_081381F8:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08138204 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x35
- b _08138212
- .align 2, 0
-_08138204: .4byte gPlayerParty
-_08138208:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0813822C @ =gPlayerParty
- adds r0, r1
- movs r1, 0x36
-_08138212:
- bl GetMonData
- strb r0, [r7]
- movs r6, 0x1
-_0813821A:
- adds r0, r6, 0
- add sp, 0x90
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0813822C: .4byte gPlayerParty
- thumb_func_end sub_8137A84
-
- thumb_func_start sub_8138230
-sub_8138230: @ 8138230
- push {lr}
- bl sub_802ECF0
- pop {r0}
- bx r0
- thumb_func_end sub_8138230
-
- thumb_func_start sub_813823C
-sub_813823C: @ 813823C
- push {r4,r5,lr}
- ldr r1, _08138260 @ =gBattleBufferA
- ldr r0, _08138264 @ =gActiveBank
- ldrb r2, [r0]
- lsls r0, r2, 9
- adds r1, 0x2
- adds r1, r0, r1
- ldrb r0, [r1]
- cmp r0, 0
- bne _0813826C
- ldr r0, _08138268 @ =gBattlePartyID
- lsls r1, r2, 1
- adds r1, r0
- ldrb r0, [r1]
- bl sub_8138294
- b _0813828A
- .align 2, 0
-_08138260: .4byte gBattleBufferA
-_08138264: .4byte gActiveBank
-_08138268: .4byte gBattlePartyID
-_0813826C:
- ldrb r4, [r1]
- movs r5, 0
-_08138270:
- movs r0, 0x1
- ands r0, r4
- cmp r0, 0
- beq _0813827E
- adds r0, r5, 0
- bl sub_8138294
-_0813827E:
- lsrs r4, 1
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x5
- bls _08138270
-_0813828A:
- bl WallyBufferExecCompleted
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_813823C
-
- thumb_func_start sub_8138294
-sub_8138294: @ 8138294
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x34
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _081382CC @ =gActiveBank
- ldrb r0, [r0]
- lsls r0, 9
- ldr r2, _081382D0 @ =gUnknown_02023A63
- adds r3, r0, r2
- adds r6, r3, 0
- subs r1, r2, 0x2
- adds r0, r1
- ldrb r0, [r0]
- adds r7, r2, 0
- cmp r0, 0x3B
- bls _081382C0
- bl _08138C5A
-_081382C0:
- lsls r0, 2
- ldr r1, _081382D4 @ =_081382D8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081382CC: .4byte gActiveBank
-_081382D0: .4byte gUnknown_02023A63
-_081382D4: .4byte _081382D8
- .align 2, 0
-_081382D8:
- .4byte _081383C8
- .4byte _08138560
- .4byte _08138580
- .4byte _081385A0
- .4byte _081385F8
- .4byte _081385F8
- .4byte _081385F8
- .4byte _081385F8
- .4byte _08138620
- .4byte _08138684
- .4byte _08138684
- .4byte _08138684
- .4byte _08138684
- .4byte _08138C5A
- .4byte _08138C5A
- .4byte _08138C5A
- .4byte _08138C5A
- .4byte _081386B4
- .4byte _081386D4
- .4byte _081386F4
- .4byte _08138714
- .4byte _08138734
- .4byte _08138754
- .4byte _08138774
- .4byte _08138794
- .4byte _081387B4
- .4byte _081387D4
- .4byte _081387F4
- .4byte _08138814
- .4byte _08138834
- .4byte _08138854
- .4byte _08138874
- .4byte _081388E4
- .4byte _08138904
- .4byte _08138924
- .4byte _08138944
- .4byte _08138964
- .4byte _08138984
- .4byte _081389A4
- .4byte _081389C4
- .4byte _081389E4
- .4byte _08138A04
- .4byte _08138A24
- .4byte _08138A44
- .4byte _08138A64
- .4byte _08138A84
- .4byte _08138AA4
- .4byte _08138AC4
- .4byte _08138AE4
- .4byte _08138B04
- .4byte _08138B24
- .4byte _08138B44
- .4byte _08138B64
- .4byte _08138B84
- .4byte _08138BA4
- .4byte _08138BC4
- .4byte _08138BE4
- .4byte _08138C04
- .4byte _08138C24
- .4byte _08138C44
-_081383C8:
- movs r0, 0x64
- adds r4, r5, 0
- muls r4, r0
- ldr r0, _0813855C @ =gPlayerParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0xB
- adds r2, r6, 0
- bl SetMonData
- adds r2, r6, 0
- adds r2, 0x2E
- adds r0, r4, 0
- movs r1, 0xC
- bl SetMonData
- movs r0, 0
- mov r8, r0
- movs r0, 0x3B
- adds r0, r6
- mov r10, r0
- adds r0, r6, 0
- adds r0, 0x2B
- str r0, [sp, 0x20]
- adds r0, 0x19
- str r0, [sp, 0x28]
- adds r0, 0x4
- str r0, [sp, 0x2C]
- adds r0, 0x4
- str r0, [sp, 0x30]
- subs r0, 0x22
- str r0, [sp, 0x1C]
- subs r0, 0x2
- str r0, [sp, 0x18]
- adds r0, 0x4
- str r0, [sp, 0x24]
- adds r0, r6, 0x2
- str r0, [sp, 0x4]
- adds r0, r6, 0x4
- str r0, [sp, 0x8]
- adds r0, r6, 0x6
- str r0, [sp, 0xC]
- adds r0, 0x2
- str r0, [sp, 0x10]
- adds r0, 0x2
- str r0, [sp, 0x14]
- mov r9, r4
- adds r7, r6, 0
- adds r7, 0x24
- adds r4, r6, 0
- adds r4, 0xC
-_0813842E:
- mov r1, r8
- adds r1, 0xD
- mov r0, r9
- adds r2, r4, 0
- bl SetMonData
- mov r1, r8
- adds r1, 0x11
- mov r0, r9
- adds r2, r7, 0
- bl SetMonData
- adds r7, 0x1
- adds r4, 0x2
- movs r0, 0x1
- add r8, r0
- mov r0, r8
- cmp r0, 0x3
- ble _0813842E
- movs r0, 0x64
- adds r4, r5, 0
- muls r4, r0
- ldr r0, _0813855C @ =gPlayerParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x15
- mov r2, r10
- bl SetMonData
- adds r0, r4, 0
- movs r1, 0x20
- ldr r2, [sp, 0x20]
- bl SetMonData
- adds r0, r4, 0
- movs r1, 0x19
- ldr r2, [sp, 0x28]
- bl SetMonData
- ldrb r0, [r6, 0x14]
- lsls r0, 27
- lsrs r0, 27
- mov r1, sp
- strb r0, [r1]
- adds r0, r4, 0
- movs r1, 0x27
- mov r2, sp
- bl SetMonData
- mov r1, sp
- ldrh r0, [r6, 0x14]
- lsls r0, 22
- lsrs r0, 27
- strb r0, [r1]
- adds r0, r4, 0
- movs r1, 0x28
- mov r2, sp
- bl SetMonData
- mov r1, sp
- ldrb r0, [r6, 0x15]
- lsls r0, 25
- lsrs r0, 27
- strb r0, [r1]
- adds r0, r4, 0
- movs r1, 0x29
- mov r2, sp
- bl SetMonData
- mov r1, sp
- ldr r0, [r6, 0x14]
- lsls r0, 12
- lsrs r0, 27
- strb r0, [r1]
- adds r0, r4, 0
- movs r1, 0x2A
- mov r2, sp
- bl SetMonData
- mov r1, sp
- ldrh r0, [r6, 0x16]
- lsls r0, 23
- lsrs r0, 27
- strb r0, [r1]
- adds r0, r4, 0
- movs r1, 0x2B
- mov r2, sp
- bl SetMonData
- mov r1, sp
- ldrb r0, [r6, 0x17]
- lsls r0, 26
- lsrs r0, 27
- strb r0, [r1]
- adds r0, r4, 0
- movs r1, 0x2C
- mov r2, sp
- bl SetMonData
- adds r0, r4, 0
- movs r1, 0
- ldr r2, [sp, 0x2C]
- bl SetMonData
- adds r0, r4, 0
- movs r1, 0x37
- ldr r2, [sp, 0x30]
- bl SetMonData
- adds r0, r4, 0
- movs r1, 0x38
- ldr r2, [sp, 0x1C]
- bl SetMonData
- adds r0, r4, 0
- movs r1, 0x39
- ldr r2, [sp, 0x18]
- bl SetMonData
- adds r0, r4, 0
- movs r1, 0x3A
- ldr r2, [sp, 0x24]
- bl SetMonData
- adds r0, r4, 0
- movs r1, 0x3B
- ldr r2, [sp, 0x4]
- bl SetMonData
- adds r0, r4, 0
- movs r1, 0x3C
- ldr r2, [sp, 0x8]
- bl SetMonData
- adds r0, r4, 0
- movs r1, 0x3D
- ldr r2, [sp, 0xC]
- bl SetMonData
- adds r0, r4, 0
- movs r1, 0x3E
- ldr r2, [sp, 0x10]
- bl SetMonData
- adds r0, r4, 0
- movs r1, 0x3F
- ldr r2, [sp, 0x14]
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_0813855C: .4byte gPlayerParty
-_08138560:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08138578 @ =gPlayerParty
- adds r0, r1
- ldr r1, _0813857C @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0xB
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_08138578: .4byte gPlayerParty
-_0813857C: .4byte gActiveBank
-_08138580:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08138598 @ =gPlayerParty
- adds r0, r1
- ldr r1, _0813859C @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0xC
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_08138598: .4byte gPlayerParty
-_0813859C: .4byte gActiveBank
-_081385A0:
- movs r0, 0
- mov r8, r0
- movs r0, 0xC
- adds r0, r3
- mov r9, r0
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, _081385F4 @ =gPlayerParty
- adds r7, r1, r0
- adds r6, r3, 0
- adds r6, 0x8
- adds r4, r3, 0
-_081385BA:
- mov r1, r8
- adds r1, 0xD
- adds r0, r7, 0
- adds r2, r4, 0
- bl SetMonData
- mov r1, r8
- adds r1, 0x11
- adds r0, r7, 0
- adds r2, r6, 0
- bl SetMonData
- adds r6, 0x1
- adds r4, 0x2
- movs r0, 0x1
- add r8, r0
- mov r0, r8
- cmp r0, 0x3
- ble _081385BA
- movs r0, 0x64
- muls r0, r5
- ldr r1, _081385F4 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x15
- mov r2, r9
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_081385F4: .4byte gPlayerParty
-_081385F8:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08138614 @ =gPlayerParty
- adds r0, r1
- ldr r3, _08138618 @ =gBattleBufferA
- ldr r1, _0813861C @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r1, r3, 0x1
- adds r1, r2, r1
- ldrb r1, [r1]
- adds r1, 0x9
- b _0813869C
- .align 2, 0
-_08138614: .4byte gPlayerParty
-_08138618: .4byte gBattleBufferA
-_0813861C: .4byte gActiveBank
-_08138620:
- movs r0, 0x64
- adds r4, r5, 0
- muls r4, r0
- ldr r0, _0813867C @ =gPlayerParty
- adds r4, r0
- ldr r5, _08138680 @ =gActiveBank
- ldrb r2, [r5]
- lsls r2, 9
- adds r2, r7
- adds r0, r4, 0
- movs r1, 0x11
- bl SetMonData
- ldrb r2, [r5]
- lsls r2, 9
- adds r0, r7, 0x1
- adds r2, r0
- adds r0, r4, 0
- movs r1, 0x12
- bl SetMonData
- ldrb r2, [r5]
- lsls r2, 9
- adds r0, r7, 0x2
- adds r2, r0
- adds r0, r4, 0
- movs r1, 0x13
- bl SetMonData
- ldrb r2, [r5]
- lsls r2, 9
- adds r0, r7, 0x3
- adds r2, r0
- adds r0, r4, 0
- movs r1, 0x14
- bl SetMonData
- ldrb r2, [r5]
- lsls r2, 9
- adds r0, r7, 0x4
- adds r2, r0
- adds r0, r4, 0
- movs r1, 0x15
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_0813867C: .4byte gPlayerParty
-_08138680: .4byte gActiveBank
-_08138684:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _081386A8 @ =gPlayerParty
- adds r0, r1
- ldr r3, _081386AC @ =gBattleBufferA
- ldr r1, _081386B0 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r1, r3, 0x1
- adds r1, r2, r1
- ldrb r1, [r1]
- adds r1, 0x8
-_0813869C:
- adds r3, 0x3
- adds r2, r3
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_081386A8: .4byte gPlayerParty
-_081386AC: .4byte gBattleBufferA
-_081386B0: .4byte gActiveBank
-_081386B4:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _081386CC @ =gPlayerParty
- adds r0, r1
- ldr r1, _081386D0 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0x1
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_081386CC: .4byte gPlayerParty
-_081386D0: .4byte gActiveBank
-_081386D4:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _081386EC @ =gPlayerParty
- adds r0, r1
- ldr r1, _081386F0 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0x19
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_081386EC: .4byte gPlayerParty
-_081386F0: .4byte gActiveBank
-_081386F4:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0813870C @ =gPlayerParty
- adds r0, r1
- ldr r1, _08138710 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0x1A
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_0813870C: .4byte gPlayerParty
-_08138710: .4byte gActiveBank
-_08138714:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0813872C @ =gPlayerParty
- adds r0, r1
- ldr r1, _08138730 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0x1B
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_0813872C: .4byte gPlayerParty
-_08138730: .4byte gActiveBank
-_08138734:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0813874C @ =gPlayerParty
- adds r0, r1
- ldr r1, _08138750 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0x1C
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_0813874C: .4byte gPlayerParty
-_08138750: .4byte gActiveBank
-_08138754:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0813876C @ =gPlayerParty
- adds r0, r1
- ldr r1, _08138770 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0x1D
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_0813876C: .4byte gPlayerParty
-_08138770: .4byte gActiveBank
-_08138774:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0813878C @ =gPlayerParty
- adds r0, r1
- ldr r1, _08138790 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0x1E
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_0813878C: .4byte gPlayerParty
-_08138790: .4byte gActiveBank
-_08138794:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _081387AC @ =gPlayerParty
- adds r0, r1
- ldr r1, _081387B0 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0x1F
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_081387AC: .4byte gPlayerParty
-_081387B0: .4byte gActiveBank
-_081387B4:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _081387CC @ =gPlayerParty
- adds r0, r1
- ldr r1, _081387D0 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0x20
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_081387CC: .4byte gPlayerParty
-_081387D0: .4byte gActiveBank
-_081387D4:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _081387EC @ =gPlayerParty
- adds r0, r1
- ldr r1, _081387F0 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0x22
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_081387EC: .4byte gPlayerParty
-_081387F0: .4byte gActiveBank
-_081387F4:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0813880C @ =gPlayerParty
- adds r0, r1
- ldr r1, _08138810 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0x23
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_0813880C: .4byte gPlayerParty
-_08138810: .4byte gActiveBank
-_08138814:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0813882C @ =gPlayerParty
- adds r0, r1
- ldr r1, _08138830 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0x24
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_0813882C: .4byte gPlayerParty
-_08138830: .4byte gActiveBank
-_08138834:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0813884C @ =gPlayerParty
- adds r0, r1
- ldr r1, _08138850 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0x25
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_0813884C: .4byte gPlayerParty
-_08138850: .4byte gActiveBank
-_08138854:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0813886C @ =gPlayerParty
- adds r0, r1
- ldr r1, _08138870 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0x26
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_0813886C: .4byte gPlayerParty
-_08138870: .4byte gActiveBank
-_08138874:
- movs r0, 0x64
- adds r4, r5, 0
- muls r4, r0
- ldr r0, _081388DC @ =gPlayerParty
- adds r4, r0
- ldr r5, _081388E0 @ =gActiveBank
- ldrb r2, [r5]
- lsls r2, 9
- adds r2, r7
- adds r0, r4, 0
- movs r1, 0x27
- bl SetMonData
- ldrb r2, [r5]
- lsls r2, 9
- adds r0, r7, 0x1
- adds r2, r0
- adds r0, r4, 0
- movs r1, 0x28
- bl SetMonData
- ldrb r2, [r5]
- lsls r2, 9
- adds r0, r7, 0x2
- adds r2, r0
- adds r0, r4, 0
- movs r1, 0x29
- bl SetMonData
- ldrb r2, [r5]
- lsls r2, 9
- adds r0, r7, 0x3
- adds r2, r0
- adds r0, r4, 0
- movs r1, 0x2A
- bl SetMonData
- ldrb r2, [r5]
- lsls r2, 9
- adds r0, r7, 0x4
- adds r2, r0
- adds r0, r4, 0
- movs r1, 0x2B
- bl SetMonData
- ldrb r2, [r5]
- lsls r2, 9
- adds r0, r7, 0x5
- adds r2, r0
- adds r0, r4, 0
- b _08138994
- .align 2, 0
-_081388DC: .4byte gPlayerParty
-_081388E0: .4byte gActiveBank
-_081388E4:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _081388FC @ =gPlayerParty
- adds r0, r1
- ldr r1, _08138900 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0x27
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_081388FC: .4byte gPlayerParty
-_08138900: .4byte gActiveBank
-_08138904:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0813891C @ =gPlayerParty
- adds r0, r1
- ldr r1, _08138920 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0x28
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_0813891C: .4byte gPlayerParty
-_08138920: .4byte gActiveBank
-_08138924:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0813893C @ =gPlayerParty
- adds r0, r1
- ldr r1, _08138940 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0x29
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_0813893C: .4byte gPlayerParty
-_08138940: .4byte gActiveBank
-_08138944:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0813895C @ =gPlayerParty
- adds r0, r1
- ldr r1, _08138960 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0x2A
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_0813895C: .4byte gPlayerParty
-_08138960: .4byte gActiveBank
-_08138964:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0813897C @ =gPlayerParty
- adds r0, r1
- ldr r1, _08138980 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0x2B
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_0813897C: .4byte gPlayerParty
-_08138980: .4byte gActiveBank
-_08138984:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0813899C @ =gPlayerParty
- adds r0, r1
- ldr r1, _081389A0 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
-_08138994:
- movs r1, 0x2C
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_0813899C: .4byte gPlayerParty
-_081389A0: .4byte gActiveBank
-_081389A4:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _081389BC @ =gPlayerParty
- adds r0, r1
- ldr r1, _081389C0 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_081389BC: .4byte gPlayerParty
-_081389C0: .4byte gActiveBank
-_081389C4:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _081389DC @ =gPlayerParty
- adds r0, r1
- ldr r1, _081389E0 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0x9
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_081389DC: .4byte gPlayerParty
-_081389E0: .4byte gActiveBank
-_081389E4:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _081389FC @ =gPlayerParty
- adds r0, r1
- ldr r1, _08138A00 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0x37
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_081389FC: .4byte gPlayerParty
-_08138A00: .4byte gActiveBank
-_08138A04:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08138A1C @ =gPlayerParty
- adds r0, r1
- ldr r1, _08138A20 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0x38
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_08138A1C: .4byte gPlayerParty
-_08138A20: .4byte gActiveBank
-_08138A24:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08138A3C @ =gPlayerParty
- adds r0, r1
- ldr r1, _08138A40 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0x39
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_08138A3C: .4byte gPlayerParty
-_08138A40: .4byte gActiveBank
-_08138A44:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08138A5C @ =gPlayerParty
- adds r0, r1
- ldr r1, _08138A60 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0x3A
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_08138A5C: .4byte gPlayerParty
-_08138A60: .4byte gActiveBank
-_08138A64:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08138A7C @ =gPlayerParty
- adds r0, r1
- ldr r1, _08138A80 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0x3B
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_08138A7C: .4byte gPlayerParty
-_08138A80: .4byte gActiveBank
-_08138A84:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08138A9C @ =gPlayerParty
- adds r0, r1
- ldr r1, _08138AA0 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0x3C
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_08138A9C: .4byte gPlayerParty
-_08138AA0: .4byte gActiveBank
-_08138AA4:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08138ABC @ =gPlayerParty
- adds r0, r1
- ldr r1, _08138AC0 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0x3D
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_08138ABC: .4byte gPlayerParty
-_08138AC0: .4byte gActiveBank
-_08138AC4:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08138ADC @ =gPlayerParty
- adds r0, r1
- ldr r1, _08138AE0 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0x3E
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_08138ADC: .4byte gPlayerParty
-_08138AE0: .4byte gActiveBank
-_08138AE4:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08138AFC @ =gPlayerParty
- adds r0, r1
- ldr r1, _08138B00 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0x3F
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_08138AFC: .4byte gPlayerParty
-_08138B00: .4byte gActiveBank
-_08138B04:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08138B1C @ =gPlayerParty
- adds r0, r1
- ldr r1, _08138B20 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0x16
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_08138B1C: .4byte gPlayerParty
-_08138B20: .4byte gActiveBank
-_08138B24:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08138B3C @ =gPlayerParty
- adds r0, r1
- ldr r1, _08138B40 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0x17
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_08138B3C: .4byte gPlayerParty
-_08138B40: .4byte gActiveBank
-_08138B44:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08138B5C @ =gPlayerParty
- adds r0, r1
- ldr r1, _08138B60 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0x18
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_08138B5C: .4byte gPlayerParty
-_08138B60: .4byte gActiveBank
-_08138B64:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08138B7C @ =gPlayerParty
- adds r0, r1
- ldr r1, _08138B80 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0x21
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_08138B7C: .4byte gPlayerParty
-_08138B80: .4byte gActiveBank
-_08138B84:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08138B9C @ =gPlayerParty
- adds r0, r1
- ldr r1, _08138BA0 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0x2F
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_08138B9C: .4byte gPlayerParty
-_08138BA0: .4byte gActiveBank
-_08138BA4:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08138BBC @ =gPlayerParty
- adds r0, r1
- ldr r1, _08138BC0 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0x30
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_08138BBC: .4byte gPlayerParty
-_08138BC0: .4byte gActiveBank
-_08138BC4:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08138BDC @ =gPlayerParty
- adds r0, r1
- ldr r1, _08138BE0 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0x32
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_08138BDC: .4byte gPlayerParty
-_08138BE0: .4byte gActiveBank
-_08138BE4:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08138BFC @ =gPlayerParty
- adds r0, r1
- ldr r1, _08138C00 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0x33
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_08138BFC: .4byte gPlayerParty
-_08138C00: .4byte gActiveBank
-_08138C04:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08138C1C @ =gPlayerParty
- adds r0, r1
- ldr r1, _08138C20 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0x34
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_08138C1C: .4byte gPlayerParty
-_08138C20: .4byte gActiveBank
-_08138C24:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08138C3C @ =gPlayerParty
- adds r0, r1
- ldr r1, _08138C40 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0x35
- bl SetMonData
- b _08138C5A
- .align 2, 0
-_08138C3C: .4byte gPlayerParty
-_08138C40: .4byte gActiveBank
-_08138C44:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _08138C84 @ =gPlayerParty
- adds r0, r1
- ldr r1, _08138C88 @ =gActiveBank
- ldrb r2, [r1]
- lsls r2, 9
- adds r2, r7
- movs r1, 0x36
- bl SetMonData
-_08138C5A:
- ldr r2, _08138C8C @ =gBattlePartyID
- ldr r0, _08138C88 @ =gActiveBank
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r2
- ldrh r2, [r0]
- movs r0, 0x64
- muls r0, r2
- ldr r2, _08138C84 @ =gPlayerParty
- adds r0, r2
- bl sub_80324F8
- add sp, 0x34
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08138C84: .4byte gPlayerParty
-_08138C88: .4byte gActiveBank
-_08138C8C: .4byte gBattlePartyID
- thumb_func_end sub_8138294
-
- thumb_func_start sub_8138C90
-sub_8138C90: @ 8138C90
- push {lr}
- bl WallyBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_8138C90
-
- thumb_func_start sub_8138C9C
-sub_8138C9C: @ 8138C9C
- push {lr}
- bl WallyBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_8138C9C
-
- thumb_func_start sub_8138CA8
-sub_8138CA8: @ 8138CA8
- push {lr}
- bl WallyBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_8138CA8
-
- thumb_func_start sub_8138CB4
-sub_8138CB4: @ 8138CB4
- push {r4-r6,lr}
- ldr r0, _08138CE0 @ =gBattleBufferA
- ldr r6, _08138CE4 @ =gActiveBank
- ldrb r2, [r6]
- lsls r1, r2, 9
- adds r0, 0x1
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0
- bne _08138CF0
- adds r0, r2, 0
- adds r1, r2, 0
- movs r3, 0x1
- bl move_anim_start_t4
- ldr r0, _08138CE8 @ =gBattleBankFunc
- ldrb r1, [r6]
- lsls r1, 2
- adds r1, r0
- ldr r0, _08138CEC @ =sub_813789C
- str r0, [r1]
- b _08138D26
- .align 2, 0
-_08138CE0: .4byte gBattleBufferA
-_08138CE4: .4byte gActiveBank
-_08138CE8: .4byte gBattleBankFunc
-_08138CEC: .4byte sub_813789C
-_08138CF0:
- ldr r5, _08138D2C @ =gObjectBankIDs
- adds r0, r2, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _08138D30 @ =gSprites
- adds r0, r4
- bl FreeSpriteOamMatrix
- ldrb r0, [r6]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySprite
- ldr r1, _08138D34 @ =gHealthboxIDs
- ldrb r0, [r6]
- adds r0, r1
- ldrb r0, [r0]
- bl sub_8043DB0
- bl WallyBufferExecCompleted
-_08138D26:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08138D2C: .4byte gObjectBankIDs
-_08138D30: .4byte gSprites
-_08138D34: .4byte gHealthboxIDs
- thumb_func_end sub_8138CB4
-
- thumb_func_start sub_8138D38
-sub_8138D38: @ 8138D38
- push {r4-r6,lr}
- ldr r4, _08138DE0 @ =gActiveBank
- ldrb r1, [r4]
- movs r0, 0x2
- bl sub_8031AF4
- ldrb r0, [r4]
- bl GetBankIdentity
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0x2
- bl GetMonSpriteTemplate_803C5A0
- ldr r0, _08138DE4 @ =gUnknown_02024E8C
- ldr r1, _08138DE8 @ =gTrainerBackPicCoords
- ldrb r1, [r1, 0x8]
- 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, _08138DEC @ =gObjectBankIDs
- ldrb r1, [r4]
- adds r1, r6
- strb r0, [r1]
- ldr r5, _08138DF0 @ =gSprites
- ldrb r3, [r4]
- adds r0, r3, r6
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- lsls r3, 4
- ldrb r2, [r1, 0x5]
- movs r0, 0xF
- ands r0, r2
- orrs r0, r3
- strb r0, [r1, 0x5]
- ldrb r0, [r4]
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0xF0
- strh r1, [r0, 0x24]
- ldrb r0, [r4]
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r1, _08138DF4 @ =0x0000fffe
- strh r1, [r0, 0x2E]
- ldrb r0, [r4]
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r5, 0x1C
- adds r0, r5
- ldr r1, _08138DF8 @ =sub_80313A0
- str r1, [r0]
- ldr r1, _08138DFC @ =gBattleBankFunc
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, _08138E00 @ =sub_813741C
- str r1, [r0]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08138DE0: .4byte gActiveBank
-_08138DE4: .4byte gUnknown_02024E8C
-_08138DE8: .4byte gTrainerBackPicCoords
-_08138DEC: .4byte gObjectBankIDs
-_08138DF0: .4byte gSprites
-_08138DF4: .4byte 0x0000fffe
-_08138DF8: .4byte sub_80313A0
-_08138DFC: .4byte gBattleBankFunc
-_08138E00: .4byte sub_813741C
- thumb_func_end sub_8138D38
-
- thumb_func_start sub_8138E04
-sub_8138E04: @ 8138E04
- push {r4-r6,lr}
- ldr r4, _08138EAC @ =gActiveBank
- ldrb r1, [r4]
- movs r0, 0x2
- bl sub_8031AF4
- ldrb r0, [r4]
- bl GetBankIdentity
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0x2
- bl GetMonSpriteTemplate_803C5A0
- ldr r0, _08138EB0 @ =gUnknown_02024E8C
- ldr r1, _08138EB4 @ =gTrainerBackPicCoords
- ldrb r1, [r1, 0x8]
- 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, _08138EB8 @ =gObjectBankIDs
- ldrb r1, [r4]
- adds r1, r6
- strb r0, [r1]
- ldr r5, _08138EBC @ =gSprites
- ldrb r3, [r4]
- adds r0, r3, r6
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- lsls r3, 4
- ldrb r2, [r1, 0x5]
- movs r0, 0xF
- ands r0, r2
- orrs r0, r3
- strb r0, [r1, 0x5]
- ldrb r0, [r4]
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r1, _08138EC0 @ =0x0000ffa0
- strh r1, [r0, 0x24]
- ldrb r0, [r4]
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0x2
- strh r1, [r0, 0x2E]
- ldrb r0, [r4]
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r5, 0x1C
- adds r0, r5
- ldr r1, _08138EC4 @ =sub_80313A0
- str r1, [r0]
- ldr r1, _08138EC8 @ =gBattleBankFunc
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, _08138ECC @ =sub_8137908
- str r1, [r0]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08138EAC: .4byte gActiveBank
-_08138EB0: .4byte gUnknown_02024E8C
-_08138EB4: .4byte gTrainerBackPicCoords
-_08138EB8: .4byte gObjectBankIDs
-_08138EBC: .4byte gSprites
-_08138EC0: .4byte 0x0000ffa0
-_08138EC4: .4byte sub_80313A0
-_08138EC8: .4byte gBattleBankFunc
-_08138ECC: .4byte sub_8137908
- thumb_func_end sub_8138E04
-
- thumb_func_start sub_8138ED0
-sub_8138ED0: @ 8138ED0
- push {lr}
- bl WallyBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_8138ED0
-
- thumb_func_start sub_8138EDC
-sub_8138EDC: @ 8138EDC
- push {lr}
- bl WallyBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_8138EDC
-
- thumb_func_start sub_8138EE8
-sub_8138EE8: @ 8138EE8
- push {lr}
- bl WallyBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_8138EE8
-
- thumb_func_start sub_8138EF4
-sub_8138EF4: @ 8138EF4
- push {r4,r5,lr}
- ldr r1, _08138F30 @ =0x02017840
- movs r0, 0x4
- strb r0, [r1, 0x8]
- ldr r1, _08138F34 @ =gDoingBattleAnim
- movs r0, 0x1
- strb r0, [r1]
- ldr r5, _08138F38 @ =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, _08138F3C @ =gBattleBankFunc
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldr r1, _08138F40 @ =bx_wait_t5
- str r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08138F30: .4byte 0x02017840
-_08138F34: .4byte gDoingBattleAnim
-_08138F38: .4byte gActiveBank
-_08138F3C: .4byte gBattleBankFunc
-_08138F40: .4byte bx_wait_t5
- thumb_func_end sub_8138EF4
-
- thumb_func_start sub_8138F44
-sub_8138F44: @ 8138F44
- push {r4,r5,lr}
- ldr r1, _08138F88 @ =gBattleBufferA
- ldr r5, _08138F8C @ =gActiveBank
- ldrb r0, [r5]
- lsls r0, 9
- adds r1, 0x1
- adds r0, r1
- ldrb r1, [r0]
- ldr r0, _08138F90 @ =0x02017840
- strb r1, [r0, 0x8]
- ldr r1, _08138F94 @ =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, _08138F98 @ =gBattleBankFunc
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldr r1, _08138F9C @ =bx_wait_t5
- str r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08138F88: .4byte gBattleBufferA
-_08138F8C: .4byte gActiveBank
-_08138F90: .4byte 0x02017840
-_08138F94: .4byte gDoingBattleAnim
-_08138F98: .4byte gBattleBankFunc
-_08138F9C: .4byte bx_wait_t5
- thumb_func_end sub_8138F44
-
- thumb_func_start sub_8138FA0
-sub_8138FA0: @ 8138FA0
- push {lr}
- bl WallyBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_8138FA0
-
- thumb_func_start sub_8138FAC
-sub_8138FAC: @ 8138FAC
- push {r4-r6,lr}
- ldr r0, _08139080 @ =gBattleBufferA
- mov r12, r0
- ldr r6, _08139084 @ =gActiveBank
- ldrb r2, [r6]
- lsls r2, 9
- adds r0, 0x1
- adds r0, r2, r0
- ldrb r0, [r0]
- mov r1, r12
- adds r1, 0x2
- adds r1, r2, r1
- ldrb r1, [r1]
- lsls r1, 8
- orrs r0, r1
- ldr r5, _08139088 @ =gUnknown_0202F7C4
- mov r1, r12
- adds r1, 0x3
- adds r2, r1
- ldrb r1, [r2]
- strb r1, [r5]
- ldr r4, _0813908C @ =gMovePowerMoveAnim
- ldrb r2, [r6]
- lsls r2, 9
- mov r1, r12
- adds r1, 0x4
- adds r1, r2, r1
- ldrb r3, [r1]
- mov r1, r12
- adds r1, 0x5
- adds r2, r1
- ldrb r1, [r2]
- lsls r1, 8
- orrs r3, r1
- strh r3, [r4]
- ldr r4, _08139090 @ =gMoveDmgMoveAnim
- ldrb r2, [r6]
- lsls r2, 9
- mov r1, r12
- adds r1, 0x6
- adds r1, r2, r1
- ldrb r3, [r1]
- mov r1, r12
- adds r1, 0x7
- adds r1, r2, r1
- ldrb r1, [r1]
- lsls r1, 8
- orrs r3, r1
- mov r1, r12
- adds r1, 0x8
- adds r1, r2, r1
- ldrb r1, [r1]
- lsls r1, 16
- orrs r3, r1
- mov r1, r12
- adds r1, 0x9
- adds r2, r1
- ldrb r1, [r2]
- lsls r1, 24
- orrs r3, r1
- str r3, [r4]
- ldr r3, _08139094 @ =gHappinessMoveAnim
- ldrb r1, [r6]
- lsls r1, 9
- mov r2, r12
- adds r2, 0xA
- adds r1, r2
- ldrb r1, [r1]
- strb r1, [r3]
- ldr r4, _08139098 @ =gWeatherMoveAnim
- ldrb r2, [r6]
- lsls r2, 9
- mov r1, r12
- adds r1, 0xC
- adds r1, r2, r1
- ldrb r3, [r1]
- mov r1, r12
- adds r1, 0xD
- adds r2, r1
- ldrb r1, [r2]
- lsls r1, 8
- orrs r3, r1
- strh r3, [r4]
- ldr r3, _0813909C @ =gDisableStructMoveAnim
- ldrb r2, [r6]
- lsls r2, 9
- mov r1, r12
- adds r1, 0x10
- adds r2, r1
- str r2, [r3]
- ldr r3, _081390A0 @ =gPID_perBank
- ldrb r1, [r6]
- lsls r1, 2
- adds r1, r3
- ldr r2, [r2]
- str r2, [r1]
- ldrb r1, [r5]
- bl sub_8031720
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _081390A4
- bl WallyBufferExecCompleted
- b _081390BE
- .align 2, 0
-_08139080: .4byte gBattleBufferA
-_08139084: .4byte gActiveBank
-_08139088: .4byte gUnknown_0202F7C4
-_0813908C: .4byte gMovePowerMoveAnim
-_08139090: .4byte gMoveDmgMoveAnim
-_08139094: .4byte gHappinessMoveAnim
-_08139098: .4byte gWeatherMoveAnim
-_0813909C: .4byte gDisableStructMoveAnim
-_081390A0: .4byte gPID_perBank
-_081390A4:
- ldrb r1, [r6]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _081390C4 @ =0x02017810
- adds r0, r1
- strb r2, [r0, 0x4]
- ldr r1, _081390C8 @ =gBattleBankFunc
- ldrb r0, [r6]
- lsls r0, 2
- adds r0, r1
- ldr r1, _081390CC @ =sub_81390D0
- str r1, [r0]
-_081390BE:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081390C4: .4byte 0x02017810
-_081390C8: .4byte gBattleBankFunc
-_081390CC: .4byte sub_81390D0
- thumb_func_end sub_8138FAC
-
- thumb_func_start sub_81390D0
-sub_81390D0: @ 81390D0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r2, _0813910C @ =gBattleBufferA
- ldr r5, _08139110 @ =gActiveBank
- ldrb r3, [r5]
- lsls r1, r3, 9
- adds r0, r2, 0x1
- mov r8, r0
- adds r0, r1, r0
- ldrb r4, [r0]
- adds r7, r2, 0x2
- adds r1, r7
- ldrb r0, [r1]
- lsls r0, 8
- orrs r4, r0
- lsls r0, r3, 1
- adds r0, r3
- lsls r0, 2
- ldr r6, _08139114 @ =0x02017810
- adds r0, r6
- ldrb r2, [r0, 0x4]
- cmp r2, 0x1
- beq _08139150
- cmp r2, 0x1
- bgt _08139118
- cmp r2, 0
- beq _08139122
- b _081391FC
- .align 2, 0
-_0813910C: .4byte gBattleBufferA
-_08139110: .4byte gActiveBank
-_08139114: .4byte 0x02017810
-_08139118:
- cmp r2, 0x2
- beq _08139176
- cmp r2, 0x3
- beq _081391C4
- b _081391FC
-_08139122:
- lsls r0, r3, 2
- adds r1, r6, 0
- subs r1, 0x10
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _08139140
- adds r0, r3, 0
- adds r1, r3, 0
- adds r2, r3, 0
- movs r3, 0x5
- bl move_anim_start_t4
-_08139140:
- ldrb r0, [r5]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- movs r0, 0x1
- strb r0, [r1, 0x4]
- b _081391FC
-_08139150:
- ldrb r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _081391FC
- movs r0, 0
- bl sub_80326EC
- adds r0, r4, 0
- bl ExecuteMoveAnim
- ldrb r0, [r5]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- movs r0, 0x2
- strb r0, [r1, 0x4]
- b _081391FC
-_08139176:
- ldr r0, _081391BC @ =gAnimScriptCallback
- ldr r0, [r0]
- bl _call_via_r0
- ldr r0, _081391C0 @ =gAnimScriptActive
- ldrb r0, [r0]
- cmp r0, 0
- bne _081391FC
- movs r0, 0x1
- bl sub_80326EC
- ldrb r2, [r5]
- lsls r0, r2, 2
- adds r1, r6, 0
- subs r1, 0x10
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _081391AA
- adds r0, r2, 0
- adds r1, r2, 0
- movs r3, 0x6
- bl move_anim_start_t4
-_081391AA:
- ldrb r0, [r5]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- movs r0, 0x3
- strb r0, [r1, 0x4]
- b _081391FC
- .align 2, 0
-_081391BC: .4byte gAnimScriptCallback
-_081391C0: .4byte gAnimScriptActive
-_081391C4:
- ldrb r1, [r0]
- movs r0, 0x40
- ands r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _081391FC
- bl sub_8031F24
- ldrb r0, [r5]
- lsls r2, r0, 9
- mov r3, r8
- adds r1, r2, r3
- ldrb r1, [r1]
- adds r2, r7
- ldrb r2, [r2]
- lsls r2, 8
- orrs r1, r2
- bl sub_80324BC
- ldrb r1, [r5]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- strb r4, [r0, 0x4]
- bl WallyBufferExecCompleted
-_081391FC:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81390D0
-
- thumb_func_start sub_8139208
-sub_8139208: @ 8139208
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r0, _08139254 @ =gUnknown_030042A4
- movs r1, 0
- strh r1, [r0]
- ldr r0, _08139258 @ =gUnknown_030042A0
- strh r1, [r0]
- ldr r5, _0813925C @ =gActiveBank
- ldrb r0, [r5]
- lsls r0, 9
- ldr r1, _08139260 @ =gUnknown_02023A62
- adds r4, r0, r1
- ldrh r0, [r4]
- cmp r0, 0x2
- bne _0813922A
- bl DestroyMenuCursor
-_0813922A:
- ldrh r0, [r4]
- bl BufferStringBattle
- ldr r0, _08139264 @ =gUnknown_03004210
- ldr r1, _08139268 @ =gDisplayedStringBattle
- movs r2, 0xF
- str r2, [sp]
- movs r2, 0x90
- movs r3, 0x2
- bl sub_8002EB0
- ldr r1, _0813926C @ =gBattleBankFunc
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldr r1, _08139270 @ =sub_8137454
- str r1, [r0]
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08139254: .4byte gUnknown_030042A4
-_08139258: .4byte gUnknown_030042A0
-_0813925C: .4byte gActiveBank
-_08139260: .4byte gUnknown_02023A62
-_08139264: .4byte gUnknown_03004210
-_08139268: .4byte gDisplayedStringBattle
-_0813926C: .4byte gBattleBankFunc
-_08139270: .4byte sub_8137454
- thumb_func_end sub_8139208
-
- thumb_func_start dp01t_11_5_message_for_player_only
-dp01t_11_5_message_for_player_only: @ 8139274
- push {lr}
- ldr r0, _0813928C @ =gActiveBank
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08139290
- bl sub_8139208
- b _08139294
- .align 2, 0
-_0813928C: .4byte gActiveBank
-_08139290:
- bl WallyBufferExecCompleted
-_08139294:
- pop {r0}
- bx r0
- thumb_func_end dp01t_11_5_message_for_player_only
-
- thumb_func_start sub_8139298
-sub_8139298: @ 8139298
- push {r4,r5,lr}
- sub sp, 0x8
- ldr r0, _0813934C @ =gUnknown_030042A4
- movs r2, 0
- strh r2, [r0]
- ldr r1, _08139350 @ =gUnknown_030042A0
- movs r0, 0xA0
- strh r0, [r1]
- ldr r4, _08139354 @ =gUnknown_03004210
- movs r5, 0
- strb r2, [r4, 0x6]
- movs r0, 0x1B
- str r0, [sp]
- movs r0, 0x12
- str r0, [sp, 0x4]
- adds r0, r4, 0
- movs r1, 0xA
- movs r2, 0x2
- movs r3, 0xF
- bl FillWindowRect_DefaultPalette
- movs r0, 0x10
- str r0, [sp]
- movs r0, 0x24
- str r0, [sp, 0x4]
- adds r0, r4, 0
- movs r1, 0xA
- movs r2, 0x2
- movs r3, 0x23
- bl FillWindowRect_DefaultPalette
- ldr r1, _08139358 @ =gBattleBankFunc
- ldr r0, _0813935C @ =gActiveBank
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r1, _08139360 @ =sub_81372BC
- str r1, [r0]
- ldr r1, _08139364 @ =gUnknown_08400CF3
- movs r2, 0xC8
- lsls r2, 1
- movs r0, 0x23
- str r0, [sp]
- adds r0, r4, 0
- movs r3, 0x12
- bl InitWindow
- adds r0, r4, 0
- bl sub_8002F44
- ldr r1, _08139368 @ =0x0000ffff
- ldr r3, _0813936C @ =0x00002d9f
- str r5, [sp]
- movs r0, 0
- movs r2, 0xC
- bl sub_814A5C0
- movs r4, 0
-_0813930C:
- lsls r0, r4, 24
- lsrs r0, 24
- bl nullsub_8
- adds r4, 0x1
- cmp r4, 0x3
- ble _0813930C
- movs r0, 0
- movs r1, 0
- bl sub_802E3E4
- ldr r0, _08139370 @ =gUnknown_08400CCC
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r4, _08139354 @ =gUnknown_03004210
- ldr r1, _08139374 @ =gDisplayedStringBattle
- movs r2, 0xDC
- lsls r2, 1
- movs r0, 0x23
- str r0, [sp]
- adds r0, r4, 0
- movs r3, 0x2
- bl InitWindow
- adds r0, r4, 0
- bl sub_8002F44
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0813934C: .4byte gUnknown_030042A4
-_08139350: .4byte gUnknown_030042A0
-_08139354: .4byte gUnknown_03004210
-_08139358: .4byte gBattleBankFunc
-_0813935C: .4byte gActiveBank
-_08139360: .4byte sub_81372BC
-_08139364: .4byte gUnknown_08400CF3
-_08139368: .4byte 0x0000ffff
-_0813936C: .4byte 0x00002d9f
-_08139370: .4byte gUnknown_08400CCC
-_08139374: .4byte gDisplayedStringBattle
- thumb_func_end sub_8139298
-
- thumb_func_start sub_8139378
-sub_8139378: @ 8139378
- push {lr}
- bl WallyBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_8139378
-
- thumb_func_start sub_8139384
-sub_8139384: @ 8139384
- push {r4,r5,lr}
- ldr r5, _08139398 @ =0x02000000
- ldr r0, _0813939C @ =0x000160a9
- adds r4, r5, r0
- ldrb r0, [r4]
- cmp r0, 0
- beq _081393A0
- cmp r0, 0x1
- beq _081393B2
- b _081393DE
- .align 2, 0
-_08139398: .4byte 0x02000000
-_0813939C: .4byte 0x000160a9
-_081393A0:
- bl sub_80304A8
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- ldr r0, _081393E4 @ =0x000160ab
- adds r1, r5, r0
- movs r0, 0x50
- strb r0, [r1]
-_081393B2:
- ldr r1, _081393E8 @ =0x02000000
- ldr r0, _081393E4 @ =0x000160ab
- adds r1, r0
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- cmp r0, 0
- bne _081393DE
- bl DestroyMenuCursor
- movs r0, 0x5
- bl PlaySE
- movs r2, 0x80
- lsls r2, 1
- movs r0, 0x1
- movs r1, 0xA
- bl dp01_build_cmdbuf_x21_a_bb
- bl WallyBufferExecCompleted
-_081393DE:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081393E4: .4byte 0x000160ab
-_081393E8: .4byte 0x02000000
- thumb_func_end sub_8139384
-
- thumb_func_start sub_81393EC
-sub_81393EC: @ 81393EC
- 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, _0813941C @ =gBattleBankFunc
- ldr r2, _08139420 @ =gActiveBank
- ldrb r0, [r2]
- lsls r0, 2
- adds r0, r1
- ldr r1, _08139424 @ =sub_81374C4
- str r1, [r0]
- ldr r1, _08139428 @ =gBankInMenu
- ldrb r0, [r2]
- strb r0, [r1]
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_0813941C: .4byte gBattleBankFunc
-_08139420: .4byte gActiveBank
-_08139424: .4byte sub_81374C4
-_08139428: .4byte gBankInMenu
- thumb_func_end sub_81393EC
-
- thumb_func_start sub_813942C
-sub_813942C: @ 813942C
- push {lr}
- bl WallyBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_813942C
-
- thumb_func_start sub_8139438
-sub_8139438: @ 8139438
- push {lr}
- bl WallyBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_8139438
-
- thumb_func_start sub_8139444
-sub_8139444: @ 8139444
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- movs r0, 0
- bl load_gfxc_health_bar
- ldr r3, _081394BC @ =gBattleBufferA
- ldr r0, _081394C0 @ =gActiveBank
- mov r9, r0
- ldrb r4, [r0]
- lsls r2, r4, 9
- adds r0, r3, 0x2
- adds r0, r2, r0
- ldrb r1, [r0]
- adds r3, 0x3
- adds r2, r3
- ldrb r0, [r2]
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- asrs r7, r1, 16
- ldr r0, _081394C4 @ =0x00007fff
- cmp r7, r0
- beq _081394D4
- ldr r6, _081394C8 @ =gBattlePartyID
- lsls r0, r4, 1
- adds r0, r6
- ldrh r0, [r0]
- movs r5, 0x64
- muls r0, r5
- ldr r4, _081394CC @ =gPlayerParty
- adds r0, r4
- movs r1, 0x3A
- bl GetMonData
- mov r8, r0
- mov r1, r9
- ldrb r0, [r1]
- lsls r0, 1
- adds r0, r6
- ldrh r0, [r0]
- muls r0, r5
- adds r0, r4
- movs r1, 0x39
- bl GetMonData
- adds r3, r0, 0
- mov r1, r9
- ldrb r0, [r1]
- ldr r1, _081394D0 @ =gHealthboxIDs
- adds r1, r0, r1
- ldrb r1, [r1]
- str r7, [sp]
- mov r2, r8
- bl sub_8043D84
- b _0813950E
- .align 2, 0
-_081394BC: .4byte gBattleBufferA
-_081394C0: .4byte gActiveBank
-_081394C4: .4byte 0x00007fff
-_081394C8: .4byte gBattlePartyID
-_081394CC: .4byte gPlayerParty
-_081394D0: .4byte gHealthboxIDs
-_081394D4:
- ldr r1, _0813952C @ =gBattlePartyID
- lsls r0, r4, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08139530 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x3A
- bl GetMonData
- adds r2, r0, 0
- mov r1, r9
- ldrb r0, [r1]
- ldr r4, _08139534 @ =gHealthboxIDs
- adds r1, r0, r4
- ldrb r1, [r1]
- str r7, [sp]
- movs r3, 0
- bl sub_8043D84
- mov r1, r9
- ldrb r0, [r1]
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0
- movs r2, 0
- bl sub_80440EC
-_0813950E:
- ldr r1, _08139538 @ =gBattleBankFunc
- ldr r0, _0813953C @ =gActiveBank
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r1, _08139540 @ =sub_81377B0
- str r1, [r0]
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0813952C: .4byte gBattlePartyID
-_08139530: .4byte gPlayerParty
-_08139534: .4byte gHealthboxIDs
-_08139538: .4byte gBattleBankFunc
-_0813953C: .4byte gActiveBank
-_08139540: .4byte sub_81377B0
- thumb_func_end sub_8139444
-
- thumb_func_start sub_8139544
-sub_8139544: @ 8139544
- push {lr}
- bl WallyBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_8139544
-
- thumb_func_start sub_8139550
-sub_8139550: @ 8139550
- push {lr}
- bl WallyBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_8139550
-
- thumb_func_start sub_813955C
-sub_813955C: @ 813955C
- push {lr}
- bl WallyBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_813955C
-
- thumb_func_start sub_8139568
-sub_8139568: @ 8139568
- push {lr}
- bl WallyBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_8139568
-
- thumb_func_start sub_8139574
-sub_8139574: @ 8139574
- push {lr}
- bl WallyBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_8139574
-
- thumb_func_start sub_8139580
-sub_8139580: @ 8139580
- push {lr}
- bl WallyBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_8139580
-
- thumb_func_start sub_813958C
-sub_813958C: @ 813958C
- push {lr}
- bl WallyBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_813958C
-
- thumb_func_start sub_8139598
-sub_8139598: @ 8139598
- push {lr}
- bl WallyBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_8139598
-
- thumb_func_start sub_81395A4
-sub_81395A4: @ 81395A4
- push {lr}
- bl WallyBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_81395A4
-
- thumb_func_start sub_81395B0
-sub_81395B0: @ 81395B0
- push {lr}
- bl WallyBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_81395B0
-
- thumb_func_start sub_81395BC
-sub_81395BC: @ 81395BC
- push {lr}
- bl WallyBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_81395BC
-
- thumb_func_start sub_81395C8
-sub_81395C8: @ 81395C8
- push {lr}
- bl WallyBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_81395C8
-
- thumb_func_start sub_81395D4
-sub_81395D4: @ 81395D4
- push {lr}
- bl WallyBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_81395D4
-
- thumb_func_start sub_81395E0
-sub_81395E0: @ 81395E0
- push {lr}
- bl WallyBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_81395E0
-
- thumb_func_start sub_81395EC
-sub_81395EC: @ 81395EC
- push {lr}
- bl WallyBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_81395EC
-
- thumb_func_start sub_81395F8
-sub_81395F8: @ 81395F8
- push {lr}
- bl WallyBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_81395F8
-
- thumb_func_start sub_8139604
-sub_8139604: @ 8139604
- push {r4,lr}
- ldr r3, _0813962C @ =gSprites
- ldr r2, _08139630 @ =gObjectBankIDs
- ldr r4, _08139634 @ =gActiveBank
- ldrb r0, [r4]
- adds r0, r2
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r0, [r0]
- lsls r0, 29
- cmp r0, 0
- bge _08139638
- bl WallyBufferExecCompleted
- b _08139662
- .align 2, 0
-_0813962C: .4byte gSprites
-_08139630: .4byte gObjectBankIDs
-_08139634: .4byte gActiveBank
-_08139638:
- ldr r1, _08139668 @ =gDoingBattleAnim
- movs r0, 0x1
- strb r0, [r1]
- ldrb r0, [r4]
- adds r0, r2
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- movs r1, 0
- strh r1, [r0, 0x30]
- ldrb r0, [r4]
- bl sub_8047858
- ldr r1, _0813966C @ =gBattleBankFunc
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, _08139670 @ =bx_blink_t5
- str r1, [r0]
-_08139662:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08139668: .4byte gDoingBattleAnim
-_0813966C: .4byte gBattleBankFunc
-_08139670: .4byte bx_blink_t5
- thumb_func_end sub_8139604
-
- thumb_func_start sub_8139674
-sub_8139674: @ 8139674
- push {lr}
- bl WallyBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_8139674
-
- thumb_func_start sub_8139680
-sub_8139680: @ 8139680
- push {lr}
- ldr r2, _081396A8 @ =gBattleBufferA
- ldr r0, _081396AC @ =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 PlaySE
- bl WallyBufferExecCompleted
- pop {r0}
- bx r0
- .align 2, 0
-_081396A8: .4byte gBattleBufferA
-_081396AC: .4byte gActiveBank
- thumb_func_end sub_8139680
-
- thumb_func_start sub_81396B0
-sub_81396B0: @ 81396B0
- push {lr}
- ldr r2, _081396D8 @ =gBattleBufferA
- ldr r0, _081396DC @ =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 WallyBufferExecCompleted
- pop {r0}
- bx r0
- .align 2, 0
-_081396D8: .4byte gBattleBufferA
-_081396DC: .4byte gActiveBank
- thumb_func_end sub_81396B0
-
- thumb_func_start sub_81396E0
-sub_81396E0: @ 81396E0
- push {lr}
- ldr r1, _08139710 @ =gBattlePartyID
- ldr r0, _08139714 @ =gActiveBank
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08139718 @ =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x19
- bl PlayCry1
- bl WallyBufferExecCompleted
- pop {r0}
- bx r0
- .align 2, 0
-_08139710: .4byte gBattlePartyID
-_08139714: .4byte gActiveBank
-_08139718: .4byte gPlayerParty
- thumb_func_end sub_81396E0
-
- thumb_func_start dp01t_2E_5_battle_intro
-dp01t_2E_5_battle_intro: @ 813971C
- push {lr}
- ldr r1, _08139744 @ =gBattleBufferA
- ldr r0, _08139748 @ =gActiveBank
- ldrb r0, [r0]
- lsls r0, 9
- adds r1, 0x1
- adds r0, r1
- ldrb r0, [r0]
- bl sub_80E43C0
- ldr r2, _0813974C @ =gUnknown_02024DE8
- ldrh r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strh r0, [r2]
- bl WallyBufferExecCompleted
- pop {r0}
- bx r0
- .align 2, 0
-_08139744: .4byte gBattleBufferA
-_08139748: .4byte gActiveBank
-_0813974C: .4byte gUnknown_02024DE8
- thumb_func_end dp01t_2E_5_battle_intro
-
- thumb_func_start sub_8139750
-sub_8139750: @ 8139750
- push {r4-r7,lr}
- ldr r6, _08139880 @ =gObjectBankIDs
- ldr r7, _08139884 @ =gActiveBank
- ldrb r0, [r7]
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r5, _08139888 @ =gSprites
- adds r0, r5
- bl oamt_add_pos2_onto_pos1
- ldrb r0, [r7]
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0x32
- strh r1, [r0, 0x2E]
- ldrb r0, [r7]
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r1, _0813988C @ =0x0000ffd8
- strh r1, [r0, 0x32]
- ldrb r0, [r7]
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrh r1, [r0, 0x22]
- strh r1, [r0, 0x36]
- ldrb r0, [r7]
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r5, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, _08139890 @ =sub_8078B34
- str r1, [r0]
- ldrb r2, [r7]
- adds r0, r2, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r2, [r0, 0x38]
- ldrb r0, [r7]
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r1, _08139894 @ =sub_8030E38
- bl oamt_set_x3A_32
- ldrb r0, [r7]
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0x1
- bl StartSpriteAnim
- ldr r0, _08139898 @ =0x0000d6f8
- bl AllocSpritePalette
- adds r4, r0, 0
- lsls r4, 24
- ldr r0, _0813989C @ =gTrainerBackPicPaletteTable
- ldr r0, [r0, 0x10]
- lsrs r4, 20
- movs r2, 0x80
- lsls r2, 1
- adds r1, r4, r2
- movs r2, 0x20
- bl LoadCompressedPalette
- ldrb r0, [r7]
- adds r0, r6
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- ldrb r2, [r1, 0x5]
- movs r0, 0xF
- ands r0, r2
- orrs r0, r4
- strb r0, [r1, 0x5]
- ldr r0, _081398A0 @ =sub_8139A2C
- movs r1, 0x5
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r4, _081398A4 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r4
- ldrb r0, [r7]
- strh r0, [r1, 0x8]
- ldrb r3, [r7]
- lsls r0, r3, 1
- adds r0, r3
- lsls r0, 2
- ldr r2, _081398A8 @ =0x02017810
- adds r0, r2
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08139864
- ldr r0, _081398AC @ =gUnknown_02024E68
- adds r0, r3, r0
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r4
- ldr r1, _081398B0 @ =sub_8044CA0
- str r1, [r0]
-_08139864:
- adds r2, 0x30
- ldrb r0, [r2, 0x9]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2, 0x9]
- ldr r1, _081398B4 @ =gBattleBankFunc
- ldrb r0, [r7]
- lsls r0, 2
- adds r0, r1
- ldr r1, _081398B8 @ =nullsub_91
- str r1, [r0]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08139880: .4byte gObjectBankIDs
-_08139884: .4byte gActiveBank
-_08139888: .4byte gSprites
-_0813988C: .4byte 0x0000ffd8
-_08139890: .4byte sub_8078B34
-_08139894: .4byte sub_8030E38
-_08139898: .4byte 0x0000d6f8
-_0813989C: .4byte gTrainerBackPicPaletteTable
-_081398A0: .4byte sub_8139A2C
-_081398A4: .4byte gTasks
-_081398A8: .4byte 0x02017810
-_081398AC: .4byte gUnknown_02024E68
-_081398B0: .4byte sub_8044CA0
-_081398B4: .4byte gBattleBankFunc
-_081398B8: .4byte nullsub_91
- thumb_func_end sub_8139750
-
- thumb_func_start sub_81398BC
-sub_81398BC: @ 81398BC
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- lsls r0, r6, 2
- ldr r1, _08139A00 @ =0x02017800
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0x2]
- ldr r0, _08139A04 @ =gBattlePartyID
- lsls r2, r6, 1
- adds r2, r0
- ldr r0, _08139A08 @ =gBattleBufferA
- lsls r1, r6, 9
- adds r0, 0x1
- adds r1, r0
- ldrb r0, [r1]
- strh r0, [r2]
- ldrh r1, [r2]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08139A0C @ =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- mov r8, r0
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- ldr r0, _08139A10 @ =sub_80312F0
- bl CreateInvisibleSpriteWithCallback
- ldr r1, _08139A14 @ =gUnknown_0300434C
- mov r9, r1
- add r9, r6
- mov r1, r9
- strb r0, [r1]
- adds r0, r6, 0
- bl GetBankIdentity
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- mov r0, r8
- bl GetMonSpriteTemplate_803C56C
- ldr r0, _08139A18 @ =gUnknown_02024E8C
- mov r10, r0
- adds r0, r6, 0
- movs r1, 0x2
- bl sub_8077ABC
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- adds r0, r6, 0
- bl sub_8077F68
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r6, 0
- bl sub_8079E90
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- mov r0, r10
- adds r1, r5, 0
- adds r2, r4, 0
- bl CreateSprite
- ldr r4, _08139A1C @ =gObjectBankIDs
- adds r4, r6, r4
- strb r0, [r4]
- ldr r5, _08139A20 @ =gSprites
- mov r0, r9
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r1, [r4]
- strh r1, [r0, 0x30]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r6, [r0, 0x2E]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- mov r1, r8
- strh r1, [r0, 0x32]
- ldrb r0, [r4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- lsls r3, r6, 4
- ldrb r2, [r1, 0x5]
- movs r0, 0xF
- ands r0, r2
- orrs r0, r3
- strb r0, [r1, 0x5]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r1, _08139A24 @ =gBattleMonForms
- adds r6, r1
- ldrb r1, [r6]
- bl StartSpriteAnim
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r5, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, _08139A28 @ =SpriteCallbackDummy
- str r1, [r0]
- movs r0, 0
- movs r1, 0xFF
- bl sub_8046400
- mov r1, r9
- ldrb r2, [r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r5
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r1, 0x2E]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08139A00: .4byte 0x02017800
-_08139A04: .4byte gBattlePartyID
-_08139A08: .4byte gBattleBufferA
-_08139A0C: .4byte gPlayerParty
-_08139A10: .4byte sub_80312F0
-_08139A14: .4byte gUnknown_0300434C
-_08139A18: .4byte gUnknown_02024E8C
-_08139A1C: .4byte gObjectBankIDs
-_08139A20: .4byte gSprites
-_08139A24: .4byte gBattleMonForms
-_08139A28: .4byte SpriteCallbackDummy
- thumb_func_end sub_81398BC
-
- thumb_func_start sub_8139A2C
-sub_8139A2C: @ 8139A2C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, _08139A4C @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r1, r0, r1
- ldrh r2, [r1, 0xA]
- movs r3, 0xA
- ldrsh r0, [r1, r3]
- cmp r0, 0x1E
- bgt _08139A50
- adds r0, r2, 0x1
- strh r0, [r1, 0xA]
- b _08139A86
- .align 2, 0
-_08139A4C: .4byte gTasks
-_08139A50:
- ldr r4, _08139A8C @ =gActiveBank
- ldrb r5, [r4]
- ldrh r0, [r1, 0x8]
- strb r0, [r4]
- ldr r0, _08139A90 @ =gBattleBufferA
- ldrb r1, [r4]
- lsls r2, r1, 9
- adds r0, 0x1
- adds r2, r0
- ldr r0, _08139A94 @ =gBattlePartyID
- lsls r1, 1
- adds r1, r0
- ldrh r0, [r1]
- strb r0, [r2]
- ldrb r0, [r4]
- bl sub_81398BC
- ldr r1, _08139A98 @ =gBattleBankFunc
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, _08139A9C @ =sub_8137538
- str r1, [r0]
- strb r5, [r4]
- adds r0, r6, 0
- bl DestroyTask
-_08139A86:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08139A8C: .4byte gActiveBank
-_08139A90: .4byte gBattleBufferA
-_08139A94: .4byte gBattlePartyID
-_08139A98: .4byte gBattleBankFunc
-_08139A9C: .4byte sub_8137538
- thumb_func_end sub_8139A2C
-
- thumb_func_start sub_8139AA0
-sub_8139AA0: @ 8139AA0
- push {r4,r5,lr}
- ldr r1, _08139AC8 @ =gBattleBufferA
- ldr r0, _08139ACC @ =gActiveBank
- ldrb r2, [r0]
- lsls r0, r2, 9
- adds r1, 0x1
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _08139AD0
- adds r0, r2, 0
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08139AD0
- bl WallyBufferExecCompleted
- b _08139B0A
- .align 2, 0
-_08139AC8: .4byte gBattleBufferA
-_08139ACC: .4byte gActiveBank
-_08139AD0:
- ldr r5, _08139B10 @ =gActiveBank
- ldrb r1, [r5]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _08139B14 @ =0x02017810
- adds r0, r1
- ldrb r1, [r0]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0]
- ldrb r0, [r5]
- lsls r4, r0, 9
- ldr r3, _08139B18 @ =gUnknown_02023A64
- adds r1, r4, r3
- subs r2, r3, 0x3
- adds r2, r4, r2
- ldrb r2, [r2]
- subs r3, 0x2
- adds r4, r3
- ldrb r3, [r4]
- bl sub_8044804
- ldr r2, _08139B1C @ =gUnknown_02024E68
- ldrb r1, [r5]
- adds r1, r2
- strb r0, [r1]
- bl WallyBufferExecCompleted
-_08139B0A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08139B10: .4byte gActiveBank
-_08139B14: .4byte 0x02017810
-_08139B18: .4byte gUnknown_02023A64
-_08139B1C: .4byte gUnknown_02024E68
- thumb_func_end sub_8139AA0
-
- thumb_func_start sub_8139B20
-sub_8139B20: @ 8139B20
- push {lr}
- bl WallyBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_8139B20
-
- thumb_func_start sub_8139B2C
-sub_8139B2C: @ 8139B2C
- push {lr}
- bl WallyBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_8139B2C
-
- thumb_func_start sub_8139B38
-sub_8139B38: @ 8139B38
- push {lr}
- bl WallyBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_8139B38
-
- thumb_func_start sub_8139B44
-sub_8139B44: @ 8139B44
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r5, _08139B7C @ =gBattleBufferA
- ldr r6, _08139B80 @ =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 _08139B84
- bl WallyBufferExecCompleted
- b _08139B90
- .align 2, 0
-_08139B7C: .4byte gBattleBufferA
-_08139B80: .4byte gActiveBank
-_08139B84:
- ldr r0, _08139B98 @ =gBattleBankFunc
- ldrb r1, [r6]
- lsls r1, 2
- adds r1, r0
- ldr r0, _08139B9C @ =sub_8137940
- str r0, [r1]
-_08139B90:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08139B98: .4byte gBattleBankFunc
-_08139B9C: .4byte sub_8137940
- thumb_func_end sub_8139B44
-
- thumb_func_start sub_8139BA0
-sub_8139BA0: @ 8139BA0
- push {lr}
- bl WallyBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_8139BA0
-
- thumb_func_start sub_8139BAC
-sub_8139BAC: @ 8139BAC
- push {lr}
- bl WallyBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_8139BAC
-
- thumb_func_start sub_8139BB8
-sub_8139BB8: @ 8139BB8
- push {r4,lr}
- ldr r2, _08139BFC @ =gBattleOutcome
- ldr r1, _08139C00 @ =gBattleBufferA
- ldr r4, _08139C04 @ =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 WallyBufferExecCompleted
- ldr r0, _08139C08 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x6
- ands r0, r1
- cmp r0, 0x2
- bne _08139BF4
- ldr r0, _08139C0C @ =gBattleBankFunc
- ldrb r1, [r4]
- lsls r1, 2
- adds r1, r0
- ldr r0, _08139C10 @ =sub_813746C
- str r0, [r1]
-_08139BF4:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08139BFC: .4byte gBattleOutcome
-_08139C00: .4byte gBattleBufferA
-_08139C04: .4byte gActiveBank
-_08139C08: .4byte gBattleTypeFlags
-_08139C0C: .4byte gBattleBankFunc
-_08139C10: .4byte sub_813746C
- thumb_func_end sub_8139BB8
-
- thumb_func_start nullsub_80
-nullsub_80: @ 8139C14
- bx lr
- thumb_func_end nullsub_80
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/include/battle.h b/include/battle.h
index b151eff41..98f499bfe 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -197,7 +197,8 @@ struct Struct2017810
struct Struct2017840
{
u16 unk0;
- u8 filler2[7];
+ u8 filler2[6];
+ u8 unk8;
u8 unk9_0:1;
};
diff --git a/include/battle_message.h b/include/battle_message.h
index 1ac20ce30..da57333a5 100644
--- a/include/battle_message.h
+++ b/include/battle_message.h
@@ -1,7 +1,7 @@
#ifndef GUARD_BATTLE_MESSAGE_H
#define GUARD_BATTLE_MESSAGE_H
-void StrCpyDecodeToDisplayedStringBattle(u8 *);
+void StrCpyDecodeToDisplayedStringBattle(const u8 *);
void StrCpyDecodeBattle(const u8 *, u8 *);
#endif // GUARD_BATTLE_MESSAGE_H
diff --git a/ld_script.txt b/ld_script.txt
index b9ae46dec..4747f3df7 100755
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -253,7 +253,6 @@ SECTIONS {
asm/battle_tower.o(.text);
asm/use_pokeblock.o(.text);
src/battle_anim_8137220.o(.text);
- asm/battle_anim_8137220.o(.text);
src/player_pc.o(.text);
src/intro.o(.text);
src/field_region_map.o(.text);
diff --git a/src/battle_anim_8137220.c b/src/battle_anim_8137220.c
index 86038094b..a6a1e2bda 100644
--- a/src/battle_anim_8137220.c
+++ b/src/battle_anim_8137220.c
@@ -1,6 +1,8 @@
#include "global.h"
#include "battle.h"
#include "battle_interface.h"
+#include "battle_message.h"
+#include "data2.h"
#include "link.h"
#include "main.h"
#include "menu_cursor.h"
@@ -10,14 +12,23 @@
#include "songs.h"
#include "sound.h"
#include "sprite.h"
+#include "string_util.h"
#include "task.h"
#include "text.h"
+#include "util.h"
+
+//Possibly PokemonSubstruct1
+struct UnknownStruct3
+{
+ u16 moves[4];
+ u8 pp[4];
+ u8 ppBonuses;
+};
extern u8 gActiveBank;
extern void (*gBattleBankFunc[])(void);
extern u32 gBattleExecBuffer;
extern void (*gWallyBufferCommands[])(void);
-extern u32 gBitTable[];
extern u8 gBattleBufferA[][0x200];
extern u8 gObjectBankIDs[];
extern MainCallback gPreBattleCallback1;
@@ -26,8 +37,28 @@ extern u16 gScriptItemId;
extern u16 gBattlePartyID[];
extern u8 gHealthboxIDs[];
extern u16 gBattleTypeFlags;
+extern u16 gMovePowerMoveAnim;
+extern u32 gMoveDmgMoveAnim;
+extern u8 gHappinessMoveAnim;
+extern u16 gWeatherMoveAnim;
+extern u32 *gDisableStructMoveAnim;
+extern u32 gPID_perBank[];
+extern void (*gAnimScriptCallback)(void);
+extern bool8 gAnimScriptActive;
+extern u8 gDisplayedStringBattle[];
+extern u8 gBankInMenu;
+extern u8 gBattleMonForms[];
+extern u8 gBattleOutcome;
+extern u16 gUnknown_02024DE8;
+extern u8 gUnknown_02024E68[];
+extern struct SpriteTemplate gUnknown_02024E8C;
+extern u8 gUnknown_0202F7C4;
extern struct Window gUnknown_03004210;
+extern u16 gUnknown_030042A0;
+extern u16 gUnknown_030042A4;
extern u8 gUnknown_0300434C[];
+extern const u8 gUnknown_08400CCC[];
+extern const u8 gUnknown_08400CF3[];
// TODO: include rom3.h when my other PR gets merged
extern void dp01_build_cmdbuf_x21_a_bb(u8, u8, u16);
@@ -41,11 +72,40 @@ extern void sub_804777C();
extern void sub_8043DFC();
extern bool8 IsDoubleBattle(void);
extern void c3_0802FDF4(u8);
+extern void sub_802ECF0(void);
+extern void sub_8031AF4();
+extern u8 GetBankIdentity(u8);
+extern void sub_80313A0(struct Sprite *);
+extern u8 GetBankByPlayerAI(u8);
+extern u8 sub_8031720();
+extern void ExecuteMoveAnim();
+extern void sub_80326EC();
+extern void sub_8031F24(void);
+extern void sub_80324BC();
+extern void BufferStringBattle();
+extern u8 GetBankSide(u8);
+extern void sub_80304A8(void);
+extern void sub_8047858();
+extern void sub_80E43C0();
+extern void oamt_add_pos2_onto_pos1();
+extern void sub_8078B34(struct Sprite *);
+extern void sub_8030E38(struct Sprite *);
+extern void oamt_set_x3A_32();
+extern u8 sub_8046400();
+extern u8 sub_8077ABC();
+extern u8 sub_8077F68();
+extern u8 sub_8079E90();
+extern void sub_80312F0(struct Sprite *);
+extern bool8 move_anim_start_t3();
void WallyBufferRunCommand(void);
void sub_81374FC(void);
void sub_81376B8(void);
void WallyBufferExecCompleted(void);
+u32 sub_8137A84(u8, u8 *);
+void sub_8138294(u8);
+void sub_81390D0(void);
+void sub_8139A2C(u8);
void unref_sub_8137220(void)
{
@@ -313,3 +373,1110 @@ void unref_sub_81379E4(void)
if (!ewram17810[gActiveBank].unk0_4)
WallyBufferExecCompleted();
}
+
+void dp01t_00_5_getattr(void)
+{
+ u8 arr[0x100];
+ u32 r6 = 0;
+ u8 r4;
+ s32 i;
+
+ if (gBattleBufferA[gActiveBank][2] == 0)
+ {
+ r6 = sub_8137A84(gBattlePartyID[gActiveBank], arr);
+ }
+ else
+ {
+ r4 = gBattleBufferA[gActiveBank][2];
+ for (i = 0; i < 6; i++)
+ {
+ if (r4 & 1)
+ r6 += sub_8137A84(i, arr + r6);
+ r4 >>= 1;
+ }
+ }
+ dp01_build_cmdbuf_x1D_1D_numargs_varargs(1, r6, arr);
+ WallyBufferExecCompleted();
+}
+
+u32 sub_8137A84(u8 a, u8 *buffer)
+{
+ struct BattlePokemon battlePokemon;
+ struct UnknownStruct3 moveData;
+ u8 nickname[20];
+ u8 *src;
+ s16 data16;
+ u32 data32;
+ s32 size = 0;
+
+ switch (gBattleBufferA[gActiveBank][1])
+ {
+ case 0:
+ battlePokemon.species = GetMonData(&gPlayerParty[a], MON_DATA_SPECIES);
+ battlePokemon.item = GetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM);
+ for (size = 0; size < 4; size++)
+ {
+ battlePokemon.moves[size] = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + size);
+ battlePokemon.pp[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + size);
+ }
+ battlePokemon.ppBonuses = GetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES);
+ battlePokemon.friendship = GetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP);
+ battlePokemon.experience = GetMonData(&gPlayerParty[a], MON_DATA_EXP);
+ battlePokemon.hpIV = GetMonData(&gPlayerParty[a], MON_DATA_HP_IV);
+ battlePokemon.attackIV = GetMonData(&gPlayerParty[a], MON_DATA_ATK_IV);
+ battlePokemon.defenseIV = GetMonData(&gPlayerParty[a], MON_DATA_DEF_IV);
+ battlePokemon.speedIV = GetMonData(&gPlayerParty[a], MON_DATA_SPD_IV);
+ battlePokemon.spAttackIV = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV);
+ battlePokemon.spDefenseIV = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV);
+ battlePokemon.personality = GetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY);
+ battlePokemon.status1 = GetMonData(&gPlayerParty[a], MON_DATA_STATUS);
+ battlePokemon.level = GetMonData(&gPlayerParty[a], MON_DATA_LEVEL);
+ battlePokemon.hp = GetMonData(&gPlayerParty[a], MON_DATA_HP);
+ battlePokemon.maxHP = GetMonData(&gPlayerParty[a], MON_DATA_MAX_HP);
+ battlePokemon.attack = GetMonData(&gPlayerParty[a], MON_DATA_ATK);
+ battlePokemon.defense = GetMonData(&gPlayerParty[a], MON_DATA_DEF);
+ battlePokemon.speed = GetMonData(&gPlayerParty[a], MON_DATA_SPD);
+ battlePokemon.spAttack = GetMonData(&gPlayerParty[a], MON_DATA_SPATK);
+ battlePokemon.spDefense = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF);
+ battlePokemon.isEgg = GetMonData(&gPlayerParty[a], MON_DATA_IS_EGG);
+ battlePokemon.altAbility = GetMonData(&gPlayerParty[a], MON_DATA_ALT_ABILITY);
+ battlePokemon.otId = GetMonData(&gPlayerParty[a], MON_DATA_OT_ID);
+ GetMonData(&gPlayerParty[a], MON_DATA_NICKNAME, nickname);
+ StringCopy10(battlePokemon.nickname, nickname);
+ GetMonData(&gPlayerParty[a], MON_DATA_OT_NAME, battlePokemon.otName);
+ src = (u8 *)&battlePokemon;
+ for (size = 0; size < sizeof(battlePokemon); size++)
+ buffer[size] = src[size];
+ break;
+ case 1:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPECIES);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 2:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 3:
+ for (size = 0; size < 4; size++)
+ {
+ moveData.moves[size] = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + size);
+ moveData.pp[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + size);
+ }
+ moveData.ppBonuses = GetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES);
+ src = (u8 *)&moveData;
+ for (size = 0; size < sizeof(moveData); size++)
+ buffer[size] = src[size];
+ break;
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - 4);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 8:
+ for (size = 0; size < 4; size++)
+ buffer[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + size);
+ buffer[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES);
+ size++;
+ break;
+ case 9:
+ case 10:
+ case 11:
+ case 12:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - 9);
+ size = 1;
+ break;
+ case 17:
+ data32 = GetMonData(&gPlayerParty[a], MON_DATA_OT_ID);
+ buffer[0] = (data32 & 0x000000FF);
+ buffer[1] = (data32 & 0x0000FF00) >> 8;
+ buffer[2] = (data32 & 0x00FF0000) >> 16;
+ size = 3;
+ break;
+ case 18:
+ data32 = GetMonData(&gPlayerParty[a], MON_DATA_EXP);
+ buffer[0] = (data32 & 0x000000FF);
+ buffer[1] = (data32 & 0x0000FF00) >> 8;
+ buffer[2] = (data32 & 0x00FF0000) >> 16;
+ size = 3;
+ break;
+ case 19:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_HP_EV);
+ size = 1;
+ break;
+ case 20:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_ATK_EV);
+ size = 1;
+ break;
+ case 21:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_DEF_EV);
+ size = 1;
+ break;
+ case 22:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPD_EV);
+ size = 1;
+ break;
+ case 23:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_EV);
+ size = 1;
+ break;
+ case 24:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_EV);
+ size = 1;
+ break;
+ case 25:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP);
+ size = 1;
+ break;
+ case 26:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_POKERUS);
+ size = 1;
+ break;
+ case 27:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_MET_LOCATION);
+ size = 1;
+ break;
+ case 28:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_MET_LEVEL);
+ size = 1;
+ break;
+ case 29:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_MET_GAME);
+ size = 1;
+ break;
+ case 30:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_POKEBALL);
+ size = 1;
+ break;
+ case 31:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_HP_IV);
+ buffer[1] = GetMonData(&gPlayerParty[a], MON_DATA_ATK_IV);
+ buffer[2] = GetMonData(&gPlayerParty[a], MON_DATA_DEF_IV);
+ buffer[3] = GetMonData(&gPlayerParty[a], MON_DATA_SPD_IV);
+ buffer[4] = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV);
+ buffer[5] = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV);
+ size = 6;
+ break;
+ case 32:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_HP_IV);
+ size = 1;
+ break;
+ case 33:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_ATK_IV);
+ size = 1;
+ break;
+ case 34:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_DEF_IV);
+ size = 1;
+ break;
+ case 35:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPD_IV);
+ size = 1;
+ break;
+ case 36:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV);
+ size = 1;
+ break;
+ case 37:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV);
+ size = 1;
+ break;
+ case 38:
+ data32 = GetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY);
+ buffer[0] = (data32 & 0x000000FF);
+ buffer[1] = (data32 & 0x0000FF00) >> 8;
+ buffer[2] = (data32 & 0x00FF0000) >> 16;
+ buffer[3] = (data32 & 0xFF000000) >> 24;
+ size = 4;
+ break;
+ case 39:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_CHECKSUM);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 40:
+ data32 = GetMonData(&gPlayerParty[a], MON_DATA_STATUS);
+ buffer[0] = (data32 & 0x000000FF);
+ buffer[1] = (data32 & 0x0000FF00) >> 8;
+ buffer[2] = (data32 & 0x00FF0000) >> 16;
+ buffer[3] = (data32 & 0xFF000000) >> 24;
+ size = 4;
+ break;
+ case 41:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_LEVEL);
+ size = 1;
+ break;
+ case 42:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_HP);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 43:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_MAX_HP);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 44:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_ATK);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 45:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_DEF);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 46:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPD);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 47:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPATK);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 48:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 49:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_COOL);
+ size = 1;
+ break;
+ case 50:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_BEAUTY);
+ size = 1;
+ break;
+ case 51:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_CUTE);
+ size = 1;
+ break;
+ case 52:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SMART);
+ size = 1;
+ break;
+ case 53:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_TOUGH);
+ size = 1;
+ break;
+ case 54:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SHEEN);
+ size = 1;
+ break;
+ case 55:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_COOL_RIBBON);
+ size = 1;
+ break;
+ case 56:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_BEAUTY_RIBBON);
+ size = 1;
+ break;
+ case 57:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_CUTE_RIBBON);
+ size = 1;
+ break;
+ case 58:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SMART_RIBBON);
+ size = 1;
+ break;
+ case 59:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_TOUGH_RIBBON);
+ size = 1;
+ break;
+ }
+ return size;
+}
+
+void sub_8138230(void)
+{
+ sub_802ECF0();
+}
+
+void sub_813823C(void)
+{
+ u8 r4;
+ u8 i;
+
+ if (gBattleBufferA[gActiveBank][2] == 0)
+ {
+ sub_8138294(gBattlePartyID[gActiveBank]);
+ }
+ else
+ {
+ r4 = gBattleBufferA[gActiveBank][2];
+ for (i = 0; i < 6; i++)
+ {
+ if (r4 & 1)
+ sub_8138294(i);
+ r4 >>= 1;
+ }
+ }
+ WallyBufferExecCompleted();
+}
+
+void sub_8138294(u8 a)
+{
+ struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBank][3];
+ struct UnknownStruct3 *moveData = (struct UnknownStruct3 *)&gBattleBufferA[gActiveBank][3];
+ s32 i;
+
+ switch (gBattleBufferA[gActiveBank][1])
+ {
+ case 0:
+ {
+ u8 iv;
+
+ SetMonData(&gPlayerParty[a], MON_DATA_SPECIES, (u8 *)&battlePokemon->species);
+ SetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM, (u8 *)&battlePokemon->item);
+ for (i = 0; i < 4; i++)
+ {
+ SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + i, (u8 *)&battlePokemon->moves[i]);
+ SetMonData(&gPlayerParty[a], MON_DATA_PP1 + i, (u8 *)&battlePokemon->pp[i]);
+ }
+ SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, (u8 *)&battlePokemon->ppBonuses);
+ SetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP, (u8 *)&battlePokemon->friendship);
+ SetMonData(&gPlayerParty[a], MON_DATA_EXP, (u8 *)&battlePokemon->experience);
+ iv = battlePokemon->hpIV;
+ SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, (u8 *)&iv);
+ iv = battlePokemon->attackIV;
+ SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, (u8 *)&iv);
+ iv = battlePokemon->defenseIV;
+ SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, (u8 *)&iv);
+ iv = battlePokemon->speedIV;
+ SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, (u8 *)&iv);
+ iv = battlePokemon->spAttackIV;
+ SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, (u8 *)&iv);
+ iv = battlePokemon->spDefenseIV;
+ SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, (u8 *)&iv);
+ SetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY, (u8 *)&battlePokemon->personality);
+ SetMonData(&gPlayerParty[a], MON_DATA_STATUS, (u8 *)&battlePokemon->status1);
+ SetMonData(&gPlayerParty[a], MON_DATA_LEVEL, (u8 *)&battlePokemon->level);
+ SetMonData(&gPlayerParty[a], MON_DATA_HP, (u8 *)&battlePokemon->hp);
+ SetMonData(&gPlayerParty[a], MON_DATA_MAX_HP, (u8 *)&battlePokemon->maxHP);
+ SetMonData(&gPlayerParty[a], MON_DATA_ATK, (u8 *)&battlePokemon->attack);
+ SetMonData(&gPlayerParty[a], MON_DATA_DEF, (u8 *)&battlePokemon->defense);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPD, (u8 *)&battlePokemon->speed);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPATK, (u8 *)&battlePokemon->spAttack);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPDEF, (u8 *)&battlePokemon->spDefense);
+ }
+ break;
+ case 1:
+ SetMonData(&gPlayerParty[a], MON_DATA_SPECIES, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 2:
+ SetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 3:
+ for (i = 0; i < 4; i++)
+ {
+ SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + i, (u8 *)&moveData->moves[i]);
+ SetMonData(&gPlayerParty[a], MON_DATA_PP1 + i, (u8 *)&moveData->pp[i]);
+ }
+ SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, &moveData->ppBonuses);
+ break;
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - 4, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 8:
+ SetMonData(&gPlayerParty[a], MON_DATA_PP1, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_PP2, &gBattleBufferA[gActiveBank][4]);
+ SetMonData(&gPlayerParty[a], MON_DATA_PP3, &gBattleBufferA[gActiveBank][5]);
+ SetMonData(&gPlayerParty[a], MON_DATA_PP4, &gBattleBufferA[gActiveBank][6]);
+ SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBank][7]);
+ break;
+ case 9:
+ case 10:
+ case 11:
+ case 12:
+ SetMonData(&gPlayerParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - 9, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 17:
+ SetMonData(&gPlayerParty[a], MON_DATA_OT_ID, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 18:
+ SetMonData(&gPlayerParty[a], MON_DATA_EXP, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 19:
+ SetMonData(&gPlayerParty[a], MON_DATA_HP_EV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 20:
+ SetMonData(&gPlayerParty[a], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 21:
+ SetMonData(&gPlayerParty[a], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 22:
+ SetMonData(&gPlayerParty[a], MON_DATA_SPD_EV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 23:
+ SetMonData(&gPlayerParty[a], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 24:
+ SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 25:
+ SetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 26:
+ SetMonData(&gPlayerParty[a], MON_DATA_POKERUS, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 27:
+ SetMonData(&gPlayerParty[a], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 28:
+ SetMonData(&gPlayerParty[a], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 29:
+ SetMonData(&gPlayerParty[a], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 30:
+ SetMonData(&gPlayerParty[a], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 31:
+ SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][4]);
+ SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][5]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, &gBattleBufferA[gActiveBank][6]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][7]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][8]);
+ break;
+ case 32:
+ SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 33:
+ SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 34:
+ SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 35:
+ SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 36:
+ SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 37:
+ SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 38:
+ SetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 39:
+ SetMonData(&gPlayerParty[a], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 40:
+ SetMonData(&gPlayerParty[a], MON_DATA_STATUS, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 41:
+ SetMonData(&gPlayerParty[a], MON_DATA_LEVEL, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 42:
+ SetMonData(&gPlayerParty[a], MON_DATA_HP, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 43:
+ SetMonData(&gPlayerParty[a], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 44:
+ SetMonData(&gPlayerParty[a], MON_DATA_ATK, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 45:
+ SetMonData(&gPlayerParty[a], MON_DATA_DEF, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 46:
+ SetMonData(&gPlayerParty[a], MON_DATA_SPD, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 47:
+ SetMonData(&gPlayerParty[a], MON_DATA_SPATK, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 48:
+ SetMonData(&gPlayerParty[a], MON_DATA_SPDEF, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 49:
+ SetMonData(&gPlayerParty[a], MON_DATA_COOL, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 50:
+ SetMonData(&gPlayerParty[a], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 51:
+ SetMonData(&gPlayerParty[a], MON_DATA_CUTE, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 52:
+ SetMonData(&gPlayerParty[a], MON_DATA_SMART, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 53:
+ SetMonData(&gPlayerParty[a], MON_DATA_TOUGH, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 54:
+ SetMonData(&gPlayerParty[a], MON_DATA_SHEEN, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 55:
+ SetMonData(&gPlayerParty[a], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 56:
+ SetMonData(&gPlayerParty[a], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 57:
+ SetMonData(&gPlayerParty[a], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 58:
+ SetMonData(&gPlayerParty[a], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 59:
+ SetMonData(&gPlayerParty[a], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ break;
+ }
+ sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+}
+
+void sub_8138C90(void)
+{
+ WallyBufferExecCompleted();
+}
+
+void sub_8138C9C(void)
+{
+ WallyBufferExecCompleted();
+}
+
+void sub_8138CA8(void)
+{
+ WallyBufferExecCompleted();
+}
+
+void sub_8138CB4(void)
+{
+ if (gBattleBufferA[gActiveBank][1] == 0)
+ {
+ move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 1);
+ gBattleBankFunc[gActiveBank] = sub_813789C;
+ }
+ else
+ {
+ FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
+ DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ sub_8043DB0(gHealthboxIDs[gActiveBank]);
+ WallyBufferExecCompleted();
+ }
+}
+
+void sub_8138D38(void)
+{
+ sub_8031AF4(2, gActiveBank);
+ GetMonSpriteTemplate_803C5A0(2, GetBankIdentity(gActiveBank));
+ gObjectBankIDs[gActiveBank] = CreateSprite(
+ &gUnknown_02024E8C,
+ 80, 80 + 4 * (8 - gTrainerBackPicCoords[2].coords),
+ 30);
+ gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
+ gSprites[gObjectBankIDs[gActiveBank]].pos2.x = 240;
+ gSprites[gObjectBankIDs[gActiveBank]].data0 = -2;
+ gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0;
+ gBattleBankFunc[gActiveBank] = sub_813741C;
+}
+
+void sub_8138E04(void)
+{
+ sub_8031AF4(2, gActiveBank);
+ GetMonSpriteTemplate_803C5A0(2, GetBankIdentity(gActiveBank));
+ gObjectBankIDs[gActiveBank] = CreateSprite(
+ &gUnknown_02024E8C,
+ 80, 80 + 4 * (8 - gTrainerBackPicCoords[2].coords),
+ 30);
+ gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
+ gSprites[gObjectBankIDs[gActiveBank]].pos2.x = -96;
+ gSprites[gObjectBankIDs[gActiveBank]].data0 = 2;
+ gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0;
+ gBattleBankFunc[gActiveBank] = sub_8137908;
+}
+
+void sub_8138ED0(void)
+{
+ WallyBufferExecCompleted();
+}
+
+void sub_8138EDC(void)
+{
+ WallyBufferExecCompleted();
+}
+
+void sub_8138EE8(void)
+{
+ WallyBufferExecCompleted();
+}
+
+void sub_8138EF4(void)
+{
+ ewram17840.unk8 = 4;
+ gDoingBattleAnim = TRUE;
+ move_anim_start_t4(gActiveBank, gActiveBank, GetBankByPlayerAI(1), 4);
+ gBattleBankFunc[gActiveBank] = bx_wait_t5;
+}
+
+void sub_8138F44(void)
+{
+ u8 val = gBattleBufferA[gActiveBank][1];
+
+ ewram17840.unk8 = val;
+ gDoingBattleAnim = TRUE;
+ move_anim_start_t4(gActiveBank, gActiveBank, GetBankByPlayerAI(1), 4);
+ gBattleBankFunc[gActiveBank] = bx_wait_t5;
+}
+
+void sub_8138FA0(void)
+{
+ WallyBufferExecCompleted();
+}
+
+void sub_8138FAC(void)
+{
+ u16 r0 = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8);
+
+ gUnknown_0202F7C4 = gBattleBufferA[gActiveBank][3];
+ gMovePowerMoveAnim = gBattleBufferA[gActiveBank][4] | (gBattleBufferA[gActiveBank][5] << 8);
+ gMoveDmgMoveAnim = gBattleBufferA[gActiveBank][6] | (gBattleBufferA[gActiveBank][7] << 8) | (gBattleBufferA[gActiveBank][8] << 16) | (gBattleBufferA[gActiveBank][9] << 24);
+ gHappinessMoveAnim = gBattleBufferA[gActiveBank][10];
+ gWeatherMoveAnim = gBattleBufferA[gActiveBank][12] | (gBattleBufferA[gActiveBank][13] << 8);
+ gDisableStructMoveAnim = (u32 *)&gBattleBufferA[gActiveBank][16];
+ gPID_perBank[gActiveBank] = *gDisableStructMoveAnim;
+ if (sub_8031720(r0, gUnknown_0202F7C4) != 0)
+ {
+ // Dead code. sub_8031720 always returns 0.
+ WallyBufferExecCompleted();
+ }
+ else
+ {
+ ewram17810[gActiveBank].unk4 = 0;
+ gBattleBankFunc[gActiveBank] = sub_81390D0;
+ }
+}
+
+void sub_81390D0(void)
+{
+ u16 r4 = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8);
+
+#ifndef NONMATCHING
+ asm("":::"r6");
+#endif
+
+ switch (ewram17810[gActiveBank].unk4)
+ {
+ case 0:
+ if (ewram17800[gActiveBank].unk0_2 == 1)
+ move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
+ ewram17810[gActiveBank].unk4 = 1;
+ break;
+ case 1:
+ if (ewram17810[gActiveBank].unk0_6 == 0)
+ {
+ sub_80326EC(0);
+ ExecuteMoveAnim(r4);
+ ewram17810[gActiveBank].unk4 = 2;
+ }
+ break;
+ case 2:
+ gAnimScriptCallback();
+ if (!gAnimScriptActive)
+ {
+ sub_80326EC(1);
+ if (ewram17800[gActiveBank].unk0_2 == 1)
+ move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
+ ewram17810[gActiveBank].unk4 = 3;
+ }
+ break;
+ case 3:
+ if (ewram17810[gActiveBank].unk0_6 == 0)
+ {
+ sub_8031F24();
+ sub_80324BC(gActiveBank, gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ ewram17810[gActiveBank].unk4 = 0;
+ WallyBufferExecCompleted();
+ }
+ break;
+ }
+}
+
+void sub_8139208(void)
+{
+ u16 *ptr;
+
+ gUnknown_030042A4 = 0;
+ gUnknown_030042A0 = 0;
+ ptr = (u16 *)&gBattleBufferA[gActiveBank][2];
+ if (*ptr == 2)
+ DestroyMenuCursor();
+ BufferStringBattle(*ptr);
+ sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 0x90, 2, 15);
+ gBattleBankFunc[gActiveBank] = sub_8137454;
+}
+
+void dp01t_11_5_message_for_player_only(void)
+{
+ if (GetBankSide(gActiveBank) == 0)
+ sub_8139208();
+ else
+ WallyBufferExecCompleted();
+}
+
+void sub_8139298(void)
+{
+ s32 i;
+
+ gUnknown_030042A4 = 0;
+ gUnknown_030042A0 = 160;
+ gUnknown_03004210.paletteNum = 0;
+ FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 15, 27, 18);
+ FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 35, 16, 36);
+ gBattleBankFunc[gActiveBank] = sub_81372BC;
+ InitWindow(&gUnknown_03004210, gUnknown_08400CF3, 400, 18, 35);
+ sub_8002F44(&gUnknown_03004210);
+ sub_814A5C0(0, 0xFFFF, 12, 0x2D9F, 0);
+ for (i = 0; i < 4; i++)
+ nullsub_8(i);
+ sub_802E3E4(0, 0);
+ StrCpyDecodeToDisplayedStringBattle(gUnknown_08400CCC);
+ InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 440, 2, 35);
+ sub_8002F44(&gUnknown_03004210);
+}
+
+void sub_8139378(void)
+{
+ WallyBufferExecCompleted();
+}
+
+void sub_8139384(void)
+{
+ switch (ewram[0x160A9])
+ {
+ case 0:
+ sub_80304A8();
+ ewram[0x160A9]++;
+ ewram[0x160AB] = 80;
+ // fall through
+ case 1:
+ ewram[0x160AB]--;
+ if (ewram[0x160AB] == 0)
+ {
+ DestroyMenuCursor();
+ PlaySE(SE_SELECT);
+ dp01_build_cmdbuf_x21_a_bb(1, 10, 256);
+ WallyBufferExecCompleted();
+ }
+ break;
+ }
+}
+
+void sub_81393EC(void)
+{
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ gBattleBankFunc[gActiveBank] = sub_81374C4;
+ gBankInMenu = gActiveBank;
+}
+
+void sub_813942C(void)
+{
+ WallyBufferExecCompleted();
+}
+
+void sub_8139438(void)
+{
+ WallyBufferExecCompleted();
+}
+
+void sub_8139444(void)
+{
+ s16 r7;
+
+ load_gfxc_health_bar(0);
+ r7 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+ if (r7 != 0x7FFF)
+ {
+ u32 maxHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
+ u32 curHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_HP);
+
+ sub_8043D84(gActiveBank, gHealthboxIDs[gActiveBank], maxHP, curHP, r7);
+ }
+ else
+ {
+ u32 maxHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
+
+ sub_8043D84(gActiveBank, gHealthboxIDs[gActiveBank], maxHP, 0, r7);
+ sub_80440EC(gHealthboxIDs[gActiveBank], 0, 0);
+ }
+ gBattleBankFunc[gActiveBank] = sub_81377B0;
+}
+
+void sub_8139544(void)
+{
+ WallyBufferExecCompleted();
+}
+
+void sub_8139550(void)
+{
+ WallyBufferExecCompleted();
+}
+
+void sub_813955C(void)
+{
+ WallyBufferExecCompleted();
+}
+
+void sub_8139568(void)
+{
+ WallyBufferExecCompleted();
+}
+
+void sub_8139574(void)
+{
+ WallyBufferExecCompleted();
+}
+
+void sub_8139580(void)
+{
+ WallyBufferExecCompleted();
+}
+
+void sub_813958C(void)
+{
+ WallyBufferExecCompleted();
+}
+
+void sub_8139598(void)
+{
+ WallyBufferExecCompleted();
+}
+
+void sub_81395A4(void)
+{
+ WallyBufferExecCompleted();
+}
+
+void sub_81395B0(void)
+{
+ WallyBufferExecCompleted();
+}
+
+void sub_81395BC(void)
+{
+ WallyBufferExecCompleted();
+}
+
+void sub_81395C8(void)
+{
+ WallyBufferExecCompleted();
+}
+
+void sub_81395D4(void)
+{
+ WallyBufferExecCompleted();
+}
+
+void sub_81395E0(void)
+{
+ WallyBufferExecCompleted();
+}
+
+void sub_81395EC(void)
+{
+ WallyBufferExecCompleted();
+}
+
+void sub_81395F8(void)
+{
+ WallyBufferExecCompleted();
+}
+
+void sub_8139604(void)
+{
+ if (gSprites[gObjectBankIDs[gActiveBank]].invisible == TRUE)
+ {
+ WallyBufferExecCompleted();
+ }
+ else
+ {
+ gDoingBattleAnim = 1;
+ gSprites[gObjectBankIDs[gActiveBank]].data1 = 0;
+ sub_8047858(gActiveBank);
+ gBattleBankFunc[gActiveBank] = bx_blink_t5;
+ }
+}
+
+void sub_8139674(void)
+{
+ WallyBufferExecCompleted();
+}
+
+void sub_8139680(void)
+{
+ PlaySE(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ WallyBufferExecCompleted();
+}
+
+void sub_81396B0(void)
+{
+ PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ WallyBufferExecCompleted();
+}
+
+void sub_81396E0(void)
+{
+ PlayCry1(GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES), 25);
+ WallyBufferExecCompleted();
+}
+
+void dp01t_2E_5_battle_intro(void)
+{
+ sub_80E43C0(gBattleBufferA[gActiveBank][1]);
+ gUnknown_02024DE8 |= 1;
+ WallyBufferExecCompleted();
+}
+
+void sub_8139750(void)
+{
+ u8 paletteNum;
+ u8 taskId;
+
+ oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]);
+ gSprites[gObjectBankIDs[gActiveBank]].data0 = 50;
+ gSprites[gObjectBankIDs[gActiveBank]].data2 = -40;
+ gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y;
+ gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34;
+ gSprites[gObjectBankIDs[gActiveBank]].data5 = gActiveBank;
+ oamt_set_x3A_32(&gSprites[gObjectBankIDs[gActiveBank]], sub_8030E38);
+ StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 1);
+ paletteNum = AllocSpritePalette(0xD6F8);
+ LoadCompressedPalette(gTrainerBackPicPaletteTable[2].data, 0x100 + paletteNum * 16, 32);
+ gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = paletteNum;
+ taskId = CreateTask(sub_8139A2C, 5);
+ gTasks[taskId].data[0] = gActiveBank;
+ if (ewram17810[gActiveBank].unk0_0)
+ gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0;
+ ewram17810[4].unk9 |= 1;
+ gBattleBankFunc[gActiveBank] = nullsub_91;
+}
+
+void sub_81398BC(u8 bank)
+{
+ u16 species;
+
+ ewram17800[bank].unk2 = 0;
+ gBattlePartyID[bank] = gBattleBufferA[bank][1];
+ species = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
+ gUnknown_0300434C[bank] = CreateInvisibleSpriteWithCallback(sub_80312F0);
+ GetMonSpriteTemplate_803C56C(species, GetBankIdentity(bank));
+ gObjectBankIDs[bank] = CreateSprite(
+ &gUnknown_02024E8C,
+ sub_8077ABC(bank, 2),
+ sub_8077F68(bank),
+ sub_8079E90(bank));
+ gSprites[gUnknown_0300434C[bank]].data1 = gObjectBankIDs[bank];
+ gSprites[gObjectBankIDs[bank]].data0 = bank;
+ gSprites[gObjectBankIDs[bank]].data2 = species;
+ gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank;
+ StartSpriteAnim(&gSprites[gObjectBankIDs[bank]], gBattleMonForms[bank]);
+ gSprites[gObjectBankIDs[bank]].invisible = TRUE;
+ gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy;
+ gSprites[gUnknown_0300434C[bank]].data0 = sub_8046400(0, 0xFF);
+}
+
+void sub_8139A2C(u8 taskId)
+{
+ if (gTasks[taskId].data[1] < 31)
+ {
+ gTasks[taskId].data[1]++;
+ }
+ else
+ {
+ u8 savedActiveBank = gActiveBank;
+
+ gActiveBank = gTasks[taskId].data[0];
+ gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
+ sub_81398BC(gActiveBank);
+ gBattleBankFunc[gActiveBank] = sub_8137538;
+ gActiveBank = savedActiveBank;
+ DestroyTask(taskId);
+ }
+}
+
+void sub_8139AA0(void)
+{
+ if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == 0)
+ {
+ WallyBufferExecCompleted();
+ }
+ else
+ {
+ ewram17810[gActiveBank].unk0_0 = 1;
+ gUnknown_02024E68[gActiveBank] = sub_8044804(gActiveBank, (struct BattleInterfaceStruct2 *)&gBattleBufferA[gActiveBank][4], gBattleBufferA[gActiveBank][1], gBattleBufferA[gActiveBank][2]);
+ WallyBufferExecCompleted();
+ }
+}
+
+void sub_8139B20(void)
+{
+ WallyBufferExecCompleted();
+}
+
+void sub_8139B2C(void)
+{
+ WallyBufferExecCompleted();
+}
+
+void sub_8139B38(void)
+{
+ WallyBufferExecCompleted();
+}
+
+void sub_8139B44(void)
+{
+ u8 val2 = gBattleBufferA[gActiveBank][1];
+ u16 val = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+
+ if (move_anim_start_t3(gActiveBank, gActiveBank, gActiveBank, val2, val))
+ WallyBufferExecCompleted();
+ else
+ gBattleBankFunc[gActiveBank] = sub_8137940;
+}
+
+void sub_8139BA0(void)
+{
+ WallyBufferExecCompleted();
+}
+
+void sub_8139BAC(void)
+{
+ WallyBufferExecCompleted();
+}
+
+void sub_8139BB8(void)
+{
+ gBattleOutcome = gBattleBufferA[gActiveBank][1];
+ FadeOutMapMusic(5);
+ BeginFastPaletteFade(3);
+ WallyBufferExecCompleted();
+ if ((gBattleTypeFlags & BATTLE_TYPE_LINK) && !(gBattleTypeFlags & BATTLE_TYPE_WILD))
+ gBattleBankFunc[gActiveBank] = sub_813746C;
+}
+
+void nullsub_80(void)
+{
+}