diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2019-12-11 11:02:42 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2019-12-11 11:02:42 -0500 |
commit | f55abfddc54e936ccae318d0b4e6efe8f8998d42 (patch) | |
tree | fe10b8079095252830facd352c010e717205fda3 | |
parent | 6645ad8ccf92b74cb00098601a4dafcc8349de62 (diff) |
through sub_8103A40
-rw-r--r-- | asm/pokedex_screen.s | 716 | ||||
-rw-r--r-- | include/list_menu.h | 4 | ||||
-rw-r--r-- | include/pokedex_screen.h | 1 | ||||
-rw-r--r-- | include/strings.h | 1 | ||||
-rw-r--r-- | src/list_menu.c | 8 | ||||
-rw-r--r-- | src/pokedex.c | 3 | ||||
-rw-r--r-- | src/pokedex_screen.c | 216 |
7 files changed, 221 insertions, 728 deletions
diff --git a/asm/pokedex_screen.s b/asm/pokedex_screen.s index f6b2ec5aa..8eab9c420 100644 --- a/asm/pokedex_screen.s +++ b/asm/pokedex_screen.s @@ -5,722 +5,6 @@ .text - thumb_func_start sub_8103518 -sub_8103518: @ 8103518 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - bl IsNationalPokedexEnabled - movs r1, 0x97 - str r1, [sp] - cmp r0, 0 - beq _0810353A - movs r2, 0xC1 - lsls r2, 1 - str r2, [sp] -_0810353A: - movs r0, 0 - mov r10, r0 - cmp r4, 0x5 - bhi _08103568 - lsls r0, r4, 2 - ldr r1, _0810354C @ =_08103550 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0810354C: .4byte _08103550 - .align 2, 0 -_08103550: - .4byte _08103568 - .4byte _08103604 - .4byte _0810369C - .4byte _0810373C - .4byte _081037D8 - .4byte _08103874 -_08103568: - movs r1, 0 - mov r8, r1 -_0810356C: - mov r4, r8 - adds r4, 0x1 - lsls r0, r4, 16 - lsrs r5, r0, 16 - adds r0, r5, 0 - movs r1, 0 - movs r2, 0 - bl sub_8104AB0 - lsls r0, 24 - lsrs r7, r0, 24 - adds r0, r5, 0 - movs r1, 0x1 - movs r2, 0 - bl sub_8104AB0 - lsls r0, 24 - lsrs r6, r0, 24 - mov r9, r4 - cmp r7, 0 - beq _081035C4 - adds r0, r5, 0 - bl NationalPokedexNumToSpecies - ldr r2, _081035BC @ =gUnknown_203ACF0 - ldr r1, [r2] - ldr r2, [r1, 0x44] - mov r1, r8 - lsls r3, r1, 3 - adds r2, r3, r2 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xB - muls r0, r1 - ldr r1, _081035C0 @ =gSpeciesNames - adds r0, r1 - str r0, [r2] - mov r10, r5 - adds r4, r3, 0 - b _081035D6 - .align 2, 0 -_081035BC: .4byte gUnknown_203ACF0 -_081035C0: .4byte gSpeciesNames -_081035C4: - ldr r2, _081035FC @ =gUnknown_203ACF0 - ldr r0, [r2] - ldr r1, [r0, 0x44] - mov r0, r8 - lsls r2, r0, 3 - adds r1, r2, r1 - ldr r0, _08103600 @ =gUnknown_8415F66 - str r0, [r1] - adds r4, r2, 0 -_081035D6: - adds r0, r5, 0 - bl NationalPokedexNumToSpecies - ldr r2, _081035FC @ =gUnknown_203ACF0 - ldr r1, [r2] - ldr r3, [r1, 0x44] - adds r3, r4, r3 - lsls r2, r6, 17 - lsls r1, r7, 16 - adds r2, r1 - lsls r0, 16 - lsrs r0, 16 - adds r2, r0 - str r2, [r3, 0x4] - mov r8, r9 - mov r0, r8 - cmp r0, 0x96 - ble _0810356C - b _08103906 - .align 2, 0 -_081035FC: .4byte gUnknown_203ACF0 -_08103600: .4byte gUnknown_8415F66 -_08103604: - movs r1, 0 - mov r8, r1 - ldr r2, _08103690 @ =gUnknown_203ACF0 - mov r9, r2 -_0810360C: - ldr r1, _08103694 @ =gUnknown_8443FC0 - mov r2, r8 - lsls r0, r2, 1 - adds r0, r1 - ldrh r5, [r0] - ldr r0, [sp] - cmp r5, r0 - bgt _08103682 - adds r0, r5, 0 - movs r1, 0 - movs r2, 0 - bl sub_8104AB0 - lsls r0, 24 - lsrs r7, r0, 24 - adds r0, r5, 0 - movs r1, 0x1 - movs r2, 0 - bl sub_8104AB0 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r7, 0 - beq _08103682 - adds r0, r5, 0 - bl NationalPokedexNumToSpecies - mov r2, r9 - ldr r1, [r2] - ldr r2, [r1, 0x44] - mov r1, r10 - lsls r4, r1, 3 - adds r2, r4, r2 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xB - muls r0, r1 - ldr r1, _08103698 @ =gSpeciesNames - adds r0, r1 - str r0, [r2] - adds r0, r5, 0 - bl NationalPokedexNumToSpecies - mov r2, r9 - ldr r1, [r2] - ldr r1, [r1, 0x44] - adds r4, r1 - lsls r2, r6, 17 - lsls r1, r7, 16 - adds r2, r1 - lsls r0, 16 - lsrs r0, 16 - adds r2, r0 - str r2, [r4, 0x4] - mov r0, r10 - adds r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - mov r10, r0 -_08103682: - movs r0, 0x1 - add r8, r0 - movs r0, 0xCD - lsls r0, 1 - cmp r8, r0 - ble _0810360C - b _08103906 - .align 2, 0 -_08103690: .4byte gUnknown_203ACF0 -_08103694: .4byte gUnknown_8443FC0 -_08103698: .4byte gSpeciesNames -_0810369C: - movs r1, 0 - mov r8, r1 - ldr r2, _08103730 @ =gUnknown_203ACF0 - mov r9, r2 -_081036A4: - ldr r1, _08103734 @ =gUnknown_84448FE - mov r2, r8 - lsls r0, r2, 1 - adds r0, r1 - ldrh r0, [r0] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r5, r0, 16 - ldr r0, [sp] - cmp r5, r0 - bgt _08103722 - adds r0, r5, 0 - movs r1, 0 - movs r2, 0 - bl sub_8104AB0 - lsls r0, 24 - lsrs r7, r0, 24 - adds r0, r5, 0 - movs r1, 0x1 - movs r2, 0 - bl sub_8104AB0 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0 - beq _08103722 - adds r0, r5, 0 - bl NationalPokedexNumToSpecies - mov r2, r9 - ldr r1, [r2] - ldr r2, [r1, 0x44] - mov r1, r10 - lsls r4, r1, 3 - adds r2, r4, r2 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xB - muls r0, r1 - ldr r1, _08103738 @ =gSpeciesNames - adds r0, r1 - str r0, [r2] - adds r0, r5, 0 - bl NationalPokedexNumToSpecies - mov r2, r9 - ldr r1, [r2] - ldr r1, [r1, 0x44] - adds r4, r1 - lsls r2, r6, 17 - lsls r1, r7, 16 - adds r2, r1 - lsls r0, 16 - lsrs r0, 16 - adds r2, r0 - str r2, [r4, 0x4] - mov r0, r10 - adds r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - mov r10, r0 -_08103722: - movs r0, 0x1 - add r8, r0 - movs r0, 0xCD - lsls r0, 1 - cmp r8, r0 - ble _081036A4 - b _08103906 - .align 2, 0 -_08103730: .4byte gUnknown_203ACF0 -_08103734: .4byte gUnknown_84448FE -_08103738: .4byte gSpeciesNames -_0810373C: - movs r1, 0 - mov r8, r1 - ldr r2, _081037C8 @ =gUnknown_203ACF0 - mov r9, r2 -_08103744: - ldr r1, _081037CC @ =gUnknown_84442F6 - mov r2, r8 - lsls r0, r2, 1 - adds r0, r1 - ldrh r5, [r0] - ldr r0, [sp] - cmp r5, r0 - bgt _081037BA - adds r0, r5, 0 - movs r1, 0 - movs r2, 0 - bl sub_8104AB0 - lsls r0, 24 - lsrs r7, r0, 24 - adds r0, r5, 0 - movs r1, 0x1 - movs r2, 0 - bl sub_8104AB0 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0 - beq _081037BA - adds r0, r5, 0 - bl NationalPokedexNumToSpecies - mov r2, r9 - ldr r1, [r2] - ldr r2, [r1, 0x44] - mov r1, r10 - lsls r4, r1, 3 - adds r2, r4, r2 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xB - muls r0, r1 - ldr r1, _081037D0 @ =gSpeciesNames - adds r0, r1 - str r0, [r2] - adds r0, r5, 0 - bl NationalPokedexNumToSpecies - mov r2, r9 - ldr r1, [r2] - ldr r1, [r1, 0x44] - adds r4, r1 - lsls r2, r6, 17 - lsls r1, r7, 16 - adds r2, r1 - lsls r0, 16 - lsrs r0, 16 - adds r2, r0 - str r2, [r4, 0x4] - mov r0, r10 - adds r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - mov r10, r0 -_081037BA: - movs r0, 0x1 - add r8, r0 - ldr r0, _081037D4 @ =0x00000181 - cmp r8, r0 - ble _08103744 - b _08103906 - .align 2, 0 -_081037C8: .4byte gUnknown_203ACF0 -_081037CC: .4byte gUnknown_84442F6 -_081037D0: .4byte gSpeciesNames -_081037D4: .4byte 0x00000181 -_081037D8: - movs r1, 0 - mov r8, r1 - ldr r2, _08103864 @ =gUnknown_203ACF0 - mov r9, r2 -_081037E0: - ldr r1, _08103868 @ =gUnknown_84445FA - mov r2, r8 - lsls r0, r2, 1 - adds r0, r1 - ldrh r5, [r0] - ldr r0, [sp] - cmp r5, r0 - bgt _08103856 - adds r0, r5, 0 - movs r1, 0 - movs r2, 0 - bl sub_8104AB0 - lsls r0, 24 - lsrs r7, r0, 24 - adds r0, r5, 0 - movs r1, 0x1 - movs r2, 0 - bl sub_8104AB0 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0 - beq _08103856 - adds r0, r5, 0 - bl NationalPokedexNumToSpecies - mov r2, r9 - ldr r1, [r2] - ldr r2, [r1, 0x44] - mov r1, r10 - lsls r4, r1, 3 - adds r2, r4, r2 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xB - muls r0, r1 - ldr r1, _0810386C @ =gSpeciesNames - adds r0, r1 - str r0, [r2] - adds r0, r5, 0 - bl NationalPokedexNumToSpecies - mov r2, r9 - ldr r1, [r2] - ldr r1, [r1, 0x44] - adds r4, r1 - lsls r2, r6, 17 - lsls r1, r7, 16 - adds r2, r1 - lsls r0, 16 - lsrs r0, 16 - adds r2, r0 - str r2, [r4, 0x4] - mov r0, r10 - adds r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - mov r10, r0 -_08103856: - movs r0, 0x1 - add r8, r0 - ldr r0, _08103870 @ =0x00000181 - cmp r8, r0 - ble _081037E0 - b _08103906 - .align 2, 0 -_08103864: .4byte gUnknown_203ACF0 -_08103868: .4byte gUnknown_84445FA -_0810386C: .4byte gSpeciesNames -_08103870: .4byte 0x00000181 -_08103874: - movs r1, 0 - mov r8, r1 -_08103878: - mov r4, r8 - adds r4, 0x1 - lsls r0, r4, 16 - lsrs r5, r0, 16 - adds r0, r5, 0 - movs r1, 0 - movs r2, 0 - bl sub_8104AB0 - lsls r0, 24 - lsrs r7, r0, 24 - adds r0, r5, 0 - movs r1, 0x1 - movs r2, 0 - bl sub_8104AB0 - lsls r0, 24 - lsrs r6, r0, 24 - mov r9, r4 - cmp r7, 0 - beq _081038D0 - adds r0, r5, 0 - bl NationalPokedexNumToSpecies - ldr r2, _081038C8 @ =gUnknown_203ACF0 - ldr r1, [r2] - ldr r2, [r1, 0x44] - mov r1, r8 - lsls r3, r1, 3 - adds r2, r3, r2 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xB - muls r0, r1 - ldr r1, _081038CC @ =gSpeciesNames - adds r0, r1 - str r0, [r2] - mov r10, r5 - adds r4, r3, 0 - b _081038E2 - .align 2, 0 -_081038C8: .4byte gUnknown_203ACF0 -_081038CC: .4byte gSpeciesNames -_081038D0: - ldr r2, _08103918 @ =gUnknown_203ACF0 - ldr r0, [r2] - ldr r1, [r0, 0x44] - mov r0, r8 - lsls r2, r0, 3 - adds r1, r2, r1 - ldr r0, _0810391C @ =gUnknown_8415F66 - str r0, [r1] - adds r4, r2, 0 -_081038E2: - adds r0, r5, 0 - bl NationalPokedexNumToSpecies - ldr r2, _08103918 @ =gUnknown_203ACF0 - ldr r1, [r2] - ldr r3, [r1, 0x44] - adds r3, r4, r3 - lsls r2, r6, 17 - lsls r1, r7, 16 - adds r2, r1 - lsls r0, 16 - lsrs r0, 16 - adds r2, r0 - str r2, [r3, 0x4] - mov r8, r9 - ldr r0, _08103920 @ =0x00000181 - cmp r8, r0 - ble _08103878 -_08103906: - mov r0, r10 - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08103918: .4byte gUnknown_203ACF0 -_0810391C: .4byte gUnknown_8415F66 -_08103920: .4byte 0x00000181 - thumb_func_end sub_8103518 - - thumb_func_start sub_8103924 -sub_8103924: @ 8103924 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0x4 - bgt _08103936 - cmp r1, 0x1 - bge _08103950 - b _0810393A -_08103936: - cmp r1, 0x5 - beq _08103964 -_0810393A: - ldr r1, _08103948 @ =gUnknown_845218C - ldr r4, _0810394C @ =gUnknown_203ACF0 - ldr r0, [r4] - ldrh r2, [r0, 0x36] - ldrh r3, [r0, 0x34] - b _0810396E - .align 2, 0 -_08103948: .4byte gUnknown_845218C -_0810394C: .4byte gUnknown_203ACF0 -_08103950: - ldr r1, _0810395C @ =gUnknown_845218C - ldr r4, _08103960 @ =gUnknown_203ACF0 - ldr r0, [r4] - ldrh r2, [r0, 0x3A] - ldrh r3, [r0, 0x38] - b _0810396E - .align 2, 0 -_0810395C: .4byte gUnknown_845218C -_08103960: .4byte gUnknown_203ACF0 -_08103964: - ldr r1, _08103980 @ =gUnknown_845218C - ldr r4, _08103984 @ =gUnknown_203ACF0 - ldr r0, [r4] - ldrh r2, [r0, 0x3E] - ldrh r3, [r0, 0x3C] -_0810396E: - adds r0, r5, 0 - bl ListMenuInitInRect - ldr r1, [r4] - adds r1, 0x41 - strb r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08103980: .4byte gUnknown_845218C -_08103984: .4byte gUnknown_203ACF0 - thumb_func_end sub_8103924 - - thumb_func_start sub_8103988 -sub_8103988: @ 8103988 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bgt _08103998 - cmp r0, 0x1 - bge _081039B8 - b _0810399C -_08103998: - cmp r0, 0x5 - beq _081039D4 -_0810399C: - ldr r0, _081039B4 @ =gUnknown_203ACF0 - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0x41 - ldrb r0, [r0] - adds r1, r2, 0 - adds r1, 0x36 - adds r2, 0x34 - bl DestroyListMenuTask - b _081039E8 - .align 2, 0 -_081039B4: .4byte gUnknown_203ACF0 -_081039B8: - ldr r0, _081039D0 @ =gUnknown_203ACF0 - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0x41 - ldrb r0, [r0] - adds r1, r2, 0 - adds r1, 0x3A - adds r2, 0x38 - bl DestroyListMenuTask - b _081039E8 - .align 2, 0 -_081039D0: .4byte gUnknown_203ACF0 -_081039D4: - ldr r0, _081039EC @ =gUnknown_203ACF0 - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0x41 - ldrb r0, [r0] - adds r1, r2, 0 - adds r1, 0x3E - adds r2, 0x3C - bl DestroyListMenuTask -_081039E8: - pop {r0} - bx r0 - .align 2, 0 -_081039EC: .4byte gUnknown_203ACF0 - thumb_func_end sub_8103988 - - thumb_func_start sub_81039F0 -sub_81039F0: @ 81039F0 - push {r4,lr} - sub sp, 0x10 - mov r1, sp - ldr r0, _08103A18 @ =gUnknown_84521B4 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldr r0, [r0] - str r0, [r1] - ldr r2, _08103A1C @ =gUnknown_203ACF0 - ldr r0, [r2] - adds r0, 0x48 - ldr r1, _08103A20 @ =gUnknown_8452174 - ldrh r3, [r0] - ldrh r0, [r1, 0xE] - cmp r3, r0 - bls _08103A24 - mov r1, sp - subs r0, r3, r0 - b _08103A28 - .align 2, 0 -_08103A18: .4byte gUnknown_84521B4 -_08103A1C: .4byte gUnknown_203ACF0 -_08103A20: .4byte gUnknown_8452174 -_08103A24: - mov r1, sp - movs r0, 0 -_08103A28: - strh r0, [r1, 0x8] - ldr r1, [r2] - adds r1, 0x62 - mov r0, sp - bl AddScrollIndicatorArrowPair - lsls r0, 24 - lsrs r0, 24 - add sp, 0x10 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_81039F0 - - thumb_func_start sub_8103A40 -sub_8103A40: @ 8103A40 - push {r4-r7,lr} - sub sp, 0x4 - adds r4, r1, 0 - lsls r2, 24 - lsrs r6, r2, 24 - lsls r0, r4, 16 - lsrs r5, r0, 16 - movs r0, 0x1 - lsrs r4, 17 - ands r4, r0 - ldr r7, _08103AC0 @ =gUnknown_203ACF0 - ldr r0, [r7] - adds r0, 0x40 - ldrb r0, [r0] - str r6, [sp] - movs r1, 0 - adds r2, r5, 0 - movs r3, 0xC - bl sub_8104A34 - cmp r4, 0 - beq _08103AB6 - ldr r0, [r7] - adds r0, 0x40 - ldrb r0, [r0] - movs r1, 0 - movs r2, 0x28 - adds r3, r6, 0 - bl BlitMoveInfoIcon - ldr r0, _08103AC4 @ =gBaseStats - lsls r4, r5, 3 - subs r4, r5 - lsls r4, 2 - adds r4, r0 - ldrb r5, [r4, 0x6] - ldr r0, [r7] - adds r0, 0x40 - ldrb r0, [r0] - adds r1, r5, 0x1 - lsls r1, 24 - lsrs r1, 24 - movs r2, 0x78 - adds r3, r6, 0 - bl BlitMoveInfoIcon - ldrb r1, [r4, 0x7] - cmp r5, r1 - beq _08103AB6 - ldr r0, [r7] - adds r0, 0x40 - ldrb r0, [r0] - adds r1, 0x1 - lsls r1, 24 - lsrs r1, 24 - movs r2, 0x98 - adds r3, r6, 0 - bl BlitMoveInfoIcon -_08103AB6: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08103AC0: .4byte gUnknown_203ACF0 -_08103AC4: .4byte gBaseStats - thumb_func_end sub_8103A40 - thumb_func_start sub_8103AC8 sub_8103AC8: @ 8103AC8 push {r4,r5,lr} diff --git a/include/list_menu.h b/include/list_menu.h index 94a49d2c2..237805f38 100644 --- a/include/list_menu.h +++ b/include/list_menu.h @@ -73,8 +73,8 @@ struct ListMenuWindowRect extern struct ListMenuTemplate gMultiuseListMenuTemplate; s32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const struct ListMenuTemplate *listMenuTemplate, u8 arg2, u16 tileNum, u16 palNum); -u8 ListMenuInit(struct ListMenuTemplate *listMenuTemplate, u16 cursorPos, u16 itemsAbove); -u8 ListMenuInitInRect(struct ListMenuTemplate *listMenuTemplate, struct ListMenuWindowRect *rect, u16 cursorPos, u16 itemsAbove); +u8 ListMenuInit(const struct ListMenuTemplate *listMenuTemplate, u16 cursorPos, u16 itemsAbove); +u8 ListMenuInitInRect(const struct ListMenuTemplate *listMenuTemplate, const struct ListMenuWindowRect *rect, u16 cursorPos, u16 itemsAbove); s32 ListMenu_ProcessInput(u8 listTaskId); void DestroyListMenuTask(u8 listTaskId, u16 *cursorPos, u16 *itemsAbove); void RedrawListMenu(u8 listTaskId); diff --git a/include/pokedex_screen.h b/include/pokedex_screen.h index 8855a47fc..9cc362d59 100644 --- a/include/pokedex_screen.h +++ b/include/pokedex_screen.h @@ -2,5 +2,6 @@ #define GUARD_POKEDEX_SCREEN_H void CB2_OpenPokedexFromStartMenu(void); +s8 sub_8104AB0(u16 nationalDexNo, u8 caseID, u8 unk); #endif //GUARD_POKEDEX_SCREEN_H diff --git a/include/strings.h b/include/strings.h index 140e9fc41..8ad1dc533 100644 --- a/include/strings.h +++ b/include/strings.h @@ -974,5 +974,6 @@ extern const u8 gUnknown_8415DD1[]; extern const u8 gUnknown_8415DD7[]; extern const u8 gUnknown_8415F3D[]; extern const u8 gUnknown_8415F4A[]; +extern const u8 gUnknown_8415F66[]; #endif //GUARD_STRINGS_H diff --git a/src/list_menu.c b/src/list_menu.c index 484da31ad..6c4d50961 100644 --- a/src/list_menu.c +++ b/src/list_menu.c @@ -70,7 +70,7 @@ static EWRAM_DATA struct MysteryGiftLinkMenuStruct sMysteryGiftLinkMenu = {0}; struct ListMenuOverride gListMenuOverride; struct ListMenuTemplate gMultiuseListMenuTemplate; -static u8 ListMenuInitInternal(struct ListMenuTemplate *listMenuTemplate, u16 cursorPos, u16 itemsAbove); +static u8 ListMenuInitInternal(const struct ListMenuTemplate *listMenuTemplate, u16 cursorPos, u16 itemsAbove); static bool8 ListMenuChangeSelection(struct ListMenu *list, bool8 updateCursorAndCallCallback, u8 count, bool8 movingDown); static void ListMenuPrintEntries(struct ListMenu *list, u16 startIndex, u16 yOffset, u16 count); static void ListMenuDrawCursor(struct ListMenu *list); @@ -172,7 +172,7 @@ s32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const str return LIST_NOTHING_CHOSEN; } -u8 ListMenuInit(struct ListMenuTemplate *listMenuTemplate, u16 cursorPos, u16 itemsAbove) +u8 ListMenuInit(const struct ListMenuTemplate *listMenuTemplate, u16 cursorPos, u16 itemsAbove) { u8 taskId = ListMenuInitInternal(listMenuTemplate, cursorPos, itemsAbove); PutWindowTilemap(listMenuTemplate->windowId); @@ -180,7 +180,7 @@ u8 ListMenuInit(struct ListMenuTemplate *listMenuTemplate, u16 cursorPos, u16 it return taskId; } -u8 ListMenuInitInRect(struct ListMenuTemplate *listMenuTemplate, struct ListMenuWindowRect *rect, u16 cursorPos, u16 itemsAbove) +u8 ListMenuInitInRect(const struct ListMenuTemplate *listMenuTemplate, const struct ListMenuWindowRect *rect, u16 cursorPos, u16 itemsAbove) { s32 i; u8 taskId = ListMenuInitInternal(listMenuTemplate, cursorPos, itemsAbove); @@ -338,7 +338,7 @@ u16 ListMenuGetYCoordForPrintingArrowCursor(u8 listTaskId) return list->itemsAbove * yMultiplier + list->template.upText_Y; } -static u8 ListMenuInitInternal(struct ListMenuTemplate *listMenuTemplate, u16 cursorPos, u16 itemsAbove) +static u8 ListMenuInitInternal(const struct ListMenuTemplate *listMenuTemplate, u16 cursorPos, u16 itemsAbove) { u8 listTaskId = CreateTask(ListMenuDummyTask, 0); struct ListMenu *list = (struct ListMenu *)gTasks[listTaskId].data; diff --git a/src/pokedex.c b/src/pokedex.c index 84ca59549..fc9781c48 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -1,9 +1,8 @@ #include "global.h" #include "pokedex.h" +#include "pokedex_screen.h" #include "constants/species.h" -extern s8 sub_8104AB0(u16 nationalDexNo, u8 caseID, u8 unk); - ALIGNED(4) static const u8 gExpandedPlaceholder_PokedexDescription[] = _(""); #include "data/pokemon/pokedex_text.h" diff --git a/src/pokedex_screen.c b/src/pokedex_screen.c index 52ca3f28b..1951146fa 100644 --- a/src/pokedex_screen.c +++ b/src/pokedex_screen.c @@ -18,7 +18,11 @@ #include "overworld.h" #include "strings.h" #include "menu.h" +#include "pokedex_screen.h" +#include "data.h" +#include "pokedex.h" #include "constants/songs.h" +#include "constants/species.h" struct PokedexScreenData { @@ -42,10 +46,12 @@ struct PokedexScreenData u8 field_2E; u8 field_2F; u32 field_30; - u8 filler_34[0x4]; + u16 field_34; + u16 field_36; u16 field_38; u16 field_3A; - u8 filler_3C[0x4]; + u16 field_3C; + u16 field_3E; u8 field_40; u8 field_41; u8 field_42; @@ -77,14 +83,15 @@ void sub_8102F80(u8 taskId); void sub_810317C(void); void sub_8103238(u8 taskId); void sub_810345C(void); -void sub_8103924(struct ListMenuTemplate * a0, u8 a1); -u8 sub_81039F0(void); u16 sub_8103518(u8 a0); +void sub_8103924(const struct ListMenuTemplate * a0, u8 a1); +u8 sub_81039F0(void); void sub_8103988(u8 a0); void sub_8103AC8(u8 taskId); void sub_81047B0(u8 *a0); void sub_81047C8(u8 a0, u8 a1, const u8 *a2, u8 a3, u8 a4, u8 a5); void sub_810491C(u8 a0, u8 a1, u16 a2, u8 a3, u8 a4, u8 a5); +void sub_8104A34(u8 windowId, u8 a1, u16 species, u8 a3, u8 y); u16 sub_8104BBC(u8 a0, u8 a1); void sub_8104C2C(const u8 *a0); void sub_81042EC(u8 taskId); @@ -98,6 +105,10 @@ extern const u16 gUnknown_84404C8[]; extern const u16 gUnknown_84406E0[]; extern const u16 gUnknown_8440EF0[]; extern const u16 gUnknown_8443460[]; +extern const u16 gUnknown_8443FC0[]; +extern const u16 gUnknown_84442F6[]; +extern const u16 gUnknown_84448FE[]; +extern const u16 gUnknown_84445FA[]; extern const struct BgTemplate gUnknown_8451EBC[4]; extern const struct WindowTemplate gUnknown_8451ECC[]; extern const struct PokedexScreenData gUnknown_8451EE4; @@ -111,6 +122,8 @@ extern const struct ListMenuTemplate gUnknown_84520BC; extern const struct ScrollArrowsTemplate gUnknown_84520D4; extern const struct ScrollArrowsTemplate gUnknown_84520E4; extern const struct PokedexScreenWindowGfx gUnknown_84520F4[]; +extern const struct ListMenuWindowRect gUnknown_845218C; +extern const struct ScrollArrowsTemplate gUnknown_84521B4; void sub_81024C0(void) { @@ -627,3 +640,198 @@ void sub_810345C(void) CopyWindowToVram(0, 2); CopyWindowToVram(1, 2); } + +u16 sub_8103518(u8 a0) +{ + s32 max_n = IsNationalPokedexEnabled() ? NATIONAL_DEX_DEOXYS : NATIONAL_DEX_MEW; + u16 ndex_num; + u16 ret = NATIONAL_DEX_NONE; + s32 i; + bool8 caught; + bool8 seen; + + switch (a0) + { + default: + case 0: + for (i = 0; i < NATIONAL_DEX_MEW; i++) + { + ndex_num = i + 1; + seen = sub_8104AB0(ndex_num, FLAG_GET_SEEN, 0); + caught = sub_8104AB0(ndex_num, FLAG_GET_CAUGHT, 0); + if (seen) + { + gUnknown_203ACF0->field_44[i].label = gSpeciesNames[NationalPokedexNumToSpecies(ndex_num)]; + ret = ndex_num; + } + else + { + gUnknown_203ACF0->field_44[i].label = gUnknown_8415F66; + } + gUnknown_203ACF0->field_44[i].index = (caught << 17) + (seen << 16) + NationalPokedexNumToSpecies(ndex_num); + } + break; + case 1: + for (i = 0; i < SPECIES_CHIMECHO; i++) + { + ndex_num = gUnknown_8443FC0[i]; + if (ndex_num <= max_n) + { + seen = sub_8104AB0(ndex_num, FLAG_GET_SEEN, 0); + caught = sub_8104AB0(ndex_num, FLAG_GET_CAUGHT, 0); + if (seen) + { + gUnknown_203ACF0->field_44[ret].label = gSpeciesNames[NationalPokedexNumToSpecies(ndex_num)]; + gUnknown_203ACF0->field_44[ret].index = (caught << 17) + (seen << 16) + NationalPokedexNumToSpecies(ndex_num); + ret++; + } + } + } + break; + case 2: + for (i = 0; i < SPECIES_CHIMECHO; i++) + { + ndex_num = SpeciesToNationalPokedexNum(gUnknown_84448FE[i]); + if (ndex_num <= max_n) + { + seen = sub_8104AB0(ndex_num, FLAG_GET_SEEN, 0); + caught = sub_8104AB0(ndex_num, FLAG_GET_CAUGHT, 0); + if (caught) + { + gUnknown_203ACF0->field_44[ret].label = gSpeciesNames[NationalPokedexNumToSpecies(ndex_num)]; + gUnknown_203ACF0->field_44[ret].index = (caught << 17) + (seen << 16) + NationalPokedexNumToSpecies(ndex_num); + ret++; + } + } + } + break; + case 3: + for (i = 0; i < NATIONAL_DEX_DEOXYS; i++) + { + ndex_num = gUnknown_84442F6[i]; + if (ndex_num <= max_n) + { + seen = sub_8104AB0(ndex_num, FLAG_GET_SEEN, 0); + caught = sub_8104AB0(ndex_num, FLAG_GET_CAUGHT, 0); + if (caught) + { + gUnknown_203ACF0->field_44[ret].label = gSpeciesNames[NationalPokedexNumToSpecies(ndex_num)]; + gUnknown_203ACF0->field_44[ret].index = (caught << 17) + (seen << 16) + NationalPokedexNumToSpecies(ndex_num); + ret++; + } + } + } + break; + case 4: + for (i = 0; i < NATIONAL_DEX_DEOXYS; i++) + { + ndex_num = gUnknown_84445FA[i]; + if (ndex_num <= max_n) + { + seen = sub_8104AB0(ndex_num, FLAG_GET_SEEN, 0); + caught = sub_8104AB0(ndex_num, FLAG_GET_CAUGHT, 0); + if (caught) + { + gUnknown_203ACF0->field_44[ret].label = gSpeciesNames[NationalPokedexNumToSpecies(ndex_num)]; + gUnknown_203ACF0->field_44[ret].index = (caught << 17) + (seen << 16) + NationalPokedexNumToSpecies(ndex_num); + ret++; + } + } + } + break; + case 5: + for (i = 0; i < NATIONAL_DEX_DEOXYS; i++) + { + ndex_num = i + 1; + seen = sub_8104AB0(ndex_num, FLAG_GET_SEEN, 0); + caught = sub_8104AB0(ndex_num, FLAG_GET_CAUGHT, 0); + if (seen) + { + gUnknown_203ACF0->field_44[i].label = gSpeciesNames[NationalPokedexNumToSpecies(ndex_num)]; + ret = ndex_num; + } + else + { + gUnknown_203ACF0->field_44[i].label = gUnknown_8415F66; + } + gUnknown_203ACF0->field_44[i].index = (caught << 17) + (seen << 16) + NationalPokedexNumToSpecies(ndex_num); + } + break; + } + return ret; +} + +void sub_8103924(const struct ListMenuTemplate * template, u8 a1) +{ + switch (a1) + { + default: + case 0: + gUnknown_203ACF0->field_41 = ListMenuInitInRect(template, &gUnknown_845218C, gUnknown_203ACF0->field_36, gUnknown_203ACF0->field_34); + break; + case 1: + case 2: + case 3: + case 4: + gUnknown_203ACF0->field_41 = ListMenuInitInRect(template, &gUnknown_845218C, gUnknown_203ACF0->field_3A, gUnknown_203ACF0->field_38); + break; + case 5: + gUnknown_203ACF0->field_41 = ListMenuInitInRect(template, &gUnknown_845218C, gUnknown_203ACF0->field_3E, gUnknown_203ACF0->field_3C); + break; + } +} + +void sub_8103988(u8 a0) +{ + switch (a0) + { + default: + case 0: + DestroyListMenuTask(gUnknown_203ACF0->field_41, &gUnknown_203ACF0->field_36, &gUnknown_203ACF0->field_34); + break; + case 1: + case 2: + case 3: + case 4: + DestroyListMenuTask(gUnknown_203ACF0->field_41, &gUnknown_203ACF0->field_3A, &gUnknown_203ACF0->field_38); + break; + case 5: + DestroyListMenuTask(gUnknown_203ACF0->field_41, &gUnknown_203ACF0->field_3E, &gUnknown_203ACF0->field_3C); + break; + } +} + +u8 sub_81039F0(void) +{ + struct ScrollArrowsTemplate template = gUnknown_84521B4; + if (gUnknown_203ACF0->field_48 > gUnknown_8452174.maxShowed) + template.fullyDownThreshold = gUnknown_203ACF0->field_48 - gUnknown_8452174.maxShowed; + else + template.fullyDownThreshold = 0; + return AddScrollIndicatorArrowPair(&template, &gUnknown_203ACF0->field_62); +} + +struct PokedexListItem +{ + u16 species; + bool8 seen:1; + bool8 caught:1; +}; + +void sub_8103A40(u8 windowId, s32 itemId, u8 y) +{ + u32 itemId_ = itemId; + u16 species = itemId_; + bool8 seen = (itemId_ >> 16) & 1; // not used but required to match + bool8 caught = (itemId_ >> 17) & 1; + u8 type1; + sub_8104A34(gUnknown_203ACF0->field_40, 0, species, 12, y); + if (caught) + { + BlitMoveInfoIcon(gUnknown_203ACF0->field_40, 0, 0x28, y); + type1 = gBaseStats[species].type1; + BlitMoveInfoIcon(gUnknown_203ACF0->field_40, type1 + 1, 0x78, y); + if (type1 != gBaseStats[species].type2) + BlitMoveInfoIcon(gUnknown_203ACF0->field_40, gBaseStats[species].type2 + 1, 0x98, y); + } +} |