diff options
author | yenatch <yenatch@gmail.com> | 2017-06-25 00:23:12 -0400 |
---|---|---|
committer | yenatch <yenatch@gmail.com> | 2017-06-25 00:26:50 -0400 |
commit | 2cae14cf5ae83831d5c387b3823de34d8d476908 (patch) | |
tree | b776589bf88596d7280011c3ea1d9befd32b287f | |
parent | 3300def3b39752f9f290f10dbf0cf7748f0dec5b (diff) | |
parent | e72babd734ab7fd4e5c6d29f456b82d5e76e1bde (diff) |
Merge remote-tracking branch 'origin/master' into de/integrate-data-includes
Conflicts:
asm/battle_anim_8137220.s
asm-de/battle_message.s
-rw-r--r-- | asm-de/battle_message.s | 26 | ||||
-rw-r--r-- | asm/battle_6.s | 5484 | ||||
-rw-r--r-- | asm/battle_anim_8137220.s | 5129 | ||||
-rw-r--r-- | asm/battle_message.s | 26 | ||||
-rw-r--r-- | asm/battle_tower.s | 8 | ||||
-rw-r--r-- | asm/choose_party.s | 2509 | ||||
-rw-r--r-- | data/choose_party.s | 56 | ||||
-rw-r--r-- | include/battle.h | 11 | ||||
-rw-r--r-- | include/battle_message.h | 2 | ||||
-rw-r--r-- | include/battle_party_menu.h | 19 | ||||
-rw-r--r-- | include/choose_party.h | 7 | ||||
-rwxr-xr-x | include/global.h | 5 | ||||
-rw-r--r-- | include/party_menu.h | 38 | ||||
-rw-r--r-- | include/pokemon.h | 252 | ||||
-rw-r--r-- | include/pokemon_summary_screen.h | 2 | ||||
-rw-r--r-- | include/rom3.h | 40 | ||||
-rw-r--r-- | include/songs.h | 20 | ||||
-rwxr-xr-x | ld_script.txt | 9 | ||||
-rw-r--r-- | src/battle_6.c | 1465 | ||||
-rw-r--r-- | src/battle_811DA74.c | 10 | ||||
-rw-r--r-- | src/battle_anim_8137220.c | 1486 | ||||
-rw-r--r-- | src/battle_party_menu.c | 57 | ||||
-rw-r--r-- | src/choose_party.c | 1071 | ||||
-rw-r--r-- | src/party_menu.c | 22 | ||||
-rw-r--r-- | src/script_pokemon_util_80C4BF0.c | 10 | ||||
-rw-r--r-- | src/script_pokemon_util_80F99CC.c | 3 | ||||
-rw-r--r-- | sym_ewram.txt | 2 |
27 files changed, 4337 insertions, 13432 deletions
diff --git a/asm-de/battle_message.s b/asm-de/battle_message.s index 633e83fa0..dda69ce44 100644 --- a/asm-de/battle_message.s +++ b/asm-de/battle_message.s @@ -16,7 +16,7 @@ BufferStringBattle: @ 8120AA8 lsls r0, 16 lsrs r7, r0, 16 movs r6, 0 - ldr r5, _08120B70 @ =gBufferedMoves + ldr r5, _08120B70 @ =gSelectedOrderFromParty ldr r4, _08120B74 @ =gActiveBank ldrb r1, [r4] lsls r1, 9 @@ -73,7 +73,7 @@ _08120B10: movs r2, 0 ldr r0, _08120B9C @ =gBattleTextBuff1 mov r8, r0 - ldr r3, _08120B70 @ =gBufferedMoves + ldr r3, _08120B70 @ =gSelectedOrderFromParty ldr r1, _08120BA4 @ =gBattleTextBuff2 mov r12, r1 ldr r5, _08120BA8 @ =gBattleTextBuff3 @@ -111,7 +111,7 @@ _08120B64: ldr r0, [r0] mov pc, r0 .align 2, 0 -_08120B70: .4byte gBufferedMoves +_08120B70: .4byte gSelectedOrderFromParty _08120B74: .4byte gActiveBank _08120B78: .4byte gUnknown_02023A64 _08120B7C: .4byte gLastUsedItem @@ -424,7 +424,7 @@ _d08120E0C: .4byte 0x0000ffff _08120DE8: mov r0, r10 bl sub_8121D1C - ldr r0, _08120E14 @ =gBufferedMoves + ldr r0, _08120E14 @ =gSelectedOrderFromParty ldr r2, [r0] ldrh r1, [r2] movs r0, 0xB1 @@ -443,7 +443,7 @@ _08120DE8: bl StringCopy b _08120E38 .align 2, 0 -_08120E14: .4byte gBufferedMoves +_08120E14: .4byte gSelectedOrderFromParty _08120E18: .4byte gBattleTextBuff2 _08120E1C: .4byte gUnknown_08401674 _08120E20: .4byte 0x02000000 @@ -1309,7 +1309,7 @@ _081215E8: .align 2, 0 _081215F4: .4byte gBattlePartyID _081215F8: - ldr r0, _08de121568 @ =gBufferedMoves + ldr r0, _08de121568 @ =gSelectedOrderFromParty ldr r2, [r0] ldrh r1, [r2] movs r0, 0xB1 @@ -1321,14 +1321,14 @@ _081215F8: adds r0, r3 b _08de12158C .align 2, 0 -_08de121568: .4byte gBufferedMoves +_08de121568: .4byte gSelectedOrderFromParty _08de12156C: .4byte 0x02000000 _08de121570: .4byte 0x000160a0 _08de121574: ldrh r1, [r2] b _08de1215AA _08121620: - ldr r0, _08de121598 @ =gBufferedMoves + ldr r0, _08de121598 @ =gSelectedOrderFromParty ldr r2, [r0] ldrh r1, [r2, 0x2] movs r0, 0xB1 @@ -1345,7 +1345,7 @@ _08de12158C: adds r4, r0, r1 b _081219E6 .align 2, 0 -_08de121598: .4byte gBufferedMoves +_08de121598: .4byte gSelectedOrderFromParty _08de12159C: .4byte 0x02000000 _08de1215A0: .4byte 0x000160a0 _08de1215A4: .4byte gUnknown_08401674 @@ -2213,7 +2213,7 @@ sub_8121D1C: @ 8121D1C push {r4,r5,lr} adds r4, r0, 0 movs r2, 0 - ldr r5, _08121D50 @ =gBufferedMoves + ldr r5, _08121D50 @ =gSelectedOrderFromParty ldr r3, _08121D54 @ =gUnknown_084016BC _08121D26: cmp r2, 0x4 @@ -2238,7 +2238,7 @@ _08121D3C: bl StringCopy b _08121D68 .align 2, 0 -_08121D50: .4byte gBufferedMoves +_08121D50: .4byte gSelectedOrderFromParty _08121D54: .4byte gUnknown_084016BC _08121D58: .4byte gUnknown_08400E5E _08121D5C: @@ -2268,7 +2268,7 @@ _08121D7E: cmp r0, 0xFF bne _08121D7C ldr r1, _08121DB4 @ =gUnknown_084016BC - ldr r5, _08121DB8 @ =gBufferedMoves + ldr r5, _08121DB8 @ =gSelectedOrderFromParty movs r0, 0 lsls r0, 1 adds r2, r0, r1 @@ -2295,7 +2295,7 @@ _08121DA8: mov pc, r0 .align 2, 0 _08121DB4: .4byte gUnknown_084016BC -_08121DB8: .4byte gBufferedMoves +_08121DB8: .4byte gSelectedOrderFromParty _08121DBC: .4byte _08121DC0 .align 2, 0 _08121DC0: diff --git a/asm/battle_6.s b/asm/battle_6.s deleted file mode 100644 index 90c100c73..000000000 --- a/asm/battle_6.s +++ /dev/null @@ -1,5484 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start PlayerHandleGetAttributes -PlayerHandleGetAttributes: @ 802E4D0 - push {r4-r6,lr} - sub sp, 0x100 - movs r6, 0 - ldr r1, _0802E4FC @ =gBattleBufferA - ldr r0, _0802E500 @ =gActiveBank - ldrb r2, [r0] - lsls r0, r2, 9 - adds r1, 0x2 - adds r1, r0, r1 - ldrb r0, [r1] - cmp r0, 0 - bne _0802E508 - ldr r0, _0802E504 @ =gBattlePartyID - lsls r1, r2, 1 - adds r1, r0 - ldrb r0, [r1] - mov r1, sp - bl dp01_getattr_by_ch1_for_player_pokemon_ - adds r6, r0, 0 - b _0802E52A - .align 2, 0 -_0802E4FC: .4byte gBattleBufferA -_0802E500: .4byte gActiveBank -_0802E504: .4byte gBattlePartyID -_0802E508: - ldrb r4, [r1] - movs r5, 0 -_0802E50C: - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _0802E522 - lsls r0, r5, 24 - lsrs r0, 24 - mov r2, sp - adds r1, r2, r6 - bl dp01_getattr_by_ch1_for_player_pokemon_ - adds r6, r0 -_0802E522: - lsrs r4, 1 - adds r5, 0x1 - cmp r5, 0x5 - ble _0802E50C -_0802E52A: - lsls r1, r6, 16 - lsrs r1, 16 - movs r0, 0x1 - mov r2, sp - bl dp01_build_cmdbuf_x1D_1D_numargs_varargs - bl PlayerBufferExecCompleted - add sp, 0x100 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end PlayerHandleGetAttributes - - thumb_func_start dp01_getattr_by_ch1_for_player_pokemon_ -dp01_getattr_by_ch1_for_player_pokemon_: @ 802E544 - 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, _0802E578 @ =gBattleBufferA - ldr r3, _0802E57C @ =gActiveBank - ldrb r0, [r3] - lsls r0, 9 - adds r1, r2, 0x1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x3B - bls _0802E56E - bl _0802ECDA -_0802E56E: - lsls r0, 2 - ldr r1, _0802E580 @ =_0802E584 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0802E578: .4byte gBattleBufferA -_0802E57C: .4byte gActiveBank -_0802E580: .4byte _0802E584 - .align 2, 0 -_0802E584: - .4byte _0802E674 - .4byte _0802E898 - .4byte _0802E8A8 - .4byte _0802E8B8 - .4byte _0802E920 - .4byte _0802E920 - .4byte _0802E920 - .4byte _0802E920 - .4byte _0802E93C - .4byte _0802E978 - .4byte _0802E978 - .4byte _0802E978 - .4byte _0802E978 - .4byte _0802ECDA - .4byte _0802ECDA - .4byte _0802ECDA - .4byte _0802ECDA - .4byte _0802E994 - .4byte _0802E9A4 - .4byte _0802E9D4 - .4byte _0802E9E4 - .4byte _0802E9F4 - .4byte _0802EA04 - .4byte _0802EA14 - .4byte _0802EA24 - .4byte _0802EA34 - .4byte _0802EA44 - .4byte _0802EA54 - .4byte _0802EA64 - .4byte _0802EA74 - .4byte _0802EA84 - .4byte _0802EA94 - .4byte _0802EAE4 - .4byte _0802EAF4 - .4byte _0802EB04 - .4byte _0802EB14 - .4byte _0802EB24 - .4byte _0802EB34 - .4byte _0802EB44 - .4byte _0802EB54 - .4byte _0802EB64 - .4byte _0802EB98 - .4byte _0802EBA8 - .4byte _0802EBB8 - .4byte _0802EBC8 - .4byte _0802EBD8 - .4byte _0802EBE8 - .4byte _0802EBF8 - .4byte _0802EC08 - .4byte _0802EC28 - .4byte _0802EC38 - .4byte _0802EC48 - .4byte _0802EC58 - .4byte _0802EC68 - .4byte _0802EC78 - .4byte _0802EC88 - .4byte _0802EC98 - .4byte _0802ECA8 - .4byte _0802ECB8 - .4byte _0802ECC8 -_0802E674: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _0802E888 @ =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 -_0802E6C0: - 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 _0802E6C0 - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _0802E888 @ =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, _0802E88C @ =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, _0802E890 @ =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, _0802E894 @ =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 -_0802E878: - adds r0, r7, r6 - adds r1, r2, r6 - ldrb r1, [r1] - strb r1, [r0] - adds r6, 0x1 - cmp r6, 0x57 - bls _0802E878 - b _0802ECDA - .align 2, 0 -_0802E888: .4byte gPlayerParty -_0802E88C: .4byte 0xfffffc1f -_0802E890: .4byte 0xfff07fff -_0802E894: .4byte 0xfffffe0f -_0802E898: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802E8A4 @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - b _0802EC12 - .align 2, 0 -_0802E8A4: .4byte gPlayerParty -_0802E8A8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802E8B4 @ =gPlayerParty - adds r0, r1 - movs r1, 0xC - b _0802EC12 - .align 2, 0 -_0802E8B4: .4byte gPlayerParty -_0802E8B8: - 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, _0802E91C @ =gPlayerParty - adds r4, r1, r0 - mov r8, r9 -_0802E8CE: - 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 _0802E8CE - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802E91C @ =gPlayerParty - adds r0, r1 - movs r1, 0x15 - bl GetMonData - mov r1, r9 - strb r0, [r1, 0xC] - mov r2, r9 - movs r6, 0 -_0802E90C: - adds r0, r7, r6 - adds r1, r2, r6 - ldrb r1, [r1] - strb r1, [r0] - adds r6, 0x1 - cmp r6, 0xF - bls _0802E90C - b _0802ECDA - .align 2, 0 -_0802E91C: .4byte gPlayerParty -_0802E920: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802E938 @ =gPlayerParty - adds r0, r1 - ldrb r1, [r3] - lsls r1, 9 - adds r2, 0x1 - adds r1, r2 - ldrb r1, [r1] - adds r1, 0x9 - b _0802EC12 - .align 2, 0 -_0802E938: .4byte gPlayerParty -_0802E93C: - movs r6, 0 - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r2, _0802E974 @ =gPlayerParty - mov r8, r2 -_0802E948: - 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 _0802E948 - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802E974 @ =gPlayerParty - adds r0, r1 - movs r1, 0x15 - bl GetMonData - adds r1, r7, r6 - strb r0, [r1] - adds r6, 0x1 - b _0802ECDA - .align 2, 0 -_0802E974: .4byte gPlayerParty -_0802E978: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802E990 @ =gPlayerParty - adds r0, r1 - ldrb r1, [r3] - lsls r1, 9 - adds r2, 0x1 - adds r1, r2 - ldrb r1, [r1] - adds r1, 0x8 - b _0802ECD2 - .align 2, 0 -_0802E990: .4byte gPlayerParty -_0802E994: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802E9A0 @ =gPlayerParty - adds r0, r1 - movs r1, 0x1 - b _0802E9AE - .align 2, 0 -_0802E9A0: .4byte gPlayerParty -_0802E9A4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802E9D0 @ =gPlayerParty - adds r0, r1 - movs r1, 0x19 -_0802E9AE: - 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 _0802ECDA - .align 2, 0 -_0802E9D0: .4byte gPlayerParty -_0802E9D4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802E9E0 @ =gPlayerParty - adds r0, r1 - movs r1, 0x1A - b _0802ECD2 - .align 2, 0 -_0802E9E0: .4byte gPlayerParty -_0802E9E4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802E9F0 @ =gPlayerParty - adds r0, r1 - movs r1, 0x1B - b _0802ECD2 - .align 2, 0 -_0802E9F0: .4byte gPlayerParty -_0802E9F4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802EA00 @ =gPlayerParty - adds r0, r1 - movs r1, 0x1C - b _0802ECD2 - .align 2, 0 -_0802EA00: .4byte gPlayerParty -_0802EA04: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802EA10 @ =gPlayerParty - adds r0, r1 - movs r1, 0x1D - b _0802ECD2 - .align 2, 0 -_0802EA10: .4byte gPlayerParty -_0802EA14: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802EA20 @ =gPlayerParty - adds r0, r1 - movs r1, 0x1E - b _0802ECD2 - .align 2, 0 -_0802EA20: .4byte gPlayerParty -_0802EA24: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802EA30 @ =gPlayerParty - adds r0, r1 - movs r1, 0x1F - b _0802ECD2 - .align 2, 0 -_0802EA30: .4byte gPlayerParty -_0802EA34: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802EA40 @ =gPlayerParty - adds r0, r1 - movs r1, 0x20 - b _0802ECD2 - .align 2, 0 -_0802EA40: .4byte gPlayerParty -_0802EA44: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802EA50 @ =gPlayerParty - adds r0, r1 - movs r1, 0x22 - b _0802ECD2 - .align 2, 0 -_0802EA50: .4byte gPlayerParty -_0802EA54: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802EA60 @ =gPlayerParty - adds r0, r1 - movs r1, 0x23 - b _0802ECD2 - .align 2, 0 -_0802EA60: .4byte gPlayerParty -_0802EA64: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802EA70 @ =gPlayerParty - adds r0, r1 - movs r1, 0x24 - b _0802ECD2 - .align 2, 0 -_0802EA70: .4byte gPlayerParty -_0802EA74: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802EA80 @ =gPlayerParty - adds r0, r1 - movs r1, 0x25 - b _0802ECD2 - .align 2, 0 -_0802EA80: .4byte gPlayerParty -_0802EA84: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802EA90 @ =gPlayerParty - adds r0, r1 - movs r1, 0x26 - b _0802ECD2 - .align 2, 0 -_0802EA90: .4byte gPlayerParty -_0802EA94: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _0802EAE0 @ =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 _0802ECDA - .align 2, 0 -_0802EAE0: .4byte gPlayerParty -_0802EAE4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802EAF0 @ =gPlayerParty - adds r0, r1 - movs r1, 0x27 - b _0802ECD2 - .align 2, 0 -_0802EAF0: .4byte gPlayerParty -_0802EAF4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802EB00 @ =gPlayerParty - adds r0, r1 - movs r1, 0x28 - b _0802ECD2 - .align 2, 0 -_0802EB00: .4byte gPlayerParty -_0802EB04: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802EB10 @ =gPlayerParty - adds r0, r1 - movs r1, 0x29 - b _0802ECD2 - .align 2, 0 -_0802EB10: .4byte gPlayerParty -_0802EB14: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802EB20 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2A - b _0802ECD2 - .align 2, 0 -_0802EB20: .4byte gPlayerParty -_0802EB24: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802EB30 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2B - b _0802ECD2 - .align 2, 0 -_0802EB30: .4byte gPlayerParty -_0802EB34: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802EB40 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2C - b _0802ECD2 - .align 2, 0 -_0802EB40: .4byte gPlayerParty -_0802EB44: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802EB50 @ =gPlayerParty - adds r0, r1 - movs r1, 0 - b _0802EB6E - .align 2, 0 -_0802EB50: .4byte gPlayerParty -_0802EB54: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802EB60 @ =gPlayerParty - adds r0, r1 - movs r1, 0x9 - b _0802EC12 - .align 2, 0 -_0802EB60: .4byte gPlayerParty -_0802EB64: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802EB94 @ =gPlayerParty - adds r0, r1 - movs r1, 0x37 -_0802EB6E: - 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 _0802ECDA - .align 2, 0 -_0802EB94: .4byte gPlayerParty -_0802EB98: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802EBA4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x38 - b _0802ECD2 - .align 2, 0 -_0802EBA4: .4byte gPlayerParty -_0802EBA8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802EBB4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x39 - b _0802EC12 - .align 2, 0 -_0802EBB4: .4byte gPlayerParty -_0802EBB8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802EBC4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x3A - b _0802EC12 - .align 2, 0 -_0802EBC4: .4byte gPlayerParty -_0802EBC8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802EBD4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x3B - b _0802EC12 - .align 2, 0 -_0802EBD4: .4byte gPlayerParty -_0802EBD8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802EBE4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x3C - b _0802EC12 - .align 2, 0 -_0802EBE4: .4byte gPlayerParty -_0802EBE8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802EBF4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x3D - b _0802EC12 - .align 2, 0 -_0802EBF4: .4byte gPlayerParty -_0802EBF8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802EC04 @ =gPlayerParty - adds r0, r1 - movs r1, 0x3E - b _0802EC12 - .align 2, 0 -_0802EC04: .4byte gPlayerParty -_0802EC08: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802EC24 @ =gPlayerParty - adds r0, r1 - movs r1, 0x3F -_0802EC12: - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - strb r0, [r7] - lsrs r0, 8 - strb r0, [r7, 0x1] - movs r6, 0x2 - b _0802ECDA - .align 2, 0 -_0802EC24: .4byte gPlayerParty -_0802EC28: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802EC34 @ =gPlayerParty - adds r0, r1 - movs r1, 0x16 - b _0802ECD2 - .align 2, 0 -_0802EC34: .4byte gPlayerParty -_0802EC38: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802EC44 @ =gPlayerParty - adds r0, r1 - movs r1, 0x17 - b _0802ECD2 - .align 2, 0 -_0802EC44: .4byte gPlayerParty -_0802EC48: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802EC54 @ =gPlayerParty - adds r0, r1 - movs r1, 0x18 - b _0802ECD2 - .align 2, 0 -_0802EC54: .4byte gPlayerParty -_0802EC58: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802EC64 @ =gPlayerParty - adds r0, r1 - movs r1, 0x21 - b _0802ECD2 - .align 2, 0 -_0802EC64: .4byte gPlayerParty -_0802EC68: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802EC74 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2F - b _0802ECD2 - .align 2, 0 -_0802EC74: .4byte gPlayerParty -_0802EC78: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802EC84 @ =gPlayerParty - adds r0, r1 - movs r1, 0x30 - b _0802ECD2 - .align 2, 0 -_0802EC84: .4byte gPlayerParty -_0802EC88: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802EC94 @ =gPlayerParty - adds r0, r1 - movs r1, 0x32 - b _0802ECD2 - .align 2, 0 -_0802EC94: .4byte gPlayerParty -_0802EC98: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802ECA4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x33 - b _0802ECD2 - .align 2, 0 -_0802ECA4: .4byte gPlayerParty -_0802ECA8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802ECB4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x34 - b _0802ECD2 - .align 2, 0 -_0802ECB4: .4byte gPlayerParty -_0802ECB8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802ECC4 @ =gPlayerParty - adds r0, r1 - movs r1, 0x35 - b _0802ECD2 - .align 2, 0 -_0802ECC4: .4byte gPlayerParty -_0802ECC8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802ECEC @ =gPlayerParty - adds r0, r1 - movs r1, 0x36 -_0802ECD2: - bl GetMonData - strb r0, [r7] - movs r6, 0x1 -_0802ECDA: - 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 -_0802ECEC: .4byte gPlayerParty - thumb_func_end dp01_getattr_by_ch1_for_player_pokemon_ - - thumb_func_start sub_802ECF0 -sub_802ECF0: @ 802ECF0 - push {r4-r7,lr} - sub sp, 0x58 - ldr r2, _0802ED68 @ =gBattlePartyID - ldr r5, _0802ED6C @ =gActiveBank - ldrb r1, [r5] - lsls r0, r1, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - adds r4, r2, 0 - muls r4, r0 - ldr r3, _0802ED70 @ =gBattleBufferA - lsls r1, 9 - adds r0, r3, 0x1 - adds r0, r1, r0 - ldrb r2, [r0] - ldr r0, _0802ED74 @ =gPlayerParty - adds r0, r2, r0 - adds r6, r4, r0 - mov r0, sp - adds r4, r0, r2 - movs r2, 0 - adds r0, r3, 0x2 - adds r1, r0 - adds r7, r5, 0 - mov r12, r3 - ldrb r1, [r1] - cmp r2, r1 - bcs _0802ED46 - adds r3, r0, 0 -_0802ED2C: - adds r1, r4, r2 - adds r0, r6, r2 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - ldrb r0, [r5] - lsls r0, 9 - adds r0, r3 - ldrb r0, [r0] - cmp r2, r0 - bcc _0802ED2C -_0802ED46: - ldrb r0, [r7] - lsls r0, 9 - mov r1, r12 - adds r1, 0x2 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x1 - adds r2, r4, 0 - bl dp01_build_cmdbuf_x1D_1D_numargs_varargs - bl PlayerBufferExecCompleted - add sp, 0x58 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802ED68: .4byte gBattlePartyID -_0802ED6C: .4byte gActiveBank -_0802ED70: .4byte gBattleBufferA -_0802ED74: .4byte gPlayerParty - thumb_func_end sub_802ECF0 - - thumb_func_start PlayerHandleSetAttributes -PlayerHandleSetAttributes: @ 802ED78 - push {r4,r5,lr} - ldr r1, _0802ED9C @ =gBattleBufferA - ldr r0, _0802EDA0 @ =gActiveBank - ldrb r2, [r0] - lsls r0, r2, 9 - adds r1, 0x2 - adds r1, r0, r1 - ldrb r0, [r1] - cmp r0, 0 - bne _0802EDA8 - ldr r0, _0802EDA4 @ =gBattlePartyID - lsls r1, r2, 1 - adds r1, r0 - ldrb r0, [r1] - bl dp01_setattr_by_ch1_for_player_pokemon - b _0802EDC6 - .align 2, 0 -_0802ED9C: .4byte gBattleBufferA -_0802EDA0: .4byte gActiveBank -_0802EDA4: .4byte gBattlePartyID -_0802EDA8: - ldrb r4, [r1] - movs r5, 0 -_0802EDAC: - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _0802EDBA - adds r0, r5, 0 - bl dp01_setattr_by_ch1_for_player_pokemon -_0802EDBA: - lsrs r4, 1 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x5 - bls _0802EDAC -_0802EDC6: - bl PlayerBufferExecCompleted - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end PlayerHandleSetAttributes - - thumb_func_start dp01_setattr_by_ch1_for_player_pokemon -dp01_setattr_by_ch1_for_player_pokemon: @ 802EDD0 - 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, _0802EE08 @ =gActiveBank - ldrb r0, [r0] - lsls r0, 9 - ldr r2, _0802EE0C @ =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 _0802EDFC - bl _0802F796 -_0802EDFC: - lsls r0, 2 - ldr r1, _0802EE10 @ =_0802EE14 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0802EE08: .4byte gActiveBank -_0802EE0C: .4byte gUnknown_02023A63 -_0802EE10: .4byte _0802EE14 - .align 2, 0 -_0802EE14: - .4byte _0802EF04 - .4byte _0802F09C - .4byte _0802F0BC - .4byte _0802F0DC - .4byte _0802F134 - .4byte _0802F134 - .4byte _0802F134 - .4byte _0802F134 - .4byte _0802F15C - .4byte _0802F1C0 - .4byte _0802F1C0 - .4byte _0802F1C0 - .4byte _0802F1C0 - .4byte _0802F796 - .4byte _0802F796 - .4byte _0802F796 - .4byte _0802F796 - .4byte _0802F1F0 - .4byte _0802F210 - .4byte _0802F230 - .4byte _0802F250 - .4byte _0802F270 - .4byte _0802F290 - .4byte _0802F2B0 - .4byte _0802F2D0 - .4byte _0802F2F0 - .4byte _0802F310 - .4byte _0802F330 - .4byte _0802F350 - .4byte _0802F370 - .4byte _0802F390 - .4byte _0802F3B0 - .4byte _0802F420 - .4byte _0802F440 - .4byte _0802F460 - .4byte _0802F480 - .4byte _0802F4A0 - .4byte _0802F4C0 - .4byte _0802F4E0 - .4byte _0802F500 - .4byte _0802F520 - .4byte _0802F540 - .4byte _0802F560 - .4byte _0802F580 - .4byte _0802F5A0 - .4byte _0802F5C0 - .4byte _0802F5E0 - .4byte _0802F600 - .4byte _0802F620 - .4byte _0802F640 - .4byte _0802F660 - .4byte _0802F680 - .4byte _0802F6A0 - .4byte _0802F6C0 - .4byte _0802F6E0 - .4byte _0802F700 - .4byte _0802F720 - .4byte _0802F740 - .4byte _0802F760 - .4byte _0802F780 -_0802EF04: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _0802F098 @ =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 -_0802EF6A: - 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 _0802EF6A - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _0802F098 @ =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 _0802F796 - .align 2, 0 -_0802F098: .4byte gPlayerParty -_0802F09C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F0B4 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F0B8 @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0xB - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F0B4: .4byte gPlayerParty -_0802F0B8: .4byte gActiveBank -_0802F0BC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F0D4 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F0D8 @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0xC - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F0D4: .4byte gPlayerParty -_0802F0D8: .4byte gActiveBank -_0802F0DC: - 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, _0802F130 @ =gPlayerParty - adds r7, r1, r0 - adds r6, r3, 0 - adds r6, 0x8 - adds r4, r3, 0 -_0802F0F6: - 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 _0802F0F6 - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F130 @ =gPlayerParty - adds r0, r1 - movs r1, 0x15 - mov r2, r9 - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F130: .4byte gPlayerParty -_0802F134: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F150 @ =gPlayerParty - adds r0, r1 - ldr r3, _0802F154 @ =gBattleBufferA - ldr r1, _0802F158 @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r1, r3, 0x1 - adds r1, r2, r1 - ldrb r1, [r1] - adds r1, 0x9 - b _0802F1D8 - .align 2, 0 -_0802F150: .4byte gPlayerParty -_0802F154: .4byte gBattleBufferA -_0802F158: .4byte gActiveBank -_0802F15C: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _0802F1B8 @ =gPlayerParty - adds r4, r0 - ldr r5, _0802F1BC @ =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 _0802F796 - .align 2, 0 -_0802F1B8: .4byte gPlayerParty -_0802F1BC: .4byte gActiveBank -_0802F1C0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F1E4 @ =gPlayerParty - adds r0, r1 - ldr r3, _0802F1E8 @ =gBattleBufferA - ldr r1, _0802F1EC @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r1, r3, 0x1 - adds r1, r2, r1 - ldrb r1, [r1] - adds r1, 0x8 -_0802F1D8: - adds r3, 0x3 - adds r2, r3 - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F1E4: .4byte gPlayerParty -_0802F1E8: .4byte gBattleBufferA -_0802F1EC: .4byte gActiveBank -_0802F1F0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F208 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F20C @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x1 - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F208: .4byte gPlayerParty -_0802F20C: .4byte gActiveBank -_0802F210: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F228 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F22C @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x19 - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F228: .4byte gPlayerParty -_0802F22C: .4byte gActiveBank -_0802F230: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F248 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F24C @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x1A - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F248: .4byte gPlayerParty -_0802F24C: .4byte gActiveBank -_0802F250: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F268 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F26C @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x1B - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F268: .4byte gPlayerParty -_0802F26C: .4byte gActiveBank -_0802F270: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F288 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F28C @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x1C - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F288: .4byte gPlayerParty -_0802F28C: .4byte gActiveBank -_0802F290: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F2A8 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F2AC @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x1D - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F2A8: .4byte gPlayerParty -_0802F2AC: .4byte gActiveBank -_0802F2B0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F2C8 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F2CC @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x1E - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F2C8: .4byte gPlayerParty -_0802F2CC: .4byte gActiveBank -_0802F2D0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F2E8 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F2EC @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x1F - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F2E8: .4byte gPlayerParty -_0802F2EC: .4byte gActiveBank -_0802F2F0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F308 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F30C @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x20 - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F308: .4byte gPlayerParty -_0802F30C: .4byte gActiveBank -_0802F310: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F328 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F32C @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x22 - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F328: .4byte gPlayerParty -_0802F32C: .4byte gActiveBank -_0802F330: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F348 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F34C @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x23 - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F348: .4byte gPlayerParty -_0802F34C: .4byte gActiveBank -_0802F350: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F368 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F36C @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x24 - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F368: .4byte gPlayerParty -_0802F36C: .4byte gActiveBank -_0802F370: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F388 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F38C @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x25 - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F388: .4byte gPlayerParty -_0802F38C: .4byte gActiveBank -_0802F390: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F3A8 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F3AC @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x26 - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F3A8: .4byte gPlayerParty -_0802F3AC: .4byte gActiveBank -_0802F3B0: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _0802F418 @ =gPlayerParty - adds r4, r0 - ldr r5, _0802F41C @ =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 _0802F4D0 - .align 2, 0 -_0802F418: .4byte gPlayerParty -_0802F41C: .4byte gActiveBank -_0802F420: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F438 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F43C @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x27 - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F438: .4byte gPlayerParty -_0802F43C: .4byte gActiveBank -_0802F440: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F458 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F45C @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x28 - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F458: .4byte gPlayerParty -_0802F45C: .4byte gActiveBank -_0802F460: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F478 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F47C @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x29 - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F478: .4byte gPlayerParty -_0802F47C: .4byte gActiveBank -_0802F480: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F498 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F49C @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x2A - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F498: .4byte gPlayerParty -_0802F49C: .4byte gActiveBank -_0802F4A0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F4B8 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F4BC @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x2B - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F4B8: .4byte gPlayerParty -_0802F4BC: .4byte gActiveBank -_0802F4C0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F4D8 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F4DC @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 -_0802F4D0: - movs r1, 0x2C - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F4D8: .4byte gPlayerParty -_0802F4DC: .4byte gActiveBank -_0802F4E0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F4F8 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F4FC @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0 - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F4F8: .4byte gPlayerParty -_0802F4FC: .4byte gActiveBank -_0802F500: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F518 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F51C @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x9 - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F518: .4byte gPlayerParty -_0802F51C: .4byte gActiveBank -_0802F520: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F538 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F53C @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x37 - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F538: .4byte gPlayerParty -_0802F53C: .4byte gActiveBank -_0802F540: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F558 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F55C @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x38 - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F558: .4byte gPlayerParty -_0802F55C: .4byte gActiveBank -_0802F560: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F578 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F57C @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x39 - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F578: .4byte gPlayerParty -_0802F57C: .4byte gActiveBank -_0802F580: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F598 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F59C @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x3A - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F598: .4byte gPlayerParty -_0802F59C: .4byte gActiveBank -_0802F5A0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F5B8 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F5BC @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x3B - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F5B8: .4byte gPlayerParty -_0802F5BC: .4byte gActiveBank -_0802F5C0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F5D8 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F5DC @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x3C - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F5D8: .4byte gPlayerParty -_0802F5DC: .4byte gActiveBank -_0802F5E0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F5F8 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F5FC @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x3D - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F5F8: .4byte gPlayerParty -_0802F5FC: .4byte gActiveBank -_0802F600: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F618 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F61C @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x3E - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F618: .4byte gPlayerParty -_0802F61C: .4byte gActiveBank -_0802F620: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F638 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F63C @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x3F - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F638: .4byte gPlayerParty -_0802F63C: .4byte gActiveBank -_0802F640: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F658 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F65C @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x16 - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F658: .4byte gPlayerParty -_0802F65C: .4byte gActiveBank -_0802F660: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F678 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F67C @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x17 - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F678: .4byte gPlayerParty -_0802F67C: .4byte gActiveBank -_0802F680: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F698 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F69C @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x18 - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F698: .4byte gPlayerParty -_0802F69C: .4byte gActiveBank -_0802F6A0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F6B8 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F6BC @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x21 - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F6B8: .4byte gPlayerParty -_0802F6BC: .4byte gActiveBank -_0802F6C0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F6D8 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F6DC @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x2F - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F6D8: .4byte gPlayerParty -_0802F6DC: .4byte gActiveBank -_0802F6E0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F6F8 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F6FC @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x30 - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F6F8: .4byte gPlayerParty -_0802F6FC: .4byte gActiveBank -_0802F700: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F718 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F71C @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x32 - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F718: .4byte gPlayerParty -_0802F71C: .4byte gActiveBank -_0802F720: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F738 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F73C @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x33 - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F738: .4byte gPlayerParty -_0802F73C: .4byte gActiveBank -_0802F740: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F758 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F75C @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x34 - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F758: .4byte gPlayerParty -_0802F75C: .4byte gActiveBank -_0802F760: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F778 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F77C @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x35 - bl SetMonData - b _0802F796 - .align 2, 0 -_0802F778: .4byte gPlayerParty -_0802F77C: .4byte gActiveBank -_0802F780: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0802F7C0 @ =gPlayerParty - adds r0, r1 - ldr r1, _0802F7C4 @ =gActiveBank - ldrb r2, [r1] - lsls r2, 9 - adds r2, r7 - movs r1, 0x36 - bl SetMonData -_0802F796: - ldr r2, _0802F7C8 @ =gBattlePartyID - ldr r0, _0802F7C4 @ =gActiveBank - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _0802F7C0 @ =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 -_0802F7C0: .4byte gPlayerParty -_0802F7C4: .4byte gActiveBank -_0802F7C8: .4byte gBattlePartyID - thumb_func_end dp01_setattr_by_ch1_for_player_pokemon - - thumb_func_start sub_802F7CC -sub_802F7CC: @ 802F7CC - push {r4-r7,lr} - ldr r1, _0802F830 @ =gBattlePartyID - ldr r7, _0802F834 @ =gActiveBank - ldrb r2, [r7] - lsls r0, r2, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - adds r3, r1, 0 - muls r3, r0 - ldr r4, _0802F838 @ =gBattleBufferA - lsls r2, 9 - adds r0, r4, 0x1 - adds r0, r2, r0 - ldrb r0, [r0] - ldr r1, _0802F83C @ =gPlayerParty - adds r0, r1 - adds r5, r3, r0 - movs r3, 0 - adds r0, r4, 0x2 - adds r2, r0 - ldrb r2, [r2] - cmp r3, r2 - bcs _0802F824 - adds r6, r4, 0 - adds r2, r7, 0 - adds r4, r0, 0 -_0802F802: - adds r1, r5, r3 - ldrb r0, [r2] - lsls r0, 9 - adds r0, 0x3 - adds r0, r3, r0 - adds r0, r6 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - ldrb r0, [r2] - lsls r0, 9 - adds r0, r4 - ldrb r0, [r0] - cmp r3, r0 - bcc _0802F802 -_0802F824: - bl PlayerBufferExecCompleted - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802F830: .4byte gBattlePartyID -_0802F834: .4byte gActiveBank -_0802F838: .4byte gBattleBufferA -_0802F83C: .4byte gPlayerParty - thumb_func_end sub_802F7CC - - thumb_func_start PlayerHandleLoadPokeSprite -PlayerHandleLoadPokeSprite: @ 802F840 - push {r4,lr} - ldr r2, _0802F88C @ =gBattlePartyID - ldr r4, _0802F890 @ =gActiveBank - ldrb r1, [r4] - lsls r0, r1, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _0802F894 @ =gPlayerParty - adds r0, r2 - bl sub_80318FC - ldr r2, _0802F898 @ =gSprites - ldr r0, _0802F89C @ =gObjectBankIDs - ldrb r3, [r4] - adds r0, r3, r0 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - lsls r3, 4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x5] - ldr r1, _0802F8A0 @ =gBattleBankFunc - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802F8A4 @ =bx_0802E404 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0802F88C: .4byte gBattlePartyID -_0802F890: .4byte gActiveBank -_0802F894: .4byte gPlayerParty -_0802F898: .4byte gSprites -_0802F89C: .4byte gObjectBankIDs -_0802F8A0: .4byte gBattleBankFunc -_0802F8A4: .4byte bx_0802E404 - thumb_func_end PlayerHandleLoadPokeSprite - - thumb_func_start PlayerHandleSendOutPoke -PlayerHandleSendOutPoke: @ 802F8A8 - push {r4-r6,lr} - ldr r5, _0802F914 @ =gActiveBank - ldrb r0, [r5] - ldr r4, _0802F918 @ =gBattleBufferA - lsls r1, r0, 9 - adds r6, r4, 0x2 - adds r1, r6 - ldrb r1, [r1] - bl sub_8032AA8 - ldr r2, _0802F91C @ =gBattlePartyID - ldrb r0, [r5] - lsls r1, r0, 1 - adds r1, r2 - lsls r0, 9 - adds r4, 0x1 - adds r0, r4 - ldrb r0, [r0] - movs r4, 0 - strh r0, [r1] - ldrb r1, [r5] - lsls r0, r1, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _0802F920 @ =gPlayerParty - adds r0, r2 - bl sub_80318FC - ldr r1, _0802F924 @ =gActionSelectionCursor - ldrb r0, [r5] - adds r0, r1 - strb r4, [r0] - ldr r1, _0802F928 @ =gMoveSelectionCursor - ldrb r0, [r5] - adds r0, r1 - strb r4, [r0] - ldrb r0, [r5] - lsls r1, r0, 9 - adds r1, r6 - ldrb r1, [r1] - bl sub_802F934 - ldr r1, _0802F92C @ =gBattleBankFunc - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802F930 @ =sub_802D798 - str r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802F914: .4byte gActiveBank -_0802F918: .4byte gBattleBufferA -_0802F91C: .4byte gBattlePartyID -_0802F920: .4byte gPlayerParty -_0802F924: .4byte gActionSelectionCursor -_0802F928: .4byte gMoveSelectionCursor -_0802F92C: .4byte gBattleBankFunc -_0802F930: .4byte sub_802D798 - thumb_func_end PlayerHandleSendOutPoke - - thumb_func_start sub_802F934 -sub_802F934: @ 802F934 - 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 r1, 24 - lsrs r1, 24 - adds r0, r6, 0 - bl sub_8032AA8 - ldr r0, _0802FA78 @ =gBattlePartyID - lsls r2, r6, 1 - adds r2, r0 - ldr r0, _0802FA7C @ =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, _0802FA80 @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - mov r8, r0 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldr r0, _0802FA84 @ =sub_80312F0 - bl CreateInvisibleSpriteWithCallback - ldr r1, _0802FA88 @ =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, _0802FA8C @ =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, _0802FA90 @ =gObjectBankIDs - adds r4, r6, r4 - strb r0, [r4] - ldr r5, _0802FA94 @ =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, _0802FA98 @ =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, _0802FA9C @ =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 -_0802FA78: .4byte gBattlePartyID -_0802FA7C: .4byte gBattleBufferA -_0802FA80: .4byte gPlayerParty -_0802FA84: .4byte sub_80312F0 -_0802FA88: .4byte gUnknown_0300434C -_0802FA8C: .4byte gUnknown_02024E8C -_0802FA90: .4byte gObjectBankIDs -_0802FA94: .4byte gSprites -_0802FA98: .4byte gBattleMonForms -_0802FA9C: .4byte SpriteCallbackDummy - thumb_func_end sub_802F934 - - thumb_func_start PlayerHandleReturnPokeToBall -PlayerHandleReturnPokeToBall: @ 802FAA0 - push {r4-r6,lr} - ldr r1, _0802FAD0 @ =gBattleBufferA - ldr r6, _0802FAD4 @ =gActiveBank - ldrb r2, [r6] - lsls r0, r2, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r3, [r0] - cmp r3, 0 - bne _0802FAE4 - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - ldr r1, _0802FAD8 @ =0x02017810 - adds r0, r1 - strb r3, [r0, 0x4] - ldr r1, _0802FADC @ =gBattleBankFunc - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802FAE0 @ =sub_802FB2C - str r1, [r0] - b _0802FB1A - .align 2, 0 -_0802FAD0: .4byte gBattleBufferA -_0802FAD4: .4byte gActiveBank -_0802FAD8: .4byte 0x02017810 -_0802FADC: .4byte gBattleBankFunc -_0802FAE0: .4byte sub_802FB2C -_0802FAE4: - ldr r5, _0802FB20 @ =gObjectBankIDs - adds r0, r2, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _0802FB24 @ =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, _0802FB28 @ =gHealthboxIDs - ldrb r0, [r6] - adds r0, r1 - ldrb r0, [r0] - bl sub_8043DB0 - bl PlayerBufferExecCompleted -_0802FB1A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802FB20: .4byte gObjectBankIDs -_0802FB24: .4byte gSprites -_0802FB28: .4byte gHealthboxIDs - thumb_func_end PlayerHandleReturnPokeToBall - - thumb_func_start sub_802FB2C -sub_802FB2C: @ 802FB2C - push {r4,r5,lr} - ldr r5, _0802FB48 @ =gActiveBank - ldrb r2, [r5] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - ldr r4, _0802FB4C @ =0x02017810 - adds r3, r0, r4 - ldrb r0, [r3, 0x4] - cmp r0, 0 - beq _0802FB50 - cmp r0, 0x1 - beq _0802FB7C - b _0802FBA4 - .align 2, 0 -_0802FB48: .4byte gActiveBank -_0802FB4C: .4byte 0x02017810 -_0802FB50: - lsls r0, r2, 2 - adds r1, r4, 0 - subs r1, 0x10 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0802FB6C - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x5 - bl move_anim_start_t4 -_0802FB6C: - ldrb r0, [r5] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - movs r0, 0x1 - strb r0, [r1, 0x4] - b _0802FBA4 -_0802FB7C: - ldrb r1, [r3] - movs r0, 0x40 - ands r0, r1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _0802FBA4 - strb r0, [r3, 0x4] - ldrb r2, [r5] - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x1 - bl move_anim_start_t4 - ldr r1, _0802FBAC @ =gBattleBankFunc - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802FBB0 @ =sub_802DEAC - str r1, [r0] -_0802FBA4: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802FBAC: .4byte gBattleBankFunc -_0802FBB0: .4byte sub_802DEAC - thumb_func_end sub_802FB2C - - thumb_func_start PlayerHandleTrainerThrow -PlayerHandleTrainerThrow: @ 802FBB4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, _0802FBDC @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0802FBE8 - ldr r0, _0802FBE0 @ =gActiveBank - ldrb r0, [r0] - bl GetBankIdentity - movs r1, 0x2 - ands r1, r0 - ldr r7, _0802FBE4 @ =0x0000fff0 - cmp r1, 0 - beq _0802FBEA - movs r7, 0x10 - b _0802FBEA - .align 2, 0 -_0802FBDC: .4byte gBattleTypeFlags -_0802FBE0: .4byte gActiveBank -_0802FBE4: .4byte 0x0000fff0 -_0802FBE8: - movs r7, 0 -_0802FBEA: - ldr r4, _0802FCB8 @ =gSaveBlock2 - ldrb r0, [r4, 0x8] - ldr r6, _0802FCBC @ =gActiveBank - ldrb r1, [r6] - bl sub_8031AF4 - ldrb r5, [r4, 0x8] - ldrb r0, [r6] - bl GetBankIdentity - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl GetMonSpriteTemplate_803C5A0 - ldr r0, _0802FCC0 @ =gUnknown_02024E8C - mov r8, r0 - lsls r5, r7, 16 - movs r0, 0xA0 - lsls r0, 15 - adds r5, r0 - asrs r5, 16 - ldr r1, _0802FCC4 @ =gTrainerBackPicCoords - ldrb r0, [r4, 0x8] - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0] - movs r4, 0x8 - subs r4, r0 - lsls r4, 18 - movs r0, 0xA0 - lsls r0, 15 - adds r4, r0 - asrs r4, 16 - ldrb r0, [r6] - bl sub_8079E90 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - mov r0, r8 - adds r1, r5, 0 - adds r2, r4, 0 - bl CreateSprite - ldr r5, _0802FCC8 @ =gObjectBankIDs - ldrb r1, [r6] - adds r1, r5 - strb r0, [r1] - ldr r4, _0802FCCC @ =gSprites - ldrb r3, [r6] - adds r0, r3, r5 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - lsls r3, 4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x5] - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0xF0 - strh r1, [r0, 0x24] - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _0802FCD0 @ =0x0000fffe - strh r1, [r0, 0x2E] - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, 0x1C - adds r0, r4 - ldr r1, _0802FCD4 @ =sub_80313A0 - str r1, [r0] - ldr r1, _0802FCD8 @ =gBattleBankFunc - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802FCDC @ =sub_802D204 - str r1, [r0] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0802FCB8: .4byte gSaveBlock2 -_0802FCBC: .4byte gActiveBank -_0802FCC0: .4byte gUnknown_02024E8C -_0802FCC4: .4byte gTrainerBackPicCoords -_0802FCC8: .4byte gObjectBankIDs -_0802FCCC: .4byte gSprites -_0802FCD0: .4byte 0x0000fffe -_0802FCD4: .4byte sub_80313A0 -_0802FCD8: .4byte gBattleBankFunc -_0802FCDC: .4byte sub_802D204 - thumb_func_end PlayerHandleTrainerThrow - - thumb_func_start PlayerHandleTrainerSlide -PlayerHandleTrainerSlide: @ 802FCE0 - push {r4-r6,lr} - ldr r4, _0802FD94 @ =gSaveBlock2 - ldrb r0, [r4, 0x8] - ldr r5, _0802FD98 @ =gActiveBank - ldrb r1, [r5] - bl sub_8031AF4 - ldrb r6, [r4, 0x8] - ldrb r0, [r5] - bl GetBankIdentity - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r6, 0 - bl GetMonSpriteTemplate_803C5A0 - ldr r0, _0802FD9C @ =gUnknown_02024E8C - ldr r2, _0802FDA0 @ =gTrainerBackPicCoords - ldrb r1, [r4, 0x8] - lsls r1, 2 - adds r1, r2 - ldrb r1, [r1] - movs r2, 0x8 - subs r2, r1 - lsls r2, 18 - movs r1, 0xA0 - lsls r1, 15 - adds r2, r1 - asrs r2, 16 - movs r1, 0x50 - movs r3, 0x1E - bl CreateSprite - ldr r6, _0802FDA4 @ =gObjectBankIDs - ldrb r1, [r5] - adds r1, r6 - strb r0, [r1] - ldr r4, _0802FDA8 @ =gSprites - ldrb r3, [r5] - adds r0, r3, r6 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - lsls r3, 4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x5] - ldrb r0, [r5] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _0802FDAC @ =0x0000ffa0 - strh r1, [r0, 0x24] - ldrb r0, [r5] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x2 - strh r1, [r0, 0x2E] - ldrb r0, [r5] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, 0x1C - adds r0, r4 - ldr r1, _0802FDB0 @ =sub_80313A0 - str r1, [r0] - ldr r1, _0802FDB4 @ =gBattleBankFunc - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802FDB8 @ =sub_802D23C - str r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802FD94: .4byte gSaveBlock2 -_0802FD98: .4byte gActiveBank -_0802FD9C: .4byte gUnknown_02024E8C -_0802FDA0: .4byte gTrainerBackPicCoords -_0802FDA4: .4byte gObjectBankIDs -_0802FDA8: .4byte gSprites -_0802FDAC: .4byte 0x0000ffa0 -_0802FDB0: .4byte sub_80313A0 -_0802FDB4: .4byte gBattleBankFunc -_0802FDB8: .4byte sub_802D23C - thumb_func_end PlayerHandleTrainerSlide - - thumb_func_start PlayerHandleTrainerSlideBack -PlayerHandleTrainerSlideBack: @ 802FDBC - push {r4-r6,lr} - ldr r5, _0802FE5C @ =gObjectBankIDs - ldr r6, _0802FE60 @ =gActiveBank - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _0802FE64 @ =gSprites - adds r0, r4 - bl oamt_add_pos2_onto_pos1 - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x32 - strh r1, [r0, 0x2E] - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _0802FE68 @ =0x0000ffd8 - strh r1, [r0, 0x32] - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x22] - strh r1, [r0, 0x36] - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r4, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _0802FE6C @ =sub_8078B34 - str r1, [r0] - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _0802FE70 @ =SpriteCallbackDummy - bl oamt_set_x3A_32 - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x1 - bl StartSpriteAnim - ldr r1, _0802FE74 @ =gBattleBankFunc - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802FE78 @ =sub_802D274 - str r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0802FE5C: .4byte gObjectBankIDs -_0802FE60: .4byte gActiveBank -_0802FE64: .4byte gSprites -_0802FE68: .4byte 0x0000ffd8 -_0802FE6C: .4byte sub_8078B34 -_0802FE70: .4byte SpriteCallbackDummy -_0802FE74: .4byte gBattleBankFunc -_0802FE78: .4byte sub_802D274 - thumb_func_end PlayerHandleTrainerSlideBack - - thumb_func_start sub_802FE7C -sub_802FE7C: @ 802FE7C - push {r4,r5,lr} - ldr r5, _0802FEC0 @ =gActiveBank - ldrb r2, [r5] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - ldr r4, _0802FEC4 @ =0x02017810 - adds r3, r0, r4 - ldrb r0, [r3, 0x4] - cmp r0, 0 - bne _0802FEC8 - lsls r0, r2, 2 - adds r1, r4, 0 - subs r1, 0x10 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0802FEAE - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x5 - bl move_anim_start_t4 -_0802FEAE: - ldrb r0, [r5] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r0, [r1, 0x4] - adds r0, 0x1 - strb r0, [r1, 0x4] - b _0802FF3E - .align 2, 0 -_0802FEC0: .4byte gActiveBank -_0802FEC4: .4byte 0x02017810 -_0802FEC8: - ldrb r1, [r3] - movs r0, 0x40 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _0802FF3E - strb r4, [r3, 0x4] - ldr r2, _0802FF44 @ =gBattlePartyID - ldrb r1, [r5] - lsls r0, r1, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _0802FF48 @ =gPlayerParty - adds r0, r2 - bl sub_80324F8 - movs r1, 0x40 - negs r1, r1 - movs r0, 0x10 - bl PlaySE12WithPanning - ldr r2, _0802FF4C @ =gSprites - ldr r3, _0802FF50 @ =gObjectBankIDs - ldrb r0, [r5] - adds r0, r3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r4, [r0, 0x30] - ldrb r0, [r5] - adds r0, r3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x5 - strh r1, [r0, 0x32] - ldrb r0, [r5] - adds r0, r3 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _0802FF54 @ =sub_80105EC - str r1, [r0] - ldr r1, _0802FF58 @ =gBattleBankFunc - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802FF5C @ =sub_802DE10 - str r1, [r0] -_0802FF3E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802FF44: .4byte gBattlePartyID -_0802FF48: .4byte gPlayerParty -_0802FF4C: .4byte gSprites -_0802FF50: .4byte gObjectBankIDs -_0802FF54: .4byte sub_80105EC -_0802FF58: .4byte gBattleBankFunc -_0802FF5C: .4byte sub_802DE10 - thumb_func_end sub_802FE7C - - thumb_func_start sub_802FF60 -sub_802FF60: @ 802FF60 - push {lr} - sub sp, 0x4 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r1, 0x2 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - bl PlayerBufferExecCompleted - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_802FF60 - - thumb_func_start sub_802FF80 -sub_802FF80: @ 802FF80 - push {r4,r5,lr} - ldr r1, _0802FFBC @ =0x02017840 - movs r0, 0x4 - strb r0, [r1, 0x8] - ldr r1, _0802FFC0 @ =gDoingBattleAnim - movs r0, 0x1 - strb r0, [r1] - ldr r5, _0802FFC4 @ =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, 0x3 - bl move_anim_start_t4 - ldr r1, _0802FFC8 @ =gBattleBankFunc - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _0802FFCC @ =bx_wait_t1 - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0802FFBC: .4byte 0x02017840 -_0802FFC0: .4byte gDoingBattleAnim -_0802FFC4: .4byte gActiveBank -_0802FFC8: .4byte gBattleBankFunc -_0802FFCC: .4byte bx_wait_t1 - thumb_func_end sub_802FF80 - - thumb_func_start PlayerHandleBallThrow -PlayerHandleBallThrow: @ 802FFD0 - push {r4,r5,lr} - ldr r1, _08030014 @ =gBattleBufferA - ldr r5, _08030018 @ =gActiveBank - ldrb r0, [r5] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r1, [r0] - ldr r0, _0803001C @ =0x02017840 - strb r1, [r0, 0x8] - ldr r1, _08030020 @ =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, 0x3 - bl move_anim_start_t4 - ldr r1, _08030024 @ =gBattleBankFunc - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _08030028 @ =bx_wait_t1 - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08030014: .4byte gBattleBufferA -_08030018: .4byte gActiveBank -_0803001C: .4byte 0x02017840 -_08030020: .4byte gDoingBattleAnim -_08030024: .4byte gBattleBankFunc -_08030028: .4byte bx_wait_t1 - thumb_func_end PlayerHandleBallThrow - - thumb_func_start PlayerHandlePuase -PlayerHandlePuase: @ 803002C - push {lr} - ldr r1, _08030054 @ =gBattleBufferA - ldr r0, _08030058 @ =gActiveBank - ldrb r0, [r0] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _0803004A -_08030040: - subs r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _08030040 -_0803004A: - bl PlayerBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_08030054: .4byte gBattleBufferA -_08030058: .4byte gActiveBank - thumb_func_end PlayerHandlePuase - - thumb_func_start PlayerHandleMoveAnimation -PlayerHandleMoveAnimation: @ 803005C - push {r4-r6,lr} - ldr r6, _08030140 @ =gActiveBank - ldrb r0, [r6] - bl mplay_80342A4 - lsls r0, 24 - cmp r0, 0 - beq _0803006E - b _0803017E -_0803006E: - ldr r0, _08030144 @ =gBattleBufferA - mov r12, r0 - 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, _08030148 @ =gUnknown_0202F7C4 - mov r1, r12 - adds r1, 0x3 - adds r2, r1 - ldrb r1, [r2] - strb r1, [r5] - ldr r4, _0803014C @ =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, _08030150 @ =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, _08030154 @ =gHappinessMoveAnim - ldrb r1, [r6] - lsls r1, 9 - mov r2, r12 - adds r2, 0xA - adds r1, r2 - ldrb r1, [r1] - strb r1, [r3] - ldr r4, _08030158 @ =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, _0803015C @ =gDisableStructMoveAnim - ldrb r2, [r6] - lsls r2, 9 - mov r1, r12 - adds r1, 0x10 - adds r2, r1 - str r2, [r3] - ldr r3, _08030160 @ =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 _08030164 - bl PlayerBufferExecCompleted - b _0803017E - .align 2, 0 -_08030140: .4byte gActiveBank -_08030144: .4byte gBattleBufferA -_08030148: .4byte gUnknown_0202F7C4 -_0803014C: .4byte gMovePowerMoveAnim -_08030150: .4byte gMoveDmgMoveAnim -_08030154: .4byte gHappinessMoveAnim -_08030158: .4byte gWeatherMoveAnim -_0803015C: .4byte gDisableStructMoveAnim -_08030160: .4byte gPID_perBank -_08030164: - ldrb r1, [r6] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _08030184 @ =0x02017810 - adds r0, r1 - strb r2, [r0, 0x4] - ldr r1, _08030188 @ =gBattleBankFunc - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r1, _0803018C @ =sub_8030190 - str r1, [r0] -_0803017E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08030184: .4byte 0x02017810 -_08030188: .4byte gBattleBankFunc -_0803018C: .4byte sub_8030190 - thumb_func_end PlayerHandleMoveAnimation - - thumb_func_start sub_8030190 -sub_8030190: @ 8030190 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r2, _080301D4 @ =gBattleBufferA - ldr r5, _080301D8 @ =gActiveBank - ldrb r3, [r5] - lsls r1, r3, 9 - adds r0, r2, 0x1 - mov r9, r0 - adds r0, r1, r0 - ldrb r4, [r0] - adds r6, r2, 0x2 - mov r8, r6 - adds r0, r1, r6 - ldrb r0, [r0] - lsls r0, 8 - orrs r4, r0 - adds r2, 0xB - adds r1, r2 - ldrb r7, [r1] - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - ldr r6, _080301DC @ =0x02017810 - adds r0, r6 - ldrb r2, [r0, 0x4] - cmp r2, 0x1 - beq _0803021E - cmp r2, 0x1 - bgt _080301E0 - cmp r2, 0 - beq _080301EA - b _080302E8 - .align 2, 0 -_080301D4: .4byte gBattleBufferA -_080301D8: .4byte gActiveBank -_080301DC: .4byte 0x02017810 -_080301E0: - cmp r2, 0x2 - beq _08030244 - cmp r2, 0x3 - beq _080302B0 - b _080302E8 -_080301EA: - lsls r1, r3, 2 - adds r0, r6, 0 - subs r0, 0x10 - adds r1, r0 - ldrb r2, [r1] - movs r0, 0xC - ands r0, r2 - cmp r0, 0x4 - bne _0803020E - movs r0, 0x8 - orrs r0, r2 - strb r0, [r1] - ldrb r2, [r5] - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x5 - bl move_anim_start_t4 -_0803020E: - ldrb r0, [r5] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - movs r0, 0x1 - strb r0, [r1, 0x4] - b _080302E8 -_0803021E: - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _080302E8 - 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 _080302E8 -_08030244: - ldr r0, _080302A0 @ =gAnimScriptCallback - ldr r0, [r0] - bl _call_via_r0 - ldr r0, _080302A4 @ =gAnimScriptActive - ldrb r0, [r0] - cmp r0, 0 - bne _080302E8 - movs r0, 0x1 - bl sub_80326EC - ldrb r2, [r5] - lsls r0, r2, 2 - adds r4, r6, 0 - subs r4, 0x10 - adds r0, r4 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0803028C - cmp r7, 0x1 - bhi _0803028C - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x6 - bl move_anim_start_t4 - ldrb r0, [r5] - lsls r0, 2 - adds r0, r4 - ldrb r2, [r0] - movs r1, 0x9 - negs r1, r1 - ands r1, r2 - strb r1, [r0] -_0803028C: - ldr r0, _080302A8 @ =gActiveBank - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _080302AC @ =0x02017810 - adds r0, r1 - movs r1, 0x3 - strb r1, [r0, 0x4] - b _080302E8 - .align 2, 0 -_080302A0: .4byte gAnimScriptCallback -_080302A4: .4byte gAnimScriptActive -_080302A8: .4byte gActiveBank -_080302AC: .4byte 0x02017810 -_080302B0: - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _080302E8 - bl sub_8031F24 - ldrb r0, [r5] - lsls r2, r0, 9 - mov r3, r9 - adds r1, r2, r3 - ldrb r1, [r1] - add r2, r8 - 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 PlayerBufferExecCompleted -_080302E8: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8030190 - - thumb_func_start PlayerHandlePrintString -PlayerHandlePrintString: @ 80302F4 - push {r4,lr} - sub sp, 0x4 - ldr r0, _08030338 @ =gUnknown_030042A4 - movs r1, 0 - strh r1, [r0] - ldr r0, _0803033C @ =gUnknown_030042A0 - strh r1, [r0] - ldr r4, _08030340 @ =gActiveBank - ldrb r0, [r4] - lsls r0, 9 - ldr r1, _08030344 @ =gUnknown_02023A62 - adds r0, r1 - ldrh r0, [r0] - bl BufferStringBattle - ldr r0, _08030348 @ =gUnknown_03004210 - ldr r1, _0803034C @ =gDisplayedStringBattle - movs r2, 0xF - str r2, [sp] - movs r2, 0x90 - movs r3, 0x2 - bl sub_8002EB0 - ldr r1, _08030350 @ =gBattleBankFunc - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _08030354 @ =sub_802DF18 - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08030338: .4byte gUnknown_030042A4 -_0803033C: .4byte gUnknown_030042A0 -_08030340: .4byte gActiveBank -_08030344: .4byte gUnknown_02023A62 -_08030348: .4byte gUnknown_03004210 -_0803034C: .4byte gDisplayedStringBattle -_08030350: .4byte gBattleBankFunc -_08030354: .4byte sub_802DF18 - thumb_func_end PlayerHandlePrintString - - thumb_func_start PlayerHandlePrintStringPlayerOnly -PlayerHandlePrintStringPlayerOnly: @ 8030358 - push {lr} - ldr r0, _08030370 @ =gActiveBank - ldrb r0, [r0] - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08030374 - bl PlayerHandlePrintString - b _08030378 - .align 2, 0 -_08030370: .4byte gActiveBank -_08030374: - bl PlayerBufferExecCompleted -_08030378: - pop {r0} - bx r0 - thumb_func_end PlayerHandlePrintStringPlayerOnly - -.section .text_8030464 - - thumb_func_start nullsub_42 -nullsub_42: @ 8030464 - bx lr - thumb_func_end nullsub_42 - - thumb_func_start sub_8030468 -sub_8030468: @ 8030468 - push {lr} - sub sp, 0x4 - ldr r1, _08030494 @ =0x0000ffff - ldr r3, _08030498 @ =0x00002d9f - movs r0, 0 - str r0, [sp] - movs r2, 0xC - bl sub_814A5C0 - bl sub_80304A8 - ldr r1, _0803049C @ =gBattleBankFunc - ldr r0, _080304A0 @ =gActiveBank - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _080304A4 @ =sub_802C68C - str r1, [r0] - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_08030494: .4byte 0x0000ffff -_08030498: .4byte 0x00002d9f -_0803049C: .4byte gBattleBankFunc -_080304A0: .4byte gActiveBank -_080304A4: .4byte sub_802C68C - thumb_func_end sub_8030468 - - thumb_func_start sub_80304A8 -sub_80304A8: @ 80304A8 - push {r4,lr} - sub sp, 0x4 - ldr r1, _08030510 @ =gUnknown_030042A4 - movs r0, 0 - strh r0, [r1] - ldr r1, _08030514 @ =gUnknown_030042A0 - movs r2, 0xA0 - lsls r2, 1 - adds r0, r2, 0 - strh r0, [r1] - bl sub_802E1B0 - ldr r1, _08030518 @ =gUnknown_03004344 - movs r0, 0xFF - strb r0, [r1] - ldr r1, _0803051C @ =gMoveSelectionCursor - ldr r4, _08030520 @ =gActiveBank - ldrb r0, [r4] - adds r0, r1 - ldrb r0, [r0] - movs r1, 0 - bl sub_802E3B4 - ldr r1, _08030524 @ =gBattleBufferA - ldrb r0, [r4] - lsls r0, 9 - adds r1, 0x2 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - beq _08030500 - ldr r4, _08030528 @ =gUnknown_03004210 - ldr r1, _0803052C @ =gUnknown_08400D38 - movs r2, 0xA4 - lsls r2, 2 - movs r0, 0x37 - str r0, [sp] - adds r0, r4, 0 - movs r3, 0x17 - bl InitWindow - adds r0, r4, 0 - bl sub_8002F44 -_08030500: - bl sub_802E220 - bl sub_802E2D4 - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08030510: .4byte gUnknown_030042A4 -_08030514: .4byte gUnknown_030042A0 -_08030518: .4byte gUnknown_03004344 -_0803051C: .4byte gMoveSelectionCursor -_08030520: .4byte gActiveBank -_08030524: .4byte gBattleBufferA -_08030528: .4byte gUnknown_03004210 -_0803052C: .4byte gUnknown_08400D38 - thumb_func_end sub_80304A8 - - thumb_func_start PlayerHandleOpenBag -PlayerHandleOpenBag: @ 8030530 - push {r4,r5,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, _0803057C @ =gBattleBankFunc - ldr r2, _08030580 @ =gActiveBank - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _08030584 @ =sub_802E004 - str r1, [r0] - ldr r1, _08030588 @ =gBankInMenu - ldrb r0, [r2] - strb r0, [r1] - movs r3, 0 - ldr r5, _0803058C @ =gUnknown_02038470 - ldr r4, _08030590 @ =gBattleBufferA -_0803055E: - adds r0, r3, r5 - ldrb r1, [r2] - lsls r1, 9 - adds r1, 0x1 - adds r1, r3, r1 - adds r1, r4 - ldrb r1, [r1] - strb r1, [r0] - adds r3, 0x1 - cmp r3, 0x2 - ble _0803055E - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0803057C: .4byte gBattleBankFunc -_08030580: .4byte gActiveBank -_08030584: .4byte sub_802E004 -_08030588: .4byte gBankInMenu -_0803058C: .4byte gUnknown_02038470 -_08030590: .4byte gBattleBufferA - thumb_func_end PlayerHandleOpenBag - - thumb_func_start sub_8030594 -sub_8030594: @ 8030594 - push {r4,r5,lr} - sub sp, 0x4 - ldr r0, _08030644 @ =TaskDummy - movs r1, 0xFF - bl CreateTask - ldr r3, _08030648 @ =gUnknown_0300434C - ldr r5, _0803064C @ =gActiveBank - ldrb r1, [r5] - adds r1, r3 - strb r0, [r1] - ldr r4, _08030650 @ =gTasks - ldrb r2, [r5] - adds r3, r2, r3 - ldrb r0, [r3] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r4 - ldr r4, _08030654 @ =gBattleBufferA - lsls r2, 9 - adds r3, r4, 0x1 - adds r2, r3 - ldrb r2, [r2] - movs r0, 0xF - ands r0, r2 - strh r0, [r1, 0x8] - ldr r2, _08030658 @ =0x02000000 - ldrb r0, [r5] - lsls r0, 9 - adds r0, r3 - ldrb r0, [r0] - lsrs r0, 4 - ldr r3, _0803065C @ =0x00016054 - adds r1, r2, r3 - strb r0, [r1] - ldrb r0, [r5] - lsls r0, 9 - adds r1, r4, 0x2 - adds r0, r1 - ldrb r1, [r0] - adds r3, 0x49 - adds r0, r2, r3 - strb r1, [r0] - ldrb r0, [r5] - lsls r0, 9 - adds r1, r4, 0x3 - adds r0, r1 - ldrb r0, [r0] - ldr r1, _08030660 @ =0x000160c0 - adds r2, r1 - strb r0, [r2] - movs r2, 0 - ldr r3, _08030664 @ =gUnknown_02038470 -_08030600: - adds r0, r2, r3 - ldrb r1, [r5] - lsls r1, 9 - adds r1, 0x4 - adds r1, r2, r1 - adds r1, r4 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x2 - ble _08030600 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _08030668 @ =gBattleBankFunc - ldr r2, _0803064C @ =gActiveBank - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _0803066C @ =sub_802DF30 - str r1, [r0] - ldr r1, _08030670 @ =gBankInMenu - ldrb r0, [r2] - strb r0, [r1] - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08030644: .4byte TaskDummy -_08030648: .4byte gUnknown_0300434C -_0803064C: .4byte gActiveBank -_08030650: .4byte gTasks -_08030654: .4byte gBattleBufferA -_08030658: .4byte 0x02000000 -_0803065C: .4byte 0x00016054 -_08030660: .4byte 0x000160c0 -_08030664: .4byte gUnknown_02038470 -_08030668: .4byte gBattleBankFunc -_0803066C: .4byte sub_802DF30 -_08030670: .4byte gBankInMenu - thumb_func_end sub_8030594 - - thumb_func_start sub_8030674 -sub_8030674: @ 8030674 - push {lr} - sub sp, 0x4 - bl sub_80325B8 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r1, 0x2 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - bl PlayerBufferExecCompleted - add sp, 0x4 - pop {r0} - bx r0 - thumb_func_end sub_8030674 - - thumb_func_start PlayerHandleHealthBarUpdate -PlayerHandleHealthBarUpdate: @ 8030698 - 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, _08030710 @ =gBattleBufferA - ldr r0, _08030714 @ =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, _08030718 @ =0x00007fff - cmp r7, r0 - beq _08030728 - ldr r6, _0803071C @ =gBattlePartyID - lsls r0, r4, 1 - adds r0, r6 - ldrh r0, [r0] - movs r5, 0x64 - muls r0, r5 - ldr r4, _08030720 @ =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, _08030724 @ =gHealthboxIDs - adds r1, r0, r1 - ldrb r1, [r1] - str r7, [sp] - mov r2, r8 - bl sub_8043D84 - b _08030762 - .align 2, 0 -_08030710: .4byte gBattleBufferA -_08030714: .4byte gActiveBank -_08030718: .4byte 0x00007fff -_0803071C: .4byte gBattlePartyID -_08030720: .4byte gPlayerParty -_08030724: .4byte gHealthboxIDs -_08030728: - ldr r1, _08030780 @ =gBattlePartyID - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08030784 @ =gPlayerParty - adds r0, r1 - movs r1, 0x3A - bl GetMonData - adds r2, r0, 0 - mov r1, r9 - ldrb r0, [r1] - ldr r4, _08030788 @ =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 -_08030762: - ldr r1, _0803078C @ =gBattleBankFunc - ldr r0, _08030790 @ =gActiveBank - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _08030794 @ =bx_t1_healthbar_update - 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 -_08030780: .4byte gBattlePartyID -_08030784: .4byte gPlayerParty -_08030788: .4byte gHealthboxIDs -_0803078C: .4byte gBattleBankFunc -_08030790: .4byte gActiveBank -_08030794: .4byte bx_t1_healthbar_update - thumb_func_end PlayerHandleHealthBarUpdate - - thumb_func_start PlayerHandleExpBarUpdate -PlayerHandleExpBarUpdate: @ 8030798 - push {r4-r7,lr} - ldr r5, _080307C4 @ =gBattleBufferA - ldr r6, _080307C8 @ =gActiveBank - ldrb r0, [r6] - lsls r0, 9 - adds r1, r5, 0x1 - adds r0, r1 - ldrb r7, [r0] - movs r0, 0x64 - adds r1, r7, 0 - muls r1, r0 - ldr r0, _080307CC @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x38 - bl GetMonData - cmp r0, 0x63 - bls _080307D0 - bl PlayerBufferExecCompleted - b _0803081C - .align 2, 0 -_080307C4: .4byte gBattleBufferA -_080307C8: .4byte gActiveBank -_080307CC: .4byte gPlayerParty -_080307D0: - movs r0, 0x1 - bl load_gfxc_health_bar - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - ldrb r1, [r6] - lsls r1, 9 - adds r0, r5, 0x2 - adds r0, r1, r0 - ldrb r4, [r0] - adds r0, r5, 0x3 - adds r1, r0 - ldrb r0, [r1] - lsls r0, 8 - orrs r4, r0 - ldr r0, _08030824 @ =sub_802D924 - movs r1, 0xA - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08030828 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r7, [r1, 0x8] - strh r4, [r1, 0xA] - ldrb r0, [r6] - strh r0, [r1, 0xC] - ldr r1, _0803082C @ =gBattleBankFunc - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r1, _08030830 @ =nullsub_91 - str r1, [r0] -_0803081C: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08030824: .4byte sub_802D924 -_08030828: .4byte gTasks -_0803082C: .4byte gBattleBankFunc -_08030830: .4byte nullsub_91 - thumb_func_end PlayerHandleExpBarUpdate - - thumb_func_start PlayerHandleStatusIconUpdate -PlayerHandleStatusIconUpdate: @ 8030834 - push {r4,lr} - ldr r4, _0803088C @ =gActiveBank - ldrb r0, [r4] - bl mplay_80342A4 - lsls r0, 24 - cmp r0, 0 - bne _08030884 - ldr r0, _08030890 @ =gHealthboxIDs - ldrb r1, [r4] - adds r0, r1, r0 - ldrb r0, [r0] - ldr r2, _08030894 @ =gBattlePartyID - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _08030898 @ =gPlayerParty - adds r1, r2 - movs r2, 0x9 - bl sub_8045A5C - ldrb r0, [r4] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - ldr r0, _0803089C @ =0x02017810 - adds r1, r0 - ldrb r2, [r1] - movs r0, 0x11 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - ldr r1, _080308A0 @ =gBattleBankFunc - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _080308A4 @ =sub_802E434 - str r1, [r0] -_08030884: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0803088C: .4byte gActiveBank -_08030890: .4byte gHealthboxIDs -_08030894: .4byte gBattlePartyID -_08030898: .4byte gPlayerParty -_0803089C: .4byte 0x02017810 -_080308A0: .4byte gBattleBankFunc -_080308A4: .4byte sub_802E434 - thumb_func_end PlayerHandleStatusIconUpdate - - thumb_func_start PlayerHandleStatusAnimation -PlayerHandleStatusAnimation: @ 80308A8 - push {r4,r5,lr} - ldr r5, _08030900 @ =gActiveBank - ldrb r0, [r5] - bl mplay_80342A4 - lsls r0, 24 - cmp r0, 0 - bne _080308F8 - ldr r4, _08030904 @ =gBattleBufferA - ldrb r3, [r5] - lsls r3, 9 - adds r0, r4, 0x1 - adds r0, r3, r0 - ldrb r0, [r0] - adds r1, r4, 0x2 - adds r1, r3, r1 - ldrb r1, [r1] - adds r2, r4, 0x3 - adds r2, r3, r2 - ldrb r2, [r2] - lsls r2, 8 - orrs r1, r2 - adds r2, r4, 0x4 - adds r2, r3, r2 - ldrb r2, [r2] - lsls r2, 16 - orrs r1, r2 - adds r4, 0x5 - adds r3, r4 - ldrb r2, [r3] - lsls r2, 24 - orrs r1, r2 - bl move_anim_start_t2_for_situation - ldr r1, _08030908 @ =gBattleBankFunc - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _0803090C @ =sub_802E434 - str r1, [r0] -_080308F8: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08030900: .4byte gActiveBank -_08030904: .4byte gBattleBufferA -_08030908: .4byte gBattleBankFunc -_0803090C: .4byte sub_802E434 - thumb_func_end PlayerHandleStatusAnimation - - thumb_func_start PlayerHandleStatusXor -PlayerHandleStatusXor: @ 8030910 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x4 - ldr r0, _0803096C @ =gBattlePartyID - mov r8, r0 - ldr r4, _08030970 @ =gActiveBank - ldrb r0, [r4] - lsls r0, 1 - add r0, r8 - ldrh r0, [r0] - movs r6, 0x64 - muls r0, r6 - ldr r5, _08030974 @ =gPlayerParty - adds r0, r5 - movs r1, 0x37 - bl GetMonData - ldr r2, _08030978 @ =gBattleBufferA - ldrb r1, [r4] - lsls r1, 9 - adds r2, 0x1 - adds r1, r2 - ldrb r1, [r1] - eors r0, r1 - mov r1, sp - strb r0, [r1] - ldrb r0, [r4] - lsls r0, 1 - add r0, r8 - ldrh r0, [r0] - muls r0, r6 - adds r0, r5 - movs r1, 0x37 - mov r2, sp - bl SetMonData - bl PlayerBufferExecCompleted - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0803096C: .4byte gBattlePartyID -_08030970: .4byte gActiveBank -_08030974: .4byte gPlayerParty -_08030978: .4byte gBattleBufferA - thumb_func_end PlayerHandleStatusXor - - thumb_func_start sub_803097C -sub_803097C: @ 803097C - push {lr} - bl PlayerBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_803097C - - thumb_func_start PlayerHandleDMATransfer -PlayerHandleDMATransfer: @ 8030988 - push {r4,r5,lr} - ldr r3, _080309EC @ =gBattleBufferA - ldr r0, _080309F0 @ =gActiveBank - ldrb r2, [r0] - lsls r2, 9 - adds r0, r3, 0x1 - adds r0, r2, r0 - ldrb r5, [r0] - adds r0, r3, 0x2 - adds r0, r2, r0 - ldrb r0, [r0] - lsls r0, 8 - orrs r5, r0 - adds r0, r3, 0x3 - adds r0, r2, r0 - ldrb r0, [r0] - lsls r0, 16 - orrs r5, r0 - adds r0, r3, 0x4 - adds r0, r2, r0 - ldrb r4, [r0] - lsls r4, 24 - adds r0, r3, 0x5 - adds r0, r2, r0 - ldrb r1, [r0] - adds r0, r3, 0x6 - adds r0, r2, r0 - ldrb r0, [r0] - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - adds r3, 0x7 - adds r2, r3 - orrs r5, r4 - lsrs r4, r1, 16 - movs r0, 0x80 - lsls r0, 5 - cmp r4, r0 - bhi _080309F8 - ldr r0, _080309F4 @ =0x040000d4 - str r2, [r0] - str r5, [r0, 0x4] - lsrs r1, 17 - movs r2, 0x80 - lsls r2, 24 - orrs r1, r2 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - b _08030A24 - .align 2, 0 -_080309EC: .4byte gBattleBufferA -_080309F0: .4byte gActiveBank -_080309F4: .4byte 0x040000d4 -_080309F8: - ldr r3, _08030A30 @ =0x040000d4 - str r2, [r3] - str r5, [r3, 0x4] - ldr r0, _08030A34 @ =0x80000800 - str r0, [r3, 0x8] - ldr r0, [r3, 0x8] - movs r0, 0x80 - lsls r0, 5 - adds r2, r0 - adds r5, r0 - ldr r1, _08030A38 @ =0xfffff000 - adds r4, r1 - cmp r4, r0 - bhi _080309F8 - str r2, [r3] - str r5, [r3, 0x4] - lsrs r0, r4, 1 - movs r1, 0x80 - lsls r1, 24 - orrs r0, r1 - str r0, [r3, 0x8] - ldr r0, [r3, 0x8] -_08030A24: - bl PlayerBufferExecCompleted - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08030A30: .4byte 0x040000d4 -_08030A34: .4byte 0x80000800 -_08030A38: .4byte 0xfffff000 - thumb_func_end PlayerHandleDMATransfer - - thumb_func_start sub_8030A3C -sub_8030A3C: @ 8030A3C - push {lr} - ldr r2, _08030A64 @ =gBattleBufferA - ldr r0, _08030A68 @ =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 PlayBGM - bl PlayerBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_08030A64: .4byte gBattleBufferA -_08030A68: .4byte gActiveBank - thumb_func_end sub_8030A3C - - thumb_func_start sub_8030A6C -sub_8030A6C: @ 8030A6C - push {lr} - bl PlayerBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_8030A6C - - thumb_func_start sub_8030A78 -sub_8030A78: @ 8030A78 - push {lr} - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl dp01_build_cmdbuf_x21_a_bb - bl PlayerBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_8030A78 - - thumb_func_start sub_8030A8C -sub_8030A8C: @ 8030A8C - push {lr} - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl dp01_build_cmdbuf_x22_a_three_bytes - bl PlayerBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_8030A8C - - thumb_func_start sub_8030AA0 -sub_8030AA0: @ 8030AA0 - push {lr} - movs r0, 0x1 - movs r1, 0 - bl dp01_build_cmdbuf_x23_aa_0 - bl PlayerBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_8030AA0 - - thumb_func_start sub_8030AB4 -sub_8030AB4: @ 8030AB4 - push {lr} - movs r0, 0x1 - movs r1, 0 - bl dp01_build_cmdbuf_x24_aa_0 - bl PlayerBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_8030AB4 - - thumb_func_start sub_8030AC8 -sub_8030AC8: @ 8030AC8 - push {lr} - ldr r2, _08030AE0 @ =gUnknown_020238C8 - ldrb r1, [r2] - movs r0, 0x80 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - bl PlayerBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_08030AE0: .4byte gUnknown_020238C8 - thumb_func_end sub_8030AC8 - - thumb_func_start sub_8030AE4 -sub_8030AE4: @ 8030AE4 - push {lr} - ldr r3, _08030B10 @ =gUnknown_020238C8 - ldr r1, _08030B14 @ =gBattleBufferA - ldr r0, _08030B18 @ =gActiveBank - ldrb r0, [r0] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - movs r1, 0x7F - ands r1, r0 - ldrb r2, [r3] - movs r0, 0x80 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - bl PlayerBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_08030B10: .4byte gUnknown_020238C8 -_08030B14: .4byte gBattleBufferA -_08030B18: .4byte gActiveBank - thumb_func_end sub_8030AE4 - - thumb_func_start sub_8030B1C -sub_8030B1C: @ 8030B1C - push {lr} - ldr r2, _08030B30 @ =gUnknown_020238C8 - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - bl PlayerBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_08030B30: .4byte gUnknown_020238C8 - thumb_func_end sub_8030B1C - - thumb_func_start sub_8030B34 -sub_8030B34: @ 8030B34 - push {lr} - ldr r3, _08030B58 @ =gUnknown_020238C8 - ldr r1, [r3] - lsls r1, 24 - lsrs r1, 31 - movs r0, 0x1 - eors r1, r0 - lsls r1, 7 - ldrb r2, [r3] - movs r0, 0x7F - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - bl PlayerBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_08030B58: .4byte gUnknown_020238C8 - thumb_func_end sub_8030B34 - - thumb_func_start PlayerHandleHitAnimation -PlayerHandleHitAnimation: @ 8030B5C - push {r4,lr} - ldr r3, _08030B84 @ =gSprites - ldr r2, _08030B88 @ =gObjectBankIDs - ldr r4, _08030B8C @ =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 _08030B90 - bl PlayerBufferExecCompleted - b _08030BBA - .align 2, 0 -_08030B84: .4byte gSprites -_08030B88: .4byte gObjectBankIDs -_08030B8C: .4byte gActiveBank -_08030B90: - ldr r1, _08030BC0 @ =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, _08030BC4 @ =gBattleBankFunc - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _08030BC8 @ =bx_blink_t1 - str r1, [r0] -_08030BBA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08030BC0: .4byte gDoingBattleAnim -_08030BC4: .4byte gBattleBankFunc -_08030BC8: .4byte bx_blink_t1 - thumb_func_end PlayerHandleHitAnimation - - thumb_func_start sub_8030BCC -sub_8030BCC: @ 8030BCC - push {lr} - bl PlayerBufferExecCompleted - pop {r0} - bx r0 - thumb_func_end sub_8030BCC - - thumb_func_start PlayerHandleEffectivenessSound -PlayerHandleEffectivenessSound: @ 8030BD8 - push {r4,lr} - ldr r4, _08030C14 @ =gActiveBank - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - movs r3, 0x3F - cmp r0, 0 - bne _08030BEC - movs r3, 0xC0 -_08030BEC: - ldr r2, _08030C18 @ =gBattleBufferA - ldrb r1, [r4] - lsls r1, 9 - adds r0, r2, 0x1 - adds r0, r1, r0 - ldrb r0, [r0] - adds r2, 0x2 - adds r1, r2 - ldrb r1, [r1] - lsls r1, 8 - orrs r0, r1 - lsls r1, r3, 24 - asrs r1, 24 - bl PlaySE12WithPanning - bl PlayerBufferExecCompleted - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08030C14: .4byte gActiveBank -_08030C18: .4byte gBattleBufferA - thumb_func_end PlayerHandleEffectivenessSound - - thumb_func_start sub_8030C1C -sub_8030C1C: @ 8030C1C - push {lr} - ldr r2, _08030C44 @ =gBattleBufferA - ldr r0, _08030C48 @ =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 PlayerBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_08030C44: .4byte gBattleBufferA -_08030C48: .4byte gActiveBank - thumb_func_end sub_8030C1C - - thumb_func_start PlayerHandleFaintingCry -PlayerHandleFaintingCry: @ 8030C4C - push {lr} - ldr r1, _08030C80 @ =gBattlePartyID - ldr r0, _08030C84 @ =gActiveBank - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08030C88 @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x19 - negs r1, r1 - movs r2, 0x5 - bl PlayCry3 - bl PlayerBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_08030C80: .4byte gBattlePartyID -_08030C84: .4byte gActiveBank -_08030C88: .4byte gPlayerParty - thumb_func_end PlayerHandleFaintingCry - - thumb_func_start PlayerHandleIntroSlide -PlayerHandleIntroSlide: @ 8030C8C - push {lr} - ldr r1, _08030CB4 @ =gBattleBufferA - ldr r0, _08030CB8 @ =gActiveBank - ldrb r0, [r0] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - bl sub_80E43C0 - ldr r2, _08030CBC @ =gUnknown_02024DE8 - ldrh r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strh r0, [r2] - bl PlayerBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_08030CB4: .4byte gBattleBufferA -_08030CB8: .4byte gActiveBank -_08030CBC: .4byte gUnknown_02024DE8 - thumb_func_end PlayerHandleIntroSlide - - thumb_func_start PlayerHandleTrainerBallThrow -PlayerHandleTrainerBallThrow: @ 8030CC0 - push {r4-r7,lr} - ldr r6, _08030DF8 @ =gObjectBankIDs - ldr r7, _08030DFC @ =gActiveBank - ldrb r0, [r7] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r5, _08030E00 @ =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, _08030E04 @ =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, _08030E08 @ =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, _08030E0C @ =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, _08030E10 @ =0x0000d6f8 - bl AllocSpritePalette - adds r4, r0, 0 - lsls r4, 24 - ldr r1, _08030E14 @ =gTrainerBackPicPaletteTable - ldr r0, _08030E18 @ =gSaveBlock2 - ldrb r0, [r0, 0x8] - lsls r0, 3 - adds r0, r1 - ldr r0, [r0] - 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, _08030E1C @ =task05_08033660 - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r4, _08030E20 @ =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, _08030E24 @ =0x02017810 - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08030DDC - ldr r0, _08030E28 @ =gUnknown_02024E68 - adds r0, r3, r0 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r4 - ldr r1, _08030E2C @ =sub_8044CA0 - str r1, [r0] -_08030DDC: - adds r2, 0x30 - ldrb r0, [r2, 0x9] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x9] - ldr r1, _08030E30 @ =gBattleBankFunc - ldrb r0, [r7] - lsls r0, 2 - adds r0, r1 - ldr r1, _08030E34 @ =nullsub_91 - str r1, [r0] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08030DF8: .4byte gObjectBankIDs -_08030DFC: .4byte gActiveBank -_08030E00: .4byte gSprites -_08030E04: .4byte 0x0000ffd8 -_08030E08: .4byte sub_8078B34 -_08030E0C: .4byte sub_8030E38 -_08030E10: .4byte 0x0000d6f8 -_08030E14: .4byte gTrainerBackPicPaletteTable -_08030E18: .4byte gSaveBlock2 -_08030E1C: .4byte task05_08033660 -_08030E20: .4byte gTasks -_08030E24: .4byte 0x02017810 -_08030E28: .4byte gUnknown_02024E68 -_08030E2C: .4byte sub_8044CA0 -_08030E30: .4byte gBattleBankFunc -_08030E34: .4byte nullsub_91 - thumb_func_end PlayerHandleTrainerBallThrow - - thumb_func_start sub_8030E38 -sub_8030E38: @ 8030E38 - push {r4,r5,lr} - adds r5, r0, 0 - ldrh r4, [r5, 0x38] - lsls r4, 24 - lsrs r4, 24 - bl FreeSpriteOamMatrix - ldrb r0, [r5, 0x5] - lsrs r0, 4 - bl GetSpritePaletteTagByPaletteNum - lsls r0, 16 - lsrs r0, 16 - bl FreeSpritePaletteByTag - adds r0, r5, 0 - bl DestroySprite - ldr r1, _08030E90 @ =gBattlePartyID - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08030E94 @ =gPlayerParty - adds r0, r1 - adds r1, r4, 0 - bl sub_80318FC - ldr r0, _08030E98 @ =gObjectBankIDs - adds r4, r0 - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08030E9C @ =gSprites - adds r0, r1 - movs r1, 0 - bl StartSpriteAnim - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08030E90: .4byte gBattlePartyID -_08030E94: .4byte gPlayerParty -_08030E98: .4byte gObjectBankIDs -_08030E9C: .4byte gSprites - thumb_func_end sub_8030E38 - - thumb_func_start task05_08033660 -task05_08033660: @ 8030EA0 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r1, _08030EC8 @ =gTasks - lsls r0, 2 - add r0, r8 - lsls r0, 3 - adds r1, r0, r1 - ldrh r2, [r1, 0xA] - movs r3, 0xA - ldrsh r0, [r1, r3] - cmp r0, 0x1E - bgt _08030ECC - adds r0, r2, 0x1 - strh r0, [r1, 0xA] - b _08030F88 - .align 2, 0 -_08030EC8: .4byte gTasks -_08030ECC: - ldr r7, _08030F0C @ =gActiveBank - ldrb r0, [r7] - mov r9, r0 - ldrh r0, [r1, 0x8] - strb r0, [r7] - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _08030EEC - ldr r0, _08030F10 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08030F1C -_08030EEC: - ldr r0, _08030F14 @ =gBattleBufferA - ldrb r1, [r7] - lsls r2, r1, 9 - adds r0, 0x1 - adds r2, r0 - ldr r0, _08030F18 @ =gBattlePartyID - lsls r1, 1 - adds r1, r0 - ldrh r0, [r1] - strb r0, [r2] - ldrb r0, [r7] - movs r1, 0 - bl sub_802F934 - b _08030F70 - .align 2, 0 -_08030F0C: .4byte gActiveBank -_08030F10: .4byte gBattleTypeFlags -_08030F14: .4byte gBattleBufferA -_08030F18: .4byte gBattlePartyID -_08030F1C: - ldr r4, _08030F94 @ =gBattleBufferA - ldrb r0, [r7] - lsls r1, r0, 9 - adds r4, 0x1 - adds r1, r4 - ldr r5, _08030F98 @ =gBattlePartyID - lsls r0, 1 - adds r0, r5 - ldrh r0, [r0] - strb r0, [r1] - ldrb r0, [r7] - movs r1, 0 - bl sub_802F934 - ldrb r0, [r7] - movs r6, 0x2 - eors r0, r6 - strb r0, [r7] - ldrb r0, [r7] - lsls r1, r0, 9 - adds r1, r4 - lsls r0, 1 - adds r0, r5 - ldrh r0, [r0] - strb r0, [r1] - ldrb r1, [r7] - lsls r0, r1, 1 - adds r0, r5 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _08030F9C @ =gPlayerParty - adds r0, r2 - bl sub_80318FC - ldrb r0, [r7] - movs r1, 0 - bl sub_802F934 - ldrb r0, [r7] - eors r0, r6 - strb r0, [r7] -_08030F70: - ldr r1, _08030FA0 @ =gBattleBankFunc - ldr r2, _08030FA4 @ =gActiveBank - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _08030FA8 @ =sub_802D500 - str r1, [r0] - mov r3, r9 - strb r3, [r2] - mov r0, r8 - bl DestroyTask -_08030F88: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08030F94: .4byte gBattleBufferA -_08030F98: .4byte gBattlePartyID -_08030F9C: .4byte gPlayerParty -_08030FA0: .4byte gBattleBankFunc -_08030FA4: .4byte gActiveBank -_08030FA8: .4byte sub_802D500 - thumb_func_end task05_08033660 - - thumb_func_start sub_8030FAC -sub_8030FAC: @ 8030FAC - push {r4-r6,lr} - ldr r1, _08030FD4 @ =gBattleBufferA - ldr r0, _08030FD8 @ =gActiveBank - ldrb r2, [r0] - lsls r0, r2, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _08030FDC - adds r0, r2, 0 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _08030FDC - bl PlayerBufferExecCompleted - b _08031044 - .align 2, 0 -_08030FD4: .4byte gBattleBufferA -_08030FD8: .4byte gActiveBank -_08030FDC: - ldr r5, _0803104C @ =gActiveBank - ldrb r1, [r5] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r6, _08031050 @ =0x02017810 - adds r0, r6 - ldrb r1, [r0] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0] - ldrb r0, [r5] - lsls r3, r0, 9 - ldr r4, _08031054 @ =gUnknown_02023A64 - adds r1, r3, r4 - subs r2, r4, 0x3 - adds r2, r3, r2 - ldrb r2, [r2] - subs r4, 0x2 - adds r3, r4 - ldrb r3, [r3] - bl sub_8044804 - ldr r2, _08031058 @ =gUnknown_02024E68 - ldrb r1, [r5] - adds r1, r2 - movs r2, 0 - strb r0, [r1] - ldrb r1, [r5] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - strb r2, [r0, 0x5] - ldrb r1, [r5] - lsls r0, r1, 9 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - beq _08031038 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0x5D - strb r1, [r0, 0x5] -_08031038: - ldr r0, _0803105C @ =gBattleBankFunc - ldrb r1, [r5] - lsls r1, 2 - adds r1, r0 - ldr r0, _08031060 @ =sub_8031064 - str r0, [r1] -_08031044: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0803104C: .4byte gActiveBank -_08031050: .4byte 0x02017810 -_08031054: .4byte gUnknown_02023A64 -_08031058: .4byte gUnknown_02024E68 -_0803105C: .4byte gBattleBankFunc -_08031060: .4byte sub_8031064 - thumb_func_end sub_8030FAC - - thumb_func_start sub_8031064 -sub_8031064: @ 8031064 - push {r4,lr} - ldr r4, _0803109C @ =gActiveBank - ldrb r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r3, _080310A0 @ =0x02017810 - adds r0, r3 - ldrb r1, [r0, 0x5] - adds r2, r1, 0x1 - strb r2, [r0, 0x5] - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0x5C - bls _08031094 - ldrb r0, [r4] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - movs r0, 0 - strb r0, [r1, 0x5] - bl PlayerBufferExecCompleted -_08031094: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0803109C: .4byte gActiveBank -_080310A0: .4byte 0x02017810 - thumb_func_end sub_8031064 - - thumb_func_start sub_80310A4 -sub_80310A4: @ 80310A4 - push {lr} - ldr r0, _080310DC @ =gActiveBank - ldrb r3, [r0] - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - ldr r1, _080310E0 @ =0x02017810 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080310D2 - ldr r2, _080310E4 @ =gTasks - ldr r0, _080310E8 @ =gUnknown_02024E68 - adds r0, r3, r0 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldr r1, _080310EC @ =sub_8044CA0 - str r1, [r0] -_080310D2: - bl PlayerBufferExecCompleted - pop {r0} - bx r0 - .align 2, 0 -_080310DC: .4byte gActiveBank -_080310E0: .4byte 0x02017810 -_080310E4: .4byte gTasks -_080310E8: .4byte gUnknown_02024E68 -_080310EC: .4byte sub_8044CA0 - thumb_func_end sub_80310A4 - - thumb_func_start sub_80310F0 -sub_80310F0: @ 80310F0 - push {r4,lr} - ldr r4, _08031110 @ =gActiveBank - ldrb r0, [r4] - movs r1, 0x1 - bl dp11b_obj_free - ldrb r0, [r4] - movs r1, 0 - bl dp11b_obj_free - bl PlayerBufferExecCompleted - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08031110: .4byte gActiveBank - thumb_func_end sub_80310F0 - - thumb_func_start PlayerHandleSpriteInvisibility -PlayerHandleSpriteInvisibility: @ 8031114 - push {r4,lr} - ldr r4, _08031164 @ =gActiveBank - ldrb r0, [r4] - bl sub_8078874 - lsls r0, 24 - cmp r0, 0 - beq _0803115A - ldr r3, _08031168 @ =gSprites - ldr r0, _0803116C @ =gObjectBankIDs - ldrb r1, [r4] - adds r0, r1, r0 - ldrb r0, [r0] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r3 - ldr r0, _08031170 @ =gBattleBufferA - lsls r1, 9 - adds r0, 0x1 - adds r1, r0 - adds r2, 0x3E - movs r0, 0x1 - ldrb r1, [r1] - ands r1, r0 - lsls r1, 2 - ldrb r3, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] - ldrb r0, [r4] - bl sub_8031F88 -_0803115A: - bl PlayerBufferExecCompleted - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08031164: .4byte gActiveBank -_08031168: .4byte gSprites -_0803116C: .4byte gObjectBankIDs -_08031170: .4byte gBattleBufferA - thumb_func_end PlayerHandleSpriteInvisibility - - thumb_func_start PlayerHandleBattleAnimation -PlayerHandleBattleAnimation: @ 8031174 - push {r4-r6,lr} - sub sp, 0x4 - ldr r6, _080311B8 @ =gActiveBank - ldrb r0, [r6] - bl mplay_80342A4 - lsls r0, 24 - cmp r0, 0 - bne _080311CC - ldr r5, _080311BC @ =gBattleBufferA - 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 _080311C0 - bl PlayerBufferExecCompleted - b _080311CC - .align 2, 0 -_080311B8: .4byte gActiveBank -_080311BC: .4byte gBattleBufferA -_080311C0: - ldr r0, _080311D4 @ =gBattleBankFunc - ldrb r1, [r6] - lsls r1, 2 - adds r1, r0 - ldr r0, _080311D8 @ =sub_802E460 - str r0, [r1] -_080311CC: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080311D4: .4byte gBattleBankFunc -_080311D8: .4byte sub_802E460 - thumb_func_end PlayerHandleBattleAnimation - - thumb_func_start PlayerHandleLinkStandbyMsg -PlayerHandleLinkStandbyMsg: @ 80311DC - push {r4,lr} - ldr r1, _080311FC @ =gBattleBufferA - ldr r0, _08031200 @ =gActiveBank - ldrb r0, [r0] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x1 - beq _0803120E - cmp r0, 0x1 - bgt _08031204 - cmp r0, 0 - beq _0803120A - b _0803122C - .align 2, 0 -_080311FC: .4byte gBattleBufferA -_08031200: .4byte gActiveBank -_08031204: - cmp r0, 0x2 - beq _08031228 - b _0803122C -_0803120A: - bl b_link_standby_message -_0803120E: - ldr r4, _08031224 @ =gActiveBank - ldrb r0, [r4] - movs r1, 0x1 - bl dp11b_obj_free - ldrb r0, [r4] - movs r1, 0 - bl dp11b_obj_free - b _0803122C - .align 2, 0 -_08031224: .4byte gActiveBank -_08031228: - bl b_link_standby_message -_0803122C: - bl PlayerBufferExecCompleted - pop {r4} - pop {r0} - bx r0 - thumb_func_end PlayerHandleLinkStandbyMsg - - thumb_func_start PlayerHandleResetActionMoveSelection -PlayerHandleResetActionMoveSelection: @ 8031238 - push {r4,lr} - ldr r1, _08031258 @ =gBattleBufferA - ldr r4, _0803125C @ =gActiveBank - ldrb r3, [r4] - lsls r0, r3, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r2, [r0] - cmp r2, 0x1 - beq _08031280 - cmp r2, 0x1 - bgt _08031260 - cmp r2, 0 - beq _08031266 - b _08031290 - .align 2, 0 -_08031258: .4byte gBattleBufferA -_0803125C: .4byte gActiveBank -_08031260: - cmp r2, 0x2 - beq _08031288 - b _08031290 -_08031266: - ldr r0, _08031278 @ =gActionSelectionCursor - adds r0, r3, r0 - strb r2, [r0] - ldr r1, _0803127C @ =gMoveSelectionCursor - ldrb r0, [r4] - adds r0, r1 - strb r2, [r0] - b _08031290 - .align 2, 0 -_08031278: .4byte gActionSelectionCursor -_0803127C: .4byte gMoveSelectionCursor -_08031280: - ldr r0, _08031284 @ =gActionSelectionCursor - b _0803128A - .align 2, 0 -_08031284: .4byte gActionSelectionCursor -_08031288: - ldr r0, _0803129C @ =gMoveSelectionCursor -_0803128A: - adds r0, r3, r0 - movs r1, 0 - strb r1, [r0] -_08031290: - bl PlayerBufferExecCompleted - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0803129C: .4byte gMoveSelectionCursor - thumb_func_end PlayerHandleResetActionMoveSelection - - thumb_func_start sub_80312A0 -sub_80312A0: @ 80312A0 - push {r4,lr} - ldr r2, _080312D8 @ =gBattleOutcome - ldr r1, _080312DC @ =gBattleBufferA - ldr r4, _080312E0 @ =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 PlayerBufferExecCompleted - ldr r1, _080312E4 @ =gBattleBankFunc - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _080312E8 @ =sub_802D18C - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080312D8: .4byte gBattleOutcome -_080312DC: .4byte gBattleBufferA -_080312E0: .4byte gActiveBank -_080312E4: .4byte gBattleBankFunc -_080312E8: .4byte sub_802D18C - thumb_func_end sub_80312A0 - - thumb_func_start nullsub_43 -nullsub_43: @ 80312EC - bx lr - thumb_func_end nullsub_43 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_anim_8137220.s b/asm/battle_anim_8137220.s deleted file mode 100644 index bc81a2640..000000000 --- a/asm/battle_anim_8137220.s +++ /dev/null @@ -1,5129 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start unref_sub_8137220 -unref_sub_8137220: @ 8137220 - bx lr - thumb_func_end unref_sub_8137220 - - thumb_func_start SetBankFuncToWallyBufferRunCommand -SetBankFuncToWallyBufferRunCommand: @ 8137224 - ldr r1, _08137250 @ =gBattleBankFunc - ldr r0, _08137254 @ =gActiveBank - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _08137258 @ =WallyBufferRunCommand - str r1, [r0] - ldr r1, _0813725C @ =0x02000000 - ldr r2, _08137260 @ =0x000160a8 - adds r0, r1, r2 - movs r2, 0 - strb r2, [r0] - ldr r3, _08137264 @ =0x000160a9 - adds r0, r1, r3 - strb r2, [r0] - adds r3, 0x1 - adds r0, r1, r3 - strb r2, [r0] - ldr r0, _08137268 @ =0x000160ab - adds r1, r0 - strb r2, [r1] - bx lr - .align 2, 0 -_08137250: .4byte gBattleBankFunc -_08137254: .4byte gActiveBank -_08137258: .4byte WallyBufferRunCommand -_0813725C: .4byte 0x02000000 -_08137260: .4byte 0x000160a8 -_08137264: .4byte 0x000160a9 -_08137268: .4byte 0x000160ab - thumb_func_end SetBankFuncToWallyBufferRunCommand - - thumb_func_start WallyBufferRunCommand -WallyBufferRunCommand: @ 813726C - push {lr} - ldr r2, _081372A0 @ =gBattleExecBuffer - ldr r1, _081372A4 @ =gBitTable - ldr r0, _081372A8 @ =gActiveBank - ldrb r3, [r0] - lsls r0, r3, 2 - adds r0, r1 - ldr r1, [r2] - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _081372B8 - ldr r0, _081372AC @ =gBattleBufferA - lsls r1, r3, 9 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0x38 - bhi _081372B4 - ldr r0, _081372B0 @ =gWallyBufferCommands - ldrb r1, [r1] - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - bl _call_via_r0 - b _081372B8 - .align 2, 0 -_081372A0: .4byte gBattleExecBuffer -_081372A4: .4byte gBitTable -_081372A8: .4byte gActiveBank -_081372AC: .4byte gBattleBufferA -_081372B0: .4byte gWallyBufferCommands -_081372B4: - bl WallyBufferExecCompleted -_081372B8: - pop {r0} - bx r0 - thumb_func_end WallyBufferRunCommand - - thumb_func_start sub_81372BC -sub_81372BC: @ 81372BC - push {r4-r6,lr} - ldr r1, _081372D8 @ =0x02000000 - ldr r2, _081372DC @ =0x000160a8 - adds r0, r1, r2 - ldrb r0, [r0] - adds r5, r1, 0 - cmp r0, 0x5 - bls _081372CE - b _08137410 -_081372CE: - lsls r0, 2 - ldr r1, _081372E0 @ =_081372E4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_081372D8: .4byte 0x02000000 -_081372DC: .4byte 0x000160a8 -_081372E0: .4byte _081372E4 - .align 2, 0 -_081372E4: - .4byte _081372FC - .4byte _0813730E - .4byte _08137344 - .4byte _08137368 - .4byte _081373AC - .4byte _081373E8 -_081372FC: - ldr r0, _0813733C @ =0x000160aa - adds r1, r5, r0 - movs r0, 0x40 - strb r0, [r1] - ldr r2, _08137340 @ =0x000160a8 - adds r1, r5, r2 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0813730E: - ldr r0, _0813733C @ =0x000160aa - adds r6, r5, r0 - ldrb r0, [r6] - subs r0, 0x1 - strb r0, [r6] - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _08137410 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl dp01_build_cmdbuf_x21_a_bb - bl WallyBufferExecCompleted - ldr r2, _08137340 @ =0x000160a8 - adds r1, r5, r2 - b _0813738C - .align 2, 0 -_0813733C: .4byte 0x000160aa -_08137340: .4byte 0x000160a8 -_08137344: - ldr r2, _08137364 @ =0x000160aa - adds r6, r5, r2 - ldrb r0, [r6] - subs r0, 0x1 - strb r0, [r6] - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _08137410 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - movs r1, 0 - b _0813737E - .align 2, 0 -_08137364: .4byte 0x000160aa -_08137368: - ldr r2, _081373A0 @ =0x000160aa - adds r6, r5, r2 - ldrb r0, [r6] - subs r0, 0x1 - strb r0, [r6] - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _08137410 - movs r0, 0x1 - movs r1, 0x9 -_0813737E: - movs r2, 0 - bl dp01_build_cmdbuf_x21_a_bb - bl WallyBufferExecCompleted - ldr r0, _081373A4 @ =0x000160a8 - adds r1, r5, r0 -_0813738C: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r1, _081373A8 @ =0x000160a9 - adds r0, r5, r1 - strb r4, [r0] - movs r0, 0x40 - strb r0, [r6] - b _08137410 - .align 2, 0 -_081373A0: .4byte 0x000160aa -_081373A4: .4byte 0x000160a8 -_081373A8: .4byte 0x000160a9 -_081373AC: - ldr r2, _081373E0 @ =0x000160aa - adds r4, r5, r2 - ldrb r0, [r4] - subs r0, 0x1 - strb r0, [r4] - lsls r0, 24 - cmp r0, 0 - bne _08137410 - movs r0, 0x5 - bl PlaySE - movs r0, 0 - bl nullsub_8 - movs r0, 0x1 - movs r1, 0 - bl sub_802E3E4 - movs r0, 0x40 - strb r0, [r4] - ldr r0, _081373E4 @ =0x000160a8 - adds r1, r5, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08137410 - .align 2, 0 -_081373E0: .4byte 0x000160aa -_081373E4: .4byte 0x000160a8 -_081373E8: - ldr r2, _08137418 @ =0x000160aa - adds r1, r5, r2 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - bne _08137410 - movs r0, 0x5 - bl PlaySE - bl DestroyMenuCursor - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0 - bl dp01_build_cmdbuf_x21_a_bb - bl WallyBufferExecCompleted -_08137410: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08137418: .4byte 0x000160aa - thumb_func_end sub_81372BC - - thumb_func_start sub_813741C -sub_813741C: @ 813741C - push {lr} - ldr r2, _08137444 @ =gSprites - ldr r1, _08137448 @ =gObjectBankIDs - ldr r0, _0813744C @ =gActiveBank - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _08137450 @ =SpriteCallbackDummy - cmp r1, r0 - bne _08137440 - bl WallyBufferExecCompleted -_08137440: - pop {r0} - bx r0 - .align 2, 0 -_08137444: .4byte gSprites -_08137448: .4byte gObjectBankIDs -_0813744C: .4byte gActiveBank -_08137450: .4byte SpriteCallbackDummy - thumb_func_end sub_813741C - - thumb_func_start sub_8137454 -sub_8137454: @ 8137454 - push {lr} - ldr r0, _08137468 @ =gUnknown_03004210 - ldrh r0, [r0, 0x16] - cmp r0, 0 - bne _08137462 - bl WallyBufferExecCompleted -_08137462: - pop {r0} - bx r0 - .align 2, 0 -_08137468: .4byte gUnknown_03004210 - thumb_func_end sub_8137454 - - thumb_func_start sub_813746C -sub_813746C: @ 813746C - push {lr} - ldr r0, _0813749C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08137496 - ldr r2, _081374A0 @ =gMain - ldr r0, _081374A4 @ =0x0000043d - adds r3, r2, r0 - ldrb r1, [r3] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r3] - ldr r0, _081374A8 @ =gPreBattleCallback1 - ldr r0, [r0] - str r0, [r2] - ldr r0, [r2, 0x8] - bl SetMainCallback2 -_08137496: - pop {r0} - bx r0 - .align 2, 0 -_0813749C: .4byte gPaletteFade -_081374A0: .4byte gMain -_081374A4: .4byte 0x0000043d -_081374A8: .4byte gPreBattleCallback1 - thumb_func_end sub_813746C - - thumb_func_start bx_wait_t5 -bx_wait_t5: @ 81374AC - push {lr} - ldr r0, _081374C0 @ =gDoingBattleAnim - ldrb r0, [r0] - cmp r0, 0 - bne _081374BA - bl WallyBufferExecCompleted -_081374BA: - pop {r0} - bx r0 - .align 2, 0 -_081374C0: .4byte gDoingBattleAnim - thumb_func_end bx_wait_t5 - - thumb_func_start sub_81374C4 -sub_81374C4: @ 81374C4 - push {lr} - ldr r0, _081374EC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _081374E8 - ldr r1, _081374F0 @ =gBattleBankFunc - ldr r0, _081374F4 @ =gActiveBank - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _081374F8 @ =sub_81374FC - str r1, [r0] - bl nullsub_14 - bl PrepareBagForWallyTutorial -_081374E8: - pop {r0} - bx r0 - .align 2, 0 -_081374EC: .4byte gPaletteFade -_081374F0: .4byte gBattleBankFunc -_081374F4: .4byte gActiveBank -_081374F8: .4byte sub_81374FC - thumb_func_end sub_81374C4 - - thumb_func_start sub_81374FC -sub_81374FC: @ 81374FC - push {lr} - ldr r0, _08137528 @ =gMain - ldr r1, [r0, 0x4] - ldr r0, _0813752C @ =sub_800F808 - cmp r1, r0 - bne _08137522 - ldr r0, _08137530 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08137522 - ldr r0, _08137534 @ =gScriptItemId - ldrh r1, [r0] - movs r0, 0x1 - bl dp01_build_cmdbuf_x23_aa_0 - bl WallyBufferExecCompleted -_08137522: - pop {r0} - bx r0 - .align 2, 0 -_08137528: .4byte gMain -_0813752C: .4byte sub_800F808 -_08137530: .4byte gPaletteFade -_08137534: .4byte gScriptItemId - thumb_func_end sub_81374FC - - thumb_func_start sub_8137538 -sub_8137538: @ 8137538 - push {r4-r7,lr} - ldr r5, _0813768C @ =gActiveBank - ldrb r2, [r5] - lsls r3, r2, 1 - adds r0, r3, r2 - lsls r0, 2 - ldr r4, _08137690 @ =0x02017810 - adds r0, r4 - ldrb r1, [r0] - movs r7, 0x88 - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - bne _08137568 - ldr r0, _08137694 @ =gBattlePartyID - adds r0, r3, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08137698 @ =gPlayerParty - adds r1, r0 - adds r0, r2, 0 - bl sub_8141828 -_08137568: - ldrb r0, [r5] - movs r6, 0x2 - adds r2, r6, 0 - eors r2, r0 - lsls r3, r2, 1 - adds r0, r3, r2 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0] - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - bne _08137596 - ldr r0, _08137694 @ =gBattlePartyID - adds r0, r3, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08137698 @ =gPlayerParty - adds r1, r0 - adds r0, r2, 0 - bl sub_8141828 -_08137596: - ldrb r2, [r5] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0] - movs r3, 0x8 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _08137684 - adds r1, r6, 0 - eors r1, r2 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _08137684 - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _08137626 - ldr r0, _0813769C @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _08137626 - ldr r1, _081376A0 @ =gUnknown_0300434C - ldrb r0, [r5] - eors r0, r6 - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _081376A4 @ =gSprites - adds r0, r1 - bl DestroySprite - ldr r4, _081376A8 @ =gHealthboxIDs - ldrb r0, [r5] - adds r1, r6, 0 - eors r1, r0 - adds r0, r1, r4 - ldrb r0, [r0] - ldr r2, _08137694 @ =gBattlePartyID - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _08137698 @ =gPlayerParty - adds r1, r2 - movs r2, 0 - bl sub_8045A5C - ldrb r0, [r5] - eors r0, r6 - bl sub_804777C - ldrb r0, [r5] - eors r0, r6 - adds r0, r4 - ldrb r0, [r0] - bl sub_8043DFC -_08137626: - ldr r1, _081376A0 @ =gUnknown_0300434C - ldr r4, _0813768C @ =gActiveBank - ldrb r0, [r4] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _081376A4 @ =gSprites - adds r0, r1 - bl DestroySprite - ldr r5, _081376A8 @ =gHealthboxIDs - ldrb r1, [r4] - adds r0, r1, r5 - ldrb r0, [r0] - ldr r2, _08137694 @ =gBattlePartyID - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _08137698 @ =gPlayerParty - adds r1, r2 - movs r2, 0 - bl sub_8045A5C - ldrb r0, [r4] - bl sub_804777C - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - bl sub_8043DFC - ldr r2, _081376AC @ =0x02017840 - ldrb r1, [r2, 0x9] - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x9] - ldr r1, _081376B0 @ =gBattleBankFunc - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _081376B4 @ =sub_81376B8 - str r1, [r0] -_08137684: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0813768C: .4byte gActiveBank -_08137690: .4byte 0x02017810 -_08137694: .4byte gBattlePartyID -_08137698: .4byte gPlayerParty -_0813769C: .4byte gBattleTypeFlags -_081376A0: .4byte gUnknown_0300434C -_081376A4: .4byte gSprites -_081376A8: .4byte gHealthboxIDs -_081376AC: .4byte 0x02017840 -_081376B0: .4byte gBattleBankFunc -_081376B4: .4byte sub_81376B8 - thumb_func_end sub_8137538 - - thumb_func_start sub_81376B8 -sub_81376B8: @ 81376B8 - push {r4-r7,lr} - movs r4, 0 - ldr r2, _0813778C @ =gSprites - ldr r0, _08137790 @ =gHealthboxIDs - ldr r7, _08137794 @ =gActiveBank - ldrb r3, [r7] - adds r0, r3, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _08137798 @ =SpriteCallbackDummy - cmp r1, r0 - bne _081376DC - movs r4, 0x1 -_081376DC: - cmp r4, 0 - beq _08137784 - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - ldr r5, _0813779C @ =0x02017810 - adds r2, r0, r5 - ldrb r1, [r2, 0x1] - movs r4, 0x1 - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - beq _08137784 - movs r6, 0x2 - adds r1, r6, 0 - eors r1, r3 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r1, [r0, 0x1] - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - beq _08137784 - ldrb r1, [r2] - movs r3, 0x7F - adds r0, r3, 0 - ands r0, r1 - strb r0, [r2] - ldrb r0, [r7] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - ldrb r2, [r1, 0x1] - subs r4, 0x3 - adds r0, r4, 0 - ands r0, r2 - strb r0, [r1, 0x1] - ldrb r0, [r7] - adds r1, r6, 0 - eors r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r1, [r0] - ands r3, r1 - strb r3, [r0] - ldrb r0, [r7] - adds r1, r6, 0 - eors r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r1, [r0, 0x1] - ands r4, r1 - strb r4, [r0, 0x1] - ldr r4, _081377A0 @ =0x000027f9 - adds r0, r4, 0 - bl FreeSpriteTilesByTag - adds r0, r4, 0 - bl FreeSpritePaletteByTag - ldr r0, _081377A4 @ =c3_0802FDF4 - movs r1, 0xA - bl CreateTask - ldr r2, _081377A8 @ =gBattlePartyID - ldrb r1, [r7] - lsls r0, r1, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _081377AC @ =gPlayerParty - adds r0, r2 - bl sub_80324F8 - bl WallyBufferExecCompleted -_08137784: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0813778C: .4byte gSprites -_08137790: .4byte gHealthboxIDs -_08137794: .4byte gActiveBank -_08137798: .4byte SpriteCallbackDummy -_0813779C: .4byte 0x02017810 -_081377A0: .4byte 0x000027f9 -_081377A4: .4byte c3_0802FDF4 -_081377A8: .4byte gBattlePartyID -_081377AC: .4byte gPlayerParty - thumb_func_end sub_81376B8 - - thumb_func_start sub_81377B0 -sub_81377B0: @ 81377B0 - push {r4-r6,lr} - ldr r5, _081377F0 @ =gActiveBank - ldrb r0, [r5] - ldr r6, _081377F4 @ =gHealthboxIDs - adds r1, r0, r6 - ldrb r1, [r1] - movs r2, 0 - movs r3, 0 - bl sub_8045C78 - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldrb r0, [r5] - adds r0, r6 - ldrb r0, [r0] - bl sub_8043DFC - lsls r4, 16 - asrs r1, r4, 16 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _081377F8 - ldrb r0, [r5] - adds r0, r6 - ldrb r0, [r0] - movs r2, 0 - bl sub_80440EC - b _08137812 - .align 2, 0 -_081377F0: .4byte gActiveBank -_081377F4: .4byte gHealthboxIDs -_081377F8: - ldr r2, _08137818 @ =gBattlePartyID - ldrb r1, [r5] - lsls r0, r1, 1 - adds r0, r2 - ldrh r2, [r0] - movs r0, 0x64 - muls r0, r2 - ldr r2, _0813781C @ =gPlayerParty - adds r0, r2 - bl sub_80324F8 - bl WallyBufferExecCompleted -_08137812: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08137818: .4byte gBattlePartyID -_0813781C: .4byte gPlayerParty - thumb_func_end sub_81377B0 - - thumb_func_start bx_blink_t5 -bx_blink_t5: @ 8137820 - push {r4,lr} - ldr r1, _0813785C @ =gObjectBankIDs - ldr r0, _08137860 @ =gActiveBank - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - ldr r2, _08137864 @ =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, r0, r2 - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0x20 - bne _0813786C - movs r3, 0 - movs r0, 0 - strh r0, [r4, 0x30] - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - subs r0, 0x5 - ands r0, r1 - strb r0, [r2] - ldr r0, _08137868 @ =gDoingBattleAnim - strb r3, [r0] - bl WallyBufferExecCompleted - b _08137896 - .align 2, 0 -_0813785C: .4byte gObjectBankIDs -_08137860: .4byte gActiveBank -_08137864: .4byte gSprites -_08137868: .4byte gDoingBattleAnim -_0813786C: - ldrh r0, [r4, 0x30] - movs r1, 0x3 - ands r0, r1 - cmp r0, 0 - bne _08137890 - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_08137890: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] -_08137896: - pop {r4} - pop {r0} - bx r0 - thumb_func_end bx_blink_t5 - - thumb_func_start sub_813789C -sub_813789C: @ 813789C - push {r4-r6,lr} - ldr r6, _081378F4 @ =gActiveBank - ldrb r2, [r6] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - ldr r1, _081378F8 @ =0x02017810 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _081378EC - ldr r5, _081378FC @ =gObjectBankIDs - adds r0, r2, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _08137900 @ =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, _08137904 @ =gHealthboxIDs - ldrb r0, [r6] - adds r0, r1 - ldrb r0, [r0] - bl sub_8043DB0 - bl WallyBufferExecCompleted -_081378EC: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_081378F4: .4byte gActiveBank -_081378F8: .4byte 0x02017810 -_081378FC: .4byte gObjectBankIDs -_08137900: .4byte gSprites -_08137904: .4byte gHealthboxIDs - thumb_func_end sub_813789C - - thumb_func_start sub_8137908 -sub_8137908: @ 8137908 - push {lr} - ldr r2, _08137930 @ =gSprites - ldr r1, _08137934 @ =gObjectBankIDs - ldr r0, _08137938 @ =gActiveBank - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _0813793C @ =SpriteCallbackDummy - cmp r1, r0 - bne _0813792C - bl WallyBufferExecCompleted -_0813792C: - pop {r0} - bx r0 - .align 2, 0 -_08137930: .4byte gSprites -_08137934: .4byte gObjectBankIDs -_08137938: .4byte gActiveBank -_0813793C: .4byte SpriteCallbackDummy - thumb_func_end sub_8137908 - - thumb_func_start sub_8137940 -sub_8137940: @ 8137940 - push {lr} - ldr r0, _08137964 @ =gActiveBank - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _08137968 @ =0x02017810 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _0813795E - bl WallyBufferExecCompleted -_0813795E: - pop {r0} - bx r0 - .align 2, 0 -_08137964: .4byte gActiveBank -_08137968: .4byte 0x02017810 - thumb_func_end sub_8137940 - - thumb_func_start WallyBufferExecCompleted -WallyBufferExecCompleted: @ 813796C - push {r4,lr} - sub sp, 0x4 - ldr r1, _081379AC @ =gBattleBankFunc - ldr r4, _081379B0 @ =gActiveBank - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _081379B4 @ =WallyBufferRunCommand - str r1, [r0] - ldr r0, _081379B8 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _081379C0 - bl GetMultiplayerId - mov r1, sp - strb r0, [r1] - movs r0, 0x2 - movs r1, 0x4 - mov r2, sp - bl dp01_prepare_buffer_wireless_probably - ldr r1, _081379BC @ =gBattleBufferA - ldrb r0, [r4] - lsls r0, 9 - adds r0, r1 - movs r1, 0x38 - strb r1, [r0] - b _081379D2 - .align 2, 0 -_081379AC: .4byte gBattleBankFunc -_081379B0: .4byte gActiveBank -_081379B4: .4byte WallyBufferRunCommand -_081379B8: .4byte gBattleTypeFlags -_081379BC: .4byte gBattleBufferA -_081379C0: - ldr r2, _081379DC @ =gBattleExecBuffer - ldr r1, _081379E0 @ =gBitTable - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - ldr r0, [r2] - bics r0, r1 - str r0, [r2] -_081379D2: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081379DC: .4byte gBattleExecBuffer -_081379E0: .4byte gBitTable - thumb_func_end WallyBufferExecCompleted - - thumb_func_start unref_sub_81379E4 -unref_sub_81379E4: @ 81379E4 - push {lr} - ldr r0, _08137A08 @ =gActiveBank - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _08137A0C @ =0x02017810 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _08137A02 - bl WallyBufferExecCompleted -_08137A02: - pop {r0} - bx r0 - .align 2, 0 -_08137A08: .4byte gActiveBank -_08137A0C: .4byte 0x02017810 - thumb_func_end unref_sub_81379E4 - - 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 -.ifdef ENGLISH - movs r2, 0xDC -.else - movs r2, 0xDE -.endif - 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/asm/battle_message.s b/asm/battle_message.s index 414213737..badbf2b7d 100644 --- a/asm/battle_message.s +++ b/asm/battle_message.s @@ -16,7 +16,7 @@ BufferStringBattle: @ 8120AA8 lsls r0, 16 lsrs r7, r0, 16 movs r6, 0 - ldr r5, _08120B70 @ =gBufferedMoves + ldr r5, _08120B70 @ =gSelectedOrderFromParty ldr r4, _08120B74 @ =gActiveBank ldrb r1, [r4] lsls r1, 9 @@ -73,7 +73,7 @@ _08120B10: movs r2, 0 ldr r0, _08120B9C @ =gBattleTextBuff1 mov r8, r0 - ldr r3, _08120B70 @ =gBufferedMoves + ldr r3, _08120B70 @ =gSelectedOrderFromParty ldr r1, _08120BA4 @ =gBattleTextBuff2 mov r12, r1 ldr r5, _08120BA8 @ =gBattleTextBuff3 @@ -111,7 +111,7 @@ _08120B64: ldr r0, [r0] mov pc, r0 .align 2, 0 -_08120B70: .4byte gBufferedMoves +_08120B70: .4byte gSelectedOrderFromParty _08120B74: .4byte gActiveBank _08120B78: .4byte gUnknown_02023A64 _08120B7C: .4byte gLastUsedItem @@ -414,7 +414,7 @@ _08120DE4: .4byte gUnknown_08400622 _08120DE8: mov r0, r10 bl sub_8121D1C - ldr r0, _08120E14 @ =gBufferedMoves + ldr r0, _08120E14 @ =gSelectedOrderFromParty ldr r2, [r0] ldrh r1, [r2] movs r0, 0xB1 @@ -433,7 +433,7 @@ _08120DE8: bl StringCopy b _08120E38 .align 2, 0 -_08120E14: .4byte gBufferedMoves +_08120E14: .4byte gSelectedOrderFromParty _08120E18: .4byte gBattleTextBuff2 _08120E1C: .4byte gUnknown_08401674 _08120E20: .4byte 0x02000000 @@ -1368,7 +1368,7 @@ _081215E8: .align 2, 0 _081215F4: .4byte gBattlePartyID _081215F8: - ldr r0, _08121610 @ =gBufferedMoves + ldr r0, _08121610 @ =gSelectedOrderFromParty ldr r2, [r0] ldrh r1, [r2] movs r0, 0xB1 @@ -1380,14 +1380,14 @@ _081215F8: adds r0, r2 b _08121634 .align 2, 0 -_08121610: .4byte gBufferedMoves +_08121610: .4byte gSelectedOrderFromParty _08121614: .4byte 0x02000000 _08121618: .4byte 0x000160a0 _0812161C: ldrh r1, [r2] b _08121652 _08121620: - ldr r0, _08121640 @ =gBufferedMoves + ldr r0, _08121640 @ =gSelectedOrderFromParty ldr r2, [r0] ldrh r1, [r2, 0x2] movs r0, 0xB1 @@ -1404,7 +1404,7 @@ _08121634: adds r4, r0, r1 b _081219E6 .align 2, 0 -_08121640: .4byte gBufferedMoves +_08121640: .4byte gSelectedOrderFromParty _08121644: .4byte 0x02000000 _08121648: .4byte 0x000160a0 _0812164C: .4byte gUnknown_08401674 @@ -2274,7 +2274,7 @@ sub_8121D1C: @ 8121D1C push {r4,r5,lr} adds r4, r0, 0 movs r2, 0 - ldr r5, _08121D50 @ =gBufferedMoves + ldr r5, _08121D50 @ =gSelectedOrderFromParty ldr r3, _08121D54 @ =gUnknown_084016BC _08121D26: cmp r2, 0x4 @@ -2299,7 +2299,7 @@ _08121D3C: bl StringCopy b _08121D68 .align 2, 0 -_08121D50: .4byte gBufferedMoves +_08121D50: .4byte gSelectedOrderFromParty _08121D54: .4byte gUnknown_084016BC _08121D58: .4byte gUnknown_08400E5E _08121D5C: @@ -2329,7 +2329,7 @@ _08121D7E: cmp r0, 0xFF bne _08121D7C ldr r1, _08121DB4 @ =gUnknown_084016BC - ldr r5, _08121DB8 @ =gBufferedMoves + ldr r5, _08121DB8 @ =gSelectedOrderFromParty movs r0, 0 lsls r0, 1 adds r2, r0, r1 @@ -2356,7 +2356,7 @@ _08121DA8: mov pc, r0 .align 2, 0 _08121DB4: .4byte gUnknown_084016BC -_08121DB8: .4byte gBufferedMoves +_08121DB8: .4byte gSelectedOrderFromParty _08121DBC: .4byte _08121DC0 .align 2, 0 _08121DC0: diff --git a/asm/battle_tower.s b/asm/battle_tower.s index 919544c48..15cb95854 100644 --- a/asm/battle_tower.s +++ b/asm/battle_tower.s @@ -2324,7 +2324,7 @@ _08135750: .4byte 0x00000564 _08135754: movs r2, 0 ldr r4, _0813576C @ =gSaveBlock2 + 0x565 - ldr r3, _08135770 @ =gBufferedMoves + ldr r3, _08135770 @ =gSelectedOrderFromParty _0813575A: adds r0, r2, r4 adds r1, r2, r3 @@ -2336,7 +2336,7 @@ _0813575A: b _0813589A .align 2, 0 _0813576C: .4byte gSaveBlock2 + 0x565 -_08135770: .4byte gBufferedMoves +_08135770: .4byte gSelectedOrderFromParty _08135774: ldr r3, _081357C0 @ =0x00000564 adds r0, r5, r3 @@ -2665,7 +2665,7 @@ _08135A10: .4byte 0x00000554 sub_8135A14: @ 8135A14 push {r4,lr} movs r2, 0 - ldr r4, _08135A34 @ =gBufferedMoves + ldr r4, _08135A34 @ =gSelectedOrderFromParty ldr r3, _08135A38 @ =gSaveBlock2 + 0x565 _08135A1C: adds r0, r2, r4 @@ -2680,7 +2680,7 @@ _08135A1C: pop {r0} bx r0 .align 2, 0 -_08135A34: .4byte gBufferedMoves +_08135A34: .4byte gSelectedOrderFromParty _08135A38: .4byte gSaveBlock2 + 0x565 thumb_func_end sub_8135A14 diff --git a/asm/choose_party.s b/asm/choose_party.s deleted file mode 100644 index efa50dcf5..000000000 --- a/asm/choose_party.s +++ /dev/null @@ -1,2509 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_8121E10 -sub_8121E10: @ 8121E10 - push {lr} - bl sub_8121E58 - ldr r0, _08121E2C @ =0x0201b000 - ldr r1, _08121E30 @ =0x00000263 - adds r0, r1 - movs r1, 0 - strb r1, [r0] - movs r0, 0x4 - bl OpenPartyMenu - pop {r0} - bx r0 - .align 2, 0 -_08121E2C: .4byte 0x0201b000 -_08121E30: .4byte 0x00000263 - thumb_func_end sub_8121E10 - - thumb_func_start sub_8121E34 -sub_8121E34: @ 8121E34 - push {lr} - bl sub_8121E58 - ldr r0, _08121E50 @ =0x0201b000 - ldr r1, _08121E54 @ =0x00000263 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - movs r0, 0x4 - movs r1, 0 - bl OpenPartyMenu - pop {r0} - bx r0 - .align 2, 0 -_08121E50: .4byte 0x0201b000 -_08121E54: .4byte 0x00000263 - thumb_func_end sub_8121E34 - - thumb_func_start sub_8121E58 -sub_8121E58: @ 8121E58 - push {lr} - movs r1, 0 - ldr r3, _08121E74 @ =gBufferedMoves - movs r2, 0 -_08121E60: - adds r0, r1, r3 - strb r2, [r0] - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x2 - bls _08121E60 - pop {r0} - bx r0 - .align 2, 0 -_08121E74: .4byte gBufferedMoves - thumb_func_end sub_8121E58 - - thumb_func_start sub_8121E78 -sub_8121E78: @ 8121E78 - push {r4-r6,lr} - ldr r1, _08121E98 @ =0x0201b000 - movs r2, 0x99 - lsls r2, 2 - adds r0, r1, r2 - movs r2, 0 - ldrsh r0, [r0, r2] - adds r4, r1, 0 - cmp r0, 0x7 - bls _08121E8E - b _08122026 -_08121E8E: - lsls r0, 2 - ldr r1, _08121E9C @ =_08121EA0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08121E98: .4byte 0x0201b000 -_08121E9C: .4byte _08121EA0 - .align 2, 0 -_08121EA0: - .4byte _08121EC0 - .4byte _08121F00 - .4byte _08121F14 - .4byte _08121F28 - .4byte _08121F54 - .4byte _08121F68 - .4byte _08121F6E - .4byte _08121FF8 -_08121EC0: - ldr r0, _08121EE8 @ =0x00000266 - adds r5, r4, r0 - movs r1, 0 - ldrsh r3, [r5, r1] - ldr r0, _08121EEC @ =gPlayerPartyCount - ldrb r0, [r0] - cmp r3, r0 - bge _08121EF4 - movs r2, 0x98 - lsls r2, 2 - adds r0, r4, r2 - ldrb r0, [r0] - ldrb r1, [r5] - movs r2, 0x64 - muls r2, r3 - ldr r3, _08121EF0 @ =gPlayerParty - adds r2, r3 - bl TryCreatePartyMenuMonIcon - b _08122020 - .align 2, 0 -_08121EE8: .4byte 0x00000266 -_08121EEC: .4byte gPlayerPartyCount -_08121EF0: .4byte gPlayerParty -_08121EF4: - movs r0, 0 - strh r0, [r5] - movs r0, 0x99 - lsls r0, 2 - adds r1, r4, r0 - b _08121FE8 -_08121F00: - bl LoadHeldItemIconGraphics - ldr r1, _08121F10 @ =0x0201b000 - movs r2, 0x99 - lsls r2, 2 - adds r1, r2 - b _08121FE8 - .align 2, 0 -_08121F10: .4byte 0x0201b000 -_08121F14: - movs r1, 0x98 - lsls r1, 2 - adds r0, r4, r1 - ldrb r0, [r0] - bl CreateHeldItemIcons_806DC34 - movs r2, 0x99 - lsls r2, 2 - adds r1, r4, r2 - b _08121FE8 -_08121F28: - movs r1, 0x98 - lsls r1, 2 - adds r0, r4, r1 - ldrb r0, [r0] - ldr r2, _08121F50 @ =0x00000266 - adds r5, r4, r2 - ldrb r1, [r5] - bl sub_806BD58 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08122020 - movs r0, 0 - strh r0, [r5] - movs r0, 0x99 - lsls r0, 2 - adds r1, r4, r0 - b _08121FE8 - .align 2, 0 -_08121F50: .4byte 0x00000266 -_08121F54: - bl PartyMenuPrintMonsLevelOrStatus - ldr r1, _08121F64 @ =0x0201b000 - movs r2, 0x99 - lsls r2, 2 - adds r1, r2 - b _08121FE8 - .align 2, 0 -_08121F64: .4byte 0x0201b000 -_08121F68: - bl PrintPartyMenuMonNicknames - b _08121FE0 -_08121F6E: - movs r5, 0 - b _08121FD8 -_08121F72: - movs r4, 0 - adds r6, r5, 0x1 - b _08121F7E -_08121F78: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_08121F7E: - cmp r4, 0x2 - bhi _08121FA0 - ldr r0, _08121FC4 @ =gBufferedMoves - adds r0, r4, r0 - ldrb r0, [r0] - cmp r0, r6 - bne _08121F78 - lsls r1, r4, 3 - subs r1, r4 - lsls r1, 25 - movs r2, 0xE0 - lsls r2, 21 - adds r1, r2 - lsrs r1, 24 - adds r0, r5, 0 - bl sub_806BC3C -_08121FA0: - cmp r4, 0x3 - bne _08121FD4 - movs r0, 0x64 - muls r0, r5 - ldr r1, _08121FC8 @ =gPlayerParty - adds r0, r1 - bl sub_8122030 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08121FCC - adds r0, r5, 0 - movs r1, 0x70 - bl sub_806BC3C - b _08121FD4 - .align 2, 0 -_08121FC4: .4byte gBufferedMoves -_08121FC8: .4byte gPlayerParty -_08121FCC: - adds r0, r5, 0 - movs r1, 0x7E - bl sub_806BC3C -_08121FD4: - lsls r0, r6, 24 - lsrs r5, r0, 24 -_08121FD8: - ldr r0, _08121FF0 @ =gPlayerPartyCount - ldrb r0, [r0] - cmp r5, r0 - bcc _08121F72 -_08121FE0: - ldr r1, _08121FF4 @ =0x0201b000 - movs r0, 0x99 - lsls r0, 2 - adds r1, r0 -_08121FE8: - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _08122026 - .align 2, 0 -_08121FF0: .4byte gPlayerPartyCount -_08121FF4: .4byte 0x0201b000 -_08121FF8: - ldr r1, _0812201C @ =0x00000266 - adds r5, r4, r1 - ldrb r0, [r5] - bl sub_806B58C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08122020 - movs r1, 0 - strh r1, [r5] - movs r2, 0x99 - lsls r2, 2 - adds r0, r4, r2 - strh r1, [r0] - movs r0, 0x1 - b _08122028 - .align 2, 0 -_0812201C: .4byte 0x00000266 -_08122020: - ldrh r0, [r5] - adds r0, 0x1 - strh r0, [r5] -_08122026: - movs r0, 0 -_08122028: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8121E78 - - thumb_func_start sub_8122030 -sub_8122030: @ 8122030 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _0812207C - ldr r0, _08122058 @ =0x0201b000 - ldr r1, _0812205C @ =0x00000263 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _08122060 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _0812207C - b _081220B6 - .align 2, 0 -_08122058: .4byte 0x0201b000 -_0812205C: .4byte 0x00000263 -_08122060: - ldr r0, _08122080 @ =gSaveBlock2 - ldr r1, _08122084 @ =0x00000554 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08122088 - adds r0, r4, 0 - movs r1, 0x38 - bl GetMonData - cmp r0, 0x32 - bls _08122088 -_0812207C: - movs r0, 0 - b _081220B8 - .align 2, 0 -_08122080: .4byte gSaveBlock2 -_08122084: .4byte 0x00000554 -_08122088: - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r3, r0, 16 - ldr r1, _081220C0 @ =gBattleTowerBanlist - movs r0, 0 - lsls r0, 1 - adds r2, r0, r1 - ldrh r0, [r2] - ldr r1, _081220C4 @ =0x0000ffff - cmp r0, r1 - beq _081220B6 - adds r4, r1, 0 - adds r1, r2, 0 -_081220A8: - ldrh r0, [r1] - cmp r0, r3 - beq _0812207C - adds r1, 0x2 - ldrh r0, [r1] - cmp r0, r4 - bne _081220A8 -_081220B6: - movs r0, 0x1 -_081220B8: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_081220C0: .4byte gBattleTowerBanlist -_081220C4: .4byte 0x0000ffff - thumb_func_end sub_8122030 - - thumb_func_start sub_81220C8 -sub_81220C8: @ 81220C8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r1, _081220EC @ =0x0201b000 - ldr r2, _081220F0 @ =0x00000263 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _081221A2 - ldr r0, _081220F4 @ =gBufferedMoves - ldrb r0, [r0, 0x2] - cmp r0, 0 - bne _08122100 - movs r0, 0x11 - b _081221A4 - .align 2, 0 -_081220EC: .4byte 0x0201b000 -_081220F0: .4byte 0x00000263 -_081220F4: .4byte gBufferedMoves -_081220F8: - movs r0, 0x12 - b _081221A4 -_081220FC: - movs r0, 0x13 - b _081221A4 -_08122100: - movs r5, 0 -_08122102: - ldr r4, _081221B4 @ =gBufferedMoves - adds r4, r5, r4 - ldrb r0, [r4] - movs r1, 0x64 - muls r0, r1 - ldr r2, _081221B8 @ =gUnknown_030042FC - adds r0, r2 - movs r1, 0xB - bl GetMonData - ldr r1, _081221BC @ =0x0201b000 - ldr r2, _081221C0 @ =0x00000282 - adds r6, r1, r2 - strh r0, [r6] - ldrb r0, [r4] - movs r1, 0x64 - muls r0, r1 - ldr r2, _081221B8 @ =gUnknown_030042FC - adds r0, r2 - movs r1, 0xC - bl GetMonData - ldr r1, _081221C4 @ =0x0201b280 - strh r0, [r1] - adds r1, r5, 0x1 - lsls r0, r1, 24 - lsrs r5, r0, 24 - mov r10, r1 - cmp r5, 0x2 - bhi _08122198 - ldr r2, _081221C8 @ =0xfffffd7e - adds r2, r6 - mov r9, r2 - movs r0, 0x64 - mov r8, r0 - ldr r7, _081221B8 @ =gUnknown_030042FC -_0812214A: - ldr r0, _081221C0 @ =0x00000282 - add r0, r9 - movs r1, 0 - ldrsh r4, [r0, r1] - ldr r0, _081221B4 @ =gBufferedMoves - adds r6, r5, r0 - ldrb r0, [r6] - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - adds r0, r7 - movs r1, 0xB - bl GetMonData - cmp r4, r0 - beq _081220F8 - movs r1, 0xA0 - lsls r1, 2 - add r1, r9 - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0 - beq _0812218E - adds r4, r0, 0 - ldrb r0, [r6] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r7 - movs r1, 0xC - bl GetMonData - cmp r4, r0 - beq _081220FC -_0812218E: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x2 - bls _0812214A -_08122198: - mov r2, r10 - lsls r0, r2, 24 - lsrs r5, r0, 24 - cmp r5, 0x1 - bls _08122102 -_081221A2: - movs r0, 0xFF -_081221A4: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_081221B4: .4byte gBufferedMoves -_081221B8: .4byte gUnknown_030042FC -_081221BC: .4byte 0x0201b000 -_081221C0: .4byte 0x00000282 -_081221C4: .4byte 0x0201b280 -_081221C8: .4byte 0xfffffd7e - thumb_func_end sub_81220C8 - - thumb_func_start sub_81221CC -sub_81221CC: @ 81221CC - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - movs r1, 0 - ldr r3, _081221E4 @ =gBufferedMoves -_081221D6: - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, r2 - bne _081221E8 - movs r0, 0x1 - b _081221F4 - .align 2, 0 -_081221E4: .4byte gBufferedMoves -_081221E8: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x2 - bls _081221D6 - movs r0, 0 -_081221F4: - pop {r1} - bx r1 - thumb_func_end sub_81221CC - - thumb_func_start sub_81221F8 -sub_81221F8: @ 81221F8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0x5 - movs r1, 0x1 - bl sub_806D538 - ldr r5, _08122248 @ =gLastFieldPokeMenuOpened - ldrb r1, [r5] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0812224C @ =gPlayerParty - adds r0, r1 - bl sub_8122030 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08122284 - ldrb r0, [r5] - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - bl sub_81221CC - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x1 - bne _0812225C - ldr r1, _08122250 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - strh r2, [r0, 0x10] - ldr r1, _08122254 @ =gUnknown_084017D8 - ldr r2, _08122258 @ =gUnknown_084017B0 - movs r0, 0x1 - b _08122270 - .align 2, 0 -_08122248: .4byte gLastFieldPokeMenuOpened -_0812224C: .4byte gPlayerParty -_08122250: .4byte gTasks -_08122254: .4byte gUnknown_084017D8 -_08122258: .4byte gUnknown_084017B0 -_0812225C: - ldr r1, _08122278 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x10] - ldr r1, _0812227C @ =gUnknown_084017D8 - ldr r2, _08122280 @ =gUnknown_084017B0 - movs r0, 0 -_08122270: - movs r3, 0 - bl sub_806E750 - b _0812229E - .align 2, 0 -_08122278: .4byte gTasks -_0812227C: .4byte gUnknown_084017D8 -_08122280: .4byte gUnknown_084017B0 -_08122284: - ldr r1, _081222A4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0x2 - strh r1, [r0, 0x10] - ldr r1, _081222A8 @ =gUnknown_084017D8 - ldr r2, _081222AC @ =gUnknown_084017B0 - movs r0, 0x2 - movs r3, 0 - bl sub_806E750 -_0812229E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_081222A4: .4byte gTasks -_081222A8: .4byte gUnknown_084017D8 -_081222AC: .4byte gUnknown_084017B0 - thumb_func_end sub_81221F8 - - thumb_func_start sub_81222B0 -sub_81222B0: @ 81222B0 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _081222DC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _0812237C - adds r0, r4, 0 - bl sub_806BE38 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - beq _081222E0 - cmp r0, 0x2 - beq _08122354 - b _0812237C - .align 2, 0 -_081222DC: .4byte gPaletteFade -_081222E0: - movs r0, 0x5 - bl PlaySE - adds r0, r4, 0 - bl sub_806CA38 - ldr r1, _08122320 @ =gLastFieldPokeMenuOpened - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x6 - beq _08122334 - ldrb r1, [r1] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08122324 @ =gPlayerParty - adds r0, r1 - ldr r1, _08122328 @ =gStringVar1 - bl GetMonNickname - adds r0, r4, 0 - bl sub_81221F8 - ldr r1, _0812232C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08122330 @ =sub_812238C - str r1, [r0] - b _08122342 - .align 2, 0 -_08122320: .4byte gLastFieldPokeMenuOpened -_08122324: .4byte gPlayerParty -_08122328: .4byte gStringVar1 -_0812232C: .4byte gTasks -_08122330: .4byte sub_812238C -_08122334: - ldr r0, _0812234C @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _08122350 @ =sub_81224A8 - str r0, [r1] -_08122342: - adds r0, r4, 0 - bl sub_808B5B4 - b _0812237C - .align 2, 0 -_0812234C: .4byte gTasks -_08122350: .4byte sub_81224A8 -_08122354: - movs r0, 0x5 - bl PlaySE - bl sub_8121E58 - movs r0, 0x1 - negs r0, r0 - str r5, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _08122384 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08122388 @ =sub_8122450 - str r1, [r0] -_0812237C: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08122384: .4byte gTasks -_08122388: .4byte sub_8122450 - thumb_func_end sub_81222B0 - - thumb_func_start sub_812238C -sub_812238C: @ 812238C - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - adds r4, r7, 0 - ldr r0, _081223C8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r3, 0x80 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _0812244A - ldr r2, _081223CC @ =gMain - ldrh r1, [r2, 0x30] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _081223D0 - bl GetMenuCursorPos - lsls r0, 24 - cmp r0, 0 - beq _0812244A - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - negs r0, r0 - bl MoveMenuCursor - b _0812244A - .align 2, 0 -_081223C8: .4byte gPaletteFade -_081223CC: .4byte gMain -_081223D0: - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _081223F2 - bl GetMenuCursorPos - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - beq _0812244A - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - bl MoveMenuCursor - b _0812244A -_081223F2: - ldrh r1, [r2, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0812243C - movs r0, 0x5 - bl PlaySE - ldr r1, _08122430 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - ldrb r4, [r0, 0x10] - ldr r5, _08122434 @ =gUnknown_084017D8 - ldr r6, _08122438 @ =gUnknown_084017B0 - bl GetMenuCursorPos - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - bl PartyMenuGetPopupMenuFunc - adds r1, r0, 0 - adds r0, r7, 0 - bl _call_via_r1 - b _0812244A - .align 2, 0 -_08122430: .4byte gTasks -_08122434: .4byte gUnknown_084017D8 -_08122438: .4byte gUnknown_084017B0 -_0812243C: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0812244A - adds r0, r4, 0 - bl sub_8122838 -_0812244A: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_812238C - - thumb_func_start sub_8122450 -sub_8122450: @ 8122450 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08122478 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08122470 - ldr r0, _0812247C @ =gMain - ldr r0, [r0, 0x8] - bl SetMainCallback2 - adds r0, r4, 0 - bl DestroyTask -_08122470: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08122478: .4byte gPaletteFade -_0812247C: .4byte gMain - thumb_func_end sub_8122450 - - thumb_func_start sub_8122480 -sub_8122480: @ 8122480 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _081224A4 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0812249A - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _081224A0 -_0812249A: - adds r0, r2, 0 - bl sub_8122838 -_081224A0: - pop {r0} - bx r0 - .align 2, 0 -_081224A4: .4byte gMain - thumb_func_end sub_8122480 - - thumb_func_start sub_81224A8 -sub_81224A8: @ 81224A8 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - bl sub_81220C8 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _081224D0 - movs r1, 0 - bl sub_806D538 - ldr r0, _081224CC @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - b _08122518 - .align 2, 0 -_081224CC: .4byte gTasks -_081224D0: - ldr r0, _081224F8 @ =gBufferedMoves - ldrb r0, [r0] - cmp r0, 0 - beq _08122504 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _081224FC @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08122500 @ =sub_8122450 - str r1, [r0] - b _08122520 - .align 2, 0 -_081224F8: .4byte gBufferedMoves -_081224FC: .4byte gTasks -_08122500: .4byte sub_8122450 -_08122504: - movs r0, 0x20 - bl PlaySE - movs r0, 0xE - movs r1, 0 - bl sub_806D538 - ldr r0, _08122528 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 -_08122518: - lsls r1, 3 - adds r1, r0 - ldr r0, _0812252C @ =sub_8122480 - str r0, [r1] -_08122520: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08122528: .4byte gTasks -_0812252C: .4byte sub_8122480 - thumb_func_end sub_81224A8 - - thumb_func_start sub_8122530 -sub_8122530: @ 8122530 - push {r4,r5,lr} - ldr r5, _08122578 @ =0x0201b260 - ldr r4, _0812257C @ =gUnknown_020384F0 -_08122536: - bl sub_806B124 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08122590 - ldrb r0, [r5] - ldrb r1, [r4] - bl sub_806C994 - ldrb r0, [r5] - movs r1, 0 - bl sub_806C658 - ldrb r1, [r4] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08122580 @ =gPlayerParty - adds r0, r1 - ldr r1, _08122584 @ =gStringVar1 - bl GetMonNickname - ldr r1, _08122588 @ =gLastFieldPokeMenuOpened - ldrb r0, [r4] - strb r0, [r1] - ldrb r0, [r5] - bl sub_81221F8 - ldr r0, _0812258C @ =sub_806AEDC - bl SetMainCallback2 - b _0812259C - .align 2, 0 -_08122578: .4byte 0x0201b260 -_0812257C: .4byte gUnknown_020384F0 -_08122580: .4byte gPlayerParty -_08122584: .4byte gStringVar1 -_08122588: .4byte gLastFieldPokeMenuOpened -_0812258C: .4byte sub_806AEDC -_08122590: - bl sub_80F9344 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08122536 -_0812259C: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8122530 - - thumb_func_start sub_81225A4 -sub_81225A4: @ 81225A4 - push {lr} - ldr r2, _081225C8 @ =gPaletteFade - ldrb r0, [r2, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x8] - ldr r2, _081225CC @ =sub_812238C - movs r0, 0x4 - movs r1, 0xFF - movs r3, 0x5 - bl sub_806AF4C - ldr r0, _081225D0 @ =sub_8122530 - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_081225C8: .4byte gPaletteFade -_081225CC: .4byte sub_812238C -_081225D0: .4byte sub_8122530 - thumb_func_end sub_81225A4 - - thumb_func_start sub_81225D4 -sub_81225D4: @ 81225D4 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r3, r0, 24 - ldr r0, _0812263C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _08122632 - ldr r2, _08122640 @ =gSprites - ldr r1, _08122644 @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0xE] - lsls r1, 16 - asrs r1, 24 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r4, [r0, 0x2E] - lsls r4, 24 - lsrs r4, 24 - adds r0, r3, 0 - bl DestroyTask - ldr r0, _08122648 @ =0x0201b000 - ldr r1, _0812264C @ =0x00000262 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - ldr r0, _08122650 @ =gPlayerParty - ldr r1, _08122654 @ =gPlayerPartyCount - ldrb r2, [r1] - subs r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - ldr r3, _08122658 @ =sub_81225A4 - str r5, [sp] - adds r1, r4, 0 - bl ShowPokemonSummaryScreen -_08122632: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0812263C: .4byte gPaletteFade -_08122640: .4byte gSprites -_08122644: .4byte gTasks -_08122648: .4byte 0x0201b000 -_0812264C: .4byte 0x00000262 -_08122650: .4byte gPlayerParty -_08122654: .4byte gPlayerPartyCount -_08122658: .4byte sub_81225A4 - thumb_func_end sub_81225D4 - - thumb_func_start sub_812265C -sub_812265C: @ 812265C - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _0812268C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08122690 @ =sub_81225D4 - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0812268C: .4byte gTasks -_08122690: .4byte sub_81225D4 - thumb_func_end sub_812265C - - thumb_func_start sub_8122694 -sub_8122694: @ 8122694 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - ldr r3, _081226D4 @ =gBufferedMoves - ldr r2, _081226D8 @ =gLastFieldPokeMenuOpened -_081226A0: - adds r1, r4, r3 - ldrb r0, [r1] - cmp r0, 0 - bne _081226DC - ldrb r0, [r2] - adds r0, 0x1 - strb r0, [r1] - ldrb r0, [r2] - lsls r1, r4, 3 - subs r1, r4 - lsls r1, 25 - movs r2, 0xE0 - lsls r2, 21 - adds r1, r2 - lsrs r1, 24 - bl sub_806BC3C - cmp r4, 0x2 - bne _081226CC - adds r0, r5, 0 - bl sub_806C890 -_081226CC: - adds r0, r5, 0 - bl sub_8122838 - b _08122716 - .align 2, 0 -_081226D4: .4byte gBufferedMoves -_081226D8: .4byte gLastFieldPokeMenuOpened -_081226DC: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x2 - bls _081226A0 - movs r0, 0x20 - bl PlaySE - movs r0, 0x14 - movs r1, 0xA - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - bl HandleDestroyMenuCursors - bl sub_806D5A4 - ldr r0, _0812271C @ =gOtherText_NoMoreThreePoke - movs r1, 0x1 - bl sub_806E834 - ldr r1, _08122720 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _08122724 @ =sub_8122728 - str r1, [r0] -_08122716: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0812271C: .4byte gOtherText_NoMoreThreePoke -_08122720: .4byte gTasks -_08122724: .4byte sub_8122728 - thumb_func_end sub_8122694 - - thumb_func_start sub_8122728 -sub_8122728: @ 8122728 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08122768 @ =gUnknown_0202E8F6 - ldrb r0, [r0] - cmp r0, 0x1 - beq _08122760 - ldr r0, _0812276C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0812274A - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08122760 -_0812274A: - movs r0, 0 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - bl HandleDestroyMenuCursors - adds r0, r4, 0 - bl sub_8122838 -_08122760: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08122768: .4byte gUnknown_0202E8F6 -_0812276C: .4byte gMain - thumb_func_end sub_8122728 - - thumb_func_start sub_8122770 -sub_8122770: @ 8122770 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - movs r4, 0 - ldr r5, _08122798 @ =gLastFieldPokeMenuOpened - ldr r3, _0812279C @ =gBufferedMoves -_0812277C: - adds r2, r4, r3 - ldrb r1, [r2] - ldrb r0, [r5] - adds r0, 0x1 - cmp r1, r0 - bne _081227B4 - movs r1, 0 - strb r1, [r2] - cmp r4, 0 - beq _081227A0 - cmp r4, 0x1 - beq _081227AC - b _081227BE - .align 2, 0 -_08122798: .4byte gLastFieldPokeMenuOpened -_0812279C: .4byte gBufferedMoves -_081227A0: - ldrb r0, [r3, 0x1] - strb r0, [r3] - ldrb r0, [r3, 0x2] - strb r0, [r3, 0x1] - strb r4, [r3, 0x2] - b _081227BE -_081227AC: - ldrb r0, [r3, 0x2] - strb r0, [r3, 0x1] - strb r1, [r3, 0x2] - b _081227BE -_081227B4: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x2 - bls _0812277C -_081227BE: - ldrb r0, [r5] - movs r1, 0x70 - bl sub_806BC3C - ldr r4, _081227F8 @ =gBufferedMoves - ldrb r0, [r4] - cmp r0, 0 - beq _081227DA - subs r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1C - bl sub_806BC3C -_081227DA: - ldrb r0, [r4, 0x1] - cmp r0, 0 - beq _081227EC - subs r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x2A - bl sub_806BC3C -_081227EC: - adds r0, r6, 0 - bl sub_8122838 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_081227F8: .4byte gBufferedMoves - thumb_func_end sub_8122770 - - thumb_func_start sub_81227FC -sub_81227FC: @ 81227FC - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x14 - movs r1, 0xA - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - bl HandleDestroyMenuCursors - movs r0, 0 - movs r1, 0 - bl sub_806D538 - ldr r1, _08122830 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08122834 @ =sub_81222B0 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08122830: .4byte gTasks -_08122834: .4byte sub_81222B0 - thumb_func_end sub_81227FC - - thumb_func_start sub_8122838 -sub_8122838: @ 8122838 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x5 - bl PlaySE - adds r0, r4, 0 - bl sub_81227FC - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8122838 - - thumb_func_start sub_8122854 -sub_8122854: @ 8122854 - push {r4,lr} - ldr r1, _08122874 @ =0x0201b000 - movs r2, 0x99 - lsls r2, 2 - adds r0, r1, r2 - movs r2, 0 - ldrsh r0, [r0, r2] - adds r4, r1, 0 - cmp r0, 0x4 - bhi _081228E0 - lsls r0, 2 - ldr r1, _08122878 @ =_0812287C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08122874: .4byte 0x0201b000 -_08122878: .4byte _0812287C - .align 2, 0 -_0812287C: - .4byte _08122890 - .4byte _081228A4 - .4byte _081228AA - .4byte _081228BE - .4byte _081228D8 -_08122890: - movs r1, 0x98 - lsls r1, 2 - adds r0, r4, r1 - ldrb r0, [r0] - bl sub_81228E8 - movs r2, 0x99 - lsls r2, 2 - adds r1, r4, r2 - b _081228CA -_081228A4: - bl LoadHeldItemIconGraphics - b _081228C2 -_081228AA: - movs r1, 0x98 - lsls r1, 2 - adds r0, r4, r1 - ldrb r0, [r0] - bl sub_8122950 - movs r2, 0x99 - lsls r2, 2 - adds r1, r4, r2 - b _081228CA -_081228BE: - bl sub_81229B8 -_081228C2: - ldr r1, _081228D4 @ =0x0201b000 - movs r0, 0x99 - lsls r0, 2 - adds r1, r0 -_081228CA: - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _081228E0 - .align 2, 0 -_081228D4: .4byte 0x0201b000 -_081228D8: - bl sub_806B908 - movs r0, 0x1 - b _081228E2 -_081228E0: - movs r0, 0 -_081228E2: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8122854 - - thumb_func_start sub_81228E8 -sub_81228E8: @ 81228E8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - movs r5, 0 -_081228F0: - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _08122948 @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _08122912 - adds r0, r6, 0 - adds r1, r5, 0 - movs r2, 0x3 - adds r3, r4, 0 - bl CreatePartyMenuMonIcon -_08122912: - ldr r0, _0812294C @ =gUnknown_02023A00 - lsls r1, r5, 5 - adds r3, r1, r0 - ldrh r0, [r3] - cmp r0, 0 - beq _08122936 - adds r4, r5, 0x3 - lsls r4, 24 - lsrs r4, 24 - adds r0, r6, 0 - adds r1, r4, 0 - movs r2, 0x3 - bl CreateMonIcon_806D99C - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_806D50C -_08122936: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x2 - bls _081228F0 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08122948: .4byte gPlayerParty -_0812294C: .4byte gUnknown_02023A00 - thumb_func_end sub_81228E8 - - thumb_func_start sub_8122950 -sub_8122950: @ 8122950 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - movs r5, 0 -_08122958: - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _081229B0 @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _08122984 - adds r0, r4, 0 - movs r1, 0xC - bl GetMonData - adds r2, r0, 0 - lsls r2, 16 - lsrs r2, 16 - adds r0, r6, 0 - adds r1, r5, 0 - bl CreateHeldItemIcon_806DCD4 -_08122984: - ldr r0, _081229B4 @ =gUnknown_02023A00 - lsls r1, r5, 5 - adds r2, r1, r0 - ldrh r0, [r2] - cmp r0, 0 - beq _0812299E - adds r1, r5, 0x3 - lsls r1, 24 - lsrs r1, 24 - ldrh r2, [r2, 0x2] - adds r0, r6, 0 - bl CreateHeldItemIcon_806DCD4 -_0812299E: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x2 - bls _08122958 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_081229B0: .4byte gPlayerParty -_081229B4: .4byte gUnknown_02023A00 - thumb_func_end sub_8122950 - - thumb_func_start sub_81229B8 -sub_81229B8: @ 81229B8 - push {r4-r7,lr} - movs r5, 0 - movs r7, 0x64 - ldr r6, _08122A00 @ =gPlayerParty -_081229C0: - adds r0, r5, 0 - muls r0, r7 - adds r4, r0, r6 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _08122A36 - adds r0, r5, 0 - movs r1, 0x3 - adds r2, r4, 0 - bl PartyMenuPrintHP - adds r0, r4, 0 - bl GetMonStatusAndPokerus - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _08122A04 - cmp r0, 0x6 - beq _08122A04 - subs r2, r0, 0x1 - lsls r2, 24 - lsrs r2, 24 - adds r0, r5, 0 - movs r1, 0x3 - bl PartyMenuPutStatusTilemap - b _08122A12 - .align 2, 0 -_08122A00: .4byte gPlayerParty -_08122A04: - adds r2, r5, 0 - muls r2, r7 - adds r2, r6 - adds r0, r5, 0 - movs r1, 0x3 - bl PartyMenuPrintLevel -_08122A12: - adds r4, r5, 0 - muls r4, r7 - adds r4, r6 - adds r0, r5, 0 - movs r1, 0x3 - adds r2, r4, 0 - bl PartyMenuPutNicknameTilemap - adds r0, r5, 0 - movs r1, 0x3 - adds r2, r4, 0 - bl PrintPartyMenuMonNickname - adds r0, r5, 0 - movs r1, 0x3 - adds r2, r4, 0 - bl PartyMenuDrawHPBar -_08122A36: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x2 - bls _081229C0 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_81229B8 - - thumb_func_start sub_8122A48 -sub_8122A48: @ 8122A48 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _08122AA0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08122A98 - ldr r0, _08122AA4 @ =gTasks - lsls r4, r6, 2 - adds r4, r6 - lsls r4, 3 - adds r4, r0 - movs r0, 0x1E - strh r0, [r4, 0x8] - ldr r5, _08122AA8 @ =gUnknown_02023A00 - ldrh r1, [r5] - adds r0, r6, 0 - movs r2, 0 - bl sub_806D4AC - ldrh r1, [r5, 0x20] - adds r0, r6, 0 - movs r2, 0x1 - bl sub_806D4AC - adds r5, 0x40 - ldrh r1, [r5] - adds r0, r6, 0 - movs r2, 0x2 - bl sub_806D4AC - ldr r0, _08122AAC @ =sub_8122AB8 - str r0, [r4] - ldr r0, _08122AB0 @ =0x0201b000 - ldr r1, _08122AB4 @ =0x00000261 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] -_08122A98: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08122AA0: .4byte gPaletteFade -_08122AA4: .4byte gTasks -_08122AA8: .4byte gUnknown_02023A00 -_08122AAC: .4byte sub_8122AB8 -_08122AB0: .4byte 0x0201b000 -_08122AB4: .4byte 0x00000261 - thumb_func_end sub_8122A48 - - thumb_func_start sub_8122AB8 -sub_8122AB8: @ 8122AB8 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _08122AFC @ =gUnknown_02023A00 - ldrh r1, [r0, 0x20] - adds r0, 0x40 - ldrh r2, [r0] - adds r0, r4, 0 - bl sub_806D3B4 - ldr r1, _08122B00 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r1, r0, r1 - movs r2, 0x8 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _08122AF4 - ldr r0, _08122B04 @ =sub_8122B10 - str r0, [r1] - ldr r0, _08122B08 @ =0x0201b000 - ldr r1, _08122B0C @ =0x00000261 - adds r0, r1 - movs r1, 0x2 - strb r1, [r0] - movs r0, 0x78 - bl PlaySE -_08122AF4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08122AFC: .4byte gUnknown_02023A00 -_08122B00: .4byte gTasks -_08122B04: .4byte sub_8122B10 -_08122B08: .4byte 0x0201b000 -_08122B0C: .4byte 0x00000261 - thumb_func_end sub_8122AB8 - - thumb_func_start sub_8122B10 -sub_8122B10: @ 8122B10 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x4] - movs r0, 0 - mov r8, r0 - ldr r1, _08122B5C @ =gUnknown_02023A00 - mov r10, r1 - ldr r2, _08122B60 @ =gStringVar1 - mov r9, r2 -_08122B2E: - mov r1, r8 - lsls r0, r1, 5 - mov r2, r10 - adds r6, r0, r2 - ldrh r1, [r6] - adds r7, r0, 0 - cmp r1, 0 - beq _08122BDA - mov r4, r8 - adds r4, 0x3 - lsls r0, r4, 24 - lsrs r5, r0, 24 - ldrh r2, [r6, 0x10] - ldrh r3, [r6, 0x12] - adds r0, r5, 0 - movs r1, 0x3 - bl PartyMenuDoPrintHP - ldrh r0, [r6, 0x10] - cmp r0, 0 - bne _08122B64 - movs r2, 0x7 - b _08122B76 - .align 2, 0 -_08122B5C: .4byte gUnknown_02023A00 -_08122B60: .4byte gStringVar1 -_08122B64: - ldr r1, _08122B88 @ =gUnknown_02023A14 - adds r0, r7, r1 - ldr r0, [r0] - bl pokemon_ailments_get_primary - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - beq _08122B8C -_08122B76: - lsls r0, r4, 24 - lsrs r0, 24 - subs r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - movs r1, 0x3 - bl PartyMenuPutStatusTilemap - b _08122B96 - .align 2, 0 -_08122B88: .4byte gUnknown_02023A14 -_08122B8C: - ldrb r2, [r6, 0xF] - adds r0, r5, 0 - movs r1, 0x3 - bl PartyMenuDoPrintLevel -_08122B96: - mov r2, r10 - adds r6, r7, r2 - ldrh r0, [r6] - ldrb r1, [r6, 0x1C] - lsls r4, 24 - lsrs r4, 24 - ldr r2, _08122C0C @ =gUnknown_02023A04 - adds r5, r7, r2 - str r5, [sp] - movs r2, 0x3 - adds r3, r4, 0 - bl PartyMenuDoPutNicknameTilemap - mov r0, r9 - adds r1, r5, 0 - bl StringCopy - mov r0, r9 - bl StringGetEnd10 - mov r0, r9 - bl SanitizeNameString - adds r0, r4, 0 - movs r1, 0x3 - mov r2, r9 - bl box_print - ldrh r2, [r6, 0x10] - ldrh r3, [r6, 0x12] - adds r0, r4, 0 - movs r1, 0x3 - bl PartyMenuDoDrawHPBar -_08122BDA: - mov r0, r8 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - cmp r0, 0x2 - bls _08122B2E - ldr r1, _08122C10 @ =gTasks - ldr r2, [sp, 0x4] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - ldr r1, _08122C14 @ =sub_8122C18 - str r1, [r0] - movs r1, 0 - strh r1, [r0, 0x8] - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08122C0C: .4byte gUnknown_02023A04 -_08122C10: .4byte gTasks -_08122C14: .4byte sub_8122C18 - thumb_func_end sub_8122B10 - - thumb_func_start sub_8122C18 -sub_8122C18: @ 8122C18 - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08122C58 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1, r2 - ldrh r0, [r4, 0x8] - adds r0, 0x1 - strh r0, [r4, 0x8] - lsls r0, 16 - movs r1, 0x80 - lsls r1, 17 - cmp r0, r1 - bne _08122C4E - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _08122C5C @ =sub_8122450 - str r0, [r4] -_08122C4E: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08122C58: .4byte gTasks -_08122C5C: .4byte sub_8122450 - thumb_func_end sub_8122C18 - - thumb_func_start unref_sub_8122C60 -unref_sub_8122C60: @ 8122C60 - push {r4,r5,lr} - ldr r1, _08122C80 @ =0x0201b000 - movs r2, 0x99 - lsls r2, 2 - adds r0, r1, r2 - movs r2, 0 - ldrsh r0, [r0, r2] - adds r4, r1, 0 - cmp r0, 0x7 - bls _08122C76 - b _08122D8A -_08122C76: - lsls r0, 2 - ldr r1, _08122C84 @ =_08122C88 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08122C80: .4byte 0x0201b000 -_08122C84: .4byte _08122C88 - .align 2, 0 -_08122C88: - .4byte _08122CA8 - .4byte _08122CE8 - .4byte _08122CEE - .4byte _08122D02 - .4byte _08122D2C - .4byte _08122D32 - .4byte _08122D44 - .4byte _08122D5C -_08122CA8: - ldr r0, _08122CD0 @ =0x00000266 - adds r5, r4, r0 - movs r1, 0 - ldrsh r3, [r5, r1] - ldr r0, _08122CD4 @ =gPlayerPartyCount - ldrb r0, [r0] - cmp r3, r0 - bge _08122CDC - movs r2, 0x98 - lsls r2, 2 - adds r0, r4, r2 - ldrb r0, [r0] - ldrb r1, [r5] - movs r2, 0x64 - muls r2, r3 - ldr r3, _08122CD8 @ =gPlayerParty - adds r2, r3 - bl TryCreatePartyMenuMonIcon - b _08122D84 - .align 2, 0 -_08122CD0: .4byte 0x00000266 -_08122CD4: .4byte gPlayerPartyCount -_08122CD8: .4byte gPlayerParty -_08122CDC: - movs r0, 0 - strh r0, [r5] - movs r0, 0x99 - lsls r0, 2 - adds r1, r4, r0 - b _08122D50 -_08122CE8: - bl LoadHeldItemIconGraphics - b _08122D48 -_08122CEE: - movs r1, 0x98 - lsls r1, 2 - adds r0, r4, r1 - ldrb r0, [r0] - bl CreateHeldItemIcons_806DC34 - movs r2, 0x99 - lsls r2, 2 - adds r1, r4, r2 - b _08122D50 -_08122D02: - movs r1, 0x98 - lsls r1, 2 - adds r0, r4, r1 - ldrb r0, [r0] - ldr r2, _08122D28 @ =0x00000266 - adds r5, r4, r2 - ldrb r1, [r5] - bl sub_806BD58 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08122D84 - movs r0, 0 - strh r0, [r5] - movs r0, 0x99 - lsls r0, 2 - adds r1, r4, r0 - b _08122D50 - .align 2, 0 -_08122D28: .4byte 0x00000266 -_08122D2C: - bl PartyMenuPrintMonsLevelOrStatus - b _08122D48 -_08122D32: - bl PrintPartyMenuMonNicknames - ldr r1, _08122D40 @ =0x0201b000 - movs r0, 0x99 - lsls r0, 2 - adds r1, r0 - b _08122D50 - .align 2, 0 -_08122D40: .4byte 0x0201b000 -_08122D44: - bl sub_806BCE8 -_08122D48: - ldr r1, _08122D58 @ =0x0201b000 - movs r2, 0x99 - lsls r2, 2 - adds r1, r2 -_08122D50: - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _08122D8A - .align 2, 0 -_08122D58: .4byte 0x0201b000 -_08122D5C: - ldr r0, _08122D80 @ =0x00000266 - adds r5, r4, r0 - ldrb r0, [r5] - bl sub_806B58C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08122D84 - movs r1, 0 - strh r1, [r5] - movs r2, 0x99 - lsls r2, 2 - adds r0, r4, r2 - strh r1, [r0] - movs r0, 0x1 - b _08122D8C - .align 2, 0 -_08122D80: .4byte 0x00000266 -_08122D84: - ldrh r0, [r5] - adds r0, 0x1 - strh r0, [r5] -_08122D8A: - movs r0, 0 -_08122D8C: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end unref_sub_8122C60 - - thumb_func_start sub_8122D94 -sub_8122D94: @ 8122D94 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08122DCC @ =gLastFieldPokeMenuOpened - ldrb r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08122DD0 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2D - bl GetMonData - adds r2, r0, 0 - cmp r2, 0 - bne _08122DE0 - ldr r1, _08122DD4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - strh r2, [r0, 0x10] - ldr r1, _08122DD8 @ =gUnknown_08401810 - ldr r2, _08122DDC @ =gUnknown_084017F0 - movs r0, 0 - movs r3, 0 - bl sub_806E750 - b _08122DFA - .align 2, 0 -_08122DCC: .4byte gLastFieldPokeMenuOpened -_08122DD0: .4byte gPlayerParty -_08122DD4: .4byte gTasks -_08122DD8: .4byte gUnknown_08401810 -_08122DDC: .4byte gUnknown_084017F0 -_08122DE0: - ldr r1, _08122E00 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0x1 - strh r1, [r0, 0x10] - ldr r1, _08122E04 @ =gUnknown_08401810 - ldr r2, _08122E08 @ =gUnknown_084017F0 - movs r0, 0x1 - movs r3, 0 - bl sub_806E750 -_08122DFA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08122E00: .4byte gTasks -_08122E04: .4byte gUnknown_08401810 -_08122E08: .4byte gUnknown_084017F0 - thumb_func_end sub_8122D94 - - thumb_func_start sub_8122E0C -sub_8122E0C: @ 8122E0C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08122E34 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08122E9C - adds r0, r4, 0 - bl sub_806BD80 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - beq _08122E38 - cmp r0, 0x2 - beq _08122E84 - b _08122E9C - .align 2, 0 -_08122E34: .4byte gPaletteFade -_08122E38: - movs r0, 0x5 - bl PlaySE - adds r0, r4, 0 - bl sub_806CA38 - ldr r1, _08122E70 @ =gLastFieldPokeMenuOpened - strb r0, [r1] - ldrb r1, [r1] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08122E74 @ =gPlayerParty - adds r0, r1 - ldr r1, _08122E78 @ =gStringVar1 - bl GetMonNickname - adds r0, r4, 0 - bl sub_8122D94 - ldr r1, _08122E7C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08122E80 @ =sub_8122EAC - str r1, [r0] - b _08122E9C - .align 2, 0 -_08122E70: .4byte gLastFieldPokeMenuOpened -_08122E74: .4byte gPlayerParty -_08122E78: .4byte gStringVar1 -_08122E7C: .4byte gTasks -_08122E80: .4byte sub_8122EAC -_08122E84: - movs r0, 0x5 - bl PlaySE - ldr r1, _08122EA4 @ =gLastFieldPokeMenuOpened - movs r0, 0xFF - strb r0, [r1] - ldr r1, _08122EA8 @ =gSpecialVar_0x8004 - movs r0, 0xFF - strh r0, [r1] - adds r0, r4, 0 - bl sub_8123138 -_08122E9C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08122EA4: .4byte gLastFieldPokeMenuOpened -_08122EA8: .4byte gSpecialVar_0x8004 - thumb_func_end sub_8122E0C - - thumb_func_start sub_8122EAC -sub_8122EAC: @ 8122EAC - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - adds r4, r7, 0 - ldr r0, _08122EE8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r3, 0x80 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _08122F6A - ldr r2, _08122EEC @ =gMain - ldrh r1, [r2, 0x30] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08122EF0 - bl GetMenuCursorPos - lsls r0, 24 - cmp r0, 0 - beq _08122F6A - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - negs r0, r0 - bl MoveMenuCursor - b _08122F6A - .align 2, 0 -_08122EE8: .4byte gPaletteFade -_08122EEC: .4byte gMain -_08122EF0: - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _08122F12 - bl GetMenuCursorPos - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - beq _08122F6A - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - bl MoveMenuCursor - b _08122F6A -_08122F12: - ldrh r1, [r2, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08122F5C - movs r0, 0x5 - bl PlaySE - ldr r1, _08122F50 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - ldrb r4, [r0, 0x10] - ldr r5, _08122F54 @ =gUnknown_08401810 - ldr r6, _08122F58 @ =gUnknown_084017F0 - bl GetMenuCursorPos - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - bl PartyMenuGetPopupMenuFunc - adds r1, r0, 0 - adds r0, r7, 0 - bl _call_via_r1 - b _08122F6A - .align 2, 0 -_08122F50: .4byte gTasks -_08122F54: .4byte gUnknown_08401810 -_08122F58: .4byte gUnknown_084017F0 -_08122F5C: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08122F6A - adds r0, r4, 0 - bl sub_81230F4 -_08122F6A: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8122EAC - - thumb_func_start sub_8122F70 -sub_8122F70: @ 8122F70 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08122F88 @ =gSpecialVar_0x8004 - ldr r1, _08122F8C @ =gLastFieldPokeMenuOpened - ldrb r1, [r1] - strh r1, [r2] - bl sub_8123138 - pop {r0} - bx r0 - .align 2, 0 -_08122F88: .4byte gSpecialVar_0x8004 -_08122F8C: .4byte gLastFieldPokeMenuOpened - thumb_func_end sub_8122F70 - - thumb_func_start sub_8122F90 -sub_8122F90: @ 8122F90 - push {r4,r5,lr} - ldr r5, _08122FD8 @ =0x0201b260 - ldr r4, _08122FDC @ =gUnknown_020384F0 -_08122F96: - bl sub_806B124 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08122FF0 - ldrb r0, [r5] - ldrb r1, [r4] - bl sub_806C994 - ldrb r0, [r5] - movs r1, 0 - bl sub_806BF74 - ldrb r1, [r4] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08122FE0 @ =gPlayerParty - adds r0, r1 - ldr r1, _08122FE4 @ =gStringVar1 - bl GetMonNickname - ldr r1, _08122FE8 @ =gLastFieldPokeMenuOpened - ldrb r0, [r4] - strb r0, [r1] - ldrb r0, [r5] - bl sub_8122D94 - ldr r0, _08122FEC @ =sub_806AEDC - bl SetMainCallback2 - b _08122FFC - .align 2, 0 -_08122FD8: .4byte 0x0201b260 -_08122FDC: .4byte gUnknown_020384F0 -_08122FE0: .4byte gPlayerParty -_08122FE4: .4byte gStringVar1 -_08122FE8: .4byte gLastFieldPokeMenuOpened -_08122FEC: .4byte sub_806AEDC -_08122FF0: - bl sub_80F9344 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08122F96 -_08122FFC: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8122F90 - - thumb_func_start sub_8123004 -sub_8123004: @ 8123004 - push {lr} - ldr r2, _08123028 @ =gPaletteFade - ldrb r0, [r2, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x8] - ldr r2, _0812302C @ =sub_8122EAC - movs r0, 0x6 - movs r1, 0xFF - movs r3, 0x5 - bl sub_806AF4C - ldr r0, _08123030 @ =sub_8122F90 - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_08123028: .4byte gPaletteFade -_0812302C: .4byte sub_8122EAC -_08123030: .4byte sub_8122F90 - thumb_func_end sub_8123004 - - thumb_func_start sub_8123034 -sub_8123034: @ 8123034 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r3, r0, 24 - ldr r0, _0812309C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _08123092 - ldr r2, _081230A0 @ =gSprites - ldr r1, _081230A4 @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0xE] - lsls r1, 16 - asrs r1, 24 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r4, [r0, 0x2E] - lsls r4, 24 - lsrs r4, 24 - adds r0, r3, 0 - bl DestroyTask - ldr r0, _081230A8 @ =0x0201b000 - ldr r1, _081230AC @ =0x00000262 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - ldr r0, _081230B0 @ =gPlayerParty - ldr r1, _081230B4 @ =gPlayerPartyCount - ldrb r2, [r1] - subs r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - ldr r3, _081230B8 @ =sub_8123004 - str r5, [sp] - adds r1, r4, 0 - bl ShowPokemonSummaryScreen -_08123092: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0812309C: .4byte gPaletteFade -_081230A0: .4byte gSprites -_081230A4: .4byte gTasks -_081230A8: .4byte 0x0201b000 -_081230AC: .4byte 0x00000262 -_081230B0: .4byte gPlayerParty -_081230B4: .4byte gPlayerPartyCount -_081230B8: .4byte sub_8123004 - thumb_func_end sub_8123034 - - thumb_func_start sub_81230BC -sub_81230BC: @ 81230BC - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _081230EC @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _081230F0 @ =sub_8123034 - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081230EC: .4byte gTasks -_081230F0: .4byte sub_8123034 - thumb_func_end sub_81230BC - - thumb_func_start sub_81230F4 -sub_81230F4: @ 81230F4 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x5 - bl PlaySE - movs r0, 0x14 - movs r1, 0xA - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - bl HandleDestroyMenuCursors - movs r0, 0xF - movs r1, 0 - bl sub_806D538 - ldr r1, _08123130 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08123134 @ =sub_8122E0C - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08123130: .4byte gTasks -_08123134: .4byte sub_8122E0C - thumb_func_end sub_81230F4 - - thumb_func_start sub_8123138 -sub_8123138: @ 8123138 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _08123168 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0812316C @ =sub_8123170 - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08123168: .4byte gTasks -_0812316C: .4byte sub_8123170 - thumb_func_end sub_8123138 - - thumb_func_start sub_8123170 -sub_8123170: @ 8123170 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0812319C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08123194 - ldr r0, _081231A0 @ =gFieldCallback - ldr r1, _081231A4 @ =sub_81231AC - str r1, [r0] - ldr r0, _081231A8 @ =c2_exit_to_overworld_2_switch - bl SetMainCallback2 - adds r0, r4, 0 - bl DestroyTask -_08123194: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0812319C: .4byte gPaletteFade -_081231A0: .4byte gFieldCallback -_081231A4: .4byte sub_81231AC -_081231A8: .4byte c2_exit_to_overworld_2_switch - thumb_func_end sub_8123170 - - thumb_func_start sub_81231AC -sub_81231AC: @ 81231AC - push {lr} - bl pal_fill_black - ldr r0, _081231C0 @ =sub_81231C4 - movs r1, 0xA - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_081231C0: .4byte sub_81231C4 - thumb_func_end sub_81231AC - - thumb_func_start sub_81231C4 -sub_81231C4: @ 81231C4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_807D770 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _081231E4 - adds r0, r4, 0 - bl DestroyTask - bl ScriptContext2_Disable - bl EnableBothScriptContexts -_081231E4: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_81231C4 - - .align 2, 0 @ Don't pad with nop. diff --git a/data/choose_party.s b/data/choose_party.s deleted file mode 100644 index 348f9e385..000000000 --- a/data/choose_party.s +++ /dev/null @@ -1,56 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gUnknown_084017B0:: @ 84017B0 - .4byte OtherText_Summary, sub_812265C - .4byte OtherText_Enter2, sub_8122694 - .4byte OtherText_NoEntry, sub_8122770 - .4byte gUnknownText_Exit, sub_8122838 - -gUnknown_084017D0:: @ 84017D0 - .byte 1, 0, 3 - -gUnknown_084017D3: @ 84017D3 - .byte 2, 0, 3 - -gUnknown_084017D6: @ 84017D6 - .byte 0, 3 - - .align 2 -gUnknown_084017D8:: @ 84017D8 - .byte 3, 9 - .space 2 - .4byte gUnknown_084017D0 - - .byte 3, 9 - .space 2 - .4byte gUnknown_084017D3 - - .byte 2, 9 - .space 2 - .4byte gUnknown_084017D6 - - .align 2 -gUnknown_084017F0:: @ 84017F0 - .4byte OtherText_Store, sub_8122F70 - .4byte OtherText_Summary, sub_81230BC - .4byte gUnknownText_Exit, sub_81230F4 - -gUnknown_08401808:: @ 8401808 - .byte 0, 1, 2 - -gUnknown_0840180B:: @ 840180B - .byte 1, 2 - - .align 2 -gUnknown_08401810:: @ 8401810 - .byte 3, 9 - .space 2 - .4byte gUnknown_08401808 - - .byte 2, 9 - .space 2 - .4byte gUnknown_0840180B diff --git a/include/battle.h b/include/battle.h index 395cf042a..d93860094 100644 --- a/include/battle.h +++ b/include/battle.h @@ -185,7 +185,6 @@ struct Struct2017810 u8 unk1_0:1; u8 unk2; u8 unk3; - //u8 filler2[2]; u8 unk4; u8 unk5; u8 unk6; @@ -198,13 +197,21 @@ struct Struct2017810 struct Struct2017840 { u16 unk0; - u8 filler2[7]; + u8 filler2[6]; + u8 unk8; u8 unk9_0:1; }; +struct Struct20238C8 +{ + u8 unk0_0:7; + u8 unk0_7:1; +}; + extern struct UnkBattleStruct1 unk_2016A00; extern struct UnkBattleStruct4 gDisableStructs[]; extern struct AI_ThinkingStruct gAIThinkingSpace; +extern struct Struct20238C8 gUnknown_020238C8; // TODO: move ewram to global.h extern u8 ewram[]; 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/include/battle_party_menu.h b/include/battle_party_menu.h index 5112c7b3c..71bd2cf51 100644 --- a/include/battle_party_menu.h +++ b/include/battle_party_menu.h @@ -1,26 +1,9 @@ #ifndef GUARD_BATTLE_PARTY_MENU_H #define GUARD_BATTLE_PARTY_MENU_H -#include "task.h" - -// TODO: Unify all of the 0x0201B000 structs -struct Struct201B000 -{ - u8 filler0[0x259]; - u8 unk259; - u8 filler25A[6]; - u8 unk260; - u8 filler261[1]; - u8 unk262; - s16 unk264; - s16 unk266; -}; - extern u8 unk_2000000[]; +#define EWRAM_1609D unk_2000000[0x1609D] void SetUpBattlePokemonMenu(u8); -#define EWRAM_1609D unk_2000000[0x1609D] -#define EWRAM_1B000 (*(struct Struct201B000 *)(unk_2000000 + 0x1B000)) - #endif diff --git a/include/choose_party.h b/include/choose_party.h index 1e575a355..e31aa3c02 100644 --- a/include/choose_party.h +++ b/include/choose_party.h @@ -3,6 +3,11 @@ void sub_8121E10(void); void sub_8121E34(void); -void sub_8123138(u8); +bool8 sub_8121E78(void); +void sub_81222B0(u8 taskId); +bool8 sub_8122854(void); +void sub_8122A48(u8 taskId); +void sub_8122E0C(u8 taskId); +void sub_8123138(u8 taskId); #endif // GUARD_CHOOSE_PARTY_H diff --git a/include/global.h b/include/global.h index 9da4bd57c..d172cfa25 100755 --- a/include/global.h +++ b/include/global.h @@ -625,10 +625,11 @@ struct Pokedex struct SaveBlock2_Sub { - /*0x0000, 0x00A4*/ u8 filler_000[0x3D8]; + /*0x0000, 0x00A8*/ u8 filler_000[0x3D8]; /*0x03D8, 0x0480*/ u16 var_480; /*0x03DA, 0x0482*/ u16 var_482; - /*0x03DC, 0x0484*/ u8 filler_3DC[0xD1]; + /*0x03DC, 0x0484*/ u8 filler_3DC[0xD0]; + /*0x04AC, 0x0554*/ u8 var_4AC; /*0x04AD, 0x0555*/ u8 var_4AD; /*0x04AE, 0x0556*/ u8 var_4AE; /*0x04AF, 0x0557*/ u8 var_4AF; diff --git a/include/party_menu.h b/include/party_menu.h index 917d6a58c..58292081f 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -16,6 +16,44 @@ struct PartyPopupMenu const u8 *unk4; }; +// TODO: Unify these two structs + +#define DATA_COUNT (6) +struct Unk201B000 +{ + //u8 filler0[0x260]; + struct Pokemon unk0[6]; + u8 filler258[1]; + u8 unk259; + u8 filler25A[6]; + u8 unk260; + u8 unk261; + u8 unk262; + u8 unk263; + s16 unk264[DATA_COUNT * 2]; // This may be a union + u8 filler27C[2]; + s16 unk27E; + s16 unk280; + s16 unk282; +}; + +struct Struct201B000 +{ + u8 filler0[0x259]; + u8 unk259; + u8 filler25A[6]; + u8 unk260; + u8 filler261[1]; + u8 unk262; + s16 unk264; + s16 unk266; +}; + +extern u8 ewram[]; +#define ewram1B000 (*(struct Unk201B000 *)(ewram + 0x1B000)) +#define ewram1B000_alt (*(struct Struct201B000 *)(ewram + 0x1B000)) +#define EWRAM_1B000 ewram1B000_alt + void sub_806AEDC(void); void sub_806AF4C(); void OpenPartyMenu(u8, u8); diff --git a/include/pokemon.h b/include/pokemon.h index 47990073b..be8e4e56d 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -182,41 +182,41 @@ struct PokemonSubstruct2 struct PokemonSubstruct3 { - /* 0x00 */ u8 pokerus; - /* 0x01 */ u8 metLocation; - - /* 0x02 */ u16 metLevel:7; - /* 0x02 */ u16 metGame:4; - /* 0x03 */ u16 pokeball:4; - /* 0x03 */ u16 otGender:1; - - /* 0x04 */ u32 hpIV:5; - /* 0x04 */ u32 attackIV:5; - /* 0x05 */ u32 defenseIV:5; - /* 0x05 */ u32 speedIV:5; - /* 0x05 */ u32 spAttackIV:5; - /* 0x06 */ u32 spDefenseIV:5; - /* 0x07 */ u32 isEgg:1; - /* 0x07 */ u32 altAbility:1; - - /* 0x08 */ u32 coolRibbon:3; - /* 0x08 */ u32 beautyRibbon:3; - /* 0x08 */ u32 cuteRibbon:3; - /* 0x09 */ u32 smartRibbon:3; - /* 0x09 */ u32 toughRibbon:3; - /* 0x09 */ u32 championRibbon:1; - /* 0x0A */ u32 winningRibbon:1; - /* 0x0A */ u32 victoryRibbon:1; - /* 0x0A */ u32 artistRibbon:1; - /* 0x0A */ u32 effortRibbon:1; - /* 0x0A */ u32 giftRibbon1:1; - /* 0x0A */ u32 giftRibbon2:1; - /* 0x0A */ u32 giftRibbon3:1; - /* 0x0A */ u32 giftRibbon4:1; - /* 0x0B */ u32 giftRibbon5:1; - /* 0x0B */ u32 giftRibbon6:1; - /* 0x0B */ u32 giftRibbon7:1; - /* 0x0B */ u32 fatefulEncounter:5; // unused in Ruby/Sapphire, but the high bit must be set for Mew/Deoxys to obey in FR/LG/Emerald + /*0x00*/ u8 pokerus; + /*0x01*/ u8 metLocation; + + /*0x02*/ u16 metLevel:7; + /*0x02*/ u16 metGame:4; + /*0x03*/ u16 pokeball:4; + /*0x03*/ u16 otGender:1; + + /*0x04*/ u32 hpIV:5; + /*0x04*/ u32 attackIV:5; + /*0x05*/ u32 defenseIV:5; + /*0x05*/ u32 speedIV:5; + /*0x05*/ u32 spAttackIV:5; + /*0x06*/ u32 spDefenseIV:5; + /*0x07*/ u32 isEgg:1; + /*0x07*/ u32 altAbility:1; + + /*0x08*/ u32 coolRibbon:3; + /*0x08*/ u32 beautyRibbon:3; + /*0x08*/ u32 cuteRibbon:3; + /*0x09*/ u32 smartRibbon:3; + /*0x09*/ u32 toughRibbon:3; + /*0x09*/ u32 championRibbon:1; + /*0x0A*/ u32 winningRibbon:1; + /*0x0A*/ u32 victoryRibbon:1; + /*0x0A*/ u32 artistRibbon:1; + /*0x0A*/ u32 effortRibbon:1; + /*0x0A*/ u32 giftRibbon1:1; + /*0x0A*/ u32 giftRibbon2:1; + /*0x0A*/ u32 giftRibbon3:1; + /*0x0A*/ u32 giftRibbon4:1; + /*0x0B*/ u32 giftRibbon5:1; + /*0x0B*/ u32 giftRibbon6:1; + /*0x0B*/ u32 giftRibbon7:1; + /*0x0B*/ u32 fatefulEncounter:5; // unused in Ruby/Sapphire, but the high bit must be set for Mew/Deoxys to obey in FR/LG/Emerald }; union PokemonSubstruct @@ -230,39 +230,39 @@ union PokemonSubstruct struct BoxPokemon { - u32 personality; - u32 otId; - u8 nickname[POKEMON_NAME_LENGTH]; - u8 language; - u8 isBadEgg:1; - u8 hasSpecies:1; - u8 isEgg:1; - u8 unused:5; - u8 otName[OT_NAME_LENGTH]; - u8 markings; - u16 checksum; - u16 unknown; + /*0x00*/ u32 personality; + /*0x04*/ u32 otId; + /*0x08*/ u8 nickname[POKEMON_NAME_LENGTH]; + /*0x12*/ u8 language; + /*0x13*/ u8 isBadEgg:1; + u8 hasSpecies:1; + u8 isEgg:1; + u8 unused:5; + /*0x14*/ u8 otName[OT_NAME_LENGTH]; + /*0x1B*/ u8 markings; + /*0x1C*/ u16 checksum; + /*0x1E*/ u16 unknown; union { u32 raw[12]; union PokemonSubstruct substructs[4]; } secure; -}; +}; /*size = 0x50*/ struct Pokemon { - struct BoxPokemon box; - u32 status; - u8 level; - u8 mail; - u16 hp; - u16 maxHP; - u16 attack; - u16 defense; - u16 speed; - u16 spAttack; - u16 spDefense; + /*0x00*/ struct BoxPokemon box; + /*0x50*/ u32 status; + /*0x54*/ u8 level; + /*0x55*/ u8 mail; + /*0x56*/ u16 hp; + /*0x58*/ u16 maxHP; + /*0x5A*/ u16 attack; + /*0x5C*/ u16 defense; + /*0x5E*/ u16 speed; + /*0x60*/ u16 spAttack; + /*0x62*/ u16 spDefense; }; struct UnknownPokemonStruct @@ -294,73 +294,73 @@ struct UnknownPokemonStruct struct BattlePokemon { - /* 0x00 */ u16 species; - /* 0x02 */ u16 attack; - /* 0x04 */ u16 defense; - /* 0x06 */ u16 speed; - /* 0x08 */ u16 spAttack; - /* 0x0A */ u16 spDefense; - /* 0x0C */ u16 moves[4]; - /* 0x14 */ u32 hpIV:5; - /* 0x14 */ u32 attackIV:5; - /* 0x15 */ u32 defenseIV:5; - /* 0x15 */ u32 speedIV:5; - /* 0x16 */ u32 spAttackIV:5; - /* 0x17 */ u32 spDefenseIV:5; - /* 0x17 */ u32 isEgg:1; - /* 0x17 */ u32 altAbility:1; - /* 0x18 */ s8 statStages[8]; - /* 0x20 */ u8 ability; - /* 0x21 */ u8 type1; - /* 0x22 */ u8 type2; - /* 0x23 */ u8 unknown; - /* 0x24 */ u8 pp[4]; - /* 0x28 */ u16 hp; - /* 0x2A */ u8 level; - /* 0x2B */ u8 friendship; - /* 0x2C */ u16 maxHP; - /* 0x2E */ u16 item; - /* 0x30 */ u8 nickname[POKEMON_NAME_LENGTH + 1]; - /* 0x3B */ u8 ppBonuses; - /* 0x3C */ u8 otName[8]; - /* 0x44 */ u32 experience; - /* 0x48 */ u32 personality; - /* 0x4C */ u32 status1; - /* 0x50 */ u32 status2; - /* 0x54 */ u32 otId; + /*0x00*/ u16 species; + /*0x02*/ u16 attack; + /*0x04*/ u16 defense; + /*0x06*/ u16 speed; + /*0x08*/ u16 spAttack; + /*0x0A*/ u16 spDefense; + /*0x0C*/ u16 moves[4]; + /*0x14*/ u32 hpIV:5; + /*0x14*/ u32 attackIV:5; + /*0x15*/ u32 defenseIV:5; + /*0x15*/ u32 speedIV:5; + /*0x16*/ u32 spAttackIV:5; + /*0x17*/ u32 spDefenseIV:5; + /*0x17*/ u32 isEgg:1; + /*0x17*/ u32 altAbility:1; + /*0x18*/ s8 statStages[8]; + /*0x20*/ u8 ability; + /*0x21*/ u8 type1; + /*0x22*/ u8 type2; + /*0x23*/ u8 unknown; + /*0x24*/ u8 pp[4]; + /*0x28*/ u16 hp; + /*0x2A*/ u8 level; + /*0x2B*/ u8 friendship; + /*0x2C*/ u16 maxHP; + /*0x2E*/ u16 item; + /*0x30*/ u8 nickname[POKEMON_NAME_LENGTH + 1]; + /*0x3B*/ u8 ppBonuses; + /*0x3C*/ u8 otName[8]; + /*0x44*/ u32 experience; + /*0x48*/ u32 personality; + /*0x4C*/ u32 status1; + /*0x50*/ u32 status2; + /*0x54*/ u32 otId; }; struct BaseStats { - /* 0x00 */ u8 baseHP; - /* 0x01 */ u8 baseAttack; - /* 0x02 */ u8 baseDefense; - /* 0x03 */ u8 baseSpeed; - /* 0x04 */ u8 baseSpAttack; - /* 0x05 */ u8 baseSpDefense; - /* 0x06 */ u8 type1; - /* 0x07 */ u8 type2; - /* 0x08 */ u8 catchRate; - /* 0x09 */ u8 expYield; - /* 0x0A */ u16 evYield_HP:2; - /* 0x0A */ u16 evYield_Attack:2; - /* 0x0A */ u16 evYield_Defense:2; - /* 0x0A */ u16 evYield_Speed:2; - /* 0x0B */ u16 evYield_SpAttack:2; - /* 0x0B */ u16 evYield_SpDefense:2; - /* 0x0C */ u16 item1; - /* 0x0E */ u16 item2; - /* 0x10 */ u8 genderRatio; - /* 0x11 */ u8 eggCycles; - /* 0x12 */ u8 friendship; - /* 0x13 */ u8 growthRate; - /* 0x14 */ u8 eggGroup1; - /* 0x15 */ u8 eggGroup2; - /* 0x16 */ u8 ability1; - /* 0x17 */ u8 ability2; - /* 0x18 */ u8 safariZoneFleeRate; - /* 0x19 */ u8 bodyColor:7; - u8 unk19_7:1; + /*0x00*/ u8 baseHP; + /*0x01*/ u8 baseAttack; + /*0x02*/ u8 baseDefense; + /*0x03*/ u8 baseSpeed; + /*0x04*/ u8 baseSpAttack; + /*0x05*/ u8 baseSpDefense; + /*0x06*/ u8 type1; + /*0x07*/ u8 type2; + /*0x08*/ u8 catchRate; + /*0x09*/ u8 expYield; + /*0x0A*/ u16 evYield_HP:2; + /*0x0A*/ u16 evYield_Attack:2; + /*0x0A*/ u16 evYield_Defense:2; + /*0x0A*/ u16 evYield_Speed:2; + /*0x0B*/ u16 evYield_SpAttack:2; + /*0x0B*/ u16 evYield_SpDefense:2; + /*0x0C*/ u16 item1; + /*0x0E*/ u16 item2; + /*0x10*/ u8 genderRatio; + /*0x11*/ u8 eggCycles; + /*0x12*/ u8 friendship; + /*0x13*/ u8 growthRate; + /*0x14*/ u8 eggGroup1; + /*0x15*/ u8 eggGroup2; + /*0x16*/ u8 ability1; + /*0x17*/ u8 ability2; + /*0x18*/ u8 safariZoneFleeRate; + /*0x19*/ u8 bodyColor:7; + u8 unk19_7:1; }; struct BattleMove @@ -378,10 +378,10 @@ struct BattleMove struct PokemonStorage { - /* 0x00 */ u8 currentBox; - /* 0x01 */ struct BoxPokemon boxes[14][30]; - u8 boxNames[14][9]; - u8 unkArray[14]; + /*0x00*/ u8 currentBox; + /*0x01*/ struct BoxPokemon boxes[14][30]; + u8 boxNames[14][9]; + u8 unkArray[14]; }; struct Evolution diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h index 3f7ed8fad..71259c887 100644 --- a/include/pokemon_summary_screen.h +++ b/include/pokemon_summary_screen.h @@ -3,7 +3,7 @@ extern const u8 *const gNatureNames[]; -void ShowPokemonSummaryScreen(struct Pokemon *, u8, u8, void (*)(u8), int); +void ShowPokemonSummaryScreen(struct Pokemon *, u8, u8, void (*)(void), int); void sub_809D9F0(struct Pokemon *party, u8, u8, void *, u32); void sub_809D9F0(struct Pokemon *, u8, u8, void *, u32); u8 sub_809FA30(void); diff --git a/include/rom3.h b/include/rom3.h index 8e99f8de4..a45ec7dc4 100644 --- a/include/rom3.h +++ b/include/rom3.h @@ -13,13 +13,53 @@ void sub_800C1A8(u8); void sub_800C35C(void); void sub_800C47C(u8); void EmitGetAttributes(u8 a, u8 b, u8 c); +void dp01_build_cmdbuf_x01_a_b_0(u8 a, u8 b, u8 c); +void EmitSetAttributes(u8 a, u8 b, u8 c, u8 d, u8 *e); void dp01_build_cmdbuf_x04_4_4_4(u8 a); void sub_800C704(u8, u8, u8); +void dp01_build_cmdbuf_x06_a(u8 a, u8 b); void dp01_build_cmdbuf_x07_7_7_7(u8 a); +void dp01_build_cmdbuf_x08_8_8_8(u8 a); +void dp01_build_cmdbuf_x09_9_9_9(u8 a); +void EmitFaintAnimation(u8 a); +void dp01_build_cmdbuf_x0B_B_B_B(u8 a); +void dp01_build_cmdbuf_x0C_C_C_C(u8 a); +void dp01_build_cmdbuf_x0D_a(u8 a, u8 b); +void EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, u8 *g); +void EmitPrintString(u8 a, u16 b); void dp01_build_cmdbuf_x12_a_bb(u8 a, u8 b, u16 c); +void sub_800CBA4(u8 a, u8 b, u8 c, u8 *d); +void sub_800CBE0(u8 a, u8 *b); +void dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f(u8 a, u8 b, u8 c, u8 d, u8 *e); +void dp01_build_cmdbuf_x17_17_17_17(u8 a); +void EmitHealthBarUpdate(u8 a, s16 b); +void EmitExpBarUpdate(u8 a, u8 b, s16 c); +void EmitStatusIconUpdate(u8 a, u32 b, u32 c); +void EmitStatusAnimation(u8 a, u8 b, u32 c); +void EmitStatusXor(u8 a, u8 b); void dp01_build_cmdbuf_x1D_1D_numargs_varargs(u8, u16, u8 *); +void dp01_build_cmdbuf_x21_a_bb(u8 a, u8 b, u16 c); +void dp01_build_cmdbuf_x22_a_three_bytes(u8 a, u8 b, u8 *c); +void dp01_build_cmdbuf_x23_aa_0(u8 a, u16 b); +void dp01_build_cmdbuf_x24_aa_0(u8 a, u16 b); +void dp01_build_cmdbuf_x25_25_25_25(u8 a); +void dp01_build_cmdbuf_x26_a(u8 a, u8 b); +void dp01_build_cmdbuf_x27_27_27_27(u8 a); +void dp01_build_cmdbuf_x28_28_28_28(u8 a); +void EmitHitAnimation(u8 a); +void dp01_build_cmdbuf_x2A_2A_2A_2A(u8 a); +void EmitEffectivenessSound(u8 a, u16 b); +void sub_800D074(u8 a, u16 b); +void EmitFaintingCry(u8 a); void EmitBattleIntroSlide(u8 a, u8 b); void dp01_build_cmdbuf_x2F_2F_2F_2F(u8 a); void dp01_build_cmdbuf_x30_TODO(u8 a, u8 *b, u8 c); +void dp01_build_cmdbuf_x31_31_31_31(u8 a); +void dp01_build_cmdbuf_x32_32_32_32(u8 a); +void EmitSpriteInvisibility(u8 a, u8 b); +void EmitBattleAnimation(u8 a, u8 b, u16 c); +void EmitLinkStandbyMsg(u8 a, u8 b); +void EmitResetActionMoveSelection(u8 a, u8 b); +void dp01_build_cmdbuf_x37_a(u8 a, u8 b); #endif // GUARD_ROM3_H diff --git a/include/songs.h b/include/songs.h index 8180ee67e..a813cc785 100644 --- a/include/songs.h +++ b/include/songs.h @@ -121,16 +121,16 @@ enum /*0x73*/ SE_TB_KON, /*0x74*/ SE_TB_KARA, /*0x75*/ SE_BIDORO, - SE_W085, - SE_W085B, - SE_W231, - SE_W171, - SE_W233, - SE_W233B, - SE_W145, - SE_W145B, - SE_W145C, - SE_W240, + /*0x76*/ SE_W085, + /*0x77*/ SE_W085B, + /*0x78*/ SE_W231, + /*0x79*/ SE_W171, + /*0x7A*/ SE_W233, + /*0x7B*/ SE_W233B, + /*0x7C*/ SE_W145, + /*0x7D*/ SE_W145B, + /*0x7E*/ SE_W145C, + /*0x7F*/ SE_W240, SE_W015, SE_W081, SE_W081B, diff --git a/ld_script.txt b/ld_script.txt index d9cf9bf7d..efd2c1d35 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -56,9 +56,7 @@ SECTIONS { asm/battle_3.o(.text); asm/battle_4.o(.text); asm/battle_5.o(.text); - asm/battle_6.o(.text); src/battle_6.o(.text); - asm/battle_6.o(.text_8030464); src/battle_7.o(.text); asm/battle_8.o(.text); asm/battle_9.o(.text); @@ -237,7 +235,7 @@ SECTIONS { asm/battle_transition.o(.text); src/battle_811DA74.o(.text); asm/battle_message.o(.text); - asm/choose_party.o(.text); + src/choose_party.o(.text); asm/cable_car.o(.text); asm/roulette_util.o(.text); asm/cable_car_util.o(.text); @@ -258,7 +256,7 @@ SECTIONS { src/roamer.o(.text); asm/battle_tower.o(.text); asm/use_pokeblock.o(.text); - asm/battle_anim_8137220.o(.text); + src/battle_anim_8137220.o(.text); src/player_pc.o(.text); src/intro.o(.text); src/field_region_map.o(.text); @@ -394,6 +392,7 @@ SECTIONS { data/pokemon_menu.o(.rodata); data/option_menu.o(.rodata); src/pokedex.o(.rodata); + src/trainer_card.o(.rodata); data/trainer_card.o(.rodata); src/battle_party_menu.o(.rodata); data/pokemon_storage_system.o(.rodata); @@ -453,7 +452,7 @@ SECTIONS { data/battle_transition.o(.rodata); data/battle_811DA74.o(.rodata); data/battle_message.o(.rodata); - data/choose_party.o(.rodata); + src/choose_party.o(.rodata); data/cable_car.o(.rodata); src/save.o(.rodata); data/field_effect_helpers.o(.rodata); diff --git a/src/battle_6.c b/src/battle_6.c index df2419f70..9ea3f240a 100644 --- a/src/battle_6.c +++ b/src/battle_6.c @@ -1,8 +1,27 @@ #include "global.h" #include "battle.h" +#include "battle_interface.h" #include "battle_message.h" +#include "data2.h" #include "menu_cursor.h" +#include "palette.h" +#include "pokemon.h" +#include "rom3.h" +#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 u16 gUnknown_030042A4; extern u16 gUnknown_030042A0; @@ -14,16 +33,42 @@ extern void (*gBattleBankFunc[])(void); extern u8 gActiveBank; extern u8 gActionSelectionCursor[]; extern u8 gDisplayedStringBattle[]; - -extern u16 gUnknown_030042C0; -extern u16 gUnknown_030041B4; -extern u16 gUnknown_03004288; -extern u16 gUnknown_03004280; +extern u8 gMoveSelectionCursor[]; +extern u8 gBattleBufferA[][0x200]; +extern u8 gBankInMenu; +extern u16 gBattlePartyID[]; +extern u8 gHealthboxIDs[]; +extern u8 gDoingBattleAnim; +extern u8 gObjectBankIDs[]; +extern u16 gBattleTypeFlags; +extern u8 gBattleOutcome; +extern void (*gAnimScriptCallback)(void); +extern bool8 gAnimScriptActive; +extern u16 gMovePowerMoveAnim; +extern u32 gMoveDmgMoveAnim; +extern u8 gHappinessMoveAnim; +extern u16 gWeatherMoveAnim; +extern u32 *gDisableStructMoveAnim; +extern u32 gPID_perBank[]; +extern u8 gBattleMonForms[]; +extern u16 gUnknown_02024DE8; +extern u8 gUnknown_02024E68[]; +extern struct SpriteTemplate gUnknown_02024E8C; +extern u8 gUnknown_0202F7C4; +extern u8 gUnknown_02038470[]; extern u16 gUnknown_030041B0; +extern u16 gUnknown_030041B4; extern u16 gUnknown_030041B8; +extern u16 gUnknown_03004280; +extern u16 gUnknown_03004288; +extern u16 gUnknown_030042A4; +extern u16 gUnknown_030042C0; +extern u8 gUnknown_03004344; +extern u8 gUnknown_0300434C[]; extern const u8 gUnknown_08400CA8[]; extern const u8 gUnknown_08400CF3[]; +extern const u8 gUnknown_08400D38[]; #if ENGLISH #define SUB_803037C_TILE_DATA_OFFSET 440 @@ -31,7 +76,952 @@ extern const u8 gUnknown_08400CF3[]; #define SUB_803037C_TILE_DATA_OFFSET 444 #endif -void sub_803037C(void) { +extern void sub_802C68C(void); +extern void sub_802E1B0(void); +extern void sub_802E3B4(); +extern void sub_802E220(); +extern void sub_802E2D4(); +extern void sub_802E004(void); +extern void sub_802DF30(void); +extern void sub_80325B8(void); +extern void PlayerBufferExecCompleted(void); +extern void bx_t1_healthbar_update(void); +extern void nullsub_91(void); +extern void sub_802D924(u8); +extern void sub_802E434(void); +extern bool8 mplay_80342A4(u8); +extern void move_anim_start_t2_for_situation(); +extern void bx_blink_t1(void); +extern void sub_8047858(); +extern u8 GetBankSide(u8); +extern void sub_80E43C0(); +extern void oamt_add_pos2_onto_pos1(); +extern void sub_8078B34(struct Sprite *); +extern void oamt_set_x3A_32(); +extern void sub_80318FC(); +extern bool8 IsDoubleBattle(void); +extern void sub_802D500(void); +extern void dp11b_obj_free(); +extern bool8 sub_8078874(u8); +extern bool8 move_anim_start_t3(); +extern void sub_802E460(void); +extern void b_link_standby_message(void); +extern void sub_802D18C(void); +extern void sub_802DF18(void); +extern void BufferStringBattle(); +extern void sub_80326EC(); +extern void ExecuteMoveAnim(); +extern void sub_8031F24(void); +extern void sub_80324BC(); +extern u8 sub_8031720(); +extern void bx_wait_t1(void); +extern u8 GetBankByPlayerAI(u8); +extern void sub_802DE10(void); +extern void sub_80105EC(struct Sprite *); +extern void sub_802D274(void); +extern void sub_802D23C(void); +extern u8 GetBankIdentity(u8); +extern void sub_8031AF4(); +extern void sub_80313A0(struct Sprite *); +extern void sub_802D204(void); +extern u8 sub_8079E90(); +extern void sub_802DEAC(void); +extern void sub_80312F0(struct Sprite *); +extern u8 sub_8077ABC(); +extern u8 sub_8077F68(); +extern u8 sub_8046400(); +extern void sub_802D798(void); +extern void bx_0802E404(void); + +u32 dp01_getattr_by_ch1_for_player_pokemon_(u8, u8 *); +void dp01_setattr_by_ch1_for_player_pokemon(u8); +void sub_802F934(u8, u8); +void sub_802FB2C(void); +void sub_8030190(void); +void sub_80304A8(void); +void sub_8030E38(struct Sprite *); +void task05_08033660(u8); +void sub_8031064(void); + +void PlayerHandleGetAttributes(void) +{ + u8 unkData[0x100]; + u32 offset = 0; + u8 r4; + s32 i; + + if (gBattleBufferA[gActiveBank][2] == 0) + { + offset += dp01_getattr_by_ch1_for_player_pokemon_(gBattlePartyID[gActiveBank], unkData); + } + else + { + r4 = gBattleBufferA[gActiveBank][2]; + for (i = 0; i < 6; i++) + { + if (r4 & 1) + offset += dp01_getattr_by_ch1_for_player_pokemon_(i, unkData + offset); + r4 >>= 1; + } + } + dp01_build_cmdbuf_x1D_1D_numargs_varargs(1, offset, unkData); + PlayerBufferExecCompleted(); +} + +// Duplicate of dp01_getattr_by_ch1_for_player_pokemon +u32 dp01_getattr_by_ch1_for_player_pokemon_(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_802ECF0(void) +{ + struct BattlePokemon battleMon; // I think this is a BattlePokemon + u8 *src = (u8 *)&gPlayerParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1]; + u8 *dst = (u8 *)&battleMon + gBattleBufferA[gActiveBank][1]; + u8 i; + + for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++) + dst[i] = src[i]; + dp01_build_cmdbuf_x1D_1D_numargs_varargs(1, gBattleBufferA[gActiveBank][2], dst); + PlayerBufferExecCompleted(); +} + +void PlayerHandleSetAttributes(void) +{ + u8 r4; + u8 i; + + if (gBattleBufferA[gActiveBank][2] == 0) + { + dp01_setattr_by_ch1_for_player_pokemon(gBattlePartyID[gActiveBank]); + } + else + { + r4 = gBattleBufferA[gActiveBank][2]; + for (i = 0; i < 6; i++) + { + if (r4 & 1) + dp01_setattr_by_ch1_for_player_pokemon(i); + r4 >>= 1; + } + } + PlayerBufferExecCompleted(); +} + +// Duplicate of sub_811EC68 +void dp01_setattr_by_ch1_for_player_pokemon(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_802F7CC(void) +{ + u8 *dst = (u8 *)&gPlayerParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1]; + u8 i; + + for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++) + dst[i] = gBattleBufferA[gActiveBank][3 + i]; + PlayerBufferExecCompleted(); +} + +void PlayerHandleLoadPokeSprite(void) +{ + sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank; + gBattleBankFunc[gActiveBank] = bx_0802E404; +} + +void PlayerHandleSendOutPoke(void) +{ + sub_8032AA8(gActiveBank, gBattleBufferA[gActiveBank][2]); + gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1]; + sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + gActionSelectionCursor[gActiveBank] = 0; + gMoveSelectionCursor[gActiveBank] = 0; + sub_802F934(gActiveBank, gBattleBufferA[gActiveBank][2]); + gBattleBankFunc[gActiveBank] = sub_802D798; +} + +void sub_802F934(u8 bank, u8 b) +{ + u16 species; + + sub_8032AA8(bank, b); + 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 PlayerHandleReturnPokeToBall(void) +{ + if (gBattleBufferA[gActiveBank][1] == 0) + { + ewram17810[gActiveBank].unk4 = 0; + gBattleBankFunc[gActiveBank] = sub_802FB2C; + } + else + { + FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); + DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); + sub_8043DB0(gHealthboxIDs[gActiveBank]); + PlayerBufferExecCompleted(); + } +} + +void sub_802FB2C(void) +{ + switch (ewram17810[gActiveBank].unk4) + { + case 0: + if (ewram17800[gActiveBank].unk0_2) + move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); + ewram17810[gActiveBank].unk4 = 1; + break; + case 1: + if (!ewram17810[gActiveBank].unk0_6) + { + ewram17810[gActiveBank].unk4 = 0; + move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 1); + gBattleBankFunc[gActiveBank] = sub_802DEAC; + } + } +} + +void PlayerHandleTrainerThrow(void) +{ + s16 r7; + + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + if (GetBankIdentity(gActiveBank) & 2) + r7 = 16; + else + r7 = -16; + } + else + { + r7 = 0; + } + sub_8031AF4(gSaveBlock2.playerGender, gActiveBank); + GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank)); + gObjectBankIDs[gActiveBank] = CreateSprite( + &gUnknown_02024E8C, + r7 + 80, + (8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80, + sub_8079E90(gActiveBank)); + 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_802D204; +} + +void PlayerHandleTrainerSlide(void) +{ + sub_8031AF4(gSaveBlock2.playerGender, gActiveBank); + GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank)); + gObjectBankIDs[gActiveBank] = CreateSprite( + &gUnknown_02024E8C, + 80, + (8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80, + 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_802D23C; +} + +void PlayerHandleTrainerSlideBack(void) +{ + 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; + oamt_set_x3A_32(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy); + StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 1); + gBattleBankFunc[gActiveBank] = sub_802D274; +} + +void sub_802FE7C(void) +{ + if (ewram17810[gActiveBank].unk4 == 0) + { + if (ewram17800[gActiveBank].unk0_2) + move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); + ewram17810[gActiveBank].unk4++; + } + else + { + if (ewram17810[gActiveBank].unk0_6 == 0) + { + ewram17810[gActiveBank].unk4 = 0; + sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + PlaySE12WithPanning(SE_POKE_DEAD, -64); + gSprites[gObjectBankIDs[gActiveBank]].data1 = 0; + gSprites[gObjectBankIDs[gActiveBank]].data2 = 5; + gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80105EC; + gBattleBankFunc[gActiveBank] = sub_802DE10; + } + } +} + +void sub_802FF60(void) +{ + BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, 0); + PlayerBufferExecCompleted(); +} + +void sub_802FF80(void) +{ + ewram17840.unk8 = 4; + gDoingBattleAnim = 1; + move_anim_start_t4(gActiveBank, gActiveBank, GetBankByPlayerAI(1), 3); + gBattleBankFunc[gActiveBank] = bx_wait_t1; +} + +void PlayerHandleBallThrow(void) +{ + u8 var = gBattleBufferA[gActiveBank][1]; + + ewram17840.unk8 = var; + gDoingBattleAnim = 1; + move_anim_start_t4(gActiveBank, gActiveBank, GetBankByPlayerAI(1), 3); + gBattleBankFunc[gActiveBank] = bx_wait_t1; +} + +void PlayerHandlePuase(void) +{ + u8 var = gBattleBufferA[gActiveBank][1]; + + // WTF is this?? + while (var != 0) + var--; + + PlayerBufferExecCompleted(); +} + +void PlayerHandleMoveAnimation(void) +{ + if (!mplay_80342A4(gActiveBank)) + { + 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. + PlayerBufferExecCompleted(); + } + else + { + ewram17810[gActiveBank].unk4 = 0; + gBattleBankFunc[gActiveBank] = sub_8030190; + } + } +} + +void sub_8030190(void) +{ + u16 r4 = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8); + u8 r7 = gBattleBufferA[gActiveBank][11]; + + switch (ewram17810[gActiveBank].unk4) + { + case 0: + if (ewram17800[gActiveBank].unk0_2 == 1 && ewram17800[gActiveBank].unk0_3 == 0) + { + ewram17800[gActiveBank].unk0_3 = 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 && r7 < 2) + { + move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6); + ewram17800[gActiveBank].unk0_3 = 0; + } + 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; + PlayerBufferExecCompleted(); + } + break; + } +} + +void PlayerHandlePrintString(void) +{ + gUnknown_030042A4 = 0; + gUnknown_030042A0 = 0; + BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 0x90, 2, 15); + gBattleBankFunc[gActiveBank] = sub_802DF18; +} + +void PlayerHandlePrintStringPlayerOnly(void) +{ + if (GetBankSide(gActiveBank) == 0) + PlayerHandlePrintString(); + else + PlayerBufferExecCompleted(); +} + +void sub_803037C(void) +{ int r4; gUnknown_030042A4 = 0; @@ -46,9 +1036,7 @@ void sub_803037C(void) { sub_814A5C0(0, 0xFFFF, 12, 11679, 0); for (r4 = 0; r4 < 4; r4++) - { nullsub_8(r4); - } sub_802E3E4(gActionSelectionCursor[gActiveBank], 0); @@ -56,3 +1044,464 @@ void sub_803037C(void) { InitWindow(&gUnknown_03004210, gDisplayedStringBattle, SUB_803037C_TILE_DATA_OFFSET, 2, 35); sub_8002F44(&gUnknown_03004210); } + +void nullsub_42() +{ +} + +void sub_8030468(void) +{ + sub_814A5C0(0, 0xFFFF, 12, 0x2D9F, 0); + sub_80304A8(); + gBattleBankFunc[gActiveBank] = sub_802C68C; +} + +void sub_80304A8(void) +{ + gUnknown_030042A4 = 0; + gUnknown_030042A0 = 320; + sub_802E1B0(); + gUnknown_03004344 = 0xFF; + sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0); + if (gBattleBufferA[gActiveBank][2] != 1) + { + InitWindow(&gUnknown_03004210, gUnknown_08400D38, 656, 23, 55); + sub_8002F44(&gUnknown_03004210); + } + sub_802E220(); + sub_802E2D4(); +} + +void PlayerHandleOpenBag(void) +{ + s32 i; + + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gBattleBankFunc[gActiveBank] = sub_802E004; + gBankInMenu = gActiveBank; + for (i = 0; i < 3; i++) + gUnknown_02038470[i] = gBattleBufferA[gActiveBank][1 + i]; +} + +void sub_8030594(void) +{ + s32 i; + + gUnknown_0300434C[gActiveBank] = CreateTask(TaskDummy, 0xFF); + gTasks[gUnknown_0300434C[gActiveBank]].data[0] = gBattleBufferA[gActiveBank][1] & 0xF; + ewram[0x16054] = gBattleBufferA[gActiveBank][1] >> 4; + ewram[0x1609D] = gBattleBufferA[gActiveBank][2]; + ewram[0x160C0] = gBattleBufferA[gActiveBank][3]; + for (i = 0; i < 3; i++) + gUnknown_02038470[i] = gBattleBufferA[gActiveBank][4 + i]; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gBattleBankFunc[gActiveBank] = sub_802DF30; + gBankInMenu = gActiveBank; +} + +void sub_8030674(void) +{ + sub_80325B8(); + BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, 0); + PlayerBufferExecCompleted(); +} + +void PlayerHandleHealthBarUpdate(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] = bx_t1_healthbar_update; +} + +void PlayerHandleExpBarUpdate(void) +{ + u8 r7 = gBattleBufferA[gActiveBank][1]; + + if (GetMonData(&gPlayerParty[r7], MON_DATA_LEVEL) >= 100) + { + PlayerBufferExecCompleted(); + } + else + { + u16 r4; + u8 taskId; + + load_gfxc_health_bar(1); + GetMonData(&gPlayerParty[r7], MON_DATA_SPECIES); // unused return value + r4 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8); + taskId = CreateTask(sub_802D924, 10); + gTasks[taskId].data[0] = r7; + gTasks[taskId].data[1] = r4; + gTasks[taskId].data[2] = gActiveBank; + gBattleBankFunc[gActiveBank] = nullsub_91; + } +} + +void PlayerHandleStatusIconUpdate(void) +{ + if (!mplay_80342A4(gActiveBank)) + { + sub_8045A5C(gHealthboxIDs[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], 9); + ewram17810[gActiveBank].unk0_4 = 0; + gBattleBankFunc[gActiveBank] = sub_802E434; + } +} + +void PlayerHandleStatusAnimation(void) +{ + if (!mplay_80342A4(gActiveBank)) + { + move_anim_start_t2_for_situation( + gBattleBufferA[gActiveBank][1], + gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8) | (gBattleBufferA[gActiveBank][4] << 16) | (gBattleBufferA[gActiveBank][5] << 24)); + gBattleBankFunc[gActiveBank] = sub_802E434; + } +} + +void PlayerHandleStatusXor(void) +{ + u8 val = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_STATUS) ^ gBattleBufferA[gActiveBank][1]; + + SetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_STATUS, &val); + PlayerBufferExecCompleted(); +} + +void sub_803097C(void) +{ + PlayerBufferExecCompleted(); +} + +void PlayerHandleDMATransfer(void) +{ + u32 val1 = gBattleBufferA[gActiveBank][1] + | (gBattleBufferA[gActiveBank][2] << 8) + | (gBattleBufferA[gActiveBank][3] << 16) + | (gBattleBufferA[gActiveBank][4] << 24); + u16 val2 = gBattleBufferA[gActiveBank][5] | (gBattleBufferA[gActiveBank][6] << 8); + + const u8 *src = &gBattleBufferA[gActiveBank][7]; + u8 *dst = (u8 *)val1; + u32 size = val2; + + while (1) + { + if (size <= 0x1000) + { + DmaCopy16(3, src, dst, size); + break; + } + DmaCopy16(3, src, dst, 0x1000); + src += 0x1000; + dst += 0x1000; + size -= 0x1000; + } + PlayerBufferExecCompleted(); +} + +void sub_8030A3C(void) +{ + PlayBGM(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); + PlayerBufferExecCompleted(); +} + +void sub_8030A6C(void) +{ + PlayerBufferExecCompleted(); +} + +void sub_8030A78(void) +{ + dp01_build_cmdbuf_x21_a_bb(1, 0, 0); + PlayerBufferExecCompleted(); +} + +void sub_8030A8C(void) +{ + dp01_build_cmdbuf_x22_a_three_bytes(1, 0, 0); + PlayerBufferExecCompleted(); +} + +void sub_8030AA0(void) +{ + dp01_build_cmdbuf_x23_aa_0(1, 0); + PlayerBufferExecCompleted(); +} + +void sub_8030AB4(void) +{ + dp01_build_cmdbuf_x24_aa_0(1, 0); + PlayerBufferExecCompleted(); +} + +void sub_8030AC8(void) +{ + gUnknown_020238C8.unk0_0 = 0; + PlayerBufferExecCompleted(); +} + +void sub_8030AE4(void) +{ + gUnknown_020238C8.unk0_0 = gBattleBufferA[gActiveBank][1]; + PlayerBufferExecCompleted(); +} + +void sub_8030B1C(void) +{ + gUnknown_020238C8.unk0_7 = 0; + PlayerBufferExecCompleted(); +} + +void sub_8030B34(void) +{ + gUnknown_020238C8.unk0_7 ^= 1; + PlayerBufferExecCompleted(); +} + +void PlayerHandleHitAnimation(void) +{ + if (gSprites[gObjectBankIDs[gActiveBank]].invisible == TRUE) + { + PlayerBufferExecCompleted(); + } + else + { + gDoingBattleAnim = 1; + gSprites[gObjectBankIDs[gActiveBank]].data1 = 0; + sub_8047858(gActiveBank); + gBattleBankFunc[gActiveBank] = bx_blink_t1; + } +} + +void sub_8030BCC(void) +{ + PlayerBufferExecCompleted(); +} + +void PlayerHandleEffectivenessSound(void) +{ + s8 pan; + + if (GetBankSide(gActiveBank) == 0) + pan = -64; + else + pan = 63; + PlaySE12WithPanning(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8), pan); + PlayerBufferExecCompleted(); +} + +void sub_8030C1C(void) +{ + PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); + PlayerBufferExecCompleted(); +} + +void PlayerHandleFaintingCry(void) +{ + u16 species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES); + + PlayCry3(species, -25, 5); + PlayerBufferExecCompleted(); +} + +void PlayerHandleIntroSlide(void) +{ + sub_80E43C0(gBattleBufferA[gActiveBank][1]); + gUnknown_02024DE8 |= 1; + PlayerBufferExecCompleted(); +} + +void PlayerHandleTrainerBallThrow(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[gSaveBlock2.playerGender].data, 0x100 + paletteNum * 16, 32); + gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = paletteNum; + taskId = CreateTask(task05_08033660, 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_8030E38(struct Sprite *sprite) +{ + u8 r4 = sprite->data5; + + FreeSpriteOamMatrix(sprite); + FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum)); + DestroySprite(sprite); + sub_80318FC(&gPlayerParty[gBattlePartyID[r4]], r4); + StartSpriteAnim(&gSprites[gObjectBankIDs[r4]], 0); +} + +void task05_08033660(u8 taskId) +{ + if (gTasks[taskId].data[1] < 31) + { + gTasks[taskId].data[1]++; + } + else + { + u8 savedActiveBank = gActiveBank; + + gActiveBank = gTasks[taskId].data[0]; + if (!IsDoubleBattle() || (gBattleTypeFlags & 0x40)) + { + gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank]; + sub_802F934(gActiveBank, 0); + } + else + { + gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank]; + sub_802F934(gActiveBank, 0); + gActiveBank ^= 2; + gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank]; + sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + sub_802F934(gActiveBank, 0); + gActiveBank ^= 2; + } + gBattleBankFunc[gActiveBank] = sub_802D500; + gActiveBank = savedActiveBank; + DestroyTask(taskId); + } +} + +void sub_8030FAC(void) +{ + if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == 0) + { + PlayerBufferExecCompleted(); + } + else + { + ewram17810[gActiveBank].unk0_0 = 1; + gUnknown_02024E68[gActiveBank] = sub_8044804(gActiveBank, (struct BattleInterfaceStruct2 *)&gBattleBufferA[gActiveBank][4], gBattleBufferA[gActiveBank][1], gBattleBufferA[gActiveBank][2]); + ewram17810[gActiveBank].unk5 = 0; + if (gBattleBufferA[gActiveBank][2] != 0) + ewram17810[gActiveBank].unk5 = 0x5D; + gBattleBankFunc[gActiveBank] = sub_8031064; + } +} + +void sub_8031064(void) +{ + if (ewram17810[gActiveBank].unk5++ > 0x5C) + { + ewram17810[gActiveBank].unk5 = 0; + PlayerBufferExecCompleted(); + } +} + +void sub_80310A4(void) +{ + if (ewram17810[gActiveBank].unk0_0) + gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0; + PlayerBufferExecCompleted(); +} + +void sub_80310F0(void) +{ + dp11b_obj_free(gActiveBank, 1); + dp11b_obj_free(gActiveBank, 0); + PlayerBufferExecCompleted(); +} + +void PlayerHandleSpriteInvisibility(void) +{ + if (sub_8078874(gActiveBank)) + { + gSprites[gObjectBankIDs[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1]; + sub_8031F88(gActiveBank); + } + PlayerBufferExecCompleted(); +} + +void PlayerHandleBattleAnimation(void) +{ + if (!mplay_80342A4(gActiveBank)) + { + u8 val2 = gBattleBufferA[gActiveBank][1]; + u16 val = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8); + + if (move_anim_start_t3(gActiveBank, gActiveBank, gActiveBank, val2, val)) + PlayerBufferExecCompleted(); + else + gBattleBankFunc[gActiveBank] = sub_802E460; + } +} + +void PlayerHandleLinkStandbyMsg(void) +{ + switch (gBattleBufferA[gActiveBank][1]) + { + case 0: + b_link_standby_message(); + // fall through + case 1: + dp11b_obj_free(gActiveBank, 1); + dp11b_obj_free(gActiveBank, 0); + break; + case 2: + b_link_standby_message(); + break; + } + PlayerBufferExecCompleted(); +} + +void PlayerHandleResetActionMoveSelection(void) +{ + switch (gBattleBufferA[gActiveBank][1]) + { + case 0: + gActionSelectionCursor[gActiveBank] = 0; + gMoveSelectionCursor[gActiveBank] = 0; + break; + case 1: + gActionSelectionCursor[gActiveBank] = 0; + break; + case 2: + gMoveSelectionCursor[gActiveBank] = 0; + break; + } + PlayerBufferExecCompleted(); +} + +void sub_80312A0(void) +{ + gBattleOutcome = gBattleBufferA[gActiveBank][1]; + FadeOutMapMusic(5); + BeginFastPaletteFade(3); + PlayerBufferExecCompleted(); + gBattleBankFunc[gActiveBank] = sub_802D18C; +} + +void nullsub_43(void) +{ +} diff --git a/src/battle_811DA74.c b/src/battle_811DA74.c index 743dd2554..42c700844 100644 --- a/src/battle_811DA74.c +++ b/src/battle_811DA74.c @@ -35,15 +35,7 @@ struct UnknownStruct3 u8 ppBonuses; }; -struct UnknownStruct5 -{ - u8 unk0_0:7; - u8 unk0_7:1; -}; - extern u16 gBattleTypeFlags; - -extern struct UnknownStruct5 gUnknown_020238C8; extern u8 gDisplayedStringBattle[]; extern u8 gBattleBufferA[][0x200]; extern u8 gActiveBank; @@ -433,6 +425,7 @@ void LinkPartnerHandleGetAttributes(void) LinkPartnerBufferExecCompleted(); } +// Duplicate of dp01_getattr_by_ch1_for_player_pokemon_ u32 dp01_getattr_by_ch1_for_player_pokemon(u8 a, u8 *buffer) { struct BattlePokemon battlePokemon; @@ -765,6 +758,7 @@ void LinkPartnerHandleSetAttributes(void) LinkPartnerBufferExecCompleted(); } +// Duplicate of dp01_setattr_by_ch1_for_player_pokemon void sub_811EC68(u8 a) { struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBank][3]; diff --git a/src/battle_anim_8137220.c b/src/battle_anim_8137220.c new file mode 100644 index 000000000..42d6cb8da --- /dev/null +++ b/src/battle_anim_8137220.c @@ -0,0 +1,1486 @@ +#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" +#include "palette.h" +#include "pokemon.h" +#include "rom3.h" +#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 u8 gBattleBufferA[][0x200]; +extern u8 gObjectBankIDs[]; +extern MainCallback gPreBattleCallback1; +extern bool8 gDoingBattleAnim; +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); +extern void dp01_build_cmdbuf_x23_aa_0(u8, u16); + +extern void nullsub_14(void); +extern void PrepareBagForWallyTutorial(void); +extern void sub_8141828(); +extern void sub_8045A5C(); +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) +{ +} + +void SetBankFuncToWallyBufferRunCommand(void) +{ + gBattleBankFunc[gActiveBank] = WallyBufferRunCommand; + ewram[0x160A8] = 0; + ewram[0x160A9] = 0; + ewram[0x160AA] = 0; + ewram[0x160AB] = 0; +} + +void WallyBufferRunCommand(void) +{ + if (gBattleExecBuffer & gBitTable[gActiveBank]) + { + if (gBattleBufferA[gActiveBank][0] < 0x39) + gWallyBufferCommands[gBattleBufferA[gActiveBank][0]](); + else + WallyBufferExecCompleted(); + } +} + +void sub_81372BC(void) +{ + u8 r4; + + switch (ewram[0x160A8]) + { + case 0: + ewram[0x160AA] = 64; + ewram[0x160A8]++; + // fall through + case 1: + r4 = --ewram[0x160AA]; + if (r4 == 0) + { + PlaySE(SE_SELECT); + dp01_build_cmdbuf_x21_a_bb(1, 0, 0); + WallyBufferExecCompleted(); + ewram[0x160A8]++; + ewram[0x160A9] = r4; + ewram[0x160AA] = 64; + } + break; + case 2: + r4 = --ewram[0x160AA]; + if (r4 == 0) + { + PlaySE(SE_SELECT); + dp01_build_cmdbuf_x21_a_bb(1, 0, 0); + WallyBufferExecCompleted(); + ewram[0x160A8]++; + ewram[0x160A9] = r4; + ewram[0x160AA] = 64; + } + break; + case 3: + r4 = --ewram[0x160AA]; + if (r4 == 0) + { + dp01_build_cmdbuf_x21_a_bb(1, 9, 0); + WallyBufferExecCompleted(); + ewram[0x160A8]++; + ewram[0x160A9] = r4; + ewram[0x160AA] = 64; + } + break; + case 4: + if (--ewram[0x160AA] == 0) + { + PlaySE(SE_SELECT); + nullsub_8(0); + sub_802E3E4(1, 0); + ewram[0x160AA] = 64; + ewram[0x160A8]++; + } + break; + case 5: + if (--ewram[0x160AA] == 0) + { + PlaySE(SE_SELECT); + DestroyMenuCursor(); + dp01_build_cmdbuf_x21_a_bb(1, 1, 0); + WallyBufferExecCompleted(); + } + break; + } +} + +void sub_813741C(void) +{ + if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) + WallyBufferExecCompleted(); +} + +void sub_8137454(void) +{ + if (gUnknown_03004210.state == 0) + WallyBufferExecCompleted(); +} + +void sub_813746C(void) +{ + if (!gPaletteFade.active) + { + gMain.inBattle = FALSE; + gMain.callback1 = gPreBattleCallback1; + SetMainCallback2(gMain.savedCallback); + } +} + +void bx_wait_t5(void) +{ + if (!gDoingBattleAnim) + WallyBufferExecCompleted(); +} + +void sub_81374C4(void) +{ + if (!gPaletteFade.active) + { + gBattleBankFunc[gActiveBank] = sub_81374FC; + nullsub_14(); + PrepareBagForWallyTutorial(); + } +} + +void sub_81374FC(void) +{ + if (gMain.callback2 == sub_800F808 + && !gPaletteFade.active) + { + dp01_build_cmdbuf_x23_aa_0(1, gScriptItemId); + WallyBufferExecCompleted(); + } +} + +void sub_8137538(void) +{ + if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7) + sub_8141828(gActiveBank, &gPlayerParty[gBattlePartyID[gActiveBank]]); + + if (!ewram17810[gActiveBank ^ 2].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_7) + sub_8141828(gActiveBank ^ 2, &gPlayerParty[gBattlePartyID[gActiveBank ^ 2]]); + + if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_3) + { + if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) + { + DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank ^ 2]]); + sub_8045A5C(gHealthboxIDs[gActiveBank ^ 2], &gPlayerParty[gBattlePartyID[gActiveBank ^ 2]], 0); + sub_804777C(gActiveBank ^ 2); + sub_8043DFC(gHealthboxIDs[gActiveBank ^ 2]); + } + DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]); + sub_8045A5C(gHealthboxIDs[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], 0); + sub_804777C(gActiveBank); + sub_8043DFC(gHealthboxIDs[gActiveBank]); + ewram17840.unk9_0 = 0; + gBattleBankFunc[gActiveBank] = sub_81376B8; + } +} + +void sub_81376B8(void) +{ + bool8 r4 = FALSE; + + if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy) + r4 = TRUE; + if (r4 && ewram17810[gActiveBank].unk1_0 && ewram17810[gActiveBank ^ 2].unk1_0) + { + ewram17810[gActiveBank].unk0_7 = 0; + ewram17810[gActiveBank].unk1_0 = 0; + ewram17810[gActiveBank ^ 2].unk0_7 = 0; + ewram17810[gActiveBank ^ 2].unk1_0 = 0; + FreeSpriteTilesByTag(0x27F9); + FreeSpritePaletteByTag(0x27F9); + CreateTask(c3_0802FDF4, 10); + sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + WallyBufferExecCompleted(); + } +} + +void sub_81377B0(void) +{ + s16 r4; + + r4 = sub_8045C78(gActiveBank, gHealthboxIDs[gActiveBank], 0, 0); + sub_8043DFC(gHealthboxIDs[gActiveBank]); + if (r4 != -1) + { + sub_80440EC(gHealthboxIDs[gActiveBank], r4, 0); + } + else + { + sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank); + WallyBufferExecCompleted(); + } +} + +void bx_blink_t5(void) +{ + u8 spriteId = gObjectBankIDs[gActiveBank]; + + if (gSprites[spriteId].data1 == 32) + { + gSprites[spriteId].data1 = 0; + gSprites[spriteId].invisible = FALSE; + gDoingBattleAnim = FALSE; + WallyBufferExecCompleted(); + } + else + { + if (((u16)gSprites[spriteId].data1 % 4) == 0) + gSprites[spriteId].invisible ^= 1; + gSprites[spriteId].data1++; + } +} + +void sub_813789C(void) +{ + if (!ewram17810[gActiveBank].unk0_6) + { + FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); + DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); + sub_8043DB0(gHealthboxIDs[gActiveBank]); + WallyBufferExecCompleted(); + } +} + +// Duplicate of sub_813741C +void sub_8137908(void) +{ + if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy) + WallyBufferExecCompleted(); +} + +void sub_8137940(void) +{ + if (!ewram17810[gActiveBank].unk0_5) + WallyBufferExecCompleted(); +} + +void WallyBufferExecCompleted(void) +{ + gBattleBankFunc[gActiveBank] = WallyBufferRunCommand; + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + u8 multiplayerId = GetMultiplayerId(); + + dp01_prepare_buffer_wireless_probably(2, 4, &multiplayerId); + gBattleBufferA[gActiveBank][0] = 0x38; + } + else + { + gBattleExecBuffer &= ~gBitTable[gActiveBank]; + } +} + +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); +#ifdef ENGLISH + InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 440, 2, 35); +#else + InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 444, 2, 35); +#endif + 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) +{ +} diff --git a/src/battle_party_menu.c b/src/battle_party_menu.c index 96b68adba..cf572642e 100644 --- a/src/battle_party_menu.c +++ b/src/battle_party_menu.c @@ -18,30 +18,43 @@ #include "task.h" #include "text.h" -#define DATA_COUNT (6) - extern u8 ewram[]; - -struct Unk201B000 -{ - //u8 filler0[0x260]; - struct Pokemon unk0[6]; - u8 filler258[1]; - u8 unk259; - u8 filler25A[6]; - u8 unk260; - u8 unk261; - u8 filler262[2]; - s16 unk264[DATA_COUNT * 2]; // This may be a union - u8 filler27C[2]; - s16 unk27E; - s16 unk280; - s16 unk282; -}; - -#define ewram1B000 (*(struct Unk201B000 *)(ewram + 0x1B000)) #define UNK_201606C_ARRAY (ewram + 0x1606C) // lazy define but whatever. +extern u8 IsLinkDoubleBattle(void); +extern void TryCreatePartyMenuMonIcon(u8, u8, struct Pokemon *); +extern void LoadHeldItemIconGraphics(void); +extern void CreateHeldItemIcons_806DC34(); +extern u8 sub_806BD58(u8, u8); +extern void PartyMenuPrintMonsLevelOrStatus(void); +extern void PrintPartyMenuMonNicknames(void); +extern void PartyMenuTryPrintMonsHP(void); +extern void nullsub_13(void); +extern void PartyMenuDrawHPBars(void); +extern u8 sub_806B58C(u8); +extern u8 GetItemEffectType(); +extern void sub_806E750(u8, const struct PartyPopupMenu *, const struct PartyMenuItem *, int); +extern u16 sub_806BD80(); +extern u8 sub_806CA38(); +extern void sub_806D5A4(void); +extern void sub_802E414(void); +extern void sub_80A6DCC(void); +extern void sub_806AF4C(); +extern u8 sub_80F9344(void); +extern u8 sub_806B124(void); +extern void sub_806C994(); +extern void sub_806BF74(); +extern void sub_806AEDC(void); +extern TaskFunc PartyMenuGetPopupMenuFunc(u8, const struct PartyPopupMenu *, const struct PartyMenuItem *, u8); +extern void sub_806E7D0(u8, const struct PartyPopupMenu *); +extern u8 *sub_8040D08(); +extern void sub_8040B8C(void); +extern void sub_806E6F0(); +extern void sub_806D538(); +extern void nullsub_14(); +extern void OpenPartyMenu(); +extern u8 sub_803FBBC(void); + extern u16 gScriptItemId; extern u8 gPlayerPartyCount; extern u8 gNoOfAllBanks; @@ -562,7 +575,7 @@ static void Task_8095330(u8 taskId) } } -static void Task_809535C(u8 taskId) +static void Task_809535C(void) { gPaletteFade.bufferTransferDisabled = TRUE; sub_806AF4C(1, 0xFF, SetUpBattlePokemonMenu, 5); diff --git a/src/choose_party.c b/src/choose_party.c new file mode 100644 index 000000000..63e9c8477 --- /dev/null +++ b/src/choose_party.c @@ -0,0 +1,1071 @@ +#include "global.h" +#include "decoration.h" +#include "field_fadetransition.h" +#include "main.h" +#include "menu.h" +#include "name_string_util.h" +#include "palette.h" +#include "party_menu.h" +#include "pokemon.h" +#include "pokemon_summary_screen.h" +#include "rom4.h" +#include "script.h" +#include "songs.h" +#include "sound.h" +#include "strings.h" +#include "string_util.h" +#include "task.h" +#include "text.h" + +struct UnknownPokemonStruct2 +{ + /*0x00*/ u16 species; + /*0x02*/ u16 heldItem; + /*0x04*/ u8 nickname[11]; + /*0x0F*/ u8 level; + /*0x10*/ u16 hp; + /*0x12*/ u16 maxhp; + /*0x14*/ u32 status; + /*0x18*/ u32 personality; + /*0x1C*/ u8 gender; + /*0x1D*/ u8 language; +}; + +extern u8 gSelectedOrderFromParty[]; +extern u8 gPlayerPartyCount; +extern u8 gLastFieldPokeMenuOpened; +extern u8 gUnknown_020384F0; +extern struct UnknownPokemonStruct2 gUnknown_02023A00[]; +extern u8 gUnknown_0202E8F6; +extern struct Pokemon gUnknown_030042FC[]; +extern const u16 gBattleTowerBanlist[]; + +extern void OpenPartyMenu(); +extern void TryCreatePartyMenuMonIcon(u8, u8, struct Pokemon *); +extern void LoadHeldItemIconGraphics(void); +extern void CreateHeldItemIcons_806DC34(); +extern u8 sub_806BD58(u8, u8); +extern void PartyMenuPrintMonsLevelOrStatus(void); +extern void PrintPartyMenuMonNicknames(void); +extern void sub_806BC3C(u8, u8); +extern u8 sub_806B58C(u8); +extern void sub_806D538(); +extern u16 sub_806BE38(); +extern u8 sub_806CA38(); +extern void sub_808B5B4(); +extern TaskFunc PartyMenuGetPopupMenuFunc(u8, const struct PartyPopupMenu *, const struct PartyMenuItem *, u8); +extern u8 sub_806B124(); +extern void sub_806C994(); +extern void sub_806C658(); +extern void sub_806AEDC(void); +extern void sub_806AF4C(); +extern void ShowPokemonSummaryScreen(struct Pokemon *, u8, u8, void (*)(void), int); +extern void sub_806C890(); +extern void sub_806D5A4(); +extern void sub_806B908(void); +extern void CreateMonIcon_806D99C(int, u8, int, struct UnknownPokemonStruct2 *); +extern void sub_806D50C(int, u8); +extern void CreatePartyMenuMonIcon(); +extern void CreateHeldItemIcon_806DCD4(int, u8, int); +extern u8 GetMonStatusAndPokerus(); +extern void PartyMenuPrintHP(); +extern void PartyMenuPutStatusTilemap(u8, int, u8); +extern void PartyMenuPrintLevel(); +extern void PartyMenuPutNicknameTilemap(); +extern void PrintPartyMenuMonNickname(); +extern void PartyMenuDrawHPBar(); +extern bool8 sub_80F9344(void); +extern void sub_806D4AC(); +extern void sub_806D3B4(); +extern void PartyMenuDoPrintLevel(u8, u8, u8); +extern void PartyMenuDoDrawHPBar(u8, u8, u16, u16); +extern void PartyMenuDoPutNicknameTilemap(u16, u8, u8, u8, const u8 *); +extern void box_print(u8, int, const u8 *); +extern void sub_806BCE8(void); +extern void sub_806E750(u8, const struct PartyPopupMenu *, const struct PartyMenuItem *, int); +extern u16 sub_806BD80(); +extern void sub_806BF74(); + +static void ClearPartySelection(void); +static bool8 IsMonAllowedInBattleTower(struct Pokemon *); +static void sub_812238C(u8); +static void sub_8122450(u8); +static void sub_81224A8(u8); +static void sub_8122728(u8); +static void BattleTowerEntryMenuCallback_Exit(u8); +static void sub_81228E8(u8); +static void sub_8122950(u8); +static void sub_81229B8(void); +static void sub_8122AB8(u8); +static void sub_8122B10(u8); +static void sub_8122C18(u8); +static void Task_DaycareStorageMenu8122EAC(u8); +void sub_8123138(u8); +static void sub_8123170(u8); +static void sub_81231AC(void); + +void sub_8121E10(void) +{ + ClearPartySelection(); + ewram1B000.unk263 = 0; + OpenPartyMenu(4, 0); +} + +void sub_8121E34(void) +{ + ClearPartySelection(); + ewram1B000.unk263 = 1; + OpenPartyMenu(4, 0); +} + +static void ClearPartySelection(void) +{ + u8 i; + + for (i = 0; i < 3; i++) + gSelectedOrderFromParty[i] = 0; +} + +bool8 sub_8121E78(void) +{ + u8 i; + + switch (ewram1B000_alt.unk264) + { + case 0: + if (ewram1B000_alt.unk266 < gPlayerPartyCount) + { + TryCreatePartyMenuMonIcon(ewram1B000_alt.unk260, ewram1B000_alt.unk266, &gPlayerParty[ewram1B000_alt.unk266]); + ewram1B000_alt.unk266++; + } + else + { + ewram1B000_alt.unk266 = 0; + ewram1B000_alt.unk264++; + } + break; + case 1: + LoadHeldItemIconGraphics(); + ewram1B000_alt.unk264++; + break; + case 2: + CreateHeldItemIcons_806DC34(ewram1B000_alt.unk260); + ewram1B000_alt.unk264++; + break; + case 3: + if (sub_806BD58(ewram1B000_alt.unk260, ewram1B000_alt.unk266) == 1) + { + ewram1B000_alt.unk266 = 0; + ewram1B000_alt.unk264++; + } + else + { + ewram1B000_alt.unk266++; + } + break; + case 4: + PartyMenuPrintMonsLevelOrStatus(); + ewram1B000_alt.unk264++; + break; + case 5: + PrintPartyMenuMonNicknames(); + ewram1B000_alt.unk264++; + break; + case 6: + for (i = 0; i < gPlayerPartyCount; i++) + { + u8 j; + + for (j = 0; j < 3; j++) + { + if (gSelectedOrderFromParty[j] == i + 1) + { + sub_806BC3C(i, j * 14 + 0x1C); + break; + } + } + if (j == 3) + { + if (IsMonAllowedInBattleTower(&gPlayerParty[i]) == TRUE) + sub_806BC3C(i, 0x70); + else + sub_806BC3C(i, 0x7E); + } + } + ewram1B000_alt.unk264++; + break; + case 7: + if (sub_806B58C(ewram1B000_alt.unk266) == 1) + { + ewram1B000_alt.unk266 = 0; + ewram1B000_alt.unk264 = 0; + return TRUE; + } + else + { + ewram1B000_alt.unk266++; + } + break; + } + return FALSE; +} + +#ifdef NONMATCHING +static bool8 IsMonAllowedInBattleTower(struct Pokemon *pkmn) +{ + u16 r3; + s32 i; + + if (GetMonData(pkmn, MON_DATA_IS_EGG)) + return FALSE; + + if (ewram1B000.unk263 == 0) + { + if (GetMonData(pkmn, MON_DATA_HP) == 0) + return FALSE; + else + return TRUE; + } + + if ((gSaveBlock2.filler_A8.var_4AC & 1) == 0 + && GetMonData(pkmn, MON_DATA_LEVEL) > 50) + return FALSE; + + r3 = GetMonData(pkmn, MON_DATA_SPECIES); + // Can't stop the compiler from optimizing out the first index + for (i = 0; gBattleTowerBanlist[i] != 0xFFFF; i++) + { + if (gBattleTowerBanlist[i] == r3) + return FALSE; + } + return TRUE; +} +#else +__attribute__((naked)) +static bool8 IsMonAllowedInBattleTower(struct Pokemon *pkmn) +{ + asm_unified( + "push {r4,lr}\n\ + adds r4, r0, 0\n\ + movs r1, 0x2D\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + bne _0812207C\n\ + ldr r0, _08122058 @ =0x0201b000\n\ + ldr r1, _0812205C @ =0x00000263\n\ + adds r0, r1\n\ + ldrb r0, [r0]\n\ + cmp r0, 0\n\ + bne _08122060\n\ + adds r0, r4, 0\n\ + movs r1, 0x39\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + beq _0812207C\n\ + b _081220B6\n\ + .align 2, 0\n\ +_08122058: .4byte 0x0201b000\n\ +_0812205C: .4byte 0x00000263\n\ +_08122060:\n\ + ldr r0, _08122080 @ =gSaveBlock2\n\ + ldr r1, _08122084 @ =0x00000554\n\ + adds r0, r1\n\ + ldrb r1, [r0]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _08122088\n\ + adds r0, r4, 0\n\ + movs r1, 0x38\n\ + bl GetMonData\n\ + cmp r0, 0x32\n\ + bls _08122088\n\ +_0812207C:\n\ + movs r0, 0\n\ + b _081220B8\n\ + .align 2, 0\n\ +_08122080: .4byte gSaveBlock2\n\ +_08122084: .4byte 0x00000554\n\ +_08122088:\n\ + adds r0, r4, 0\n\ + movs r1, 0xB\n\ + bl GetMonData\n\ + lsls r0, 16\n\ + lsrs r3, r0, 16\n\ + ldr r1, _081220C0 @ =gBattleTowerBanlist\n\ + movs r0, 0\n\ + lsls r0, 1\n\ + adds r2, r0, r1\n\ + ldrh r0, [r2]\n\ + ldr r1, _081220C4 @ =0x0000ffff\n\ + cmp r0, r1\n\ + beq _081220B6\n\ + adds r4, r1, 0\n\ + adds r1, r2, 0\n\ +_081220A8:\n\ + ldrh r0, [r1]\n\ + cmp r0, r3\n\ + beq _0812207C\n\ + adds r1, 0x2\n\ + ldrh r0, [r1]\n\ + cmp r0, r4\n\ + bne _081220A8\n\ +_081220B6:\n\ + movs r0, 0x1\n\ +_081220B8:\n\ + pop {r4}\n\ + pop {r1}\n\ + bx r1\n\ + .align 2, 0\n\ +_081220C0: .4byte gBattleTowerBanlist\n\ +_081220C4: .4byte 0x0000ffff\n" + ); +} +#endif + +static u8 sub_81220C8(void) +{ + u8 i; + + if (ewram1B000.unk263 == 0) + return 0xFF; + if (gSelectedOrderFromParty[2] == 0) + return 0x11; + for (i = 0; i < 2; i++) + { + u8 j; + + ewram1B000.unk282 = GetMonData(&gUnknown_030042FC[gSelectedOrderFromParty[i]], MON_DATA_SPECIES); + ewram1B000.unk280 = GetMonData(&gUnknown_030042FC[gSelectedOrderFromParty[i]], MON_DATA_HELD_ITEM); + for (j = i + 1; j < 3; j++) + { + if (ewram1B000.unk282 == GetMonData(&gUnknown_030042FC[gSelectedOrderFromParty[j]], MON_DATA_SPECIES)) + return 0x12; + if (ewram1B000.unk280 != 0 && ewram1B000.unk280 == GetMonData(&gUnknown_030042FC[gSelectedOrderFromParty[j]], MON_DATA_HELD_ITEM)) + return 0x13; + } + } + return 0xFF; +} + +//------------------------------------------------------------------------------ +// Battle Tower Entry Menu +//------------------------------------------------------------------------------ + +static void BattleTowerEntryMenuCallback_Summary(u8); +static void BattleTowerEntryMenuCallback_Enter(u8); +static void BattleTowerEntryMenuCallback_NoEntry(u8); +static void BattleTowerEntryMenuCallback_Exit(u8); + +static const struct PartyMenuItem sBattleTowerEntryMenuItems[] = +{ + {OtherText_Summary, BattleTowerEntryMenuCallback_Summary}, + {OtherText_Enter2, BattleTowerEntryMenuCallback_Enter}, + {OtherText_NoEntry, BattleTowerEntryMenuCallback_NoEntry}, + {gUnknownText_Exit, BattleTowerEntryMenuCallback_Exit}, +}; + +static const u8 gUnknown_084017D0[] = {1, 0, 3}; +static const u8 gUnknown_084017D3[] = {2, 0, 3}; +static const u8 gUnknown_084017D6[] = {0, 3}; + +static const struct PartyPopupMenu sBattleTowerEntryMenu[] = +{ + {ARRAY_COUNT(gUnknown_084017D0), 9, gUnknown_084017D0}, + {ARRAY_COUNT(gUnknown_084017D3), 9, gUnknown_084017D3}, + {ARRAY_COUNT(gUnknown_084017D6), 9, gUnknown_084017D6}, +}; + + +static bool8 IsPartyMemberAlreadySelected(u8 partyMember) +{ + u8 i; + + for (i = 0; i < 3; i++) + { + if (gSelectedOrderFromParty[i] == partyMember) + return TRUE; + } + return FALSE; +} + +static void sub_81221F8(u8 taskId) +{ + sub_806D538(5, 1); + if (IsMonAllowedInBattleTower(&gPlayerParty[gLastFieldPokeMenuOpened]) == TRUE) + { + if (IsPartyMemberAlreadySelected(gLastFieldPokeMenuOpened + 1) == TRUE) + { + gTasks[taskId].data[4] = 1; + sub_806E750(1, sBattleTowerEntryMenu, sBattleTowerEntryMenuItems, 0); + } + else + { + gTasks[taskId].data[4] = 0; + sub_806E750(0, sBattleTowerEntryMenu, sBattleTowerEntryMenuItems, 0); + } + } + else + { + gTasks[taskId].data[4] = 2; + sub_806E750(2, sBattleTowerEntryMenu, sBattleTowerEntryMenuItems, 0); + } +} + +void sub_81222B0(u8 taskId) +{ + if (!gPaletteFade.active) + { + switch (sub_806BE38(taskId)) + { + case 1: + PlaySE(SE_SELECT); + gLastFieldPokeMenuOpened = sub_806CA38(taskId); + if (gLastFieldPokeMenuOpened != 6) + { + GetMonNickname(&gPlayerParty[gLastFieldPokeMenuOpened], gStringVar1); + sub_81221F8(taskId); + gTasks[taskId].func = sub_812238C; + } + else + { + gTasks[taskId].func = sub_81224A8; + } + sub_808B5B4(taskId); + break; + case 2: + PlaySE(SE_SELECT); + ClearPartySelection(); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gTasks[taskId].func = sub_8122450; + break; + } + } +} + +// Handle input +static void sub_812238C(u8 taskId) +{ + if (!gPaletteFade.active) + { + if (gMain.newAndRepeatedKeys & 0x40) + { + if (GetMenuCursorPos() != 0) + { + PlaySE(SE_SELECT); + MoveMenuCursor(-1); + } + return; + } + if (gMain.newAndRepeatedKeys & 0x80) + { + if (GetMenuCursorPos() != 3) + { + PlaySE(SE_SELECT); + MoveMenuCursor(1); + } + return; + } + if (gMain.newKeys & A_BUTTON) + { + TaskFunc popupMenuFunc; + + PlaySE(SE_SELECT); + popupMenuFunc = PartyMenuGetPopupMenuFunc( + gTasks[taskId].data[4], + sBattleTowerEntryMenu, + sBattleTowerEntryMenuItems, + GetMenuCursorPos()); + popupMenuFunc(taskId); + return; + } + if (gMain.newKeys & B_BUTTON) + { + BattleTowerEntryMenuCallback_Exit(taskId); + return; + } + } +} + +// Return from menu? +static void sub_8122450(u8 taskId) +{ + if (!gPaletteFade.active) + { + SetMainCallback2(gMain.savedCallback); + DestroyTask(taskId); + } +} + +// Wait for A or B press +static void sub_8122480(u8 taskId) +{ + if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)) + BattleTowerEntryMenuCallback_Exit(taskId); +} + +static void sub_81224A8(u8 taskId) +{ + u8 val = sub_81220C8(); + + if (val != 0xFF) + { + sub_806D538(val, 0); + gTasks[taskId].func = sub_8122480; + } + else + { + if (gSelectedOrderFromParty[0] != 0) + { + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gTasks[taskId].func = sub_8122450; + } + else + { + PlaySE(SE_HAZURE); + sub_806D538(14, 0); + gTasks[taskId].func = sub_8122480; + } + } +} + +// CB2 for menu? +static void sub_8122530(void) +{ + while (1) + { + if (sub_806B124() == 1) + { + sub_806C994(ewram1B000.unk260, gUnknown_020384F0); + sub_806C658(ewram1B000.unk260, 0); + GetMonNickname(&gPlayerParty[gUnknown_020384F0], gStringVar1); + gLastFieldPokeMenuOpened = gUnknown_020384F0; + sub_81221F8(ewram1B000.unk260); + SetMainCallback2(sub_806AEDC); + break; + } + if (sub_80F9344() == 1) + break; + } +} + +static void sub_81225A4(void) +{ + gPaletteFade.bufferTransferDisabled = TRUE; + sub_806AF4C(4, 0xFF, sub_812238C, 5); + SetMainCallback2(sub_8122530); +} + +// Wait for fade, then show summary screen +static void sub_81225D4(u8 taskId) +{ + if (!gPaletteFade.active) + { + u8 r4 = gSprites[gTasks[taskId].data[3] >> 8].data0; + + DestroyTask(taskId); + ewram1B000.unk262 = 1; + ShowPokemonSummaryScreen(gPlayerParty, r4, gPlayerPartyCount - 1, sub_81225A4, 0); + } +} + +// Summary callback? +static void BattleTowerEntryMenuCallback_Summary(u8 taskId) +{ + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gTasks[taskId].func = sub_81225D4; +} + +static void BattleTowerEntryMenuCallback_Enter(u8 taskId) +{ + u8 i; + + for (i = 0; i < 3; i++) + { + if (gSelectedOrderFromParty[i] == 0) + { + gSelectedOrderFromParty[i] = gLastFieldPokeMenuOpened + 1; + sub_806BC3C(gLastFieldPokeMenuOpened, i * 14 + 0x1C); + if (i == 2) + sub_806C890(taskId); + BattleTowerEntryMenuCallback_Exit(taskId); + return; + } + } + PlaySE(SE_HAZURE); + MenuZeroFillWindowRect(20, 10, 29, 19); + HandleDestroyMenuCursors(); + sub_806D5A4(); + sub_806E834(gOtherText_NoMoreThreePoke, 1); + gTasks[taskId].func = sub_8122728; +} + +static void sub_8122728(u8 taskId) +{ + if (gUnknown_0202E8F6 == 1) + return; + + if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)) + { + MenuZeroFillWindowRect(0, 14, 29, 19); + HandleDestroyMenuCursors(); + BattleTowerEntryMenuCallback_Exit(taskId); + } +} + +static void BattleTowerEntryMenuCallback_NoEntry(u8 taskId) +{ + u8 i; + + for (i = 0; i < 3; i++) + { + if (gSelectedOrderFromParty[i] == gLastFieldPokeMenuOpened + 1) + { + gSelectedOrderFromParty[i] = 0; + switch (i) + { + case 0: + gSelectedOrderFromParty[0] = gSelectedOrderFromParty[1]; + gSelectedOrderFromParty[1] = gSelectedOrderFromParty[2]; + gSelectedOrderFromParty[2] = 0; + break; + case 1: + gSelectedOrderFromParty[1] = gSelectedOrderFromParty[2]; + gSelectedOrderFromParty[2] = 0; + break; + } + break; // exit loop + } + } + sub_806BC3C(gLastFieldPokeMenuOpened, 0x70); + if (gSelectedOrderFromParty[0] != 0) + sub_806BC3C(gSelectedOrderFromParty[0] - 1, 0x1C); + if (gSelectedOrderFromParty[1] != 0) + sub_806BC3C(gSelectedOrderFromParty[1] - 1, 0x2A); + BattleTowerEntryMenuCallback_Exit(taskId); +} + +static void sub_81227FC(u8 taskId) +{ + MenuZeroFillWindowRect(20, 10, 29, 19); + HandleDestroyMenuCursors(); + sub_806D538(0, 0); + gTasks[taskId].func = sub_81222B0; +} + +static void BattleTowerEntryMenuCallback_Exit(u8 taskId) +{ + PlaySE(SE_SELECT); + sub_81227FC(taskId); +} + +bool8 sub_8122854(void) +{ + switch (ewram1B000_alt.unk264) + { + case 0: + sub_81228E8(ewram1B000_alt.unk260); + ewram1B000_alt.unk264++; + break; + case 1: + LoadHeldItemIconGraphics(); + ewram1B000_alt.unk264++; + break; + case 2: + sub_8122950(ewram1B000_alt.unk260); + ewram1B000_alt.unk264++; + break; + case 3: + sub_81229B8(); + ewram1B000_alt.unk264++; + break; + case 4: + sub_806B908(); + return TRUE; + } + return FALSE; +} + +static void sub_81228E8(u8 a) +{ + u8 i; + + for (i = 0; i < 3; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != 0) + CreatePartyMenuMonIcon(a, i, 3, &gPlayerParty[i]); + if (gUnknown_02023A00[i].species != 0) + { + CreateMonIcon_806D99C(a, i + 3, 3, &gUnknown_02023A00[i]); + sub_806D50C(a, i + 3); + } + } +} + +static void sub_8122950(u8 a) +{ + u8 i; + + for (i = 0; i < 3; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != 0) + { + u16 item = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); + + CreateHeldItemIcon_806DCD4(a, i, item); + } + if (gUnknown_02023A00[i].species != 0) + CreateHeldItemIcon_806DCD4(a, i + 3, gUnknown_02023A00[i].heldItem); + } +} + +static void sub_81229B8(void) +{ + u8 i; + + for (i = 0; i < 3; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != 0) + { + u8 status; + + PartyMenuPrintHP(i, 3, &gPlayerParty[i]); + status = GetMonStatusAndPokerus(&gPlayerParty[i]); + if (status != 0 && status != 6) + PartyMenuPutStatusTilemap(i, 3, status - 1); + else + PartyMenuPrintLevel(i, 3, &gPlayerParty[i]); + PartyMenuPutNicknameTilemap(i, 3, &gPlayerParty[i]); + PrintPartyMenuMonNickname(i, 3, &gPlayerParty[i]); + PartyMenuDrawHPBar(i, 3, &gPlayerParty[i]); + } + } +} + +void sub_8122A48(u8 taskId) +{ + if (!gPaletteFade.active) + { + gTasks[taskId].data[0] = 30; + sub_806D4AC(taskId, gUnknown_02023A00[0].species, 0); + sub_806D4AC(taskId, gUnknown_02023A00[1].species, 1); + sub_806D4AC(taskId, gUnknown_02023A00[2].species, 2); + gTasks[taskId].func = sub_8122AB8; + ewram1B000.unk261 = 1; + } +} + +static void sub_8122AB8(u8 taskId) +{ + sub_806D3B4(taskId, gUnknown_02023A00[1].species, gUnknown_02023A00[2].species); + if (gTasks[taskId].data[0] == 0) + { + gTasks[taskId].func = sub_8122B10; + ewram1B000.unk261 = 2; + PlaySE(SE_W231); + } +} + +static void sub_8122B10(u8 taskId) +{ + u8 i; + + for (i = 0; i < 3; i++) + { + if (gUnknown_02023A00[i].species != 0) + { + u8 r2; + + PartyMenuDoPrintHP(i + 3, 3, gUnknown_02023A00[i].hp, gUnknown_02023A00[i].maxhp); + if (gUnknown_02023A00[i].hp == 0) + r2 = 7; + else + r2 = pokemon_ailments_get_primary(gUnknown_02023A00[i].status); + if (r2 != 0) + PartyMenuPutStatusTilemap(i + 3, 3, r2 - 1); + else + PartyMenuDoPrintLevel(i + 3, 3, gUnknown_02023A00[i].level); + PartyMenuDoPutNicknameTilemap(gUnknown_02023A00[i].species, gUnknown_02023A00[i].gender, 3, i + 3, gUnknown_02023A00[i].nickname); + StringCopy(gStringVar1, gUnknown_02023A00[i].nickname); + StringGetEnd10(gStringVar1); + SanitizeNameString(gStringVar1); + box_print(i + 3, 3, gStringVar1); + PartyMenuDoDrawHPBar(i + 3, 3, gUnknown_02023A00[i].hp, gUnknown_02023A00[i].maxhp); + } + } + gTasks[taskId].func = sub_8122C18; + gTasks[taskId].data[0] = 0; +} + +static void sub_8122C18(u8 taskId) +{ + gTasks[taskId].data[0]++; + if (gTasks[taskId].data[0] == 256) + { + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gTasks[taskId].func = sub_8122450; + } +} + +// Exactly the same as sub_8121E78 except for case 6 +bool8 unref_sub_8122C60(void) +{ + switch (ewram1B000_alt.unk264) + { + case 0: + if (ewram1B000_alt.unk266 < gPlayerPartyCount) + { + TryCreatePartyMenuMonIcon(ewram1B000_alt.unk260, ewram1B000_alt.unk266, &gPlayerParty[ewram1B000_alt.unk266]); + ewram1B000_alt.unk266++; + } + else + { + ewram1B000_alt.unk266 = 0; + ewram1B000_alt.unk264++; + } + break; + case 1: + LoadHeldItemIconGraphics(); + ewram1B000_alt.unk264++; + break; + case 2: + CreateHeldItemIcons_806DC34(ewram1B000_alt.unk260); + ewram1B000_alt.unk264++; + break; + case 3: + if (sub_806BD58(ewram1B000_alt.unk260, ewram1B000_alt.unk266) == 1) + { + ewram1B000_alt.unk266 = 0; + ewram1B000_alt.unk264++; + } + else + { + ewram1B000_alt.unk266++; + } + break; + case 4: + PartyMenuPrintMonsLevelOrStatus(); + ewram1B000_alt.unk264++; + break; + case 5: + PrintPartyMenuMonNicknames(); + ewram1B000_alt.unk264++; + break; + case 6: + sub_806BCE8(); + ewram1B000_alt.unk264++; + break; + case 7: + if (sub_806B58C(ewram1B000_alt.unk266) == 1) + { + ewram1B000_alt.unk266 = 0; + ewram1B000_alt.unk264 = 0; + return TRUE; + } + else + { + ewram1B000_alt.unk266++; + } + break; + } + return FALSE; +} + +//------------------------------------------------------------------------------ +// Daycare Pokemon Storage Menu +//------------------------------------------------------------------------------ + +static void DaycareStorageMenuCallback_Store(u8); +static void DaycareStorageMenuCallback_Summary(u8); +static void DaycareStorageMenuCallback_Exit(u8); + +static const struct PartyMenuItem sDaycareStorageMenuItems[] = +{ + {OtherText_Store, DaycareStorageMenuCallback_Store}, + {OtherText_Summary, DaycareStorageMenuCallback_Summary}, + {gUnknownText_Exit, DaycareStorageMenuCallback_Exit}, +}; + +static const u8 gUnknown_08401808[] = {0, 1, 2}; +static const u8 gUnknown_0840180B[] = {1, 2}; + +static const struct PartyPopupMenu sDaycareStorageMenus[] = +{ + {ARRAY_COUNT(gUnknown_08401808), 9, gUnknown_08401808}, + {ARRAY_COUNT(gUnknown_0840180B), 9, gUnknown_0840180B}, +}; + +static void sub_8122D94(u8 taskId) +{ + if (!GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_IS_EGG)) + { + gTasks[taskId].data[4] = 0; + sub_806E750(0, sDaycareStorageMenus, sDaycareStorageMenuItems, 0); + } + else + { + gTasks[taskId].data[4] = 1; + sub_806E750(1, sDaycareStorageMenus, sDaycareStorageMenuItems, 0); + } +} + +void sub_8122E0C(u8 taskId) +{ + if (!gPaletteFade.active) + { + switch (sub_806BD80(taskId)) + { + case 1: + PlaySE(SE_SELECT); + gLastFieldPokeMenuOpened = sub_806CA38(taskId); + GetMonNickname(&gPlayerParty[gLastFieldPokeMenuOpened], gStringVar1); + sub_8122D94(taskId); + gTasks[taskId].func = Task_DaycareStorageMenu8122EAC; + break; + case 2: + PlaySE(SE_SELECT); + gLastFieldPokeMenuOpened = 0xFF; + gSpecialVar_0x8004 = 0xFF; + sub_8123138(taskId); + break; + } + } +} + +static void Task_DaycareStorageMenu8122EAC(u8 taskId) +{ + if (!gPaletteFade.active) + { + if (gMain.newAndRepeatedKeys & 0x40) + { + if (GetMenuCursorPos() != 0) + { + PlaySE(SE_SELECT); + MoveMenuCursor(-1); + } + return; + } + if (gMain.newAndRepeatedKeys & 0x80) + { + if (GetMenuCursorPos() != 3) + { + PlaySE(SE_SELECT); + MoveMenuCursor(1); + } + return; + } + if (gMain.newKeys & A_BUTTON) + { + TaskFunc popupMenuFunc; + + PlaySE(SE_SELECT); + popupMenuFunc = PartyMenuGetPopupMenuFunc( + gTasks[taskId].data[4], + sDaycareStorageMenus, + sDaycareStorageMenuItems, + GetMenuCursorPos()); + popupMenuFunc(taskId); + return; + } + if (gMain.newKeys & B_BUTTON) + { + DaycareStorageMenuCallback_Exit(taskId); + return; + } + } +} + +static void DaycareStorageMenuCallback_Store(u8 taskId) +{ + gSpecialVar_0x8004 = gLastFieldPokeMenuOpened; + sub_8123138(taskId); +} + +static void sub_8122F90(void) +{ + while (1) + { + if (sub_806B124() == 1) + { + sub_806C994(ewram1B000.unk260, gUnknown_020384F0); + sub_806BF74(ewram1B000.unk260, 0); + GetMonNickname(&gPlayerParty[gUnknown_020384F0], gStringVar1); + gLastFieldPokeMenuOpened = gUnknown_020384F0; + sub_8122D94(ewram1B000.unk260); + SetMainCallback2(sub_806AEDC); + break; + } + if (sub_80F9344() == 1) + break; + } +} + +static void sub_8123004(void) +{ + gPaletteFade.bufferTransferDisabled = TRUE; + sub_806AF4C(6, 0xFF, Task_DaycareStorageMenu8122EAC, 5); + SetMainCallback2(sub_8122F90); +} + +static void sub_8123034(u8 taskId) +{ + if (!gPaletteFade.active) + { + u8 r4 = gSprites[gTasks[taskId].data[3] >> 8].data0; + + DestroyTask(taskId); + ewram1B000.unk262 = 1; + ShowPokemonSummaryScreen(gPlayerParty, r4, gPlayerPartyCount - 1, sub_8123004, 0); + } +} + +static void DaycareStorageMenuCallback_Summary(u8 taskId) +{ + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gTasks[taskId].func = sub_8123034; +} + +static void DaycareStorageMenuCallback_Exit(u8 taskId) +{ + PlaySE(SE_SELECT); + MenuZeroFillWindowRect(20, 10, 29, 19); + HandleDestroyMenuCursors(); + sub_806D538(15, 0); + gTasks[taskId].func = sub_8122E0C; +} + +void sub_8123138(u8 taskId) +{ + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gTasks[taskId].func = sub_8123170; +} + +static void sub_8123170(u8 taskId) +{ + if (!gPaletteFade.active) + { + gFieldCallback = sub_81231AC; + SetMainCallback2(c2_exit_to_overworld_2_switch); + DestroyTask(taskId); + } +} + +// Do these last two functions really belong in here? + +static void sub_81231C4(u8); + +void sub_81231AC(void) +{ + pal_fill_black(); + CreateTask(sub_81231C4, 10); +} + +static void sub_81231C4(u8 taskId) +{ + if (sub_807D770() == TRUE) + { + DestroyTask(taskId); + ScriptContext2_Disable(); + EnableBothScriptContexts(); + } +} diff --git a/src/party_menu.c b/src/party_menu.c index af104d605..99bbb5f83 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -23,6 +23,14 @@ #include "string_util.h" #include "strings.h" #include "task.h" +#include "sprite.h" +#include "palette.h" +#include "event_data.h" +#include "main.h" +#include "item.h" +#include "battle_interface.h" +#include "species.h" +#include "party_menu.h" #define DATA_COUNT (6) @@ -33,19 +41,6 @@ struct Unk2001000 u8 unk2; }; -struct Unk201B000 -{ - u8 filler0[0x260]; - u8 unk260; - u8 unk261; - u8 filler262[2]; - s16 unk264[DATA_COUNT * 2]; // This may be a union - u8 filler27C[2]; - s16 unk27E; - s16 unk280; - s16 unk282; -}; - struct Unk201C000 { /*0x00*/ struct Pokemon *pokemon; @@ -74,7 +69,6 @@ struct UnknownStruct5 extern u8 ewram[]; #define ewram01000 (*(struct Unk2001000 *)(ewram + 0x01000)) -#define ewram1B000 (*(struct Unk201B000 *)(ewram + 0x1B000)) #define ewram1C000 (*(struct Unk201C000 *)(ewram + 0x1C000)) #define ewram1F000 (*(struct Unk201F000 *)(ewram + 0x1F000)) diff --git a/src/script_pokemon_util_80C4BF0.c b/src/script_pokemon_util_80C4BF0.c index ecfd8111b..cbca07011 100644 --- a/src/script_pokemon_util_80C4BF0.c +++ b/src/script_pokemon_util_80C4BF0.c @@ -31,7 +31,7 @@ extern struct SpriteTemplate gUnknown_02024E8C; extern u8 gContestPlayerMonIndex; extern u8 gIsLinkContest; extern u8 gPlayerPartyCount; -extern u8 gBufferedMoves[]; +extern u8 gSelectedOrderFromParty[]; extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8005; @@ -653,7 +653,7 @@ void sub_80C5568(void) void sub_80C5580(void) { - u8 var = gBufferedMoves[0]; + u8 var = gSelectedOrderFromParty[0]; switch(var) { @@ -676,7 +676,7 @@ void ChooseBattleTowerPlayerParty(void) void SetBattleTowerPlayerParty(void) { - u8 var = gBufferedMoves[0]; + u8 var = gSelectedOrderFromParty[0]; switch(var) { @@ -702,8 +702,8 @@ void ReducePlayerPartyToThree(void) // copy the selected pokemon according to the order. for(i = 0; i < 3; i++) - if(gBufferedMoves[i]) // as long as the order keeps going (did the player select 1 mon? 2? 3?), do not stop - party[i] = gPlayerParty[gBufferedMoves[i] - 1]; // index is 0 based, not literal + if(gSelectedOrderFromParty[i]) // as long as the order keeps going (did the player select 1 mon? 2? 3?), do not stop + party[i] = gPlayerParty[gSelectedOrderFromParty[i] - 1]; // index is 0 based, not literal // delete the last 3 pokemon CpuFill32(0, gPlayerParty, sizeof gPlayerParty); diff --git a/src/script_pokemon_util_80F99CC.c b/src/script_pokemon_util_80F99CC.c index 606cd9dd4..2b48cc0d8 100644 --- a/src/script_pokemon_util_80F99CC.c +++ b/src/script_pokemon_util_80F99CC.c @@ -3,6 +3,7 @@ #include "choose_party.h" #include "contest.h" #include "data2.h" +#include "party_menu.h" #include "field_fadetransition.h" #include "palette.h" #include "party_menu.h" @@ -16,6 +17,8 @@ #include "task.h" #include "text.h" + + extern u8 gPlayerPartyCount; extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8005; diff --git a/sym_ewram.txt b/sym_ewram.txt index 9f810eba7..42b0982ab 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -928,7 +928,7 @@ gUnknown_0203926A: @ 203926A gAbilitiesPerBank: @ 203926C .space 0x4 -gBufferedMoves: @ 2039270 +gSelectedOrderFromParty: @ 2039270 .space 0x4 gUnknown_02039274: @ 2039274 |