summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/pokenav.s1993
-rw-r--r--data/pokenav.s2
-rw-r--r--include/pokenav.h52
-rw-r--r--src/contest_effect.c154
-rw-r--r--src/pokenav_before.c1291
-rw-r--r--src/use_pokeblock.c4
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);
}