diff options
-rw-r--r-- | asm/battle_anim_8137220.s | 4139 | ||||
-rw-r--r-- | include/battle.h | 3 | ||||
-rw-r--r-- | include/battle_message.h | 2 | ||||
-rwxr-xr-x | ld_script.txt | 1 | ||||
-rw-r--r-- | src/battle_anim_8137220.c | 1169 |
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) +{ +} |