diff options
-rw-r--r-- | asm/pokemon_summary_screen.s | 1079 | ||||
-rw-r--r-- | include/strings.h | 1 | ||||
-rw-r--r-- | include/trainer_pokemon_sprites.h | 2 | ||||
-rw-r--r-- | src/pokemon_summary_screen.c | 356 |
4 files changed, 356 insertions, 1082 deletions
diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index 310df5032..0f7896dc8 100644 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -5,1085 +5,6 @@ .text - thumb_func_start sub_8139388 -sub_8139388: @ 8139388 - push {r4,lr} - ldr r4, _081393BC @ =gMonSummaryScreen - ldr r0, [r4] - ldr r1, _081393C0 @ =0x00003290 - adds r0, r1 - ldr r1, _081393C4 @ =gUnknown_203B16D - ldrb r1, [r1] - bl sub_8138BEC - lsls r0, 16 - lsrs r0, 16 - bl IsMoveHm - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _081393CC - ldr r0, [r4] - ldr r1, _081393C8 @ =0x00003208 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x3 - beq _081393CC - movs r0, 0 - b _081393CE - .align 2, 0 -_081393BC: .4byte gMonSummaryScreen -_081393C0: .4byte 0x00003290 -_081393C4: .4byte gUnknown_203B16D -_081393C8: .4byte 0x00003208 -_081393CC: - movs r0, 0x1 -_081393CE: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8139388 - - thumb_func_start sub_81393D4 -sub_81393D4: @ 81393D4 - push {r4,r5,lr} - sub sp, 0x14 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _081393F8 @ =gMonSummaryScreen - ldr r0, [r1] - ldr r3, _081393FC @ =0x00003288 - adds r0, r3 - ldrb r0, [r0] - adds r5, r1, 0 - cmp r0, 0x6 - bls _081393EE - b _08139748 -_081393EE: - lsls r0, 2 - ldr r1, _08139400 @ =_08139404 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_081393F8: .4byte gMonSummaryScreen -_081393FC: .4byte 0x00003288 -_08139400: .4byte _08139404 - .align 2, 0 -_08139404: - .4byte _08139420 - .4byte _08139444 - .4byte _0813946C - .4byte _08139604 - .4byte _08139628 - .4byte _081396A8 - .4byte _08139710 -_08139420: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r0, _0813943C @ =gMonSummaryScreen - ldr r1, [r0] - ldr r4, _08139440 @ =0x00003288 - adds r1, r4 - b _08139728 - .align 2, 0 -_0813943C: .4byte gMonSummaryScreen -_08139440: .4byte 0x00003288 -_08139444: - ldr r0, _08139460 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08139452 - b _0813975A -_08139452: - bl sub_813B784 - ldr r0, _08139464 @ =gMonSummaryScreen - ldr r1, [r0] - ldr r0, _08139468 @ =0x00003288 - adds r1, r0 - b _08139728 - .align 2, 0 -_08139460: .4byte gPaletteFade -_08139464: .4byte gMonSummaryScreen -_08139468: .4byte 0x00003288 -_0813946C: - ldr r0, _081394BC @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0 - beq _081394DC - ldr r4, _081394C0 @ =gUnknown_203B16D - ldrb r0, [r4] - cmp r0, 0 - beq _081394CC - ldr r0, [r5] - ldr r1, _081394C4 @ =0x00003288 - adds r0, r1 - movs r1, 0x3 - strb r1, [r0] - movs r0, 0x5 - bl PlaySE - ldrb r4, [r4] - cmp r4, 0 - bne _0813949C - b _0813975A -_0813949C: - ldr r0, [r5] - ldr r2, _081394C8 @ =0x00003258 - adds r1, r0, r2 -_081394A2: - subs r4, 0x1 - lsls r0, r4, 1 - adds r0, r1, r0 - ldrh r0, [r0] - cmp r0, 0 - beq _081394B0 - b _08139738 -_081394B0: - lsls r0, r4, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _081394A2 - b _0813975A - .align 2, 0 -_081394BC: .4byte gMain -_081394C0: .4byte gUnknown_203B16D -_081394C4: .4byte 0x00003288 -_081394C8: .4byte 0x00003258 -_081394CC: - movs r0, 0x4 - strb r0, [r4] - ldr r0, [r5] - ldr r3, _081394D8 @ =0x00003288 - adds r0, r3 - b _08139556 - .align 2, 0 -_081394D8: .4byte 0x00003288 -_081394DC: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08139568 - ldr r3, _08139538 @ =gUnknown_203B16D - ldrb r0, [r3] - cmp r0, 0x3 - bhi _08139548 - movs r2, 0x4 - ldr r0, [r5] - ldr r4, _0813953C @ =0x00003288 - adds r0, r4 - movs r1, 0x3 - strb r1, [r0] - ldr r1, [r5] - subs r4, 0x20 - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, 0x1 - bne _08139506 - movs r2, 0x3 -_08139506: - ldrb r4, [r3] - cmp r4, r2 - bcs _08139526 - ldr r0, _08139540 @ =0x00003258 - adds r1, r0 -_08139510: - adds r4, 0x1 - lsls r0, r4, 1 - adds r0, r1, r0 - ldrh r0, [r0] - cmp r0, 0 - beq _0813951E - b _08139738 -_0813951E: - lsls r0, r4, 24 - lsrs r4, r0, 24 - cmp r4, r2 - bcc _08139510 -_08139526: - ldr r0, [r5] - ldr r1, _08139544 @ =0x00003268 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _08139534 - b _0813975A -_08139534: - b _08139738 - .align 2, 0 -_08139538: .4byte gUnknown_203B16D -_0813953C: .4byte 0x00003288 -_08139540: .4byte 0x00003258 -_08139544: .4byte 0x00003268 -_08139548: - cmp r0, 0x4 - beq _0813954E - b _0813975A -_0813954E: - strb r2, [r3] - ldr r0, [r5] - ldr r2, _08139564 @ =0x00003288 - adds r0, r2 -_08139556: - movs r1, 0x3 - strb r1, [r0] - movs r0, 0x5 - bl PlaySE - b _0813975A - .align 2, 0 -_08139564: .4byte 0x00003288 -_08139568: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _081395D4 - bl sub_8139388 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08139584 - ldr r0, _081395A4 @ =gUnknown_203B16D - ldrb r0, [r0] - cmp r0, 0x4 - bne _081395B8 -_08139584: - movs r0, 0x5 - bl PlaySE - ldr r2, _081395A8 @ =gUnknown_203B16E - ldr r0, _081395A4 @ =gUnknown_203B16D - ldrb r0, [r0] - strb r0, [r2] - ldr r1, _081395AC @ =gSpecialVar_0x8005 - ldrb r0, [r2] - strh r0, [r1] - ldr r0, _081395B0 @ =gMonSummaryScreen - ldr r0, [r0] - ldr r3, _081395B4 @ =0x00003288 - adds r0, r3 - b _081395F0 - .align 2, 0 -_081395A4: .4byte gUnknown_203B16D -_081395A8: .4byte gUnknown_203B16E -_081395AC: .4byte gSpecialVar_0x8005 -_081395B0: .4byte gMonSummaryScreen -_081395B4: .4byte 0x00003288 -_081395B8: - movs r0, 0x1A - bl PlaySE - ldr r0, _081395CC @ =gMonSummaryScreen - ldr r0, [r0] - ldr r4, _081395D0 @ =0x00003288 - adds r0, r4 - movs r1, 0x5 - strb r1, [r0] - b _0813975A - .align 2, 0 -_081395CC: .4byte gMonSummaryScreen -_081395D0: .4byte 0x00003288 -_081395D4: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _081395DE - b _0813975A -_081395DE: - ldr r1, _081395F8 @ =gUnknown_203B16E - movs r0, 0x4 - strb r0, [r1] - ldr r1, _081395FC @ =gSpecialVar_0x8005 - movs r0, 0x4 - strh r0, [r1] - ldr r0, [r5] - ldr r1, _08139600 @ =0x00003288 - adds r0, r1 -_081395F0: - movs r1, 0x6 - strb r1, [r0] - b _0813975A - .align 2, 0 -_081395F8: .4byte gUnknown_203B16E -_081395FC: .4byte gSpecialVar_0x8005 -_08139600: .4byte 0x00003288 -_08139604: - bl sub_8136F4C - bl sub_81374E8 - bl sub_8137BD0 - ldr r0, _08139620 @ =gMonSummaryScreen - ldr r0, [r0] - ldr r2, _08139624 @ =0x00003288 - adds r0, r2 - movs r1, 0x4 - strb r1, [r0] - b _0813975A - .align 2, 0 -_08139620: .4byte gMonSummaryScreen -_08139624: .4byte 0x00003288 -_08139628: - bl MenuHelpers_CallLinkSomething - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08139636 - b _0813975A -_08139636: - bl sub_800B270 - cmp r0, 0x1 - bne _08139640 - b _0813975A -_08139640: - ldr r4, _08139690 @ =gMonSummaryScreen - ldr r0, [r4] - ldr r3, _08139694 @ =0x00003003 - adds r0, r3 - ldrb r0, [r0] - movs r1, 0x2 - bl CopyWindowToVram - ldr r0, [r4] - ldr r1, _08139698 @ =0x00003004 - adds r0, r1 - ldrb r0, [r0] - movs r1, 0x2 - bl CopyWindowToVram - ldr r0, [r4] - ldr r2, _0813969C @ =0x00003005 - adds r0, r2 - ldrb r0, [r0] - movs r1, 0x2 - bl CopyWindowToVram - ldr r0, [r4] - ldr r3, _081396A0 @ =0x00003006 - adds r0, r3 - ldrb r0, [r0] - movs r1, 0x2 - bl CopyWindowToVram - movs r0, 0 - bl CopyBgTilemapBufferToVram - movs r0, 0x3 - bl CopyBgTilemapBufferToVram - ldr r0, [r4] - ldr r4, _081396A4 @ =0x00003288 - adds r0, r4 - b _081396F8 - .align 2, 0 -_08139690: .4byte gMonSummaryScreen -_08139694: .4byte 0x00003003 -_08139698: .4byte 0x00003004 -_0813969C: .4byte 0x00003005 -_081396A0: .4byte 0x00003006 -_081396A4: .4byte 0x00003288 -_081396A8: - ldr r0, [r5] - ldr r4, _08139700 @ =0x00003004 - adds r0, r4 - ldrb r0, [r0] - movs r1, 0 - bl FillWindowPixelBuffer - ldr r0, [r5] - adds r0, r4 - ldrb r0, [r0] - movs r1, 0 - str r1, [sp] - str r1, [sp, 0x4] - ldr r1, _08139704 @ =gUnknown_8463FA4 - str r1, [sp, 0x8] - movs r1, 0x1 - negs r1, r1 - str r1, [sp, 0xC] - ldr r1, _08139708 @ =gUnknown_8419CB9 - str r1, [sp, 0x10] - movs r1, 0x2 - movs r2, 0x7 - movs r3, 0x2A - bl AddTextPrinterParameterized4 - ldr r0, [r5] - adds r0, r4 - ldrb r0, [r0] - movs r1, 0x2 - bl CopyWindowToVram - movs r0, 0 - bl CopyBgTilemapBufferToVram - movs r0, 0x3 - bl CopyBgTilemapBufferToVram - ldr r0, [r5] - ldr r1, _0813970C @ =0x00003288 - adds r0, r1 -_081396F8: - movs r1, 0x2 - strb r1, [r0] - b _0813975A - .align 2, 0 -_08139700: .4byte 0x00003004 -_08139704: .4byte gUnknown_8463FA4 -_08139708: .4byte gUnknown_8419CB9 -_0813970C: .4byte 0x00003288 -_08139710: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _08139730 @ =gMonSummaryScreen - ldr r1, [r0] - ldr r2, _08139734 @ =0x00003288 - adds r1, r2 -_08139728: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0813975A - .align 2, 0 -_08139730: .4byte gMonSummaryScreen -_08139734: .4byte 0x00003288 -_08139738: - movs r0, 0x5 - bl PlaySE - ldr r0, _08139744 @ =gUnknown_203B16D - strb r4, [r0] - b _0813975A - .align 2, 0 -_08139744: .4byte gUnknown_203B16D -_08139748: - ldr r0, _08139764 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0813975A - adds r0, r2, 0 - bl sub_8137E64 -_0813975A: - add sp, 0x14 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08139764: .4byte gPaletteFade - thumb_func_end sub_81393D4 - - thumb_func_start sub_8139768 -sub_8139768: @ 8139768 - push {r4-r6,lr} - adds r4, r0, 0 - ldr r0, _081397A4 @ =gMonSummaryScreen - ldr r1, [r0] - ldr r2, _081397A8 @ =0x00003020 - adds r1, r2 - ldrb r1, [r1] - adds r6, r0, 0 - cmp r1, 0x1 - bhi _08139858 - ldr r3, _081397AC @ =gUnknown_203B170 - ldr r2, [r3] - ldrb r0, [r2, 0x4] - adds r1, r0, 0x1 - strb r1, [r2, 0x4] - lsls r0, 24 - lsrs r0, 24 - adds r5, r3, 0 - cmp r0, 0x1 - bls _08139858 - ldr r3, [r5] - ldrb r0, [r3, 0x8] - cmp r0, 0x1 - beq _081397D8 - cmp r0, 0x1 - bgt _081397B0 - cmp r0, 0 - beq _081397B6 - b _0813981C - .align 2, 0 -_081397A4: .4byte gMonSummaryScreen -_081397A8: .4byte 0x00003020 -_081397AC: .4byte gUnknown_203B170 -_081397B0: - cmp r0, 0x2 - beq _081397FC - b _0813981C -_081397B6: - ldr r2, _081397D4 @ =gUnknown_8463FBE - ldrb r0, [r3] - adds r1, r0, 0x1 - strb r1, [r3] - lsls r0, 24 - lsrs r0, 24 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - ldrh r1, [r4, 0x22] - adds r0, r1 - strh r0, [r4, 0x22] - movs r1, 0x3 - b _0813983A - .align 2, 0 -_081397D4: .4byte gUnknown_8463FBE -_081397D8: - ldr r2, _081397F8 @ =gUnknown_8463FC1 - ldrb r0, [r3] - adds r1, r0, 0x1 - strb r1, [r3] - lsls r0, 24 - lsrs r0, 24 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - ldrh r2, [r4, 0x22] - adds r0, r2 - strh r0, [r4, 0x22] - movs r1, 0x5 - b _0813983A - .align 2, 0 -_081397F8: .4byte gUnknown_8463FC1 -_081397FC: - ldr r2, _08139818 @ =gUnknown_8463FC6 - ldrb r0, [r3] - adds r1, r0, 0x1 - strb r1, [r3] - lsls r0, 24 - lsrs r0, 24 - adds r0, r2 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - ldrh r1, [r4, 0x22] - adds r0, r1 - b _08139836 - .align 2, 0 -_08139818: .4byte gUnknown_8463FC6 -_0813981C: - ldr r3, _08139860 @ =gUnknown_8463FCD - ldr r2, [r5] - ldrb r0, [r2] - adds r1, r0, 0x1 - strb r1, [r2] - lsls r0, 24 - lsrs r0, 24 - adds r0, r3 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - ldrh r2, [r4, 0x22] - adds r0, r2 -_08139836: - strh r0, [r4, 0x22] - movs r1, 0x7 -_0813983A: - ldr r2, [r5] - ldrb r0, [r2] - cmp r0, r1 - bcc _08139852 - movs r0, 0 - strb r0, [r2] - ldr r1, [r6] - ldr r0, _08139864 @ =0x00003020 - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_08139852: - ldr r1, [r5] - movs r0, 0 - strb r0, [r1, 0x4] -_08139858: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08139860: .4byte gUnknown_8463FCD -_08139864: .4byte 0x00003020 - thumb_func_end sub_8139768 - - thumb_func_start sub_8139868 -sub_8139868: @ 8139868 - push {r4-r6,lr} - adds r3, r0, 0 - ldr r5, _081398C0 @ =gMonSummaryScreen - ldr r0, [r5] - ldr r6, _081398C4 @ =0x00003020 - adds r0, r6 - ldrb r0, [r0] - cmp r0, 0x1 - bhi _0813994C - ldr r4, _081398C8 @ =gUnknown_203B170 - ldr r2, [r4] - ldrb r0, [r2, 0x8] - cmp r0, 0x1 - beq _081398D0 - cmp r0, 0x1 - ble _0813988C - cmp r0, 0x2 - beq _08139908 -_0813988C: - ldrb r0, [r2, 0x4] - adds r1, r0, 0x1 - strb r1, [r2, 0x4] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x77 - bls _0813994C - ldr r2, _081398CC @ =gUnknown_8463FD4 - ldr r1, [r4] - ldrb r0, [r1] - adds r0, r2 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - ldrh r2, [r3, 0x20] - adds r0, r2 - movs r2, 0 - strh r0, [r3, 0x20] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xA - bls _0813994C - b _0813993A - .align 2, 0 -_081398C0: .4byte gMonSummaryScreen -_081398C4: .4byte 0x00003020 -_081398C8: .4byte gUnknown_203B170 -_081398CC: .4byte gUnknown_8463FD4 -_081398D0: - ldrb r0, [r2, 0x4] - adds r1, r0, 0x1 - strb r1, [r2, 0x4] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x59 - bls _0813994C - ldr r2, _08139904 @ =gUnknown_8463FDF - ldr r1, [r4] - ldrb r0, [r1] - adds r0, r2 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - ldrh r2, [r3, 0x20] - adds r0, r2 - movs r2, 0 - strh r0, [r3, 0x20] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xA - bls _0813994C - b _0813993A - .align 2, 0 -_08139904: .4byte gUnknown_8463FDF -_08139908: - ldrb r0, [r2, 0x4] - adds r1, r0, 0x1 - strb r1, [r2, 0x4] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3B - bls _0813994C - ldr r2, _08139954 @ =gUnknown_8463FEA - ldr r1, [r4] - ldrb r0, [r1] - adds r0, r2 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - ldrh r2, [r3, 0x20] - adds r0, r2 - movs r2, 0 - strh r0, [r3, 0x20] - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xE - bls _0813994C -_0813993A: - ldr r0, [r4] - strb r2, [r0] - ldr r0, [r4] - strb r2, [r0, 0x4] - ldr r1, [r5] - adds r1, r6 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0813994C: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08139954: .4byte gUnknown_8463FEA - thumb_func_end sub_8139868 - - thumb_func_start nullsub_96 -nullsub_96: @ 8139958 - bx lr - thumb_func_end nullsub_96 - - thumb_func_start sub_813995C -sub_813995C: @ 813995C - push {r4-r7,lr} - sub sp, 0x14 - ldr r4, _081399CC @ =gUnknown_203B170 - movs r0, 0xC - bl AllocZeroed - str r0, [r4] - ldr r5, _081399D0 @ =gMonSummaryScreen - ldr r0, [r5] - ldr r4, _081399D4 @ =0x00003290 - adds r0, r4 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r7, r0, 16 - ldr r0, [r5] - adds r0, r4 - movs r1, 0 - bl GetMonData - adds r6, r0, 0 - ldr r0, [r5] - adds r0, r4 - movs r1, 0x1 - bl GetMonData - adds r4, r0, 0 - ldr r5, [r5] - ldr r1, _081399D8 @ =0x000032f8 - adds r0, r5, r1 - ldr r1, [r0] - ldr r0, _081399DC @ =CB2_ReturnToTradeMenuFromSummary - cmp r1, r0 - bne _081399E8 - ldr r1, _081399E0 @ =0x00003024 - adds r0, r5, r1 - ldr r5, [r0] - cmp r5, 0x1 - bne _08139A24 - movs r0, 0x3C - str r0, [sp] - movs r0, 0x41 - str r0, [sp, 0x4] - movs r0, 0xC - str r0, [sp, 0x8] - ldr r0, _081399E4 @ =0x0000ffff - str r0, [sp, 0xC] - str r5, [sp, 0x10] - adds r0, r7, 0 - adds r1, r4, 0 - adds r2, r6, 0 - movs r3, 0x1 - bl CreateMonPicSprite - b _08139A40 - .align 2, 0 -_081399CC: .4byte gUnknown_203B170 -_081399D0: .4byte gMonSummaryScreen -_081399D4: .4byte 0x00003290 -_081399D8: .4byte 0x000032f8 -_081399DC: .4byte CB2_ReturnToTradeMenuFromSummary -_081399E0: .4byte 0x00003024 -_081399E4: .4byte 0x0000ffff -_081399E8: - ldr r0, _08139A1C @ =gLastViewedMonIndex - ldrb r1, [r0] - movs r0, 0x3 - bl sub_804455C - lsls r0, 24 - cmp r0, 0 - beq _08139A24 - movs r0, 0x3C - str r0, [sp] - movs r0, 0x41 - str r0, [sp, 0x4] - movs r0, 0xC - str r0, [sp, 0x8] - ldr r0, _08139A20 @ =0x0000ffff - str r0, [sp, 0xC] - movs r0, 0x1 - str r0, [sp, 0x10] - adds r0, r7, 0 - adds r1, r4, 0 - adds r2, r6, 0 - movs r3, 0x1 - bl CreateMonPicSprite - b _08139A40 - .align 2, 0 -_08139A1C: .4byte gLastViewedMonIndex -_08139A20: .4byte 0x0000ffff -_08139A24: - movs r0, 0x3C - str r0, [sp] - movs r0, 0x41 - str r0, [sp, 0x4] - movs r0, 0xC - str r0, [sp, 0x8] - ldr r0, _08139A70 @ =0x0000ffff - str r0, [sp, 0xC] - adds r0, r7, 0 - adds r1, r4, 0 - adds r2, r6, 0 - movs r3, 0x1 - bl CreateMonPicSprite_HandleDeoxys -_08139A40: - lsls r0, 16 - lsrs r5, r0, 16 - lsls r0, r5, 4 - adds r0, r5 - lsls r0, 2 - ldr r1, _08139A74 @ =gSprites - adds r4, r0, r1 - adds r0, r4, 0 - bl FreeSpriteOamMatrix - adds r0, r7, 0 - bl IsPokeSpriteNotFlipped - lsls r0, 24 - cmp r0, 0 - bne _08139A78 - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0] - b _08139A86 - .align 2, 0 -_08139A70: .4byte 0x0000ffff -_08139A74: .4byte gSprites -_08139A78: - adds r2, r4, 0 - adds r2, 0x3F - ldrb r1, [r2] - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_08139A86: - ldr r0, _08139AA4 @ =gMonSummaryScreen - ldr r0, [r0] - ldr r1, _08139AA8 @ =0x00003010 - adds r0, r1 - strb r5, [r0] - movs r0, 0x1 - bl sub_8139C44 - adds r0, r5, 0 - bl sub_8139AAC - add sp, 0x14 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08139AA4: .4byte gMonSummaryScreen -_08139AA8: .4byte 0x00003010 - thumb_func_end sub_813995C - - thumb_func_start sub_8139AAC -sub_8139AAC: @ 8139AAC - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldr r1, _08139AF4 @ =gMonSummaryScreen - ldr r0, [r1] - ldr r2, _08139AF8 @ =0x00003020 - adds r0, r2 - movs r6, 0 - strb r6, [r0] - ldr r2, [r1] - movs r3, 0xC8 - lsls r3, 6 - adds r0, r2, r3 - ldrb r4, [r0] - adds r7, r1, 0 - cmp r4, 0x1 - bne _08139B3C - ldr r1, _08139AFC @ =0x00003290 - adds r0, r2, r1 - movs r1, 0x20 - bl GetMonData - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - cmp r0, 0x5 - bhi _08139B04 - ldr r0, _08139B00 @ =gUnknown_203B170 - ldr r1, [r0] - movs r0, 0x2 - strb r0, [r1, 0x8] - b _08139B1E - .align 2, 0 -_08139AF4: .4byte gMonSummaryScreen -_08139AF8: .4byte 0x00003020 -_08139AFC: .4byte 0x00003290 -_08139B00: .4byte gUnknown_203B170 -_08139B04: - cmp r0, 0xA - bhi _08139B14 - ldr r0, _08139B10 @ =gUnknown_203B170 - ldr r0, [r0] - strb r4, [r0, 0x8] - b _08139B1E - .align 2, 0 -_08139B10: .4byte gUnknown_203B170 -_08139B14: - cmp r1, 0x28 - bhi _08139B1E - ldr r0, _08139B30 @ =gUnknown_203B170 - ldr r0, [r0] - strb r6, [r0, 0x8] -_08139B1E: - ldr r0, _08139B34 @ =gSprites - mov r2, r8 - lsls r1, r2, 4 - add r1, r8 - lsls r1, 2 - adds r0, 0x1C - adds r1, r0 - ldr r0, _08139B38 @ =sub_8139868 - b _08139C28 - .align 2, 0 -_08139B30: .4byte gUnknown_203B170 -_08139B34: .4byte gSprites -_08139B38: .4byte sub_8139868 -_08139B3C: - ldr r3, _08139B60 @ =0x0000326c - adds r0, r2, r3 - ldrb r0, [r0] - cmp r0, 0 - beq _08139B6C - cmp r0, 0x6 - beq _08139B6C - cmp r0, 0x7 - beq _08139C2A - ldr r0, _08139B64 @ =gSprites - mov r2, r8 - lsls r1, r2, 4 - add r1, r8 - lsls r1, 2 - adds r0, 0x1C - adds r1, r0 - ldr r0, _08139B68 @ =nullsub_96 - b _08139C28 - .align 2, 0 -_08139B60: .4byte 0x0000326c -_08139B64: .4byte gSprites -_08139B68: .4byte nullsub_96 -_08139B6C: - ldr r0, [r7] - ldr r4, _08139B98 @ =0x00003290 - adds r0, r4 - movs r1, 0x39 - bl GetMonData - lsls r0, 16 - lsrs r6, r0, 16 - ldr r0, [r7] - adds r0, r4 - movs r1, 0x3A - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - cmp r6, r0 - bne _08139BA0 - ldr r0, _08139B9C @ =gUnknown_203B170 - ldr r1, [r0] - movs r0, 0x3 - b _08139C16 - .align 2, 0 -_08139B98: .4byte 0x00003290 -_08139B9C: .4byte gUnknown_203B170 -_08139BA0: - bl __floatsidf - str r0, [sp] - str r1, [sp, 0x4] - ldr r3, _08139BD8+4 @ =0x9999999a - ldr r2, _08139BD8 @ =0x3fe99999 - bl __muldf3 - adds r5, r1, 0 - adds r4, r0, 0 - adds r0, r6, 0 - bl __floatsidf - adds r7, r1, 0 - adds r6, r0, 0 - adds r1, r5, 0 - adds r0, r4, 0 - adds r3, r7, 0 - adds r2, r6, 0 - bl __ledf2 - cmp r0, 0 - bgt _08139BE4 - ldr r0, _08139BE0 @ =gUnknown_203B170 - ldr r1, [r0] - movs r0, 0x2 - b _08139C16 - .align 2, 0 -@ _08139BD8: .double 0.8 -_08139BD8: .4byte 0x3fe99999 -_08139BDC: .4byte 0x9999999a -_08139BE0: .4byte gUnknown_203B170 -_08139BE4: - ldr r3, _08139C04+4 @ =0x33333333 - ldr r2, _08139C04 @ =0x3fe33333 - ldr r0, [sp] - ldr r1, [sp, 0x4] - bl __muldf3 - adds r3, r7, 0 - adds r2, r6, 0 - bl __ledf2 - cmp r0, 0 - bgt _08139C10 - ldr r0, _08139C0C @ =gUnknown_203B170 - ldr r1, [r0] - movs r0, 0x1 - b _08139C16 - .align 2, 0 -@ _08139C04: .double 0.6 -_08139C04: .4byte 0x3fe33333 -_08139C08: .4byte 0x33333333 -_08139C0C: .4byte gUnknown_203B170 -_08139C10: - ldr r0, _08139C38 @ =gUnknown_203B170 - ldr r1, [r0] - movs r0, 0 -_08139C16: - strb r0, [r1, 0x8] - ldr r0, _08139C3C @ =gSprites - mov r3, r8 - lsls r1, r3, 4 - add r1, r8 - lsls r1, 2 - adds r0, 0x1C - adds r1, r0 - ldr r0, _08139C40 @ =sub_8139768 -_08139C28: - str r0, [r1] -_08139C2A: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08139C38: .4byte gUnknown_203B170 -_08139C3C: .4byte gSprites -_08139C40: .4byte sub_8139768 - thumb_func_end sub_8139AAC - thumb_func_start sub_8139C44 sub_8139C44: @ 8139C44 lsls r0, 24 diff --git a/include/strings.h b/include/strings.h index 7b5c85305..81441d2bc 100644 --- a/include/strings.h +++ b/include/strings.h @@ -1503,5 +1503,6 @@ extern const u8 gUnknown_8419C72[]; extern const u8 gUnknown_8419C2A[]; extern const u8 gUnknown_8419C7B[]; extern const u8 gUnknown_8419CA9[]; +extern const u8 gUnknown_8419CB9[]; #endif //GUARD_STRINGS_H diff --git a/include/trainer_pokemon_sprites.h b/include/trainer_pokemon_sprites.h index 23f6e2cab..fe4fc2510 100644 --- a/include/trainer_pokemon_sprites.h +++ b/include/trainer_pokemon_sprites.h @@ -17,5 +17,7 @@ u16 FreeAndDestroyTrainerPicSprite(u16); u16 PlayerGenderToFrontTrainerPicId_Debug(u8 gender, bool8 getClass); u16 CreateMonPicSprite_HandleDeoxys(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag); u16 LoadMonPicInWindow(u16 species, u32 otId, u32 personality, bool8 isFrontPic, u8 paletteSlot, u8 windowId); +u16 CreateMonPicSprite(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag, bool8 ignoreDeoxys); +u16 CreateMonPicSprite_HandleDeoxys(u16 species, u32 otId, u32 personality, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16 paletteTag); #endif // GUARD_TRAINER_POKEMON_SPRITES_H diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index bef024a09..ec42eb65c 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -26,6 +26,8 @@ #include "field_specials.h" #include "party_menu.h" #include "constants/battle.h" +#include "event_data.h" +#include "trainer_pokemon_sprites.h" extern void sub_8138B8C(struct Pokemon * mon); void sub_8135C34(void); @@ -118,6 +120,7 @@ void sub_81380F0(void); extern void sub_81390B0(void); extern void sub_81391EC(void); extern void sub_8139328(struct Pokemon * mon); +extern void sub_8139AAC(u16 spriteId); struct PokemonSummaryScreenData { u16 unk0[0x800]; @@ -276,12 +279,19 @@ struct Struct203B15C { u16 unk3E; /* 0x3e */ }; +struct Struct203B170 { + u8 ALIGNED(4) unk00; /* 0x00 */ + u8 ALIGNED(4) unk04; /* 0x04 */ + u8 ALIGNED(4) unk08; /* 0x08 */ +}; + extern struct PokemonSummaryScreenData * gMonSummaryScreen; extern struct Struct203B144 * gUnknown_203B144; extern struct Struct203B15C * gUnknown_203B15C; extern struct Struct203B160 * gUnknown_203B160; extern u8 gUnknown_203B16D; extern u8 gUnknown_203B16E; +extern struct Struct203B170 * gUnknown_203B170; extern const u32 gUnknown_8E9B750[]; extern const u32 gUnknown_8E9B950[]; @@ -311,6 +321,15 @@ extern const struct WindowTemplate gUnknown_8463F5C[]; extern const struct WindowTemplate gUnknown_8463F7C[]; extern const struct WindowTemplate gUnknown_8463F24[]; +extern const s8 gUnknown_8463FBE[3]; +extern const s8 gUnknown_8463FC1[5]; +extern const s8 gUnknown_8463FC6[7]; +extern const s8 gUnknown_8463FCD[7]; + +extern const s8 gUnknown_8463FD4[11]; +extern const s8 gUnknown_8463FDF[11]; +extern const s8 gUnknown_8463FEA[15]; + #define FREE_AND_SET_NULL_IF_SET(ptr) \ { \ if (ptr != NULL) \ @@ -2939,7 +2958,7 @@ void sub_8138CD8(u8 id) { if (gUnknown_203B16D < 4) { - u8 limit = 4; + u8 v0 = 4; gMonSummaryScreen->unk3288 = 2; @@ -2952,10 +2971,10 @@ void sub_8138CD8(u8 id) PlaySE(SE_SELECT); return; } - limit--; + v0--; } - for (i = gUnknown_203B16D; i < limit; i++) + for (i = gUnknown_203B16D; i < v0; i++) if (gMonSummaryScreen->unk325A[i + 1] != 0) { PlaySE(SE_SELECT); @@ -3163,3 +3182,334 @@ void sub_8139328(struct Pokemon * mon) BoxMonToMon(&boxMons[GetLastViewedMonIndex()], mon); } } + +u8 sub_8139388(void) +{ + u16 move; + + move = sub_8138BEC(&gMonSummaryScreen->currentMon, gUnknown_203B16D); + + if (IsMoveHm(move) == TRUE && gMonSummaryScreen->mode != PSS_MODE_FORGET_MOVE) + return FALSE; + + return TRUE; +} + +void sub_81393D4(u8 taskId) +{ + u8 i; + + switch (gMonSummaryScreen->unk3288) + { + case 0: + BeginNormalPaletteFade(0xffffffff, 0, 16, 0, 0); + gMonSummaryScreen->unk3288++; + break; + case 1: + if (!gPaletteFade.active) + { + sub_813B784(); + gMonSummaryScreen->unk3288++; + } + break; + case 2: + if (JOY_NEW(DPAD_UP)) + { + if (gUnknown_203B16D > 0) + { + gMonSummaryScreen->unk3288 = 3; + PlaySE(SE_SELECT); + for (i = gUnknown_203B16D; i > 0; i--) + if (gMonSummaryScreen->unk325A[i - 1] != 0) + { + PlaySE(SE_SELECT); + gUnknown_203B16D = i - 1; + return; + } + } + else + { + gUnknown_203B16D = 4; + gMonSummaryScreen->unk3288 = 3; + PlaySE(SE_SELECT); + return; + } + } + else if (JOY_NEW(DPAD_DOWN)) + { + if (gUnknown_203B16D < 4) + { + u8 v0 = 4; + + gMonSummaryScreen->unk3288 = 3; + + if (gMonSummaryScreen->unk3268 == 1) + v0--; + + for (i = gUnknown_203B16D; i < v0; i++) + if (gMonSummaryScreen->unk325A[i + 1] != 0) + { + PlaySE(SE_SELECT); + gUnknown_203B16D = i + 1; + return; + } + + if (gMonSummaryScreen->unk3268 == 0) + { + PlaySE(SE_SELECT); + gUnknown_203B16D = i; + } + + return; + } + else if (gUnknown_203B16D == 4) + { + gUnknown_203B16D = 0; + gMonSummaryScreen->unk3288 = 3; + PlaySE(SE_SELECT); + return; + } + } + else if (JOY_NEW(A_BUTTON)) + { + if (sub_8139388() == TRUE || gUnknown_203B16D == 4) + { + PlaySE(SE_SELECT); + gUnknown_203B16E = gUnknown_203B16D; + gSpecialVar_0x8005 = gUnknown_203B16E; + gMonSummaryScreen->unk3288 = 6; + } + else + { + PlaySE(SE_HAZURE); + gMonSummaryScreen->unk3288 = 5; + } + } + else if (JOY_NEW(B_BUTTON)) + { + gUnknown_203B16E = 4; + gSpecialVar_0x8005 = (u16)gUnknown_203B16E; + gMonSummaryScreen->unk3288 = 6; + } + break; + case 3: + sub_8136F4C(); + sub_81374E8(); + sub_8137BD0(); + gMonSummaryScreen->unk3288 = 4; + break; + case 4: + if (MenuHelpers_CallLinkSomething() == TRUE || sub_800B270() == TRUE) + return; + + CopyWindowToVram(gMonSummaryScreen->unk3000[3], 2); + CopyWindowToVram(gMonSummaryScreen->unk3000[4], 2); + CopyWindowToVram(gMonSummaryScreen->unk3000[5], 2); + CopyWindowToVram(gMonSummaryScreen->unk3000[6], 2); + CopyBgTilemapBufferToVram(0); + CopyBgTilemapBufferToVram(3); + gMonSummaryScreen->unk3288 = 2; + break; + case 5: + FillWindowPixelBuffer(gMonSummaryScreen->unk3000[4], 0); + AddTextPrinterParameterized4(gMonSummaryScreen->unk3000[4], 2, + 7, 42, + 0, 0, + gUnknown_8463FA4[0], TEXT_SPEED_FF, + gUnknown_8419CB9); + CopyWindowToVram(gMonSummaryScreen->unk3000[4], 2); + CopyBgTilemapBufferToVram(0); + CopyBgTilemapBufferToVram(3); + gMonSummaryScreen->unk3288 = 2; + break; + case 6: + BeginNormalPaletteFade(0xffffffff, 0, 0, 16, 0); + gMonSummaryScreen->unk3288++; + break; + default: + if (!gPaletteFade.active) + sub_8137E64(taskId); + break; + } +} + +void sub_8139768(struct Sprite * sprite) +{ + if (gMonSummaryScreen->unk3020 >= 2) + return; + + if (gUnknown_203B170->unk04++ >= 2) + { + u8 v0; + + switch (gUnknown_203B170->unk08) + { + case 0: + sprite->pos1.y += gUnknown_8463FBE[gUnknown_203B170->unk00++]; + v0 = ARRAY_COUNT(gUnknown_8463FBE); + break; + case 1: + sprite->pos1.y += gUnknown_8463FC1[gUnknown_203B170->unk00++]; + v0 = ARRAY_COUNT(gUnknown_8463FC1); + break; + case 2: + sprite->pos1.y += gUnknown_8463FC6[gUnknown_203B170->unk00++]; + v0 = ARRAY_COUNT(gUnknown_8463FC6); + break; + case 3: + default: + sprite->pos1.y += gUnknown_8463FCD[gUnknown_203B170->unk00++]; + v0 = ARRAY_COUNT(gUnknown_8463FCD); + break; + } + + if (gUnknown_203B170->unk00 >= v0) + { + gUnknown_203B170->unk00 = 0; + gMonSummaryScreen->unk3020++; + } + + gUnknown_203B170->unk04 = 0; + } +} + +void sub_8139868(struct Sprite * sprite) +{ + if (gMonSummaryScreen->unk3020 >= 2) + return; + + switch (gUnknown_203B170->unk08) + { + case 0: + default: + if (gUnknown_203B170->unk04++ >= 120) + { + sprite->pos1.x += gUnknown_8463FD4[gUnknown_203B170->unk00]; + if (++gUnknown_203B170->unk00 >= ARRAY_COUNT(gUnknown_8463FD4)) + { + gUnknown_203B170->unk00 = 0; + gUnknown_203B170->unk04 = 0; + gMonSummaryScreen->unk3020++; + } + } + break; + case 1: + if (gUnknown_203B170->unk04++ >= 90) + { + sprite->pos1.x += gUnknown_8463FDF[gUnknown_203B170->unk00]; + if (++gUnknown_203B170->unk00 >= ARRAY_COUNT(gUnknown_8463FDF)) + { + gUnknown_203B170->unk00 = 0; + gUnknown_203B170->unk04 = 0; + gMonSummaryScreen->unk3020++; + } + } + break; + case 2: + if (gUnknown_203B170->unk04++ >= 60) + { + sprite->pos1.x += gUnknown_8463FEA[gUnknown_203B170->unk00]; + if (++gUnknown_203B170->unk00 >= ARRAY_COUNT(gUnknown_8463FEA)) + { + gUnknown_203B170->unk00 = 0; + gUnknown_203B170->unk04 = 0; + gMonSummaryScreen->unk3020++; + } + } + break; + } +} + +void nullsub_96(struct Sprite * sprite) +{ +} + +void sub_813995C(void) +{ + u16 spriteId; + u16 species; + u32 personality; + u32 trainerId; + + gUnknown_203B170 = AllocZeroed(sizeof(struct Struct203B170)); + + species = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_SPECIES2); + personality = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_PERSONALITY); + trainerId = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_OT_ID); + + if (gMonSummaryScreen->savedCallback == CB2_ReturnToTradeMenuFromSummary) + { + if (gMonSummaryScreen->isEnemyParty == TRUE) + spriteId = CreateMonPicSprite(species, trainerId, personality, 1, 60, 65, 12, 0xffff, 1); + else + spriteId = CreateMonPicSprite_HandleDeoxys(species, trainerId, personality, 1, 60, 65, 12, 0xffff); + } + else + { + if (sub_804455C(3, gLastViewedMonIndex)) + spriteId = CreateMonPicSprite(species, trainerId, personality, 1, 60, 65, 12, 0xffff, 1); + else + spriteId = CreateMonPicSprite_HandleDeoxys(species, trainerId, personality, 1, 60, 65, 12, 0xffff); + } + + FreeSpriteOamMatrix(&gSprites[spriteId]); + + if (!IsPokeSpriteNotFlipped(species)) + gSprites[spriteId].hFlip = TRUE; + else + gSprites[spriteId].hFlip = FALSE; + + gMonSummaryScreen->unk3010 = spriteId; + + sub_8139C44(1); + sub_8139AAC(spriteId); +} + +void sub_8139AAC(u16 spriteId) +{ + u16 curHp; + u16 maxHp; + + gMonSummaryScreen->unk3020 = 0; + + if (gMonSummaryScreen->isEgg == TRUE) + { + u8 friendship = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_FRIENDSHIP); + + if (friendship <= 5) + gUnknown_203B170->unk08 = 2; + else + { + if (friendship <= 10) + gUnknown_203B170->unk08 = 1; + else if (friendship <= 40) + gUnknown_203B170->unk08 = 0; + } + + gSprites[spriteId].callback = sub_8139868; + return; + } + + if (gMonSummaryScreen->unk326C != AILMENT_NONE && gMonSummaryScreen->unk326C != AILMENT_PKRS) + { + if (gMonSummaryScreen->unk326C == AILMENT_FNT) + return; + + gSprites[spriteId].callback = nullsub_96; + return; + } + + curHp = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_HP); + maxHp = GetMonData(&gMonSummaryScreen->currentMon, MON_DATA_MAX_HP); + + if (curHp == maxHp) + gUnknown_203B170->unk08 = 3; + else if (maxHp * 0.8 <= curHp) + gUnknown_203B170->unk08 = 2; + else if (maxHp * 0.6 <= curHp) + gUnknown_203B170->unk08 = 1; + else + gUnknown_203B170->unk08 = 0; + + gSprites[spriteId].callback = sub_8139768; +} |