diff options
-rw-r--r-- | asm/party_menu.s | 5197 | ||||
-rw-r--r-- | asm/pokemon_storage_system.s | 2 | ||||
-rw-r--r-- | asm/pokemon_summary_screen.s | 60 | ||||
-rw-r--r-- | include/new_menu_helpers.h | 2 | ||||
-rw-r--r-- | include/party_menu.h | 3 | ||||
-rw-r--r-- | include/pokemon_icon.h | 2 | ||||
-rw-r--r-- | include/pokemon_summary_screen.h | 2 | ||||
-rw-r--r-- | include/quest_log.h | 1 | ||||
-rw-r--r-- | include/strings.h | 6 | ||||
-rw-r--r-- | src/new_menu_helpers.c | 2 | ||||
-rw-r--r-- | src/party_menu.c | 1455 | ||||
-rw-r--r-- | src/pokemon_icon.c | 2 | ||||
-rw-r--r-- | src/quest_log.c | 12 | ||||
-rw-r--r-- | src/trade.c | 10 | ||||
-rw-r--r-- | sym_ewram.txt | 2 |
15 files changed, 1504 insertions, 5254 deletions
diff --git a/asm/party_menu.s b/asm/party_menu.s index c394b4917..32674fea2 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -5,5203 +5,6 @@ .text - thumb_func_start sub_8120F78 -sub_8120F78: @ 8120F78 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _08120F90 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _08120F94 - movs r0, 0 - b _08120FA4 - .align 2, 0 -_08120F90: .4byte gMain -_08120F94: - ldr r0, _08120FA8 @ =sPartyMenuInternal - ldr r1, [r0] - ldr r0, _08120FAC @ =sub_8120FB0 - str r0, [r1, 0x4] - adds r0, r2, 0 - bl Task_ClosePartyMenu - movs r0, 0x1 -_08120FA4: - pop {r1} - bx r1 - .align 2, 0 -_08120FA8: .4byte sPartyMenuInternal -_08120FAC: .4byte sub_8120FB0 - thumb_func_end sub_8120F78 - - thumb_func_start sub_8120FB0 -sub_8120FB0: @ 8120FB0 - push {lr} - bl FreeRestoreBattleData - bl LoadPlayerParty - bl SetTeachyTvControllerModeToResume - ldr r0, _08120FC8 @ =CB2_ReturnToTeachyTV - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_08120FC8: .4byte CB2_ReturnToTeachyTV - thumb_func_end sub_8120FB0 - - thumb_func_start sub_8120FCC -sub_8120FCC: @ 8120FCC - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _08120FE8 @ =gTasks+0x8 - adds r3, r1, r0 - movs r2, 0 - strh r2, [r3] - subs r0, 0x8 - adds r1, r0 - ldr r0, _08120FEC @ =sub_8120FF0 - str r0, [r1] - bx lr - .align 2, 0 -_08120FE8: .4byte gTasks+0x8 -_08120FEC: .4byte sub_8120FF0 - thumb_func_end sub_8120FCC - - thumb_func_start sub_8120FF0 -sub_8120FF0: @ 8120FF0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r2, r0, 24 - adds r5, r2, 0 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _0812102C @ =gTasks+0x8 - adds r4, r0, r1 - ldr r0, _08121030 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08121048 - adds r0, r2, 0 - bl sub_8120F78 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08121048 - ldrh r1, [r4] - movs r2, 0 - ldrsh r0, [r4, r2] - cmp r0, 0x50 - beq _08121034 - adds r0, r1, 0x1 - strh r0, [r4] - b _08121048 - .align 2, 0 -_0812102C: .4byte gTasks+0x8 -_08121030: .4byte gPaletteFade -_08121034: - ldr r0, _08121050 @ =sPartyMenuInternal - ldr r1, [r0] - ldr r0, _08121054 @ =CB2_SetUpExitToBattleScreen - str r0, [r1, 0x4] - ldr r0, _08121058 @ =gItemUseCB - ldr r1, _0812105C @ =Task_ClosePartyMenuAfterText - ldr r2, [r0] - adds r0, r5, 0 - bl _call_via_r2 -_08121048: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08121050: .4byte sPartyMenuInternal -_08121054: .4byte CB2_SetUpExitToBattleScreen -_08121058: .4byte gItemUseCB -_0812105C: .4byte Task_ClosePartyMenuAfterText - thumb_func_end sub_8120FF0 - - thumb_func_start InitPartyMenuWindows -InitPartyMenuWindows: @ 8121060 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - cmp r0, 0x1 - beq _08121088 - cmp r0, 0x1 - bgt _08121076 - cmp r0, 0 - beq _0812107C - b _081210A0 -_08121076: - cmp r1, 0x2 - beq _08121094 - b _081210A0 -_0812107C: - ldr r0, _08121084 @ =sSinglePartyMenuWindowTemplate - bl InitWindows - b _081210A6 - .align 2, 0 -_08121084: .4byte sSinglePartyMenuWindowTemplate -_08121088: - ldr r0, _08121090 @ =sDoublePartyMenuWindowTemplate - bl InitWindows - b _081210A6 - .align 2, 0 -_08121090: .4byte sDoublePartyMenuWindowTemplate -_08121094: - ldr r0, _0812109C @ =sMultiPartyMenuWindowTemplate - bl InitWindows - b _081210A6 - .align 2, 0 -_0812109C: .4byte sMultiPartyMenuWindowTemplate -_081210A0: - ldr r0, _081210F4 @ =sShowcaseMultiPartyMenuWindowTemplate - bl InitWindows -_081210A6: - bl DeactivateAllTextPrinters - movs r4, 0 -_081210AC: - adds r0, r4, 0 - movs r1, 0 - bl FillWindowPixelBuffer - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x5 - bls _081210AC - movs r0, 0 - movs r1, 0x4F - movs r2, 0xD0 - bl TextWindow_SetUserSelectedFrame - movs r0, 0 - movs r1, 0x58 - movs r2, 0xF0 - bl TextWindow_SetStdFrame0_WithPal - movs r0, 0x2 - bl stdpal_get - movs r1, 0xC0 - movs r2, 0x20 - bl LoadPalette - movs r0, 0 - bl stdpal_get - movs r1, 0xE0 - movs r2, 0x20 - bl LoadPalette - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081210F4: .4byte sShowcaseMultiPartyMenuWindowTemplate - thumb_func_end InitPartyMenuWindows - - thumb_func_start CreateCancelConfirmWindows -CreateCancelConfirmWindows: @ 81210F8 - push {r4-r6,lr} - sub sp, 0x14 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _08121174 @ =gPartyMenu - ldrb r1, [r0, 0x8] - movs r0, 0xF - ands r0, r1 - cmp r0, 0x5 - bne _0812110E - b _08121238 -_0812110E: - cmp r2, 0x1 - bne _08121188 - ldr r0, _08121178 @ =sConfirmButtonWindowTemplate - bl AddWindow - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - movs r1, 0 - bl FillWindowPixelBuffer - ldr r5, _0812117C @ =gMenuText_Confirm - movs r0, 0 - adds r1, r5, 0 - movs r2, 0 - bl GetStringWidth - movs r2, 0x30 - subs r2, r0 - lsrs r2, 1 - lsls r2, 24 - lsrs r2, 24 - movs r0, 0 - str r0, [sp] - str r0, [sp, 0x4] - ldr r0, _08121180 @ =sFontColorTable - str r0, [sp, 0x8] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0xC] - str r5, [sp, 0x10] - adds r0, r4, 0 - movs r1, 0 - movs r3, 0x1 - bl AddTextPrinterParameterized4 - adds r0, r4, 0 - bl PutWindowTilemap - adds r0, r4, 0 - movs r1, 0x2 - bl CopyWindowToVram - ldr r0, _08121184 @ =sMultiCancelButtonWindowTemplate - bl AddWindow - lsls r0, 24 - lsrs r6, r0, 24 - movs r5, 0 - b _08121194 - .align 2, 0 -_08121174: .4byte gPartyMenu -_08121178: .4byte sConfirmButtonWindowTemplate -_0812117C: .4byte gMenuText_Confirm -_08121180: .4byte sFontColorTable -_08121184: .4byte sMultiCancelButtonWindowTemplate -_08121188: - ldr r0, _081211E0 @ =sCancelButtonWindowTemplate - bl AddWindow - lsls r0, 24 - lsrs r6, r0, 24 - movs r5, 0x3 -_08121194: - adds r0, r6, 0 - movs r1, 0 - bl FillWindowPixelBuffer - ldr r0, _081211E4 @ =gPartyMenu - ldrb r1, [r0, 0x8] - movs r0, 0xF - ands r0, r1 - cmp r0, 0xA - beq _081211F0 - ldr r4, _081211E8 @ =gFameCheckerText_Cancel - movs r0, 0 - adds r1, r4, 0 - movs r2, 0 - bl GetStringWidth - movs r1, 0x30 - subs r1, r0 - lsrs r0, r1, 31 - adds r1, r0 - asrs r1, 1 - adds r1, r5, r1 - lsls r1, 24 - lsrs r5, r1, 24 - ldr r0, _081211EC @ =sFontColorTable - str r0, [sp] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x4] - str r4, [sp, 0x8] - adds r0, r6, 0 - movs r1, 0 - adds r2, r5, 0 - movs r3, 0x1 - bl AddTextPrinterParameterized3 - b _08121224 - .align 2, 0 -_081211E0: .4byte sCancelButtonWindowTemplate -_081211E4: .4byte gPartyMenu -_081211E8: .4byte gFameCheckerText_Cancel -_081211EC: .4byte sFontColorTable -_081211F0: - ldr r4, _08121240 @ =gOtherText_Exit - movs r0, 0 - adds r1, r4, 0 - movs r2, 0 - bl GetStringWidth - movs r1, 0x30 - subs r1, r0 - lsrs r0, r1, 31 - adds r1, r0 - asrs r1, 1 - adds r1, r5, r1 - lsls r1, 24 - lsrs r5, r1, 24 - ldr r0, _08121244 @ =sFontColorTable - str r0, [sp] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x4] - str r4, [sp, 0x8] - adds r0, r6, 0 - movs r1, 0 - adds r2, r5, 0 - movs r3, 0x1 - bl AddTextPrinterParameterized3 -_08121224: - adds r0, r6, 0 - bl PutWindowTilemap - adds r0, r6, 0 - movs r1, 0x2 - bl CopyWindowToVram - movs r0, 0 - bl ScheduleBgCopyTilemapToVram -_08121238: - add sp, 0x14 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08121240: .4byte gOtherText_Exit -_08121244: .4byte sFontColorTable - thumb_func_end CreateCancelConfirmWindows - - thumb_func_start GetPartyMenuPalBufferPtr -GetPartyMenuPalBufferPtr: @ 8121248 - lsls r0, 24 - ldr r1, _08121258 @ =sPartyMenuInternal - lsrs r0, 23 - adds r0, 0x18 - ldr r1, [r1] - adds r1, r0 - adds r0, r1, 0 - bx lr - .align 2, 0 -_08121258: .4byte sPartyMenuInternal - thumb_func_end GetPartyMenuPalBufferPtr - - thumb_func_start BlitBitmapToPartyWindow -BlitBitmapToPartyWindow: @ 812125C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x2C - str r1, [sp, 0xC] - ldr r1, [sp, 0x4C] - ldr r4, [sp, 0x50] - ldr r5, [sp, 0x54] - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x8] - lsls r2, 24 - lsrs r2, 24 - str r2, [sp, 0x10] - lsls r3, 24 - lsrs r3, 24 - str r3, [sp, 0x14] - lsls r1, 24 - lsrs r1, 24 - str r1, [sp, 0x18] - lsls r4, 24 - lsrs r6, r4, 24 - lsls r5, 24 - lsrs r5, 24 - mov r10, r5 - mov r0, r10 - muls r0, r6 - lsls r0, 5 - bl AllocZeroed - mov r9, r0 - cmp r0, 0 - beq _0812132A - movs r5, 0 - ldr r0, [sp, 0x14] - lsls r0, 19 - str r0, [sp, 0x1C] - ldr r1, [sp, 0x18] - lsls r1, 19 - str r1, [sp, 0x20] - lsls r2, r6, 19 - str r2, [sp, 0x24] - mov r0, r10 - lsls r0, 19 - str r0, [sp, 0x28] - cmp r5, r10 - bcs _08121308 -_081212BE: - movs r4, 0 - adds r1, r5, 0x1 - mov r8, r1 - cmp r4, r6 - bcs _081212FE - ldr r2, [sp, 0x18] - adds r0, r2, r5 - ldr r2, [sp, 0x10] - adds r1, r0, 0 - muls r1, r2 - adds r7, r1, 0 -_081212D4: - ldr r1, [sp, 0x14] - adds r0, r1, r4 - adds r0, r7 - ldr r2, [sp, 0xC] - adds r0, r2, r0 - ldrb r0, [r0] - bl GetPartyMenuBgTile - adds r1, r5, 0 - muls r1, r6 - adds r1, r4 - lsls r1, 5 - add r1, r9 - movs r2, 0x10 - bl CpuSet - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, r6 - bcc _081212D4 -_081212FE: - mov r1, r8 - lsls r0, r1, 24 - lsrs r5, r0, 24 - cmp r5, r10 - bcc _081212BE -_08121308: - ldr r0, [sp, 0x1C] - lsrs r2, r0, 16 - ldr r1, [sp, 0x20] - lsrs r3, r1, 16 - ldr r1, [sp, 0x24] - lsrs r0, r1, 16 - str r0, [sp] - ldr r1, [sp, 0x28] - lsrs r0, r1, 16 - str r0, [sp, 0x4] - ldr r0, [sp, 0x8] - mov r1, r9 - bl BlitBitmapToWindow - mov r0, r9 - bl Free -_0812132A: - add sp, 0x2C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end BlitBitmapToPartyWindow - - thumb_func_start BlitBitmapToPartyWindow_LeftColumn -BlitBitmapToPartyWindow_LeftColumn: @ 812133C - push {r4-r6,lr} - sub sp, 0xC - ldr r4, [sp, 0x1C] - ldr r5, [sp, 0x20] - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r6, r1, 24 - lsls r2, 24 - lsrs r2, 24 - lsls r3, 24 - lsrs r3, 24 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - cmp r3, 0 - bne _08121368 - cmp r4, 0 - bne _08121368 - movs r3, 0xA - movs r4, 0x7 -_08121368: - cmp r5, 0 - bne _08121384 - ldr r1, _08121380 @ =sMainSlotTileNums - str r2, [sp] - str r3, [sp, 0x4] - str r4, [sp, 0x8] - movs r2, 0xA - adds r3, r6, 0 - bl BlitBitmapToPartyWindow - b _08121394 - .align 2, 0 -_08121380: .4byte sMainSlotTileNums -_08121384: - ldr r1, _0812139C @ =sMainSlotTileNums_Egg - str r2, [sp] - str r3, [sp, 0x4] - str r4, [sp, 0x8] - movs r2, 0xA - adds r3, r6, 0 - bl BlitBitmapToPartyWindow -_08121394: - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0812139C: .4byte sMainSlotTileNums_Egg - thumb_func_end BlitBitmapToPartyWindow_LeftColumn - - thumb_func_start BlitBitmapToPartyWindow_RightColumn -BlitBitmapToPartyWindow_RightColumn: @ 81213A0 - push {r4-r6,lr} - sub sp, 0xC - ldr r4, [sp, 0x1C] - ldr r5, [sp, 0x20] - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r6, r1, 24 - lsls r2, 24 - lsrs r2, 24 - lsls r3, 24 - lsrs r3, 24 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - cmp r3, 0 - bne _081213CC - cmp r4, 0 - bne _081213CC - movs r3, 0x12 - movs r4, 0x3 -_081213CC: - cmp r5, 0 - bne _081213E8 - ldr r1, _081213E4 @ =sOtherSlotsTileNums - str r2, [sp] - str r3, [sp, 0x4] - str r4, [sp, 0x8] - movs r2, 0x12 - adds r3, r6, 0 - bl BlitBitmapToPartyWindow - b _081213F8 - .align 2, 0 -_081213E4: .4byte sOtherSlotsTileNums -_081213E8: - ldr r1, _08121400 @ =sOtherSlotsTileNums_Egg - str r2, [sp] - str r3, [sp, 0x4] - str r4, [sp, 0x8] - movs r2, 0x12 - adds r3, r6, 0 - bl BlitBitmapToPartyWindow -_081213F8: - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08121400: .4byte sOtherSlotsTileNums_Egg - thumb_func_end BlitBitmapToPartyWindow_RightColumn - - thumb_func_start DrawEmptySlot -DrawEmptySlot: @ 8121404 - push {lr} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - ldr r1, _08121428 @ =sEmptySlotTileNums - movs r2, 0 - str r2, [sp] - movs r2, 0x12 - str r2, [sp, 0x4] - movs r2, 0x3 - str r2, [sp, 0x8] - movs r2, 0x12 - movs r3, 0 - bl BlitBitmapToPartyWindow - add sp, 0xC - pop {r0} - bx r0 - .align 2, 0 -_08121428: .4byte sEmptySlotTileNums - thumb_func_end DrawEmptySlot - - thumb_func_start LoadPartyBoxPalette -LoadPartyBoxPalette: @ 812142C - push {r4-r7,lr} - lsls r1, 24 - lsrs r4, r1, 24 - adds r5, r4, 0 - ldrb r0, [r0, 0x8] - movs r1, 0x5 - bl GetWindowAttribute - lsls r0, 28 - lsrs r6, r0, 24 - adds r7, r6, 0 - movs r0, 0x20 - ands r0, r4 - cmp r0, 0 - beq _081214A0 - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _0812145C - ldr r5, _08121458 @ =sPartyBoxSelectedForActionPalIds1 - b _0812160A - .align 2, 0 -_08121458: .4byte sPartyBoxSelectedForActionPalIds1 -_0812145C: - ldr r5, _08121494 @ =sPartyBoxSelectedForActionPalIds1 - ldrb r0, [r5] - bl GetPartyMenuPalBufferPtr - ldr r4, _08121498 @ =sPartyBoxPalOffsets1 - ldrb r1, [r4] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x1] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x1] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x2] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x2] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldr r5, _0812149C @ =sPartyBoxSelectedForActionPalIds2 - b _0812163E - .align 2, 0 -_08121494: .4byte sPartyBoxSelectedForActionPalIds1 -_08121498: .4byte sPartyBoxPalOffsets1 -_0812149C: .4byte sPartyBoxSelectedForActionPalIds2 -_081214A0: - movs r0, 0x10 - ands r0, r4 - cmp r0, 0 - beq _081214EC - ldr r5, _081214E0 @ =sPartyBoxSelectedForActionPalIds1 - ldrb r0, [r5] - bl GetPartyMenuPalBufferPtr - ldr r4, _081214E4 @ =sPartyBoxPalOffsets1 - ldrb r1, [r4] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x1] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x1] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x2] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x2] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldr r5, _081214E8 @ =sPartyBoxSelectedForActionPalIds2 - b _0812163E - .align 2, 0 -_081214E0: .4byte sPartyBoxSelectedForActionPalIds1 -_081214E4: .4byte sPartyBoxPalOffsets1 -_081214E8: .4byte sPartyBoxSelectedForActionPalIds2 -_081214EC: - movs r0, 0x4 - ands r0, r4 - cmp r0, 0 - beq _08121548 - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _08121504 - ldr r5, _08121500 @ =sPartyBoxSelectedForActionPalIds1 - b _0812160A - .align 2, 0 -_08121500: .4byte sPartyBoxSelectedForActionPalIds1 -_08121504: - ldr r5, _0812153C @ =sPartyBoxSelectedForActionPalIds1 - ldrb r0, [r5] - bl GetPartyMenuPalBufferPtr - ldr r4, _08121540 @ =sPartyBoxPalOffsets1 - ldrb r1, [r4] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x1] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x1] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x2] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x2] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldr r5, _08121544 @ =sPartyBoxSelectedForActionPalIds2 - b _0812163E - .align 2, 0 -_0812153C: .4byte sPartyBoxSelectedForActionPalIds1 -_08121540: .4byte sPartyBoxPalOffsets1 -_08121544: .4byte sPartyBoxSelectedForActionPalIds2 -_08121548: - movs r0, 0x2 - ands r0, r4 - cmp r0, 0 - beq _081215A4 - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _08121560 - ldr r5, _0812155C @ =sPartyBoxCurrSelectionFaintedPalIds - b _0812160A - .align 2, 0 -_0812155C: .4byte sPartyBoxCurrSelectionFaintedPalIds -_08121560: - ldr r5, _08121598 @ =sPartyBoxFaintedPalIds1 - ldrb r0, [r5] - bl GetPartyMenuPalBufferPtr - ldr r4, _0812159C @ =sPartyBoxPalOffsets1 - ldrb r1, [r4] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x1] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x1] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x2] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x2] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldr r5, _081215A0 @ =sPartyBoxFaintedPalIds2 - b _0812163E - .align 2, 0 -_08121598: .4byte sPartyBoxFaintedPalIds1 -_0812159C: .4byte sPartyBoxPalOffsets1 -_081215A0: .4byte sPartyBoxFaintedPalIds2 -_081215A4: - movs r0, 0x8 - ands r0, r4 - cmp r0, 0 - beq _08121600 - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _081215BC - ldr r5, _081215B8 @ =sPartyBoxCurrSelectionMultiPalIds - b _0812160A - .align 2, 0 -_081215B8: .4byte sPartyBoxCurrSelectionMultiPalIds -_081215BC: - ldr r5, _081215F4 @ =sPartyBoxMultiPalIds1 - ldrb r0, [r5] - bl GetPartyMenuPalBufferPtr - ldr r4, _081215F8 @ =sPartyBoxPalOffsets1 - ldrb r1, [r4] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x1] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x1] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x2] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x2] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldr r5, _081215FC @ =sPartyBoxMultiPalIds2 - b _0812163E - .align 2, 0 -_081215F4: .4byte sPartyBoxMultiPalIds1 -_081215F8: .4byte sPartyBoxPalOffsets1 -_081215FC: .4byte sPartyBoxMultiPalIds2 -_08121600: - movs r0, 0x1 - ands r5, r0 - cmp r5, 0 - beq _08121684 - ldr r5, _08121674 @ =sPartyBoxCurrSelectionPalIds1 -_0812160A: - ldrb r0, [r5] - bl GetPartyMenuPalBufferPtr - ldr r4, _08121678 @ =sPartyBoxPalOffsets1 - ldrb r1, [r4] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x1] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x1] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x2] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x2] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldr r5, _0812167C @ =sPartyBoxCurrSelectionPalIds2 -_0812163E: - ldrb r0, [r5] - bl GetPartyMenuPalBufferPtr - ldr r4, _08121680 @ =sPartyBoxPalOffsets2 - ldrb r1, [r4] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x1] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x1] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x2] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x2] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - b _081216EC - .align 2, 0 -_08121674: .4byte sPartyBoxCurrSelectionPalIds1 -_08121678: .4byte sPartyBoxPalOffsets1 -_0812167C: .4byte sPartyBoxCurrSelectionPalIds2 -_08121680: .4byte sPartyBoxPalOffsets2 -_08121684: - ldr r5, _081216F4 @ =sPartyBoxEmptySlotPalIds1 - ldrb r0, [r5] - bl GetPartyMenuPalBufferPtr - ldr r4, _081216F8 @ =sPartyBoxPalOffsets1 - ldrb r1, [r4] - adds r1, r7 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x1] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x1] - adds r1, r7 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x2] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x2] - adds r1, r7 - movs r2, 0x2 - bl LoadPalette - ldr r5, _081216FC @ =sPartyBoxEmptySlotPalIds2 - ldrb r0, [r5] - bl GetPartyMenuPalBufferPtr - ldr r4, _08121700 @ =sPartyBoxPalOffsets2 - ldrb r1, [r4] - adds r1, r7 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x1] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x1] - adds r1, r7 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x2] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x2] - adds r1, r7 - movs r2, 0x2 - bl LoadPalette -_081216EC: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081216F4: .4byte sPartyBoxEmptySlotPalIds1 -_081216F8: .4byte sPartyBoxPalOffsets1 -_081216FC: .4byte sPartyBoxEmptySlotPalIds2 -_08121700: .4byte sPartyBoxPalOffsets2 - thumb_func_end LoadPartyBoxPalette - - thumb_func_start DisplayPartyPokemonBarDetail -DisplayPartyPokemonBarDetail: @ 8121704 - push {r4,r5,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r0, 24 - lsls r2, 24 - lsrs r2, 24 - ldrb r5, [r3] - ldrb r3, [r3, 0x1] - lsls r4, r2, 1 - adds r4, r2 - ldr r2, _08121734 @ =sFontColorTable - adds r4, r2 - str r4, [sp] - movs r2, 0 - str r2, [sp, 0x4] - str r1, [sp, 0x8] - movs r1, 0 - adds r2, r5, 0 - bl AddTextPrinterParameterized3 - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08121734: .4byte sFontColorTable - thumb_func_end DisplayPartyPokemonBarDetail - - thumb_func_start DisplayPartyPokemonNickname -DisplayPartyPokemonNickname: @ 8121738 - push {r4-r7,lr} - sub sp, 0x14 - adds r7, r0, 0 - adds r6, r1, 0 - lsls r2, 24 - lsrs r4, r2, 24 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _08121788 - cmp r4, 0x1 - bne _08121772 - ldr r5, [r6] - ldrb r0, [r6, 0x8] - ldrb r1, [r5, 0x4] - lsrs r1, 3 - ldrb r2, [r5, 0x5] - lsrs r2, 3 - ldrb r3, [r5, 0x6] - lsrs r3, 3 - ldrb r4, [r5, 0x7] - lsrs r4, 3 - str r4, [sp] - movs r4, 0 - str r4, [sp, 0x4] - ldr r4, [r5] - bl _call_via_r4 -_08121772: - adds r0, r7, 0 - add r1, sp, 0x8 - bl GetMonNickname - ldrb r0, [r6, 0x8] - ldr r3, [r6] - adds r3, 0x4 - add r1, sp, 0x8 - movs r2, 0 - bl DisplayPartyPokemonBarDetail -_08121788: - add sp, 0x14 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end DisplayPartyPokemonNickname - - thumb_func_start DisplayPartyPokemonLevelCheck -DisplayPartyPokemonLevelCheck: @ 8121790 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - adds r6, r0, 0 - adds r7, r1, 0 - lsls r2, 24 - lsrs r4, r2, 24 - mov r8, r4 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _081217FC - adds r0, r6, 0 - bl GetMonAilment - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _081217BE - cmp r0, 0x6 - bne _081217FC -_081217BE: - cmp r4, 0 - beq _081217E4 - ldr r5, [r7] - ldrb r0, [r7, 0x8] - ldrb r1, [r5, 0x8] - lsrs r1, 3 - ldrb r2, [r5, 0x9] - lsrs r2, 3 - adds r2, 0x1 - ldrb r3, [r5, 0xA] - lsrs r3, 3 - ldrb r4, [r5, 0xB] - lsrs r4, 3 - str r4, [sp] - movs r4, 0 - str r4, [sp, 0x4] - ldr r4, [r5] - bl _call_via_r4 -_081217E4: - mov r0, r8 - cmp r0, 0x2 - beq _081217FC - adds r0, r6, 0 - movs r1, 0x38 - bl GetMonData - lsls r0, 24 - lsrs r0, 24 - adds r1, r7, 0 - bl DisplayPartyPokemonLevel -_081217FC: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end DisplayPartyPokemonLevelCheck - - thumb_func_start DisplayPartyPokemonLevel -DisplayPartyPokemonLevel: @ 8121808 - push {r4-r6,lr} - adds r2, r0, 0 - adds r6, r1, 0 - lsls r2, 24 - lsrs r2, 24 - ldr r5, _08121848 @ =gStringVar2 - adds r0, r5, 0 - adds r1, r2, 0 - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - ldr r4, _0812184C @ =gStringVar1 - ldr r1, _08121850 @ =gText_Lv - adds r0, r4, 0 - bl StringCopy - adds r0, r4, 0 - adds r1, r5, 0 - bl StringAppend - ldrb r0, [r6, 0x8] - ldr r3, [r6] - adds r3, 0x8 - adds r1, r4, 0 - movs r2, 0 - bl DisplayPartyPokemonBarDetail - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08121848: .4byte gStringVar2 -_0812184C: .4byte gStringVar1 -_08121850: .4byte gText_Lv - thumb_func_end DisplayPartyPokemonLevel - - thumb_func_start DisplayPartyPokemonGenderNidoranCheck -DisplayPartyPokemonGenderNidoranCheck: @ 8121854 - push {r4-r7,lr} - sub sp, 0x14 - adds r6, r0, 0 - adds r7, r1, 0 - lsls r2, 24 - lsrs r2, 24 - cmp r2, 0x1 - bne _08121886 - ldr r5, [r7] - ldrb r0, [r7, 0x8] - ldrb r1, [r5, 0xC] - lsrs r1, 3 - ldrb r2, [r5, 0xD] - lsrs r2, 3 - adds r2, 0x1 - ldrb r3, [r5, 0xE] - lsrs r3, 3 - ldrb r4, [r5, 0xF] - lsrs r4, 3 - str r4, [sp] - movs r4, 0 - str r4, [sp, 0x4] - ldr r4, [r5] - bl _call_via_r4 -_08121886: - adds r0, r6, 0 - add r1, sp, 0x8 - bl GetMonNickname - adds r0, r6, 0 - bl GetMonGender - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r6, 0 - movs r1, 0xB - bl GetMonData - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - add r2, sp, 0x8 - adds r3, r7, 0 - bl DisplayPartyPokemonGender - add sp, 0x14 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end DisplayPartyPokemonGenderNidoranCheck - - thumb_func_start DisplayPartyPokemonGender -DisplayPartyPokemonGender: @ 81218BC - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r9, r2 - adds r7, r3, 0 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r1, 16 - lsrs r4, r1, 16 - adds r5, r4, 0 - ldrb r0, [r7, 0x8] - movs r1, 0x5 - bl GetWindowAttribute - lsls r0, 28 - lsrs r6, r0, 24 - cmp r4, 0 - beq _08121982 - cmp r4, 0x20 - beq _081218EC - cmp r4, 0x1D - bne _08121900 -_081218EC: - movs r0, 0xB - adds r1, r5, 0 - muls r1, r0 - ldr r0, _0812190C @ =gSpeciesNames - adds r1, r0 - mov r0, r9 - bl StringCompare - cmp r0, 0 - beq _08121982 -_08121900: - mov r0, r8 - cmp r0, 0 - beq _08121910 - cmp r0, 0xFE - beq _08121950 - b _08121982 - .align 2, 0 -_0812190C: .4byte gSpeciesNames -_08121910: - ldr r5, _08121944 @ =sGenderMalePalIds - ldrb r0, [r5] - bl GetPartyMenuPalBufferPtr - ldr r4, _08121948 @ =sGenderPalOffsets - ldrb r1, [r4] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x1] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x1] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r7, 0x8] - ldr r1, _0812194C @ =gText_MaleSymbol - ldr r3, [r7] - adds r3, 0xC - movs r2, 0x2 - bl DisplayPartyPokemonBarDetail - b _08121982 - .align 2, 0 -_08121944: .4byte sGenderMalePalIds -_08121948: .4byte sGenderPalOffsets -_0812194C: .4byte gText_MaleSymbol -_08121950: - ldr r5, _08121990 @ =sGenderFemalePalIds - ldrb r0, [r5] - bl GetPartyMenuPalBufferPtr - ldr r4, _08121994 @ =sGenderPalOffsets - ldrb r1, [r4] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x1] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x1] - adds r1, r6 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r7, 0x8] - ldr r1, _08121998 @ =gText_FemaleSymbol - ldr r3, [r7] - adds r3, 0xC - movs r2, 0x2 - bl DisplayPartyPokemonBarDetail -_08121982: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08121990: .4byte sGenderFemalePalIds -_08121994: .4byte sGenderPalOffsets -_08121998: .4byte gText_FemaleSymbol - thumb_func_end DisplayPartyPokemonGender - - thumb_func_start DisplayPartyPokemonHPCheck -DisplayPartyPokemonHPCheck: @ 812199C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - adds r7, r0, 0 - adds r6, r1, 0 - lsls r2, 24 - lsrs r4, r2, 24 - mov r8, r4 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _081219F6 - cmp r4, 0 - beq _081219DE - ldr r5, [r6] - ldrb r0, [r6, 0x8] - ldrb r1, [r5, 0x10] - lsrs r1, 3 - ldrb r2, [r5, 0x11] - lsrs r2, 3 - adds r2, 0x1 - ldrb r3, [r5, 0x12] - lsrs r3, 3 - ldrb r4, [r5, 0x13] - lsrs r4, 3 - str r4, [sp] - movs r4, 0 - str r4, [sp, 0x4] - ldr r4, [r5] - bl _call_via_r4 -_081219DE: - mov r0, r8 - cmp r0, 0x2 - beq _081219F6 - adds r0, r7, 0 - movs r1, 0x39 - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - adds r1, r6, 0 - bl DisplayPartyPokemonHP -_081219F6: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end DisplayPartyPokemonHPCheck - - thumb_func_start DisplayPartyPokemonHP -DisplayPartyPokemonHP: @ 8121A04 - push {r4,r5,lr} - adds r2, r0, 0 - adds r4, r1, 0 - lsls r2, 16 - lsrs r2, 16 - ldr r5, _08121A38 @ =gStringVar1 - adds r0, r5, 0 - adds r1, r2, 0 - movs r2, 0x1 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - movs r1, 0xBA - strb r1, [r0] - movs r1, 0xFF - strb r1, [r0, 0x1] - ldrb r0, [r4, 0x8] - ldr r3, [r4] - adds r3, 0x10 - adds r1, r5, 0 - movs r2, 0 - bl DisplayPartyPokemonBarDetail - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08121A38: .4byte gStringVar1 - thumb_func_end DisplayPartyPokemonHP - - thumb_func_start DisplayPartyPokemonMaxHPCheck -DisplayPartyPokemonMaxHPCheck: @ 8121A3C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - adds r7, r0, 0 - adds r6, r1, 0 - lsls r2, 24 - lsrs r4, r2, 24 - mov r8, r4 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _08121A98 - cmp r4, 0 - beq _08121A80 - ldr r5, [r6] - ldrb r0, [r6, 0x8] - ldrb r1, [r5, 0x14] - lsrs r1, 3 - adds r1, 0x1 - ldrb r2, [r5, 0x15] - lsrs r2, 3 - adds r2, 0x1 - ldrb r3, [r5, 0x16] - lsrs r3, 3 - ldrb r4, [r5, 0x17] - lsrs r4, 3 - str r4, [sp] - movs r4, 0 - str r4, [sp, 0x4] - ldr r4, [r5] - bl _call_via_r4 -_08121A80: - mov r0, r8 - cmp r0, 0x2 - beq _08121A98 - adds r0, r7, 0 - movs r1, 0x3A - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - adds r1, r6, 0 - bl DisplayPartyPokemonMaxHP -_08121A98: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end DisplayPartyPokemonMaxHPCheck - - thumb_func_start DisplayPartyPokemonMaxHP -DisplayPartyPokemonMaxHP: @ 8121AA4 - push {r4-r6,lr} - adds r2, r0, 0 - adds r6, r1, 0 - lsls r2, 16 - lsrs r2, 16 - ldr r5, _08121AE4 @ =gStringVar2 - adds r0, r5, 0 - adds r1, r2, 0 - movs r2, 0x1 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - ldr r4, _08121AE8 @ =gStringVar1 - ldr r1, _08121AEC @ =gText_Slash - adds r0, r4, 0 - bl StringCopy - adds r0, r4, 0 - adds r1, r5, 0 - bl StringAppend - ldrb r0, [r6, 0x8] - ldr r3, [r6] - adds r3, 0x14 - adds r1, r4, 0 - movs r2, 0 - bl DisplayPartyPokemonBarDetail - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08121AE4: .4byte gStringVar2 -_08121AE8: .4byte gStringVar1 -_08121AEC: .4byte gText_Slash - thumb_func_end DisplayPartyPokemonMaxHP - - thumb_func_start DisplayPartyPokemonHPBarCheck -DisplayPartyPokemonHPBarCheck: @ 8121AF0 - push {r4-r6,lr} - adds r5, r0, 0 - adds r6, r1, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _08121B24 - adds r0, r5, 0 - movs r1, 0x39 - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - movs r1, 0x3A - bl GetMonData - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - adds r2, r6, 0 - bl DisplayPartyPokemonHPBar -_08121B24: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end DisplayPartyPokemonHPBarCheck - - thumb_func_start DisplayPartyPokemonHPBar -DisplayPartyPokemonHPBar: @ 8121B2C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x8 - adds r6, r2, 0 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - lsls r1, 16 - lsrs r1, 16 - mov r9, r1 - ldrb r0, [r6, 0x8] - movs r1, 0x5 - bl GetWindowAttribute - lsls r0, 28 - lsrs r7, r0, 24 - mov r1, r8 - lsls r0, r1, 16 - asrs r0, 16 - mov r2, r9 - lsls r1, r2, 16 - asrs r1, 16 - bl GetHPBarLevel - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - beq _08121B78 - cmp r0, 0x2 - blt _08121BA8 - cmp r0, 0x4 - bgt _08121BA8 - ldr r5, _08121B74 @ =sHPBarGreenPalIds - b _08121B7A - .align 2, 0 -_08121B74: .4byte sHPBarGreenPalIds -_08121B78: - ldr r5, _08121BA0 @ =sHPBarYellowPalIds -_08121B7A: - ldrb r0, [r5] - bl GetPartyMenuPalBufferPtr - ldr r4, _08121BA4 @ =sHPBarPalOffsets - ldrb r1, [r4] - adds r1, r7 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x1] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x1] - adds r1, r7 - movs r2, 0x2 - bl LoadPalette - b _08121BCC - .align 2, 0 -_08121BA0: .4byte sHPBarYellowPalIds -_08121BA4: .4byte sHPBarPalOffsets -_08121BA8: - ldr r5, _08121C68 @ =sHPBarRedPalIds - ldrb r0, [r5] - bl GetPartyMenuPalBufferPtr - ldr r4, _08121C6C @ =sHPBarPalOffsets - ldrb r1, [r4] - adds r1, r7 - movs r2, 0x2 - bl LoadPalette - ldrb r0, [r5, 0x1] - bl GetPartyMenuPalBufferPtr - ldrb r1, [r4, 0x1] - adds r1, r7 - movs r2, 0x2 - bl LoadPalette -_08121BCC: - mov r1, r8 - lsls r0, r1, 16 - asrs r0, 16 - mov r2, r9 - lsls r1, r2, 16 - asrs r1, 16 - ldr r2, [r6] - ldrb r2, [r2, 0x1A] - bl GetScaledHPFraction - lsls r0, 24 - lsrs r5, r0, 24 - ldrb r0, [r6, 0x8] - ldr r4, _08121C6C @ =sHPBarPalOffsets - ldrb r1, [r4, 0x1] - ldr r3, [r6] - ldrb r2, [r3, 0x18] - ldrb r3, [r3, 0x19] - str r5, [sp] - movs r7, 0x1 - str r7, [sp, 0x4] - bl FillWindowPixelRect - ldrb r0, [r6, 0x8] - ldrb r1, [r4] - ldr r3, [r6] - ldrb r2, [r3, 0x18] - ldrb r3, [r3, 0x19] - adds r3, 0x1 - str r5, [sp] - movs r4, 0x2 - str r4, [sp, 0x4] - bl FillWindowPixelRect - ldr r1, [r6] - ldrb r0, [r1, 0x1A] - cmp r5, r0 - beq _08121C50 - ldrb r0, [r6, 0x8] - ldrb r2, [r1, 0x18] - adds r2, r5 - ldrb r3, [r1, 0x19] - ldrb r1, [r1, 0x1A] - subs r1, r5 - lsls r1, 16 - lsrs r1, 16 - str r1, [sp] - str r7, [sp, 0x4] - movs r1, 0xD - bl FillWindowPixelRect - ldrb r0, [r6, 0x8] - ldr r1, [r6] - ldrb r2, [r1, 0x18] - adds r2, r5 - ldrb r3, [r1, 0x19] - adds r3, 0x1 - ldrb r1, [r1, 0x1A] - subs r1, r5 - lsls r1, 16 - lsrs r1, 16 - str r1, [sp] - str r4, [sp, 0x4] - movs r1, 0x2 - bl FillWindowPixelRect -_08121C50: - ldrb r0, [r6, 0x8] - movs r1, 0x2 - bl CopyWindowToVram - add sp, 0x8 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08121C68: .4byte sHPBarRedPalIds -_08121C6C: .4byte sHPBarPalOffsets - thumb_func_end DisplayPartyPokemonHPBar - - thumb_func_start DisplayPartyPokemonDescriptionText -DisplayPartyPokemonDescriptionText: @ 8121C70 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xC - adds r6, r1, 0 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r2, 24 - lsrs r2, 24 - adds r7, r2, 0 - cmp r7, 0 - beq _08121CAA - ldr r5, [r6] - ldrb r0, [r6, 0x8] - ldrb r1, [r5, 0x1C] - lsrs r1, 3 - ldrb r2, [r5, 0x1D] - lsrs r2, 3 - ldrb r3, [r5, 0x1E] - lsrs r3, 3 - ldrb r4, [r5, 0x1F] - lsrs r4, 3 - str r4, [sp] - movs r4, 0x1 - str r4, [sp, 0x4] - ldr r4, [r5] - bl _call_via_r4 -_08121CAA: - cmp r7, 0x2 - beq _08121CD0 - ldrb r0, [r6, 0x8] - ldr r1, [r6] - ldrb r2, [r1, 0x1C] - ldrb r3, [r1, 0x1D] - ldr r1, _08121CDC @ =sFontColorTable - str r1, [sp] - movs r1, 0 - str r1, [sp, 0x4] - ldr r4, _08121CE0 @ =sDescriptionStringTable - mov r5, r8 - lsls r1, r5, 2 - adds r1, r4 - ldr r1, [r1] - str r1, [sp, 0x8] - movs r1, 0x1 - bl AddTextPrinterParameterized3 -_08121CD0: - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08121CDC: .4byte sFontColorTable -_08121CE0: .4byte sDescriptionStringTable - thumb_func_end DisplayPartyPokemonDescriptionText - - thumb_func_start PartyMenuRemoveWindow -PartyMenuRemoveWindow: @ 8121CE4 - push {r4,lr} - adds r4, r0, 0 - ldrb r0, [r4] - cmp r0, 0xFF - beq _08121D04 - movs r1, 0 - bl ClearStdWindowAndFrameToTransparent - ldrb r0, [r4] - bl RemoveWindow - movs r0, 0xFF - strb r0, [r4] - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram -_08121D04: - pop {r4} - pop {r0} - bx r0 - thumb_func_end PartyMenuRemoveWindow - - thumb_func_start DisplayPartyMenuStdMessage -DisplayPartyMenuStdMessage: @ 8121D0C - push {r4-r6,lr} - sub sp, 0xC - adds r6, r0, 0 - ldr r0, _08121D3C @ =sPartyMenuInternal - ldr r4, [r0] - adds r5, r4, 0 - adds r5, 0xD - ldrb r0, [r4, 0xD] - cmp r0, 0xFF - beq _08121D26 - adds r0, r5, 0 - bl PartyMenuRemoveWindow -_08121D26: - cmp r6, 0x7F - beq _08121DE8 - adds r0, r6, 0 - subs r0, 0x16 - cmp r0, 0x4 - bhi _08121D80 - lsls r0, 2 - ldr r1, _08121D40 @ =_08121D44 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08121D3C: .4byte sPartyMenuInternal -_08121D40: .4byte _08121D44 - .align 2, 0 -_08121D44: - .4byte _08121D58 - .4byte _08121D70 - .4byte _08121D70 - .4byte _08121D60 - .4byte _08121D68 -_08121D58: - ldr r0, _08121D5C @ =sDoWhatWithMonMsgWindowTemplate - b _08121D72 - .align 2, 0 -_08121D5C: .4byte sDoWhatWithMonMsgWindowTemplate -_08121D60: - ldr r0, _08121D64 @ =sDoWhatWithItemMsgWindowTemplate - b _08121D72 - .align 2, 0 -_08121D64: .4byte sDoWhatWithItemMsgWindowTemplate -_08121D68: - ldr r0, _08121D6C @ =sDoWhatWithMailMsgWindowTemplate - b _08121D72 - .align 2, 0 -_08121D6C: .4byte sDoWhatWithMailMsgWindowTemplate -_08121D70: - ldr r0, _08121D7C @ =sWhichMoveMsgWindowTemplate -_08121D72: - bl AddWindow - strb r0, [r5] - b _08121D88 - .align 2, 0 -_08121D7C: .4byte sWhichMoveMsgWindowTemplate -_08121D80: - ldr r0, _08121D9C @ =sDefaultPartyMsgWindowTemplate - bl AddWindow - strb r0, [r4, 0xD] -_08121D88: - cmp r6, 0 - bne _08121DB0 - ldr r0, _08121DA0 @ =sPartyMenuInternal - ldr r0, [r0] - ldrb r0, [r0, 0x8] - lsls r0, 31 - cmp r0, 0 - beq _08121DA4 - movs r6, 0x2 - b _08121DB0 - .align 2, 0 -_08121D9C: .4byte sDefaultPartyMsgWindowTemplate -_08121DA0: .4byte sPartyMenuInternal -_08121DA4: - bl ShouldUseChooseMonText - lsls r0, 24 - cmp r0, 0 - bne _08121DB0 - movs r6, 0x1 -_08121DB0: - ldrb r0, [r5] - movs r1, 0 - movs r2, 0x58 - movs r3, 0xF - bl DrawStdFrameWithCustomTileAndPalette - ldr r4, _08121DF0 @ =gStringVar4 - ldr r1, _08121DF4 @ =sActionStringTable - lsls r0, r6, 2 - adds r0, r1 - ldr r1, [r0] - adds r0, r4, 0 - bl StringExpandPlaceholders - ldrb r0, [r5] - movs r1, 0x2 - str r1, [sp] - movs r1, 0 - str r1, [sp, 0x4] - str r1, [sp, 0x8] - movs r1, 0x2 - adds r2, r4, 0 - movs r3, 0 - bl AddTextPrinterParameterized - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram -_08121DE8: - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08121DF0: .4byte gStringVar4 -_08121DF4: .4byte sActionStringTable - thumb_func_end DisplayPartyMenuStdMessage - - thumb_func_start ShouldUseChooseMonText -ShouldUseChooseMonText: @ 8121DF8 - push {r4-r7,lr} - ldr r7, _08121E0C @ =gPlayerParty - movs r6, 0 - ldr r0, _08121E10 @ =gPartyMenu - ldrb r0, [r0, 0xB] - cmp r0, 0x1 - bne _08121E14 -_08121E06: - movs r0, 0x1 - b _08121E56 - .align 2, 0 -_08121E0C: .4byte gPlayerParty -_08121E10: .4byte gPartyMenu -_08121E14: - movs r5, 0 -_08121E16: - movs r0, 0x64 - muls r0, r5 - adds r4, r7, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _08121E46 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - bne _08121E40 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - beq _08121E46 -_08121E40: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_08121E46: - cmp r6, 0x1 - bhi _08121E06 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x5 - bls _08121E16 - movs r0, 0 -_08121E56: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end ShouldUseChooseMonText - - thumb_func_start DisplaySelectionWindow -DisplaySelectionWindow: @ 8121E5C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x24 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x1 - beq _08121EBC - cmp r4, 0x1 - bgt _08121E78 - cmp r4, 0 - beq _08121E7E - b _08121ECC -_08121E78: - cmp r4, 0x2 - beq _08121EC4 - b _08121ECC -_08121E7E: - ldr r0, _08121EB4 @ =sPartyMenuInternal - ldr r1, [r0] - ldrb r0, [r1, 0x17] - lsls r0, 1 - movs r3, 0x13 - subs r3, r0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0xA - str r0, [sp] - ldrb r0, [r1, 0x17] - lsls r0, 25 - lsrs r0, 24 - str r0, [sp, 0x4] - movs r0, 0xE - str r0, [sp, 0x8] - ldr r0, _08121EB8 @ =0x000002bf - str r0, [sp, 0xC] - add r0, sp, 0x14 - movs r1, 0x2 - movs r2, 0x13 - bl SetWindowTemplateFields - ldr r0, [sp, 0x14] - ldr r1, [sp, 0x18] - b _08121ED2 - .align 2, 0 -_08121EB4: .4byte sPartyMenuInternal -_08121EB8: .4byte 0x000002bf -_08121EBC: - ldr r0, _08121EC0 @ =sItemGiveTakeWindowTemplate - b _08121ECE - .align 2, 0 -_08121EC0: .4byte sItemGiveTakeWindowTemplate -_08121EC4: - ldr r0, _08121EC8 @ =sMailReadTakeWindowTemplate - b _08121ECE - .align 2, 0 -_08121EC8: .4byte sMailReadTakeWindowTemplate -_08121ECC: - ldr r0, _08121EF8 @ =sMoveSelectWindowTemplate -_08121ECE: - ldr r1, [r0, 0x4] - ldr r0, [r0] -_08121ED2: - str r0, [sp, 0x1C] - str r1, [sp, 0x20] - add r0, sp, 0x1C - bl AddWindow - ldr r6, _08121EFC @ =sPartyMenuInternal - ldr r1, [r6] - strb r0, [r1, 0xC] - ldr r0, [r6] - ldrb r0, [r0, 0xC] - movs r1, 0 - movs r2, 0x4F - movs r3, 0xD - bl DrawStdFrameWithCustomTileAndPalette - cmp r4, 0x3 - bne _08121F00 - ldr r0, [r6] - b _08121FA2 - .align 2, 0 -_08121EF8: .4byte sMoveSelectWindowTemplate -_08121EFC: .4byte sPartyMenuInternal -_08121F00: - movs r0, 0x2 - movs r1, 0 - bl GetMenuCursorDimensionByFont - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - movs r0, 0x2 - movs r1, 0x2 - bl GetFontAttribute - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r5, 0 - ldr r0, [r6] - ldrb r0, [r0, 0x17] - cmp r5, r0 - bcs _08121F7A - adds r7, r6, 0 - movs r6, 0 -_08121F2A: - ldr r1, [r7] - adds r0, r1, 0 - adds r0, 0xF - adds r4, r0, r5 - ldrb r0, [r4] - movs r2, 0x3 - cmp r0, 0x11 - bls _08121F3C - movs r2, 0x4 -_08121F3C: - ldrb r0, [r1, 0xC] - lsls r3, r5, 4 - adds r3, 0x2 - lsls r3, 24 - lsrs r3, 24 - mov r1, r8 - str r1, [sp] - str r6, [sp, 0x4] - lsls r1, r2, 1 - adds r1, r2 - ldr r2, _08121FB4 @ =sFontColorTable - adds r1, r2 - str r1, [sp, 0x8] - str r6, [sp, 0xC] - ldr r2, _08121FB8 @ =sCursorOptions - ldrb r1, [r4] - lsls r1, 3 - adds r1, r2 - ldr r1, [r1] - str r1, [sp, 0x10] - movs r1, 0x2 - mov r2, r9 - bl AddTextPrinterParameterized4 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, [r7] - ldrb r0, [r0, 0x17] - cmp r5, r0 - bcc _08121F2A -_08121F7A: - ldr r4, _08121FBC @ =sPartyMenuInternal - ldr r2, [r4] - ldrb r0, [r2, 0xC] - movs r1, 0x10 - str r1, [sp] - ldrb r1, [r2, 0x17] - str r1, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - movs r1, 0x1 - str r1, [sp, 0xC] - movs r1, 0x2 - movs r2, 0 - movs r3, 0x2 - bl Menu_InitCursorInternal - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - ldr r0, [r4] -_08121FA2: - ldrb r0, [r0, 0xC] - add sp, 0x24 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08121FB4: .4byte sFontColorTable -_08121FB8: .4byte sCursorOptions -_08121FBC: .4byte sPartyMenuInternal - thumb_func_end DisplaySelectionWindow - - thumb_func_start PartyMenuPrintText -PartyMenuPrintText: @ 8121FC0 - push {r4,lr} - sub sp, 0x10 - adds r4, r0, 0 - movs r0, 0x6 - movs r1, 0 - movs r2, 0x4F - movs r3, 0xD - bl DrawStdFrameWithCustomTileAndPalette - ldr r2, _08122008 @ =gTextFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - bl GetTextSpeedSetting - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0 - str r0, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - movs r0, 0x6 - movs r1, 0x2 - adds r2, r4, 0 - bl AddTextPrinterParameterized2 - add sp, 0x10 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08122008: .4byte gTextFlags - thumb_func_end PartyMenuPrintText - - thumb_func_start PartyMenuDisplayYesNoMenu -PartyMenuDisplayYesNoMenu: @ 812200C - push {lr} - sub sp, 0xC - ldr r0, _08122030 @ =sPartyMenuYesNoWindowTemplate - movs r1, 0x4F - str r1, [sp] - movs r1, 0xD - str r1, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - movs r1, 0x2 - movs r2, 0 - movs r3, 0x2 - bl CreateYesNoMenu - add sp, 0xC - pop {r0} - bx r0 - .align 2, 0 -_08122030: .4byte sPartyMenuYesNoWindowTemplate - thumb_func_end PartyMenuDisplayYesNoMenu - - thumb_func_start CreateLevelUpStatsWindow -CreateLevelUpStatsWindow: @ 8122034 - push {r4,lr} - ldr r0, _0812205C @ =sLevelUpStatsWindowTemplate - bl AddWindow - ldr r4, _08122060 @ =sPartyMenuInternal - ldr r1, [r4] - strb r0, [r1, 0xC] - ldr r0, [r4] - ldrb r0, [r0, 0xC] - movs r1, 0 - movs r2, 0x4F - movs r3, 0xD - bl DrawStdFrameWithCustomTileAndPalette - ldr r0, [r4] - ldrb r0, [r0, 0xC] - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0812205C: .4byte sLevelUpStatsWindowTemplate -_08122060: .4byte sPartyMenuInternal - thumb_func_end CreateLevelUpStatsWindow - - thumb_func_start RemoveLevelUpStatsWindow -RemoveLevelUpStatsWindow: @ 8122064 - push {r4,lr} - ldr r4, _08122080 @ =sPartyMenuInternal - ldr r0, [r4] - ldrb r0, [r0, 0xC] - bl ClearWindowTilemap - ldr r0, [r4] - adds r0, 0xC - bl PartyMenuRemoveWindow - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08122080: .4byte sPartyMenuInternal - thumb_func_end RemoveLevelUpStatsWindow - - thumb_func_start sub_8122084 -sub_8122084: @ 8122084 - push {r4,r5,lr} - sub sp, 0x10 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r5, _081220CC @ =gStringVar4 - adds r0, r5, 0 - bl StringExpandPlaceholders - ldr r2, _081220D0 @ =gTextFlags - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2] - bl GetTextSpeedSetting - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0 - str r0, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - movs r0, 0x3 - str r0, [sp, 0xC] - adds r0, r4, 0 - movs r1, 0x4 - adds r2, r5, 0 - bl AddTextPrinterParameterized2 - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_081220CC: .4byte gStringVar4 -_081220D0: .4byte gTextFlags - thumb_func_end sub_8122084 - - thumb_func_start sub_81220D4 -sub_81220D4: @ 81220D4 - push {r4,lr} - ldr r0, _08122108 @ =gUnknown_845A170 - bl AddWindow - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - movs r1, 0x4F - movs r2, 0xE0 - bl TextWindow_LoadResourcesStdFrame0 - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0x4F - movs r3, 0xE - bl DrawDialogFrameWithCustomTileAndPalette - ldr r1, _0812210C @ =gUnknown_8417457 - adds r0, r4, 0 - bl sub_8122084 - adds r0, r4, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08122108: .4byte gUnknown_845A170 -_0812210C: .4byte gUnknown_8417457 - thumb_func_end sub_81220D4 - - thumb_func_start sub_8122110 -sub_8122110: @ 8122110 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl ClearWindowTilemap - adds r0, r4, 0 - movs r1, 0 - bl ClearDialogWindowAndFrameToTransparent - adds r0, r4, 0 - bl RemoveWindow - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8122110 - - thumb_func_start sub_8122138 -sub_8122138: @ 8122138 - push {r4,r5,lr} - sub sp, 0x14 - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - ldr r0, _08122168 @ =sPartyMenuInternal - ldr r4, [r0] - cmp r5, 0x11 - bhi _0812216C - ldrb r0, [r4, 0xE] - cmp r0, 0xFF - beq _081221C0 - bl ClearWindowTilemap - ldrb r0, [r4, 0xE] - bl RemoveWindow - movs r0, 0xFF - strb r0, [r4, 0xE] - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram - b _081221C0 - .align 2, 0 -_08122168: .4byte sPartyMenuInternal -_0812216C: - ldrb r0, [r4, 0xE] - cmp r0, 0xFF - bne _0812217A - ldr r0, _081221C8 @ =gUnknown_845A178 - bl AddWindow - strb r0, [r4, 0xE] -_0812217A: - ldrb r0, [r4, 0xE] - bl sub_8112F18 - movs r0, 0x2 - movs r1, 0x2 - bl GetFontAttribute - lsls r0, 24 - lsrs r0, 24 - ldrb r2, [r4, 0xE] - str r0, [sp] - movs r1, 0 - str r1, [sp, 0x4] - ldr r0, _081221CC @ =sFontColorTable + 15 - str r0, [sp, 0x8] - str r1, [sp, 0xC] - ldr r1, _081221D0 @ =sHMDescriptionTable - adds r0, r5, 0 - subs r0, 0x12 - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - str r0, [sp, 0x10] - adds r0, r2, 0 - movs r1, 0x2 - movs r2, 0x3 - movs r3, 0x6 - bl AddTextPrinterParameterized4 - ldrb r0, [r4, 0xE] - bl PutWindowTilemap - movs r0, 0x2 - bl ScheduleBgCopyTilemapToVram -_081221C0: - add sp, 0x14 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_081221C8: .4byte gUnknown_845A178 -_081221CC: .4byte sFontColorTable + 15 -_081221D0: .4byte sHMDescriptionTable - thumb_func_end sub_8122138 - - thumb_func_start CreatePartyMonIconSprite -CreatePartyMonIconSprite: @ 81221D4 - push {r4-r7,lr} - sub sp, 0x4 - adds r5, r0, 0 - adds r7, r1, 0 - adds r4, r2, 0 - movs r6, 0x1 - bl IsMultiBattle - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0812220A - ldr r0, _08122240 @ =gMain - ldr r1, _08122244 @ =0x00000439 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0812220A - ldr r0, _08122248 @ =sMultiBattlePartnersPartyMask - adds r0, r4, r0 - ldrb r1, [r0] - eors r1, r6 - negs r0, r1 - orrs r0, r1 - lsrs r6, r0, 31 -_0812220A: - adds r0, r5, 0 - movs r1, 0x41 - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - movs r1, 0 - bl GetMonData - adds r1, r0, 0 - str r6, [sp] - adds r0, r4, 0 - adds r2, r7, 0 - movs r3, 0x1 - bl CreatePartyMonIconSpriteParameterized - ldrb r0, [r7, 0x9] - adds r1, r5, 0 - bl UpdatePartyMonHPBar - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08122240: .4byte gMain -_08122244: .4byte 0x00000439 -_08122248: .4byte sMultiBattlePartnersPartyMask - thumb_func_end CreatePartyMonIconSprite - - thumb_func_start CreatePartyMonIconSpriteParameterized -CreatePartyMonIconSpriteParameterized: @ 812224C - push {r4-r7,lr} - sub sp, 0xC - adds r6, r1, 0 - adds r4, r2, 0 - lsls r0, 16 - lsrs r5, r0, 16 - lsls r3, 24 - lsrs r7, r3, 24 - cmp r5, 0 - beq _0812229A - ldr r1, _081222A4 @ =SpriteCB_MonIcon - ldr r0, [r4, 0x4] - ldrb r2, [r0] - ldrb r3, [r0, 0x1] - movs r0, 0x4 - str r0, [sp] - str r6, [sp, 0x4] - ldr r0, [sp, 0x20] - str r0, [sp, 0x8] - adds r0, r5, 0 - bl CreateMonIcon - strb r0, [r4, 0x9] - ldr r2, _081222A8 @ =gSprites - ldrb r0, [r4, 0x9] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - movs r0, 0x3 - adds r2, r7, 0 - ands r2, r0 - lsls r2, 2 - ldrb r3, [r1, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r3 - orrs r0, r2 - strb r0, [r1, 0x5] -_0812229A: - add sp, 0xC - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081222A4: .4byte SpriteCB_MonIcon -_081222A8: .4byte gSprites - thumb_func_end CreatePartyMonIconSpriteParameterized - - thumb_func_start UpdateHPBar -UpdateHPBar: @ 81222AC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 16 - asrs r1, 16 - lsls r2, 16 - asrs r2, 16 - adds r0, r1, 0 - adds r1, r2, 0 - bl GetHPBarLevel - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - beq _0812230C - cmp r0, 0x2 - bgt _081222D4 - cmp r0, 0x1 - beq _08122324 - b _0812233C -_081222D4: - cmp r0, 0x3 - beq _081222F4 - cmp r0, 0x4 - bne _0812233C - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - ldr r1, _081222F0 @ =gSprites - adds r0, r1 - movs r1, 0 - bl MonIcon_SetAnim - b _0812234C - .align 2, 0 -_081222F0: .4byte gSprites -_081222F4: - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - ldr r1, _08122308 @ =gSprites - adds r0, r1 - movs r1, 0x1 - bl MonIcon_SetAnim - b _0812234C - .align 2, 0 -_08122308: .4byte gSprites -_0812230C: - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - ldr r1, _08122320 @ =gSprites - adds r0, r1 - movs r1, 0x2 - bl MonIcon_SetAnim - b _0812234C - .align 2, 0 -_08122320: .4byte gSprites -_08122324: - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - ldr r1, _08122338 @ =gSprites - adds r0, r1 - movs r1, 0x3 - bl MonIcon_SetAnim - b _0812234C - .align 2, 0 -_08122338: .4byte gSprites -_0812233C: - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - ldr r1, _08122354 @ =gSprites - adds r0, r1 - movs r1, 0x4 - bl MonIcon_SetAnim -_0812234C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08122354: .4byte gSprites - thumb_func_end UpdateHPBar - - thumb_func_start UpdatePartyMonHPBar -UpdatePartyMonHPBar: @ 8122358 - push {r4-r6,lr} - adds r5, r0, 0 - adds r6, r1, 0 - lsls r5, 24 - lsrs r5, 24 - adds r0, r6, 0 - movs r1, 0x39 - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r6, 0 - movs r1, 0x3A - bl GetMonData - adds r2, r0, 0 - lsls r2, 16 - lsrs r2, 16 - adds r0, r5, 0 - adds r1, r4, 0 - bl UpdateHPBar - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end UpdatePartyMonHPBar - - thumb_func_start AnimateSelectedPartyIcon -AnimateSelectedPartyIcon: @ 812238C - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - ldr r5, _081223BC @ =gSprites - lsls r0, r4, 4 - adds r0, r4 - lsls r6, r0, 2 - adds r2, r6, r5 - movs r7, 0 - movs r3, 0 - strh r3, [r2, 0x2E] - mov r12, r5 - cmp r1, 0 - bne _081223E4 - movs r1, 0x20 - ldrsh r0, [r2, r1] - cmp r0, 0x10 - bne _081223C4 - strh r3, [r2, 0x24] - ldr r0, _081223C0 @ =0x0000fffc - strh r0, [r2, 0x26] - b _081223CA - .align 2, 0 -_081223BC: .4byte gSprites -_081223C0: .4byte 0x0000fffc -_081223C4: - ldr r0, _081223DC @ =0x0000fffc - strh r0, [r2, 0x24] - strh r3, [r2, 0x26] -_081223CA: - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - mov r1, r12 - adds r1, 0x1C - adds r0, r1 - ldr r1, _081223E0 @ =SpriteCB_UpdatePartyMonIcon - b _081223F0 - .align 2, 0 -_081223DC: .4byte 0x0000fffc -_081223E0: .4byte SpriteCB_UpdatePartyMonIcon -_081223E4: - strh r3, [r2, 0x24] - strh r3, [r2, 0x26] - adds r0, r5, 0 - adds r0, 0x1C - adds r0, r6, r0 - ldr r1, _081223F8 @ =SpriteCB_BouncePartyMonIcon -_081223F0: - str r1, [r0] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081223F8: .4byte SpriteCB_BouncePartyMonIcon - thumb_func_end AnimateSelectedPartyIcon - - thumb_func_start SpriteCB_BouncePartyMonIcon -SpriteCB_BouncePartyMonIcon: @ 81223FC - push {r4,lr} - adds r4, r0, 0 - bl UpdateMonIconFrame - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _08122422 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08122420 - ldr r0, _0812241C @ =0x0000fffd - strh r0, [r4, 0x26] - b _08122422 - .align 2, 0 -_0812241C: .4byte 0x0000fffd -_08122420: - strh r1, [r4, 0x26] -_08122422: - pop {r4} - pop {r0} - bx r0 - thumb_func_end SpriteCB_BouncePartyMonIcon - - thumb_func_start SpriteCB_UpdatePartyMonIcon -SpriteCB_UpdatePartyMonIcon: @ 8122428 - push {lr} - bl UpdateMonIconFrame - pop {r0} - bx r0 - thumb_func_end SpriteCB_UpdatePartyMonIcon - - thumb_func_start CreatePartyMonHeldItemSprite -CreatePartyMonHeldItemSprite: @ 8122434 - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0812245C - ldr r0, _08122464 @ =sSpriteTemplate_HeldItem - ldr r2, [r4, 0x4] - ldrb r1, [r2, 0x2] - ldrb r2, [r2, 0x3] - movs r3, 0 - bl CreateSprite - strb r0, [r4, 0xA] - adds r0, r5, 0 - adds r1, r4, 0 - bl UpdatePartyMonHeldItemSprite -_0812245C: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08122464: .4byte sSpriteTemplate_HeldItem - thumb_func_end CreatePartyMonHeldItemSprite - - thumb_func_start CreatePartyMonHeldItemSpriteParameterized -CreatePartyMonHeldItemSpriteParameterized: @ 8122468 - push {r4,r5,lr} - adds r4, r2, 0 - lsls r0, 16 - lsls r1, 16 - lsrs r5, r1, 16 - cmp r0, 0 - beq _081224A4 - ldr r0, _081224AC @ =sSpriteTemplate_HeldItem - ldr r2, [r4, 0x4] - ldrb r1, [r2, 0x2] - ldrb r2, [r2, 0x3] - movs r3, 0 - bl CreateSprite - strb r0, [r4, 0xA] - ldr r2, _081224B0 @ =gSprites - ldrb r0, [r4, 0xA] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r2, [r1, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x5] - adds r0, r5, 0 - adds r1, r4, 0 - bl ShowOrHideHeldItemSprite -_081224A4: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_081224AC: .4byte sSpriteTemplate_HeldItem -_081224B0: .4byte gSprites - thumb_func_end CreatePartyMonHeldItemSpriteParameterized - - thumb_func_start UpdatePartyMonHeldItemSprite -UpdatePartyMonHeldItemSprite: @ 81224B4 - push {r4,lr} - adds r4, r1, 0 - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - adds r1, r4, 0 - bl ShowOrHideHeldItemSprite - pop {r4} - pop {r0} - bx r0 - thumb_func_end UpdatePartyMonHeldItemSprite - - thumb_func_start ShowOrHideHeldItemSprite -ShowOrHideHeldItemSprite: @ 81224D0 - push {r4,lr} - adds r4, r1, 0 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - bne _081224F8 - ldr r2, _081224F4 @ =gSprites - ldrb r1, [r4, 0xA] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - b _08122544 - .align 2, 0 -_081224F4: .4byte gSprites -_081224F8: - bl ItemIsMail - lsls r0, 24 - cmp r0, 0 - beq _0812251C - ldrb r1, [r4, 0xA] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08122518 @ =gSprites - adds r0, r1 - movs r1, 0x1 - bl StartSpriteAnim - b _0812252E - .align 2, 0 -_08122518: .4byte gSprites -_0812251C: - ldrb r1, [r4, 0xA] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0812254C @ =gSprites - adds r0, r1 - movs r1, 0 - bl StartSpriteAnim -_0812252E: - ldr r2, _0812254C @ =gSprites - ldrb r1, [r4, 0xA] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 -_08122544: - strb r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0812254C: .4byte gSprites - thumb_func_end ShowOrHideHeldItemSprite - - thumb_func_start LoadHeldItemIcons -LoadHeldItemIcons: @ 8122550 - push {lr} - ldr r0, _08122564 @ =sSpriteSheet_HeldItem - bl LoadSpriteSheet - ldr r0, _08122568 @ =sSpritePalette_HeldItem - bl LoadSpritePalette - pop {r0} - bx r0 - .align 2, 0 -_08122564: .4byte sSpriteSheet_HeldItem -_08122568: .4byte sSpritePalette_HeldItem - thumb_func_end LoadHeldItemIcons - - thumb_func_start DrawHeldItemIconsForTrade -DrawHeldItemIconsForTrade: @ 812256C - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - lsls r2, 24 - lsrs r2, 24 - cmp r2, 0 - beq _08122580 - cmp r2, 0x1 - beq _081225C8 - b _08122604 -_08122580: - movs r5, 0 - ldrb r0, [r6] - cmp r5, r0 - bcs _08122604 -_08122588: - movs r0, 0x64 - muls r0, r5 - ldr r1, _081225C4 @ =gPlayerParty - adds r0, r1 - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - beq _081225B4 - adds r0, r7, r5 - ldrb r4, [r0] - adds r0, r1, 0 - bl ItemIsMail - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl CreateHeldItemSpriteForTrade -_081225B4: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - ldrb r0, [r6] - cmp r5, r0 - bcc _08122588 - b _08122604 - .align 2, 0 -_081225C4: .4byte gPlayerParty -_081225C8: - movs r5, 0 - b _081225FE -_081225CC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0812260C @ =gEnemyParty - adds r0, r1 - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - beq _081225F8 - adds r0, r5, r7 - ldrb r4, [r0, 0x6] - adds r0, r1, 0 - bl ItemIsMail - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl CreateHeldItemSpriteForTrade -_081225F8: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 -_081225FE: - ldrb r0, [r6, 0x1] - cmp r5, r0 - bcc _081225CC -_08122604: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0812260C: .4byte gEnemyParty - thumb_func_end DrawHeldItemIconsForTrade - - thumb_func_start CreateHeldItemSpriteForTrade -CreateHeldItemSpriteForTrade: @ 8122610 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - adds r6, r0, 0 - mov r9, r1 - lsls r6, 24 - lsrs r6, 24 - mov r0, r9 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r0, _08122688 @ =gSprites - mov r8, r0 - lsls r0, r6, 4 - adds r0, r6 - lsls r0, 2 - add r0, r8 - adds r0, 0x43 - ldrb r3, [r0] - ldr r0, _0812268C @ =sSpriteTemplate_HeldItem - subs r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - movs r1, 0xFA - movs r2, 0xAA - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - mov r0, r8 - adds r5, r4, r0 - movs r0, 0x4 - strh r0, [r5, 0x24] - movs r0, 0xA - strh r0, [r5, 0x26] - movs r0, 0x1C - add r8, r0 - add r4, r8 - ldr r0, _08122690 @ =SpriteCB_HeldItem - str r0, [r4] - strh r6, [r5, 0x3C] - adds r0, r5, 0 - mov r1, r9 - bl StartSpriteAnim - ldr r1, [r4] - adds r0, r5, 0 - bl _call_via_r1 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08122688: .4byte gSprites -_0812268C: .4byte sSpriteTemplate_HeldItem -_08122690: .4byte SpriteCB_HeldItem - thumb_func_end CreateHeldItemSpriteForTrade - - thumb_func_start SpriteCB_HeldItem -SpriteCB_HeldItem: @ 8122694 - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x3C] - lsls r1, 24 - lsrs r1, 24 - ldr r2, _081226C4 @ =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, r0, r2 - adds r0, r2, 0 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 29 - cmp r0, 0 - bge _081226C8 - adds r0, r4, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - b _081226E6 - .align 2, 0 -_081226C4: .4byte gSprites -_081226C8: - adds r3, r4, 0 - adds r3, 0x3E - ldrb r1, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r3] - ldrh r0, [r2, 0x24] - ldrh r1, [r2, 0x20] - adds r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r2, 0x26] - ldrh r2, [r2, 0x22] - adds r0, r2 - strh r0, [r4, 0x22] -_081226E6: - pop {r4} - pop {r0} - bx r0 - thumb_func_end SpriteCB_HeldItem - - thumb_func_start CreatePartyMonPokeballSprite -CreatePartyMonPokeballSprite: @ 81226EC - push {r4,lr} - adds r4, r1, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0812270A - ldr r0, _08122710 @ =sSpriteTemplate_MenuPokeball - ldr r2, [r4, 0x4] - ldrb r1, [r2, 0x6] - ldrb r2, [r2, 0x7] - movs r3, 0x8 - bl CreateSprite - strb r0, [r4, 0xB] -_0812270A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08122710: .4byte sSpriteTemplate_MenuPokeball - thumb_func_end CreatePartyMonPokeballSprite - - thumb_func_start CreatePartyMonPokeballSpriteParameterized -CreatePartyMonPokeballSpriteParameterized: @ 8122714 - push {r4,lr} - adds r4, r1, 0 - lsls r0, 16 - cmp r0, 0 - beq _08122744 - ldr r0, _0812274C @ =sSpriteTemplate_MenuPokeball - ldr r2, [r4, 0x4] - ldrb r1, [r2, 0x6] - ldrb r2, [r2, 0x7] - movs r3, 0x8 - bl CreateSprite - strb r0, [r4, 0xB] - ldr r2, _08122750 @ =gSprites - ldrb r0, [r4, 0xB] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r2, [r1, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x5] -_08122744: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0812274C: .4byte sSpriteTemplate_MenuPokeball -_08122750: .4byte gSprites - thumb_func_end CreatePartyMonPokeballSpriteParameterized - - thumb_func_start CreatePokeballButtonSprite -CreatePokeballButtonSprite: @ 8122754 - push {lr} - adds r3, r0, 0 - adds r2, r1, 0 - lsls r3, 24 - lsrs r3, 24 - lsls r2, 24 - lsrs r2, 24 - ldr r0, _0812278C @ =sSpriteTemplate_MenuPokeball - adds r1, r3, 0 - movs r3, 0x8 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08122790 @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r3, [r1, 0x5] - movs r2, 0xD - negs r2, r2 - ands r2, r3 - movs r3, 0x8 - orrs r2, r3 - strb r2, [r1, 0x5] - pop {r1} - bx r1 - .align 2, 0 -_0812278C: .4byte sSpriteTemplate_MenuPokeball -_08122790: .4byte gSprites - thumb_func_end CreatePokeballButtonSprite - - thumb_func_start CreateSmallPokeballButtonSprite -CreateSmallPokeballButtonSprite: @ 8122794 - push {lr} - adds r3, r0, 0 - adds r2, r1, 0 - lsls r3, 24 - lsrs r3, 24 - lsls r2, 24 - lsrs r2, 24 - ldr r0, _081227B4 @ =sSpriteTemplate_MenuPokeballSmall - adds r1, r3, 0 - movs r3, 0x8 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_081227B4: .4byte sSpriteTemplate_MenuPokeballSmall - thumb_func_end CreateSmallPokeballButtonSprite - - thumb_func_start PartyMenuStartSpriteAnim -PartyMenuStartSpriteAnim: @ 81227B8 - push {lr} - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - ldr r2, _081227D8 @ =gSprites - adds r0, r2 - bl StartSpriteAnim - pop {r0} - bx r0 - .align 2, 0 -_081227D8: .4byte gSprites - thumb_func_end PartyMenuStartSpriteAnim - - thumb_func_start SpriteCB_BounceConfirmCancelButton -SpriteCB_BounceConfirmCancelButton: @ 81227DC - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r7, r1, 24 - lsls r2, 24 - lsrs r6, r2, 24 - cmp r6, 0 - bne _08122820 - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - ldr r0, _0812281C @ =gSprites - mov r8, r0 - add r4, r8 - adds r0, r4, 0 - movs r1, 0x2 - bl StartSpriteAnim - lsls r5, r7, 4 - adds r5, r7 - lsls r5, 2 - add r5, r8 - adds r0, r5, 0 - movs r1, 0x4 - bl StartSpriteAnim - strh r6, [r4, 0x26] - strh r6, [r5, 0x26] - b _0812284C - .align 2, 0 -_0812281C: .4byte gSprites -_08122820: - lsls r5, r0, 4 - adds r5, r0 - lsls r5, 2 - ldr r0, _08122858 @ =gSprites - mov r8, r0 - add r5, r8 - adds r0, r5, 0 - movs r1, 0x3 - bl StartSpriteAnim - lsls r4, r7, 4 - adds r4, r7 - lsls r4, 2 - add r4, r8 - adds r0, r4, 0 - movs r1, 0x5 - bl StartSpriteAnim - ldr r0, _0812285C @ =0x0000fffc - strh r0, [r5, 0x26] - movs r0, 0x4 - strh r0, [r4, 0x26] -_0812284C: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08122858: .4byte gSprites -_0812285C: .4byte 0x0000fffc - thumb_func_end SpriteCB_BounceConfirmCancelButton - - thumb_func_start LoadPartyMenuPokeballGfx -LoadPartyMenuPokeballGfx: @ 8122860 - push {lr} - ldr r0, _08122878 @ =sSpriteSheet_MenuPokeball - bl LoadCompressedSpriteSheet - ldr r0, _0812287C @ =sSpriteSheet_MenuPokeballSmall - bl LoadCompressedSpriteSheet - ldr r0, _08122880 @ =sSpritePalette_MenuPokeball - bl LoadCompressedSpritePalette - pop {r0} - bx r0 - .align 2, 0 -_08122878: .4byte sSpriteSheet_MenuPokeball -_0812287C: .4byte sSpriteSheet_MenuPokeballSmall -_08122880: .4byte sSpritePalette_MenuPokeball - thumb_func_end LoadPartyMenuPokeballGfx - - thumb_func_start CreatePartyMonStatusSprite -CreatePartyMonStatusSprite: @ 8122884 - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _081228AC - ldr r0, _081228B4 @ =sSpriteTemplate_StatusIcons - ldr r2, [r4, 0x4] - ldrb r1, [r2, 0x4] - ldrb r2, [r2, 0x5] - movs r3, 0 - bl CreateSprite - strb r0, [r4, 0xC] - adds r0, r5, 0 - adds r1, r4, 0 - bl SetPartyMonAilmentGfx -_081228AC: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_081228B4: .4byte sSpriteTemplate_StatusIcons - thumb_func_end CreatePartyMonStatusSprite - - thumb_func_start CreatePartyMonStatusSpriteParameterized -CreatePartyMonStatusSpriteParameterized: @ 81228B8 - push {r4,r5,lr} - adds r4, r2, 0 - lsls r0, 16 - lsls r1, 24 - lsrs r5, r1, 24 - cmp r0, 0 - beq _081228F4 - ldr r0, _081228FC @ =sSpriteTemplate_StatusIcons - ldr r2, [r4, 0x4] - ldrb r1, [r2, 0x4] - ldrb r2, [r2, 0x5] - movs r3, 0 - bl CreateSprite - strb r0, [r4, 0xC] - adds r0, r5, 0 - adds r1, r4, 0 - bl UpdatePartyMonAilmentGfx - ldr r2, _08122900 @ =gSprites - ldrb r0, [r4, 0xC] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r2, [r1, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x5] -_081228F4: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_081228FC: .4byte sSpriteTemplate_StatusIcons -_08122900: .4byte gSprites - thumb_func_end CreatePartyMonStatusSpriteParameterized - - thumb_func_start SetPartyMonAilmentGfx -SetPartyMonAilmentGfx: @ 8122904 - push {r4,lr} - adds r4, r1, 0 - bl GetMonAilment - lsls r0, 24 - lsrs r0, 24 - adds r1, r4, 0 - bl UpdatePartyMonAilmentGfx - pop {r4} - pop {r0} - bx r0 - thumb_func_end SetPartyMonAilmentGfx - - thumb_func_start UpdatePartyMonAilmentGfx -UpdatePartyMonAilmentGfx: @ 812291C - push {r4,r5,lr} - adds r5, r1, 0 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - beq _0812292C - cmp r2, 0x6 - bne _08122948 -_0812292C: - ldr r2, _08122944 @ =gSprites - ldrb r1, [r5, 0xC] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - b _08122972 - .align 2, 0 -_08122944: .4byte gSprites -_08122948: - ldrb r1, [r5, 0xC] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _0812297C @ =gSprites - adds r0, r4 - subs r1, r2, 0x1 - lsls r1, 24 - lsrs r1, 24 - bl StartSpriteAnim - ldrb r1, [r5, 0xC] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 -_08122972: - strb r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0812297C: .4byte gSprites - thumb_func_end UpdatePartyMonAilmentGfx - - thumb_func_start LoadPartyMenuAilmentGfx -LoadPartyMenuAilmentGfx: @ 8122980 - push {lr} - ldr r0, _08122994 @ =sSpriteSheet_StatusIcons - bl LoadCompressedSpriteSheet - ldr r0, _08122998 @ =sSpritePalette_StatusIcons - bl LoadCompressedSpritePalette - pop {r0} - bx r0 - .align 2, 0 -_08122994: .4byte sSpriteSheet_StatusIcons -_08122998: .4byte sSpritePalette_StatusIcons - thumb_func_end LoadPartyMenuAilmentGfx - - thumb_func_start SetPartyMonSelectionActions -SetPartyMonSelectionActions: @ 812299C - push {r4,lr} - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - cmp r2, 0 - bne _081229B0 - bl SetPartyMonFieldSelectionActions - b _081229E8 -_081229B0: - ldr r4, _081229F0 @ =sPartyMenuInternal - ldr r1, [r4] - ldr r0, _081229F4 @ =sPartyMenuActionCounts - adds r0, r2, r0 - ldrb r0, [r0] - strb r0, [r1, 0x17] - movs r3, 0 - ldr r0, [r4] - ldrb r0, [r0, 0x17] - cmp r3, r0 - bcs _081229E8 - ldr r1, _081229F8 @ =sPartyMenuActions - lsls r0, r2, 2 - adds r2, r0, r1 -_081229CC: - ldr r1, [r4] - adds r1, 0xF - adds r1, r3 - ldr r0, [r2] - adds r0, r3 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - ldr r0, [r4] - ldrb r0, [r0, 0x17] - cmp r3, r0 - bcc _081229CC -_081229E8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081229F0: .4byte sPartyMenuInternal -_081229F4: .4byte sPartyMenuActionCounts -_081229F8: .4byte sPartyMenuActions - thumb_func_end SetPartyMonSelectionActions - - thumb_func_start SetPartyMonFieldSelectionActions -SetPartyMonFieldSelectionActions: @ 81229FC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - mov r9, r0 - lsls r1, 24 - lsrs r1, 24 - mov r10, r1 - ldr r2, _08122A78 @ =sPartyMenuInternal - ldr r1, [r2] - movs r0, 0 - strb r0, [r1, 0x17] - ldr r1, [r2] - adds r0, r1, 0 - adds r0, 0xF - adds r1, 0x17 - movs r2, 0 - bl AppendToList - movs r7, 0 - ldr r0, _08122A7C @ =sFieldMoves - ldrh r0, [r0] - str r0, [sp] - mov r0, r9 - adds r0, 0x64 - str r0, [sp, 0x4] -_08122A34: - movs r4, 0 - adds r1, r7, 0x1 - mov r8, r1 - ldr r0, [sp] - cmp r0, 0xC - beq _08122A90 - movs r0, 0x64 - mov r6, r10 - muls r6, r0 - ldr r5, _08122A7C @ =sFieldMoves -_08122A48: - mov r1, r9 - adds r0, r1, r6 - adds r1, r7, 0 - adds r1, 0xD - bl GetMonData - lsls r1, r4, 1 - adds r1, r5 - ldrh r1, [r1] - cmp r0, r1 - bne _08122A80 - ldr r0, _08122A78 @ =sPartyMenuInternal - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0xF - adds r1, 0x17 - adds r2, r4, 0 - adds r2, 0x12 - lsls r2, 24 - lsrs r2, 24 - bl AppendToList - b _08122A90 - .align 2, 0 -_08122A78: .4byte sPartyMenuInternal -_08122A7C: .4byte sFieldMoves -_08122A80: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 1 - adds r0, r5 - ldrh r0, [r0] - cmp r0, 0xC - bne _08122A48 -_08122A90: - mov r1, r8 - lsls r0, r1, 24 - lsrs r7, r0, 24 - cmp r7, 0x3 - bls _08122A34 - ldr r0, [sp, 0x4] - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _08122AB6 - ldr r0, _08122AE8 @ =sPartyMenuInternal - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0xF - adds r1, 0x17 - movs r2, 0x1 - bl AppendToList -_08122AB6: - movs r0, 0x64 - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - add r0, r9 - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - bl ItemIsMail - lsls r0, 24 - cmp r0, 0 - beq _08122AEC - ldr r0, _08122AE8 @ =sPartyMenuInternal - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0xF - adds r1, 0x17 - movs r2, 0x6 - bl AppendToList - b _08122AFC - .align 2, 0 -_08122AE8: .4byte sPartyMenuInternal -_08122AEC: - ldr r0, _08122B1C @ =sPartyMenuInternal - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0xF - adds r1, 0x17 - movs r2, 0x3 - bl AppendToList -_08122AFC: - ldr r0, _08122B1C @ =sPartyMenuInternal - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0xF - adds r1, 0x17 - movs r2, 0x2 - bl AppendToList - 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 -_08122B1C: .4byte sPartyMenuInternal - thumb_func_end SetPartyMonFieldSelectionActions - - thumb_func_start GetPartyMenuActionsType -GetPartyMenuActionsType: @ 8122B20 - push {lr} - adds r2, r0, 0 - ldr r1, _08122B3C @ =gPartyMenu - ldrb r0, [r1, 0x8] - lsls r0, 28 - lsrs r0, 28 - adds r3, r1, 0 - cmp r0, 0xA - bhi _08122BCA - lsls r0, 2 - ldr r1, _08122B40 @ =_08122B44 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08122B3C: .4byte gPartyMenu -_08122B40: .4byte _08122B44 - .align 2, 0 -_08122B44: - .4byte _08122B70 - .4byte _08122B80 - .4byte _08122BCA - .4byte _08122BCA - .4byte _08122B8C - .4byte _08122BCA - .4byte _08122BAC - .4byte _08122BCA - .4byte _08122BBE - .4byte _08122BC2 - .4byte _08122BC6 -_08122B70: - adds r0, r2, 0 - movs r1, 0x2D - bl GetMonData - negs r1, r0 - orrs r1, r0 - lsrs r1, 31 - b _08122BCC -_08122B80: - adds r0, r2, 0 - bl GetPartyMenuActionsTypeInBattle - lsls r0, 24 - lsrs r1, r0, 24 - b _08122BCC -_08122B8C: - movs r0, 0x9 - ldrsb r0, [r3, r0] - bl GetPartySlotEntryStatus - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _08122BA4 - cmp r0, 0x1 - beq _08122BA8 - movs r1, 0x7 - b _08122BCC -_08122BA4: - movs r1, 0x4 - b _08122BCC -_08122BA8: - movs r1, 0x5 - b _08122BCC -_08122BAC: - adds r0, r2, 0 - movs r1, 0x2D - bl GetMonData - movs r1, 0x6 - cmp r0, 0 - beq _08122BCC - movs r1, 0x7 - b _08122BCC -_08122BBE: - movs r1, 0xA - b _08122BCC -_08122BC2: - movs r1, 0xB - b _08122BCC -_08122BC6: - movs r1, 0xC - b _08122BCC -_08122BCA: - movs r1, 0 -_08122BCC: - adds r0, r1, 0 - pop {r1} - bx r1 - thumb_func_end GetPartyMenuActionsType - - thumb_func_start CreateSelectionWindow -CreateSelectionWindow: @ 8122BD4 - push {r4-r6,lr} - ldr r5, _08122C20 @ =gPartyMenu - movs r1, 0x9 - ldrsb r1, [r5, r1] - movs r0, 0x64 - adds r4, r1, 0 - muls r4, r0 - ldr r6, _08122C24 @ =gPlayerParty - adds r4, r6 - ldr r1, _08122C28 @ =gStringVar1 - adds r0, r4, 0 - bl GetMonNickname - ldr r0, _08122C2C @ =sPartyMenuInternal - ldr r0, [r0] - adds r0, 0xD - bl PartyMenuRemoveWindow - ldrb r5, [r5, 0x9] - adds r0, r4, 0 - bl GetPartyMenuActionsType - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r6, 0 - adds r1, r5, 0 - bl SetPartyMonSelectionActions - movs r0, 0 - bl DisplaySelectionWindow - movs r0, 0x16 - bl DisplayPartyMenuStdMessage - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08122C20: .4byte gPartyMenu -_08122C24: .4byte gPlayerParty -_08122C28: .4byte gStringVar1 -_08122C2C: .4byte sPartyMenuInternal - thumb_func_end CreateSelectionWindow - - thumb_func_start Task_TryCreateSelectionWindow -Task_TryCreateSelectionWindow: @ 8122C30 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl CreateSelectionWindow - ldr r1, _08122C54 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0xFF - strh r1, [r0, 0x8] - ldr r1, _08122C58 @ =Task_HandleSelectionMenuInput - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08122C54: .4byte gTasks -_08122C58: .4byte Task_HandleSelectionMenuInput - thumb_func_end Task_TryCreateSelectionWindow - - thumb_func_start Task_HandleSelectionMenuInput -Task_HandleSelectionMenuInput: @ 8122C5C - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _08122C94 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08122D3E - bl sub_80BF748 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08122D3E - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _08122C98 @ =gTasks+0x8 - adds r7, r0, r1 - ldr r0, _08122C9C @ =sPartyMenuInternal - ldr r0, [r0] - ldrb r0, [r0, 0x17] - cmp r0, 0x3 - bhi _08122CA0 - bl Menu_ProcessInputNoWrapAround_other - b _08122CA4 - .align 2, 0 -_08122C94: .4byte gPaletteFade -_08122C98: .4byte gTasks+0x8 -_08122C9C: .4byte sPartyMenuInternal -_08122CA0: - bl Menu_ProcessInput_other -_08122CA4: - lsls r0, 24 - lsrs r5, r0, 24 - movs r0, 0 - ldrsh r4, [r7, r0] - bl Menu_GetCursorPos - lsls r0, 24 - lsrs r0, 24 - cmp r4, r0 - beq _08122CCE - ldr r0, _08122D14 @ =sPartyMenuInternal - ldr r4, [r0] - bl Menu_GetCursorPos - lsls r0, 24 - lsrs r0, 24 - adds r4, 0xF - adds r4, r0 - ldrb r0, [r4] - bl sub_8122138 -_08122CCE: - bl Menu_GetCursorPos - lsls r0, 24 - lsrs r0, 24 - strh r0, [r7] - lsls r0, r5, 24 - asrs r5, r0, 24 - movs r0, 0x2 - negs r0, r0 - cmp r5, r0 - beq _08122D3E - adds r0, 0x1 - cmp r5, r0 - bne _08122D1C - movs r0, 0x5 - bl PlaySE - ldr r4, _08122D14 @ =sPartyMenuInternal - ldr r0, [r4] - adds r0, 0xE - bl PartyMenuRemoveWindow - ldr r2, _08122D18 @ =sCursorOptions - ldr r0, [r4] - ldrb r1, [r0, 0x17] - adds r0, r1 - ldrb r0, [r0, 0xE] - lsls r0, 3 - adds r2, 0x4 - adds r0, r2 - ldr r1, [r0] - adds r0, r6, 0 - bl _call_via_r1 - b _08122D3E - .align 2, 0 -_08122D14: .4byte sPartyMenuInternal -_08122D18: .4byte sCursorOptions -_08122D1C: - ldr r4, _08122D44 @ =sPartyMenuInternal - ldr r0, [r4] - adds r0, 0xE - bl PartyMenuRemoveWindow - ldr r1, _08122D48 @ =sCursorOptions - ldr r0, [r4] - adds r0, 0xF - adds r0, r5 - ldrb r0, [r0] - lsls r0, 3 - adds r1, 0x4 - adds r0, r1 - ldr r1, [r0] - adds r0, r6, 0 - bl _call_via_r1 -_08122D3E: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08122D44: .4byte sPartyMenuInternal -_08122D48: .4byte sCursorOptions - thumb_func_end Task_HandleSelectionMenuInput - - thumb_func_start CursorCB_Summary -CursorCB_Summary: @ 8122D4C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x5 - bl PlaySE - ldr r0, _08122D70 @ =sPartyMenuInternal - ldr r1, [r0] - ldr r0, _08122D74 @ =CB2_ShowPokemonSummaryScreen - str r0, [r1, 0x4] - adds r0, r4, 0 - bl Task_ClosePartyMenu - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08122D70: .4byte sPartyMenuInternal -_08122D74: .4byte CB2_ShowPokemonSummaryScreen - thumb_func_end CursorCB_Summary - - thumb_func_start CB2_ShowPokemonSummaryScreen -CB2_ShowPokemonSummaryScreen: @ 8122D78 - push {r4,lr} - sub sp, 0x4 - ldr r4, _08122DAC @ =gPartyMenu - ldrb r1, [r4, 0x8] - movs r0, 0xF - ands r0, r1 - cmp r0, 0x1 - bne _08122D8C - bl UpdatePartyToBattleOrder -_08122D8C: - ldr r0, _08122DB0 @ =gPlayerParty - ldrb r1, [r4, 0x9] - ldr r2, _08122DB4 @ =gPlayerPartyCount - ldrb r2, [r2] - subs r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - ldr r3, _08122DB8 @ =CB2_ReturnToPartyMenuFromSummaryScreen - movs r4, 0 - str r4, [sp] - bl ShowPokemonSummaryScreen - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08122DAC: .4byte gPartyMenu -_08122DB0: .4byte gPlayerParty -_08122DB4: .4byte gPlayerPartyCount -_08122DB8: .4byte CB2_ReturnToPartyMenuFromSummaryScreen - thumb_func_end CB2_ShowPokemonSummaryScreen - - thumb_func_start CB2_ReturnToPartyMenuFromSummaryScreen -CB2_ReturnToPartyMenuFromSummaryScreen: @ 8122DBC - push {lr} - sub sp, 0xC - ldr r2, _08122DF4 @ =gPaletteFade - ldrb r0, [r2, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x8] - bl sub_8138B20 - ldr r3, _08122DF8 @ =gPartyMenu - strb r0, [r3, 0x9] - ldrb r0, [r3, 0x8] - lsls r0, 28 - lsrs r0, 28 - ldrb r2, [r3, 0xB] - movs r1, 0x16 - str r1, [sp] - ldr r1, _08122DFC @ =Task_TryCreateSelectionWindow - str r1, [sp, 0x4] - ldr r1, [r3] - str r1, [sp, 0x8] - movs r1, 0xFF - movs r3, 0x1 - bl InitPartyMenu - add sp, 0xC - pop {r0} - bx r0 - .align 2, 0 -_08122DF4: .4byte gPaletteFade -_08122DF8: .4byte gPartyMenu -_08122DFC: .4byte Task_TryCreateSelectionWindow - thumb_func_end CB2_ReturnToPartyMenuFromSummaryScreen - - thumb_func_start CursorCB_Switch -CursorCB_Switch: @ 8122E00 - push {r4-r6,lr} - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - movs r0, 0x5 - bl PlaySE - ldr r5, _08122E4C @ =gPartyMenu - movs r0, 0x8 - strb r0, [r5, 0xB] - ldr r4, _08122E50 @ =sPartyMenuInternal - ldr r0, [r4] - adds r0, 0xD - bl PartyMenuRemoveWindow - ldr r0, [r4] - adds r0, 0xC - bl PartyMenuRemoveWindow - movs r0, 0x3 - bl DisplayPartyMenuStdMessage - ldrb r0, [r5, 0x9] - movs r1, 0x1 - bl AnimatePartySlot - ldrb r0, [r5, 0x9] - strb r0, [r5, 0xA] - ldr r1, _08122E54 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - ldr r1, _08122E58 @ =Task_HandleChooseMonInput - str r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08122E4C: .4byte gPartyMenu -_08122E50: .4byte sPartyMenuInternal -_08122E54: .4byte gTasks -_08122E58: .4byte Task_HandleChooseMonInput - thumb_func_end CursorCB_Switch - - thumb_func_start SwitchSelectedMons -SwitchSelectedMons: @ 8122E5C - push {r4-r7,lr} - sub sp, 0xC - lsls r0, 24 - lsrs r7, r0, 24 - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - ldr r1, _08122E84 @ =gTasks+0x8 - adds r6, r0, r1 - ldr r4, _08122E88 @ =gPartyMenu - movs r1, 0xA - ldrsb r1, [r4, r1] - movs r0, 0x9 - ldrsb r0, [r4, r0] - cmp r1, r0 - bne _08122E8C - adds r0, r7, 0 - bl FinishTwoMonAction - b _08122FE2 - .align 2, 0 -_08122E84: .4byte gTasks+0x8 -_08122E88: .4byte gPartyMenu -_08122E8C: - bl sub_812358C - add r2, sp, 0x8 - movs r0, 0x9 - ldrsb r0, [r4, r0] - ldr r1, _08122EE8 @ =sPartyMenuBoxes - ldr r1, [r1] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0, 0x8] - movs r4, 0 - strb r0, [r2] - adds r0, r2, 0 - ldrb r0, [r0] - movs r1, 0x1 - bl GetWindowAttribute - strh r0, [r6] - add r0, sp, 0x8 - ldrb r0, [r0] - movs r1, 0x2 - bl GetWindowAttribute - strh r0, [r6, 0x2] - add r0, sp, 0x8 - ldrb r0, [r0] - movs r1, 0x3 - bl GetWindowAttribute - strh r0, [r6, 0x4] - add r0, sp, 0x8 - ldrb r0, [r0] - movs r1, 0x4 - bl GetWindowAttribute - strh r0, [r6, 0x6] - strh r4, [r6, 0x10] - movs r1, 0x4 - ldrsh r0, [r6, r1] - cmp r0, 0xA - bne _08122EEC - movs r2, 0x1 - negs r2, r2 - adds r0, r2, 0 - b _08122EEE - .align 2, 0 -_08122EE8: .4byte sPartyMenuBoxes -_08122EEC: - movs r0, 0x1 -_08122EEE: - strh r0, [r6, 0x14] - add r2, sp, 0x8 - ldr r0, _08122F4C @ =gPartyMenu - ldrb r0, [r0, 0xA] - lsls r0, 24 - asrs r0, 24 - ldr r1, _08122F50 @ =sPartyMenuBoxes - ldr r1, [r1] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0, 0x8] - movs r4, 0 - strb r0, [r2, 0x1] - adds r0, r2, 0 - ldrb r0, [r0, 0x1] - movs r1, 0x1 - bl GetWindowAttribute - strh r0, [r6, 0x8] - add r0, sp, 0x8 - ldrb r0, [r0, 0x1] - movs r1, 0x2 - bl GetWindowAttribute - strh r0, [r6, 0xA] - add r0, sp, 0x8 - ldrb r0, [r0, 0x1] - movs r1, 0x3 - bl GetWindowAttribute - strh r0, [r6, 0xC] - add r0, sp, 0x8 - ldrb r0, [r0, 0x1] - movs r1, 0x4 - bl GetWindowAttribute - strh r0, [r6, 0xE] - strh r4, [r6, 0x12] - movs r1, 0xC - ldrsh r0, [r6, r1] - cmp r0, 0xA - bne _08122F54 - movs r2, 0x1 - negs r2, r2 - adds r0, r2, 0 - b _08122F56 - .align 2, 0 -_08122F4C: .4byte gPartyMenu -_08122F50: .4byte sPartyMenuBoxes -_08122F54: - movs r0, 0x1 -_08122F56: - strh r0, [r6, 0x16] - ldr r4, _08122FEC @ =sSlot1TilemapBuffer - movs r0, 0x4 - ldrsh r1, [r6, r0] - movs r2, 0x6 - ldrsh r0, [r6, r2] - lsls r0, 1 - muls r0, r1 - bl Alloc - str r0, [r4] - ldr r5, _08122FF0 @ =sSlot2TilemapBuffer - movs r0, 0xC - ldrsh r1, [r6, r0] - movs r2, 0xE - ldrsh r0, [r6, r2] - lsls r0, 1 - muls r0, r1 - bl Alloc - str r0, [r5] - ldr r1, [r4] - ldrb r2, [r6] - ldrb r3, [r6, 0x2] - ldrb r0, [r6, 0x4] - str r0, [sp] - ldrb r0, [r6, 0x6] - str r0, [sp, 0x4] - movs r0, 0 - bl CopyRectIntoAltRect - ldr r1, [r5] - ldrb r2, [r6, 0x8] - ldrb r3, [r6, 0xA] - ldrb r0, [r6, 0xC] - str r0, [sp] - ldrb r0, [r6, 0xE] - str r0, [sp, 0x4] - movs r0, 0 - bl CopyRectIntoAltRect - add r0, sp, 0x8 - ldrb r0, [r0] - bl ClearWindowTilemap - add r0, sp, 0x8 - ldrb r0, [r0, 0x1] - bl ClearWindowTilemap - ldr r4, _08122FF4 @ =gPartyMenu - movs r0, 0x9 - strb r0, [r4, 0xB] - ldrb r0, [r4, 0x9] - movs r1, 0x1 - bl AnimatePartySlot - ldrb r0, [r4, 0xA] - movs r1, 0x1 - bl AnimatePartySlot - adds r0, r7, 0 - bl SlidePartyMenuBoxOneStep - ldr r1, _08122FF8 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - ldr r1, _08122FFC @ =Task_SlideSelectedSlotsOffscreen - str r1, [r0] -_08122FE2: - add sp, 0xC - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08122FEC: .4byte sSlot1TilemapBuffer -_08122FF0: .4byte sSlot2TilemapBuffer -_08122FF4: .4byte gPartyMenu -_08122FF8: .4byte gTasks -_08122FFC: .4byte Task_SlideSelectedSlotsOffscreen - thumb_func_end SwitchSelectedMons - - thumb_func_start TryMovePartySlot -TryMovePartySlot: @ 8123000 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r2, 0 - mov r12, r3 - ldr r7, [sp, 0x18] - lsls r0, 16 - lsrs r3, r0, 16 - adds r5, r3, 0 - lsls r1, 16 - lsrs r2, r1, 16 - mov r8, r2 - lsls r0, r3, 16 - asrs r1, r0, 16 - lsls r0, r2, 16 - asrs r0, 16 - adds r4, r1, r0 - cmp r4, 0 - blt _0812302A - cmp r1, 0x1F - ble _0812302E -_0812302A: - movs r0, 0 - b _0812305C -_0812302E: - cmp r1, 0 - bge _08123042 - negs r0, r1 - strb r0, [r6] - movs r0, 0 - mov r1, r12 - strb r0, [r1] - adds r0, r2, r3 - strb r0, [r7] - b _0812305A -_08123042: - movs r0, 0 - strb r0, [r6] - mov r0, r12 - strb r5, [r0] - cmp r4, 0x1F - ble _08123056 - movs r0, 0x20 - subs r0, r5 - strb r0, [r7] - b _0812305A -_08123056: - mov r1, r8 - strb r1, [r7] -_0812305A: - movs r0, 0x1 -_0812305C: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end TryMovePartySlot - - thumb_func_start MoveAndBufferPartySlot -MoveAndBufferPartySlot: @ 8123068 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x34 - str r0, [sp, 0x28] - ldr r0, [sp, 0x54] - ldr r4, [sp, 0x58] - lsls r2, 16 - lsrs r2, 16 - mov r9, r2 - lsls r3, 16 - lsls r0, 16 - lsrs r0, 16 - mov r10, r0 - lsls r4, 16 - lsrs r4, 16 - str r4, [sp, 0x30] - lsls r1, 16 - asrs r7, r1, 16 - lsrs r0, r3, 16 - str r0, [sp, 0x2C] - asrs r3, 16 - mov r8, r3 - mov r5, sp - adds r5, 0x25 - mov r6, sp - adds r6, 0x26 - str r6, [sp] - adds r0, r7, 0 - mov r1, r8 - add r2, sp, 0x24 - adds r3, r5, 0 - bl TryMovePartySlot - lsls r0, 24 - cmp r0, 0 - beq _08123122 - ldrb r2, [r5] - mov r1, r9 - lsls r0, r1, 24 - lsrs r0, 24 - mov r9, r0 - ldrb r0, [r6] - str r0, [sp] - mov r1, r10 - lsls r0, r1, 24 - lsrs r4, r0, 24 - str r4, [sp, 0x4] - movs r0, 0 - movs r1, 0 - mov r3, r9 - bl FillBgTilemapBufferRect_Palette0 - ldr r1, [sp, 0x30] - lsls r0, r1, 16 - asrs r0, 16 - adds r0, r7, r0 - lsls r0, 16 - asrs r0, 16 - str r6, [sp] - mov r1, r8 - add r2, sp, 0x24 - adds r3, r5, 0 - bl TryMovePartySlot - lsls r0, 24 - cmp r0, 0 - beq _08123122 - add r0, sp, 0x24 - ldrb r2, [r0] - ldr r1, [sp, 0x2C] - lsls r0, r1, 24 - lsrs r0, 24 - str r0, [sp] - str r4, [sp, 0x4] - ldrb r0, [r5] - str r0, [sp, 0x8] - mov r0, r9 - str r0, [sp, 0xC] - ldrb r0, [r6] - str r0, [sp, 0x10] - str r4, [sp, 0x14] - movs r0, 0x11 - str r0, [sp, 0x18] - movs r0, 0 - str r0, [sp, 0x1C] - str r0, [sp, 0x20] - ldr r1, [sp, 0x28] - movs r3, 0 - bl CopyRectToBgTilemapBufferRect -_08123122: - add sp, 0x34 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end MoveAndBufferPartySlot - - thumb_func_start MovePartyMenuBoxSprites -MovePartyMenuBoxSprites: @ 8123134 - push {r4,lr} - ldr r4, _08123184 @ =gSprites - ldrb r2, [r0, 0xB] - lsls r3, r2, 4 - adds r3, r2 - lsls r3, 2 - adds r3, r4 - lsls r1, 16 - asrs r1, 13 - ldrh r2, [r3, 0x24] - adds r2, r1 - strh r2, [r3, 0x24] - ldrb r3, [r0, 0xA] - lsls r2, r3, 4 - adds r2, r3 - lsls r2, 2 - adds r2, r4 - ldrh r3, [r2, 0x24] - adds r3, r1 - strh r3, [r2, 0x24] - ldrb r3, [r0, 0x9] - lsls r2, r3, 4 - adds r2, r3 - lsls r2, 2 - adds r2, r4 - ldrh r3, [r2, 0x24] - adds r3, r1 - strh r3, [r2, 0x24] - ldrb r2, [r0, 0xC] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r4 - ldrh r2, [r0, 0x24] - adds r2, r1 - strh r2, [r0, 0x24] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08123184: .4byte gSprites - thumb_func_end MovePartyMenuBoxSprites - - thumb_func_start SlidePartyMenuBoxSpritesOneStep -SlidePartyMenuBoxSpritesOneStep: @ 8123188 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _081231DC @ =gTasks+0x8 - adds r4, r1, r0 - movs r1, 0x14 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _081231B6 - ldr r2, _081231E0 @ =sPartyMenuBoxes - ldr r0, _081231E4 @ =gPartyMenu - movs r1, 0x9 - ldrsb r1, [r0, r1] - lsls r1, 4 - ldr r0, [r2] - adds r0, r1 - movs r2, 0x14 - ldrsh r1, [r4, r2] - bl MovePartyMenuBoxSprites -_081231B6: - movs r1, 0x16 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _081231D4 - ldr r2, _081231E0 @ =sPartyMenuBoxes - ldr r0, _081231E4 @ =gPartyMenu - movs r1, 0xA - ldrsb r1, [r0, r1] - lsls r1, 4 - ldr r0, [r2] - adds r0, r1 - movs r2, 0x16 - ldrsh r1, [r4, r2] - bl MovePartyMenuBoxSprites -_081231D4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081231DC: .4byte gTasks+0x8 -_081231E0: .4byte sPartyMenuBoxes -_081231E4: .4byte gPartyMenu - thumb_func_end SlidePartyMenuBoxSpritesOneStep - - thumb_func_start SlidePartyMenuBoxOneStep -SlidePartyMenuBoxOneStep: @ 81231E8 - push {r4-r6,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _08123264 @ =gTasks+0x8 - adds r5, r1, r0 - movs r1, 0x14 - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _08123228 - ldr r0, _08123268 @ =sSlot1TilemapBuffer - ldr r0, [r0] - ldrh r1, [r5, 0x10] - ldrh r2, [r5] - adds r1, r2 - lsls r1, 16 - asrs r1, 16 - movs r3, 0x2 - ldrsh r2, [r5, r3] - movs r4, 0x4 - ldrsh r3, [r5, r4] - movs r6, 0x6 - ldrsh r4, [r5, r6] - str r4, [sp] - movs r6, 0x14 - ldrsh r4, [r5, r6] - str r4, [sp, 0x4] - bl MoveAndBufferPartySlot -_08123228: - movs r1, 0x16 - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _08123256 - ldr r0, _0812326C @ =sSlot2TilemapBuffer - ldr r0, [r0] - ldrh r1, [r5, 0x12] - ldrh r2, [r5, 0x8] - adds r1, r2 - lsls r1, 16 - asrs r1, 16 - movs r3, 0xA - ldrsh r2, [r5, r3] - movs r4, 0xC - ldrsh r3, [r5, r4] - movs r6, 0xE - ldrsh r4, [r5, r6] - str r4, [sp] - movs r6, 0x16 - ldrsh r4, [r5, r6] - str r4, [sp, 0x4] - bl MoveAndBufferPartySlot -_08123256: - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08123264: .4byte gTasks+0x8 -_08123268: .4byte sSlot1TilemapBuffer -_0812326C: .4byte sSlot2TilemapBuffer - thumb_func_end SlidePartyMenuBoxOneStep - - thumb_func_start Task_SlideSelectedSlotsOffscreen -Task_SlideSelectedSlotsOffscreen: @ 8123270 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xC - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r7, r0, 3 - ldr r0, _08123370 @ =gTasks+0x8 - mov r8, r0 - adds r6, r7, r0 - adds r0, r4, 0 - bl SlidePartyMenuBoxOneStep - adds r0, r4, 0 - bl SlidePartyMenuBoxSpritesOneStep - ldrh r1, [r6, 0x14] - ldrh r2, [r6, 0x10] - adds r1, r2 - strh r1, [r6, 0x10] - ldrh r0, [r6, 0x16] - ldrh r3, [r6, 0x12] - adds r0, r3 - strh r0, [r6, 0x12] - add r2, sp, 0x8 - ldrh r0, [r6] - adds r0, r1 - strh r0, [r2] - adds r1, r2, 0 - ldrh r0, [r6, 0x12] - ldrh r3, [r6, 0x8] - adds r2, r0, r3 - strh r2, [r1, 0x2] - adds r0, r1, 0 - ldrh r0, [r0] - cmp r0, 0x21 - bls _08123362 - lsls r0, r2, 16 - lsrs r0, 16 - cmp r0, 0x21 - bls _08123362 - movs r1, 0x14 - ldrsh r0, [r6, r1] - negs r0, r0 - strh r0, [r6, 0x14] - movs r2, 0x16 - ldrsh r0, [r6, r2] - negs r0, r0 - strh r0, [r6, 0x16] - bl SwitchPartyMon - ldr r4, _08123374 @ =gPartyMenu - ldrb r0, [r4, 0x9] - bl DisplayPartyPokemonData - ldrb r0, [r4, 0xA] - bl DisplayPartyPokemonData - movs r0, 0x9 - ldrsb r0, [r4, r0] - ldr r5, _08123378 @ =sPartyMenuBoxes - ldr r1, [r5] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0, 0x8] - bl PutWindowTilemap - movs r0, 0xA - ldrsb r0, [r4, r0] - ldr r1, [r5] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0, 0x8] - bl PutWindowTilemap - ldr r0, _0812337C @ =sSlot1TilemapBuffer - ldr r1, [r0] - ldrb r2, [r6] - ldrb r3, [r6, 0x2] - ldrb r0, [r6, 0x4] - str r0, [sp] - ldrb r0, [r6, 0x6] - str r0, [sp, 0x4] - movs r0, 0 - bl CopyRectIntoAltRect - ldr r0, _08123380 @ =sSlot2TilemapBuffer - ldr r1, [r0] - ldrb r2, [r6, 0x8] - ldrb r3, [r6, 0xA] - ldrb r0, [r6, 0xC] - str r0, [sp] - ldrb r0, [r6, 0xE] - str r0, [sp, 0x4] - movs r0, 0 - bl CopyRectIntoAltRect - movs r0, 0x9 - ldrsb r0, [r4, r0] - ldr r1, [r5] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0, 0x8] - bl ClearWindowTilemap - movs r0, 0xA - ldrsb r0, [r4, r0] - ldr r1, [r5] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0, 0x8] - bl ClearWindowTilemap - mov r0, r8 - subs r0, 0x8 - adds r0, r7, r0 - ldr r1, _08123384 @ =Task_SlideSelectedSlotsOnscreen - str r1, [r0] -_08123362: - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08123370: .4byte gTasks+0x8 -_08123374: .4byte gPartyMenu -_08123378: .4byte sPartyMenuBoxes -_0812337C: .4byte sSlot1TilemapBuffer -_08123380: .4byte sSlot2TilemapBuffer -_08123384: .4byte Task_SlideSelectedSlotsOnscreen - thumb_func_end Task_SlideSelectedSlotsOffscreen - - thumb_func_start Task_SlideSelectedSlotsOnscreen -Task_SlideSelectedSlotsOnscreen: @ 8123388 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - ldr r1, _081233E8 @ =gTasks+0x8 - adds r4, r0, r1 - adds r0, r6, 0 - bl SlidePartyMenuBoxOneStep - adds r0, r6, 0 - bl SlidePartyMenuBoxSpritesOneStep - movs r1, 0x14 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _081233F4 - movs r2, 0x16 - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _081233F4 - ldr r5, _081233EC @ =gPartyMenu - movs r0, 0x9 - ldrsb r0, [r5, r0] - ldr r4, _081233F0 @ =sPartyMenuBoxes - ldr r1, [r4] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0, 0x8] - bl PutWindowTilemap - movs r0, 0xA - ldrsb r0, [r5, r0] - ldr r1, [r4] - lsls r0, 4 - adds r0, r1 - ldrb r0, [r0, 0x8] - bl PutWindowTilemap - movs r0, 0 - bl ScheduleBgCopyTilemapToVram - adds r0, r6, 0 - bl FinishTwoMonAction - b _08123418 - .align 2, 0 -_081233E8: .4byte gTasks+0x8 -_081233EC: .4byte gPartyMenu -_081233F0: .4byte sPartyMenuBoxes -_081233F4: - ldrh r1, [r4, 0x14] - ldrh r0, [r4, 0x10] - adds r1, r0 - strh r1, [r4, 0x10] - ldrh r0, [r4, 0x16] - ldrh r2, [r4, 0x12] - adds r0, r2 - strh r0, [r4, 0x12] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0 - bne _0812340E - strh r1, [r4, 0x14] -_0812340E: - movs r1, 0x12 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _08123418 - strh r0, [r4, 0x16] -_08123418: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end Task_SlideSelectedSlotsOnscreen - - thumb_func_start SwitchMenuBoxSprites -SwitchMenuBoxSprites: @ 8123420 - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - ldrb r3, [r0] - ldrb r2, [r1] - strb r2, [r0] - strb r3, [r1] - ldr r5, _081234E8 @ =gSprites - ldrb r2, [r0] - lsls r3, r2, 4 - adds r3, r2 - lsls r3, 2 - adds r3, r5 - ldrh r6, [r3, 0x20] - ldrh r2, [r3, 0x22] - mov r8, r2 - ldrh r2, [r3, 0x24] - mov r9, r2 - ldrh r2, [r3, 0x26] - mov r10, r2 - ldrb r4, [r1] - lsls r2, r4, 4 - adds r2, r4 - lsls r2, 2 - adds r2, r5 - ldrh r2, [r2, 0x20] - strh r2, [r3, 0x20] - ldrb r2, [r0] - lsls r3, r2, 4 - adds r3, r2 - lsls r3, 2 - adds r3, r5 - ldrb r4, [r1] - lsls r2, r4, 4 - adds r2, r4 - lsls r2, 2 - adds r2, r5 - ldrh r2, [r2, 0x22] - strh r2, [r3, 0x22] - ldrb r2, [r0] - lsls r3, r2, 4 - adds r3, r2 - lsls r3, 2 - adds r3, r5 - ldrb r4, [r1] - lsls r2, r4, 4 - adds r2, r4 - lsls r2, 2 - adds r2, r5 - ldrh r2, [r2, 0x24] - strh r2, [r3, 0x24] - ldrb r0, [r0] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r5 - ldrb r3, [r1] - lsls r0, r3, 4 - adds r0, r3 - lsls r0, 2 - adds r0, r5 - ldrh r0, [r0, 0x26] - strh r0, [r2, 0x26] - ldrb r2, [r1] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r5 - strh r6, [r0, 0x20] - ldrb r2, [r1] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r5 - mov r2, r8 - strh r2, [r0, 0x22] - ldrb r2, [r1] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r5 - mov r2, r9 - strh r2, [r0, 0x24] - ldrb r1, [r1] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - mov r1, r10 - strh r1, [r0, 0x26] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_081234E8: .4byte gSprites - thumb_func_end SwitchMenuBoxSprites - - thumb_func_start SwitchPartyMon -SwitchPartyMon: @ 81234EC - push {r4-r6,lr} - sub sp, 0x8 - ldr r1, _08123580 @ =sPartyMenuBoxes - ldr r2, _08123584 @ =gPartyMenu - movs r3, 0x9 - ldrsb r3, [r2, r3] - lsls r0, r3, 4 - ldr r1, [r1] - adds r0, r1, r0 - str r0, [sp] - ldrb r2, [r2, 0xA] - lsls r2, 24 - asrs r2, 24 - lsls r0, r2, 4 - adds r0, r1, r0 - str r0, [sp, 0x4] - movs r1, 0x64 - adds r4, r3, 0 - muls r4, r1 - ldr r0, _08123588 @ =gPlayerParty - adds r4, r0 - adds r5, r2, 0 - muls r5, r1 - adds r5, r0 - movs r0, 0x64 - bl Alloc - adds r6, r0, 0 - adds r1, r4, 0 - movs r2, 0x64 - bl memcpy - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x64 - bl memcpy - adds r0, r5, 0 - adds r1, r6, 0 - movs r2, 0x64 - bl memcpy - adds r0, r6, 0 - bl Free - ldr r0, [sp] - adds r0, 0xB - ldr r1, [sp, 0x4] - adds r1, 0xB - bl SwitchMenuBoxSprites - ldr r0, [sp] - adds r0, 0xA - ldr r1, [sp, 0x4] - adds r1, 0xA - bl SwitchMenuBoxSprites - ldr r0, [sp] - adds r0, 0x9 - ldr r1, [sp, 0x4] - adds r1, 0x9 - bl SwitchMenuBoxSprites - ldr r0, [sp] - adds r0, 0xC - ldr r1, [sp, 0x4] - adds r1, 0xC - bl SwitchMenuBoxSprites - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08123580: .4byte sPartyMenuBoxes -_08123584: .4byte gPartyMenu -_08123588: .4byte gPlayerParty - thumb_func_end SwitchPartyMon - - thumb_func_start sub_812358C -sub_812358C: @ 812358C - push {r4-r6,lr} - mov r6, r8 - push {r6} - movs r0, 0x4 - bl Alloc - adds r4, r0, 0 - ldr r0, _081235E0 @ =gPartyMenu - mov r8, r0 - ldrb r0, [r0, 0x9] - lsls r0, 24 - asrs r0, 24 - movs r6, 0x64 - muls r0, r6 - ldr r5, _081235E4 @ =gPlayerParty - adds r0, r5 - movs r1, 0x41 - bl GetMonData - strh r0, [r4] - mov r1, r8 - movs r0, 0xA - ldrsb r0, [r1, r0] - muls r0, r6 - adds r0, r5 - movs r1, 0x41 - bl GetMonData - strh r0, [r4, 0x2] - movs r0, 0x3 - adds r1, r4, 0 - bl sub_8113550 - adds r0, r4, 0 - bl Free - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_081235E0: .4byte gPartyMenu -_081235E4: .4byte gPlayerParty - thumb_func_end sub_812358C - - thumb_func_start FinishTwoMonAction -FinishTwoMonAction: @ 81235E8 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _08123630 @ =sPartyMenuInternal - ldr r0, [r0] - adds r0, 0xD - bl PartyMenuRemoveWindow - ldr r4, _08123634 @ =gPartyMenu - movs r0, 0 - strb r0, [r4, 0xB] - ldrb r0, [r4, 0x9] - movs r1, 0 - bl AnimatePartySlot - ldrb r0, [r4, 0xA] - strb r0, [r4, 0x9] - ldrb r0, [r4, 0xA] - movs r1, 0x1 - bl AnimatePartySlot - movs r0, 0 - bl DisplayPartyMenuStdMessage - ldr r1, _08123638 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _0812363C @ =Task_HandleChooseMonInput - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08123630: .4byte sPartyMenuInternal -_08123634: .4byte gPartyMenu -_08123638: .4byte gTasks -_0812363C: .4byte Task_HandleChooseMonInput - thumb_func_end FinishTwoMonAction - - thumb_func_start CursorCB_Cancel1 -CursorCB_Cancel1: @ 8123640 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r0, 0x5 - bl PlaySE - ldr r4, _08123674 @ =sPartyMenuInternal - ldr r0, [r4] - adds r0, 0xC - bl PartyMenuRemoveWindow - ldr r0, [r4] - adds r0, 0xD - bl PartyMenuRemoveWindow - ldr r0, _08123678 @ =gPartyMenu - ldrb r1, [r0, 0x8] - movs r0, 0xF - ands r0, r1 - cmp r0, 0x6 - bne _0812367C - movs r0, 0xF - bl DisplayPartyMenuStdMessage - b _08123682 - .align 2, 0 -_08123674: .4byte sPartyMenuInternal -_08123678: .4byte gPartyMenu -_0812367C: - movs r0, 0 - bl DisplayPartyMenuStdMessage -_08123682: - ldr r0, _08123698 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _0812369C @ =Task_HandleChooseMonInput - str r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08123698: .4byte gTasks -_0812369C: .4byte Task_HandleChooseMonInput - thumb_func_end CursorCB_Cancel1 - - thumb_func_start CursorCB_Item -CursorCB_Item: @ 81236A0 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - movs r0, 0x5 - bl PlaySE - ldr r4, _081236F0 @ =sPartyMenuInternal - ldr r0, [r4] - adds r0, 0xC - bl PartyMenuRemoveWindow - ldr r0, [r4] - adds r0, 0xD - bl PartyMenuRemoveWindow - ldr r0, _081236F4 @ =gPlayerParty - ldr r1, _081236F8 @ =gPartyMenu - ldrb r1, [r1, 0x9] - movs r2, 0x8 - bl SetPartyMonSelectionActions - movs r0, 0x1 - bl DisplaySelectionWindow - movs r0, 0x19 - bl DisplayPartyMenuStdMessage - ldr r1, _081236FC @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r1, 0xFF - strh r1, [r0, 0x8] - ldr r1, _08123700 @ =Task_HandleSelectionMenuInput - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_081236F0: .4byte sPartyMenuInternal -_081236F4: .4byte gPlayerParty -_081236F8: .4byte gPartyMenu -_081236FC: .4byte gTasks -_08123700: .4byte Task_HandleSelectionMenuInput - thumb_func_end CursorCB_Item - - thumb_func_start CursorCB_Give -CursorCB_Give: @ 8123704 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x5 - bl PlaySE - ldr r0, _08123728 @ =sPartyMenuInternal - ldr r1, [r0] - ldr r0, _0812372C @ =CB2_SelectBagItemToGive - str r0, [r1, 0x4] - adds r0, r4, 0 - bl Task_ClosePartyMenu - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08123728: .4byte sPartyMenuInternal -_0812372C: .4byte CB2_SelectBagItemToGive - thumb_func_end CursorCB_Give - - thumb_func_start CB2_SelectBagItemToGive -CB2_SelectBagItemToGive: @ 8123730 - push {lr} - ldr r2, _08123740 @ =CB2_GiveHoldItem - movs r0, 0x1 - movs r1, 0x3 - bl GoToBagMenu - pop {r0} - bx r0 - .align 2, 0 -_08123740: .4byte CB2_GiveHoldItem - thumb_func_end CB2_SelectBagItemToGive - - thumb_func_start CB2_GiveHoldItem -CB2_GiveHoldItem: @ 8123744 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xC - ldr r6, _0812376C @ =gSpecialVar_ItemId - ldrh r0, [r6] - cmp r0, 0 - bne _08123778 - ldr r3, _08123770 @ =gPartyMenu - ldrb r0, [r3, 0x8] - lsls r0, 28 - lsrs r0, 28 - ldrb r2, [r3, 0xB] - movs r1, 0x7F - str r1, [sp] - ldr r1, _08123774 @ =Task_TryCreateSelectionWindow - str r1, [sp, 0x4] - ldr r1, [r3] - b _081237AE - .align 2, 0 -_0812376C: .4byte gSpecialVar_ItemId -_08123770: .4byte gPartyMenu -_08123774: .4byte Task_TryCreateSelectionWindow -_08123778: - ldr r4, _081237BC @ =sPartyMenuItemId - ldr r5, _081237C0 @ =gPartyMenu - movs r0, 0x9 - ldrsb r0, [r5, r0] - movs r1, 0x64 - mov r8, r1 - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - ldr r7, _081237C4 @ =gPlayerParty - adds r0, r7 - movs r1, 0xC - bl GetMonData - strh r0, [r4] - lsls r0, 16 - cmp r0, 0 - beq _081237CC - ldrb r0, [r5, 0x8] - lsls r0, 28 - lsrs r0, 28 - ldrb r2, [r5, 0xB] - movs r1, 0x7F - str r1, [sp] - ldr r1, _081237C8 @ =Task_SwitchHoldItemsPrompt - str r1, [sp, 0x4] - ldr r1, [r5] -_081237AE: - str r1, [sp, 0x8] - movs r1, 0xFF - movs r3, 0x1 - bl InitPartyMenu - b _08123814 - .align 2, 0 -_081237BC: .4byte sPartyMenuItemId -_081237C0: .4byte gPartyMenu -_081237C4: .4byte gPlayerParty -_081237C8: .4byte Task_SwitchHoldItemsPrompt -_081237CC: - ldrh r0, [r6] - bl ItemIsMail - lsls r0, 24 - cmp r0, 0 - beq _081237F8 - ldrh r0, [r6] - movs r1, 0x1 - bl RemoveBagItem - movs r0, 0x9 - ldrsb r0, [r5, r0] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r7 - ldrh r1, [r6] - bl GiveItemToMon - bl CB2_WriteMailToGiveMon - b _08123814 -_081237F8: - ldrb r0, [r5, 0x8] - lsls r0, 28 - lsrs r0, 28 - ldrb r2, [r5, 0xB] - movs r1, 0x7F - str r1, [sp] - ldr r1, _08123820 @ =Task_GiveHoldItem - str r1, [sp, 0x4] - ldr r1, [r5] - str r1, [sp, 0x8] - movs r1, 0xFF - movs r3, 0x1 - bl InitPartyMenu -_08123814: - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08123820: .4byte Task_GiveHoldItem - thumb_func_end CB2_GiveHoldItem - - thumb_func_start Task_GiveHoldItem -Task_GiveHoldItem: @ 8123824 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _0812388C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08123880 - ldr r0, _08123890 @ =gSpecialVar_ItemId - ldrh r4, [r0] - ldr r0, _08123894 @ =gPartyMenu - mov r8, r0 - ldrb r0, [r0, 0x9] - lsls r0, 24 - asrs r0, 24 - movs r6, 0x64 - muls r0, r6 - ldr r5, _08123898 @ =gPlayerParty - adds r0, r5 - adds r1, r4, 0 - movs r2, 0 - movs r3, 0 - bl DisplayGaveHeldItemMessage - mov r1, r8 - movs r0, 0x9 - ldrsb r0, [r1, r0] - muls r0, r6 - adds r0, r5 - adds r1, r4, 0 - bl GiveItemToMon - adds r0, r4, 0 - movs r1, 0x1 - bl RemoveBagItem - ldr r1, _0812389C @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - ldr r1, _081238A0 @ =Task_UpdateHeldItemSprite - str r1, [r0] -_08123880: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0812388C: .4byte gPaletteFade -_08123890: .4byte gSpecialVar_ItemId -_08123894: .4byte gPartyMenu -_08123898: .4byte gPlayerParty -_0812389C: .4byte gTasks -_081238A0: .4byte Task_UpdateHeldItemSprite - thumb_func_end Task_GiveHoldItem - thumb_func_start Task_SwitchHoldItemsPrompt Task_SwitchHoldItemsPrompt: @ 81238A4 push {r4,lr} diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index 337361dcf..460410f47 100644 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -15947,7 +15947,7 @@ sub_80937B4: @ 80937B4 _080937C4: .4byte gUnknown_2039822 _080937C8: ldr r4, _080937D8 @ =gUnknown_2039821 - bl sub_8138B20 + bl GetLastViewedMonIndex strb r0, [r4] _080937D0: pop {r4} diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index ee5a96156..b345231f3 100644 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -42,7 +42,7 @@ _0813453C: .4byte gUnknown_203B140 _08134540: .4byte 0x00003308 _08134544: .4byte gUnknown_203B144 _08134548: - ldr r0, _08134574 @ =gUnknown_203B16C + ldr r0, _08134574 @ =gLastViewedMonIndex strb r6, [r0] ldr r0, _08134578 @ =gUnknown_203B16D movs r1, 0 @@ -64,7 +64,7 @@ _08134548: movs r0, 0x1 b _08134596 .align 2, 0 -_08134574: .4byte gUnknown_203B16C +_08134574: .4byte gLastViewedMonIndex _08134578: .4byte gUnknown_203B16D _0813457C: .4byte gUnknown_203B16E _08134580: .4byte 0x000032f8 @@ -6839,8 +6839,8 @@ _08137E82: adds r0, r1 ldr r0, [r0] bl SetMainCallback2 - bl sub_8138B20 - ldr r1, _08137EE0 @ =gUnknown_203B16C + bl GetLastViewedMonIndex + ldr r1, _08137EE0 @ =gLastViewedMonIndex strb r0, [r1] ldr r0, [r4] cmp r0, 0 @@ -6864,7 +6864,7 @@ _08137ECC: _08137ED4: .4byte gUnknown_203B140 _08137ED8: .4byte 0x00003214 _08137EDC: .4byte 0x000032f8 -_08137EE0: .4byte gUnknown_203B16C +_08137EE0: .4byte gLastViewedMonIndex _08137EE4: .4byte gUnknown_203B144 thumb_func_end sub_8137E64 @@ -8397,14 +8397,14 @@ _08138B18: .4byte 0x00003220 _08138B1C: .4byte 0x00003221 thumb_func_end sub_8138A38 - thumb_func_start sub_8138B20 -sub_8138B20: @ 8138B20 - ldr r0, _08138B28 @ =gUnknown_203B16C + thumb_func_start GetLastViewedMonIndex +GetLastViewedMonIndex: @ 8138B20 + ldr r0, _08138B28 @ =gLastViewedMonIndex ldrb r0, [r0] bx lr .align 2, 0 -_08138B28: .4byte gUnknown_203B16C - thumb_func_end sub_8138B20 +_08138B28: .4byte gLastViewedMonIndex + thumb_func_end GetLastViewedMonIndex thumb_func_start GetMoveSlotToReplace GetMoveSlotToReplace: @ 8138B2C @@ -8443,7 +8443,7 @@ sub_8138B4C: @ 8138B4C ldrb r0, [r0] cmp r0, 0x1 bne _08138B84 - ldr r0, _08138B80 @ =gUnknown_203B16C + ldr r0, _08138B80 @ =gLastViewedMonIndex ldrb r0, [r0] cmp r0, 0x3 bhi _08138B76 @@ -8454,7 +8454,7 @@ _08138B76: b _08138B86 .align 2, 0 _08138B7C: .4byte gReceivedRemoteLinkPlayers -_08138B80: .4byte gUnknown_203B16C +_08138B80: .4byte gLastViewedMonIndex _08138B84: movs r0, 0 _08138B86: @@ -8476,7 +8476,7 @@ sub_8138B8C: @ 8138B8C adds r2, 0xD8 adds r0, r1, r2 ldr r4, [r0] - bl sub_8138B20 + bl GetLastViewedMonIndex lsls r0, 24 lsrs r0, 24 movs r1, 0x64 @@ -8493,7 +8493,7 @@ _08138BC4: ldr r2, _08138BE8 @ =0x000032f4 adds r0, r1, r2 ldr r4, [r0] - bl sub_8138B20 + bl GetLastViewedMonIndex lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 @@ -9148,7 +9148,7 @@ sub_81390B0: @ 81390B0 ldr r1, _081391DC @ =0x000032f4 adds r0, r1 ldr r6, [r0] - bl sub_8138B20 + bl GetLastViewedMonIndex lsls r0, 24 lsrs r0, 24 movs r1, 0x64 @@ -9294,7 +9294,7 @@ sub_81391EC: @ 81391EC ldr r1, _08139318 @ =0x000032f4 adds r0, r1 ldr r6, [r0] - bl sub_8138B20 + bl GetLastViewedMonIndex lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 @@ -9442,7 +9442,7 @@ sub_8139328: @ 8139328 adds r2, 0xD8 adds r0, r1, r2 ldr r4, [r0] - bl sub_8138B20 + bl GetLastViewedMonIndex lsls r0, 24 lsrs r0, 24 movs r1, 0x64 @@ -9459,7 +9459,7 @@ _08139360: ldr r2, _08139384 @ =0x000032f4 adds r0, r1, r2 ldr r4, [r0] - bl sub_8138B20 + bl GetLastViewedMonIndex lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 @@ -10269,7 +10269,7 @@ _081399DC: .4byte sub_804CF14 _081399E0: .4byte 0x00003024 _081399E4: .4byte 0x0000ffff _081399E8: - ldr r0, _08139A1C @ =gUnknown_203B16C + ldr r0, _08139A1C @ =gLastViewedMonIndex ldrb r1, [r0] movs r0, 0x3 bl sub_804455C @@ -10293,7 +10293,7 @@ _081399E8: bl CreateMonPicSprite b _08139A40 .align 2, 0 -_08139A1C: .4byte gUnknown_203B16C +_08139A1C: .4byte gLastViewedMonIndex _08139A20: .4byte 0x0000ffff _08139A24: movs r0, 0x3C @@ -10787,7 +10787,7 @@ _08139E20: .align 2, 0 _08139E28: .4byte SpriteCallbackDummy _08139E2C: - ldr r0, _08139E48 @ =gUnknown_203B16C + ldr r0, _08139E48 @ =gLastViewedMonIndex ldrb r1, [r0] movs r0, 0x3 bl sub_804455C @@ -10801,7 +10801,7 @@ _08139E2C: str r4, [sp, 0x4] b _08139E58 .align 2, 0 -_08139E48: .4byte gUnknown_203B16C +_08139E48: .4byte gLastViewedMonIndex _08139E4C: .4byte SpriteCallbackDummy _08139E50: ldr r1, _08139E98 @ =SpriteCallbackDummy @@ -13221,7 +13221,7 @@ _0813B16C: ldr r2, _0813B190 @ =0x000032f4 adds r0, r2 ldr r4, [r0] - bl sub_8138B20 + bl GetLastViewedMonIndex adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 @@ -13268,7 +13268,7 @@ _0813B1CC: negs r1, r1 cmp r0, r1 beq _0813B1F4 - ldr r0, _0813B1FC @ =gUnknown_203B16C + ldr r0, _0813B1FC @ =gLastViewedMonIndex strb r2, [r0] ldr r0, _0813B200 @ =sub_813B3F0 movs r1, 0 @@ -13284,7 +13284,7 @@ _0813B1F4: pop {r0} bx r0 .align 2, 0 -_0813B1FC: .4byte gUnknown_203B16C +_0813B1FC: .4byte gLastViewedMonIndex _0813B200: .4byte sub_813B3F0 _0813B204: .4byte gUnknown_203B140 _0813B208: .4byte 0x0000328c @@ -13311,7 +13311,7 @@ sub_813B20C: @ 813B20C movs r1, 0x1 negs r1, r1 adds r5, r0, 0 - ldr r6, _0813B264 @ =gUnknown_203B16C + ldr r6, _0813B264 @ =gLastViewedMonIndex cmp r3, r1 bne _0813B23E ldrb r0, [r6] @@ -13336,7 +13336,7 @@ _0813B252: _0813B258: .4byte gUnknown_203B140 _0813B25C: .4byte 0x000032f4 _0813B260: .4byte 0x00003214 -_0813B264: .4byte gUnknown_203B16C +_0813B264: .4byte gLastViewedMonIndex _0813B268: .4byte 0x00003210 _0813B26C: lsls r5, r4, 24 @@ -13346,7 +13346,7 @@ _0813B26E: asrs r1, r5, 24 adds r0, r1 lsls r0, 24 - ldr r4, _0813B29C @ =gUnknown_203B16C + ldr r4, _0813B29C @ =gLastViewedMonIndex lsrs r6, r0, 24 asrs r0, 24 ldrb r3, [r4] @@ -13365,7 +13365,7 @@ _0813B294: negs r0, r0 b _0813B2C0 .align 2, 0 -_0813B29C: .4byte gUnknown_203B16C +_0813B29C: .4byte gLastViewedMonIndex _0813B2A0: .4byte gUnknown_203B140 _0813B2A4: .4byte 0x00003210 _0813B2A8: @@ -13514,7 +13514,7 @@ _0813B39E: bhi _0813B3B6 ldr r4, _0813B3D4 @ =gUnknown_8463FB8 adds r4, r5, r4 - bl sub_8138B20 + bl GetLastViewedMonIndex ldrb r1, [r4] lsls r0, 24 lsrs r0, 24 diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h index fdc835625..f20375675 100644 --- a/include/new_menu_helpers.h +++ b/include/new_menu_helpers.h @@ -16,7 +16,7 @@ void DecompressAndLoadBgGfxUsingHeap(u8 bgId, const void *src, u32 size, u16 off void DecompressAndLoadBgGfxUsingHeap2(u8 bgId, const void *src, u32 size, u16 offset, u8 mode); void * MallocAndDecompress(const void * src, u32 * size); void SetBgTilemapPalette(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette); -void CopyRectIntoAltRect(u8 bgId, u16 *dest, u8 left, u8 top, u8 width, u8 height); +void CopyToBufferFromBgTilemap(u8 bgId, u16 *dest, u8 left, u8 top, u8 width, u8 height); void ResetBgPositions(void); void InitStandardTextBoxWindows(void); void FreeAllOverworldWindowBuffers(void); diff --git a/include/party_menu.h b/include/party_menu.h index d3eb0181f..b100097df 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -63,7 +63,7 @@ void OpenPartyMenuInBattle(void); void SwitchPartyOrderLinkMulti(u8 battlerId, u8 unk, u8 arrayIndex); bool8 IsMultiBattle(void); void CB2_ChooseMonToGiveItem(void); -void DrawHeldItemIconsForTrade(u8 *partyCount, u8 (*icons)[6], u8 side); +void DrawHeldItemIconsForTrade(u8 *partyCounts, u8 *partySpriteIds, u8 whichParty); void ChooseMonToGiveMailFromMailbox(void); void CB2_PartyMenuFromStartMenu(void); void ShowPartyMenuToShowcaseMultiBattleParty(void); @@ -71,5 +71,6 @@ void SwitchPartyMonSlots(u8 slot, u8 slot2); void LoadHeldItemIcons(void); void OpenPartyMenuInTutorialBattle(u8 partyAction); void ClearSelectedPartyOrder(void); +void CB2_SelectBagItemToGive(void); #endif // GUARD_PARTY_MENU_H diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h index cfc3c18f0..f0e5c8b9d 100644 --- a/include/pokemon_icon.h +++ b/include/pokemon_icon.h @@ -22,6 +22,6 @@ u8 CreateMonIcon(u16 species, SpriteCallback callback, s16 x, s16 y, u8 subprior u8 UpdateMonIconFrame(struct Sprite * sprite); void LoadMonIconPalette(u16 iconId); void FreeMonIconPalette(u16 iconId); -void MonIcon_SetAnim(struct Sprite * sprite, u8 animNum); +void SetPartyHPBarSprite(struct Sprite * sprite, u8 animNum); #endif // GUARD_POKEMON_ICON_H diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h index 2655405e5..3695d46df 100644 --- a/include/pokemon_summary_screen.h +++ b/include/pokemon_summary_screen.h @@ -32,7 +32,7 @@ enum PokemonSummaryScreenPage PSS_PAGE_CONTEST_MOVES, }; -s32 sub_8138B20(void); +s32 GetLastViewedMonIndex(void); void ShowPokemonSummaryScreen(struct Pokemon * party, u8 cursorPos, u8 lastIdx, void (*callback)(void), u8 a4); #endif // GUARD_POKEMON_SUMMARY_SCREEN_H diff --git a/include/quest_log.h b/include/quest_log.h index 3f6c94de5..4040ed4c9 100644 --- a/include/quest_log.h +++ b/include/quest_log.h @@ -47,6 +47,7 @@ void sub_81139BC(void); void *QuestLogGetFlagOrVarPtr(bool8 isFlag, u16 idx); void QuestLogSetFlagOrVar(bool8 isFlag, u16 idx, u16 value); void sub_8110840(void *oldSave); +void sub_8112F18(u8 windowId); extern u8 gUnknown_203ADFA; diff --git a/include/strings.h b/include/strings.h index b60a5d568..16a107de7 100644 --- a/include/strings.h +++ b/include/strings.h @@ -344,6 +344,12 @@ extern const u8 gText_BagFullCouldNotRemoveItem[]; extern const u8 gText_PkmnCantParticipate[]; extern const u8 gText_CancelParticipation[]; extern const u8 gUnknown_8417494[]; +extern const u8 gMenuText_Confirm[]; +extern const u8 gText_Lv[]; +extern const u8 gText_MaleSymbol[]; +extern const u8 gText_FemaleSymbol[]; +extern const u8 gText_Slash[]; +extern const u8 gUnknown_8417457[]; // credits extern const u8 gString_Dummy[]; diff --git a/src/new_menu_helpers.c b/src/new_menu_helpers.c index decd000d6..d2421ed9f 100644 --- a/src/new_menu_helpers.c +++ b/src/new_menu_helpers.c @@ -357,7 +357,7 @@ void SetBgTilemapPalette(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palet } } -void CopyRectIntoAltRect(u8 bgId, u16 *dest, u8 left, u8 top, u8 width, u8 height) +void CopyToBufferFromBgTilemap(u8 bgId, u16 *dest, u8 left, u8 top, u8 width, u8 height) { u8 i,j; const u16 *src = GetBgTilemapBuffer(bgId); diff --git a/src/party_menu.c b/src/party_menu.c index 73965c4ae..08600229a 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -27,6 +27,7 @@ #include "item_use.h" #include "link.h" #include "link_rfu.h" +#include "load_save.h" #include "mail.h" #include "mail_data.h" #include "main.h" @@ -43,6 +44,7 @@ #include "pokemon_jump.h" #include "pokemon_storage_system.h" #include "pokemon_summary_screen.h" +#include "quest_log.h" #include "region_map.h" #include "reshow_battle_screen.h" #include "scanline_effect.h" @@ -53,6 +55,7 @@ #include "string_util.h" #include "strings.h" #include "task.h" +#include "teachy_tv.h" #include "text.h" #include "text_window.h" #include "trade.h" @@ -258,11 +261,39 @@ void sub_8120DE0(u8 taskId); void sub_8120E1C(u8 taskId); void sub_8120E58(u8 taskId); void sub_8120EE0(u8 taskId); +void sub_8120FF0(u8 taskId); +void sub_8120FB0(void); bool8 sub_8120F78(u8 taskId); -bool8 sub_81220D4(void); +u8 sub_81220D4(void); void sub_8122084(u8 windowId, const u8 *str); void sub_8122110(u8 windowId); +void sub_812358C(void); void CreateSelectionWindow(void); +bool8 ShouldUseChooseMonText(void); +void UpdatePartyMonHPBar(u8 spriteId, struct Pokemon *mon); +void SpriteCB_UpdatePartyMonIcon(struct Sprite *sprite); +void SpriteCB_BouncePartyMonIcon(struct Sprite *sprite); +void SpriteCB_HeldItem(struct Sprite *sprite); +void UpdatePartyMonHeldItemSprite(struct Pokemon *mon, struct PartyMenuBox *menuBox); +void ShowOrHideHeldItemSprite(u16 item, struct PartyMenuBox *menuBox); +void CreateHeldItemSpriteForTrade(u8 spriteId, bool8 isMail); +void SetPartyMonAilmentGfx(struct Pokemon *mon, struct PartyMenuBox *menuBox); +void UpdatePartyMonAilmentGfx(u8 status, struct PartyMenuBox *menuBox); +void SetPartyMonFieldSelectionActions(struct Pokemon *mons, u8 slotId); +u8 GetPartyMenuActionsTypeInBattle(struct Pokemon *mon); +u8 GetPartySlotEntryStatus(s8 slot); +void Task_HandleSelectionMenuInput(u8 taskId); +void CB2_ShowPokemonSummaryScreen(void); +void CB2_ReturnToPartyMenuFromSummaryScreen(void); +void UpdatePartyToBattleOrder(void); +void SlidePartyMenuBoxOneStep(u8 taskId); +void Task_SlideSelectedSlotsOffscreen(u8 taskId); +void SwitchPartyMon(void); +void Task_SlideSelectedSlotsOnscreen(u8 taskId); +void CB2_WriteMailToGiveMon(void); +void Task_SwitchHoldItemsPrompt(u8 taskId); +void Task_GiveHoldItem(u8 taskId); +void Task_UpdateHeldItemSprite(u8 taskId); EWRAM_DATA struct PartyMenuInternal *sPartyMenuInternal = NULL; EWRAM_DATA struct PartyMenu gPartyMenu = {0}; @@ -1936,24 +1967,1432 @@ void sub_8120EE0(u8 taskId) switch (data[0]) { case 80: - #ifndef NONMATCHING - asm("":::"r5"); - #endif UpdateCurrentPartySelection(&gPartyMenu.slotId, 2); - ++data[0]; break; case 160: PlaySE(SE_SELECT); CreateSelectionWindow(); - ++data[0]; break; case 240: PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[2]); sCursorOptions[sPartyMenuInternal->actions[0]].func(taskId); - // fall through - default: + break; + } + ++data[0]; + } +} + +bool8 sub_8120F78(u8 taskId) +{ + if (JOY_NEW(B_BUTTON)) + { + sPartyMenuInternal->exitCallback = sub_8120FB0; + Task_ClosePartyMenu(taskId); + return TRUE; + } + return FALSE; +} + +void sub_8120FB0(void) +{ + FreeRestoreBattleData(); + LoadPlayerParty(); + SetTeachyTvControllerModeToResume(); + SetMainCallback2(CB2_ReturnToTeachyTV); +} + +void sub_8120FCC(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + data[0] = 0; + gTasks[taskId].func = sub_8120FF0; +} + +void sub_8120FF0(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + if (!gPaletteFade.active && sub_8120F78(taskId) != TRUE) + { + if (data[0] != 80) + { ++data[0]; + } + else + { + sPartyMenuInternal->exitCallback = CB2_SetUpExitToBattleScreen; + gItemUseCB(taskId, Task_ClosePartyMenuAfterText); + } + } +} + +void InitPartyMenuWindows(u8 layout) +{ + u8 i; + + switch (layout) + { + case PARTY_LAYOUT_SINGLE: + InitWindows(sSinglePartyMenuWindowTemplate); + break; + case PARTY_LAYOUT_DOUBLE: + InitWindows(sDoublePartyMenuWindowTemplate); + break; + case PARTY_LAYOUT_MULTI: + InitWindows(sMultiPartyMenuWindowTemplate); + break; + default: // PARTY_LAYOUT_MULTI_SHOWCASE + InitWindows(sShowcaseMultiPartyMenuWindowTemplate); + break; + } + DeactivateAllTextPrinters(); + for (i = 0; i < PARTY_SIZE; ++i) + FillWindowPixelBuffer(i, PIXEL_FILL(0)); + TextWindow_SetUserSelectedFrame(0, 0x4F, 0xD0); + TextWindow_SetStdFrame0_WithPal(0, 0x58, 0xF0); + LoadPalette(stdpal_get(2), 0xC0, 0x20); + LoadPalette(stdpal_get(0), 0xE0, 0x20); +} + +void CreateCancelConfirmWindows(bool8 chooseHalf) +{ + u8 confirmWindowId; + u8 cancelWindowId; + u8 offset; + + if (gPartyMenu.menuType != PARTY_MENU_TYPE_MULTI_SHOWCASE) + { + if (chooseHalf == TRUE) + { + confirmWindowId = AddWindow(&sConfirmButtonWindowTemplate); + FillWindowPixelBuffer(confirmWindowId, PIXEL_FILL(0)); + AddTextPrinterParameterized4(confirmWindowId, 0, (48 - GetStringWidth(0, gMenuText_Confirm, 0)) / 2u, 1, 0, 0, sFontColorTable[0], -1, gMenuText_Confirm); + PutWindowTilemap(confirmWindowId); + CopyWindowToVram(confirmWindowId, 2); + cancelWindowId = AddWindow(&sMultiCancelButtonWindowTemplate); + offset = 0; + } + else + { + cancelWindowId = AddWindow(&sCancelButtonWindowTemplate); + offset = 3; + } + FillWindowPixelBuffer(cancelWindowId, PIXEL_FILL(0)); + // Branches are functionally identical. Second branch is never reached, Spin Trade wasnt fully implemented + if (gPartyMenu.menuType != PARTY_MENU_TYPE_SPIN_TRADE) + { + offset += (48 - GetStringWidth(0, gFameCheckerText_Cancel, 0)) / 2; + AddTextPrinterParameterized3(cancelWindowId, 0, offset, 1, sFontColorTable[0], -1, gFameCheckerText_Cancel); + } + else + { + offset += (48 - GetStringWidth(0, gOtherText_Exit, 0)) / 2; + AddTextPrinterParameterized3(cancelWindowId, 0, offset, 1, sFontColorTable[0], -1, gOtherText_Exit); + } + PutWindowTilemap(cancelWindowId); + CopyWindowToVram(cancelWindowId, 2); + ScheduleBgCopyTilemapToVram(0); + } +} + +u16 *GetPartyMenuPalBufferPtr(u8 paletteId) +{ + return &sPartyMenuInternal->palBuffer[paletteId]; +} + +void BlitBitmapToPartyWindow(u8 windowId, const u8 *b, u8 c, u8 x, u8 y, u8 width, u8 height) +{ + u8 *pixels = AllocZeroed(height * width * 32); + u8 i, j; + + if (pixels != NULL) + { + for (i = 0; i < height; ++i) + for (j = 0; j < width; ++j) + CpuCopy16(GetPartyMenuBgTile(b[x + j + ((y + i) * c)]), &pixels[(i * width + j) * 32], 32); + BlitBitmapToWindow(windowId, pixels, x * 8, y * 8, width * 8, height * 8); + Free(pixels); + } +} + +void BlitBitmapToPartyWindow_LeftColumn(u8 windowId, u8 x, u8 y, u8 width, u8 height, u8 isEgg) +{ + if (width == 0 && height == 0) + { + width = 10; + height = 7; + } + if (!isEgg) + BlitBitmapToPartyWindow(windowId, sMainSlotTileNums, 10, x, y, width, height); + else + BlitBitmapToPartyWindow(windowId, sMainSlotTileNums_Egg, 10, x, y, width, height); +} + +void BlitBitmapToPartyWindow_RightColumn(u8 windowId, u8 x, u8 y, u8 width, u8 height, u8 isEgg) +{ + if (width == 0 && height == 0) + { + width = 18; + height = 3; + } + if (!isEgg) + BlitBitmapToPartyWindow(windowId, sOtherSlotsTileNums, 18, x, y, width, height); + else + BlitBitmapToPartyWindow(windowId, sOtherSlotsTileNums_Egg, 18, x, y, width, height); +} + +void DrawEmptySlot(u8 windowId) +{ + BlitBitmapToPartyWindow(windowId, sEmptySlotTileNums, 18, 0, 0, 18, 3); +} + +#define LOAD_PARTY_BOX_PAL(paletteIds, paletteOffsets) \ +{ \ + LoadPalette(GetPartyMenuPalBufferPtr(paletteIds[0]), paletteOffsets[0] + palNum, 2); \ + LoadPalette(GetPartyMenuPalBufferPtr(paletteIds[1]), paletteOffsets[1] + palNum, 2); \ + LoadPalette(GetPartyMenuPalBufferPtr(paletteIds[2]), paletteOffsets[2] + palNum, 2); \ +} + +void LoadPartyBoxPalette(struct PartyMenuBox *menuBox, u8 palFlags) +{ + u8 palNum = GetWindowAttribute(menuBox->windowId, WINDOW_PALETTE_NUM) * 16; + + if (palFlags & PARTY_PAL_TO_SOFTBOIL) + { + if (palFlags & PARTY_PAL_SELECTED) + { + LOAD_PARTY_BOX_PAL(sPartyBoxSelectedForActionPalIds1, sPartyBoxPalOffsets1); + LOAD_PARTY_BOX_PAL(sPartyBoxCurrSelectionPalIds2, sPartyBoxPalOffsets2); + } + else + { + LOAD_PARTY_BOX_PAL(sPartyBoxSelectedForActionPalIds1, sPartyBoxPalOffsets1); + LOAD_PARTY_BOX_PAL(sPartyBoxSelectedForActionPalIds2, sPartyBoxPalOffsets2); + } + } + else if (palFlags & PARTY_PAL_SWITCHING) + { + LOAD_PARTY_BOX_PAL(sPartyBoxSelectedForActionPalIds1, sPartyBoxPalOffsets1); + LOAD_PARTY_BOX_PAL(sPartyBoxSelectedForActionPalIds2, sPartyBoxPalOffsets2); + } + else if (palFlags & PARTY_PAL_TO_SWITCH) + { + if (palFlags & PARTY_PAL_SELECTED) + { + LOAD_PARTY_BOX_PAL(sPartyBoxSelectedForActionPalIds1, sPartyBoxPalOffsets1); + LOAD_PARTY_BOX_PAL(sPartyBoxCurrSelectionPalIds2, sPartyBoxPalOffsets2); + } + else + { + LOAD_PARTY_BOX_PAL(sPartyBoxSelectedForActionPalIds1, sPartyBoxPalOffsets1); + LOAD_PARTY_BOX_PAL(sPartyBoxSelectedForActionPalIds2, sPartyBoxPalOffsets2); + } + } + else if (palFlags & PARTY_PAL_FAINTED) + { + if (palFlags & PARTY_PAL_SELECTED) + { + LOAD_PARTY_BOX_PAL(sPartyBoxCurrSelectionFaintedPalIds, sPartyBoxPalOffsets1); + LOAD_PARTY_BOX_PAL(sPartyBoxCurrSelectionPalIds2, sPartyBoxPalOffsets2); + } + else + { + LOAD_PARTY_BOX_PAL(sPartyBoxFaintedPalIds1, sPartyBoxPalOffsets1); + LOAD_PARTY_BOX_PAL(sPartyBoxFaintedPalIds2, sPartyBoxPalOffsets2); + } + } + else if (palFlags & PARTY_PAL_MULTI_ALT) + { + if (palFlags & PARTY_PAL_SELECTED) + { + LOAD_PARTY_BOX_PAL(sPartyBoxCurrSelectionMultiPalIds, sPartyBoxPalOffsets1); + LOAD_PARTY_BOX_PAL(sPartyBoxCurrSelectionPalIds2, sPartyBoxPalOffsets2); + } + else + { + LOAD_PARTY_BOX_PAL(sPartyBoxMultiPalIds1, sPartyBoxPalOffsets1); + LOAD_PARTY_BOX_PAL(sPartyBoxMultiPalIds2, sPartyBoxPalOffsets2); + } + } + else if (palFlags & PARTY_PAL_SELECTED) + { + LOAD_PARTY_BOX_PAL(sPartyBoxCurrSelectionPalIds1, sPartyBoxPalOffsets1); + LOAD_PARTY_BOX_PAL(sPartyBoxCurrSelectionPalIds2, sPartyBoxPalOffsets2); + } + else + { + LOAD_PARTY_BOX_PAL(sPartyBoxEmptySlotPalIds1, sPartyBoxPalOffsets1); + LOAD_PARTY_BOX_PAL(sPartyBoxEmptySlotPalIds2, sPartyBoxPalOffsets2); + } +} + +void DisplayPartyPokemonBarDetail(u8 windowId, const u8 *str, u8 color, const u8 *align) +{ + AddTextPrinterParameterized3(windowId, 0, align[0], align[1], sFontColorTable[color], 0, str); +} + +void DisplayPartyPokemonNickname(struct Pokemon *mon, struct PartyMenuBox *menuBox, u8 c) +{ + u8 nickname[POKEMON_NAME_LENGTH + 1]; + + if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE) + { + if (c == 1) + menuBox->infoRects->blitFunc(menuBox->windowId, menuBox->infoRects->dimensions[0] >> 3, menuBox->infoRects->dimensions[1] >> 3, menuBox->infoRects->dimensions[2] >> 3, menuBox->infoRects->dimensions[3] >> 3, FALSE); + GetMonNickname(mon, nickname); + DisplayPartyPokemonBarDetail(menuBox->windowId, nickname, 0, menuBox->infoRects->dimensions); + } +} + +void DisplayPartyPokemonLevelCheck(struct Pokemon *mon, struct PartyMenuBox *menuBox, u8 c) +{ + if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE) + { + u8 ailment = GetMonAilment(mon); + + if (ailment == AILMENT_NONE || ailment == AILMENT_PKRS) + { + if (c != 0) + menuBox->infoRects->blitFunc(menuBox->windowId, menuBox->infoRects->dimensions[4] >> 3, (menuBox->infoRects->dimensions[5] >> 3) + 1, menuBox->infoRects->dimensions[6] >> 3, menuBox->infoRects->dimensions[7] >> 3, FALSE); + if (c != 2) + DisplayPartyPokemonLevel(GetMonData(mon, MON_DATA_LEVEL), menuBox); + } + } +} + +void DisplayPartyPokemonLevel(u8 level, struct PartyMenuBox *menuBox) +{ + ConvertIntToDecimalStringN(gStringVar2, level, STR_CONV_MODE_LEFT_ALIGN, 3); + StringCopy(gStringVar1, gText_Lv); + StringAppend(gStringVar1, gStringVar2); + DisplayPartyPokemonBarDetail(menuBox->windowId, gStringVar1, 0, &menuBox->infoRects->dimensions[4]); +} + +void DisplayPartyPokemonGenderNidoranCheck(struct Pokemon *mon, struct PartyMenuBox *menuBox, u8 c) +{ + u8 nickname[POKEMON_NAME_LENGTH + 1]; + + if (c == 1) + menuBox->infoRects->blitFunc(menuBox->windowId, menuBox->infoRects->dimensions[8] >> 3, (menuBox->infoRects->dimensions[9] >> 3) + 1, menuBox->infoRects->dimensions[10] >> 3, menuBox->infoRects->dimensions[11] >> 3, FALSE); + GetMonNickname(mon, nickname); + DisplayPartyPokemonGender(GetMonGender(mon), GetMonData(mon, MON_DATA_SPECIES), nickname, menuBox); +} + +void DisplayPartyPokemonGender(u8 gender, u16 species, u8 *nickname, struct PartyMenuBox *menuBox) +{ + u8 palNum = GetWindowAttribute(menuBox->windowId, WINDOW_PALETTE_NUM) * 16; + + if (species == SPECIES_NONE) + return; + if ((species == SPECIES_NIDORAN_M || species == SPECIES_NIDORAN_F) && StringCompare(nickname, gSpeciesNames[species]) == 0) + return; + switch (gender) + { + case MON_MALE: + LoadPalette(GetPartyMenuPalBufferPtr(sGenderMalePalIds[0]), sGenderPalOffsets[0] + palNum, 2); + LoadPalette(GetPartyMenuPalBufferPtr(sGenderMalePalIds[1]), sGenderPalOffsets[1] + palNum, 2); + DisplayPartyPokemonBarDetail(menuBox->windowId, gText_MaleSymbol, 2, &menuBox->infoRects->dimensions[8]); + break; + case MON_FEMALE: + LoadPalette(GetPartyMenuPalBufferPtr(sGenderFemalePalIds[0]), sGenderPalOffsets[0] + palNum, 2); + LoadPalette(GetPartyMenuPalBufferPtr(sGenderFemalePalIds[1]), sGenderPalOffsets[1] + palNum, 2); + DisplayPartyPokemonBarDetail(menuBox->windowId, gText_FemaleSymbol, 2, &menuBox->infoRects->dimensions[8]); + break; + } +} + +void DisplayPartyPokemonHPCheck(struct Pokemon *mon, struct PartyMenuBox *menuBox, u8 c) +{ + if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE) + { + if (c != 0) + menuBox->infoRects->blitFunc(menuBox->windowId, menuBox->infoRects->dimensions[12] >> 3, (menuBox->infoRects->dimensions[13] >> 3) + 1, menuBox->infoRects->dimensions[14] >> 3, menuBox->infoRects->dimensions[15] >> 3, FALSE); + if (c != 2) + DisplayPartyPokemonHP(GetMonData(mon, MON_DATA_HP), menuBox); + } +} + +void DisplayPartyPokemonHP(u16 hp, struct PartyMenuBox *menuBox) +{ + u8 *strOut = ConvertIntToDecimalStringN(gStringVar1, hp, STR_CONV_MODE_RIGHT_ALIGN, 3); + + strOut[0] = CHAR_SLASH; + strOut[1] = EOS; + DisplayPartyPokemonBarDetail(menuBox->windowId, gStringVar1, 0, &menuBox->infoRects->dimensions[12]); +} + +void DisplayPartyPokemonMaxHPCheck(struct Pokemon *mon, struct PartyMenuBox *menuBox, u8 c) +{ + if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE) + { + if (c != 0) + menuBox->infoRects->blitFunc(menuBox->windowId, (menuBox->infoRects->dimensions[16] >> 3) + 1, (menuBox->infoRects->dimensions[17] >> 3) + 1, menuBox->infoRects->dimensions[18] >> 3, menuBox->infoRects->dimensions[19] >> 3, FALSE); + if (c != 2) + DisplayPartyPokemonMaxHP(GetMonData(mon, MON_DATA_MAX_HP), menuBox); + } +} + +void DisplayPartyPokemonMaxHP(u16 maxhp, struct PartyMenuBox *menuBox) +{ + ConvertIntToDecimalStringN(gStringVar2, maxhp, STR_CONV_MODE_RIGHT_ALIGN, 3); + StringCopy(gStringVar1, gText_Slash); + StringAppend(gStringVar1, gStringVar2); + DisplayPartyPokemonBarDetail(menuBox->windowId, gStringVar1, 0, &menuBox->infoRects->dimensions[16]); +} + +void DisplayPartyPokemonHPBarCheck(struct Pokemon *mon, struct PartyMenuBox *menuBox) +{ + if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE) + DisplayPartyPokemonHPBar(GetMonData(mon, MON_DATA_HP), GetMonData(mon, MON_DATA_MAX_HP), menuBox); +} + +void DisplayPartyPokemonHPBar(u16 hp, u16 maxhp, struct PartyMenuBox *menuBox) +{ + u8 palNum = GetWindowAttribute(menuBox->windowId, WINDOW_PALETTE_NUM) * 16; + u8 hpFraction; + + switch (GetHPBarLevel(hp, maxhp)) + { + case HP_BAR_GREEN: + case HP_BAR_FULL: + LoadPalette(GetPartyMenuPalBufferPtr(sHPBarGreenPalIds[0]), sHPBarPalOffsets[0] + palNum, 2); + LoadPalette(GetPartyMenuPalBufferPtr(sHPBarGreenPalIds[1]), sHPBarPalOffsets[1] + palNum, 2); + break; + case HP_BAR_YELLOW: + LoadPalette(GetPartyMenuPalBufferPtr(sHPBarYellowPalIds[0]), sHPBarPalOffsets[0] + palNum, 2); + LoadPalette(GetPartyMenuPalBufferPtr(sHPBarYellowPalIds[1]), sHPBarPalOffsets[1] + palNum, 2); + break; + default: + LoadPalette(GetPartyMenuPalBufferPtr(sHPBarRedPalIds[0]), sHPBarPalOffsets[0] + palNum, 2); + LoadPalette(GetPartyMenuPalBufferPtr(sHPBarRedPalIds[1]), sHPBarPalOffsets[1] + palNum, 2); + break; + } + hpFraction = GetScaledHPFraction(hp, maxhp, menuBox->infoRects->dimensions[22]); + FillWindowPixelRect(menuBox->windowId, sHPBarPalOffsets[1], menuBox->infoRects->dimensions[20], menuBox->infoRects->dimensions[21], hpFraction, 1); + FillWindowPixelRect(menuBox->windowId, sHPBarPalOffsets[0], menuBox->infoRects->dimensions[20], menuBox->infoRects->dimensions[21] + 1, hpFraction, 2); + if (hpFraction != menuBox->infoRects->dimensions[22]) + { + // This appears to be an alternating fill + FillWindowPixelRect(menuBox->windowId, 0x0D, menuBox->infoRects->dimensions[20] + hpFraction, menuBox->infoRects->dimensions[21], menuBox->infoRects->dimensions[22] - hpFraction, 1); + FillWindowPixelRect(menuBox->windowId, 0x02, menuBox->infoRects->dimensions[20] + hpFraction, menuBox->infoRects->dimensions[21] + 1, menuBox->infoRects->dimensions[22] - hpFraction, 2); + } + CopyWindowToVram(menuBox->windowId, 2); +} + +void DisplayPartyPokemonDescriptionText(u8 stringId, struct PartyMenuBox *menuBox, u8 c) +{ + if (c != 0) + menuBox->infoRects->blitFunc(menuBox->windowId, menuBox->infoRects->descTextLeft >> 3, menuBox->infoRects->descTextTop >> 3, menuBox->infoRects->descTextWidth >> 3, menuBox->infoRects->descTextHeight >> 3, TRUE); + if (c != 2) + AddTextPrinterParameterized3(menuBox->windowId, 1, menuBox->infoRects->descTextLeft, menuBox->infoRects->descTextTop, sFontColorTable[0], 0, sDescriptionStringTable[stringId]); +} + +void PartyMenuRemoveWindow(u8 *ptr) +{ + if (*ptr != 0xFF) + { + ClearStdWindowAndFrameToTransparent(*ptr, 0); + RemoveWindow(*ptr); + *ptr = 0xFF; + ScheduleBgCopyTilemapToVram(2); + } +} + +void DisplayPartyMenuStdMessage(u32 stringId) +{ + u8 *windowPtr = &sPartyMenuInternal->windowId[1]; + + if (*windowPtr != 0xFF) + PartyMenuRemoveWindow(windowPtr); + + if (stringId != PARTY_MSG_NONE) + { + switch (stringId) + { + case PARTY_MSG_DO_WHAT_WITH_MON: + *windowPtr = AddWindow(&sDoWhatWithMonMsgWindowTemplate); + break; + case PARTY_MSG_DO_WHAT_WITH_ITEM: + *windowPtr = AddWindow(&sDoWhatWithItemMsgWindowTemplate); + break; + case PARTY_MSG_DO_WHAT_WITH_MAIL: + *windowPtr = AddWindow(&sDoWhatWithMailMsgWindowTemplate); + break; + case PARTY_MSG_RESTORE_WHICH_MOVE: + case PARTY_MSG_BOOST_PP_WHICH_MOVE: + *windowPtr = AddWindow(&sWhichMoveMsgWindowTemplate); + break; + default: + *windowPtr = AddWindow(&sDefaultPartyMsgWindowTemplate); + break; + } + + if (stringId == PARTY_MSG_CHOOSE_MON) + { + if (sPartyMenuInternal->chooseHalf) + stringId = PARTY_MSG_CHOOSE_MON_AND_CONFIRM; + else if (!ShouldUseChooseMonText()) + stringId = PARTY_MSG_CHOOSE_MON_OR_CANCEL; + } + DrawStdFrameWithCustomTileAndPalette(*windowPtr, FALSE, 0x58, 0xF); + StringExpandPlaceholders(gStringVar4, sActionStringTable[stringId]); + AddTextPrinterParameterized(*windowPtr, 2, gStringVar4, 0, 2, 0, 0); + ScheduleBgCopyTilemapToVram(2); + } +} + +bool8 ShouldUseChooseMonText(void) +{ + struct Pokemon *party = gPlayerParty; + u8 i; + u8 numAliveMons = 0; + + if (gPartyMenu.action == PARTY_ACTION_SEND_OUT) + return TRUE; + for (i = 0; i < PARTY_SIZE; ++i) + { + if (GetMonData(&party[i], MON_DATA_SPECIES) != SPECIES_NONE && (GetMonData(&party[i], MON_DATA_HP) != 0 || GetMonData(&party[i], MON_DATA_IS_EGG))) + ++numAliveMons; + if (numAliveMons > 1) + return TRUE; + } + return FALSE; +} + +u8 DisplaySelectionWindow(u8 windowType) +{ + struct WindowTemplate window; + u8 cursorDimension; + u8 fontAttribute; + u8 i; + + switch (windowType) + { + case SELECTWINDOW_ACTIONS: + window = SetWindowTemplateFields(2, 19, 19 - (sPartyMenuInternal->numActions * 2), 10, sPartyMenuInternal->numActions * 2, 14, 0x2BF); + break; + case SELECTWINDOW_ITEM: + window = sItemGiveTakeWindowTemplate; + break; + case SELECTWINDOW_MAIL: + window = sMailReadTakeWindowTemplate; + break; + default: // SELECTWINDOW_MOVES + window = sMoveSelectWindowTemplate; + break; + } + sPartyMenuInternal->windowId[0] = AddWindow(&window); + DrawStdFrameWithCustomTileAndPalette(sPartyMenuInternal->windowId[0], FALSE, 0x4F, 13); + if (windowType == SELECTWINDOW_MOVES) + return sPartyMenuInternal->windowId[0]; + cursorDimension = GetMenuCursorDimensionByFont(2, 0); + fontAttribute = GetFontAttribute(2, FONTATTR_LETTER_SPACING); + for (i = 0; i < sPartyMenuInternal->numActions; ++i) + { + u8 fontColorsId = (sPartyMenuInternal->actions[i] >= MENU_FIELD_MOVES) ? 4 : 3; + + AddTextPrinterParameterized4(sPartyMenuInternal->windowId[0], 2, cursorDimension, (i * 16) + 2, fontAttribute, 0, sFontColorTable[fontColorsId], 0, sCursorOptions[sPartyMenuInternal->actions[i]].text); + } + Menu_InitCursorInternal(sPartyMenuInternal->windowId[0], 2, 0, 2, 16, sPartyMenuInternal->numActions, 0, 1); + ScheduleBgCopyTilemapToVram(2); + return sPartyMenuInternal->windowId[0]; +} + +void PartyMenuPrintText(const u8 *text) +{ + DrawStdFrameWithCustomTileAndPalette(6, FALSE, 0x4F, 13); + gTextFlags.canABSpeedUpPrint = TRUE; + AddTextPrinterParameterized2(6, 2, text, GetTextSpeedSetting(), 0, 2, 1, 3); +} + +void PartyMenuDisplayYesNoMenu(void) +{ + CreateYesNoMenu(&sPartyMenuYesNoWindowTemplate, 2, 0, 2, 0x4F, 13, 0); +} + +u8 CreateLevelUpStatsWindow(void) +{ + sPartyMenuInternal->windowId[0] = AddWindow(&sLevelUpStatsWindowTemplate); + DrawStdFrameWithCustomTileAndPalette(sPartyMenuInternal->windowId[0], FALSE, 0x4F, 13); + return sPartyMenuInternal->windowId[0]; +} + +void RemoveLevelUpStatsWindow(void) +{ + ClearWindowTilemap(sPartyMenuInternal->windowId[0]); + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]); +} + +void sub_8122084(u8 windowId, const u8 *str) +{ + StringExpandPlaceholders(gStringVar4, str); + gTextFlags.canABSpeedUpPrint = TRUE; + AddTextPrinterParameterized2(windowId, 4, gStringVar4, GetTextSpeedSetting(), 0, 2, 1, 3); +} + +bool8 sub_81220D4(void) +{ + u8 windowId = AddWindow(&gUnknown_845A170); + + TextWindow_LoadResourcesStdFrame0(windowId, 0x4F, 0xE0); + DrawDialogFrameWithCustomTileAndPalette(windowId, 1, 0x4F, 0xE); + sub_8122084(windowId, gUnknown_8417457); + return windowId; +} + +void sub_8122110(u8 windowId) +{ + ClearWindowTilemap(windowId); + ClearDialogWindowAndFrameToTransparent(windowId, FALSE); + RemoveWindow(windowId); + ScheduleBgCopyTilemapToVram(2); +} + +void sub_8122138(u8 action) +{ + u8 attr; + struct PartyMenuInternal *ptr = sPartyMenuInternal; + + if (action <= 17) + { + if (ptr->windowId[2] != 0xFF) + { + ClearWindowTilemap(ptr->windowId[2]); + RemoveWindow(ptr->windowId[2]); + ptr->windowId[2] = 0xFF; + ScheduleBgCopyTilemapToVram(2); + } + } + else + { + if (ptr->windowId[2] == 0xFF) + ptr->windowId[2] = AddWindow(&gUnknown_845A178); + sub_8112F18(ptr->windowId[2]); + attr = GetFontAttribute(2, FONTATTR_LETTER_SPACING); + AddTextPrinterParameterized4(ptr->windowId[2], 2, 3, 6, attr, 0, sFontColorTable[5], 0, sHMDescriptionTable[action - 18]); + PutWindowTilemap(ptr->windowId[2]); + ScheduleBgCopyTilemapToVram(2); + } +} + +void CreatePartyMonIconSprite(struct Pokemon *mon, struct PartyMenuBox *menuBox, u32 slot) +{ + bool32 handleDeoxys = TRUE; + u16 species2; + + // If in a multi battle, show partners Deoxys icon as Normal forme + if (IsMultiBattle() == TRUE && gMain.inBattle) + handleDeoxys = (sMultiBattlePartnersPartyMask[slot] ^ handleDeoxys) ? TRUE : FALSE; + species2 = GetMonData(mon, MON_DATA_SPECIES2); + CreatePartyMonIconSpriteParameterized(species2, GetMonData(mon, MON_DATA_PERSONALITY), menuBox, 1, handleDeoxys); + UpdatePartyMonHPBar(menuBox->monSpriteId, mon); +} + +void CreatePartyMonIconSpriteParameterized(u16 species, u32 pid, struct PartyMenuBox *menuBox, u8 priority, bool32 handleDeoxys) +{ + if (species != SPECIES_NONE) + { + menuBox->monSpriteId = CreateMonIcon(species, SpriteCB_MonIcon, menuBox->spriteCoords[0], menuBox->spriteCoords[1], 4, pid, handleDeoxys); + gSprites[menuBox->monSpriteId].oam.priority = priority; + } +} + +void UpdateHPBar(u8 spriteId, u16 hp, u16 maxhp) +{ + switch (GetHPBarLevel(hp, maxhp)) + { + case HP_BAR_FULL: + SetPartyHPBarSprite(&gSprites[spriteId], 0); + break; + case HP_BAR_GREEN: + SetPartyHPBarSprite(&gSprites[spriteId], 1); + break; + case HP_BAR_YELLOW: + SetPartyHPBarSprite(&gSprites[spriteId], 2); + break; + case HP_BAR_RED: + SetPartyHPBarSprite(&gSprites[spriteId], 3); + break; + default: + SetPartyHPBarSprite(&gSprites[spriteId], 4); + break; + } +} + +void UpdatePartyMonHPBar(u8 spriteId, struct Pokemon *mon) +{ + UpdateHPBar(spriteId, GetMonData(mon, MON_DATA_HP), GetMonData(mon, MON_DATA_MAX_HP)); +} + +void AnimateSelectedPartyIcon(u8 spriteId, u8 animNum) +{ + gSprites[spriteId].data[0] = 0; + if (animNum == 0) + { + if (gSprites[spriteId].pos1.x == 16) + { + gSprites[spriteId].pos2.x = 0; + gSprites[spriteId].pos2.y = -4; + } + else + { + gSprites[spriteId].pos2.x = -4; + gSprites[spriteId].pos2.y = 0; + } + gSprites[spriteId].callback = SpriteCB_UpdatePartyMonIcon; + } + else + { + gSprites[spriteId].pos2.x = 0; + gSprites[spriteId].pos2.y = 0; + gSprites[spriteId].callback = SpriteCB_BouncePartyMonIcon; + } +} + +void SpriteCB_BouncePartyMonIcon(struct Sprite *sprite) +{ + u8 animCmd = UpdateMonIconFrame(sprite); + + if (animCmd != 0) + { + if (animCmd & 1) // % 2 also matches + sprite->pos2.y = -3; + else + sprite->pos2.y = 1; + } +} + +void SpriteCB_UpdatePartyMonIcon(struct Sprite *sprite) +{ + UpdateMonIconFrame(sprite); +} + +void CreatePartyMonHeldItemSprite(struct Pokemon *mon, struct PartyMenuBox *menuBox) +{ + if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE) + { + menuBox->itemSpriteId = CreateSprite(&sSpriteTemplate_HeldItem, menuBox->spriteCoords[2], menuBox->spriteCoords[3], 0); + UpdatePartyMonHeldItemSprite(mon, menuBox); + } +} + +void CreatePartyMonHeldItemSpriteParameterized(u16 species, u16 item, struct PartyMenuBox *menuBox) +{ + if (species != SPECIES_NONE) + { + menuBox->itemSpriteId = CreateSprite(&sSpriteTemplate_HeldItem, menuBox->spriteCoords[2], menuBox->spriteCoords[3], 0); + gSprites[menuBox->itemSpriteId].oam.priority = 0; + ShowOrHideHeldItemSprite(item, menuBox); + } +} + +void UpdatePartyMonHeldItemSprite(struct Pokemon *mon, struct PartyMenuBox *menuBox) +{ + ShowOrHideHeldItemSprite(GetMonData(mon, MON_DATA_HELD_ITEM), menuBox); +} + +void ShowOrHideHeldItemSprite(u16 item, struct PartyMenuBox *menuBox) +{ + if (item == ITEM_NONE) + { + gSprites[menuBox->itemSpriteId].invisible = TRUE; + } + else + { + if (ItemIsMail(item)) + StartSpriteAnim(&gSprites[menuBox->itemSpriteId], 1); + else + StartSpriteAnim(&gSprites[menuBox->itemSpriteId], 0); + gSprites[menuBox->itemSpriteId].invisible = FALSE; + } +} + +void LoadHeldItemIcons(void) +{ + LoadSpriteSheet(&sSpriteSheet_HeldItem); + LoadSpritePalette(&sSpritePalette_HeldItem); +} + +void DrawHeldItemIconsForTrade(u8 *partyCounts, u8 *partySpriteIds, u8 whichParty) +{ + u16 i; + u16 item; + + switch (whichParty) + { + case TRADE_PLAYER: + for (i = 0; i < partyCounts[TRADE_PLAYER]; ++i) + { + item = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); + if (item != ITEM_NONE) + CreateHeldItemSpriteForTrade(partySpriteIds[i], ItemIsMail(item)); + } + break; + case TRADE_PARTNER: + for (i = 0; i < partyCounts[TRADE_PARTNER]; ++i) + { + item = GetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM); + if (item != ITEM_NONE) + CreateHeldItemSpriteForTrade(partySpriteIds[i + PARTY_SIZE], ItemIsMail(item)); + } + break; + } +} + +void CreateHeldItemSpriteForTrade(u8 spriteId, bool8 isMail) +{ + u8 subpriority = gSprites[spriteId].subpriority; + u8 newSpriteId = CreateSprite(&sSpriteTemplate_HeldItem, 250, 170, subpriority - 1); + + gSprites[newSpriteId].pos2.x = 4; + gSprites[newSpriteId].pos2.y = 10; + gSprites[newSpriteId].callback = SpriteCB_HeldItem; + gSprites[newSpriteId].data[7] = spriteId; + StartSpriteAnim(&gSprites[newSpriteId], isMail); + gSprites[newSpriteId].callback(&gSprites[newSpriteId]); +} + +void SpriteCB_HeldItem(struct Sprite *sprite) +{ + u8 otherSpriteId = sprite->data[7]; + + if (gSprites[otherSpriteId].invisible) + { + sprite->invisible = TRUE; + } + else + { + sprite->invisible = FALSE; + sprite->pos1.x = gSprites[otherSpriteId].pos1.x + gSprites[otherSpriteId].pos2.x; + sprite->pos1.y = gSprites[otherSpriteId].pos1.y + gSprites[otherSpriteId].pos2.y; + } +} + +void CreatePartyMonPokeballSprite(struct Pokemon *mon, struct PartyMenuBox *menuBox) +{ + if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE) + menuBox->pokeballSpriteId = CreateSprite(&sSpriteTemplate_MenuPokeball, menuBox->spriteCoords[6], menuBox->spriteCoords[7], 8); +} + +void CreatePartyMonPokeballSpriteParameterized(u16 species, struct PartyMenuBox *menuBox) +{ + if (species != SPECIES_NONE) + { + menuBox->pokeballSpriteId = CreateSprite(&sSpriteTemplate_MenuPokeball, menuBox->spriteCoords[6], menuBox->spriteCoords[7], 8); + gSprites[menuBox->pokeballSpriteId].oam.priority = 0; + } +} + +// For Cancel when Confirm isnt present +u8 CreatePokeballButtonSprite(u8 x, u8 y) +{ + u8 spriteId = CreateSprite(&sSpriteTemplate_MenuPokeball, x, y, 8); + + gSprites[spriteId].oam.priority = 2; + return spriteId; +} + +// For Confirm and Cancel when both are present +u8 CreateSmallPokeballButtonSprite(u8 x, u8 y) +{ + return CreateSprite(&sSpriteTemplate_MenuPokeballSmall, x, y, 8); +} + +void PartyMenuStartSpriteAnim(u8 spriteId, u8 animNum) +{ + StartSpriteAnim(&gSprites[spriteId], animNum); +} + +// Unused. Might explain the large blank section in gPartyMenuPokeballSmall_Gfx +// At the very least this is how the unused anim cmds for sSpriteAnimTable_MenuPokeballSmall were meant to be accessed +void SpriteCB_BounceConfirmCancelButton(u8 spriteId, u8 spriteId2, u8 animNum) +{ + if (animNum == 0) + { + StartSpriteAnim(&gSprites[spriteId], 2); + StartSpriteAnim(&gSprites[spriteId2], 4); + gSprites[spriteId].pos2.y = 0; + gSprites[spriteId2].pos2.y = 0; + } + else + { + StartSpriteAnim(&gSprites[spriteId], 3); + StartSpriteAnim(&gSprites[spriteId2], 5); + gSprites[spriteId].pos2.y = -4; + gSprites[spriteId2].pos2.y = 4; + } +} + +void LoadPartyMenuPokeballGfx(void) +{ + LoadCompressedSpriteSheet(&sSpriteSheet_MenuPokeball); + LoadCompressedSpriteSheet(&sSpriteSheet_MenuPokeballSmall); + LoadCompressedSpritePalette(&sSpritePalette_MenuPokeball); +} + +void CreatePartyMonStatusSprite(struct Pokemon *mon, struct PartyMenuBox *menuBox) +{ + if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE) + { + menuBox->statusSpriteId = CreateSprite(&sSpriteTemplate_StatusIcons, menuBox->spriteCoords[4], menuBox->spriteCoords[5], 0); + SetPartyMonAilmentGfx(mon, menuBox); + } +} + +void CreatePartyMonStatusSpriteParameterized(u16 species, u8 status, struct PartyMenuBox *menuBox) +{ + if (species != SPECIES_NONE) + { + menuBox->statusSpriteId = CreateSprite(&sSpriteTemplate_StatusIcons, menuBox->spriteCoords[4], menuBox->spriteCoords[5], 0); + UpdatePartyMonAilmentGfx(status, menuBox); + gSprites[menuBox->statusSpriteId].oam.priority = 0; + } +} + +void SetPartyMonAilmentGfx(struct Pokemon *mon, struct PartyMenuBox *menuBox) +{ + UpdatePartyMonAilmentGfx(GetMonAilment(mon), menuBox); +} + +void UpdatePartyMonAilmentGfx(u8 status, struct PartyMenuBox *menuBox) +{ + switch (status) + { + case AILMENT_NONE: + case AILMENT_PKRS: + gSprites[menuBox->statusSpriteId].invisible = TRUE; + break; + default: + StartSpriteAnim(&gSprites[menuBox->statusSpriteId], status - 1); + gSprites[menuBox->statusSpriteId].invisible = FALSE; + break; + } +} + +void LoadPartyMenuAilmentGfx(void) +{ + LoadCompressedSpriteSheet(&sSpriteSheet_StatusIcons); + LoadCompressedSpritePalette(&sSpritePalette_StatusIcons); +} + +void SetPartyMonSelectionActions(struct Pokemon *mons, u8 slotId, u8 action) +{ + u8 i; + + if (action == ACTIONS_NONE) + { + SetPartyMonFieldSelectionActions(mons, slotId); + } + else + { + sPartyMenuInternal->numActions = sPartyMenuActionCounts[action]; + for (i = 0; i < sPartyMenuInternal->numActions; ++i) + sPartyMenuInternal->actions[i] = sPartyMenuActions[action][i]; + } +} + +void SetPartyMonFieldSelectionActions(struct Pokemon *mons, u8 slotId) +{ + u8 i, j; + + sPartyMenuInternal->numActions = 0; + AppendToList(sPartyMenuInternal->actions, &sPartyMenuInternal->numActions, MENU_SUMMARY); + // Add field moves to action list + for (i = 0; i < MAX_MON_MOVES; ++i) + { + for (j = 0; sFieldMoves[j] != FIELD_MOVE_END; ++j) + { + if (GetMonData(&mons[slotId], i + MON_DATA_MOVE1) == sFieldMoves[j]) + { + AppendToList(sPartyMenuInternal->actions, &sPartyMenuInternal->numActions, j + MENU_FIELD_MOVES); + break; + } + } + } + if (GetMonData(&mons[1], MON_DATA_SPECIES) != SPECIES_NONE) + AppendToList(sPartyMenuInternal->actions, &sPartyMenuInternal->numActions, MENU_SWITCH); + if (ItemIsMail(GetMonData(&mons[slotId], MON_DATA_HELD_ITEM))) + AppendToList(sPartyMenuInternal->actions, &sPartyMenuInternal->numActions, MENU_MAIL); + else + AppendToList(sPartyMenuInternal->actions, &sPartyMenuInternal->numActions, MENU_ITEM); + AppendToList(sPartyMenuInternal->actions, &sPartyMenuInternal->numActions, MENU_CANCEL1); +} + +u8 GetPartyMenuActionsType(struct Pokemon *mon) +{ + u32 actionType; + + switch (gPartyMenu.menuType) + { + case PARTY_MENU_TYPE_FIELD: + if (GetMonData(mon, MON_DATA_IS_EGG)) + actionType = ACTIONS_SWITCH; + else + actionType = ACTIONS_NONE; // actions populated by SetPartyMonFieldSelectionActions + break; + case PARTY_MENU_TYPE_IN_BATTLE: + actionType = GetPartyMenuActionsTypeInBattle(mon); + break; + case PARTY_MENU_TYPE_CHOOSE_HALF: + switch (GetPartySlotEntryStatus(gPartyMenu.slotId)) + { + default: // Not eligible + actionType = ACTIONS_SUMMARY_ONLY; + break; + case 0: // Eligible + actionType = ACTIONS_ENTER; + break; + case 1: // Already selected + actionType = ACTIONS_NO_ENTRY; break; } + break; + case PARTY_MENU_TYPE_DAYCARE: + actionType = (GetMonData(mon, MON_DATA_IS_EGG)) ? ACTIONS_SUMMARY_ONLY : ACTIONS_STORE; + break; + case PARTY_MENU_TYPE_UNION_ROOM_REGISTER: + actionType = ACTIONS_REGISTER; + break; + case PARTY_MENU_TYPE_UNION_ROOM_TRADE: + actionType = ACTIONS_TRADE; + break; + case PARTY_MENU_TYPE_SPIN_TRADE: + actionType = ACTIONS_SPIN_TRADE; + break; + // The following have no selection actions (i.e. they exit immediately upon selection) + // PARTY_MENU_TYPE_CONTEST + // PARTY_MENU_TYPE_CHOOSE_MON + // PARTY_MENU_TYPE_MULTI_SHOWCASE + // PARTY_MENU_TYPE_MOVE_RELEARNER + // PARTY_MENU_TYPE_MINIGAME + default: + actionType = ACTIONS_NONE; + break; + } + return actionType; +} + +void CreateSelectionWindow(void) +{ + struct Pokemon *mon = &gPlayerParty[gPartyMenu.slotId]; + + GetMonNickname(mon, gStringVar1); + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]); + SetPartyMonSelectionActions(gPlayerParty, gPartyMenu.slotId, GetPartyMenuActionsType(mon)); + DisplaySelectionWindow(SELECTWINDOW_ACTIONS); + DisplayPartyMenuStdMessage(PARTY_MSG_DO_WHAT_WITH_MON); +} + +void Task_TryCreateSelectionWindow(u8 taskId) +{ + CreateSelectionWindow(); + gTasks[taskId].data[0] = 0xFF; + gTasks[taskId].func = Task_HandleSelectionMenuInput; +} + +void Task_HandleSelectionMenuInput(u8 taskId) +{ + if (!gPaletteFade.active && sub_80BF748() != TRUE) + { + s8 input; + s16 *data = gTasks[taskId].data; + + if (sPartyMenuInternal->numActions <= 3) + input = Menu_ProcessInputNoWrapAround_other(); + else + input = Menu_ProcessInput_other(); + if (data[0] != Menu_GetCursorPos()) + sub_8122138(sPartyMenuInternal->actions[Menu_GetCursorPos()]); + data[0] = Menu_GetCursorPos(); + switch (input) + { + case MENU_NOTHING_CHOSEN: + break; + case MENU_B_PRESSED: + PlaySE(SE_SELECT); + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[2]); + sCursorOptions[sPartyMenuInternal->actions[sPartyMenuInternal->numActions - 1]].func(taskId); + break; + default: + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[2]); + sCursorOptions[sPartyMenuInternal->actions[input]].func(taskId); + break; + } + } +} + +void CursorCB_Summary(u8 taskId) +{ + PlaySE(SE_SELECT); + sPartyMenuInternal->exitCallback = CB2_ShowPokemonSummaryScreen; + Task_ClosePartyMenu(taskId); +} + +void CB2_ShowPokemonSummaryScreen(void) +{ + if (gPartyMenu.menuType == PARTY_MENU_TYPE_IN_BATTLE) + UpdatePartyToBattleOrder(); + ShowPokemonSummaryScreen(gPlayerParty, gPartyMenu.slotId, gPlayerPartyCount - 1, CB2_ReturnToPartyMenuFromSummaryScreen, 0); +} + +void CB2_ReturnToPartyMenuFromSummaryScreen(void) +{ + gPaletteFade.bufferTransferDisabled = TRUE; + gPartyMenu.slotId = GetLastViewedMonIndex(); + InitPartyMenu(gPartyMenu.menuType, KEEP_PARTY_LAYOUT, gPartyMenu.action, TRUE, PARTY_MSG_DO_WHAT_WITH_MON, Task_TryCreateSelectionWindow, gPartyMenu.exitCallback); +} + +void CursorCB_Switch(u8 taskId) +{ + PlaySE(SE_SELECT); + gPartyMenu.action = PARTY_ACTION_SWITCH; + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]); + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]); + DisplayPartyMenuStdMessage(PARTY_MSG_MOVE_TO_WHERE); + AnimatePartySlot(gPartyMenu.slotId, 1); + gPartyMenu.slotId2 = gPartyMenu.slotId; + gTasks[taskId].func = Task_HandleChooseMonInput; +} + +#define tSlot1Left data[0] +#define tSlot1Top data[1] +#define tSlot1Width data[2] +#define tSlot1Height data[3] +#define tSlot2Left data[4] +#define tSlot2Top data[5] +#define tSlot2Width data[6] +#define tSlot2Height data[7] +#define tSlot1Offset data[8] +#define tSlot2Offset data[9] +#define tSlot1SlideDir data[10] +#define tSlot2SlideDir data[11] + +void SwitchSelectedMons(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + u8 windowIds[2]; + + if (gPartyMenu.slotId2 == gPartyMenu.slotId) + { + FinishTwoMonAction(taskId); + } + else + { + // Initialize switching party mons slide animation + sub_812358C(); + windowIds[0] = sPartyMenuBoxes[gPartyMenu.slotId].windowId; + tSlot1Left = GetWindowAttribute(windowIds[0], WINDOW_TILEMAP_LEFT); + tSlot1Top = GetWindowAttribute(windowIds[0], WINDOW_TILEMAP_TOP); + tSlot1Width = GetWindowAttribute(windowIds[0], WINDOW_WIDTH); + tSlot1Height = GetWindowAttribute(windowIds[0], WINDOW_HEIGHT); + tSlot1Offset = 0; + if (tSlot1Width == 10) + tSlot1SlideDir = -1; + else + tSlot1SlideDir = 1; + windowIds[1] = sPartyMenuBoxes[gPartyMenu.slotId2].windowId; + tSlot2Left = GetWindowAttribute(windowIds[1], WINDOW_TILEMAP_LEFT); + tSlot2Top = GetWindowAttribute(windowIds[1], WINDOW_TILEMAP_TOP); + tSlot2Width = GetWindowAttribute(windowIds[1], WINDOW_WIDTH); + tSlot2Height = GetWindowAttribute(windowIds[1], WINDOW_HEIGHT); + tSlot2Offset = 0; + if (tSlot2Width == 10) + tSlot2SlideDir = -1; + else + tSlot2SlideDir = 1; + sSlot1TilemapBuffer = Alloc(tSlot1Width * (tSlot1Height << 1)); + sSlot2TilemapBuffer = Alloc(tSlot2Width * (tSlot2Height << 1)); + CopyToBufferFromBgTilemap(0, sSlot1TilemapBuffer, tSlot1Left, tSlot1Top, tSlot1Width, tSlot1Height); + CopyToBufferFromBgTilemap(0, sSlot2TilemapBuffer, tSlot2Left, tSlot2Top, tSlot2Width, tSlot2Height); + ClearWindowTilemap(windowIds[0]); + ClearWindowTilemap(windowIds[1]); + gPartyMenu.action = PARTY_ACTION_SWITCHING; + AnimatePartySlot(gPartyMenu.slotId, 1); + AnimatePartySlot(gPartyMenu.slotId2, 1); + SlidePartyMenuBoxOneStep(taskId); + gTasks[taskId].func = Task_SlideSelectedSlotsOffscreen; + } +} + +// returns FALSE if the slot has slid fully offscreen / back onscreen +bool8 TryMovePartySlot(s16 x, s16 width, u8 *leftMove, u8 *newX, u8 *newWidth) +{ + if ((x + width) < 0) + return FALSE; + if (x > 31) + return FALSE; + if (x < 0) + { + *leftMove = x * -1; + *newX = 0; + *newWidth = width + x; + } + else + { + *leftMove = 0; + *newX = x; + if ((x + width) > 31) + *newWidth = 32 - x; + else + *newWidth = width; + } + return TRUE; +} + +void MoveAndBufferPartySlot(const void *rectSrc, s16 x, s16 y, s16 width, s16 height, s16 dir) +{ + // The use of the dimension parameters here is a mess + u8 leftMove, newX, newWidth; // leftMove is used as a srcX, newX is used as both x and srcHeight, newWidth is used as both width and destY + + if (TryMovePartySlot(x, width, &leftMove, &newX, &newWidth)) + { + FillBgTilemapBufferRect_Palette0(0, 0, newX, y, newWidth, height); + if (TryMovePartySlot(x + dir, width, &leftMove, &newX, &newWidth)) + CopyRectToBgTilemapBufferRect(0, rectSrc, leftMove, 0, width, height, newX, y, newWidth, height, 17, 0, 0); + } +} + +void MovePartyMenuBoxSprites(struct PartyMenuBox *menuBox, s16 offset) +{ + gSprites[menuBox->pokeballSpriteId].pos2.x += offset * 8; + gSprites[menuBox->itemSpriteId].pos2.x += offset * 8; + gSprites[menuBox->monSpriteId].pos2.x += offset * 8; + gSprites[menuBox->statusSpriteId].pos2.x += offset * 8; +} + +void SlidePartyMenuBoxSpritesOneStep(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + if (tSlot1SlideDir != 0) + MovePartyMenuBoxSprites(&sPartyMenuBoxes[gPartyMenu.slotId], tSlot1SlideDir); + if (tSlot2SlideDir != 0) + MovePartyMenuBoxSprites(&sPartyMenuBoxes[gPartyMenu.slotId2], tSlot2SlideDir); +} + +void SlidePartyMenuBoxOneStep(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + if (tSlot1SlideDir != 0) + MoveAndBufferPartySlot(sSlot1TilemapBuffer, tSlot1Left + tSlot1Offset, tSlot1Top, tSlot1Width, tSlot1Height, tSlot1SlideDir); + if (tSlot2SlideDir != 0) + MoveAndBufferPartySlot(sSlot2TilemapBuffer, tSlot2Left + tSlot2Offset, tSlot2Top, tSlot2Width, tSlot2Height, tSlot2SlideDir); + ScheduleBgCopyTilemapToVram(0); +} + +void Task_SlideSelectedSlotsOffscreen(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + u16 slidingSlotPositions[2]; + + SlidePartyMenuBoxOneStep(taskId); + SlidePartyMenuBoxSpritesOneStep(taskId); + tSlot1Offset += tSlot1SlideDir; + tSlot2Offset += tSlot2SlideDir; + slidingSlotPositions[0] = tSlot1Left + tSlot1Offset; + slidingSlotPositions[1] = tSlot2Left + tSlot2Offset; + // Both slots have slid offscreen + if (slidingSlotPositions[0] > 33 && slidingSlotPositions[1] > 33) + { + tSlot1SlideDir *= -1; + tSlot2SlideDir *= -1; + SwitchPartyMon(); + DisplayPartyPokemonData(gPartyMenu.slotId); + DisplayPartyPokemonData(gPartyMenu.slotId2); + PutWindowTilemap(sPartyMenuBoxes[gPartyMenu.slotId].windowId); + PutWindowTilemap(sPartyMenuBoxes[gPartyMenu.slotId2].windowId); + CopyToBufferFromBgTilemap(0, sSlot1TilemapBuffer, tSlot1Left, tSlot1Top, tSlot1Width, tSlot1Height); + CopyToBufferFromBgTilemap(0, sSlot2TilemapBuffer, tSlot2Left, tSlot2Top, tSlot2Width, tSlot2Height); + ClearWindowTilemap(sPartyMenuBoxes[gPartyMenu.slotId].windowId); + ClearWindowTilemap(sPartyMenuBoxes[gPartyMenu.slotId2].windowId); + gTasks[taskId].func = Task_SlideSelectedSlotsOnscreen; + } +} + +void Task_SlideSelectedSlotsOnscreen(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + SlidePartyMenuBoxOneStep(taskId); + SlidePartyMenuBoxSpritesOneStep(taskId); + + // Both slots have slide back onscreen + if (tSlot1SlideDir == 0 && tSlot2SlideDir == 0) + { + PutWindowTilemap(sPartyMenuBoxes[gPartyMenu.slotId].windowId); + PutWindowTilemap(sPartyMenuBoxes[gPartyMenu.slotId2].windowId); + ScheduleBgCopyTilemapToVram(0); + // memory leak + // Free(sSlot1TilemapBuffer); + // Free(sSlot2TilemapBuffer); + FinishTwoMonAction(taskId); + } + // Continue sliding + else + { + tSlot1Offset += tSlot1SlideDir; + tSlot2Offset += tSlot2SlideDir; + if (tSlot1Offset == 0) + tSlot1SlideDir = 0; + if (tSlot2Offset == 0) + tSlot2SlideDir = 0; + } +} + +void SwitchMenuBoxSprites(u8 *spriteIdPtr1, u8 *spriteIdPtr2) +{ + u8 spriteIdBuffer = *spriteIdPtr1; + u16 xBuffer1, yBuffer1, xBuffer2, yBuffer2; + + *spriteIdPtr1 = *spriteIdPtr2; + *spriteIdPtr2 = spriteIdBuffer; + xBuffer1 = gSprites[*spriteIdPtr1].pos1.x; + yBuffer1 = gSprites[*spriteIdPtr1].pos1.y; + xBuffer2 = gSprites[*spriteIdPtr1].pos2.x; + yBuffer2 = gSprites[*spriteIdPtr1].pos2.y; + gSprites[*spriteIdPtr1].pos1.x = gSprites[*spriteIdPtr2].pos1.x; + gSprites[*spriteIdPtr1].pos1.y = gSprites[*spriteIdPtr2].pos1.y; + gSprites[*spriteIdPtr1].pos2.x = gSprites[*spriteIdPtr2].pos2.x; + gSprites[*spriteIdPtr1].pos2.y = gSprites[*spriteIdPtr2].pos2.y; + gSprites[*spriteIdPtr2].pos1.x = xBuffer1; + gSprites[*spriteIdPtr2].pos1.y = yBuffer1; + gSprites[*spriteIdPtr2].pos2.x = xBuffer2; + gSprites[*spriteIdPtr2].pos2.y = yBuffer2; +} + +void SwitchPartyMon(void) +{ + struct PartyMenuBox *menuBoxes[2]; + struct Pokemon *mon1, *mon2; + struct Pokemon *monBuffer; + + menuBoxes[0] = &sPartyMenuBoxes[gPartyMenu.slotId]; + menuBoxes[1] = &sPartyMenuBoxes[gPartyMenu.slotId2]; + mon1 = &gPlayerParty[gPartyMenu.slotId]; + mon2 = &gPlayerParty[gPartyMenu.slotId2]; + monBuffer = Alloc(sizeof(struct Pokemon)); + *monBuffer = *mon1; + *mon1 = *mon2; + *mon2 = *monBuffer; + Free(monBuffer); + SwitchMenuBoxSprites(&menuBoxes[0]->pokeballSpriteId, &menuBoxes[1]->pokeballSpriteId); + SwitchMenuBoxSprites(&menuBoxes[0]->itemSpriteId, &menuBoxes[1]->itemSpriteId); + SwitchMenuBoxSprites(&menuBoxes[0]->monSpriteId, &menuBoxes[1]->monSpriteId); + SwitchMenuBoxSprites(&menuBoxes[0]->statusSpriteId, &menuBoxes[1]->statusSpriteId); +} + +void sub_812358C(void) +{ + u16 *buffer = Alloc(2 * sizeof(u16)); + + buffer[0] = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_SPECIES2); + buffer[1] = GetMonData(&gPlayerParty[gPartyMenu.slotId2], MON_DATA_SPECIES2); + sub_8113550(3, buffer); + Free(buffer); +} + +// Finish switching mons or using Softboiled +void FinishTwoMonAction(u8 taskId) +{ + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]); + gPartyMenu.action = PARTY_ACTION_CHOOSE_MON; + AnimatePartySlot(gPartyMenu.slotId, 0); + gPartyMenu.slotId = gPartyMenu.slotId2; + AnimatePartySlot(gPartyMenu.slotId2, 1); + DisplayPartyMenuStdMessage(PARTY_MSG_CHOOSE_MON); + gTasks[taskId].func = Task_HandleChooseMonInput; +} + +#undef tSlot1Left +#undef tSlot1Top +#undef tSlot1Width +#undef tSlot1Height +#undef tSlot2Left +#undef tSlot2Top +#undef tSlot2Width +#undef tSlot2Height +#undef tSlot1Offset +#undef tSlot2Offset +#undef tSlot1SlideDir +#undef tSlot2SlideDir + +void CursorCB_Cancel1(u8 taskId) +{ + PlaySE(SE_SELECT); + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]); + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]); + if (gPartyMenu.menuType == PARTY_MENU_TYPE_DAYCARE) + DisplayPartyMenuStdMessage(PARTY_MSG_CHOOSE_MON_2); + else + DisplayPartyMenuStdMessage(PARTY_MSG_CHOOSE_MON); + gTasks[taskId].func = Task_HandleChooseMonInput; +} + +void CursorCB_Item(u8 taskId) +{ + PlaySE(SE_SELECT); + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]); + PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]); + SetPartyMonSelectionActions(gPlayerParty, gPartyMenu.slotId, ACTIONS_ITEM); + DisplaySelectionWindow(SELECTWINDOW_ITEM); + DisplayPartyMenuStdMessage(PARTY_MSG_DO_WHAT_WITH_ITEM); + gTasks[taskId].data[0] = 0xFF; + gTasks[taskId].func = Task_HandleSelectionMenuInput; +} + +void CursorCB_Give(u8 taskId) +{ + PlaySE(SE_SELECT); + sPartyMenuInternal->exitCallback = CB2_SelectBagItemToGive; + Task_ClosePartyMenu(taskId); +} + +void CB2_SelectBagItemToGive(void) +{ + GoToBagMenu(1, 3, CB2_GiveHoldItem); +} + +void CB2_GiveHoldItem(void) +{ + if (gSpecialVar_ItemId == ITEM_NONE) + { + InitPartyMenu(gPartyMenu.menuType, KEEP_PARTY_LAYOUT, gPartyMenu.action, TRUE, PARTY_MSG_NONE, Task_TryCreateSelectionWindow, gPartyMenu.exitCallback); + } + else + { + sPartyMenuItemId = GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_HELD_ITEM); + // Already holding item + if (sPartyMenuItemId != ITEM_NONE) + { + InitPartyMenu(gPartyMenu.menuType, KEEP_PARTY_LAYOUT, gPartyMenu.action, TRUE, PARTY_MSG_NONE, Task_SwitchHoldItemsPrompt, gPartyMenu.exitCallback); + } + // Give mail + else if (ItemIsMail(gSpecialVar_ItemId)) + { + RemoveBagItem(gSpecialVar_ItemId, 1); + GiveItemToMon(&gPlayerParty[gPartyMenu.slotId], gSpecialVar_ItemId); + CB2_WriteMailToGiveMon(); + } + // Give item + else + { + InitPartyMenu(gPartyMenu.menuType, KEEP_PARTY_LAYOUT, gPartyMenu.action, TRUE, PARTY_MSG_NONE, Task_GiveHoldItem, gPartyMenu.exitCallback); + } + } +} + +void Task_GiveHoldItem(u8 taskId) +{ + u16 item; + + if (!gPaletteFade.active) + { + item = gSpecialVar_ItemId; + DisplayGaveHeldItemMessage(&gPlayerParty[gPartyMenu.slotId], item, FALSE, 0); + GiveItemToMon(&gPlayerParty[gPartyMenu.slotId], item); + RemoveBagItem(item, 1); + gTasks[taskId].func = Task_UpdateHeldItemSprite; } } diff --git a/src/pokemon_icon.c b/src/pokemon_icon.c index f3492593c..4c7681231 100644 --- a/src/pokemon_icon.c +++ b/src/pokemon_icon.c @@ -1276,7 +1276,7 @@ static void DestroyMonIconInternal(struct Sprite * sprite) DestroySprite(sprite); } -void MonIcon_SetAnim(struct Sprite * sprite, u8 animNum) +void SetPartyHPBarSprite(struct Sprite * sprite, u8 animNum) { sprite->animNum = animNum; sprite->animDelayCounter = 0; diff --git a/src/quest_log.c b/src/quest_log.c index 9683d7799..04369f1c2 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -1972,15 +1972,15 @@ void DestroyHelpMessageWindow(u8 a0) } #ifdef NONMATCHING -void sub_8112F18(u8 a0) +void sub_8112F18(u8 windowId) { - u8 width = GetWindowAttribute(a0, WINDOW_WIDTH); - u8 height = GetWindowAttribute(a0, WINDOW_HEIGHT); + u8 width = GetWindowAttribute(windowId, WINDOW_WIDTH); + u8 height = GetWindowAttribute(windowId, WINDOW_HEIGHT); u8 *buffer = Alloc(32 * width * height); u8 i, j; u8 k; - if (buffer) + if (buffer != NULL) { for (i = 0; i < height; i++) { @@ -1999,13 +1999,13 @@ void sub_8112F18(u8 a0) ); } } - CopyToWindowPixelBuffer(a0, buffer, width * height * 32, 0); + CopyToWindowPixelBuffer(windowId, buffer, width * height * 32, 0); Free(buffer); } } #else NAKED -void sub_8112F18(u8 a0) +void sub_8112F18(u8 windowId) { asm_unified("\tpush {r4-r7,lr}\n" "\tmov r7, r10\n" diff --git a/src/trade.c b/src/trade.c index 85bd7b2ca..537a5503b 100644 --- a/src/trade.c +++ b/src/trade.c @@ -2053,9 +2053,9 @@ void sub_804CF14(void) } if (sTradeMenuResourcesPtr->tradeMenuCursorPosition < 6) - sTradeMenuResourcesPtr->tradeMenuCursorPosition = sub_8138B20(); + sTradeMenuResourcesPtr->tradeMenuCursorPosition = GetLastViewedMonIndex(); else - sTradeMenuResourcesPtr->tradeMenuCursorPosition = sub_8138B20() + 6; + sTradeMenuResourcesPtr->tradeMenuCursorPosition = GetLastViewedMonIndex() + 6; sTradeMenuResourcesPtr->tradeMenuCursorSpriteIdx = CreateSprite(&sSpriteTemplate_TradeButtons, sTradeMonSpriteCoords[sTradeMenuResourcesPtr->tradeMenuCursorPosition][0] * 8 + 32, sTradeMonSpriteCoords[sTradeMenuResourcesPtr->tradeMenuCursorPosition][1] * 8, 2); gMain.state = 16; @@ -2633,14 +2633,14 @@ void sub_804CF14(void) "\tldrb r0, [r0]\n" "\tcmp r0, 0x5\n" "\tbhi _0804D3B8\n" - "\tbl sub_8138B20\n" + "\tbl GetLastViewedMonIndex\n" "\tldr r1, [r4]\n" "\tb _0804D3C0\n" "\t.align 2, 0\n" "_0804D3B0: .4byte sSpriteTemplate_Text\n" "_0804D3B4: .4byte sTradeMenuResourcesPtr\n" "_0804D3B8:\n" - "\tbl sub_8138B20\n" + "\tbl GetLastViewedMonIndex\n" "\tldr r1, [r4]\n" "\tadds r0, 0x6\n" "_0804D3C0:\n" @@ -4243,7 +4243,7 @@ static void sub_804F964(void) { for (j = 0; j < sTradeMenuResourcesPtr->partyCounts[i]; j++) { - MonIcon_SetAnim(&gSprites[sTradeMenuResourcesPtr->partyIcons[i][j]], 4 - sTradeMenuResourcesPtr->unk_5D[i][j]); + SetPartyHPBarSprite(&gSprites[sTradeMenuResourcesPtr->partyIcons[i][j]], 4 - sTradeMenuResourcesPtr->unk_5D[i][j]); } } } diff --git a/sym_ewram.txt b/sym_ewram.txt index e4de1e801..1fc0deab1 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -643,7 +643,7 @@ gUnknown_203B164: @ 203B164 gUnknown_203B168: @ 203B168 .space 0x4 -gUnknown_203B16C: @ 203B16C +gLastViewedMonIndex: @ 203B16C .space 0x1 gUnknown_203B16D: @ 203B16D |