diff options
author | Marcus Huderle <huderlem@gmail.com> | 2017-11-23 13:47:44 -0800 |
---|---|---|
committer | Marcus Huderle <huderlem@gmail.com> | 2017-11-26 12:57:30 -0800 |
commit | 5a8cd94046983f15eaf6d414d5f431cb296abdc3 (patch) | |
tree | 7e4fd6745103d348d9cdf2faf2a5839f2913f1d3 | |
parent | 34a49a726c6c42803950fc993394be8b96492c71 (diff) |
Lots more pokemon_summary_screen decompilation
-rw-r--r-- | asm/contest.s | 4 | ||||
-rw-r--r-- | asm/pokemon_summary_screen.s | 1947 | ||||
-rw-r--r-- | data-de/text/contest_strings.inc | 2 | ||||
-rw-r--r-- | data/text/contest_strings.inc | 2 | ||||
-rw-r--r-- | include/learn_move.h | 15 | ||||
-rw-r--r-- | include/party_menu.h | 1 | ||||
-rw-r--r-- | include/pokemon.h | 2 | ||||
-rw-r--r-- | src/pokemon/learn_move.c | 20 | ||||
-rw-r--r-- | src/pokemon/pokemon_summary_screen.c | 1144 |
9 files changed, 1165 insertions, 1972 deletions
diff --git a/asm/contest.s b/asm/contest.s index ad3b4fba9..2d24f5bb0 100644 --- a/asm/contest.s +++ b/asm/contest.s @@ -7157,7 +7157,7 @@ _080AEC34: ldr r6, _080AEC78 @ =gContestMoves lsls r5, r4, 3 ldr r7, _080AEC80 @ =gContestEffects - ldr r0, _080AEC84 @ =gUnknown_083CADD4 + ldr r0, _080AEC84 @ =gContestEffectStrings mov r9, r0 ldr r4, _080AEC88 @ =0x0600c816 ldr r3, _080AEC8C @ =0x0600c7d6 @@ -7189,7 +7189,7 @@ _080AEC74: .4byte gUnknown_03004210 _080AEC78: .4byte gContestMoves _080AEC7C: .4byte 0x00004040 _080AEC80: .4byte gContestEffects -_080AEC84: .4byte gUnknown_083CADD4 +_080AEC84: .4byte gContestEffectStrings _080AEC88: .4byte 0x0600c816 _080AEC8C: .4byte 0x0600c7d6 _080AEC90: diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index 01bae4b3a..3eb3e2f83 100644 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -1547,7 +1547,7 @@ sub_809E508: @ 809E508 _0809E50E: adds r0, r5, 0 adds r1, r4, 0 - bl sub_809F760 + bl GetMonMove lsls r0, 16 cmp r0, 0 beq _0809E520 @@ -2078,7 +2078,7 @@ _0809E94E: lsrs r1, r4, 24 ldr r0, _0809EA10 @ =gSharedMem + 0x18010 str r2, [sp, 0x4] - bl sub_809F760 + bl GetMonMove lsls r0, 16 adds r5, r4, 0 ldr r2, [sp, 0x4] @@ -3796,1947 +3796,4 @@ _0809F6AE: bx r0 thumb_func_end sub_809F678 - thumb_func_start sub_809F6B4 -sub_809F6B4: @ 809F6B4 - push {r4-r7,lr} - sub sp, 0xC - adds r4, r0, 0 - adds r7, r1, 0 - ldrb r0, [r7] - cmp r0, 0 - beq _0809F6D2 - cmp r0, 0x1 - beq _0809F718 - adds r0, r4, 0 - bl sub_80A1808 - lsls r0, 24 - lsrs r0, 24 - b _0809F756 -_0809F6D2: - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - adds r6, r0, 0 - lsls r0, r5, 3 - ldr r1, _0809F70C @ =gMonFrontPicTable - adds r0, r1 - ldr r1, _0809F710 @ =gMonFrontPicCoords - lsls r2, r5, 2 - adds r2, r1 - ldrb r1, [r2] - ldrb r2, [r2, 0x1] - movs r3, 0x80 - lsls r3, 18 - ldr r4, _0809F714 @ =gUnknown_081FAF4C - ldr r4, [r4, 0x4] - str r4, [sp] - str r5, [sp, 0x4] - str r6, [sp, 0x8] - bl HandleLoadSpecialPokePic - b _0809F74E - .align 2, 0 -_0809F70C: .4byte gMonFrontPicTable -_0809F710: .4byte gMonFrontPicCoords -_0809F714: .4byte gUnknown_081FAF4C -_0809F718: - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - adds r6, r0, 0 - adds r0, r4, 0 - movs r1, 0x1 - bl GetMonData - adds r1, r0, 0 - adds r0, r5, 0 - adds r2, r6, 0 - bl GetMonSpritePalStructFromOtIdPersonality - adds r4, r0, 0 - bl LoadCompressedObjectPalette - ldrh r0, [r4, 0x4] - movs r1, 0x1 - bl GetMonSpriteTemplate_803C56C -_0809F74E: - ldrb r0, [r7] - adds r0, 0x1 - strb r0, [r7] - movs r0, 0xFF -_0809F756: - add sp, 0xC - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_809F6B4 - - thumb_func_start sub_809F760 -sub_809F760: @ 809F760 - push {lr} - lsls r1, 24 - lsrs r1, 24 - adds r2, r1, 0 - cmp r1, 0x1 - beq _0809F780 - cmp r1, 0x1 - bgt _0809F776 - cmp r1, 0 - beq _0809F77C - b _0809F788 -_0809F776: - cmp r2, 0x2 - beq _0809F784 - b _0809F788 -_0809F77C: - movs r1, 0xD - b _0809F78A -_0809F780: - movs r1, 0xE - b _0809F78A -_0809F784: - movs r1, 0xF - b _0809F78A -_0809F788: - movs r1, 0x10 -_0809F78A: - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - pop {r1} - bx r1 - thumb_func_end sub_809F760 - - thumb_func_start sub_809F798 -sub_809F798: @ 809F798 - push {lr} - lsls r1, 24 - lsrs r1, 24 - adds r2, r1, 0 - cmp r1, 0x1 - beq _0809F7B8 - cmp r1, 0x1 - bgt _0809F7AE - cmp r1, 0 - beq _0809F7B4 - b _0809F7C0 -_0809F7AE: - cmp r2, 0x2 - beq _0809F7BC - b _0809F7C0 -_0809F7B4: - movs r1, 0x11 - b _0809F7C2 -_0809F7B8: - movs r1, 0x12 - b _0809F7C2 -_0809F7BC: - movs r1, 0x13 - b _0809F7C2 -_0809F7C0: - movs r1, 0x14 -_0809F7C2: - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - pop {r1} - bx r1 - thumb_func_end sub_809F798 - - thumb_func_start sub_809F7D0 -sub_809F7D0: @ 809F7D0 - push {r4,lr} - sub sp, 0x64 - mov r0, sp - bl sub_809F678 - ldr r4, _0809F804 @ =gSharedMem + 0x18000 - adds r0, r4, 0 - adds r0, 0x79 - ldrb r1, [r0] - mov r0, sp - bl sub_809F760 - lsls r0, 16 - lsrs r0, 16 - bl IsHMMove - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0809F808 - ldrb r0, [r4, 0x8] - cmp r0, 0x3 - beq _0809F808 - movs r0, 0 - b _0809F80A - .align 2, 0 -_0809F804: .4byte gSharedMem + 0x18000 -_0809F808: - movs r0, 0x1 -_0809F80A: - add sp, 0x64 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_809F7D0 - - thumb_func_start sub_809F814 -sub_809F814: @ 809F814 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r6, r0, 3 - ldr r0, _0809F83C @ =gTasks + 0x8 - mov r8, r0 - adds r4, r6, r0 - ldrh r1, [r4, 0x1C] - movs r2, 0x1C - ldrsh r0, [r4, r2] - cmp r0, 0x3 - bgt _0809F840 - adds r0, r1, 0x1 - strh r0, [r4, 0x1C] - b _0809F9C0 - .align 2, 0 -_0809F83C: .4byte gTasks + 0x8 -_0809F840: - ldr r7, _0809F874 @ =gMain - ldrh r1, [r7, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0809F880 - mov r0, r8 - subs r0, 0x8 - adds r0, r6, r0 - ldr r1, _0809F878 @ =sub_809E260 - str r1, [r0] - movs r0, 0x4 - strh r0, [r4] - movs r0, 0x1 - strh r0, [r4, 0x1A] - ldr r2, _0809F87C @ =gSharedMem + 0x18000 - ldrh r0, [r4, 0x1E] - adds r2, 0x79 - strb r0, [r2] - movs r1, 0x1 - negs r1, r1 - adds r0, r5, 0 - bl sub_809E8F0 - b _0809F9C0 - .align 2, 0 -_0809F874: .4byte gMain -_0809F878: .4byte sub_809E260 -_0809F87C: .4byte gSharedMem + 0x18000 -_0809F880: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0809F8B4 - mov r0, r8 - subs r0, 0x8 - adds r0, r6, r0 - ldr r1, _0809F8AC @ =sub_809E260 - str r1, [r0] - movs r0, 0x4 - strh r0, [r4] - movs r0, 0x1 - strh r0, [r4, 0x1A] - ldr r2, _0809F8B0 @ =gSharedMem + 0x18000 - ldrh r0, [r4, 0x1E] - adds r2, 0x79 - strb r0, [r2] - adds r0, r5, 0 - movs r1, 0x1 - bl sub_809E8F0 - b _0809F9C0 - .align 2, 0 -_0809F8AC: .4byte sub_809E260 -_0809F8B0: .4byte gSharedMem + 0x18000 -_0809F8B4: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _0809F8C8 - bl sub_80F9284 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0809F918 -_0809F8C8: - ldr r1, _0809F90C @ =gSharedMem + 0x18000 - ldrb r0, [r1, 0xB] - cmp r0, 0x2 - beq _0809F9C0 - cmp r0, 0x3 - bne _0809F8F4 - adds r0, r1, 0 - adds r0, 0x79 - ldrb r0, [r0] - cmp r0, 0x4 - bne _0809F8E8 - adds r0, r1, 0 - adds r0, 0x7C - ldrh r0, [r0] - cmp r0, 0 - beq _0809F8F4 -_0809F8E8: - movs r0, 0 - movs r1, 0xE - movs r2, 0x9 - movs r3, 0x12 - bl MenuZeroFillWindowRect -_0809F8F4: - ldr r1, _0809F910 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _0809F914 @ =sub_809E260 - str r1, [r0] - movs r1, 0x1 - negs r1, r1 - adds r0, r5, 0 - b _0809F972 - .align 2, 0 -_0809F90C: .4byte gSharedMem + 0x18000 -_0809F910: .4byte gTasks -_0809F914: .4byte sub_809E260 -_0809F918: - ldrh r1, [r7, 0x2E] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _0809F92E - bl sub_80F9284 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _0809F994 -_0809F92E: - ldr r1, _0809F988 @ =gSharedMem + 0x18000 - adds r2, r1, 0 - adds r2, 0x76 - ldrb r0, [r1, 0xB] - ldrb r2, [r2] - cmp r0, r2 - beq _0809F9C0 - cmp r0, 0x2 - bne _0809F960 - adds r0, r1, 0 - adds r0, 0x79 - ldrb r0, [r0] - cmp r0, 0x4 - bne _0809F954 - adds r0, r1, 0 - adds r0, 0x7C - ldrh r0, [r0] - cmp r0, 0 - beq _0809F960 -_0809F954: - movs r0, 0 - movs r1, 0xE - movs r2, 0x9 - movs r3, 0x12 - bl MenuZeroFillWindowRect -_0809F960: - ldr r1, _0809F98C @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _0809F990 @ =sub_809E260 - str r1, [r0] - adds r0, r5, 0 - movs r1, 0x1 -_0809F972: - bl SummaryScreenHandleLeftRightInput - ldrb r1, [r4, 0x1E] - movs r0, 0x1 - bl sub_80A1488 - ldrb r1, [r4, 0x1E] - movs r0, 0x1 - bl sub_80A1654 - b _0809F9C0 - .align 2, 0 -_0809F988: .4byte gSharedMem + 0x18000 -_0809F98C: .4byte gTasks -_0809F990: .4byte sub_809E260 -_0809F994: - ldrh r1, [r7, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0809F9A6 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809F9C0 -_0809F9A6: - ldrb r1, [r4, 0x1E] - movs r0, 0x2 - bl sub_80A1488 - ldrb r1, [r4, 0x1E] - movs r0, 0x2 - bl sub_80A1654 - mov r0, r8 - subs r0, 0x8 - adds r0, r6, r0 - ldr r1, _0809F9CC @ =sub_809E260 - str r1, [r0] -_0809F9C0: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0809F9CC: .4byte sub_809E260 - thumb_func_end sub_809F814 - - thumb_func_start sub_809F9D0 -sub_809F9D0: @ 809F9D0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r6, _0809FA24 @ =gTasks + 0x8 - adds r2, r4, r6 - movs r0, 0 - strh r0, [r2, 0x1C] - strh r1, [r2, 0x1E] - movs r5, 0x2 - negs r5, r5 - adds r0, r5, 0 - movs r1, 0x4 - bl sub_80A1488 - adds r0, r5, 0 - movs r1, 0x4 - bl sub_80A1654 - movs r0, 0xB - movs r1, 0xF - movs r2, 0x1C - movs r3, 0x12 - bl MenuZeroFillWindowRect - ldr r0, _0809FA28 @ =gOtherText_CantForgetHMs - movs r1, 0xB - movs r2, 0xF - bl MenuPrint - subs r6, 0x8 - adds r4, r6 - ldr r0, _0809FA2C @ =sub_809F814 - str r0, [r4] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0809FA24: .4byte gTasks + 0x8 -_0809FA28: .4byte gOtherText_CantForgetHMs -_0809FA2C: .4byte sub_809F814 - thumb_func_end sub_809F9D0 - - thumb_func_start sub_809FA30 -sub_809FA30: @ 809FA30 - ldr r0, _0809FA38 @ =gSharedMem + 0x18000 - adds r0, 0x7A - ldrb r0, [r0] - bx lr - .align 2, 0 -_0809FA38: .4byte gSharedMem + 0x18000 - thumb_func_end sub_809FA30 - - thumb_func_start GetStringCenterAlignXOffsetWithLetterSpacing -GetStringCenterAlignXOffsetWithLetterSpacing: @ 809FA3C - push {r4,lr} - lsls r0, 24 - lsls r1, 24 - lsls r2, 24 - lsls r3, 24 - lsrs r2, 23 - lsrs r3, 18 - ldr r4, _0809FA70 @ =0x0600f000 - adds r3, r4 - adds r2, r3 - lsrs r1, 12 - lsrs r0, 23 - movs r4, 0x80 - lsls r4, 2 - adds r3, r4, 0 - adds r0, r3 - adds r1, r0 - adds r0, r1, 0 - adds r0, 0x80 - strh r0, [r2] - adds r2, 0x40 - adds r1, 0x81 - strh r1, [r2] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809FA70: .4byte 0x0600f000 - thumb_func_end GetStringCenterAlignXOffsetWithLetterSpacing - - thumb_func_start GetStringCenterAlignXOffset -GetStringCenterAlignXOffset: @ 809FA74 - push {r4,lr} - adds r4, r1, 0 - adds r3, r2, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r4, 24 - lsrs r4, 24 - lsls r3, 24 - lsrs r3, 24 - movs r1, 0xF - adds r2, r4, 0 - bl GetStringCenterAlignXOffsetWithLetterSpacing - pop {r4} - pop {r0} - bx r0 - thumb_func_end GetStringCenterAlignXOffset - - thumb_func_start sub_809FA94 -sub_809FA94: @ 809FA94 - push {lr} - bl IsShiny - lsls r0, 24 - cmp r0, 0 - beq _0809FAB4 - ldr r0, _0809FAB0 @ =gUnknown_083C157E - movs r1, 0x4 - movs r2, 0x2 - bl LoadPalette - movs r0, 0x1 - b _0809FAC0 - .align 2, 0 -_0809FAB0: .4byte gUnknown_083C157E -_0809FAB4: - ldr r0, _0809FAC4 @ =gUnknown_083C157C - movs r1, 0x4 - movs r2, 0x2 - bl LoadPalette - movs r0, 0 -_0809FAC0: - pop {r1} - bx r1 - .align 2, 0 -_0809FAC4: .4byte gUnknown_083C157C - thumb_func_end sub_809FA94 - - thumb_func_start sub_809FAC8 -sub_809FAC8: @ 809FAC8 - push {r4-r6,lr} - sub sp, 0xC - adds r5, r0, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - beq _0809FB28 - movs r0, 0x1 - movs r1, 0x2 - movs r2, 0x4 - movs r3, 0x3 - bl MenuZeroFillWindowRect - movs r0, 0x3 - movs r1, 0x10 - movs r2, 0x9 - movs r3, 0x11 - bl MenuZeroFillWindowRect - movs r0, 0 - movs r1, 0xC - movs r2, 0xB - movs r3, 0xF - bl MenuZeroFillWindowRect - ldr r4, _0809FB20 @ =gStringVar1 - adds r0, r5, 0 - adds r1, r4, 0 - bl GetMonNickname - adds r0, r4, 0 - movs r1, 0xD - movs r2, 0x3 - movs r3, 0x10 - bl sub_80A1FF8 - ldr r0, _0809FB24 @ =gUnknown_083C157C - movs r1, 0x4 - movs r2, 0x2 - bl LoadPalette - b _0809FBD6 - .align 2, 0 -_0809FB20: .4byte gStringVar1 -_0809FB24: .4byte gUnknown_083C157C -_0809FB28: - adds r0, r5, 0 - bl sub_809FA94 - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r5, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - bl SpeciesToPokedexNum - lsls r0, 16 - lsrs r4, r0, 16 - ldr r0, _0809FB6C @ =0x0000ffff - cmp r4, r0 - beq _0809FB96 - cmp r6, 0 - bne _0809FB70 - movs r0, 0x2 - movs r1, 0x1 - movs r2, 0x2 - bl GetStringCenterAlignXOffset - movs r0, 0x11 - str r0, [sp] - movs r0, 0x10 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - adds r0, r4, 0 - movs r1, 0xD - b _0809FB8C - .align 2, 0 -_0809FB6C: .4byte 0x0000ffff -_0809FB70: - movs r0, 0x2 - movs r1, 0x8 - movs r2, 0x1 - movs r3, 0x2 - bl GetStringCenterAlignXOffsetWithLetterSpacing - movs r0, 0x11 - str r0, [sp] - movs r0, 0x10 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - adds r0, r4, 0 - movs r1, 0x8 -_0809FB8C: - movs r2, 0x3 - movs r3, 0x2 - bl sub_80A1F98 - b _0809FBA2 -_0809FB96: - movs r0, 0x1 - movs r1, 0x2 - movs r2, 0x4 - movs r3, 0x3 - bl MenuZeroFillWindowRect -_0809FBA2: - ldr r1, _0809FBE0 @ =gStringVar1 - adds r0, r1, 0 - movs r1, 0xD - bl sub_80A1E58 - adds r1, r0, 0 - adds r0, r5, 0 - bl GetMonNickname - adds r1, r0, 0 - movs r0, 0xFC - strb r0, [r1] - movs r0, 0x13 - strb r0, [r1, 0x1] - movs r0, 0x3C - strb r0, [r1, 0x2] - movs r0, 0xFF - strb r0, [r1, 0x3] - ldr r0, _0809FBE0 @ =gStringVar1 - movs r1, 0x1 - movs r2, 0xC - bl MenuPrint - adds r0, r5, 0 - bl sub_80A0958 -_0809FBD6: - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0809FBE0: .4byte gStringVar1 - thumb_func_end sub_809FAC8 - - thumb_func_start sub_809FBE4 -sub_809FBE4: @ 809FBE4 - push {r4,lr} - movs r4, 0 -_0809FBE8: - adds r0, r4, 0 - movs r1, 0x1 - bl sub_80A1918 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x1B - bls _0809FBE8 - movs r0, 0xB - movs r1, 0x4 - movs r2, 0x1D - movs r3, 0x12 - bl MenuZeroFillWindowRect - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_809FBE4 - - thumb_func_start sub_809FC0C -sub_809FC0C: @ 809FC0C - push {lr} - ldr r0, _0809FC30 @ =gOtherText_Type2 - movs r1, 0xB - movs r2, 0x6 - bl MenuPrint - movs r0, 0 - movs r1, 0x16 - movs r2, 0x4 - bl GetStringCenterAlignXOffset - movs r0, 0x2 - movs r1, 0x17 - movs r2, 0x4 - bl GetStringCenterAlignXOffset - pop {r0} - bx r0 - .align 2, 0 -_0809FC30: .4byte gOtherText_Type2 - thumb_func_end sub_809FC0C - - thumb_func_start sub_809FC34 -sub_809FC34: @ 809FC34 - push {r4-r6,lr} - sub sp, 0xC - adds r6, r0, 0 - movs r4, 0 -_0809FC3C: - adds r0, r4, 0 - movs r1, 0x1 - bl sub_80A1918 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x4 - bls _0809FC3C - movs r0, 0xB - movs r1, 0x9 - movs r2, 0x1C - movs r3, 0xC - bl MenuZeroFillWindowRect - adds r0, r6, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - beq _0809FD1C - ldr r5, _0809FCD0 @ =gStringVar1 - adds r0, r5, 0 - movs r1, 0xD - bl sub_80A1E58 - adds r5, r0, 0 - ldr r1, _0809FCD4 @ =gOtherText_OriginalTrainer - bl StringCopy - adds r5, r0, 0 - ldr r4, _0809FCD8 @ =gOtherText_FiveQuestionsAndSlash - adds r1, r4, 0 - bl StringCopy - adds r5, r0, 0 - movs r0, 0xFC - strb r0, [r5] - movs r0, 0x13 - strb r0, [r5, 0x1] - movs r0, 0x4E - strb r0, [r5, 0x2] - movs r0, 0xFF - strb r0, [r5, 0x3] - ldr r0, _0809FCD0 @ =gStringVar1 - movs r1, 0xB - movs r2, 0x4 - bl MenuPrint - movs r0, 0x1 - str r0, [sp] - adds r0, r4, 0 - movs r1, 0xD - movs r2, 0xC1 - movs r3, 0x20 - bl sub_80A1EF8 - movs r0, 0x9 - movs r1, 0x78 - movs r2, 0x30 - movs r3, 0 - bl sub_80A198C - adds r0, r6, 0 - movs r1, 0x20 - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - adds r1, r0, 0 - cmp r0, 0x5 - bhi _0809FCE0 - ldr r0, _0809FCDC @ =gOtherText_EggAbout - b _0809FCF2 - .align 2, 0 -_0809FCD0: .4byte gStringVar1 -_0809FCD4: .4byte gOtherText_OriginalTrainer -_0809FCD8: .4byte gOtherText_FiveQuestionsAndSlash -_0809FCDC: .4byte gOtherText_EggAbout -_0809FCE0: - cmp r0, 0xA - bhi _0809FCEC - ldr r0, _0809FCE8 @ =gOtherText_EggSoon - b _0809FCF2 - .align 2, 0 -_0809FCE8: .4byte gOtherText_EggSoon -_0809FCEC: - cmp r1, 0x28 - bhi _0809FD00 - ldr r0, _0809FCFC @ =gOtherText_EggSomeTime -_0809FCF2: - movs r1, 0xB - movs r2, 0x9 - bl MenuPrint - b _0809FD0A - .align 2, 0 -_0809FCFC: .4byte gOtherText_EggSomeTime -_0809FD00: - ldr r0, _0809FD18 @ =gOtherText_EggLongTime - movs r1, 0xB - movs r2, 0x9 - bl MenuPrint -_0809FD0A: - adds r0, r6, 0 - movs r1, 0xB - movs r2, 0xE - bl PokemonSummaryScreen_PrintEggTrainerMemo - b _0809FE4C - .align 2, 0 -_0809FD18: .4byte gOtherText_EggLongTime -_0809FD1C: - ldr r4, _0809FD64 @ =gStringVar2 - adds r0, r6, 0 - movs r1, 0x7 - adds r2, r4, 0 - bl GetMonData - adds r0, r6, 0 - movs r1, 0x3 - bl GetMonData - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl ConvertInternationalString - ldr r5, _0809FD68 @ =gStringVar1 - adds r0, r5, 0 - movs r1, 0xD - bl sub_80A1E58 - adds r5, r0, 0 - ldr r1, _0809FD6C @ =gOtherText_OriginalTrainer - bl StringCopy - adds r5, r0, 0 - adds r0, r6, 0 - movs r1, 0x31 - bl GetMonData - cmp r0, 0 - bne _0809FD70 - adds r0, r5, 0 - movs r1, 0x9 - b _0809FD74 - .align 2, 0 -_0809FD64: .4byte gStringVar2 -_0809FD68: .4byte gStringVar1 -_0809FD6C: .4byte gOtherText_OriginalTrainer -_0809FD70: - adds r0, r5, 0 - movs r1, 0xA -_0809FD74: - bl sub_80A1E58 - adds r5, r0, 0 - ldr r1, _0809FE54 @ =gStringVar2 - adds r0, r5, 0 - bl StringCopy - adds r5, r0, 0 - movs r0, 0xFC - strb r0, [r5] - movs r0, 0x13 - strb r0, [r5, 0x1] - movs r0, 0x4E - strb r0, [r5, 0x2] - movs r0, 0xFF - strb r0, [r5, 0x3] - ldr r0, _0809FE58 @ =gStringVar1 - movs r1, 0xB - movs r2, 0x4 - bl MenuPrint - adds r0, r6, 0 - movs r1, 0x1 - bl GetMonData - ldr r1, _0809FE5C @ =0x0000ffff - ands r1, r0 - movs r0, 0xC1 - str r0, [sp] - movs r0, 0x20 - str r0, [sp, 0x4] - movs r0, 0x1 - str r0, [sp, 0x8] - adds r0, r1, 0 - movs r1, 0xD - movs r2, 0x5 - movs r3, 0x2 - bl sub_80A1F98 - adds r0, r6, 0 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - ldr r2, _0809FE60 @ =gBaseStats - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r5, r1, r2 - ldrb r4, [r5, 0x6] - adds r0, r4, 0 - movs r1, 0x78 - movs r2, 0x30 - movs r3, 0 - bl sub_80A198C - ldrb r0, [r5, 0x7] - cmp r4, r0 - beq _0809FDF8 - ldrb r0, [r5, 0x7] - movs r1, 0xA0 - movs r2, 0x30 - movs r3, 0x1 - bl sub_80A198C -_0809FDF8: - adds r0, r6, 0 - movs r1, 0xB - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r6, 0 - movs r1, 0x2E - bl GetMonData - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl GetAbilityBySpecies - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0xD - muls r0, r4 - ldr r1, _0809FE64 @ =gAbilityNames - adds r0, r1 - movs r1, 0xD - movs r2, 0xB - movs r3, 0x9 - bl sub_80A1FF8 - ldr r0, _0809FE68 @ =gAbilityDescriptions - lsls r4, 2 - adds r4, r0 - ldr r0, [r4] - movs r1, 0xB - movs r2, 0xB - bl MenuPrint - adds r0, r6, 0 - movs r1, 0xB - movs r2, 0xE - bl PokemonSummaryScreen_PrintTrainerMemo -_0809FE4C: - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0809FE54: .4byte gStringVar2 -_0809FE58: .4byte gStringVar1 -_0809FE5C: .4byte 0x0000ffff -_0809FE60: .4byte gBaseStats -_0809FE64: .4byte gAbilityNames -_0809FE68: .4byte gAbilityDescriptions - thumb_func_end sub_809FC34 - - thumb_func_start sub_809FE6C -sub_809FE6C: @ 809FE6C - push {r4,lr} - adds r4, r0, 0 - bl sub_809FC0C - adds r0, r4, 0 - bl sub_809FC34 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_809FE6C - - thumb_func_start sub_809FE80 -sub_809FE80: @ 809FE80 - push {lr} - movs r0, 0xE - movs r1, 0x4 - movs r2, 0x12 - movs r3, 0x5 - bl MenuZeroFillWindowRect - movs r0, 0x19 - movs r1, 0x4 - movs r2, 0x1E - movs r3, 0x5 - bl MenuZeroFillWindowRect - movs r0, 0xB - movs r1, 0x9 - movs r2, 0x1C - movs r3, 0xC - bl MenuZeroFillWindowRect - movs r0, 0xB - movs r1, 0xE - movs r2, 0x1C - movs r3, 0x11 - bl MenuZeroFillWindowRect - pop {r0} - bx r0 - thumb_func_end sub_809FE80 - - thumb_func_start sub_809FEB8 -sub_809FEB8: @ 809FEB8 - push {r4,lr} - sub sp, 0x4 - ldr r0, _0809FF40 @ =gOtherText_ExpPoints - movs r1, 0xD - movs r2, 0xB - movs r3, 0xE - bl sub_80A1FF8 - ldr r0, _0809FF44 @ =gOtherText_NextLv - movs r1, 0xD - movs r2, 0xB - movs r3, 0x10 - bl sub_80A1FF8 - ldr r0, _0809FF48 @ =gOtherText_Terminator18 - movs r1, 0x15 - movs r2, 0x10 - bl MenuPrint - ldr r0, _0809FF4C @ =gOtherText_HP - movs r4, 0x2A - str r4, [sp] - movs r1, 0xD - movs r2, 0xB - movs r3, 0x7 - bl sub_80A1F48 - ldr r0, _0809FF50 @ =gOtherText_Attack - str r4, [sp] - movs r1, 0xD - movs r2, 0xB - movs r3, 0x9 - bl sub_80A1F48 - ldr r0, _0809FF54 @ =gOtherText_Defense - str r4, [sp] - movs r1, 0xD - movs r2, 0xB - movs r3, 0xB - bl sub_80A1F48 - ldr r0, _0809FF58 @ =gOtherText_SpAtk - movs r4, 0x24 - str r4, [sp] - movs r1, 0xD - movs r2, 0x16 - movs r3, 0x7 - bl sub_80A1F48 - ldr r0, _0809FF5C @ =gOtherText_SpDef - str r4, [sp] - movs r1, 0xD - movs r2, 0x16 - movs r3, 0x9 - bl sub_80A1F48 - ldr r0, _0809FF60 @ =gOtherText_Speed - str r4, [sp] - movs r1, 0xD - movs r2, 0x16 - movs r3, 0xB - bl sub_80A1F48 - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809FF40: .4byte gOtherText_ExpPoints -_0809FF44: .4byte gOtherText_NextLv -_0809FF48: .4byte gOtherText_Terminator18 -_0809FF4C: .4byte gOtherText_HP -_0809FF50: .4byte gOtherText_Attack -_0809FF54: .4byte gOtherText_Defense -_0809FF58: .4byte gOtherText_SpAtk -_0809FF5C: .4byte gOtherText_SpDef -_0809FF60: .4byte gOtherText_Speed - thumb_func_end sub_809FEB8 - - thumb_func_start sub_809FF64 -sub_809FF64: @ 809FF64 - push {r4,r5,lr} - adds r5, r0, 0 - movs r4, 0 -_0809FF6A: - adds r0, r4, 0 - movs r1, 0x1 - bl sub_80A1918 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x4 - bls _0809FF6A - adds r0, r5, 0 - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xB - movs r2, 0x4 - bl PrintHeldItemName - adds r0, r5, 0 - bl PrintNumRibbons - ldr r4, _080A008C @ =gStringVar1 - adds r0, r5, 0 - movs r1, 0x19 - bl GetMonData - adds r1, r0, 0 - adds r0, r4, 0 - bl ConvertIntToDecimalString - adds r0, r4, 0 - movs r1, 0x1D - movs r2, 0xE - bl MenuPrint_RightAligned - adds r0, r5, 0 - movs r1, 0x17 - movs r2, 0x10 - bl DrawExperienceProgressBar - adds r0, r5, 0 - movs r1, 0x3B - bl GetMonData - adds r1, r0, 0 - adds r0, r4, 0 - bl ConvertIntToDecimalString - adds r0, r4, 0 - movs r1, 0x10 - movs r2, 0x9 - movs r3, 0x32 - bl sub_8072BD8 - adds r0, r5, 0 - movs r1, 0x3C - bl GetMonData - adds r1, r0, 0 - adds r0, r4, 0 - bl ConvertIntToDecimalString - adds r0, r4, 0 - movs r1, 0x10 - movs r2, 0xB - movs r3, 0x32 - bl sub_8072BD8 - adds r0, r5, 0 - movs r1, 0x3E - bl GetMonData - adds r1, r0, 0 - adds r0, r4, 0 - bl ConvertIntToDecimalString - adds r0, r4, 0 - movs r1, 0x1B - movs r2, 0x7 - movs r3, 0x12 - bl sub_8072BD8 - adds r0, r5, 0 - movs r1, 0x3F - bl GetMonData - adds r1, r0, 0 - adds r0, r4, 0 - bl ConvertIntToDecimalString - adds r0, r4, 0 - movs r1, 0x1B - movs r2, 0x9 - movs r3, 0x12 - bl sub_8072BD8 - adds r0, r5, 0 - movs r1, 0x3D - bl GetMonData - adds r1, r0, 0 - adds r0, r4, 0 - bl ConvertIntToDecimalString - adds r0, r4, 0 - movs r1, 0x1B - movs r2, 0xB - movs r3, 0x12 - bl sub_8072BD8 - adds r0, r5, 0 - movs r1, 0x39 - bl GetMonData - adds r1, r0, 0 - adds r0, r4, 0 - movs r2, 0x18 - movs r3, 0x1 - bl sub_8072C14 - adds r4, r0, 0 - movs r0, 0xBA - strb r0, [r4] - adds r4, 0x1 - adds r0, r5, 0 - movs r1, 0x3A - bl GetMonData - adds r1, r0, 0 - adds r0, r4, 0 - movs r2, 0x30 - movs r3, 0x1 - bl sub_8072C14 - ldr r0, _080A008C @ =gStringVar1 - movs r1, 0x7E - movs r2, 0x38 - movs r3, 0x1 - bl MenuPrint_PixelCoords - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A008C: .4byte gStringVar1 - thumb_func_end sub_809FF64 - - thumb_func_start sub_80A0090 -sub_80A0090: @ 80A0090 - push {r4,lr} - adds r4, r0, 0 - bl sub_809FEB8 - adds r0, r4, 0 - bl sub_809FF64 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A0090 - - thumb_func_start sub_80A00A4 -sub_80A00A4: @ 80A00A4 - push {lr} - movs r0, 0xB - movs r1, 0x4 - movs r2, 0x13 - movs r3, 0x5 - bl MenuZeroFillWindowRect - movs r0, 0x10 - movs r1, 0x7 - movs r2, 0x15 - movs r3, 0x8 - bl MenuZeroFillWindowRect - movs r0, 0x11 - movs r1, 0x9 - movs r2, 0x15 - movs r3, 0xC - bl MenuZeroFillWindowRect - movs r0, 0x1B - movs r1, 0x7 - movs r2, 0x1D - movs r3, 0xC - bl MenuZeroFillWindowRect - movs r0, 0x16 - movs r1, 0xE - movs r2, 0x1C - movs r3, 0xF - bl MenuZeroFillWindowRect - movs r0, 0x17 - movs r1, 0x10 - movs r2, 0x1C - movs r3, 0x11 - bl MenuZeroFillWindowRect - pop {r0} - bx r0 - thumb_func_end sub_80A00A4 - - thumb_func_start sub_80A00F4 -sub_80A00F4: @ 80A00F4 - push {lr} - lsls r0, 24 - lsrs r1, r0, 24 - ldr r2, _080A012C @ =gSharedMem + 0x18000 - adds r0, r2, 0 - adds r0, 0x7C - ldrh r0, [r0] - cmp r0, 0 - bne _080A010A - cmp r1, 0x4 - beq _080A0150 -_080A010A: - ldrb r0, [r2, 0xB] - cmp r0, 0x2 - bne _080A0138 - ldr r0, _080A0130 @ =gOtherText_Power2 - movs r1, 0xD - movs r2, 0x1 - movs r3, 0xF - bl sub_80A1FF8 - ldr r0, _080A0134 @ =gOtherText_Accuracy2 - movs r1, 0xD - movs r2, 0x1 - movs r3, 0x11 - bl sub_80A1FF8 - b _080A0150 - .align 2, 0 -_080A012C: .4byte gSharedMem + 0x18000 -_080A0130: .4byte gOtherText_Power2 -_080A0134: .4byte gOtherText_Accuracy2 -_080A0138: - ldr r0, _080A0154 @ =gOtherText_Appeal2 - movs r1, 0xD - movs r2, 0x1 - movs r3, 0xF - bl sub_80A1FF8 - ldr r0, _080A0158 @ =gOtherText_Jam2 - movs r1, 0xD - movs r2, 0x1 - movs r3, 0x11 - bl sub_80A1FF8 -_080A0150: - pop {r0} - bx r0 - .align 2, 0 -_080A0154: .4byte gOtherText_Appeal2 -_080A0158: .4byte gOtherText_Jam2 - thumb_func_end sub_80A00F4 - - thumb_func_start sub_80A015C -sub_80A015C: @ 80A015C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r8, r0 - movs r7, 0 -_080A0168: - mov r0, r8 - adds r1, r7, 0 - bl sub_809F760 - lsls r0, 16 - lsrs r6, r0, 16 - mov r0, r8 - adds r1, r7, 0 - bl sub_809F798 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - cmp r6, 0 - bne _080A01B8 - adds r0, r7, 0 - movs r1, 0x1 - bl sub_80A1918 - lsls r4, r7, 25 - movs r0, 0x80 - lsls r0, 19 - adds r4, r0 - lsrs r4, 24 - ldr r0, _080A01B0 @ =gOtherText_OneDash - movs r1, 0xD - movs r2, 0xF - adds r3, r4, 0 - bl sub_80A1FF8 - ldr r0, _080A01B4 @ =gOtherText_TwoDashes - movs r1, 0x1A - adds r2, r4, 0 - bl MenuPrint - b _080A0276 - .align 2, 0 -_080A01B0: .4byte gOtherText_OneDash -_080A01B4: .4byte gOtherText_TwoDashes -_080A01B8: - ldr r0, _080A01E0 @ =gSharedMem + 0x18000 - ldrb r0, [r0, 0xB] - cmp r0, 0x2 - bne _080A01E8 - ldr r1, _080A01E4 @ =gBattleMoves - lsls r0, r6, 1 - adds r0, r6 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x2] - lsls r4, r7, 1 - adds r2, r4, 0x4 - lsls r2, 27 - lsrs r2, 24 - movs r1, 0x57 - adds r3, r7, 0 - bl sub_80A198C - b _080A020C - .align 2, 0 -_080A01E0: .4byte gSharedMem + 0x18000 -_080A01E4: .4byte gBattleMoves -_080A01E8: - ldr r1, _080A0290 @ =gContestMoves - lsls r0, r6, 3 - adds r0, r1 - ldrb r0, [r0, 0x1] - lsls r0, 29 - lsrs r0, 5 - movs r1, 0x90 - lsls r1, 21 - adds r0, r1 - lsrs r0, 24 - lsls r4, r7, 1 - adds r2, r4, 0x4 - lsls r2, 27 - lsrs r2, 24 - movs r1, 0x57 - adds r3, r7, 0 - bl sub_80A198C -_080A020C: - movs r0, 0xD - muls r0, r6 - ldr r1, _080A0294 @ =gMoveNames - adds r0, r1 - adds r5, r4, 0x4 - lsls r5, 24 - lsrs r5, 24 - movs r1, 0xD - movs r2, 0xF - adds r3, r5, 0 - bl sub_80A1FF8 - movs r0, 0x1 - movs r1, 0x18 - adds r2, r5, 0 - bl GetStringCenterAlignXOffset - mov r0, r8 - movs r1, 0x15 - bl GetMonData - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r6, 0 - adds r2, r7, 0 - bl CalculatePPWithBonus - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, _080A0298 @ =gStringVar1 - adds r0, r1, 0 - mov r1, r9 - movs r2, 0xE - movs r3, 0x1 - bl sub_8072C14 - adds r1, r0, 0 - movs r0, 0xBA - strb r0, [r1] - adds r1, 0x1 - adds r0, r1, 0 - adds r1, r4, 0 - movs r2, 0x20 - movs r3, 0x1 - bl sub_8072C14 - ldr r0, _080A0298 @ =gStringVar1 - movs r1, 0x19 - adds r2, r5, 0 - bl MenuPrint -_080A0276: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0x3 - bhi _080A0282 - b _080A0168 -_080A0282: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A0290: .4byte gContestMoves -_080A0294: .4byte gMoveNames -_080A0298: .4byte gStringVar1 - thumb_func_end sub_80A015C - - thumb_func_start sub_80A029C -sub_80A029C: @ 80A029C - push {r4,r5,lr} - ldr r1, _080A02B8 @ =gSharedMem + 0x18000 - adds r4, r1, 0 - adds r4, 0x7C - ldrh r0, [r4] - cmp r0, 0 - bne _080A02C0 - ldr r0, _080A02BC @ =gOtherText_CancelNoTerminator - movs r1, 0xD - movs r2, 0xF - movs r3, 0xC - bl sub_80A1FF8 - b _080A037E - .align 2, 0 -_080A02B8: .4byte gSharedMem + 0x18000 -_080A02BC: .4byte gOtherText_CancelNoTerminator -_080A02C0: - ldrh r5, [r4] - ldrb r0, [r1, 0xB] - cmp r0, 0x2 - bne _080A02E4 - ldr r1, _080A02E0 @ =gBattleMoves - lsls r4, r5, 1 - adds r0, r4, r5 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x2] - movs r1, 0x57 - movs r2, 0x60 - movs r3, 0x4 - bl sub_80A198C - b _080A0304 - .align 2, 0 -_080A02E0: .4byte gBattleMoves -_080A02E4: - ldr r1, _080A0320 @ =gContestMoves - lsls r0, r5, 3 - adds r0, r1 - ldrb r0, [r0, 0x1] - lsls r0, 29 - lsrs r0, 5 - movs r1, 0x90 - lsls r1, 21 - adds r0, r1 - lsrs r0, 24 - movs r1, 0x57 - movs r2, 0x60 - movs r3, 0x4 - bl sub_80A198C - lsls r4, r5, 1 -_080A0304: - ldr r0, _080A0324 @ =gSharedMem + 0x18000 - ldrb r0, [r0, 0xB] - cmp r0, 0x2 - bne _080A032C - movs r0, 0xD - muls r0, r5 - ldr r1, _080A0328 @ =gMoveNames - adds r0, r1 - movs r1, 0xA - movs r2, 0xF - movs r3, 0xC - bl sub_80A1FF8 - b _080A033E - .align 2, 0 -_080A0320: .4byte gContestMoves -_080A0324: .4byte gSharedMem + 0x18000 -_080A0328: .4byte gMoveNames -_080A032C: - movs r0, 0xD - muls r0, r5 - ldr r1, _080A0384 @ =gMoveNames - adds r0, r1 - movs r1, 0x9 - movs r2, 0xF - movs r3, 0xC - bl sub_80A1FF8 -_080A033E: - movs r0, 0x1 - movs r1, 0x18 - movs r2, 0xC - bl GetStringCenterAlignXOffset - ldr r2, _080A0388 @ =gStringVar1 - ldr r1, _080A038C @ =gBattleMoves - adds r0, r4, r5 - lsls r0, 2 - adds r0, r1 - ldrb r4, [r0, 0x4] - adds r0, r2, 0 - adds r1, r4, 0 - movs r2, 0xE - movs r3, 0x1 - bl sub_8072C14 - adds r2, r0, 0 - movs r0, 0xBA - strb r0, [r2] - adds r2, 0x1 - adds r0, r2, 0 - adds r1, r4, 0 - movs r2, 0x20 - movs r3, 0x1 - bl sub_8072C14 - ldr r0, _080A0388 @ =gStringVar1 - movs r1, 0x19 - movs r2, 0xC - bl MenuPrint -_080A037E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A0384: .4byte gMoveNames -_080A0388: .4byte gStringVar1 -_080A038C: .4byte gBattleMoves - thumb_func_end sub_80A029C - - thumb_func_start sub_80A0390 -sub_80A0390: @ 80A0390 - push {r4,lr} - movs r4, 0 -_080A0394: - lsls r3, r4, 1 - adds r1, r3, 0x4 - lsls r1, 24 - lsrs r1, 24 - adds r3, 0x5 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0xF - movs r2, 0x1C - bl MenuZeroFillWindowRect - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _080A0394 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80A0390 - - thumb_func_start sub_80A03BC -sub_80A03BC: @ 80A03BC - push {lr} - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0x4 - beq _080A03D0 - bl sub_809F760 - lsls r0, 16 - lsrs r1, r0, 16 - b _080A03E0 -_080A03D0: - ldr r0, _080A03E8 @ =gSharedMem + 0x18000 - adds r2, r0, 0 - adds r2, 0x7C - ldrh r0, [r2] - ldr r1, _080A03EC @ =0x0000ffff - cmp r0, 0 - beq _080A03E0 - adds r1, r0, 0 -_080A03E0: - adds r0, r1, 0 - pop {r1} - bx r1 - .align 2, 0 -_080A03E8: .4byte gSharedMem + 0x18000 -_080A03EC: .4byte 0x0000ffff - thumb_func_end sub_80A03BC - - thumb_func_start sub_80A03F0 -sub_80A03F0: @ 80A03F0 - push {lr} - ldrb r1, [r1] - bl sub_80A03BC - lsls r0, 16 - lsrs r1, r0, 16 - ldr r0, _080A0414 @ =gSharedMem + 0x18000 - ldrb r0, [r0, 0xB] - cmp r0, 0x2 - bne _080A041C - adds r0, r1, 0 - bl sub_80A04CC - ldr r0, _080A0418 @ =0x0000ffff - bl sub_80A057C - b _080A0422 - .align 2, 0 -_080A0414: .4byte gSharedMem + 0x18000 -_080A0418: .4byte 0x0000ffff -_080A041C: - adds r0, r1, 0 - bl sub_80A057C -_080A0422: - pop {r0} - bx r0 - thumb_func_end sub_80A03F0 - - thumb_func_start sub_80A0428 -sub_80A0428: @ 80A0428 - push {r4-r6,lr} - adds r5, r0, 0 - adds r6, r1, 0 - ldrb r1, [r6] - bl sub_80A03BC - lsls r0, 16 - lsrs r4, r0, 16 - movs r0, 0xB - movs r1, 0xF - movs r2, 0x1C - movs r3, 0x12 - bl MenuZeroFillWindowRect - ldr r0, _080A0454 @ =gSharedMem + 0x18000 - ldrb r0, [r0, 0xB] - cmp r0, 0x2 - bne _080A0458 - adds r0, r4, 0 - bl sub_80A046C - b _080A045E - .align 2, 0 -_080A0454: .4byte gSharedMem + 0x18000 -_080A0458: - adds r0, r4, 0 - bl sub_80A0498 -_080A045E: - adds r0, r5, 0 - adds r1, r6, 0 - bl sub_80A03F0 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80A0428 - - thumb_func_start sub_80A046C -sub_80A046C: @ 80A046C - push {lr} - lsls r0, 16 - lsrs r1, r0, 16 - ldr r0, _080A0490 @ =0x0000ffff - cmp r1, r0 - beq _080A048A - ldr r0, _080A0494 @ =gMoveDescriptions - subs r1, 0x1 - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - movs r1, 0xB - movs r2, 0xF - bl MenuPrint -_080A048A: - pop {r0} - bx r0 - .align 2, 0 -_080A0490: .4byte 0x0000ffff -_080A0494: .4byte gMoveDescriptions - thumb_func_end sub_80A046C - - thumb_func_start sub_80A0498 -sub_80A0498: @ 80A0498 - push {lr} - lsls r0, 16 - lsrs r3, r0, 16 - ldr r0, _080A04C0 @ =0x0000ffff - cmp r3, r0 - beq _080A04BC - ldr r2, _080A04C4 @ =gUnknown_083CADD4 - ldr r1, _080A04C8 @ =gContestMoves - lsls r0, r3, 3 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - movs r1, 0xB - movs r2, 0xF - bl MenuPrint -_080A04BC: - pop {r0} - bx r0 - .align 2, 0 -_080A04C0: .4byte 0x0000ffff -_080A04C4: .4byte gUnknown_083CADD4 -_080A04C8: .4byte gContestMoves - thumb_func_end sub_80A0498 - - thumb_func_start sub_80A04CC -sub_80A04CC: @ 80A04CC - push {r4,r5,lr} - lsls r0, 16 - lsrs r4, r0, 16 - ldr r0, _080A0504 @ =0x0000ffff - cmp r4, r0 - beq _080A0572 - ldr r2, _080A0508 @ =gBattleMoves - lsls r1, r4, 1 - adds r0, r1, r4 - lsls r0, 2 - adds r2, r0, r2 - ldrb r0, [r2, 0x1] - adds r5, r1, 0 - cmp r0, 0x1 - bhi _080A0514 - ldr r0, _080A050C @ =gStringVar1 - ldr r1, _080A0510 @ =gOtherText_ThreeDashes2 - movs r2, 0x15 - movs r3, 0x1 - bl sub_8072C74 - ldr r0, _080A050C @ =gStringVar1 - movs r1, 0x7 - movs r2, 0xF - bl MenuPrint - b _080A052A - .align 2, 0 -_080A0504: .4byte 0x0000ffff -_080A0508: .4byte gBattleMoves -_080A050C: .4byte gStringVar1 -_080A0510: .4byte gOtherText_ThreeDashes2 -_080A0514: - ldr r0, _080A0550 @ =gStringVar1 - ldrb r1, [r2, 0x1] - movs r2, 0x15 - movs r3, 0x1 - bl sub_8072C14 - ldr r0, _080A0550 @ =gStringVar1 - movs r1, 0x7 - movs r2, 0xF - bl MenuPrint -_080A052A: - ldr r0, _080A0554 @ =gBattleMoves - adds r1, r5, r4 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x3] - cmp r0, 0 - bne _080A055C - ldr r0, _080A0550 @ =gStringVar1 - ldr r1, _080A0558 @ =gOtherText_ThreeDashes2 - movs r2, 0x15 - movs r3, 0x1 - bl sub_8072C74 - ldr r0, _080A0550 @ =gStringVar1 - movs r1, 0x7 - movs r2, 0x11 - bl MenuPrint - b _080A0572 - .align 2, 0 -_080A0550: .4byte gStringVar1 -_080A0554: .4byte gBattleMoves -_080A0558: .4byte gOtherText_ThreeDashes2 -_080A055C: - ldr r0, _080A0578 @ =gStringVar1 - ldrb r1, [r1, 0x3] - movs r2, 0x15 - movs r3, 0x1 - bl sub_8072C14 - ldr r0, _080A0578 @ =gStringVar1 - movs r1, 0x7 - movs r2, 0x11 - bl MenuPrint -_080A0572: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080A0578: .4byte gStringVar1 - thumb_func_end sub_80A04CC - - thumb_func_start sub_80A057C -sub_80A057C: @ 80A057C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 16 - lsrs r5, r0, 16 - ldr r0, _080A0648 @ =0x06006800 - mov r8, r0 - ldr r0, _080A064C @ =0x0000ffff - cmp r5, r0 - beq _080A063A - ldr r1, _080A0650 @ =gContestEffects - ldr r2, _080A0654 @ =gContestMoves - lsls r3, r5, 3 - adds r0, r3, r2 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldrb r4, [r0, 0x1] - mov r10, r2 - mov r9, r3 - cmp r4, 0xFF - beq _080A05B8 - adds r0, r4, 0 - movs r1, 0xA - bl __udivsi3 - lsls r0, 24 - lsrs r4, r0, 24 -_080A05B8: - movs r2, 0 - movs r7, 0x3 - movs r6, 0xF3 - lsls r6, 2 -_080A05C0: - ldr r3, _080A0658 @ =0x00001039 - cmp r4, 0xFF - beq _080A05CC - cmp r2, r4 - bcs _080A05CC - adds r3, 0x1 -_080A05CC: - lsrs r0, r2, 2 - lsls r0, 5 - adds r1, r2, 0 - ands r1, r7 - adds r1, r0 - lsls r1, 1 - add r1, r8 - adds r1, r6 - strh r3, [r1] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x7 - bls _080A05C0 - ldr r0, _080A064C @ =0x0000ffff - cmp r5, r0 - beq _080A063A - mov r0, r9 - add r0, r10 - ldrb r0, [r0] - lsls r0, 2 - ldr r1, _080A0650 @ =gContestEffects - adds r0, r1 - ldrb r4, [r0, 0x2] - cmp r4, 0xFF - beq _080A060C - adds r0, r4, 0 - movs r1, 0xA - bl __udivsi3 - lsls r0, 24 - lsrs r4, r0, 24 -_080A060C: - movs r2, 0 - movs r6, 0x3 - ldr r5, _080A065C @ =0x0000044c -_080A0612: - ldr r3, _080A0660 @ =0x0000103d - cmp r4, 0xFF - beq _080A061E - cmp r2, r4 - bcs _080A061E - subs r3, 0x1 -_080A061E: - lsrs r0, r2, 2 - lsls r0, 5 - adds r1, r2, 0 - ands r1, r6 - adds r1, r0 - lsls r1, 1 - add r1, r8 - adds r1, r5 - strh r3, [r1] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x7 - bls _080A0612 -_080A063A: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080A0648: .4byte 0x06006800 -_080A064C: .4byte 0x0000ffff -_080A0650: .4byte gContestEffects -_080A0654: .4byte gContestMoves -_080A0658: .4byte 0x00001039 -_080A065C: .4byte 0x0000044c -_080A0660: .4byte 0x0000103d - thumb_func_end sub_80A057C - .align 2, 0 @ Don't pad with nop. diff --git a/data-de/text/contest_strings.inc b/data-de/text/contest_strings.inc index fd7c00e5c..19cfe330f 100644 --- a/data-de/text/contest_strings.inc +++ b/data-de/text/contest_strings.inc @@ -148,7 +148,7 @@ ContestString_DescStopExcitement: @ 83CADA1 .string "terung des Publikums.$" .align 2 -gUnknown_083CADD4:: @ 83CADD4 +gContestEffectStrings:: @ 83CADD4 .4byte ContestString_DescHighlyAppealing .4byte ContestString_DescStartled1 .4byte ContestString_DescGreatLock diff --git a/data/text/contest_strings.inc b/data/text/contest_strings.inc index 4c4f37fc4..94366cc41 100644 --- a/data/text/contest_strings.inc +++ b/data/text/contest_strings.inc @@ -96,7 +96,7 @@ ContestString_DescStopExcitement: .string "Temporarily stops the\ncrowd from growing excited.$" .align 2 -gUnknown_083CADD4:: @ 83CADD4 +gContestEffectStrings:: @ 83CADD4 .4byte ContestString_DescHighlyAppealing .4byte ContestString_DescStartled1 .4byte ContestString_DescGreatLock diff --git a/include/learn_move.h b/include/learn_move.h index 85fbf046e..7a05ea60b 100644 --- a/include/learn_move.h +++ b/include/learn_move.h @@ -1,6 +1,21 @@ #ifndef GUARD_LEARN_MOVE_H #define GUARD_LEARN_MOVE_H +struct ContestMove +{ + u8 effect; + u8 contestCategory:3; + u8 comboStarterId; + u8 comboMoves[4]; +}; + +struct ContestEffect +{ + u8 effectType; + u8 appeal; + u8 jam; +}; + void sub_8132670(void); #endif // GUARD_LEARN_MOVE_H diff --git a/include/party_menu.h b/include/party_menu.h index 304389e78..3998054da 100644 --- a/include/party_menu.h +++ b/include/party_menu.h @@ -216,5 +216,6 @@ void PartyMenuTryGiveMonMail(u8 taskId, TaskFunc func); void sub_806D668(u8 monIndex); void TaughtMove(u8 taskId); void StopTryingToTeachMove_806F588(u8 taskId); +bool8 IsHMMove(u16 move); #endif // GUARD_PARTY_MENU_H diff --git a/include/pokemon.h b/include/pokemon.h index 20a2d6d43..a1c30f1f3 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -578,6 +578,7 @@ void MonRestorePP(struct Pokemon *); u8 *sub_803F378(u16 itemId); +u16 SpeciesToPokedexNum(u16 species); u16 NationalPokedexNumToSpecies(u16 nationalNum); u16 NationalToHoennOrder(u16); u16 SpeciesToNationalPokedexNum(u16); @@ -611,6 +612,7 @@ const struct CompressedSpritePalette *GetMonSpritePalStruct(struct Pokemon *); bool8 IsPokeSpriteNotFlipped(u16); u8 GetLevelUpMovesBySpecies(u16, u16 *); u8 TryIncrementMonLevel(struct Pokemon *); +bool8 IsShiny(struct Pokemon *mon); struct Sprite *sub_80F7920(u16, u16, const u16 *); diff --git a/src/pokemon/learn_move.c b/src/pokemon/learn_move.c index 55aac840f..2ba708a97 100644 --- a/src/pokemon/learn_move.c +++ b/src/pokemon/learn_move.c @@ -4,6 +4,7 @@ #include "main.h" #include "menu.h" #include "menu_cursor.h" +#include "learn_move.h" #include "palette.h" #include "pokemon.h" #include "overworld.h" @@ -22,26 +23,11 @@ extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8005; extern u8 gTileBuffer[]; -struct ContestMove -{ - u8 effect; - u8 contestCategory:3; - u8 comboStarterId; - u8 comboMoves[4]; -}; - -struct ContestEffect -{ - u8 effectType; - u8 appeal; - u8 jam; -}; - extern const struct ContestMove gContestMoves[]; extern const struct ContestEffect gContestEffects[]; extern const struct WindowConfig gWindowConfig_81E6CE4; extern const struct WindowConfig gWindowConfig_81E7240; -extern const u8 *const gUnknown_083CADD4[]; +extern const u8 *const gContestEffectStrings[]; extern const u8 *const gMoveDescriptions[]; extern const u8 gTypeNames[][7]; extern const u8 *const gUnknown_083CAF70[]; @@ -1039,7 +1025,7 @@ void sub_8133AEC(bool8 contestInfo, int unused) gSprites[sLearnMoveStruct->spriteIDs[i + 4]].invisible = FALSE; for (i = 0; i < 3; i++) PrintMoveInfo(moveId, gUnknown_08402E24[gUnknown_08402E3D[i]]); - sub_8072AB0(gUnknown_083CADD4[gContestMoves[moveId].effect], 0x58, 0x48, 0x90, 32, 1); + sub_8072AB0(gContestEffectStrings[gContestMoves[moveId].effect], 0x58, 0x48, 0x90, 32, 1); } else { diff --git a/src/pokemon/pokemon_summary_screen.c b/src/pokemon/pokemon_summary_screen.c index 8402bcf16..edbd2998b 100644 --- a/src/pokemon/pokemon_summary_screen.c +++ b/src/pokemon/pokemon_summary_screen.c @@ -1,10 +1,14 @@ #include "global.h" +#include "battle.h" #include "pokemon_summary_screen.h" #include "data2.h" +#include "decompress.h" #include "ewram.h" #include "item.h" #include "items.h" +#include "learn_move.h" #include "link.h" +#include "main.h" #include "menu.h" #include "menu_helpers.h" #include "overworld.h" @@ -24,7 +28,8 @@ struct SummaryScreenStruct { - /*0x00*/ u8 filler0[9]; + /*0x00*/ u8 filler0[8]; + /*0x08*/ u8 unk8; /*0x09*/ u8 unk9; /*0x0A*/ u8 fillerA; /*0x0B*/ u8 unkB; @@ -38,26 +43,66 @@ struct SummaryScreenStruct /*0x77*/ u8 filler77[0x2]; /*0x79*/ u8 unk79; /*0x7A*/ u8 unk7A; - /*0x7B*/ u8 filler7B[0x3]; + /*0x7B*/ u8 filler7B; + /*0x7C*/ u16 unk7C; /*0x7E*/ u8 unk7E; /*0x7F*/ u8 unk7F; }; #define ewramSS (*(struct SummaryScreenStruct *)(gSharedMem + 0x18000)) +extern u8 sub_80A1808(struct Pokemon *); +extern void sub_80A1F98(s32, u8, u8, u8, u8, u16, s32); +static void sub_80A0958(struct Pokemon *); +static void PokemonSummaryScreen_PrintTrainerMemo(struct Pokemon *, u8, u8); +static void PokemonSummaryScreen_PrintEggTrainerMemo(struct Pokemon *, u8, u8); +static void sub_80A1EF8(const u8 *, u8, u8, u16, s32); +static void sub_80A1F48(const u8 *, u8, u8, u8, u16); +static void PrintHeldItemName(u16, u8, u8); +static void PrintNumRibbons(struct Pokemon *); +static void DrawExperienceProgressBar(struct Pokemon *, u8, u8); + +extern void SummaryScreenHandleLeftRightInput(u8, s8); +extern void sub_809E8F0(u8, s8); +extern void sub_809E260(u8); +extern void sub_809F814(u8); +extern void sub_80A1654(s8, u8); +extern void sub_80A1488(s8, u8); +extern void GetStringCenterAlignXOffsetWithLetterSpacing(u8, u8, u8, u8); +extern bool8 sub_809FA94(struct Pokemon *); +extern void sub_809FC34(struct Pokemon *); +extern void sub_809FC0C(void); +extern void sub_809FF64(struct Pokemon *); +extern void sub_809FEB8(void); +extern void sub_80A1918(u8, u8); +extern void sub_80A198C(u8, u8, u8, u8); +extern u16 GetMonMove(struct Pokemon *, u8); +extern void sub_80A04CC(u16); +extern void sub_80A057C(u16); +extern void sub_80A0498(u16); +extern void sub_80A046C(u16); +extern void sub_80A03F0(struct Pokemon *, u8 *); +extern u16 sub_80A03BC(struct Pokemon *, u8); extern void sub_80A20A8(u8); extern u8 ball_number_to_ball_processing_index(u16); extern void sub_809F678(struct Pokemon *); extern void sub_80A1BC0(struct Sprite *sprite); extern void sub_80A1888(struct Sprite *); -extern void sub_80A00F4(s16); -extern void sub_80A0428(struct Pokemon *, s16*); +extern void sub_80A0428(struct Pokemon *, u8 *); extern void sub_80A18E4(u8); extern void GetStringCenterAlignXOffset(u8, u8, u8); extern u8 *sub_80A1E58(u8 *, u8); static void sub_80A0A2C(struct Pokemon *, u8, u8); extern void sub_80A1FF8(const u8 *, u8, u8, u8); +extern const u16 gUnknown_083C157E[]; +extern const u16 gUnknown_083C157C[]; +extern const u8 gAbilityNames[][13]; +extern const u8 * const gAbilityDescriptions[]; +extern const u8 * const gMoveDescriptions[]; +extern const u8 * const gContestEffectStrings[]; +extern const struct ContestMove gContestMoves[]; +extern const struct ContestEffect gContestEffects[]; extern TaskFunc gUnknown_03005CF0; extern const u8 gUnknown_083C15BC[]; extern struct Sprite *gUnknown_020384F4; @@ -75,6 +120,1093 @@ extern const u8 gUnknown_083C15AE[]; extern const u8 gUnknown_083C15B4[]; extern const u8 *const gUnknown_083C1068[]; + +u8 sub_809F6B4(struct Pokemon *mon, u8 *b) +{ + u16 species; + u32 personality; + u32 otId; + const struct CompressedSpritePalette *palette; + + switch (*b) + { + default: + return sub_80A1808(mon); + case 0: + species = GetMonData(mon, MON_DATA_SPECIES2); + personality = GetMonData(mon, MON_DATA_PERSONALITY); + + HandleLoadSpecialPokePic( + &gMonFrontPicTable[species], + gMonFrontPicCoords[species].coords, + gMonFrontPicCoords[species].y_offset, + ewram_addr, + gUnknown_081FAF4C[1], + species, + personality); + *b += 1; + return 0xFF; + case 1: + species = GetMonData(mon, MON_DATA_SPECIES2); + personality = GetMonData(mon, MON_DATA_PERSONALITY); + otId = GetMonData(mon, MON_DATA_OT_ID); + + palette = GetMonSpritePalStructFromOtIdPersonality(species, otId, personality); + LoadCompressedObjectPalette(palette); + GetMonSpriteTemplate_803C56C(palette->tag, 1); + *b += 1; + return 0xFF; + } +} + +u16 GetMonMove(struct Pokemon *mon, u8 moveId) +{ + switch (moveId) + { + case 0: + return GetMonData(mon, MON_DATA_MOVE1); + case 1: + return GetMonData(mon, MON_DATA_MOVE2); + case 2: + return GetMonData(mon, MON_DATA_MOVE3); + default: + return GetMonData(mon, MON_DATA_MOVE4); + } +} + +static u16 GetMonMovePP(struct Pokemon *mon, u8 moveId) +{ + switch (moveId) + { + case 0: + return GetMonData(mon, MON_DATA_PP1); + case 1: + return GetMonData(mon, MON_DATA_PP2); + case 2: + return GetMonData(mon, MON_DATA_PP3); + default: + return GetMonData(mon, MON_DATA_PP4); + } +} + +bool8 sub_809F7D0() +{ + struct Pokemon mon; + u16 move; + + sub_809F678(&mon); + move = GetMonMove(&mon, ewramSS.unk79); + if (IsHMMove(move) == TRUE && ewramSS.unk8 != 3) + { + return FALSE; + } + + return TRUE; +} + +#ifdef NONMATCHING // The two "ewramSS.unk79 = taskData[15];" lines have small register differences. +void sub_809F814(u8 taskId) +{ + u16 var1; + + s16 *taskData = gTasks[taskId].data; + + var1 = taskData[14]; + if (taskData[14] < 4) + { + taskData[14] = var1 + 1; + } + else if (gMain.newKeys & DPAD_UP) + { + gTasks[taskId].func = sub_809E260; + taskData[0] = 4; + taskData[13] = 1; + ewramSS.unk79 = taskData[15]; + sub_809E8F0(taskId, -1); + } + else if (gMain.newKeys & DPAD_DOWN) + { + gTasks[taskId].func = sub_809E260; + taskData[0] = 4; + taskData[13] = 1; + ewramSS.unk79 = taskData[15]; + sub_809E8F0(taskId, 1); + } + else if ((gMain.newKeys & DPAD_LEFT) || sub_80F9284() == 1) + { + if (ewramSS.unkB != 2) + { + if (ewramSS.unkB == 3 && (ewramSS.unk79 != 4 || ewramSS.unk7C != 0)) + { + MenuZeroFillWindowRect(0, 14, 9, 18); + } + + gTasks[taskId].func = sub_809E260; + + SummaryScreenHandleLeftRightInput(taskId, -1); + sub_80A1488(1, taskData[15]); + sub_80A1654(1, taskData[15]); + } + } + else if ((gMain.newKeys & DPAD_RIGHT) || sub_80F9284() == 2) + { + if (ewramSS.unkB != ewramSS.unk76) + { + if (ewramSS.unkB == 2 && (ewramSS.unk79 != 4 || ewramSS.unk7C != 0)) + { + MenuZeroFillWindowRect(0, 14, 9, 18); + } + + gTasks[taskId].func = sub_809E260; + + SummaryScreenHandleLeftRightInput(taskId, 1); + sub_80A1488(1, taskData[15]); + sub_80A1654(1, taskData[15]); + } + } + else if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)) + { + sub_80A1488(2, taskData[15]); + sub_80A1654(2, taskData[15]); + + gTasks[taskId].func = sub_809E260; + } +} +#else +__attribute__((naked)) +void sub_809F814(u8 taskId) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r8\n\ + push {r7}\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + lsls r0, r5, 2\n\ + adds r0, r5\n\ + lsls r6, r0, 3\n\ + ldr r0, _0809F83C @ =gTasks + 0x8\n\ + mov r8, r0\n\ + adds r4, r6, r0\n\ + ldrh r1, [r4, 0x1C]\n\ + movs r2, 0x1C\n\ + ldrsh r0, [r4, r2]\n\ + cmp r0, 0x3\n\ + bgt _0809F840\n\ + adds r0, r1, 0x1\n\ + strh r0, [r4, 0x1C]\n\ + b _0809F9C0\n\ + .align 2, 0\n\ +_0809F83C: .4byte gTasks + 0x8\n\ +_0809F840:\n\ + ldr r7, _0809F874 @ =gMain\n\ + ldrh r1, [r7, 0x2E]\n\ + movs r0, 0x40\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0809F880\n\ + mov r0, r8\n\ + subs r0, 0x8\n\ + adds r0, r6, r0\n\ + ldr r1, _0809F878 @ =sub_809E260\n\ + str r1, [r0]\n\ + movs r0, 0x4\n\ + strh r0, [r4]\n\ + movs r0, 0x1\n\ + strh r0, [r4, 0x1A]\n\ + ldr r2, _0809F87C @ =gSharedMem + 0x18000\n\ + ldrh r0, [r4, 0x1E]\n\ + adds r2, 0x79\n\ + strb r0, [r2]\n\ + movs r1, 0x1\n\ + negs r1, r1\n\ + adds r0, r5, 0\n\ + bl sub_809E8F0\n\ + b _0809F9C0\n\ + .align 2, 0\n\ +_0809F874: .4byte gMain\n\ +_0809F878: .4byte sub_809E260\n\ +_0809F87C: .4byte gSharedMem + 0x18000\n\ +_0809F880:\n\ + movs r0, 0x80\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0809F8B4\n\ + mov r0, r8\n\ + subs r0, 0x8\n\ + adds r0, r6, r0\n\ + ldr r1, _0809F8AC @ =sub_809E260\n\ + str r1, [r0]\n\ + movs r0, 0x4\n\ + strh r0, [r4]\n\ + movs r0, 0x1\n\ + strh r0, [r4, 0x1A]\n\ + ldr r2, _0809F8B0 @ =gSharedMem + 0x18000\n\ + ldrh r0, [r4, 0x1E]\n\ + adds r2, 0x79\n\ + strb r0, [r2]\n\ + adds r0, r5, 0\n\ + movs r1, 0x1\n\ + bl sub_809E8F0\n\ + b _0809F9C0\n\ + .align 2, 0\n\ +_0809F8AC: .4byte sub_809E260\n\ +_0809F8B0: .4byte gSharedMem + 0x18000\n\ +_0809F8B4:\n\ + movs r0, 0x20\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0809F8C8\n\ + bl sub_80F9284\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + bne _0809F918\n\ +_0809F8C8:\n\ + ldr r1, _0809F90C @ =gSharedMem + 0x18000\n\ + ldrb r0, [r1, 0xB]\n\ + cmp r0, 0x2\n\ + beq _0809F9C0\n\ + cmp r0, 0x3\n\ + bne _0809F8F4\n\ + adds r0, r1, 0\n\ + adds r0, 0x79\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x4\n\ + bne _0809F8E8\n\ + adds r0, r1, 0\n\ + adds r0, 0x7C\n\ + ldrh r0, [r0]\n\ + cmp r0, 0\n\ + beq _0809F8F4\n\ +_0809F8E8:\n\ + movs r0, 0\n\ + movs r1, 0xE\n\ + movs r2, 0x9\n\ + movs r3, 0x12\n\ + bl MenuZeroFillWindowRect\n\ +_0809F8F4:\n\ + ldr r1, _0809F910 @ =gTasks\n\ + lsls r0, r5, 2\n\ + adds r0, r5\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + ldr r1, _0809F914 @ =sub_809E260\n\ + str r1, [r0]\n\ + movs r1, 0x1\n\ + negs r1, r1\n\ + adds r0, r5, 0\n\ + b _0809F972\n\ + .align 2, 0\n\ +_0809F90C: .4byte gSharedMem + 0x18000\n\ +_0809F910: .4byte gTasks\n\ +_0809F914: .4byte sub_809E260\n\ +_0809F918:\n\ + ldrh r1, [r7, 0x2E]\n\ + movs r0, 0x10\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0809F92E\n\ + bl sub_80F9284\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x2\n\ + bne _0809F994\n\ +_0809F92E:\n\ + ldr r1, _0809F988 @ =gSharedMem + 0x18000\n\ + adds r2, r1, 0\n\ + adds r2, 0x76\n\ + ldrb r0, [r1, 0xB]\n\ + ldrb r2, [r2]\n\ + cmp r0, r2\n\ + beq _0809F9C0\n\ + cmp r0, 0x2\n\ + bne _0809F960\n\ + adds r0, r1, 0\n\ + adds r0, 0x79\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x4\n\ + bne _0809F954\n\ + adds r0, r1, 0\n\ + adds r0, 0x7C\n\ + ldrh r0, [r0]\n\ + cmp r0, 0\n\ + beq _0809F960\n\ +_0809F954:\n\ + movs r0, 0\n\ + movs r1, 0xE\n\ + movs r2, 0x9\n\ + movs r3, 0x12\n\ + bl MenuZeroFillWindowRect\n\ +_0809F960:\n\ + ldr r1, _0809F98C @ =gTasks\n\ + lsls r0, r5, 2\n\ + adds r0, r5\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + ldr r1, _0809F990 @ =sub_809E260\n\ + str r1, [r0]\n\ + adds r0, r5, 0\n\ + movs r1, 0x1\n\ +_0809F972:\n\ + bl SummaryScreenHandleLeftRightInput\n\ + ldrb r1, [r4, 0x1E]\n\ + movs r0, 0x1\n\ + bl sub_80A1488\n\ + ldrb r1, [r4, 0x1E]\n\ + movs r0, 0x1\n\ + bl sub_80A1654\n\ + b _0809F9C0\n\ + .align 2, 0\n\ +_0809F988: .4byte gSharedMem + 0x18000\n\ +_0809F98C: .4byte gTasks\n\ +_0809F990: .4byte sub_809E260\n\ +_0809F994:\n\ + ldrh r1, [r7, 0x2E]\n\ + movs r0, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _0809F9A6\n\ + movs r0, 0x2\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0809F9C0\n\ +_0809F9A6:\n\ + ldrb r1, [r4, 0x1E]\n\ + movs r0, 0x2\n\ + bl sub_80A1488\n\ + ldrb r1, [r4, 0x1E]\n\ + movs r0, 0x2\n\ + bl sub_80A1654\n\ + mov r0, r8\n\ + subs r0, 0x8\n\ + adds r0, r6, r0\n\ + ldr r1, _0809F9CC @ =sub_809E260\n\ + str r1, [r0]\n\ +_0809F9C0:\n\ + pop {r3}\n\ + mov r8, r3\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_0809F9CC: .4byte sub_809E260\n\ + .syntax divided\n"); +} +#endif // NONMATCHING + +void sub_809F9D0(u8 taskId, u8 b) +{ + s16 *taskData = gTasks[taskId].data; + taskData[14] = 0; + taskData[15] = b; + + sub_80A1488(-2, 4); + sub_80A1654(-2, 4); + MenuZeroFillWindowRect(11, 15, 28, 18); + MenuPrint(gOtherText_CantForgetHMs, 11, 15); + + gTasks[taskId].func = sub_809F814; +} + +u8 sub_809FA30(void) +{ + return ewramSS.unk7A; +} + +// void GetStringCenterAlignXOffsetWithLetterSpacing(u8 a, u8 b, u8 c, u8 d) +// { +// u16 *vramAddr = (u16 *)(VRAM + 0xF000); + +// vramAddr[(d * 32) + c] = (b * 0x1000) + (a * 2) + 0x200 + 0x80; +// vramAddr[(d * 32) + c + 32] = (b * 0x1000) + (a * 2) + 0x200 + 0x81; +// } +__attribute__((naked)) +void GetStringCenterAlignXOffsetWithLetterSpacing(u8 a, u8 b, u8 c, u8 d) +{ + asm(".syntax unified\n\ + push {r4,lr}\n\ + lsls r0, 24\n\ + lsls r1, 24\n\ + lsls r2, 24\n\ + lsls r3, 24\n\ + lsrs r2, 23\n\ + lsrs r3, 18\n\ + ldr r4, _0809FA70 @ =0x0600f000\n\ + adds r3, r4\n\ + adds r2, r3\n\ + lsrs r1, 12\n\ + lsrs r0, 23\n\ + movs r4, 0x80\n\ + lsls r4, 2\n\ + adds r3, r4, 0\n\ + adds r0, r3\n\ + adds r1, r0\n\ + adds r0, r1, 0\n\ + adds r0, 0x80\n\ + strh r0, [r2]\n\ + adds r2, 0x40\n\ + adds r1, 0x81\n\ + strh r1, [r2]\n\ + pop {r4}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_0809FA70: .4byte 0x0600f000\n\ + .syntax divided\n"); +} + +void GetStringCenterAlignXOffset(u8 a, u8 b, u8 c) +{ + GetStringCenterAlignXOffsetWithLetterSpacing(a, 15, b, c); +} + +bool8 sub_809FA94(struct Pokemon *mon) +{ + if (!IsShiny(mon)) + { + LoadPalette(gUnknown_083C157C, 4, 2); + return FALSE; + } + else + { + LoadPalette(gUnknown_083C157E, 4, 2); + return TRUE; + } +} + +void sub_809FAC8(struct Pokemon *mon) +{ + bool8 shinyDexNum; + u16 dexNum; + u8 *buffer; + + if (GetMonData(mon, MON_DATA_IS_EGG)) + { + MenuZeroFillWindowRect(1, 2, 4, 3); + MenuZeroFillWindowRect(3, 16, 9, 17); + MenuZeroFillWindowRect(0, 12, 11, 15); + GetMonNickname(mon, gStringVar1); + sub_80A1FF8(gStringVar1, 13, 3, 16); + LoadPalette(gUnknown_083C157C, 4, 2); + } + else + { + shinyDexNum = sub_809FA94(mon); + dexNum = SpeciesToPokedexNum(GetMonData(mon, MON_DATA_SPECIES)); + if (dexNum != 0xFFFF) + { + if (!shinyDexNum) + { + GetStringCenterAlignXOffset(2, 1, 2); + sub_80A1F98(dexNum, 13, 3, 2, 17, 16, 1); + } + else + { + GetStringCenterAlignXOffsetWithLetterSpacing(2, 8, 1, 2); + sub_80A1F98(dexNum, 8, 3, 2, 17, 16, 1); + } + } + else + { + MenuZeroFillWindowRect(1, 2, 4, 3); + } + + buffer = gStringVar1; + buffer = sub_80A1E58(buffer, 13); + buffer = GetMonNickname(mon, buffer); + buffer[0] = EXT_CTRL_CODE_BEGIN; + buffer[1] = 0x13; + buffer[2] = 0x3C; + buffer[3] = EOS; + MenuPrint(gStringVar1, 1, 12); + + sub_80A0958(mon); + } +} + +void sub_809FBE4() +{ + u8 i; + + for (i = 0; i < 28; i++) + { + sub_80A1918(i, 1); + } + + MenuZeroFillWindowRect(11, 4, 29, 18); +} + +void sub_809FC0C(void) +{ + MenuPrint(gOtherText_Type2, 11, 6); + GetStringCenterAlignXOffset(0, 22, 4); + GetStringCenterAlignXOffset(2, 23, 4); +} + +void sub_809FC34(struct Pokemon *mon) +{ + u8 i; + u8 *buffer; + u16 friendship; + u8 language; + u16 species; + u8 ability; + + for (i = 0; i < 5; i++) + { + sub_80A1918(i, 1); + } + + MenuZeroFillWindowRect(11, 9, 28, 12); + if (GetMonData(mon, MON_DATA_IS_EGG)) + { + buffer = gStringVar1; + buffer = sub_80A1E58(buffer, 13); + buffer = StringCopy(buffer, gOtherText_OriginalTrainer); + buffer = StringCopy(buffer, gOtherText_FiveQuestionsAndSlash); + buffer[0] = EXT_CTRL_CODE_BEGIN; + buffer[1] = 0x13; + buffer[2] = 0x4E; + buffer[3] = EOS; + MenuPrint(gStringVar1, 11, 4); + + sub_80A1EF8(gOtherText_FiveQuestionsAndSlash, 13, 193, 32, 1); + sub_80A198C(9, 120, 48, 0); + + friendship = GetMonData(mon, MON_DATA_FRIENDSHIP); + if (friendship < 6) + { + MenuPrint(gOtherText_EggAbout, 11, 9); + } + else if (friendship < 11) + { + MenuPrint(gOtherText_EggSoon, 11, 9); + } + else if (friendship < 41) + { + MenuPrint(gOtherText_EggSomeTime, 11, 9); + } + else + { + MenuPrint(gOtherText_EggLongTime, 11, 9); + } + + PokemonSummaryScreen_PrintEggTrainerMemo(mon, 11, 14); + } + else + { + GetMonData(mon, MON_DATA_OT_NAME, gStringVar2); + language = GetMonData(mon, MON_DATA_LANGUAGE); + ConvertInternationalString(gStringVar2, language); + + buffer = gStringVar1; + buffer = sub_80A1E58(buffer, 13); + buffer = StringCopy(buffer, gOtherText_OriginalTrainer); + + if (GetMonData(mon, MON_DATA_OT_GENDER) == MALE) + { + buffer = sub_80A1E58(buffer, 9); + } + else + { + buffer = sub_80A1E58(buffer, 10); + } + + buffer = StringCopy(buffer, gStringVar2); + buffer[0] = EXT_CTRL_CODE_BEGIN; + buffer[1] = 0x13; + buffer[2] = 0x4E; + buffer[3] = EOS; + MenuPrint(gStringVar1, 11, 4); + + sub_80A1F98(GetMonData(mon, MON_DATA_OT_ID) & 0xFFFF, 13, 5, 2, 193, 32, 1); + + species = GetMonData(mon, MON_DATA_SPECIES); + sub_80A198C(gBaseStats[species].type1, 120, 48, 0); + if (gBaseStats[species].type1 != gBaseStats[species].type2) + { + sub_80A198C(gBaseStats[species].type2, 160, 48, 1); + } + + ability = GetAbilityBySpecies(GetMonData(mon, MON_DATA_SPECIES), GetMonData(mon, MON_DATA_ALT_ABILITY)); + sub_80A1FF8(gAbilityNames[ability], 13, 11, 9); + MenuPrint(gAbilityDescriptions[ability], 11, 11); + + PokemonSummaryScreen_PrintTrainerMemo(mon, 11, 14); + } +} + +void sub_809FE6C(struct Pokemon *mon) +{ + sub_809FC0C(); + sub_809FC34(mon); +} + +void sub_809FE80(void) +{ + MenuZeroFillWindowRect(14, 4, 18, 5); + MenuZeroFillWindowRect(25, 4, 30, 5); + MenuZeroFillWindowRect(11, 9, 28, 12); + MenuZeroFillWindowRect(11, 14, 28, 17); +} + +void sub_809FEB8(void) +{ + sub_80A1FF8(gOtherText_ExpPoints, 13, 11, 14); + sub_80A1FF8(gOtherText_NextLv, 13, 11, 16); + MenuPrint(gOtherText_Terminator18, 21, 16); + + sub_80A1F48(gOtherText_HP, 13, 11, 7, 42); + sub_80A1F48(gOtherText_Attack, 13, 11, 9, 42); + sub_80A1F48(gOtherText_Defense, 13, 11, 11, 42); + sub_80A1F48(gOtherText_SpAtk, 13, 22, 7, 36); + sub_80A1F48(gOtherText_SpDef, 13, 22, 9, 36); + sub_80A1F48(gOtherText_Speed, 13, 22, 11, 36); +} + +void sub_809FF64(struct Pokemon *mon) +{ + u8 i; + u16 heldItem; + u8 *buffer; + + for (i = 0; i < 5; i++) + { + sub_80A1918(i, 1); + } + + heldItem = GetMonData(mon, MON_DATA_HELD_ITEM); + PrintHeldItemName(heldItem, 11, 4); + PrintNumRibbons(mon); + + buffer = gStringVar1; + + ConvertIntToDecimalString(buffer, GetMonData(mon, MON_DATA_EXP)); + MenuPrint_RightAligned(buffer, 29, 14); + DrawExperienceProgressBar(mon, 23, 16); + + ConvertIntToDecimalString(buffer, GetMonData(mon, MON_DATA_ATK)); + sub_8072BD8(buffer, 16, 9, 50); + + ConvertIntToDecimalString(buffer, GetMonData(mon, MON_DATA_DEF)); + sub_8072BD8(buffer, 16, 11, 50); + + ConvertIntToDecimalString(buffer, GetMonData(mon, MON_DATA_SPATK)); + sub_8072BD8(buffer, 27, 7, 18); + + ConvertIntToDecimalString(buffer, GetMonData(mon, MON_DATA_SPDEF)); + sub_8072BD8(buffer, 27, 9, 18); + + ConvertIntToDecimalString(buffer, GetMonData(mon, MON_DATA_SPEED)); + sub_8072BD8(buffer, 27, 11, 18); + + buffer = sub_8072C14(buffer, GetMonData(mon, MON_DATA_HP), 24, 1); + *buffer++ = CHAR_SLASH; + buffer = sub_8072C14(buffer, GetMonData(mon, MON_DATA_MAX_HP), 48, 1); + + MenuPrint_PixelCoords(gStringVar1, 126, 56, 1); +} + +void sub_80A0090(struct Pokemon *mon) +{ + sub_809FEB8(); + sub_809FF64(mon); +} + +void sub_80A00A4(void) +{ + MenuZeroFillWindowRect(11, 4, 19, 5); + MenuZeroFillWindowRect(16, 7, 21, 8); + MenuZeroFillWindowRect(17, 9, 21, 12); + MenuZeroFillWindowRect(27, 7, 29, 12); + MenuZeroFillWindowRect(22, 14, 28, 15); + MenuZeroFillWindowRect(23, 16, 28, 17); +} + +void sub_80A00F4(u8 a) +{ + if (ewramSS.unk7C != 0 || a != 4) + { + if (ewramSS.unkB == 2) + { + sub_80A1FF8(gOtherText_Power2, 13, 1, 15); + sub_80A1FF8(gOtherText_Accuracy2, 13, 1, 17); + } + else + { + sub_80A1FF8(gOtherText_Appeal2, 13, 1, 15); + sub_80A1FF8(gOtherText_Jam2, 13, 1, 17); + } + } +} + +void sub_80A015C(struct Pokemon *mon) +{ + u8 i; + u16 move; + u16 curPP; + u8 ppBonuses; + u8 maxPP; + u8 *buffer; + + for (i = 0; i < 4; i++) + { + move = GetMonMove(mon, i); + curPP = GetMonMovePP(mon, i); + + if (move == 0) + { + sub_80A1918(i, 1); + sub_80A1FF8(gOtherText_OneDash, 13, 15, (2 * i) + 4); + MenuPrint(gOtherText_TwoDashes, 26, (2 * i) + 4); + } + else + { + if (ewramSS.unkB == 2) + { + sub_80A198C(gBattleMoves[move].type, 87, ((2 * i) + 4) * 8, i); + } + else + { + sub_80A198C(gContestMoves[move].contestCategory + 18, 87, ((2 * i) + 4) * 8, i); + } + + sub_80A1FF8(gMoveNames[move], 13, 15, (2 * i) + 4); + GetStringCenterAlignXOffset(1, 24, (2 * i) + 4); + + ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES); + maxPP = CalculatePPWithBonus(move, ppBonuses, i); + + buffer = gStringVar1; + buffer = sub_8072C14(buffer, curPP, 14, 1); + *buffer++ = CHAR_SLASH; + sub_8072C14(buffer, maxPP, 32, 1); + MenuPrint(gStringVar1, 25, (2 * i) + 4); + } + } +} + +void sub_80A029C(void) +{ + u8 *buffer; + u16 move; + u8 pp; + + if (ewramSS.unk7C == 0) + { + sub_80A1FF8(gOtherText_CancelNoTerminator, 13, 15, 12); + return; + } + + move = ewramSS.unk7C; + + if (ewramSS.unkB == 2) + sub_80A198C(gBattleMoves[move].type, 87, 96, 4); + else + sub_80A198C(gContestMoves[move].contestCategory + 18, 87, 96, 4); + + if (ewramSS.unkB == 2) + sub_80A1FF8(gMoveNames[move], 10, 15, 12); + else + sub_80A1FF8(gMoveNames[move], 9, 15, 12); + + GetStringCenterAlignXOffset(1, 24, 12); + + buffer = gStringVar1; + pp = gBattleMoves[move].pp; + buffer = sub_8072C14(buffer, pp, 14, 1); + *buffer++ = CHAR_SLASH; + buffer = sub_8072C14(buffer, pp, 32, 1); + MenuPrint(gStringVar1, 25, 12); +} + +void sub_80A0390(void) +{ + u8 i; + + for (i = 0; i < MAX_MON_MOVES; i++) + { + MenuZeroFillWindowRect(15, (i * 2) + 4, 28, (i * 2) + 5); + } +} + +u16 sub_80A03BC(struct Pokemon *mon, u8 selectedMoveIndex) +{ + u16 move; + + if (selectedMoveIndex != MAX_MON_MOVES) + { + move = GetMonMove(mon, selectedMoveIndex); + } + else + { + if (ewramSS.unk7C != 0) + { + move = ewramSS.unk7C; + } + else + { + move = 0xFFFF; + } + } + + return move; +} + +void sub_80A03F0(struct Pokemon *mon, u8 *selectedMoveIndex) +{ + u16 move = sub_80A03BC(mon, *selectedMoveIndex); + + if (ewramSS.unkB == 2) + { + sub_80A04CC(move); + sub_80A057C(0xFFFF); + } + else + { + sub_80A057C(move); + } +} + +void sub_80A0428(struct Pokemon *mon, u8 *selectedMoveIndex) +{ + u16 move = sub_80A03BC(mon, *selectedMoveIndex); + MenuZeroFillWindowRect(11, 15, 28, 18); + + if (ewramSS.unkB == 2) + { + sub_80A046C(move); + } + else + { + sub_80A0498(move); + } + + sub_80A03F0(mon, selectedMoveIndex); +} + +void sub_80A046C(u16 move) +{ + if (move == 0xFFFF) return; + + MenuPrint(gMoveDescriptions[move - 1], 11, 15); +} + +void sub_80A0498(u16 move) +{ + if (move == 0xFFFF) return; + + MenuPrint(gContestEffectStrings[gContestMoves[move].effect], 11, 15); +} + +void sub_80A04CC(u16 move) +{ + u8 *buffer; + + if (move == 0xFFFF) return; + + if (gBattleMoves[move].power <= 1) + { + buffer = gStringVar1; + buffer = sub_8072C74(buffer, gOtherText_ThreeDashes2, 21, 1); + MenuPrint(gStringVar1, 7, 15); + } + else + { + buffer = gStringVar1; + buffer = sub_8072C14(buffer, gBattleMoves[move].power, 21, 1); + MenuPrint(gStringVar1, 7, 15); + } + + if (gBattleMoves[move].accuracy == 0) + { + buffer = gStringVar1; + buffer = sub_8072C74(buffer, gOtherText_ThreeDashes2, 21, 1); + MenuPrint(gStringVar1, 7, 17); + } + else + { + buffer = gStringVar1; + buffer = sub_8072C14(buffer, gBattleMoves[move].accuracy, 21, 1); + MenuPrint(gStringVar1, 7, 17); + } +} + +#ifdef NONMATCHING // The two vramAddr lines are non-matching. +void sub_80A057C(u16 move) +{ + u8 appeal; + u8 jam; + u8 i; + u16 *vramAddr = (u16 *)(VRAM + 0x6800); + + if (move == 0xFFFF) return; + + appeal = gContestEffects[gContestMoves[move].effect].appeal; + if (appeal != 0xFF) + { + appeal = appeal / 10; + } + + for (i = 0; i < 8; i++) + { + u16 tile = 0x1039; + int and = 3; + int offset = 0x3CC / 2; + if (appeal != 0xFF && i < appeal) + { + tile = 0x103A; + } + + *(&vramAddr[(i >> 2 << 5) + (i & and)] + offset) = tile; + } + + if (move == 0xFFFF) return; + + jam = gContestEffects[gContestMoves[move].effect].jam; + if (jam != 0xFF) + { + jam = jam / 10; + } + + for (i = 0; i < 8; i++) + { + u16 tile = 0x103D; + int and = 3; + int offset = 0x226; + if (jam != 0xFF && i < jam) + { + tile = 0x103C; + } + + *(&vramAddr[(i >> 2 << 5) + (i & and)] + offset) = tile; + } +} +#else +__attribute__((naked)) +void sub_80A057C(u16 move) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + ldr r0, _080A0648 @ =0x06006800\n\ + mov r8, r0\n\ + ldr r0, _080A064C @ =0x0000ffff\n\ + cmp r5, r0\n\ + beq _080A063A\n\ + ldr r1, _080A0650 @ =gContestEffects\n\ + ldr r2, _080A0654 @ =gContestMoves\n\ + lsls r3, r5, 3\n\ + adds r0, r3, r2\n\ + ldrb r0, [r0]\n\ + lsls r0, 2\n\ + adds r0, r1\n\ + ldrb r4, [r0, 0x1]\n\ + mov r10, r2\n\ + mov r9, r3\n\ + cmp r4, 0xFF\n\ + beq _080A05B8\n\ + adds r0, r4, 0\n\ + movs r1, 0xA\n\ + bl __udivsi3\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ +_080A05B8:\n\ + movs r2, 0\n\ + movs r7, 0x3\n\ + movs r6, 0xF3\n\ + lsls r6, 2\n\ +_080A05C0:\n\ + ldr r3, _080A0658 @ =0x00001039\n\ + cmp r4, 0xFF\n\ + beq _080A05CC\n\ + cmp r2, r4\n\ + bcs _080A05CC\n\ + adds r3, 0x1\n\ +_080A05CC:\n\ + lsrs r0, r2, 2\n\ + lsls r0, 5\n\ + adds r1, r2, 0\n\ + ands r1, r7\n\ + adds r1, r0\n\ + lsls r1, 1\n\ + add r1, r8\n\ + adds r1, r6\n\ + strh r3, [r1]\n\ + adds r0, r2, 0x1\n\ + lsls r0, 24\n\ + lsrs r2, r0, 24\n\ + cmp r2, 0x7\n\ + bls _080A05C0\n\ + ldr r0, _080A064C @ =0x0000ffff\n\ + cmp r5, r0\n\ + beq _080A063A\n\ + mov r0, r9\n\ + add r0, r10\n\ + ldrb r0, [r0]\n\ + lsls r0, 2\n\ + ldr r1, _080A0650 @ =gContestEffects\n\ + adds r0, r1\n\ + ldrb r4, [r0, 0x2]\n\ + cmp r4, 0xFF\n\ + beq _080A060C\n\ + adds r0, r4, 0\n\ + movs r1, 0xA\n\ + bl __udivsi3\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ +_080A060C:\n\ + movs r2, 0\n\ + movs r6, 0x3\n\ + ldr r5, _080A065C @ =0x0000044c\n\ +_080A0612:\n\ + ldr r3, _080A0660 @ =0x0000103d\n\ + cmp r4, 0xFF\n\ + beq _080A061E\n\ + cmp r2, r4\n\ + bcs _080A061E\n\ + subs r3, 0x1\n\ +_080A061E:\n\ + lsrs r0, r2, 2\n\ + lsls r0, 5\n\ + adds r1, r2, 0\n\ + ands r1, r6\n\ + adds r1, r0\n\ + lsls r1, 1\n\ + add r1, r8\n\ + adds r1, r5\n\ + strh r3, [r1]\n\ + adds r0, r2, 0x1\n\ + lsls r0, 24\n\ + lsrs r2, r0, 24\n\ + cmp r2, 0x7\n\ + bls _080A0612\n\ +_080A063A:\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080A0648: .4byte 0x06006800\n\ +_080A064C: .4byte 0x0000ffff\n\ +_080A0650: .4byte gContestEffects\n\ +_080A0654: .4byte gContestMoves\n\ +_080A0658: .4byte 0x00001039\n\ +_080A065C: .4byte 0x0000044c\n\ +_080A0660: .4byte 0x0000103d\n\ + .syntax divided\n"); +} +#endif // NONMATCHING + bool8 PokemonSummaryScreen_CheckOT(struct Pokemon *mon) { u32 trainerId; @@ -1355,7 +2487,7 @@ _080A1484: .4byte gOtherText_Status\n\ // Related to re-drawing the summary area underneath the pokemon's picture // in all of the summary screen tabs. -void sub_80A1488(u8 a, u8 b) +void sub_80A1488(s8 a, u8 b) { u8 taskId; @@ -1557,7 +2689,7 @@ _080A1650: .4byte gOtherText_Status\n\ .syntax divided\n"); } -void sub_80A1654(u8 a, u8 b) +void sub_80A1654(s8 a, u8 b) { u8 taskId; |