diff options
-rw-r--r-- | asm/pokenav.s | 1993 | ||||
-rw-r--r-- | data/pokenav.s | 2 | ||||
-rw-r--r-- | include/pokenav.h | 52 | ||||
-rw-r--r-- | src/contest_effect.c | 154 | ||||
-rw-r--r-- | src/pokenav_before.c | 1291 | ||||
-rw-r--r-- | src/use_pokeblock.c | 4 |
6 files changed, 953 insertions, 2543 deletions
diff --git a/asm/pokenav.s b/asm/pokenav.s index 7fc2348f5..1e3c6fe5c 100644 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -5,1991 +5,6 @@ .text - thumb_func_start sub_80F063C -sub_80F063C: @ 80F063C - push {r4-r7,lr} - lsls r0, 16 - ldr r3, _080F0664 @ =gUnknown_083DFEC4 - ldr r2, [r3] - lsrs r5, r0, 16 - asrs r4, r0, 16 - lsls r1, r4, 4 - ldr r6, _080F0668 @ =0x0000877c - adds r0, r2, r6 - strh r1, [r0] - adds r7, r3, 0 - cmp r4, 0x1 - beq _080F065E - movs r0, 0x1 - negs r0, r0 - cmp r4, r0 - bne _080F066C -_080F065E: - movs r1, 0x4 - b _080F066E - .align 2, 0 -_080F0664: .4byte gUnknown_083DFEC4 -_080F0668: .4byte 0x0000877c -_080F066C: - movs r1, 0x8 -_080F066E: - ldr r3, _080F06C0 @ =0x0000877a - adds r0, r2, r3 - strh r1, [r0] - lsls r0, r5, 16 - asrs r3, r0, 16 - cmp r3, 0 - bge _080F06CC - ldr r4, [r7] - ldr r6, _080F06C0 @ =0x0000877a - adds r1, r4, r6 - movs r2, 0 - ldrsh r0, [r1, r2] - negs r0, r0 - strh r0, [r1] - subs r6, 0x2 - adds r1, r4, r6 - lsls r0, r3, 1 - ldrh r1, [r1] - adds r0, r1 - lsls r0, 16 - lsrs r6, r0, 16 - ldr r1, _080F06C4 @ =0x00008770 - adds r0, r4, r1 - ldrh r0, [r0] - adds r0, r3, r0 - lsls r0, 16 - lsrs r2, r0, 16 - asrs r0, 16 - cmp r0, 0 - bge _080F06B8 - ldr r2, _080F06C8 @ =0x00008774 - adds r1, r4, r2 - adds r0, 0x1 - ldrh r1, [r1] - adds r0, r1 - lsls r0, 16 - lsrs r2, r0, 16 -_080F06B8: - negs r0, r3 - lsls r0, 16 - lsrs r5, r0, 16 - b _080F06E6 - .align 2, 0 -_080F06C0: .4byte 0x0000877a -_080F06C4: .4byte 0x00008770 -_080F06C8: .4byte 0x00008774 -_080F06CC: - ldr r1, [r7] - ldr r3, _080F070C @ =0x00008778 - adds r0, r1, r3 - ldrh r0, [r0] - adds r0, 0x10 - lsls r0, 16 - lsrs r6, r0, 16 - ldr r0, _080F0710 @ =0x00008772 - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 -_080F06E6: - ldr r0, [r7] - ldr r1, _080F0714 @ =0x00008774 - adds r0, r1 - lsls r1, r2, 16 - asrs r1, 16 - movs r3, 0 - ldrsh r0, [r0, r3] - cmp r1, r0 - ble _080F06FA - movs r2, 0 -_080F06FA: - movs r1, 0x1F - adds r0, r2, 0 - ands r1, r6 - adds r2, r5, 0 - bl sub_80F0954 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F070C: .4byte 0x00008778 -_080F0710: .4byte 0x00008772 -_080F0714: .4byte 0x00008774 - thumb_func_end sub_80F063C - - thumb_func_start sub_80F0718 -sub_80F0718: @ 80F0718 - push {r4,r5,lr} - bl sub_80F098C - lsls r0, 24 - cmp r0, 0 - bne _080F0790 - ldr r0, _080F073C @ =gUnknown_083DFEC4 - ldr r4, [r0] - ldr r0, _080F0740 @ =0x0000877c - adds r3, r4, r0 - ldrh r2, [r3] - movs r1, 0 - ldrsh r0, [r3, r1] - cmp r0, 0 - bne _080F0744 - movs r0, 0 - b _080F0792 - .align 2, 0 -_080F073C: .4byte gUnknown_083DFEC4 -_080F0740: .4byte 0x0000877c -_080F0744: - ldr r0, _080F0780 @ =0x0000877a - adds r1, r4, r0 - ldrh r0, [r1] - subs r0, r2, r0 - strh r0, [r3] - ldr r0, _080F0784 @ =0x00008776 - adds r2, r4, r0 - ldrh r0, [r1] - ldrh r1, [r2] - adds r0, r1 - movs r5, 0xFF - ands r0, r5 - strh r0, [r2] - ldr r1, _080F0788 @ =REG_BG3VOFS - strh r0, [r1] - movs r1, 0 - ldrsh r0, [r3, r1] - cmp r0, 0 - bne _080F0790 - movs r1, 0 - ldrsh r0, [r2, r1] - adds r0, 0x8 - ands r0, r5 - asrs r1, r0, 3 - ldr r2, _080F078C @ =0x00008778 - adds r0, r4, r2 - strh r1, [r0] - movs r0, 0 - b _080F0792 - .align 2, 0 -_080F0780: .4byte 0x0000877a -_080F0784: .4byte 0x00008776 -_080F0788: .4byte REG_BG3VOFS -_080F078C: .4byte 0x00008778 -_080F0790: - movs r0, 0x1 -_080F0792: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80F0718 - - thumb_func_start ShowMapNamePopUpWindow -ShowMapNamePopUpWindow: @ 80F0798 - push {lr} - ldr r0, _080F07B0 @ =gUnknown_083DFEC4 - ldr r2, [r0] - ldr r1, _080F07B4 @ =0x000087ca - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _080F07B8 - cmp r0, 0x1 - beq _080F07E0 - b _080F080A - .align 2, 0 -_080F07B0: .4byte gUnknown_083DFEC4 -_080F07B4: .4byte 0x000087ca -_080F07B8: - ldr r3, _080F07D8 @ =0x00008788 - adds r0, r2, r3 - subs r3, 0x1A - adds r1, r2, r3 - movs r3, 0 - ldrsh r1, [r1, r3] - lsls r1, 2 - adds r1, r2, r1 - ldr r2, _080F07DC @ =0x0000893e - adds r1, r2 - ldrh r1, [r1] - lsls r1, 18 - lsrs r1, 23 - bl sub_80F443C - b _080F07F4 - .align 2, 0 -_080F07D8: .4byte 0x00008788 -_080F07DC: .4byte 0x0000893e -_080F07E0: - ldr r3, _080F0810 @ =0x00008788 - adds r0, r2, r3 - subs r3, 0x1A - adds r1, r2, r3 - ldrh r1, [r1] - adds r1, 0x1 - lsls r1, 16 - lsrs r1, 16 - bl sub_80F445C -_080F07F4: - ldr r0, _080F0814 @ =gWindowTemplate_81E710C - bl BasicInitMenuWindow - ldr r0, _080F0818 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F0810 @ =0x00008788 - adds r0, r1 - movs r1, 0x1 - movs r2, 0x6 - bl Menu_PrintText -_080F080A: - pop {r0} - bx r0 - .align 2, 0 -_080F0810: .4byte 0x00008788 -_080F0814: .4byte gWindowTemplate_81E710C -_080F0818: .4byte gUnknown_083DFEC4 - thumb_func_end ShowMapNamePopUpWindow - - thumb_func_start sub_80F081C -sub_80F081C: @ 80F081C - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _080F0838 @ =gWindowTemplate_81E710C - bl BasicInitMenuWindow - cmp r5, 0x4 - bhi _080F08C6 - lsls r0, r5, 2 - ldr r1, _080F083C @ =_080F0840 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080F0838: .4byte gWindowTemplate_81E710C -_080F083C: .4byte _080F0840 - .align 2, 0 -_080F0840: - .4byte _080F0854 - .4byte _080F0854 - .4byte _080F0862 - .4byte _080F088C - .4byte _080F089A -_080F0854: - ldr r0, _080F08CC @ =gOtherText_NumberRegistered - movs r1, 0xA - movs r2, 0x9 - bl MenuPrint_RightAligned - cmp r5, 0 - bne _080F08C6 -_080F0862: - ldr r0, _080F08D0 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F08D4 @ =0x00008788 - adds r4, r0, r1 - ldr r2, _080F08D8 @ =0x00008774 - adds r0, r2 - movs r2, 0 - ldrsh r1, [r0, r2] - adds r1, 0x1 - adds r0, r4, 0 - movs r2, 0x1 - movs r3, 0x5 - bl ConvertIntToDecimalStringN - adds r0, r4, 0 - movs r1, 0xA - movs r2, 0xB - bl MenuPrint_RightAligned - cmp r5, 0 - bne _080F08C6 -_080F088C: - ldr r0, _080F08DC @ =gOtherText_NumberBattles - movs r1, 0xA - movs r2, 0xD - bl MenuPrint_RightAligned - cmp r5, 0 - bne _080F08C6 -_080F089A: - movs r0, 0x9 - bl GetGameStat - adds r1, r0, 0 - ldr r0, _080F08E0 @ =0x0001869f - cmp r1, r0 - bls _080F08AA - adds r1, r0, 0 -_080F08AA: - ldr r0, _080F08D0 @ =gUnknown_083DFEC4 - ldr r4, [r0] - ldr r0, _080F08D4 @ =0x00008788 - adds r4, r0 - adds r0, r4, 0 - movs r2, 0x1 - movs r3, 0x5 - bl ConvertIntToDecimalStringN - adds r0, r4, 0 - movs r1, 0xA - movs r2, 0xF - bl MenuPrint_RightAligned -_080F08C6: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F08CC: .4byte gOtherText_NumberRegistered -_080F08D0: .4byte gUnknown_083DFEC4 -_080F08D4: .4byte 0x00008788 -_080F08D8: .4byte 0x00008774 -_080F08DC: .4byte gOtherText_NumberBattles -_080F08E0: .4byte 0x0001869f - thumb_func_end sub_80F081C - - thumb_func_start sub_80F08E4 -sub_80F08E4: @ 80F08E4 - push {lr} - ldr r0, _080F08FC @ =gWindowTemplate_81E710C - bl BasicInitMenuWindow - movs r0, 0 - movs r1, 0x9 - movs r2, 0xB - movs r3, 0x10 - bl Menu_EraseWindowRect - pop {r0} - bx r0 - .align 2, 0 -_080F08FC: .4byte gWindowTemplate_81E710C - thumb_func_end sub_80F08E4 - - thumb_func_start sub_80F0900 -sub_80F0900: @ 80F0900 - push {r4,r5,lr} - ldr r0, _080F093C @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r2, _080F0940 @ =0x00008772 - adds r1, r0, r2 - subs r2, 0x2 - adds r5, r0, r2 - ldrh r0, [r1] - ldrh r1, [r5] - subs r0, r1 - adds r0, 0x1 - lsls r4, r0, 16 - asrs r0, r4, 16 - cmp r0, 0x7 - bgt _080F092A - movs r0, 0xC - movs r1, 0x1 - movs r2, 0x1F - movs r3, 0xF - bl Menu_EraseWindowRect -_080F092A: - ldrh r0, [r5] - lsrs r2, r4, 16 - movs r1, 0 - bl sub_80F0954 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F093C: .4byte gUnknown_083DFEC4 -_080F0940: .4byte 0x00008772 - thumb_func_end sub_80F0900 - - thumb_func_start sub_80F0944 -sub_80F0944: @ 80F0944 - push {lr} - bl sub_80F098C - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_80F0944 - - thumb_func_start sub_80F0954 -sub_80F0954: @ 80F0954 - push {r4,r5,lr} - ldr r3, _080F097C @ =gUnknown_083DFEC4 - ldr r3, [r3] - ldr r5, _080F0980 @ =0x0000877e - adds r4, r3, r5 - movs r5, 0 - strh r0, [r4] - ldr r4, _080F0984 @ =0x00008780 - adds r0, r3, r4 - strh r1, [r0] - ldr r1, _080F0988 @ =0x00008784 - adds r0, r3, r1 - strh r2, [r0] - adds r4, 0x6 - adds r3, r4 - strh r5, [r3] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F097C: .4byte gUnknown_083DFEC4 -_080F0980: .4byte 0x0000877e -_080F0984: .4byte 0x00008780 -_080F0988: .4byte 0x00008784 - thumb_func_end sub_80F0954 - - thumb_func_start sub_80F098C -sub_80F098C: @ 80F098C - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, _080F09A4 @ =gUnknown_083DFEC4 - ldr r6, [r0] - ldr r0, _080F09A8 @ =0x00008784 - adds r7, r6, r0 - ldrh r0, [r7] - cmp r0, 0 - bne _080F09AC -_080F09A0: - movs r0, 0 - b _080F0A02 - .align 2, 0 -_080F09A4: .4byte gUnknown_083DFEC4 -_080F09A8: .4byte 0x00008784 -_080F09AC: - movs r1, 0 - mov r8, r1 - ldr r1, _080F0A0C @ =gUnknown_083E3270 - ldr r2, _080F0A10 @ =0x000087ca - adds r0, r6, r2 - ldrb r2, [r0] - lsls r2, 2 - adds r2, r1 - ldr r0, _080F0A14 @ =0x0000877e - adds r4, r6, r0 - ldrh r0, [r4] - ldr r1, _080F0A18 @ =0x00008780 - adds r5, r6, r1 - ldrh r1, [r5] - ldr r2, [r2] - bl _call_via_r2 - ldrh r0, [r7] - subs r0, 0x1 - strh r0, [r7] - ldr r2, _080F0A1C @ =0x0000ffff - adds r1, r2, 0 - lsls r0, 16 - cmp r0, 0 - beq _080F09A0 - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - ands r0, r1 - ldr r2, _080F0A20 @ =0x00008774 - adds r1, r6, r2 - movs r2, 0 - ldrsh r1, [r1, r2] - cmp r0, r1 - ble _080F09F6 - mov r0, r8 - strh r0, [r4] -_080F09F6: - ldrh r0, [r5] - adds r0, 0x2 - movs r1, 0x1F - ands r0, r1 - strh r0, [r5] - movs r0, 0x1 -_080F0A02: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080F0A0C: .4byte gUnknown_083E3270 -_080F0A10: .4byte 0x000087ca -_080F0A14: .4byte 0x0000877e -_080F0A18: .4byte 0x00008780 -_080F0A1C: .4byte 0x0000ffff -_080F0A20: .4byte 0x00008774 - thumb_func_end sub_80F098C - - thumb_func_start sub_80F0A24 -sub_80F0A24: @ 80F0A24 - push {r4,r5,lr} - lsls r0, 16 - lsrs r3, r0, 16 - lsls r1, 16 - lsrs r5, r1, 16 - ldr r0, _080F0A64 @ =gUnknown_083DFEC4 - ldr r4, [r0] - ldr r1, _080F0A68 @ =0x000087c8 - adds r0, r4, r1 - ldrb r0, [r0] - movs r2, 0x1 - cmp r0, 0 - bne _080F0A40 - movs r2, 0x2 -_080F0A40: - ldr r0, _080F0A6C @ =0x00008788 - adds r4, r0 - adds r0, r4, 0 - adds r1, r3, 0 - bl sub_80F4428 - ldr r0, _080F0A70 @ =gWindowTemplate_81E70D4 - bl BasicInitMenuWindow - lsls r2, r5, 24 - lsrs r2, 24 - adds r0, r4, 0 - movs r1, 0xD - bl Menu_PrintText - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F0A64: .4byte gUnknown_083DFEC4 -_080F0A68: .4byte 0x000087c8 -_080F0A6C: .4byte 0x00008788 -_080F0A70: .4byte gWindowTemplate_81E70D4 - thumb_func_end sub_80F0A24 - - thumb_func_start sub_80F0A74 -sub_80F0A74: @ 80F0A74 - push {r4-r7,lr} - sub sp, 0x14 - lsls r0, 16 - lsrs r6, r0, 16 - lsls r1, 16 - lsrs r7, r1, 16 - ldr r0, _080F0ADC @ =gUnknown_083DFEC4 - ldr r5, [r0] - ldr r0, _080F0AE0 @ =0x00008788 - adds r4, r5, r0 - adds r0, r4, 0 - adds r1, r6, 0 - bl sub_80F700C - movs r0, 0x1F - ands r7, r0 - ldr r0, _080F0AE4 @ =gWindowTemplate_81E70D4 - bl BasicInitMenuWindow - lsls r2, r7, 3 - adds r0, r4, 0 - movs r1, 0x61 - movs r3, 0 - bl Menu_PrintTextPixelCoords - ldr r1, _080F0AE8 @ =0x0000d158 - adds r0, r5, r1 - ldrh r0, [r0] - cmp r6, r0 - bcs _080F0AF8 - lsls r0, r6, 3 - adds r0, r5, r0 - ldr r1, _080F0AEC @ =0x0000ceed - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _080F0AF8 - ldr r0, _080F0AF0 @ =0x0600f000 - ldr r3, _080F0AF4 @ =gUnknown_083E039C - movs r1, 0 - str r1, [sp] - str r1, [sp, 0x4] - movs r2, 0x1 - str r2, [sp, 0x8] - movs r1, 0x2 - str r1, [sp, 0xC] - str r2, [sp, 0x10] - movs r1, 0x1D - adds r2, r7, 0 - bl sub_8095C8C - b _080F0B14 - .align 2, 0 -_080F0ADC: .4byte gUnknown_083DFEC4 -_080F0AE0: .4byte 0x00008788 -_080F0AE4: .4byte gWindowTemplate_81E70D4 -_080F0AE8: .4byte 0x0000d158 -_080F0AEC: .4byte 0x0000ceed -_080F0AF0: .4byte 0x0600f000 -_080F0AF4: .4byte gUnknown_083E039C -_080F0AF8: - ldr r0, _080F0B1C @ =0x0600f000 - ldr r3, _080F0B20 @ =gUnknown_083E03A0 - movs r1, 0 - str r1, [sp] - str r1, [sp, 0x4] - movs r2, 0x1 - str r2, [sp, 0x8] - movs r1, 0x2 - str r1, [sp, 0xC] - str r2, [sp, 0x10] - movs r1, 0x1D - adds r2, r7, 0 - bl sub_8095C8C -_080F0B14: - add sp, 0x14 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F0B1C: .4byte 0x0600f000 -_080F0B20: .4byte gUnknown_083E03A0 - thumb_func_end sub_80F0A74 - - thumb_func_start sub_80F0B24 -sub_80F0B24: @ 80F0B24 - ldr r0, _080F0B38 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r2, _080F0B3C @ =0x0000d15c - adds r1, r0, r2 - movs r2, 0 - strh r2, [r1] - ldr r1, _080F0B40 @ =0x00000306 - adds r0, r1 - strh r2, [r0] - bx lr - .align 2, 0 -_080F0B38: .4byte gUnknown_083DFEC4 -_080F0B3C: .4byte 0x0000d15c -_080F0B40: .4byte 0x00000306 - thumb_func_end sub_80F0B24 - - thumb_func_start sub_80F0B44 -sub_80F0B44: @ 80F0B44 - push {r4-r6,lr} - ldr r0, _080F0B58 @ =gUnknown_083DFEC4 - ldr r5, [r0] - ldr r0, _080F0B5C @ =0x0000d15c - adds r6, r5, r0 - ldrh r0, [r6] - cmp r0, 0x8 - bls _080F0B60 - movs r0, 0 - b _080F0C22 - .align 2, 0 -_080F0B58: .4byte gUnknown_083DFEC4 -_080F0B5C: .4byte 0x0000d15c -_080F0B60: - ldr r0, _080F0BBC @ =0x00000306 - adds r1, r5, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bls _080F0C20 - movs r0, 0 - strh r0, [r1] - ldrh r0, [r6] - cmp r0, 0x7 - bhi _080F0BCC - ldr r0, _080F0BC0 @ =0x00008778 - adds r1, r5, r0 - ldrh r2, [r6] - lsls r0, r2, 1 - ldrh r1, [r1] - adds r4, r0, r1 - movs r0, 0x1F - ands r4, r0 - ldr r1, _080F0BC4 @ =0x0000876c - adds r0, r5, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r2, r0 - beq _080F0BAA - ldr r0, _080F0BC8 @ =gWindowTemplate_81E70D4 - bl BasicInitMenuWindow - adds r1, r4, 0 - adds r3, r1, 0x1 - movs r0, 0xC - movs r2, 0x1F - bl Menu_EraseWindowRect -_080F0BAA: - ldrh r0, [r6] - cmp r0, 0 - bne _080F0BB4 - bl sub_80F08E4 -_080F0BB4: - ldrh r0, [r6] - adds r0, 0x1 - strh r0, [r6] - b _080F0C20 - .align 2, 0 -_080F0BBC: .4byte 0x00000306 -_080F0BC0: .4byte 0x00008778 -_080F0BC4: .4byte 0x0000876c -_080F0BC8: .4byte gWindowTemplate_81E70D4 -_080F0BCC: - ldr r0, _080F0C10 @ =gWindowTemplate_81E70D4 - bl BasicInitMenuWindow - ldr r1, _080F0C14 @ =0x00008778 - adds r0, r5, r1 - ldrh r0, [r0] - adds r4, r0, 0 - adds r4, 0x10 - movs r0, 0x1F - ands r4, r0 - movs r5, 0 -_080F0BE2: - adds r3, r4, 0x1 - movs r0, 0xC - adds r1, r4, 0 - movs r2, 0x1F - bl Menu_EraseWindowRect - adds r4, 0x2 - movs r0, 0x1F - ands r4, r0 - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x7 - bls _080F0BE2 - ldr r0, _080F0C18 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r0, _080F0C1C @ =0x0000d15c - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - movs r0, 0 - b _080F0C22 - .align 2, 0 -_080F0C10: .4byte gWindowTemplate_81E70D4 -_080F0C14: .4byte 0x00008778 -_080F0C18: .4byte gUnknown_083DFEC4 -_080F0C1C: .4byte 0x0000d15c -_080F0C20: - movs r0, 0x1 -_080F0C22: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80F0B44 - - thumb_func_start sub_80F0C28 -sub_80F0C28: @ 80F0C28 - ldr r0, _080F0C3C @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r2, _080F0C40 @ =0x0000d15c - adds r1, r0, r2 - movs r2, 0 - strh r2, [r1] - ldr r1, _080F0C44 @ =0x00000306 - adds r0, r1 - strh r2, [r0] - bx lr - .align 2, 0 -_080F0C3C: .4byte gUnknown_083DFEC4 -_080F0C40: .4byte 0x0000d15c -_080F0C44: .4byte 0x00000306 - thumb_func_end sub_80F0C28 - - thumb_func_start sub_80F0C48 -sub_80F0C48: @ 80F0C48 - push {r4-r6,lr} - ldr r0, _080F0C5C @ =gUnknown_083DFEC4 - ldr r4, [r0] - ldr r0, _080F0C60 @ =0x0000d15c - adds r5, r4, r0 - ldrh r0, [r5] - cmp r0, 0x7 - bls _080F0C64 - movs r0, 0 - b _080F0CD2 - .align 2, 0 -_080F0C5C: .4byte gUnknown_083DFEC4 -_080F0C60: .4byte 0x0000d15c -_080F0C64: - ldr r2, _080F0CBC @ =0x00000306 - adds r1, r4, r2 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - ldr r2, _080F0CC0 @ =0x0000ffff - adds r6, r2, 0 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bls _080F0CD0 - movs r0, 0 - strh r0, [r1] - ldr r0, _080F0CC4 @ =gWindowTemplate_81E70D4 - bl BasicInitMenuWindow - ldr r0, _080F0CC8 @ =0x00008770 - adds r1, r4, r0 - ldrh r0, [r5] - ldrh r1, [r1] - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - ldr r1, _080F0CCC @ =0x00008778 - adds r2, r4, r1 - ldrh r1, [r5] - lsls r1, 1 - ldrh r2, [r2] - adds r1, r2 - lsls r1, 16 - lsrs r1, 16 - bl sub_80F0A74 - ldrh r0, [r5] - adds r0, 0x1 - strh r0, [r5] - ands r0, r6 - cmp r0, 0x7 - bls _080F0CD0 - movs r0, 0 - bl sub_80F081C - movs r0, 0 - b _080F0CD2 - .align 2, 0 -_080F0CBC: .4byte 0x00000306 -_080F0CC0: .4byte 0x0000ffff -_080F0CC4: .4byte gWindowTemplate_81E70D4 -_080F0CC8: .4byte 0x00008770 -_080F0CCC: .4byte 0x00008778 -_080F0CD0: - movs r0, 0x1 -_080F0CD2: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80F0C48 - - thumb_func_start sub_80F0CD8 -sub_80F0CD8: @ 80F0CD8 - push {r4,r5,lr} - ldr r4, _080F0D40 @ =gUnknown_083DFEC4 - ldr r1, [r4] - ldr r2, _080F0D44 @ =0x00000306 - adds r0, r1, r2 - movs r2, 0 - strh r2, [r0] - ldr r3, _080F0D48 @ =0x0000d15c - adds r0, r1, r3 - strh r2, [r0] - ldr r2, _080F0D4C @ =0x0000876e - adds r0, r1, r2 - movs r3, 0 - ldrsh r0, [r0, r3] - lsls r0, 3 - adds r0, r1, r0 - ldr r2, _080F0D50 @ =0x0000ceec - adds r0, r2 - ldrb r0, [r0] - ldr r3, _080F0D54 @ =0x0000d110 - adds r1, r3 - ldr r2, _080F0D58 @ =gTrainerEyeDescriptions - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - str r0, [r1] - adds r2, r0, 0 - movs r1, 0 - adds r5, r4, 0 - adds r4, r3, 0 -_080F0D14: - ldrb r0, [r2] - adds r3, r1, 0x1 - cmp r0, 0xFF - beq _080F0D24 -_080F0D1C: - adds r2, 0x1 - ldrb r0, [r2] - cmp r0, 0xFF - bne _080F0D1C -_080F0D24: - ldr r0, [r5] - lsls r1, r3, 2 - adds r0, r4 - adds r0, r1 - adds r2, 0x1 - str r2, [r0] - lsls r0, r3, 16 - lsrs r1, r0, 16 - cmp r1, 0x2 - bls _080F0D14 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F0D40: .4byte gUnknown_083DFEC4 -_080F0D44: .4byte 0x00000306 -_080F0D48: .4byte 0x0000d15c -_080F0D4C: .4byte 0x0000876e -_080F0D50: .4byte 0x0000ceec -_080F0D54: .4byte 0x0000d110 -_080F0D58: .4byte gTrainerEyeDescriptions - thumb_func_end sub_80F0CD8 - - thumb_func_start sub_80F0D5C -sub_80F0D5C: @ 80F0D5C - push {r4,r5,lr} - ldr r0, _080F0D70 @ =gUnknown_083DFEC4 - ldr r4, [r0] - ldr r0, _080F0D74 @ =0x0000d15c - adds r5, r4, r0 - ldrh r0, [r5] - cmp r0, 0x7 - bne _080F0D78 -_080F0D6C: - movs r0, 0 - b _080F0EB0 - .align 2, 0 -_080F0D70: .4byte gUnknown_083DFEC4 -_080F0D74: .4byte 0x0000d15c -_080F0D78: - ldr r0, _080F0DB8 @ =0x00000306 - adds r1, r4, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bhi _080F0D8C - b _080F0EAE -_080F0D8C: - movs r0, 0 - strh r0, [r1] - ldr r0, _080F0DBC @ =gWindowTemplate_81E70D4 - bl BasicInitMenuWindow - ldr r0, _080F0DC0 @ =0x00008778 - adds r1, r4, r0 - ldrh r3, [r5] - lsls r0, r3, 1 - adds r0, 0x2 - ldrh r1, [r1] - adds r5, r0, r1 - movs r0, 0x1F - ands r5, r0 - cmp r3, 0x6 - bhi _080F0D6C - lsls r0, r3, 2 - ldr r1, _080F0DC4 @ =_080F0DC8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080F0DB8: .4byte 0x00000306 -_080F0DBC: .4byte gWindowTemplate_81E70D4 -_080F0DC0: .4byte 0x00008778 -_080F0DC4: .4byte _080F0DC8 - .align 2, 0 -_080F0DC8: - .4byte _080F0DE4 - .4byte _080F0DF0 - .4byte _080F0E08 - .4byte _080F0E14 - .4byte _080F0E2C - .4byte _080F0E38 - .4byte _080F0E6C -_080F0DE4: - ldr r0, _080F0DEC @ =gOtherText_Strategy - lsls r2, r5, 3 - b _080F0E54 - .align 2, 0 -_080F0DEC: .4byte gOtherText_Strategy -_080F0DF0: - ldr r0, _080F0DFC @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F0E00 @ =0x00008788 - adds r4, r0, r1 - ldr r1, _080F0E04 @ =0x0000d110 - b _080F0E42 - .align 2, 0 -_080F0DFC: .4byte gUnknown_083DFEC4 -_080F0E00: .4byte 0x00008788 -_080F0E04: .4byte 0x0000d110 -_080F0E08: - ldr r0, _080F0E10 @ =gOtherText_TrainersPokemon - lsls r2, r5, 3 - b _080F0E54 - .align 2, 0 -_080F0E10: .4byte gOtherText_TrainersPokemon -_080F0E14: - ldr r0, _080F0E20 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F0E24 @ =0x00008788 - adds r4, r0, r1 - ldr r1, _080F0E28 @ =0x0000d114 - b _080F0E42 - .align 2, 0 -_080F0E20: .4byte gUnknown_083DFEC4 -_080F0E24: .4byte 0x00008788 -_080F0E28: .4byte 0x0000d114 -_080F0E2C: - ldr r0, _080F0E34 @ =gOtherText_SelfIntroduction - lsls r2, r5, 3 - b _080F0E54 - .align 2, 0 -_080F0E34: .4byte gOtherText_SelfIntroduction -_080F0E38: - ldr r0, _080F0E60 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F0E64 @ =0x00008788 - adds r4, r0, r1 - ldr r1, _080F0E68 @ =0x0000d118 -_080F0E42: - adds r0, r1 - ldr r1, [r0] - adds r0, r4, 0 - movs r2, 0x88 - movs r3, 0 - bl AlignStringInMenuWindow - lsls r2, r5, 3 - adds r0, r4, 0 -_080F0E54: - movs r1, 0x61 - movs r3, 0 - bl Menu_PrintTextPixelCoords - b _080F0EA0 - .align 2, 0 -_080F0E60: .4byte gUnknown_083DFEC4 -_080F0E64: .4byte 0x00008788 -_080F0E68: .4byte 0x0000d118 -_080F0E6C: - ldr r0, _080F0E94 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F0E98 @ =0x00008788 - adds r4, r0, r1 - ldr r1, _080F0E9C @ =0x0000d11c - adds r0, r1 - ldr r1, [r0] - adds r0, r4, 0 - movs r2, 0x88 - movs r3, 0 - bl AlignStringInMenuWindow - lsls r2, r5, 3 - adds r0, r4, 0 - movs r1, 0x61 - movs r3, 0 - bl Menu_PrintTextPixelCoords - b _080F0D6C - .align 2, 0 -_080F0E94: .4byte gUnknown_083DFEC4 -_080F0E98: .4byte 0x00008788 -_080F0E9C: .4byte 0x0000d11c -_080F0EA0: - ldr r0, _080F0EB8 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r0, _080F0EBC @ =0x0000d15c - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_080F0EAE: - movs r0, 0x1 -_080F0EB0: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080F0EB8: .4byte gUnknown_083DFEC4 -_080F0EBC: .4byte 0x0000d15c - thumb_func_end sub_80F0D5C - - thumb_func_start sub_80F0EC0 -sub_80F0EC0: @ 80F0EC0 - push {lr} - ldr r0, _080F0EE4 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r2, _080F0EE8 @ =0x00000306 - adds r1, r0, r2 - movs r2, 0 - strh r2, [r1] - ldr r3, _080F0EEC @ =0x0000d15c - adds r1, r0, r3 - strh r2, [r1] - ldr r1, _080F0EF0 @ =0x00008788 - adds r0, r1 - movs r1, 0 - movs r2, 0x10 - bl StringFill - pop {r0} - bx r0 - .align 2, 0 -_080F0EE4: .4byte gUnknown_083DFEC4 -_080F0EE8: .4byte 0x00000306 -_080F0EEC: .4byte 0x0000d15c -_080F0EF0: .4byte 0x00008788 - thumb_func_end sub_80F0EC0 - - thumb_func_start sub_80F0EF4 -sub_80F0EF4: @ 80F0EF4 - push {r4,r5,lr} - ldr r0, _080F0F08 @ =gUnknown_083DFEC4 - ldr r2, [r0] - ldr r0, _080F0F0C @ =0x0000d15c - adds r5, r2, r0 - ldrh r0, [r5] - cmp r0, 0x6 - bls _080F0F10 - movs r0, 0 - b _080F0F52 - .align 2, 0 -_080F0F08: .4byte gUnknown_083DFEC4 -_080F0F0C: .4byte 0x0000d15c -_080F0F10: - ldr r0, _080F0F58 @ =0x00000306 - adds r1, r2, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bls _080F0F50 - movs r0, 0 - strh r0, [r1] - ldr r1, _080F0F5C @ =0x00008778 - adds r0, r2, r1 - ldrh r4, [r5] - lsls r4, 1 - adds r4, 0x2 - ldrh r0, [r0] - adds r4, r0 - movs r0, 0x1F - ands r4, r0 - ldr r0, _080F0F60 @ =gWindowTemplate_81E70D4 - bl BasicInitMenuWindow - adds r3, r4, 0x1 - movs r0, 0xC - adds r1, r4, 0 - movs r2, 0x1F - bl Menu_EraseWindowRect - ldrh r0, [r5] - adds r0, 0x1 - strh r0, [r5] -_080F0F50: - movs r0, 0x1 -_080F0F52: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080F0F58: .4byte 0x00000306 -_080F0F5C: .4byte 0x00008778 -_080F0F60: .4byte gWindowTemplate_81E70D4 - thumb_func_end sub_80F0EF4 - - thumb_func_start sub_80F0F64 -sub_80F0F64: @ 80F0F64 - push {r4,lr} - ldr r0, _080F0F90 @ =gUnknown_083DFEC4 - ldr r3, [r0] - ldr r1, _080F0F94 @ =0x0000876c - adds r0, r3, r1 - movs r4, 0 - ldrsh r2, [r0, r4] - lsls r1, r2, 4 - ldr r4, _080F0F98 @ =0x0000877c - adds r0, r3, r4 - strh r1, [r0] - movs r1, 0x8 - cmp r2, 0x1 - bne _080F0F82 - movs r1, 0x4 -_080F0F82: - ldr r2, _080F0F9C @ =0x0000877a - adds r0, r3, r2 - strh r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F0F90: .4byte gUnknown_083DFEC4 -_080F0F94: .4byte 0x0000876c -_080F0F98: .4byte 0x0000877c -_080F0F9C: .4byte 0x0000877a - thumb_func_end sub_80F0F64 - - thumb_func_start sub_80F0FA0 -sub_80F0FA0: @ 80F0FA0 - push {r4,lr} - ldr r0, _080F0FDC @ =gUnknown_083DFEC4 - ldr r3, [r0] - ldr r1, _080F0FE0 @ =0x0000876c - adds r0, r3, r1 - movs r4, 0 - ldrsh r0, [r0, r4] - negs r0, r0 - lsls r0, 16 - asrs r0, 16 - lsls r2, r0, 4 - ldr r4, _080F0FE4 @ =0x0000877c - adds r1, r3, r4 - strh r2, [r1] - movs r1, 0x1 - negs r1, r1 - movs r4, 0x8 - negs r4, r4 - adds r2, r4, 0 - cmp r0, r1 - bne _080F0FD0 - movs r0, 0x4 - negs r0, r0 - adds r2, r0, 0 -_080F0FD0: - ldr r1, _080F0FE8 @ =0x0000877a - adds r0, r3, r1 - strh r2, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080F0FDC: .4byte gUnknown_083DFEC4 -_080F0FE0: .4byte 0x0000876c -_080F0FE4: .4byte 0x0000877c -_080F0FE8: .4byte 0x0000877a - thumb_func_end sub_80F0FA0 - - thumb_func_start sub_80F0FEC -sub_80F0FEC: @ 80F0FEC - push {lr} - bl sub_80F0718 - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_80F0FEC - - thumb_func_start sub_80F0FFC -sub_80F0FFC: @ 80F0FFC - push {r4,r5,lr} - lsls r0, 24 - ldr r1, _080F1048 @ =gUnknown_083DFEC4 - ldr r4, [r1] - ldr r1, _080F104C @ =0x00008788 - adds r5, r4, r1 - lsrs r0, 21 - adds r0, r4, r0 - ldr r1, _080F1050 @ =0x0000ceea - adds r0, r1 - ldrh r1, [r0] - adds r0, r5, 0 - movs r2, 0 - bl GetMapSectionName - ldr r0, _080F1054 @ =gWindowTemplate_81E710C - bl BasicInitMenuWindow - adds r0, r5, 0 - bl sub_80F19DC - ldr r0, _080F1058 @ =0x0000d138 - adds r4, r0 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x58 - movs r3, 0x2 - bl AlignStringInMenuWindow - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x5 - bl Menu_PrintText - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F1048: .4byte gUnknown_083DFEC4 -_080F104C: .4byte 0x00008788 -_080F1050: .4byte 0x0000ceea -_080F1054: .4byte gWindowTemplate_81E710C -_080F1058: .4byte 0x0000d138 - thumb_func_end sub_80F0FFC - - thumb_func_start sub_80F105C -sub_80F105C: @ 80F105C - push {lr} - ldr r0, _080F1078 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r2, _080F107C @ =0x0000876e - adds r0, r1, r2 - ldrh r0, [r0] - adds r2, 0xA - adds r1, r2 - ldrh r1, [r1] - bl sub_80F0A74 - pop {r0} - bx r0 - .align 2, 0 -_080F1078: .4byte gUnknown_083DFEC4 -_080F107C: .4byte 0x0000876e - thumb_func_end sub_80F105C - - thumb_func_start sub_80F1080 -sub_80F1080: @ 80F1080 - push {r4,lr} - ldr r1, _080F10A0 @ =gUnknown_083DFEC4 - ldr r0, [r1] - ldr r2, _080F10A4 @ =0x0000d160 - adds r0, r2 - ldrh r0, [r0] - adds r2, r1, 0 - cmp r0, 0xE - bls _080F1094 - b _080F1204 -_080F1094: - lsls r0, 2 - ldr r1, _080F10A8 @ =_080F10AC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080F10A0: .4byte gUnknown_083DFEC4 -_080F10A4: .4byte 0x0000d160 -_080F10A8: .4byte _080F10AC - .align 2, 0 -_080F10AC: - .4byte _080F10E8 - .4byte _080F1104 - .4byte _080F1110 - .4byte _080F111C - .4byte _080F1128 - .4byte _080F112E - .4byte _080F1134 - .4byte _080F1142 - .4byte _080F1160 - .4byte _080F1166 - .4byte _080F116C - .4byte _080F1180 - .4byte _080F1194 - .4byte _080F11DC - .4byte _080F11E2 -_080F10E8: - bl sub_80EEDE8 - ldr r0, _080F10FC @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r3, _080F1100 @ =0x0000d162 - adds r0, r3 - movs r1, 0xB - strb r1, [r0] - b _080F1218 - .align 2, 0 -_080F10FC: .4byte gUnknown_083DFEC4 -_080F1100: .4byte 0x0000d162 -_080F1104: - ldr r0, _080F110C @ =gWindowTemplate_81E70B8 - bl Text_LoadWindowTemplate - b _080F1218 - .align 2, 0 -_080F110C: .4byte gWindowTemplate_81E70B8 -_080F1110: - ldr r0, _080F1118 @ =gWindowTemplate_81E70B8 - bl MultistepInitMenuWindowBegin - b _080F1218 - .align 2, 0 -_080F1118: .4byte gWindowTemplate_81E70B8 -_080F111C: - bl MultistepInitMenuWindowContinue - cmp r0, 0 - beq _080F1126 - b _080F1218 -_080F1126: - b _080F1226 -_080F1128: - bl Menu_EraseScreen - b _080F1218 -_080F112E: - bl sub_80F1614 - b _080F1218 -_080F1134: - movs r0, 0x1 - bl sub_80F162C - lsls r0, 24 - cmp r0, 0 - beq _080F1218 - b _080F1226 -_080F1142: - ldr r0, _080F1154 @ =gUnknown_08E9FBA0 - ldr r1, _080F1158 @ =gUnknown_083DFEC4 - ldr r1, [r1] - ldr r2, _080F115C @ =0x0000934c - adds r1, r2 - bl LZ77UnCompWram - b _080F1218 - .align 2, 0 -_080F1154: .4byte gUnknown_08E9FBA0 -_080F1158: .4byte gUnknown_083DFEC4 -_080F115C: .4byte 0x0000934c -_080F1160: - bl sub_80F1238 - b _080F1218 -_080F1166: - bl sub_80F13FC - b _080F1218 -_080F116C: - ldr r0, _080F1178 @ =gPokenavRibbonView_Gfx - ldr r1, _080F117C @ =0x06008000 - bl LZ77UnCompVram - b _080F1218 - .align 2, 0 -_080F1178: .4byte gPokenavRibbonView_Gfx -_080F117C: .4byte 0x06008000 -_080F1180: - ldr r0, _080F118C @ =gUnknown_083E040C - ldr r1, _080F1190 @ =0x06008200 - bl LZ77UnCompVram - b _080F1218 - .align 2, 0 -_080F118C: .4byte gUnknown_083E040C -_080F1190: .4byte 0x06008200 -_080F1194: - ldr r0, _080F11CC @ =gPokenavRibbonView_Pal - movs r1, 0x20 - movs r2, 0x20 - bl LoadPalette - ldr r4, _080F11D0 @ =gUnknown_083E03A8 - adds r0, r4, 0 - movs r1, 0xF0 - movs r2, 0x20 - bl LoadPalette - ldr r0, _080F11D4 @ =gUnknown_083E3C60 - movs r1, 0x30 - movs r2, 0xA0 - bl LoadPalette - ldr r0, _080F11D8 @ =gUnknownPalette_81E6692 - movs r1, 0xB0 - movs r2, 0x20 - bl LoadPalette - adds r4, 0x1E - adds r0, r4, 0 - movs r1, 0xBF - movs r2, 0x2 - bl LoadPalette - b _080F1218 - .align 2, 0 -_080F11CC: .4byte gPokenavRibbonView_Pal -_080F11D0: .4byte gUnknown_083E03A8 -_080F11D4: .4byte gUnknown_083E3C60 -_080F11D8: .4byte gUnknownPalette_81E6692 -_080F11DC: - bl sub_80F1438 - b _080F1218 -_080F11E2: - ldr r1, _080F1208 @ =REG_BG2CNT - ldr r3, _080F120C @ =0x00001e02 - adds r0, r3, 0 - strh r0, [r1] - adds r1, 0x2 - ldr r3, _080F1210 @ =0x0000170b - adds r0, r3, 0 - strh r0, [r1] - adds r1, 0x42 - movs r0, 0 - strh r0, [r1] - ldr r1, [r2] - ldr r0, _080F1214 @ =0x0000d160 - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_080F1204: - movs r0, 0 - b _080F1228 - .align 2, 0 -_080F1208: .4byte REG_BG2CNT -_080F120C: .4byte 0x00001e02 -_080F1210: .4byte 0x0000170b -_080F1214: .4byte 0x0000d160 -_080F1218: - ldr r0, _080F1230 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r2, _080F1234 @ =0x0000d160 - adds r1, r2 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_080F1226: - movs r0, 0x1 -_080F1228: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080F1230: .4byte gUnknown_083DFEC4 -_080F1234: .4byte 0x0000d160 - thumb_func_end sub_80F1080 - - thumb_func_start sub_80F1238 -sub_80F1238: @ 80F1238 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - movs r6, 0x8B - ldr r0, _080F1318 @ =gUnknown_083DFEC4 - ldr r2, [r0] - ldr r1, _080F131C @ =0x0000bc8e - adds r0, r2, r1 - ldr r3, _080F1320 @ =0x0000bc8f - adds r1, r2, r3 - ldrb r0, [r0] - ldrb r1, [r1] - subs r0, r1 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x4] - movs r7, 0 - mov r5, sp - adds r4, r2, 0 -_080F1264: - movs r1, 0x80 - lsls r1, 6 - adds r0, r1, 0 - strh r0, [r5] - lsls r1, r7, 5 - adds r1, r6, r1 - lsls r1, 1 - ldr r2, _080F1324 @ =0x0000934c - adds r1, r2 - adds r1, r4, r1 - mov r0, sp - ldr r2, _080F1328 @ =0x01000012 - bl CpuSet - adds r0, r7, 0x1 - lsls r0, 16 - lsrs r7, r0, 16 - cmp r7, 0x7 - bls _080F1264 - ldr r3, [sp, 0x4] - lsls r0, r3, 16 - movs r7, 0 - mov r9, r0 - cmp r0, 0 - beq _080F1342 - ldr r0, _080F1318 @ =gUnknown_083DFEC4 - ldr r0, [r0] - mov r8, r0 - ldr r1, _080F132C @ =gUnknown_083E4698 - mov r10, r1 - ldr r5, _080F1324 @ =0x0000934c - add r5, r8 -_080F12A4: - ldr r0, _080F1330 @ =0x0000bc4c - add r0, r8 - adds r0, r7 - ldrb r1, [r0] - lsls r1, 2 - mov r0, r10 - adds r0, 0x2 - adds r0, r1, r0 - ldrb r2, [r0] - adds r2, 0x3 - lsls r2, 24 - add r1, r10 - ldrh r0, [r1] - lsls r0, 25 - movs r3, 0x80 - lsls r3, 21 - adds r0, r3 - lsrs r4, r0, 24 - lsls r1, r6, 1 - adds r1, r5, r1 - lsrs r2, 12 - adds r0, r2, 0 - orrs r0, r4 - strh r0, [r1] - adds r1, r6, 0x1 - lsls r1, 1 - adds r1, r5, r1 - movs r3, 0x80 - lsls r3, 3 - adds r0, r3, 0 - adds r3, r2, 0 - orrs r3, r0 - adds r0, r3, 0 - orrs r0, r4 - strh r0, [r1] - adds r0, r6, 0 - adds r0, 0x20 - lsls r0, 1 - adds r0, r5, r0 - adds r1, r4, 0x1 - orrs r2, r1 - strh r2, [r0] - adds r0, r6, 0 - adds r0, 0x21 - lsls r0, 1 - adds r0, r5, r0 - orrs r3, r1 - strh r3, [r0] - adds r4, r7, 0x1 - adds r0, r4, 0 - movs r1, 0x9 - bl __modsi3 - cmp r0, 0 - bne _080F1334 - adds r0, r6, 0 - adds r0, 0x30 - b _080F1336 - .align 2, 0 -_080F1318: .4byte gUnknown_083DFEC4 -_080F131C: .4byte 0x0000bc8e -_080F1320: .4byte 0x0000bc8f -_080F1324: .4byte 0x0000934c -_080F1328: .4byte 0x01000012 -_080F132C: .4byte gUnknown_083E4698 -_080F1330: .4byte 0x0000bc4c -_080F1334: - adds r0, r6, 0x2 -_080F1336: - lsls r0, 16 - lsrs r6, r0, 16 - lsls r0, r4, 16 - lsrs r7, r0, 16 - cmp r0, r9 - bcc _080F12A4 -_080F1342: - ldr r6, _080F13E8 @ =0x0000014b - movs r7, 0 - ldr r1, _080F13EC @ =gUnknown_083DFEC4 - ldr r0, [r1] - ldr r2, _080F13F0 @ =0x0000bc8f - adds r1, r0, r2 - ldrb r3, [r1] - cmp r7, r3 - bcs _080F13D8 - subs r2, 0x43 - adds r2, r0 - mov r10, r2 - ldr r3, _080F13F4 @ =gUnknown_083E4698 - mov r8, r3 - ldr r2, _080F13F8 @ =0x0000934c - adds r5, r0, r2 - mov r9, r1 -_080F1364: - ldr r3, [sp, 0x4] - adds r0, r3, r7 - add r0, r10 - ldrb r1, [r0] - lsls r1, 2 - mov r0, r8 - adds r0, 0x2 - adds r0, r1, r0 - ldrb r2, [r0] - adds r2, 0x3 - lsls r2, 24 - add r1, r8 - ldrh r0, [r1] - lsls r0, 25 - movs r1, 0x80 - lsls r1, 21 - adds r0, r1 - lsrs r4, r0, 24 - lsls r1, r6, 1 - adds r1, r5, r1 - lsrs r2, 12 - adds r0, r2, 0 - orrs r0, r4 - strh r0, [r1] - adds r1, r6, 0x1 - lsls r1, 1 - adds r1, r5, r1 - movs r3, 0x80 - lsls r3, 3 - adds r0, r3, 0 - adds r3, r2, 0 - orrs r3, r0 - adds r0, r3, 0 - orrs r0, r4 - strh r0, [r1] - adds r0, r6, 0 - adds r0, 0x20 - lsls r0, 1 - adds r0, r5, r0 - adds r1, r4, 0x1 - orrs r2, r1 - strh r2, [r0] - adds r0, r6, 0 - adds r0, 0x21 - lsls r0, 1 - adds r0, r5, r0 - orrs r3, r1 - strh r3, [r0] - adds r0, r6, 0x2 - lsls r0, 16 - lsrs r6, r0, 16 - adds r0, r7, 0x1 - lsls r0, 16 - lsrs r7, r0, 16 - mov r0, r9 - ldrb r0, [r0] - cmp r7, r0 - bcc _080F1364 -_080F13D8: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F13E8: .4byte 0x0000014b -_080F13EC: .4byte gUnknown_083DFEC4 -_080F13F0: .4byte 0x0000bc8f -_080F13F4: .4byte gUnknown_083E4698 -_080F13F8: .4byte 0x0000934c - thumb_func_end sub_80F1238 - - thumb_func_start sub_80F13FC -sub_80F13FC: @ 80F13FC - ldr r0, _080F141C @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F1420 @ =0x0000934c - adds r0, r1 - ldr r2, _080F1424 @ =0x0600b800 - ldr r1, _080F1428 @ =0x040000d4 - str r0, [r1] - str r2, [r1, 0x4] - ldr r0, _080F142C @ =0x84000140 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - ldr r1, _080F1430 @ =gPlttBufferUnfaded - ldr r0, _080F1434 @ =gPokenavRibbonView_Pal + 0x1C - ldrh r0, [r0] - strh r0, [r1] - bx lr - .align 2, 0 -_080F141C: .4byte gUnknown_083DFEC4 -_080F1420: .4byte 0x0000934c -_080F1424: .4byte 0x0600b800 -_080F1428: .4byte 0x040000d4 -_080F142C: .4byte 0x84000140 -_080F1430: .4byte gPlttBufferUnfaded -_080F1434: .4byte gPokenavRibbonView_Pal + 0x1C - thumb_func_end sub_80F13FC - - thumb_func_start sub_80F1438 -sub_80F1438: @ 80F1438 - push {r4,r5,lr} - ldr r0, _080F1470 @ =gUnknown_083DFEC4 - ldr r4, [r0] - ldr r1, _080F1474 @ =0x00008829 - adds r0, r4, r1 - movs r1, 0xD - movs r2, 0x1 - bl Menu_PrintText - ldr r0, _080F1478 @ =0x00008788 - adds r5, r4, r0 - ldr r1, _080F147C @ =0x0000876e - adds r4, r1 - ldrh r1, [r4] - adds r1, 0x1 - lsls r1, 16 - lsrs r1, 16 - adds r0, r5, 0 - bl sub_80F445C - adds r0, r5, 0 - movs r1, 0x1 - movs r2, 0x5 - bl Menu_PrintText - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F1470: .4byte gUnknown_083DFEC4 -_080F1474: .4byte 0x00008829 -_080F1478: .4byte 0x00008788 -_080F147C: .4byte 0x0000876e - thumb_func_end sub_80F1438 - - thumb_func_start sub_80F1480 -sub_80F1480: @ 80F1480 - push {lr} - movs r0, 0xC - movs r1, 0xD - movs r2, 0x1B - movs r3, 0x10 - bl Menu_EraseWindowRect - pop {r0} - bx r0 - thumb_func_end sub_80F1480 - - thumb_func_start sub_80F1494 -sub_80F1494: @ 80F1494 - push {r4-r7,lr} - ldr r0, _080F14D4 @ =gUnknown_083DFEC8 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 4 - adds r6, r0, r1 - ldr r2, _080F14D8 @ =0x00000a98 - adds r7, r0, r2 - ldr r0, _080F14DC @ =gUnknown_083DFEC4 - ldr r3, [r0] - ldr r4, _080F14E0 @ =0x0000bc91 - adds r1, r3, r4 - ldrb r0, [r1] - cmp r0, 0x2 - bhi _080F14F0 - ldr r5, _080F14E4 @ =gUnknown_020388B4 - adds r1, r0, 0 - lsls r0, r1, 3 - subs r4, 0x1 - adds r2, r3, r4 - adds r0, r1 - ldrb r2, [r2] - adds r0, r2 - strh r0, [r5] - ldr r1, _080F14E8 @ =0x0000bc4c - adds r0, r3, r1 - ldrh r2, [r5] - adds r0, r2 - ldrb r0, [r0] - strh r0, [r5] - ldr r4, _080F14EC @ =gRibbonDescriptions - b _080F152E - .align 2, 0 -_080F14D4: .4byte gUnknown_083DFEC8 -_080F14D8: .4byte 0x00000a98 -_080F14DC: .4byte gUnknown_083DFEC4 -_080F14E0: .4byte 0x0000bc91 -_080F14E4: .4byte gUnknown_020388B4 -_080F14E8: .4byte 0x0000bc4c -_080F14EC: .4byte gRibbonDescriptions -_080F14F0: - ldr r5, _080F1558 @ =gUnknown_020388B4 - ldr r4, _080F155C @ =0x0000bc8e - adds r0, r3, r4 - ldrb r0, [r0] - ldr r2, _080F1560 @ =0x0000bc8f - adds r1, r3, r2 - ldrb r1, [r1] - subs r0, r1 - strh r0, [r5] - ldrh r1, [r5] - adds r4, 0x2 - adds r0, r3, r4 - ldrb r0, [r0] - adds r1, r0 - subs r2, 0x43 - adds r0, r3, r2 - adds r0, r1 - ldrb r0, [r0] - strh r0, [r5] - ldr r0, _080F1564 @ =gSaveBlock1 - ldrh r1, [r5] - adds r0, r1 - ldr r4, _080F1568 @ =0x000030f7 - adds r0, r4 - ldrb r0, [r0] - strh r0, [r5] - cmp r0, 0 - beq _080F1570 - subs r0, 0x1 - strh r0, [r5] - ldr r4, _080F156C @ =gGiftRibbonDescriptions -_080F152E: - ldrh r0, [r5] - lsls r0, 3 - adds r0, r4 - ldr r1, [r0] - adds r0, r6, 0 - movs r2, 0x80 - movs r3, 0 - bl AlignStringInMenuWindow - ldrh r0, [r5] - lsls r0, 3 - adds r4, 0x4 - adds r0, r4 - ldr r1, [r0] - adds r0, r7, 0 - movs r2, 0x80 - movs r3, 0 - bl AlignStringInMenuWindow - b _080F158A - .align 2, 0 -_080F1558: .4byte gUnknown_020388B4 -_080F155C: .4byte 0x0000bc8e -_080F1560: .4byte 0x0000bc8f -_080F1564: .4byte gSaveBlock1 -_080F1568: .4byte 0x000030f7 -_080F156C: .4byte gGiftRibbonDescriptions -_080F1570: - ldr r4, _080F15A4 @ =gEmptyString_81E72B0 - adds r0, r6, 0 - adds r1, r4, 0 - movs r2, 0x80 - movs r3, 0 - bl AlignStringInMenuWindow - adds r0, r7, 0 - adds r1, r4, 0 - movs r2, 0x80 - movs r3, 0 - bl AlignStringInMenuWindow -_080F158A: - adds r0, r6, 0 - movs r1, 0xC - movs r2, 0xD - bl Menu_PrintText - adds r0, r7, 0 - movs r1, 0xC - movs r2, 0xF - bl Menu_PrintText - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080F15A4: .4byte gEmptyString_81E72B0 - thumb_func_end sub_80F1494 - - thumb_func_start sub_80F15A8 -sub_80F15A8: @ 80F15A8 - push {r4,r5,lr} - movs r0, 0xC - movs r1, 0xD - movs r2, 0x1B - movs r3, 0x10 - bl Menu_EraseWindowRect - ldr r0, _080F1600 @ =gUnknown_083DFEC4 - ldr r4, [r0] - ldr r0, _080F1604 @ =0x00008788 - adds r5, r4, r0 - ldr r1, _080F1608 @ =gOtherText_Ribbons - adds r0, r5, 0 - bl StringCopy - adds r2, r0, 0 - movs r0, 0 - strb r0, [r2] - adds r2, 0x1 - ldr r1, _080F160C @ =0x000087dc - adds r0, r4, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - lsls r0, 2 - adds r4, r0 - ldr r0, _080F1610 @ =0x0000893c - adds r4, r0 - ldrb r1, [r4] - adds r0, r2, 0 - movs r2, 0 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - adds r2, r0, 0 - movs r0, 0xFF - strb r0, [r2] - adds r0, r5, 0 - movs r1, 0xC - movs r2, 0xD - bl Menu_PrintText - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080F1600: .4byte gUnknown_083DFEC4 -_080F1604: .4byte 0x00008788 -_080F1608: .4byte gOtherText_Ribbons -_080F160C: .4byte 0x000087dc -_080F1610: .4byte 0x0000893c - thumb_func_end sub_80F15A8 - - thumb_func_start sub_80F1614 -sub_80F1614: @ 80F1614 - ldr r0, _080F1624 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _080F1628 @ =0x00008764 - adds r0, r1 - movs r1, 0 - strh r1, [r0] - bx lr - .align 2, 0 -_080F1624: .4byte gUnknown_083DFEC4 -_080F1628: .4byte 0x00008764 - thumb_func_end sub_80F1614 - thumb_func_start sub_80F162C sub_80F162C: @ 80F162C push {lr} @@ -6702,7 +4717,7 @@ _080F3A78: ldm r0!, {r3,r6,r7} stm r1!, {r3,r6,r7} mov r3, sp - ldr r1, _080F3AE4 @ =gUnknown_083E4698 + ldr r1, _080F3AE4 @ =gPokenavRibbonsIconGfx lsls r2, 2 adds r0, r2, r1 ldrh r0, [r0] @@ -6738,7 +4753,7 @@ _080F3AD4: .4byte 0x0000bc8e _080F3AD8: .4byte 0x0000bc8f _080F3ADC: .4byte 0x0000bc4c _080F3AE0: .4byte gSpriteTemplate_83E476C -_080F3AE4: .4byte gUnknown_083E4698 +_080F3AE4: .4byte gPokenavRibbonsIconGfx _080F3AE8: lsls r0, r1, 4 adds r0, r1 @@ -12998,7 +11013,7 @@ _080F6B54: bl sub_80F66E0 b _080F6BC6 _080F6B6E: - bl sub_80F1238 + bl DrawMonRibbonIcons ldr r0, _080F6B7C @ =gUnknown_083DFEC4 ldr r1, [r0] ldr r2, _080F6B80 @ =0x000087de @@ -13715,7 +11730,7 @@ _080F7194: .4byte 0x00008788 _080F7198: .4byte 0x0000876e _080F719C: .4byte 0x000087de _080F71A0: - bl sub_80F0CD8 + bl LoadTrainerEyesDescriptionLines ldr r0, _080F71D4 @ =gUnknown_083DFEC4 ldr r1, [r0] ldr r0, _080F71D8 @ =0x0000bc95 diff --git a/data/pokenav.s b/data/pokenav.s index cb0e98472..485568157 100644 --- a/data/pokenav.s +++ b/data/pokenav.s @@ -700,7 +700,7 @@ gUnknown_083E4678:: @ 83E4678 .incbin "graphics/pokenav/83E4678.gbapal" .align 2 -gUnknown_083E4698:: @ 83E4698 +gPokenavRibbonsIconGfx:: @ 83E4698 .2byte 0, 0 .2byte 1, 0 .2byte 2, 0 diff --git a/include/pokenav.h b/include/pokenav.h index f77f93e2d..0abed5c63 100644 --- a/include/pokenav.h +++ b/include/pokenav.h @@ -5,7 +5,9 @@ struct UnkPokenavStruct_Sub { /*0x0*/ u16 unk0; - /*0x2*/ u8 filler2[6]; + /*0x2*/ u16 unk2; + /*0x4*/ u8 unk4; + /*0x5*/ u8 unk5; }; struct UnkPokenavStruct_Sub1 { @@ -37,9 +39,10 @@ struct UnkPokenavStruct_Sub3 { }; struct UnkUsePokeblockSub { - /*0*/ u8 fil0[2]; - /*2*/ u8 partyIdx:5; - /*2*/ u16 unk2:9; + /*0x0*/ u8 unk0; + /*0x1*/ u8 filler1[1]; + /*0x2*/ u8 partyIdx:5; + /*0x2*/ u16 unk2:9; }; struct UnkPokenavStruct { @@ -65,14 +68,23 @@ struct UnkPokenavStruct { /*0x769E*/ u8 unk769E; /*0x769F*/ u8 filler769F[0xB]; /*0x76AA*/ u8 unk76AA; - /*0x76AB*/ u8 filler76AB[0x10bd]; + /*0x76AB*/ u8 filler76AB[0x10b9]; + /*0x8764*/ u16 unk8764; /*0x8768*/ struct UnkPokenavStruct_Sub2 *unk8768; - /*0x876C*/ u8 filler876C[0x2]; - /*0x876E*/ u8 unk876E; - /*0x876F*/ u8 filler876F[0x7]; - /*0x8776*/ u16 unk8776; + /*0x876C*/ s16 unk876C; + /*0x876E*/ s16 unk876E; + /*0x8770*/ s16 unk8770; + /*0x8772*/ s16 unk8772; + /*0x8774*/ s16 unk8774; + /*0x8776*/ s16 unk8776; /*0x8778*/ u16 unk8778; - /*0x877A*/ u8 filler877A[0xE]; + /*0x877A*/ s16 unk877A; + /*0x877C*/ s16 unk877C; + /*0x877E*/ u16 unk877E; + /*0x8780*/ u16 unk8780; + /*0x8782*/ u8 filler8782[0x2]; + /*0x8784*/ u16 unk8784; + /*0x8786*/ u16 unk8786; /*0x8788*/ u8 unk8788[0x40]; /*0x87C8*/ u8 unk87C8; /*0x87C9*/ u8 filler87C9; @@ -96,7 +108,14 @@ struct UnkPokenavStruct { /*0x9004*/ u8 unk9004[3][20]; /*0x9040*/ u8 unk9040[0x304]; /*0x9344*/ u8 unk9344; - /*0x9345*/ u8 filler9345[0x2955]; + /*0x9345*/ u8 filler9345[7]; + /*0x934C*/ u16 unk934C[0x1480]; + /*0xBC4C*/ u8 unkBC4C[0x42]; + /*0xBC8E*/ u8 unkBC8E; + /*0xBC8F*/ u8 unkBC8F; + /*0xBC90*/ u8 unkBC90; + /*0xBC91*/ u8 unkBC91; + /*0xBC92*/ u8 fillerBC92[0x8]; /*0xBC9A*/ u8 unkBC9A; /*0xBC9B*/ u8 unkBC9B; /*0xBC9C*/ u8 unkBC9C[22][200]; @@ -106,11 +125,16 @@ struct UnkPokenavStruct { /*0xCE50*/ u16 unkCE50; /*0xCE52*/ u16 palettesCE52[30]; /*0xCE8E*/ u16 palettesCE8E[0x2D]; - /*0xCEE8*/ struct UnkPokenavStruct_Sub unkCEE8[78]; + /*0xCEE8*/ struct UnkPokenavStruct_Sub unkCEE8[69]; + /*0xD110*/ const u8 *trainerEyeDescriptionLines[4]; + /*0xD120*/ u8 fillerD114[0x18]; + /*0xD138*/ u8 unkD138[0x20]; /*0xD158*/ u16 unkD158; - /*0xD15A*/ u8 fillerD15A[6]; + /*0xD15A*/ u8 fillerD15A[2]; + /*0xD15C*/ u16 unkD15C; + /*0xD15E*/ u8 fillerD15E[2]; /*0xD160*/ u16 unkD160; - /*0xD162*/ u8 unkD162[2]; + /*0xD162*/ u8 unkD162; /*0xD164*/ struct UnkPokenavStruct_Sub1 unkD164; }; diff --git a/src/contest_effect.c b/src/contest_effect.c index d97f38138..17779a0c6 100644 --- a/src/contest_effect.c +++ b/src/contest_effect.c @@ -615,150 +615,40 @@ static void ContestEffect_QualityDependsOnTiming(void) sContestantStatus[shared192D0.contestant].appeal2 = appeal; } -#ifdef NONMATCHING -// Not even close, send help -// Works well if it’s the same type as the one before. static void ContestEffect_BetterIfSameType(void) { - s8 r4; - s8 r2; + s8 turnOrder = shared192D0.turnOrder[shared192D0.contestant]; + s8 i = turnOrder - 1, j; + u16 move; - for (r4 = shared192D0.turnOrder[shared192D0.contestant]; r4 > 0; r4--) + if (turnOrder == 0) + return; + + while (1) { - for (r2 = 0; r2 < 4; r2++) + for (j = 0; j < 4; j++) { - if (shared192D0.turnOrder[r2] == r4 - 1) + if (shared192D0.turnOrder[j] == i) break; } - if (!(sContestantStatus[r2].noMoreTurns || sContestantStatus[r2].nervous || sContestantStatus[r2].numTurnsSkipped)) + if (sContestantStatus[j].noMoreTurns || sContestantStatus[j].nervous || sContestantStatus[j].numTurnsSkipped) + { + if (--i < 0) + return; + } + else { - u16 move = sContestantStatus[shared192D0.contestant].currMove; - - if (gContestMoves[move].contestCategory == gContestMoves[sContestantStatus[r2].currMove].contestCategory) - { - sContestantStatus[shared192D0.contestant].appeal2 += gContestEffects[gContestMoves[move].effect].appeal * 2; - SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_SAME_TYPE_GOOD); - } break; } } + + move = sContestantStatus[shared192D0.contestant].currMove; + if (gContestMoves[move].contestCategory == gContestMoves[sContestantStatus[j].currMove].contestCategory) + { + sContestantStatus[shared192D0.contestant].appeal2 += gContestEffects[gContestMoves[move].effect].appeal * 2; + SetContestantEffectStringID(shared192D0.contestant, CONTEST_STRING_SAME_TYPE_GOOD); + } } -#else -NAKED void ContestEffect_BetterIfSameType(void) -{ - asm_unified("\tpush {r4-r7,lr}\n" - "\tldr r1, _080B8940 @ =gSharedMem + 0x192D0\n" - "\tldrb r0, [r1, 0x11]\n" - "\tadds r0, r1\n" - "\tmovs r2, 0\n" - "\tldrsb r2, [r0, r2]\n" - "\tsubs r0, r2, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r4, r0, 24\n" - "\tmov r12, r1\n" - "\tcmp r2, 0\n" - "\tbeq _080B8994\n" - "\tldrb r5, [r1]\n" - "\tmov r6, r12\n" - "\tsubs r6, 0x70\n" - "_080B88EA:\n" - "\tmovs r2, 0\n" - "\tlsls r0, r4, 24\n" - "\tasrs r1, r0, 24\n" - "\tadds r4, r0, 0\n" - "\tcmp r5, r1\n" - "\tbeq _080B8910\n" - "\tldr r3, _080B8940 @ =gSharedMem + 0x192D0\n" - "_080B88F8:\n" - "\tlsls r0, r2, 24\n" - "\tmovs r2, 0x80\n" - "\tlsls r2, 17\n" - "\tadds r0, r2\n" - "\tlsrs r2, r0, 24\n" - "\tasrs r0, 24\n" - "\tcmp r0, 0x3\n" - "\tbgt _080B8910\n" - "\tadds r0, r3\n" - "\tldrb r0, [r0]\n" - "\tcmp r0, r1\n" - "\tbne _080B88F8\n" - "_080B8910:\n" - "\tlsls r2, 24\n" - "\tasrs r1, r2, 24\n" - "\tlsls r0, r1, 3\n" - "\tsubs r0, r1\n" - "\tlsls r0, 2\n" - "\tadds r3, r0, r6\n" - "\tldrb r1, [r3, 0xB]\n" - "\tmovs r0, 0x80\n" - "\tands r0, r1\n" - "\tadds r7, r2, 0\n" - "\tcmp r0, 0\n" - "\tbne _080B8932\n" - "\tldrb r1, [r3, 0xC]\n" - "\tmovs r0, 0x7\n" - "\tands r0, r1\n" - "\tcmp r0, 0\n" - "\tbeq _080B8944\n" - "_080B8932:\n" - "\tmovs r1, 0xFF\n" - "\tlsls r1, 24\n" - "\tadds r0, r4, r1\n" - "\tlsrs r4, r0, 24\n" - "\tcmp r0, 0\n" - "\tblt _080B8994\n" - "\tb _080B88EA\n" - "\t.align 2, 0\n" - "_080B8940: .4byte gSharedMem + 0x192D0\n" - "_080B8944:\n" - "\tmov r2, r12\n" - "\tldrb r1, [r2, 0x11]\n" - "\tlsls r0, r1, 3\n" - "\tsubs r0, r1\n" - "\tlsls r0, 2\n" - "\tmov r3, r12\n" - "\tsubs r3, 0x70\n" - "\tadds r5, r0, r3\n" - "\tldrh r0, [r5, 0x6]\n" - "\tldr r4, _080B899C @ =gContestMoves\n" - "\tlsls r0, 3\n" - "\tadds r6, r0, r4\n" - "\tldrb r2, [r6, 0x1]\n" - "\tlsls r2, 29\n" - "\tasrs r1, r7, 24\n" - "\tlsls r0, r1, 3\n" - "\tsubs r0, r1\n" - "\tlsls r0, 2\n" - "\tadds r0, r3\n" - "\tldrh r0, [r0, 0x6]\n" - "\tlsls r0, 3\n" - "\tadds r0, r4\n" - "\tldrb r0, [r0, 0x1]\n" - "\tlsls r0, 29\n" - "\tcmp r2, r0\n" - "\tbne _080B8994\n" - "\tldr r1, _080B89A0 @ =gContestEffects\n" - "\tldrb r0, [r6]\n" - "\tlsls r0, 2\n" - "\tadds r0, r1\n" - "\tldrb r0, [r0, 0x1]\n" - "\tlsls r0, 1\n" - "\tldrh r1, [r5, 0x2]\n" - "\tadds r0, r1\n" - "\tstrh r0, [r5, 0x2]\n" - "\tmov r2, r12\n" - "\tldrb r0, [r2, 0x11]\n" - "\tmovs r1, 0x1F\n" - "\tbl SetContestantEffectStringID\n" - "_080B8994:\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" - "_080B899C: .4byte gContestMoves\n" - "_080B89A0: .4byte gContestEffects"); -} -#endif // Works well if different in type than the one before. static void ContestEffect_BetterIfDiffType(void) diff --git a/src/pokenav_before.c b/src/pokenav_before.c index 21394f348..b33fa588c 100644 --- a/src/pokenav_before.c +++ b/src/pokenav_before.c @@ -15,11 +15,13 @@ #include "region_map.h" #include "constants/songs.h" #include "string_util.h" +#include "strings.h" #include "sound.h" #include "task.h" #include "text.h" #include "scanline_effect.h" #include "pokemon_storage_system.h" +#include "constants/game_stat.h" struct UnknownPokenav0 { @@ -87,6 +89,11 @@ struct UnknownPokenav0_1 { s8 var6dae; }; +struct PokenavRibbonIconGfx { + u16 baseTile; + u8 paletteNum; +}; + IWRAM_DATA void (*gUnknown_03000744)(void); extern const u8 gUnknown_083E0314[]; @@ -129,6 +136,22 @@ extern const u8 gPokenavHoennMapMisc_Gfx[]; extern const u8 gUnknown_08E99FB0[]; extern const u8 gUnknown_08E9A100[]; extern const u16 gPokenavHoennMap1_Pal[]; +extern void (*const gUnknown_083E3270[])(u16, u16); +extern const u8 gUnknown_083E039C[]; +extern const u8 gUnknown_083E03A0[]; +extern const u8 *const gTrainerEyeDescriptions[]; +extern const u8 gUnknown_08E9FBA0[]; +extern const u8 gPokenavRibbonView_Gfx[]; +extern const u8 gUnknown_083E040C[]; +extern const u16 gPokenavRibbonView_Pal[]; +extern const u16 gUnknown_083E03A8[]; +extern const u16 gUnknown_083E3C60[]; +extern const u16 gPokenavRibbonsIconGfx[][2]; +extern const u8 *const gRibbonDescriptions[][2]; +extern const u8 *const gGiftRibbonDescriptions[][2]; + +extern u16 gUnknown_020388B4; + // TODO: decompile the debug code so the compiler doesn't complain about // unused static functions @@ -171,15 +194,40 @@ static void sub_80EE58C(); static void sub_80EE658(); static void sub_80EE8F4(); static void sub_80EEDC4(); +static void ShowMapNamePopUpWindow(void); +static void sub_80F0954(u16, u16, u16); +static bool8 sub_80F098C(void); +void sub_80F445C(u8*, u16); +static void sub_80F081C(u8); +bool8 sub_80F0944(void); +u8 *sub_80F4428(u8*, u16, u8); +void sub_80F700C(u8*, u16); +static void sub_80F0B24(void); +static bool8 sub_80F0B44(void); +static void sub_80F0C28(void); +static bool8 sub_80F0C48(void); +void LoadTrainerEyesDescriptionLines(void); +bool8 sub_80F0D5C(void); +static void sub_80F0EC0(void); +static bool8 sub_80F0EF4(void); +static void sub_80F0F64(void); +static void sub_80F0FA0(void); +static bool8 sub_80F0FEC(void); +static bool8 sub_80F0718(void); +void sub_80F0FFC(u8); +void sub_80F19DC(u8*); +static bool8 sub_80F1080(void); +void sub_80F1614(void); +void DrawMonRibbonIcons(void); +void sub_80F13FC(void); +void sub_80F1438(void); +static void sub_80F1494(void); -extern bool8 sub_80F0944(void); -extern void sub_80F081C(); extern void sub_80F0900(void); extern void sub_80F443C(u8 *, u16); extern bool8 sub_80F162C(u8); extern void sub_80F01E0(u16); extern void sub_80F01A4(void); -extern void sub_80F1614(void); extern void sub_80EFD3C(void); extern void sub_8095C8C(); extern void sub_80EFDA0(void); @@ -193,41 +241,26 @@ extern void sub_80EF54C(u8); extern void sub_80EF58C(u8); extern void sub_80F6FFC(); extern void sub_80F3294(); -extern void sub_80F0B24(); -extern bool8 sub_80F0B44(); -extern void sub_80F0F64(); -extern bool8 sub_80F0FEC(); extern void sub_80F6FB8(); extern void sub_80F6DB8(); -extern void sub_80F0CD8(); extern bool8 sub_80F6E9C(); -extern bool8 sub_80F0D5C(); extern bool8 sub_80F6ED4(); -extern bool8 sub_80F0EF4(); extern void sub_80F2FB0(); -extern void sub_80F0FA0(); -extern void sub_80F0C28(); -extern bool8 sub_80F0C48(); extern bool8 sub_80F70FC(); extern void sub_80F708C(u32); extern void sub_80F4394(); -extern void sub_80F0EC0(); -extern void sub_80F700C(); extern void sub_80F42C4(); -extern void sub_80F0FFC(); extern void sub_80F6F10(); extern void sub_80F3C2C(); -extern void sub_80F15A8(); +static extern void sub_80F15A8(void); extern void sub_80F6A4C(); extern bool8 sub_80F6AF0(); extern void sub_80F3B00(); extern bool8 sub_80F3B58(); -extern void sub_80F1494(); extern u8 sub_80F68E8(); extern void sub_80F3B94(); extern bool8 sub_80F3BD4(); extern void sub_80F66E0(); -extern bool8 sub_80F1080(); extern void sub_80F38B8(); extern bool8 sub_80F38EC(); extern void sub_80F638C(); @@ -238,8 +271,6 @@ extern bool8 sub_80EFF68(); extern void sub_80F35B4(); extern void sub_80F6134(); extern u8 sub_80F5DD4(); -extern void ShowMapNamePopUpWindow(); -extern bool8 sub_80F0718(); extern bool8 sub_80F3264(); extern void sub_80F4D44(); extern bool8 sub_80F4D88(); @@ -3131,7 +3162,7 @@ void sub_80EE658() ewram0_10.var304++; break; case 6: - sub_80F0CD8(); + LoadTrainerEyesDescriptionLines(); ewram0_10.var304++; case 7: if (!sub_80F6E9C() && !sub_80F0D5C()) @@ -4484,7 +4515,7 @@ bool8 sub_80EFF68(void) { case 0: sub_80EEDE8(); - gUnknown_083DFEC4->unkD162[0] = 11; + gUnknown_083DFEC4->unkD162 = 11; break; case 1: Text_LoadWindowTemplate(&gWindowTemplate_81E7080); @@ -4587,7 +4618,6 @@ void sub_80F0264(u8 a) } } -#ifdef NONMATCHING // small nonmatching part is in the third else clause in case 7. bool8 sub_80F02A0(void) { const u16 *pointer; @@ -4598,7 +4628,7 @@ bool8 sub_80F02A0(void) sub_80EEDE8(); gUnknown_083DFEC4->unk87C8 = gUnknown_083DFEC4->unk87CA == 1; - gUnknown_083DFEC4->unkD162[0] = 11; + gUnknown_083DFEC4->unkD162 = 11; break; case 1: Text_LoadWindowTemplate(&gWindowTemplate_81E70D4); @@ -4647,8 +4677,7 @@ bool8 sub_80F02A0(void) else { LoadPalette(gUnknown_08E9F9E8, 0x30, 0x20); - pointer = &gUnknown_08E9F9E8[5]; - gPlttBufferUnfaded[0] = gUnknown_08E9F9E8[5]; + gPlttBufferUnfaded[0] = *(pointer = &gUnknown_08E9F9E8[5]); LoadPalette(gUnknown_083E0314, 0x50, 0x20); LoadPalette(&gUnknown_083E02B4[1], 0xB1, 0x2); LoadPalette(&gUnknown_083E02B4[8], 0xB5, 0x2); @@ -4690,7 +4719,7 @@ bool8 sub_80F02A0(void) else { sub_80F081C(0); - sub_80F0FFC(gUnknown_083DFEC4->unk876E); + sub_80F0FFC((u8)gUnknown_083DFEC4->unk876E); } break; case 14: @@ -4712,414 +4741,866 @@ bool8 sub_80F02A0(void) gUnknown_083DFEC4->unk306++; return TRUE; } + +void sub_80F063C(s16 arg0) +{ + s16 var0; + s16 var1; + s16 var2; + + gUnknown_083DFEC4->unk877C = arg0 * 16; + gUnknown_083DFEC4->unk877A = (arg0 == 1 || arg0 == -1) ? 4 : 8; + if (arg0 < 0) + { + gUnknown_083DFEC4->unk877A *= -1; + var0 = arg0 * 2 + gUnknown_083DFEC4->unk8778; + var1 = arg0 + gUnknown_083DFEC4->unk8770; + if (var1 < 0) + var1 += gUnknown_083DFEC4->unk8774 + 1; + + arg0 *= -1; + } + else + { + var0 = gUnknown_083DFEC4->unk8778 + 16; + var1 = gUnknown_083DFEC4->unk8772 + 1; + } + + if (var1 > gUnknown_083DFEC4->unk8774) + var1 = 0; + + var2 = var0 & 0x1F; + sub_80F0954(var1, var2, arg0); +} + +static bool8 sub_80F0718(void) +{ + if (!sub_80F098C()) + { + if (gUnknown_083DFEC4->unk877C == 0) + return FALSE; + + gUnknown_083DFEC4->unk877C -= gUnknown_083DFEC4->unk877A; + gUnknown_083DFEC4->unk8776 += gUnknown_083DFEC4->unk877A; + gUnknown_083DFEC4->unk8776 &= 0xFF; + REG_BG3VOFS = gUnknown_083DFEC4->unk8776; + if (gUnknown_083DFEC4->unk877C == 0) + { + gUnknown_083DFEC4->unk8778 = ((8 + gUnknown_083DFEC4->unk8776) & 0xFF) / 8; + return FALSE; + } + } + + return TRUE; +} + +static void ShowMapNamePopUpWindow(void) +{ + switch (gUnknown_083DFEC4->unk87CA) + { + case 0: + sub_80F443C(gUnknown_083DFEC4->unk8788, gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk876E].unk2); + break; + case 1: + sub_80F445C(gUnknown_083DFEC4->unk8788, gUnknown_083DFEC4->unk876E + 1); + break; + default: + return; + } + + BasicInitMenuWindow(&gWindowTemplate_81E710C); + Menu_PrintText(gUnknown_083DFEC4->unk8788, 1, 6); +} + +void sub_80F081C(u8 arg0) +{ + u32 numTrainerBattles; + + BasicInitMenuWindow(&gWindowTemplate_81E710C); + switch (arg0) + { + case 0: + case 1: + MenuPrint_RightAligned(gOtherText_NumberRegistered, 10, 9); + if (arg0 != 0) + break; + // fall through + case 2: + ConvertIntToDecimalStringN( + gUnknown_083DFEC4->unk8788, + gUnknown_083DFEC4->unk8774 + 1, + STR_CONV_MODE_RIGHT_ALIGN, + 5); + MenuPrint_RightAligned(gUnknown_083DFEC4->unk8788, 10, 11); + if (arg0 != 0) + break; + // fall through + case 3: + MenuPrint_RightAligned(gOtherText_NumberBattles, 10, 13); + if (arg0 != 0) + break; + // fall through + case 4: + numTrainerBattles = GetGameStat(GAME_STAT_TRAINER_BATTLES); + if (numTrainerBattles > 99999) + numTrainerBattles = 99999; + + ConvertIntToDecimalStringN( + gUnknown_083DFEC4->unk8788, + numTrainerBattles, + STR_CONV_MODE_RIGHT_ALIGN, + 5); + MenuPrint_RightAligned(gUnknown_083DFEC4->unk8788, 10, 15); + break; + } +} + +static void sub_80F08E4(void) +{ + BasicInitMenuWindow(&gWindowTemplate_81E710C); + Menu_EraseWindowRect(0, 9, 11, 16); +} + +void sub_80F0900(void) +{ + s16 var0 = (gUnknown_083DFEC4->unk8772 - gUnknown_083DFEC4->unk8770) + 1; + if (var0 < 8) + Menu_EraseWindowRect(12, 1, 31, 15); + + sub_80F0954(gUnknown_083DFEC4->unk8770, 0, var0); +} + +bool8 sub_80F0944(void) +{ + return sub_80F098C(); +} + +static void sub_80F0954(u16 arg0, u16 arg1, u16 arg2) +{ + gUnknown_083DFEC4->unk877E = arg0; + gUnknown_083DFEC4->unk8780 = arg1; + gUnknown_083DFEC4->unk8784 = arg2; + gUnknown_083DFEC4->unk8786 = 0; +} + +#ifdef NONMATCHING +static bool8 sub_80F098C(void) +{ + register u16 zero asm("r8"); + if (!gUnknown_083DFEC4->unk8784) + { + DONE: + return FALSE; + } + + zero = 0; + gUnknown_083E3270[gUnknown_083DFEC4->unk87CA](gUnknown_083DFEC4->unk877E, gUnknown_083DFEC4->unk8780); + if (!--gUnknown_083DFEC4->unk8784) + goto DONE; + + if ((++gUnknown_083DFEC4->unk877E & 0xFFFF) > gUnknown_083DFEC4->unk8774) + gUnknown_083DFEC4->unk877E = zero; + + gUnknown_083DFEC4->unk8780 += 2; + gUnknown_083DFEC4->unk8780 &= 0x1F; + return TRUE; +} #else NAKED -bool8 sub_80F02A0(void) +static bool8 sub_80F098C(void) { asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - mov r6, r8\n\ - push {r6}\n\ - sub sp, 0x18\n\ - ldr r1, _080F02C4 @ =gUnknown_083DFEC4\n\ - ldr r0, [r1]\n\ - ldr r2, _080F02C8 @ =0x00000306\n\ - adds r0, r2\n\ - ldrh r0, [r0]\n\ - adds r2, r1, 0\n\ - cmp r0, 0xE\n\ - bls _080F02BA\n\ - b _080F05FA\n\ -_080F02BA:\n\ - lsls r0, 2\n\ - ldr r1, _080F02CC @ =_080F02D0\n\ + push {r4-r7,lr}\n\ + mov r7, r8\n\ + push {r7}\n\ + ldr r0, _080F09A4 @ =gUnknown_083DFEC4\n\ + ldr r6, [r0]\n\ + ldr r0, _080F09A8 @ =0x00008784\n\ + adds r7, r6, r0\n\ + ldrh r0, [r7]\n\ + cmp r0, 0\n\ + bne _080F09AC\n\ +_080F09A0:\n\ + movs r0, 0\n\ + b _080F0A02\n\ + .align 2, 0\n\ +_080F09A4: .4byte gUnknown_083DFEC4\n\ +_080F09A8: .4byte 0x00008784\n\ +_080F09AC:\n\ + movs r1, 0\n\ + mov r8, r1\n\ + ldr r1, _080F0A0C @ =gUnknown_083E3270\n\ + ldr r2, _080F0A10 @ =0x000087ca\n\ + adds r0, r6, r2\n\ + ldrb r2, [r0]\n\ + lsls r2, 2\n\ + adds r2, r1\n\ + ldr r0, _080F0A14 @ =0x0000877e\n\ + adds r4, r6, r0\n\ + ldrh r0, [r4]\n\ + ldr r1, _080F0A18 @ =0x00008780\n\ + adds r5, r6, r1\n\ + ldrh r1, [r5]\n\ + ldr r2, [r2]\n\ + bl _call_via_r2\n\ + ldrh r0, [r7]\n\ + subs r0, 0x1\n\ + strh r0, [r7]\n\ + ldr r2, _080F0A1C @ =0x0000ffff\n\ + adds r1, r2, 0\n\ + lsls r0, 16\n\ + cmp r0, 0\n\ + beq _080F09A0\n\ + ldrh r0, [r4]\n\ + adds r0, 0x1\n\ + strh r0, [r4]\n\ + ands r0, r1\n\ + ldr r2, _080F0A20 @ =0x00008774\n\ + adds r1, r6, r2\n\ + movs r2, 0\n\ + ldrsh r1, [r1, r2]\n\ + cmp r0, r1\n\ + ble _080F09F6\n\ + mov r0, r8\n\ + strh r0, [r4]\n\ +_080F09F6:\n\ + ldrh r0, [r5]\n\ + adds r0, 0x2\n\ + movs r1, 0x1F\n\ + ands r0, r1\n\ + strh r0, [r5]\n\ + movs r0, 0x1\n\ +_080F0A02:\n\ + pop {r3}\n\ + mov r8, r3\n\ + pop {r4-r7}\n\ + pop {r1}\n\ + bx r1\n\ + .align 2, 0\n\ +_080F0A0C: .4byte gUnknown_083E3270\n\ +_080F0A10: .4byte 0x000087ca\n\ +_080F0A14: .4byte 0x0000877e\n\ +_080F0A18: .4byte 0x00008780\n\ +_080F0A1C: .4byte 0x0000ffff\n\ +_080F0A20: .4byte 0x00008774\n\ + .syntax divided\n"); +} +#endif // NONMATCHING + +void sub_80F0A24(u16 arg0, u16 arg1) +{ + u8 var0 = gUnknown_083DFEC4->unk87C8 == 0 ? 2 : 1; + sub_80F4428(gUnknown_083DFEC4->unk8788, arg0, var0); + BasicInitMenuWindow(&gWindowTemplate_81E70D4); + Menu_PrintText(gUnknown_083DFEC4->unk8788, 13, arg1); +} + +static void sub_80F0A74(u16 arg0, u16 arg1) +{ + sub_80F700C(gUnknown_083DFEC4->unk8788, arg0); + arg1 &= 0x1F; + BasicInitMenuWindow(&gWindowTemplate_81E70D4); + Menu_PrintTextPixelCoords(gUnknown_083DFEC4->unk8788, 97, arg1 * 8, 0); + if (arg0 < gUnknown_083DFEC4->unkD158 && gUnknown_083DFEC4->unkCEE8[arg0].unk5) + sub_8095C8C((void *)VRAM + 0xF000, 29, arg1, gUnknown_083E039C, 0, 0, 1, 2, 1); + else + sub_8095C8C((void *)VRAM + 0xF000, 29, arg1, gUnknown_083E03A0, 0, 0, 1, 2, 1); +} + +static void sub_80F0B24(void) +{ + gUnknown_083DFEC4->unkD15C = 0; + gUnknown_083DFEC4->unk306 = 0; +} + +static bool8 sub_80F0B44(void) +{ + int top; + if (gUnknown_083DFEC4->unkD15C > 8) + { + return FALSE; + } + + if (++gUnknown_083DFEC4->unk306 > 1) + { + gUnknown_083DFEC4->unk306 = 0; + if (gUnknown_083DFEC4->unkD15C < 8) + { + top = (gUnknown_083DFEC4->unk8778 + (gUnknown_083DFEC4->unkD15C * 2)) & 0x1F; + if (gUnknown_083DFEC4->unkD15C != gUnknown_083DFEC4->unk876C) + { + BasicInitMenuWindow(&gWindowTemplate_81E70D4); + Menu_EraseWindowRect(12, top, 31, top + 1); + } + + if (!gUnknown_083DFEC4->unkD15C) + sub_80F08E4(); + + gUnknown_083DFEC4->unkD15C++; + return TRUE; + } + else + { + u16 i; + BasicInitMenuWindow(&gWindowTemplate_81E70D4); + top = (gUnknown_083DFEC4->unk8778 + 16) & 0x1F; + for (i = 0; i < 8; i++) + { + Menu_EraseWindowRect(12, top, 31, top + 1); + top = (top + 2) & 0x1F; + } + + gUnknown_083DFEC4->unkD15C++; + return FALSE; + } + } + else + { + return TRUE; + } +} + +static void sub_80F0C28(void) +{ + gUnknown_083DFEC4->unkD15C = 0; + gUnknown_083DFEC4->unk306 = 0; +} + +static bool8 sub_80F0C48(void) +{ + if (gUnknown_083DFEC4->unkD15C > 7) + return FALSE; + + if (++gUnknown_083DFEC4->unk306 > 1) + { + gUnknown_083DFEC4->unk306 = 0; + BasicInitMenuWindow(&gWindowTemplate_81E70D4); + sub_80F0A74(gUnknown_083DFEC4->unk8770 + gUnknown_083DFEC4->unkD15C, + gUnknown_083DFEC4->unk8778 + gUnknown_083DFEC4->unkD15C * 2); + + if ((++gUnknown_083DFEC4->unkD15C) > 7) + { + sub_80F081C(0); + return FALSE; + } + } + + return TRUE; +} + +void LoadTrainerEyesDescriptionLines(void) +{ + u16 i; + int trainerEyesId; + const u8 *curChar; + + gUnknown_083DFEC4->unk306 = 0; + gUnknown_083DFEC4->unkD15C = 0; + trainerEyesId = gUnknown_083DFEC4->unkCEE8[gUnknown_083DFEC4->unk876E].unk4; + gUnknown_083DFEC4->trainerEyeDescriptionLines[0] = gTrainerEyeDescriptions[trainerEyesId]; + + // Find the start of the 3 other lines in the Trainer's Eyes description. + curChar = gUnknown_083DFEC4->trainerEyeDescriptionLines[0]; + for (i = 0; i < 3; i++) + { + while (*curChar != EOS) + curChar++; + gUnknown_083DFEC4->trainerEyeDescriptionLines[i + 1] = ++curChar; + } +} + +#ifdef NONMATCHING +// small register mismatch (r2/r3) on the line where var0 is set. +bool8 sub_80F0D5C(void) +{ + int var0; + if (gUnknown_083DFEC4->unkD15C == 7) + return FALSE; + + if (++gUnknown_083DFEC4->unk306 > 1) + { + gUnknown_083DFEC4->unk306 = 0; + BasicInitMenuWindow(&gWindowTemplate_81E70D4); + var0 = (gUnknown_083DFEC4->unk8778 + 2 + gUnknown_083DFEC4->unkD15C * 2) & 0x1F; + switch (gUnknown_083DFEC4->unkD15C) + { + case 0: + Menu_PrintTextPixelCoords(gOtherText_Strategy, 97, var0 * 8, 0); + break; + case 1: + AlignStringInMenuWindow( + gUnknown_083DFEC4->unk8788, + gUnknown_083DFEC4->trainerEyeDescriptionLines[0], + 136, + 0); + Menu_PrintTextPixelCoords(gUnknown_083DFEC4->unk8788, 97, var0 * 8, 0); + break; + case 2: + Menu_PrintTextPixelCoords(gOtherText_TrainersPokemon, 97, var0 * 8, 0); + break; + case 3: + AlignStringInMenuWindow( + gUnknown_083DFEC4->unk8788, + gUnknown_083DFEC4->trainerEyeDescriptionLines[1], + 136, + 0); + Menu_PrintTextPixelCoords(gUnknown_083DFEC4->unk8788, 97, var0 * 8, 0); + break; + case 4: + Menu_PrintTextPixelCoords(gOtherText_SelfIntroduction, 97, var0 * 8, 0); + break; + case 5: + AlignStringInMenuWindow( + gUnknown_083DFEC4->unk8788, + gUnknown_083DFEC4->trainerEyeDescriptionLines[2], + 136, + 0); + Menu_PrintTextPixelCoords(gUnknown_083DFEC4->unk8788, 97, var0 * 8, 0); + break; + case 6: + AlignStringInMenuWindow( + gUnknown_083DFEC4->unk8788, + gUnknown_083DFEC4->trainerEyeDescriptionLines[3], + 136, + 0); + Menu_PrintTextPixelCoords(gUnknown_083DFEC4->unk8788, 97, var0 * 8, 0); + default: + return FALSE; + } + + gUnknown_083DFEC4->unkD15C++; + return TRUE; + } + else + { + return TRUE; + } +} +#else +NAKED +bool8 sub_80F0D5C(void) +{ + asm(".syntax unified\n\ + push {r4,r5,lr}\n\ + ldr r0, _080F0D70 @ =gUnknown_083DFEC4\n\ + ldr r4, [r0]\n\ + ldr r0, _080F0D74 @ =0x0000d15c\n\ + adds r5, r4, r0\n\ + ldrh r0, [r5]\n\ + cmp r0, 0x7\n\ + bne _080F0D78\n\ +_080F0D6C:\n\ + movs r0, 0\n\ + b _080F0EB0\n\ + .align 2, 0\n\ +_080F0D70: .4byte gUnknown_083DFEC4\n\ +_080F0D74: .4byte 0x0000d15c\n\ +_080F0D78:\n\ + ldr r0, _080F0DB8 @ =0x00000306\n\ + adds r1, r4, r0\n\ + ldrh r0, [r1]\n\ + adds r0, 0x1\n\ + strh r0, [r1]\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0x1\n\ + bhi _080F0D8C\n\ + b _080F0EAE\n\ +_080F0D8C:\n\ + movs r0, 0\n\ + strh r0, [r1]\n\ + ldr r0, _080F0DBC @ =gWindowTemplate_81E70D4\n\ + bl BasicInitMenuWindow\n\ + ldr r0, _080F0DC0 @ =0x00008778\n\ + adds r1, r4, r0\n\ + ldrh r3, [r5]\n\ + lsls r0, r3, 1\n\ + adds r0, 0x2\n\ + ldrh r1, [r1]\n\ + adds r5, r0, r1\n\ + movs r0, 0x1F\n\ + ands r5, r0\n\ + cmp r3, 0x6\n\ + bhi _080F0D6C\n\ + lsls r0, r3, 2\n\ + ldr r1, _080F0DC4 @ =_080F0DC8\n\ adds r0, r1\n\ ldr r0, [r0]\n\ mov pc, r0\n\ .align 2, 0\n\ -_080F02C4: .4byte gUnknown_083DFEC4\n\ -_080F02C8: .4byte 0x00000306\n\ -_080F02CC: .4byte _080F02D0\n\ +_080F0DB8: .4byte 0x00000306\n\ +_080F0DBC: .4byte gWindowTemplate_81E70D4\n\ +_080F0DC0: .4byte 0x00008778\n\ +_080F0DC4: .4byte _080F0DC8\n\ .align 2, 0\n\ -_080F02D0:\n\ - .4byte _080F030C\n\ - .4byte _080F0344\n\ - .4byte _080F0350\n\ - .4byte _080F035C\n\ - .4byte _080F0368\n\ - .4byte _080F036E\n\ - .4byte _080F0380\n\ - .4byte _080F0394\n\ - .4byte _080F04BC\n\ - .4byte _080F053C\n\ - .4byte _080F0550\n\ - .4byte _080F0574\n\ - .4byte _080F057A\n\ - .4byte _080F0586\n\ - .4byte _080F05BC\n\ -_080F030C:\n\ - bl sub_80EEDE8\n\ - ldr r0, _080F0334 @ =gUnknown_083DFEC4\n\ - ldr r1, [r0]\n\ - movs r2, 0\n\ - ldr r3, _080F0338 @ =0x000087ca\n\ - adds r0, r1, r3\n\ - ldrb r0, [r0]\n\ - cmp r0, 0x1\n\ - bne _080F0322\n\ - movs r2, 0x1\n\ -_080F0322:\n\ - ldr r3, _080F033C @ =0x000087c8\n\ - adds r0, r1, r3\n\ - strb r2, [r0]\n\ - ldr r0, _080F0340 @ =0x0000d162\n\ - adds r1, r0\n\ - movs r0, 0xB\n\ - strb r0, [r1]\n\ - b _080F0618\n\ +_080F0DC8:\n\ + .4byte _080F0DE4\n\ + .4byte _080F0DF0\n\ + .4byte _080F0E08\n\ + .4byte _080F0E14\n\ + .4byte _080F0E2C\n\ + .4byte _080F0E38\n\ + .4byte _080F0E6C\n\ +_080F0DE4:\n\ + ldr r0, _080F0DEC @ =gOtherText_Strategy\n\ + lsls r2, r5, 3\n\ + b _080F0E54\n\ .align 2, 0\n\ -_080F0334: .4byte gUnknown_083DFEC4\n\ -_080F0338: .4byte 0x000087ca\n\ -_080F033C: .4byte 0x000087c8\n\ -_080F0340: .4byte 0x0000d162\n\ -_080F0344:\n\ - ldr r0, _080F034C @ =gWindowTemplate_81E70D4\n\ - bl Text_LoadWindowTemplate\n\ - b _080F0618\n\ +_080F0DEC: .4byte gOtherText_Strategy\n\ +_080F0DF0:\n\ + ldr r0, _080F0DFC @ =gUnknown_083DFEC4\n\ + ldr r0, [r0]\n\ + ldr r1, _080F0E00 @ =0x00008788\n\ + adds r4, r0, r1\n\ + ldr r1, _080F0E04 @ =0x0000d110\n\ + b _080F0E42\n\ .align 2, 0\n\ -_080F034C: .4byte gWindowTemplate_81E70D4\n\ -_080F0350:\n\ - ldr r0, _080F0358 @ =gWindowTemplate_81E70D4\n\ - bl MultistepInitMenuWindowBegin\n\ - b _080F0618\n\ +_080F0DFC: .4byte gUnknown_083DFEC4\n\ +_080F0E00: .4byte 0x00008788\n\ +_080F0E04: .4byte 0x0000d110\n\ +_080F0E08:\n\ + ldr r0, _080F0E10 @ =gOtherText_TrainersPokemon\n\ + lsls r2, r5, 3\n\ + b _080F0E54\n\ .align 2, 0\n\ -_080F0358: .4byte gWindowTemplate_81E70D4\n\ -_080F035C:\n\ - bl MultistepInitMenuWindowContinue\n\ - cmp r0, 0\n\ - beq _080F0366\n\ - b _080F0618\n\ -_080F0366:\n\ - b _080F0626\n\ -_080F0368:\n\ - bl Menu_EraseScreen\n\ - b _080F0618\n\ -_080F036E:\n\ - ldr r0, _080F0378 @ =gUnknown_08E9FC64\n\ - ldr r1, _080F037C @ =0x0600e800\n\ - bl LZ77UnCompVram\n\ - b _080F0618\n\ +_080F0E10: .4byte gOtherText_TrainersPokemon\n\ +_080F0E14:\n\ + ldr r0, _080F0E20 @ =gUnknown_083DFEC4\n\ + ldr r0, [r0]\n\ + ldr r1, _080F0E24 @ =0x00008788\n\ + adds r4, r0, r1\n\ + ldr r1, _080F0E28 @ =0x0000d114\n\ + b _080F0E42\n\ .align 2, 0\n\ -_080F0378: .4byte gUnknown_08E9FC64\n\ -_080F037C: .4byte 0x0600e800\n\ -_080F0380:\n\ - ldr r0, _080F038C @ =gPokenavConditionSearch2_Gfx\n\ - ldr r1, _080F0390 @ =0x06008000\n\ - bl LZ77UnCompVram\n\ - b _080F0618\n\ +_080F0E20: .4byte gUnknown_083DFEC4\n\ +_080F0E24: .4byte 0x00008788\n\ +_080F0E28: .4byte 0x0000d114\n\ +_080F0E2C:\n\ + ldr r0, _080F0E34 @ =gOtherText_SelfIntroduction\n\ + lsls r2, r5, 3\n\ + b _080F0E54\n\ .align 2, 0\n\ -_080F038C: .4byte gPokenavConditionSearch2_Gfx\n\ -_080F0390: .4byte 0x06008000\n\ -_080F0394:\n\ - ldr r6, _080F03FC @ =gUnknown_083E02B4\n\ - adds r0, r6, 0\n\ - movs r1, 0xB0\n\ - movs r2, 0x20\n\ - bl LoadPalette\n\ - adds r0, r6, 0\n\ - movs r1, 0xF0\n\ - movs r2, 0x20\n\ - bl LoadPalette\n\ - ldr r0, _080F0400 @ =gUnknown_083E0334\n\ - movs r1, 0x40\n\ - movs r2, 0x20\n\ - bl LoadPalette\n\ - ldr r0, _080F0404 @ =gUnknown_083DFEC4\n\ +_080F0E34: .4byte gOtherText_SelfIntroduction\n\ +_080F0E38:\n\ + ldr r0, _080F0E60 @ =gUnknown_083DFEC4\n\ ldr r0, [r0]\n\ - ldr r1, _080F0408 @ =0x000087ca\n\ + ldr r1, _080F0E64 @ =0x00008788\n\ + adds r4, r0, r1\n\ + ldr r1, _080F0E68 @ =0x0000d118\n\ +_080F0E42:\n\ adds r0, r1\n\ - ldrb r0, [r0]\n\ - cmp r0, 0\n\ - bne _080F0418\n\ - ldr r4, _080F040C @ =gPokenavConditionSearch2_Pal\n\ + ldr r1, [r0]\n\ adds r0, r4, 0\n\ - movs r1, 0x30\n\ - movs r2, 0x20\n\ - bl LoadPalette\n\ - ldr r1, _080F0410 @ =gPlttBufferUnfaded\n\ - ldrh r0, [r4, 0xA]\n\ - strh r0, [r1]\n\ - ldr r0, _080F0414 @ =gUnknownPalette_81E6692\n\ - movs r1, 0xB0\n\ - movs r2, 0x20\n\ - bl LoadPalette\n\ - adds r0, r6, 0x2\n\ - movs r1, 0xB1\n\ - movs r2, 0x2\n\ - bl LoadPalette\n\ - adds r0, r6, 0\n\ - adds r0, 0x10\n\ - movs r1, 0xB5\n\ - movs r2, 0x2\n\ - bl LoadPalette\n\ - adds r4, 0xA\n\ + movs r2, 0x88\n\ + movs r3, 0\n\ + bl AlignStringInMenuWindow\n\ + lsls r2, r5, 3\n\ adds r0, r4, 0\n\ - movs r1, 0xBF\n\ - b _080F04A8\n\ +_080F0E54:\n\ + movs r1, 0x61\n\ + movs r3, 0\n\ + bl Menu_PrintTextPixelCoords\n\ + b _080F0EA0\n\ .align 2, 0\n\ -_080F03FC: .4byte gUnknown_083E02B4\n\ -_080F0400: .4byte gUnknown_083E0334\n\ -_080F0404: .4byte gUnknown_083DFEC4\n\ -_080F0408: .4byte 0x000087ca\n\ -_080F040C: .4byte gPokenavConditionSearch2_Pal\n\ -_080F0410: .4byte gPlttBufferUnfaded\n\ -_080F0414: .4byte gUnknownPalette_81E6692\n\ -_080F0418:\n\ - cmp r0, 0x1\n\ - bne _080F0464\n\ - ldr r4, _080F0458 @ =gUnknown_083E0274\n\ - adds r0, r4, 0\n\ - movs r1, 0x30\n\ - movs r2, 0x20\n\ - bl LoadPalette\n\ - ldr r1, _080F045C @ =gPlttBufferUnfaded\n\ - ldrh r0, [r4, 0xA]\n\ - strh r0, [r1]\n\ - ldr r0, _080F0460 @ =gUnknownPalette_81E6692\n\ - movs r1, 0xB0\n\ - movs r2, 0x20\n\ - bl LoadPalette\n\ - adds r0, r6, 0x2\n\ - movs r1, 0xB1\n\ - movs r2, 0x2\n\ - bl LoadPalette\n\ - adds r0, r6, 0\n\ - adds r0, 0x10\n\ - movs r1, 0xB5\n\ - movs r2, 0x2\n\ - bl LoadPalette\n\ - adds r4, 0xA\n\ +_080F0E60: .4byte gUnknown_083DFEC4\n\ +_080F0E64: .4byte 0x00008788\n\ +_080F0E68: .4byte 0x0000d118\n\ +_080F0E6C:\n\ + ldr r0, _080F0E94 @ =gUnknown_083DFEC4\n\ + ldr r0, [r0]\n\ + ldr r1, _080F0E98 @ =0x00008788\n\ + adds r4, r0, r1\n\ + ldr r1, _080F0E9C @ =0x0000d11c\n\ + adds r0, r1\n\ + ldr r1, [r0]\n\ adds r0, r4, 0\n\ - movs r1, 0xBF\n\ - b _080F04A8\n\ - .align 2, 0\n\ -_080F0458: .4byte gUnknown_083E0274\n\ -_080F045C: .4byte gPlttBufferUnfaded\n\ -_080F0460: .4byte gUnknownPalette_81E6692\n\ -_080F0464:\n\ - ldr r4, _080F04B0 @ =gUnknown_08E9F9E8\n\ + movs r2, 0x88\n\ + movs r3, 0\n\ + bl AlignStringInMenuWindow\n\ + lsls r2, r5, 3\n\ adds r0, r4, 0\n\ - movs r1, 0x30\n\ - movs r2, 0x20\n\ - bl LoadPalette\n\ - ldr r1, _080F04B4 @ =gPlttBufferUnfaded\n\ - adds r5, r4, 0\n\ - adds r5, 0xA\n\ - ldrh r0, [r4, 0xA]\n\ - strh r0, [r1]\n\ - ldr r0, _080F04B8 @ =gUnknown_083E0314\n\ - movs r1, 0x50\n\ - movs r2, 0x20\n\ - bl LoadPalette\n\ - adds r0, r6, 0x2\n\ - movs r1, 0xB1\n\ - movs r2, 0x2\n\ - bl LoadPalette\n\ - adds r0, r6, 0\n\ - adds r0, 0x10\n\ - movs r1, 0xB5\n\ - movs r2, 0x2\n\ - bl LoadPalette\n\ - adds r0, r5, 0\n\ - movs r1, 0xBF\n\ - movs r2, 0x2\n\ - bl LoadPalette\n\ - adds r0, r5, 0\n\ - movs r1, 0x5F\n\ -_080F04A8:\n\ - movs r2, 0x2\n\ - bl LoadPalette\n\ - b _080F0618\n\ - .align 2, 0\n\ -_080F04B0: .4byte gUnknown_08E9F9E8\n\ -_080F04B4: .4byte gPlttBufferUnfaded\n\ -_080F04B8: .4byte gUnknown_083E0314\n\ -_080F04BC:\n\ - ldr r0, _080F04E8 @ =gUnknown_083DFEC4\n\ - ldr r0, [r0]\n\ - ldr r2, _080F04EC @ =0x000087ca\n\ - adds r0, r2\n\ - ldrb r0, [r0]\n\ - cmp r0, 0x2\n\ - beq _080F04F8\n\ - ldr r0, _080F04F0 @ =0x0600e800\n\ - ldr r3, _080F04F4 @ =gUnknown_08E9FD1C\n\ - movs r1, 0\n\ - str r1, [sp]\n\ - str r1, [sp, 0x4]\n\ - movs r2, 0x9\n\ - str r2, [sp, 0x8]\n\ - movs r1, 0x4\n\ - str r1, [sp, 0xC]\n\ - str r2, [sp, 0x10]\n\ - movs r1, 0\n\ - movs r2, 0x5\n\ - bl sub_8095C8C\n\ - b _080F0618\n\ - .align 2, 0\n\ -_080F04E8: .4byte gUnknown_083DFEC4\n\ -_080F04EC: .4byte 0x000087ca\n\ -_080F04F0: .4byte 0x0600e800\n\ -_080F04F4: .4byte gUnknown_08E9FD1C\n\ -_080F04F8:\n\ - ldr r3, _080F0530 @ =0x0600e800\n\ - mov r8, r3\n\ - ldr r3, _080F0534 @ =gUnknown_08E9FE54\n\ - movs r4, 0\n\ - str r4, [sp]\n\ - str r4, [sp, 0x4]\n\ - movs r5, 0xC\n\ - str r5, [sp, 0x8]\n\ - movs r6, 0xA\n\ - str r6, [sp, 0xC]\n\ - str r5, [sp, 0x10]\n\ - mov r0, r8\n\ - movs r1, 0\n\ - movs r2, 0x4\n\ - bl sub_8095C8C\n\ - ldr r3, _080F0538 @ =gUnknown_08E9FD64\n\ - str r4, [sp]\n\ - str r4, [sp, 0x4]\n\ - str r5, [sp, 0x8]\n\ - str r6, [sp, 0xC]\n\ - str r5, [sp, 0x10]\n\ - mov r0, r8\n\ - movs r1, 0\n\ - movs r2, 0x8\n\ - bl sub_8095C8C\n\ - b _080F0618\n\ - .align 2, 0\n\ -_080F0530: .4byte 0x0600e800\n\ -_080F0534: .4byte gUnknown_08E9FE54\n\ -_080F0538: .4byte gUnknown_08E9FD64\n\ -_080F053C:\n\ - ldr r0, _080F0548 @ =gUnknown_083E0354\n\ - ldr r1, _080F054C @ =0x06005000\n\ - bl LZ77UnCompVram\n\ - b _080F0618\n\ - .align 2, 0\n\ -_080F0548: .4byte gUnknown_083E0354\n\ -_080F054C: .4byte 0x06005000\n\ -_080F0550:\n\ - ldr r2, _080F0568 @ =0x0600f800\n\ - add r1, sp, 0x14\n\ - movs r0, 0\n\ - strh r0, [r1]\n\ - ldr r0, _080F056C @ =0x040000d4\n\ - str r1, [r0]\n\ - str r2, [r0, 0x4]\n\ - ldr r1, _080F0570 @ =0x81000400\n\ - str r1, [r0, 0x8]\n\ - ldr r0, [r0, 0x8]\n\ - b _080F0618\n\ - .align 2, 0\n\ -_080F0568: .4byte 0x0600f800\n\ -_080F056C: .4byte 0x040000d4\n\ -_080F0570: .4byte 0x81000400\n\ -_080F0574:\n\ - bl sub_80F0900\n\ - b _080F0618\n\ -_080F057A:\n\ - bl sub_80F0944\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080F0618\n\ - b _080F0626\n\ -_080F0586:\n\ - ldr r0, _080F059C @ =gUnknown_083DFEC4\n\ - ldr r4, [r0]\n\ - ldr r1, _080F05A0 @ =0x000087ca\n\ - adds r0, r4, r1\n\ - ldrb r0, [r0]\n\ - cmp r0, 0x2\n\ - beq _080F05A4\n\ - bl ShowMapNamePopUpWindow\n\ - b _080F0618\n\ - .align 2, 0\n\ -_080F059C: .4byte gUnknown_083DFEC4\n\ -_080F05A0: .4byte 0x000087ca\n\ -_080F05A4:\n\ - movs r0, 0\n\ - bl sub_80F081C\n\ - ldr r2, _080F05B8 @ =0x0000876e\n\ - adds r0, r4, r2\n\ - ldrb r0, [r0]\n\ - bl sub_80F0FFC\n\ - b _080F0618\n\ - .align 2, 0\n\ -_080F05B8: .4byte 0x0000876e\n\ -_080F05BC:\n\ - ldr r1, _080F0600 @ =REG_BG2CNT\n\ - ldr r3, _080F0604 @ =0x00001d0a\n\ - adds r0, r3, 0\n\ - strh r0, [r1]\n\ - adds r1, 0x2\n\ - adds r3, 0xF9\n\ - adds r0, r3, 0\n\ - strh r0, [r1]\n\ - subs r1, 0x6\n\ - adds r3, 0xFE\n\ - adds r0, r3, 0\n\ - strh r0, [r1]\n\ - adds r1, 0x16\n\ - movs r0, 0xF8\n\ - strh r0, [r1]\n\ - ldr r1, [r2]\n\ - ldr r0, _080F0608 @ =0x00008776\n\ - adds r2, r1, r0\n\ + movs r1, 0x61\n\ movs r3, 0\n\ - movs r0, 0xF8\n\ - strh r0, [r2]\n\ - ldr r2, _080F060C @ =0x00008778\n\ - adds r0, r1, r2\n\ - strh r3, [r0]\n\ - ldr r0, _080F0610 @ =REG_BLDCNT\n\ - strh r3, [r0]\n\ - ldr r3, _080F0614 @ =0x0000d160\n\ - adds r1, r3\n\ - ldrh r0, [r1]\n\ - adds r0, 0x1\n\ - strh r0, [r1]\n\ -_080F05FA:\n\ - movs r0, 0\n\ - b _080F0628\n\ + bl Menu_PrintTextPixelCoords\n\ + b _080F0D6C\n\ .align 2, 0\n\ -_080F0600: .4byte REG_BG2CNT\n\ -_080F0604: .4byte 0x00001d0a\n\ -_080F0608: .4byte 0x00008776\n\ -_080F060C: .4byte 0x00008778\n\ -_080F0610: .4byte REG_BLDCNT\n\ -_080F0614: .4byte 0x0000d160\n\ -_080F0618:\n\ - ldr r0, _080F0634 @ =gUnknown_083DFEC4\n\ +_080F0E94: .4byte gUnknown_083DFEC4\n\ +_080F0E98: .4byte 0x00008788\n\ +_080F0E9C: .4byte 0x0000d11c\n\ +_080F0EA0:\n\ + ldr r0, _080F0EB8 @ =gUnknown_083DFEC4\n\ ldr r1, [r0]\n\ - ldr r0, _080F0638 @ =0x00000306\n\ + ldr r0, _080F0EBC @ =0x0000d15c\n\ adds r1, r0\n\ ldrh r0, [r1]\n\ adds r0, 0x1\n\ strh r0, [r1]\n\ -_080F0626:\n\ +_080F0EAE:\n\ movs r0, 0x1\n\ -_080F0628:\n\ - add sp, 0x18\n\ - pop {r3}\n\ - mov r8, r3\n\ - pop {r4-r6}\n\ +_080F0EB0:\n\ + pop {r4,r5}\n\ pop {r1}\n\ bx r1\n\ .align 2, 0\n\ -_080F0634: .4byte gUnknown_083DFEC4\n\ -_080F0638: .4byte 0x00000306\n\ +_080F0EB8: .4byte gUnknown_083DFEC4\n\ +_080F0EBC: .4byte 0x0000d15c\n\ .syntax divided\n"); } -#endif // NONMATCHING +#endif + +static void sub_80F0EC0(void) +{ + gUnknown_083DFEC4->unk306 = 0; + gUnknown_083DFEC4->unkD15C = 0; + StringFill(gUnknown_083DFEC4->unk8788, CHAR_SPACE, 16); +} + +static bool8 sub_80F0EF4(void) +{ + int top; + if (gUnknown_083DFEC4->unkD15C > 6) + return FALSE; + + if (++gUnknown_083DFEC4->unk306 > 1) + { + gUnknown_083DFEC4->unk306 = 0; + top = (gUnknown_083DFEC4->unk8778 + 2 + gUnknown_083DFEC4->unkD15C * 2) & 0x1F; + BasicInitMenuWindow(&gWindowTemplate_81E70D4); + Menu_EraseWindowRect(12, top, 31, top + 1); + gUnknown_083DFEC4->unkD15C++; + } + + return TRUE; +} + +static void sub_80F0F64(void) +{ + s16 var0 = gUnknown_083DFEC4->unk876C; + gUnknown_083DFEC4->unk877C = var0 * 16; + gUnknown_083DFEC4->unk877A = var0 == 1 ? 4 : 8; +} + +static void sub_80F0FA0(void) +{ + s16 var0 = gUnknown_083DFEC4->unk876C * -1; + gUnknown_083DFEC4->unk877C = var0 * 16; + gUnknown_083DFEC4->unk877A = var0 == -1 ? -4 : -8; +} + +static bool8 sub_80F0FEC(void) +{ + return sub_80F0718(); +} + +void sub_80F0FFC(u8 arg0) +{ + GetMapSectionName(gUnknown_083DFEC4->unk8788, gUnknown_083DFEC4->unkCEE8[arg0].unk2, 0); + BasicInitMenuWindow(&gWindowTemplate_81E710C); + sub_80F19DC(gUnknown_083DFEC4->unk8788); + AlignStringInMenuWindow(gUnknown_083DFEC4->unkD138, gUnknown_083DFEC4->unk8788, 88, 2); + Menu_PrintText(gUnknown_083DFEC4->unkD138, 0, 5); +} + +void sub_80F105C(void) +{ + sub_80F0A74(gUnknown_083DFEC4->unk876E, gUnknown_083DFEC4->unk8778); +} + +static bool8 sub_80F1080(void) +{ + switch (gUnknown_083DFEC4->unkD160) + { + case 0: + sub_80EEDE8(); + gUnknown_083DFEC4->unkD162 = 11; + break; + case 1: + Text_LoadWindowTemplate(&gWindowTemplate_81E70B8); + break; + case 2: + MultistepInitMenuWindowBegin(&gWindowTemplate_81E70B8); + break; + case 3: + if (!MultistepInitMenuWindowContinue()) + return TRUE; + break; + case 4: + Menu_EraseScreen(); + break; + case 5: + sub_80F1614(); + break; + case 6: + if (sub_80F162C(1)) + return TRUE; + break; + case 7: + LZ77UnCompWram(gUnknown_08E9FBA0, gUnknown_083DFEC4->unk934C); + break; + case 8: + DrawMonRibbonIcons(); + break; + case 9: + sub_80F13FC(); + break; + case 10: + LZ77UnCompVram(gPokenavRibbonView_Gfx, (void *)(VRAM + 0x8000)); + break; + case 11: + LZ77UnCompVram(gUnknown_083E040C, (void *)(VRAM + 0x8200)); + break; + case 12: + LoadPalette(gPokenavRibbonView_Pal, 0x20, 0x20); + LoadPalette(gUnknown_083E03A8, 0xF0, 0x20); + LoadPalette(gUnknown_083E3C60, 0x30, 0xA0); + LoadPalette(gUnknownPalette_81E6692, 0xB0, 0x20); + LoadPalette(gUnknown_083E03A8 + 0xF, 0xBF, 0x2); + break; + case 13: + sub_80F1438(); + break; + case 14: + REG_BG2CNT = 0x1E02; + REG_BG3CNT = 0x170B; + REG_BLDCNT = 0; + gUnknown_083DFEC4->unkD160++; + return FALSE; + default: + return FALSE; + } + + gUnknown_083DFEC4->unkD160++; + return TRUE; +} + +void DrawMonRibbonIcons(void) +{ + u16 i; + u16 offset; + u8 index, palette, tile; + u8 var0; + + offset = 0x8B; + var0 = gUnknown_083DFEC4->unkBC8E - gUnknown_083DFEC4->unkBC8F; + + for (i = 0; i < 8; i++) + CpuFill16(0x2000, &gUnknown_083DFEC4->unk934C[offset + i * 32], 0x24); + + for (i = 0; i < var0; i++) + { + index = gUnknown_083DFEC4->unkBC4C[i]; + palette = gPokenavRibbonsIconGfx[index][1] + 3; + tile = gPokenavRibbonsIconGfx[index][0] * 2 + 0x10; + gUnknown_083DFEC4->unk934C[offset] = (palette << 12) | tile; + gUnknown_083DFEC4->unk934C[offset + 1] = ((palette << 12) | 0x400) | tile; + gUnknown_083DFEC4->unk934C[offset + 0x20] = (palette << 12) | (tile + 1); + gUnknown_083DFEC4->unk934C[offset + 0x21] = (palette << 12) | 0x400 | (tile + 1); + + if ((i + 1) % 9 == 0) + offset += 0x30; + else + offset += 2; + } + + offset = 0x14B; + for (i = 0; i < gUnknown_083DFEC4->unkBC8F; i++) + { + index = gUnknown_083DFEC4->unkBC4C[var0 + i]; + palette = gPokenavRibbonsIconGfx[index][1] + 3; + tile = gPokenavRibbonsIconGfx[index][0] * 2 + 0x10; + gUnknown_083DFEC4->unk934C[offset] = (palette << 12) | tile; + gUnknown_083DFEC4->unk934C[offset + 1] = ((palette << 12) | 0x400) | tile; + gUnknown_083DFEC4->unk934C[offset + 0x20] = (palette << 12) | (tile + 1); + gUnknown_083DFEC4->unk934C[offset + 0x21] = (palette << 12) | 0x400 | (tile + 1); + + offset += 2; + } +} + +void sub_80F13FC(void) +{ + u16 *src = gUnknown_083DFEC4->unk934C; + u16 *dest = (u16 *)(VRAM + 0xB800); + DmaCopy32(3, src, dest, 0x500); + gPlttBufferUnfaded[0] = *(gPokenavRibbonView_Pal + 14); +} + +void sub_80F1438(void) +{ + Menu_PrintText(gUnknown_083DFEC4->unk8829[0], 13, 1); + sub_80F445C(gUnknown_083DFEC4->unk8788, gUnknown_083DFEC4->unk876E + 1); + Menu_PrintText(gUnknown_083DFEC4->unk8788, 1, 5); +} + +void sub_80F1480(void) +{ + Menu_EraseWindowRect(12, 13, 27, 16); +} + +// This is a fakematching function, due to a hardcoded access of gSaveBlock1. +// Due to this hardcoded address access, gift ribbons do not properly display +// their descriptions, since the hardcoded access is inside of the LinkBattleRecords +// save data, rather than the giftRibbons array, which is almost certainly what the +// intended access is. +static void sub_80F1494(void) +{ + u8 *arr; + u8 *tileBuffer1 = &gUnknown_083DFEC8[0x800]; + u8 *tileBuffer2 = &gUnknown_083DFEC8[0xA98]; + + if (gUnknown_083DFEC4->unkBC91 < 3) + { + gUnknown_020388B4 = gUnknown_083DFEC4->unkBC91 * 9 + gUnknown_083DFEC4->unkBC90; + gUnknown_020388B4 = gUnknown_083DFEC4->unkBC4C[gUnknown_020388B4]; + AlignStringInMenuWindow(tileBuffer1, gRibbonDescriptions[gUnknown_020388B4][0], 128, 0); + AlignStringInMenuWindow(tileBuffer2, gRibbonDescriptions[gUnknown_020388B4][1], 128, 0); + } + else + { + gUnknown_020388B4 = gUnknown_083DFEC4->unkBC8E - gUnknown_083DFEC4->unkBC8F; + gUnknown_020388B4 = gUnknown_083DFEC4->unkBC4C[gUnknown_020388B4 + gUnknown_083DFEC4->unkBC90]; + + // FIXME! + arr = ((u8*)&gSaveBlock1); + asm("ldrh r1, [r5]\n\ + add r0, r0, r1"); + gUnknown_020388B4 = arr[0x30F7]; + // The bug fix for this code is the following: + // gUnknown_020388B4 = gSaveBlock1.externalReservedData.giftRibbons[gUnknown_020388B4]; + if (gUnknown_020388B4) + { + gUnknown_020388B4--; + AlignStringInMenuWindow(tileBuffer1, gGiftRibbonDescriptions[gUnknown_020388B4][0], 128, 0); + AlignStringInMenuWindow(tileBuffer2, gGiftRibbonDescriptions[gUnknown_020388B4][1], 128, 0); + } + else + { + AlignStringInMenuWindow(tileBuffer1, gEmptyString_81E72B0, 128, 0); + AlignStringInMenuWindow(tileBuffer2, gEmptyString_81E72B0, 128, 0); + } + } + + Menu_PrintText(tileBuffer1, 12, 13); + Menu_PrintText(tileBuffer2, 12, 15); +} + +static void sub_80F15A8(void) +{ + u8 *buffer; + Menu_EraseWindowRect(12, 13, 27, 16); + buffer = StringCopy(gUnknown_083DFEC4->unk8788, gOtherText_Ribbons); + buffer[0] = CHAR_SPACE; + buffer++; + buffer = ConvertIntToDecimalStringN( + buffer, + gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC].unk0, + STR_CONV_MODE_LEFT_ALIGN, + 2); + buffer[0] = EOS; + Menu_PrintText(gUnknown_083DFEC4->unk8788, 12, 13); +} + +void sub_80F1614(void) +{ + gUnknown_083DFEC4->unk8764 = 0; +} diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index bdf6f4a44..bcfeed672 100644 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -141,7 +141,7 @@ void sub_8136130(struct Pokeblock *pokeblock, MainCallback callback) gUnknown_02039304 = &gUnknown_083DFEC4->unkD164; gUnknown_02039304->pokeblock = pokeblock; gUnknown_02039304->callback = callback; - gUnknown_083DFEC4->unkD162[0] = 2; + gUnknown_083DFEC4->unkD162 = 2; launch_c3_walk_stairs_and_run_once(sub_8136294); SetMainCallback2(sub_8136244); } @@ -152,7 +152,7 @@ static void sub_8136174(void) gUnknown_02039304->callback = gUnknown_02039308; gPokeblockMonID = sub_81370E4(gPokeblockMonID); gUnknown_02039304->unk56 = gPokeblockMonID < 4 ? 0 : 1; - gUnknown_083DFEC4->unkD162[0] = 2; + gUnknown_083DFEC4->unkD162 = 2; launch_c3_walk_stairs_and_run_once(sub_8136294); SetMainCallback2(sub_81361E4); } |