diff --git a/asm/overlay_18.s b/asm/overlay_18.s index 8fb91b7cb..70c567508 100644 --- a/asm/overlay_18.s +++ b/asm/overlay_18.s @@ -24,151 +24,6 @@ .text - thumb_func_start ov18_021EDC74 -ov18_021EDC74: ; 0x021EDC74 - push {r3, r4, r5, lr} - sub sp, #0x20 - add r5, r0, #0 - add r4, r1, #0 - bl ov18_021F8838 - ldr r2, _021EDCD0 ; =0x00001858 - add r1, r0, #0 - ldr r0, [r5] - ldrb r2, [r5, r2] - ldr r0, [r0, #8] - bl sub_02092BD8 - ldr r0, _021EDCD0 ; =0x00001858 - strb r4, [r5, r0] - add r0, r5, #0 - bl ov18_021E6A70 - add r0, r5, #0 - mov r1, #0 - bl ov18_021F2AC0 - mov r0, #0x11 - str r0, [sp] - str r0, [sp, #4] - mov r2, #0 - str r2, [sp, #8] - mov r0, #0x98 - str r0, [sp, #0xc] - str r2, [sp, #0x10] - str r0, [sp, #0x14] - mov r0, #8 - str r0, [sp, #0x18] - mov r0, #0xe - str r0, [sp, #0x1c] - ldr r1, _021EDCD0 ; =0x00001858 - add r0, r5, #0 - ldrb r1, [r5, r1] - mov r3, #0x1a - bl ov18_021F7ED4 - add r0, r5, #0 - bl ov18_021EE5FC - add sp, #0x20 - pop {r3, r4, r5, pc} - .balign 4, 0 -_021EDCD0: .word 0x00001858 - thumb_func_end ov18_021EDC74 - - thumb_func_start ov18_021EDCD4 -ov18_021EDCD4: ; 0x021EDCD4 - push {r3, r4, r5, r6, lr} - sub sp, #4 - add r5, r0, #0 - bl ov18_021EDDB4 - add r0, r5, #0 - mov r1, #1 - bl ov18_021F8884 - add r0, r5, #0 - bl ov18_021F8838 - add r4, r0, #0 - add r0, r5, #0 - bl ov18_021F8824 - ldr r2, _021EDD9C ; =0x0000185C - add r6, r0, #0 - ldrb r2, [r5, r2] - add r0, r5, #0 - add r1, r4, #0 - bl ov18_021E6D10 - cmp r0, #0 - bne _021EDD0C - ldr r0, _021EDD9C ; =0x0000185C - mov r1, #2 - strb r1, [r5, r0] -_021EDD0C: - add r0, r5, #0 - add r1, r4, #0 - add r2, r6, #0 - bl ov18_021EE6BC - add r0, r5, #0 - add r1, r4, #0 - add r2, r6, #0 - bl ov18_021EE8B8 - add r0, r5, #0 - mov r1, #0x18 - bl ov18_021F1620 - add r0, r5, #0 - add r1, r4, #0 - mov r2, #0xb - mov r3, #0xa - bl ov18_021F1CAC - add r0, r5, #0 - add r1, r4, #0 - add r2, r6, #0 - mov r3, #0xe - bl ov18_021F209C - add r0, r5, #0 - add r1, r4, #0 - mov r2, #0x12 - bl ov18_021F2530 - add r0, r5, #0 - add r1, r4, #0 - add r2, r6, #0 - mov r3, #0xd - bl ov18_021F1DE4 - add r0, r5, #0 - mov r1, #5 - bl ov18_021F2BB0 - add r0, r5, #0 - mov r1, #2 - mov r2, #1 - bl ov18_021F2C10 - mov r1, #1 - add r0, r5, #0 - add r2, r1, #0 - bl ov18_021F2C5C - mov r1, #1 - add r0, r5, #0 - add r2, r1, #0 - bl ov18_021F2E80 - mov r0, #0x25 - str r0, [sp] - ldr r2, _021EDD9C ; =0x0000185C - ldr r3, _021EDDA0 ; =0x00000854 - ldrb r2, [r5, r2] - ldr r0, [r5, #4] - ldr r3, [r5, r3] - mov r1, #7 - bl ov18_021E6F6C - add r0, r5, #0 - bl ov18_021E6C98 - add sp, #4 - pop {r3, r4, r5, r6, pc} - nop -_021EDD9C: .word 0x0000185C -_021EDDA0: .word 0x00000854 - thumb_func_end ov18_021EDCD4 - - thumb_func_start ov18_021EDDA4 -ov18_021EDDA4: ; 0x021EDDA4 - push {r4, lr} - add r4, r0, #0 - bl ov18_021EDC74 - add r0, r4, #0 - bl ov18_021EDCD4 - pop {r4, pc} - thumb_func_end ov18_021EDDA4 - thumb_func_start ov18_021EDDB4 ov18_021EDDB4: ; 0x021EDDB4 push {r3, r4, r5, lr} diff --git a/include/application/pokedex/pokedex_internal.h b/include/application/pokedex/pokedex_internal.h index b68936cae..7be2bde65 100644 --- a/include/application/pokedex/pokedex_internal.h +++ b/include/application/pokedex/pokedex_internal.h @@ -273,7 +273,7 @@ struct PokedexAppData { void *weights; // 0x184C PokedexAppData_UnkSub1850 *unk_1850; // 0x1850 u8 *unk_1854; // 0x1854 - u8 unk_1858; // 0x1858 + u8 sortOrder; // 0x1858 u8 unk_1859; // 0x1859 u8 unk_185A; // 0x185A u8 unk_185B; // 0x185B @@ -388,6 +388,7 @@ BOOL PokedexApp_RunMainSeq(PokedexAppData *pokedexApp, int *pState); void ov18_021EE388(PokedexAppData *pokedexApp); void ov18_021EE3FC(PokedexAppData *pokedexApp); +void ov18_021EE5FC(PokedexAppData *pokedexApp); void ov18_021EE638(PokedexAppData *pokedexApp, u32 species, int a2); void ov18_021EE6BC(PokedexAppData *pokedexApp, int species, int a2); void ov18_021EE6EC(PokedexAppData *pokedexApp, int species, int a2); @@ -451,6 +452,7 @@ void ov18_021F2530(PokedexAppData *pokedexApp, u32 species, int a2); void ov18_021F2880(PokedexAppData *pokedexApp); void ov18_021F2A2C(PokedexAppData *pokedexApp, int a1, int a2); void ov18_021F2A84(PokedexAppData *pokedexApp, int a1, int a2); +void ov18_021F2AC0(PokedexAppData *pokedexApp, int a1); BOOL ov18_021F2AF8(PokedexAppData *pokedexApp, u32 x, u32 y); void ov18_021F2B3C(PokedexAppData *pokedexApp, int a1, s16 a2); void ov18_021F2B70(PokedexAppData *pokedexApp, int a1, s16 a2); diff --git a/src/application/pokedex/ov18_021E5AA0.c b/src/application/pokedex/ov18_021E5AA0.c index ee8da29ec..c286290ee 100644 --- a/src/application/pokedex/ov18_021E5AA0.c +++ b/src/application/pokedex/ov18_021E5AA0.c @@ -21,16 +21,16 @@ BOOL Pokedex_Init(OverlayManager *man, int *state) { MI_CpuClear8(appData, sizeof(PokedexAppData)); appData->args = OverlayManager_GetArgs(man); appData->unk_085C = 5; - appData->unk_1858 = sub_02092BE0(appData->args->unk_08); + appData->sortOrder = sub_02092BE0(appData->args->unk_08); if (Pokedex_GetNatDexFlag(appData->args->pokedex)) { appData->unk_1860 = TRUE; - if (appData->unk_1858 == 2) { - appData->unk_1858 = 1; + if (appData->sortOrder == 2) { + appData->sortOrder = 1; } } else { appData->unk_1860 = FALSE; - if (appData->unk_1858 == 2) { - appData->unk_1858 = 0; + if (appData->sortOrder == 2) { + appData->sortOrder = 0; } } if (Pokedex_CheckMonCaughtFlag(appData->args->pokedex, SPECIES_GIRATINA) == TRUE) { @@ -61,7 +61,7 @@ BOOL Pokedex_Exit(OverlayManager *man, int *state) { if (ov123_0225F520(ov18_021E5C1C)) { Heap_AllocAtEnd(HEAP_ID_3, 1000); } - sub_02092BD8(appData->args->unk_08, ov18_021F8838(appData), appData->unk_1858); + sub_02092BD8(appData->args->unk_08, ov18_021F8838(appData), appData->sortOrder); // DSProt_DetectFlashcart if (ov123_0225F430(ov18_021E5C2C)) { Heap_AllocAtEnd(HEAP_ID_3, 1000); diff --git a/src/application/pokedex/ov18_021E5C40.c b/src/application/pokedex/ov18_021E5C40.c index 770d2a5d4..96e6e4da3 100644 --- a/src/application/pokedex/ov18_021E5C40.c +++ b/src/application/pokedex/ov18_021E5C40.c @@ -1034,7 +1034,7 @@ static void ov18_021E6868(PokedexAppData *pokedexApp) { } void ov18_021E6A70(PokedexAppData *pokedexApp) { - if (pokedexApp->unk_1858 == 0) { + if (pokedexApp->sortOrder == 0) { sub_020196E8(pokedexApp->unk_0008, 2, 5, 3); } else { sub_020196E8(pokedexApp->unk_0008, 3, 5, 3); @@ -1087,7 +1087,7 @@ u16 *ov18_021E6BB8(PokedexAppData *pokedexApp, u32 a1) { if (pokedexApp->unk_1030[sp4].unk_0 == SPECIES_NONE) { continue; } - u32 r1 = Pokedex_ConvertToCurrentDexNo(pokedexApp->unk_1858, pokedexApp->unk_1030[sp4].unk_0); + u32 r1 = Pokedex_ConvertToCurrentDexNo(pokedexApp->sortOrder, pokedexApp->unk_1030[sp4].unk_0); if (pokedexApp->unk_1030[sp4].unk_2 == 2) { ret[160 * i + 36 + 5 * j] = 0x1002; PokedexApp_3DigitNumToTiles(&ret[160 * i + 37 + 5 * j], r1, 3); @@ -1468,7 +1468,7 @@ void ov18_021E7724(PokedexAppData *pokedexApp) { } } - if (pokedexApp->unk_1858 == 0) { + if (pokedexApp->sortOrder == 0) { r5 = sub_02019B08(pokedexApp->unk_0008, 2); sub_02019B44(pokedexApp->unk_0008, 2, &sp1A, &sp18); for (i = 0; i < sp18; ++i) { diff --git a/src/application/pokedex/ov18_021E8BF4.c b/src/application/pokedex/ov18_021E8BF4.c index e85a52fa8..3cf4daf29 100644 --- a/src/application/pokedex/ov18_021E8BF4.c +++ b/src/application/pokedex/ov18_021E8BF4.c @@ -267,7 +267,7 @@ int PokedexApp_MainSeq_00(PokedexAppData *pokedexApp) { FontID_Alloc(4, HEAP_ID_37); pokedexApp->gfxNarc = NARC_New(NARC_graphic_zukan_gra, HEAP_ID_37); ov18_021E6FFC(pokedexApp); - ov18_021F7ED4(pokedexApp, pokedexApp->unk_1858, 0, 26, 17, 17, 0, 152, 0, 152, 8, 14); + ov18_021F7ED4(pokedexApp, pokedexApp->sortOrder, 0, dex_search_letters_all, dex_search_type_all, dex_search_type_all, 0, 152, 0, 152, 1 << dex_search_area_all, dex_search_bodytype_all); ov18_021F8884(pokedexApp, 1); ov18_021EDDB4(pokedexApp); ov18_021E5C74(); @@ -417,7 +417,7 @@ int PokedexApp_MainSeq_07(PokedexAppData *pokedexApp) { sp0 = 135; } if (!ov18_021F2AF8(pokedexApp, sp4, sp0)) { - if (pokedexApp->unk_1858 == 1) { + if (pokedexApp->sortOrder == 1) { PlaySE(SEQ_SE_GS_ZKN_BUTTON8); ov18_021EDC74(pokedexApp, 0); } else { @@ -989,7 +989,7 @@ int PokedexApp_MainSeq_23(PokedexAppData *pokedexApp) { r5->unk_0 = 1; break; case 1: - ov18_021F7ED4(pokedexApp, pokedexApp->unk_1858, pokedexApp->dexSearchCriteria[dex_search_criteria_sort_order], pokedexApp->dexSearchCriteria[dex_search_criteria_letter], pokedexApp->dexSearchCriteria[dex_search_criteria_type1], pokedexApp->dexSearchCriteria[dex_search_criteria_type2], pokedexApp->dexSearchCriteria[dex_search_criteria_height_min], pokedexApp->dexSearchCriteria[dex_search_criteria_height_max], pokedexApp->dexSearchCriteria[dex_search_criteria_weight_min], pokedexApp->dexSearchCriteria[dex_search_criteria_weight_max], 1 << pokedexApp->dexSearchCriteria[dex_search_criteria_area], pokedexApp->dexSearchCriteria[dex_search_criteria_body_type]); + ov18_021F7ED4(pokedexApp, pokedexApp->sortOrder, pokedexApp->dexSearchCriteria[dex_search_criteria_sort_order], pokedexApp->dexSearchCriteria[dex_search_criteria_letter], pokedexApp->dexSearchCriteria[dex_search_criteria_type1], pokedexApp->dexSearchCriteria[dex_search_criteria_type2], pokedexApp->dexSearchCriteria[dex_search_criteria_height_min], pokedexApp->dexSearchCriteria[dex_search_criteria_height_max], pokedexApp->dexSearchCriteria[dex_search_criteria_weight_min], pokedexApp->dexSearchCriteria[dex_search_criteria_weight_max], 1 << pokedexApp->dexSearchCriteria[dex_search_criteria_area], pokedexApp->dexSearchCriteria[dex_search_criteria_body_type]); if (pokedexApp->unk_102E == 0 && pokedexApp->unk_102C == 0) { r5->unk_0 = 15; } else { @@ -1166,7 +1166,7 @@ int PokedexApp_MainSeq_25(PokedexAppData *pokedexApp) { int PokedexApp_MainSeq_19(PokedexAppData *pokedexApp) { switch (pokedexApp->unk_0868.state_10.unk_0) { case 0: - ov18_021F7ED4(pokedexApp, pokedexApp->unk_1858, 0, 26, 17, 17, 0, 152, 0, 152, 8, 14); + ov18_021F7ED4(pokedexApp, pokedexApp->sortOrder, 0, dex_search_letters_all, dex_search_type_all, dex_search_type_all, 0, 152, 0, 152, 1 << dex_search_area_all, dex_search_bodytype_all); ov18_021F8884(pokedexApp, 1); ++pokedexApp->unk_0868.state_10.unk_0; break; @@ -2135,9 +2135,9 @@ PokedexApp_MainSeq_62(PokedexAppData *pokedexApp) { case 0: { u16 r1 = ov18_021F8838(pokedexApp); if (r1 != 0) { - sub_02092BD8(pokedexApp->args->unk_08, r1, pokedexApp->unk_1858); + sub_02092BD8(pokedexApp->args->unk_08, r1, pokedexApp->sortOrder); } - ov18_021F7ED4(pokedexApp, pokedexApp->unk_1858, dex_order_national, dex_search_letters_all, dex_search_type_all, dex_search_type_all, 0, 152, 0, 152, 1 << dex_search_area_all, dex_search_bodytype_all); + ov18_021F7ED4(pokedexApp, pokedexApp->sortOrder, dex_order_national, dex_search_letters_all, dex_search_type_all, dex_search_type_all, 0, 152, 0, 152, 1 << dex_search_area_all, dex_search_bodytype_all); ov18_021F8884(pokedexApp, 1); ov18_021EDDB4(pokedexApp); ov18_021EDE64(pokedexApp); @@ -2172,9 +2172,9 @@ int PokedexApp_MainSeq_63(PokedexAppData *pokedexApp) { case 0: { u16 species = ov18_021F8838(pokedexApp); if (species != SPECIES_NONE) { - sub_02092BD8(pokedexApp->args->unk_08, species, pokedexApp->unk_1858); + sub_02092BD8(pokedexApp->args->unk_08, species, pokedexApp->sortOrder); } - ov18_021F7ED4(pokedexApp, pokedexApp->unk_1858, dex_order_national, dex_search_letters_all, dex_search_type_all, dex_search_type_all, 0, 152, 0, 152, 1 << dex_search_area_all, dex_search_bodytype_all); + ov18_021F7ED4(pokedexApp, pokedexApp->sortOrder, dex_order_national, dex_search_letters_all, dex_search_type_all, dex_search_type_all, 0, 152, 0, 152, 1 << dex_search_area_all, dex_search_bodytype_all); ov18_021F8884(pokedexApp, 1); ov18_021EDDB4(pokedexApp); GfGfxLoader_LoadCharDataFromOpenNarc(pokedexApp->gfxNarc, NARC_zukan_gra_zukan_gra_00000001_NCGR_lz, pokedexApp->bgConfig, GF_BG_LYR_MAIN_0, 0, 0, TRUE, HEAP_ID_37); @@ -2221,7 +2221,7 @@ int PokedexApp_MainSeq_64(PokedexAppData *pokedexApp) { case 0: { u16 r1 = ov18_021F8838(pokedexApp); if (r1 != SPECIES_NONE) { - sub_02092BD8(pokedexApp->args->unk_08, r1, pokedexApp->unk_1858); + sub_02092BD8(pokedexApp->args->unk_08, r1, pokedexApp->sortOrder); } sub_0201980C(pokedexApp->unk_0008, 4); ov18_021F2A2C(pokedexApp, 22, 0); @@ -3423,3 +3423,40 @@ int ov18_021EDC28(PokedexAppData *pokedexApp, u8 a1, int a2) { int ov18_021EDC50(PokedexAppData *pokedexApp, u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, int a6) { return ov18_021EDB68(pokedexApp, a1, a2, a3, a4, a5, 10, 11, a6); } + +void ov18_021EDC74(PokedexAppData *pokedexApp, int a1) { + sub_02092BD8(pokedexApp->args->unk_08, ov18_021F8838(pokedexApp), pokedexApp->sortOrder); + pokedexApp->sortOrder = a1; + ov18_021E6A70(pokedexApp); + ov18_021F2AC0(pokedexApp, 0); + ov18_021F7ED4(pokedexApp, pokedexApp->sortOrder, 0, dex_search_letters_all, dex_search_type_all, dex_search_type_all, 0, 152, 0, 152, 1 << dex_search_area_all, dex_search_bodytype_all); + ov18_021EE5FC(pokedexApp); +} + +void ov18_021EDCD4(PokedexAppData *pokedexApp) { + ov18_021EDDB4(pokedexApp); + ov18_021F8884(pokedexApp, 1); + u16 species = ov18_021F8838(pokedexApp); + u32 r6 = ov18_021F8824(pokedexApp); + if (!ov18_021E6D10(pokedexApp, species, pokedexApp->unk_185C)) { + pokedexApp->unk_185C = GAME_LANGUAGE; + } + ov18_021EE6BC(pokedexApp, species, r6); + ov18_021EE8B8(pokedexApp, species, r6); + ov18_021F1620(pokedexApp, 24); + ov18_021F1CAC(pokedexApp, species, 11, 10); + ov18_021F209C(pokedexApp, species, r6, 14); + ov18_021F2530(pokedexApp, species, 18); + ov18_021F1DE4(pokedexApp, species, r6, 13); + ov18_021F2BB0(pokedexApp, 5); + ov18_021F2C10(pokedexApp, 2, 1); + ov18_021F2C5C(pokedexApp, 1, 1); + ov18_021F2E80(pokedexApp, 1, 1); + ov18_021E6F6C(pokedexApp->bgConfig, GF_BG_LYR_SUB_3, pokedexApp->unk_185C, pokedexApp->gfxNarc, HEAP_ID_37); + ov18_021E6C98(pokedexApp); +} + +void ov18_021EDDA4(PokedexAppData *pokedexApp, int a1) { + ov18_021EDC74(pokedexApp, a1); + ov18_021EDCD4(pokedexApp); +}