diff options
author | PikalaxALT <PikalaxALT@gmail.com> | 2019-12-11 20:30:09 -0500 |
---|---|---|
committer | PikalaxALT <PikalaxALT@gmail.com> | 2019-12-11 20:30:09 -0500 |
commit | e2a4da3a0117e1cb02bd082d82330c9c3d696005 (patch) | |
tree | 3f677d39a64a33937855ec9e97ab79d5ef3b9161 | |
parent | af1c24b751a12b5c5d283e13326df3a997ef27dd (diff) |
through sub_81042EC
-rw-r--r-- | asm/pokedex_screen.s | 483 | ||||
-rw-r--r-- | src/pokedex_screen.c | 164 |
2 files changed, 163 insertions, 484 deletions
diff --git a/asm/pokedex_screen.s b/asm/pokedex_screen.s index 5d89ba8a2..567c8a2f8 100644 --- a/asm/pokedex_screen.s +++ b/asm/pokedex_screen.s @@ -5,489 +5,6 @@ .text - thumb_func_start sub_8104234 -sub_8104234: @ 8104234 - push {r4,lr} - sub sp, 0x10 - mov r1, sp - ldr r0, _0810427C @ =gUnknown_84524B4 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldr r0, [r0] - str r0, [r1] - mov r1, sp - ldr r0, _08104280 @ =gUnknown_203ACF0 - ldr r2, [r0] - adds r0, r2, 0 - adds r0, 0x29 - ldrb r0, [r0] - strh r0, [r1, 0x6] - adds r0, r2, 0 - adds r0, 0x2A - ldrb r0, [r0] - subs r0, 0x1 - strh r0, [r1, 0x8] - adds r0, r2, 0 - adds r0, 0x2B - ldrb r0, [r0] - adds r1, r2, 0 - adds r1, 0x62 - strh r0, [r1] - mov r0, sp - bl AddScrollIndicatorArrowPair - lsls r0, 24 - lsrs r0, 24 - add sp, 0x10 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0810427C: .4byte gUnknown_84524B4 -_08104280: .4byte gUnknown_203ACF0 - thumb_func_end sub_8104234 - - thumb_func_start sub_8104284 -sub_8104284: @ 8104284 - push {lr} - ldr r0, _081042B0 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x13] - cmp r0, 0x1 - beq _081042C0 - cmp r0, 0x1 - ble _081042E6 - cmp r0, 0x2 - bne _081042E6 - ldr r0, _081042B4 @ =gMain - ldr r2, [r0, 0x2C] - ldr r1, _081042B8 @ =0x00200100 - adds r0, r2, 0 - ands r0, r1 - cmp r0, r1 - beq _081042CE - ldr r0, _081042BC @ =0x00100100 - ands r2, r0 - cmp r2, r0 - beq _081042E2 - b _081042E6 - .align 2, 0 -_081042B0: .4byte gSaveBlock2Ptr -_081042B4: .4byte gMain -_081042B8: .4byte 0x00200100 -_081042BC: .4byte 0x00100100 -_081042C0: - ldr r0, _081042D4 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _081042D8 -_081042CE: - movs r0, 0x1 - b _081042E8 - .align 2, 0 -_081042D4: .4byte gMain -_081042D8: - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _081042E6 -_081042E2: - movs r0, 0x2 - b _081042E8 -_081042E6: - movs r0, 0 -_081042E8: - pop {r1} - bx r1 - thumb_func_end sub_8104284 - - thumb_func_start sub_81042EC -sub_81042EC: @ 81042EC - push {r4,r5,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _0810430C @ =gUnknown_203ACF0 - ldr r0, [r1] - ldrb r0, [r0, 0x1] - adds r5, r1, 0 - cmp r0, 0xC - bls _08104302 - b _08104656 -_08104302: - lsls r0, 2 - ldr r1, _08104310 @ =_08104314 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0810430C: .4byte gUnknown_203ACF0 -_08104310: .4byte _08104314 - .align 2, 0 -_08104314: - .4byte _08104348 - .4byte _08104368 - .4byte _08104398 - .4byte _081043AC - .4byte _081043E0 - .4byte _08104418 - .4byte _08104508 - .4byte _08104528 - .4byte _08104538 - .4byte _0810455C - .4byte _081045F2 - .4byte _08104604 - .4byte _08104630 -_08104348: - movs r0, 0x3 - bl HideBg - movs r0, 0x2 - bl HideBg - movs r0, 0x1 - bl HideBg - ldr r0, _08104364 @ =gUnknown_203ACF0 - ldr r1, [r0] - movs r0, 0x2 - b _08104654 - .align 2, 0 -_08104364: .4byte gUnknown_203ACF0 -_08104368: - movs r0, 0x2 - bl HideBg - movs r0, 0x1 - bl HideBg - ldr r1, _0810438C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _08104390 @ =sub_8102F80 - str r1, [r0] - ldr r0, _08104394 @ =gUnknown_203ACF0 - ldr r1, [r0] - movs r0, 0 - b _08104654 - .align 2, 0 -_0810438C: .4byte gTasks -_08104390: .4byte sub_8102F80 -_08104394: .4byte gUnknown_203ACF0 -_08104398: - ldr r0, [r5] - adds r0, 0x2C - movs r1, 0x1 - strb r1, [r0] - movs r0, 0 - bl sub_8105E1C - ldr r1, [r5] - movs r0, 0x3 - b _08104654 -_081043AC: - movs r0, 0x3 - bl CopyBgTilemapBufferToVram - movs r0, 0x2 - bl CopyBgTilemapBufferToVram - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - movs r0, 0 - bl CopyBgTilemapBufferToVram - ldr r4, _081043DC @ =gUnknown_203ACF0 - ldr r0, [r4] - adds r0, 0x5A - ldrh r0, [r0] - movs r1, 0 - movs r2, 0x7D - movs r3, 0xA - bl PlayCry2 - ldr r1, [r4] - movs r0, 0x4 - b _08104654 - .align 2, 0 -_081043DC: .4byte gUnknown_203ACF0 -_081043E0: - ldr r0, _0810440C @ =0xffff7fff - ldr r1, _08104410 @ =0x0000ffff - str r1, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - movs r0, 0x3 - bl ShowBg - movs r0, 0x2 - bl ShowBg - movs r0, 0x1 - bl ShowBg - ldr r0, _08104414 @ =gUnknown_203ACF0 - ldr r1, [r0] - movs r0, 0x5 - b _08104654 - .align 2, 0 -_0810440C: .4byte 0xffff7fff -_08104410: .4byte 0x0000ffff -_08104414: .4byte gUnknown_203ACF0 -_08104418: - ldr r0, _0810444C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08104454 - bl sub_8106014 - movs r0, 0x1E - str r0, [sp] - movs r0, 0x10 - str r0, [sp, 0x4] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0x2 - bl FillBgTilemapBufferRect_Palette0 - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - ldr r0, _08104450 @ =gUnknown_203ACF0 - ldr r1, [r0] - movs r0, 0x7 - b _08104654 - .align 2, 0 -_0810444C: .4byte gMain -_08104450: .4byte gUnknown_203ACF0 -_08104454: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08104484 - bl sub_8106014 - ldr r0, _08104478 @ =0xffff7fff - ldr r1, _0810447C @ =0x0000ffff - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _08104480 @ =gUnknown_203ACF0 - ldr r1, [r0] - movs r0, 0x1 - b _08104654 - .align 2, 0 -_08104478: .4byte 0xffff7fff -_0810447C: .4byte 0x0000ffff -_08104480: .4byte gUnknown_203ACF0 -_08104484: - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _081044C0 - movs r0, 0x1 - bl sub_8104664 - cmp r0, 0 - beq _081044C0 - bl sub_8106014 - ldr r0, _081044B4 @ =0xffff7fff - ldr r1, _081044B8 @ =0x0000ffff - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _081044BC @ =gUnknown_203ACF0 - ldr r1, [r0] - movs r0, 0x6 - b _08104654 - .align 2, 0 -_081044B4: .4byte 0xffff7fff -_081044B8: .4byte 0x0000ffff -_081044BC: .4byte gUnknown_203ACF0 -_081044C0: - ldr r0, _081044F8 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _081044CE - b _081045EC -_081044CE: - movs r0, 0 - bl sub_8104664 - cmp r0, 0 - bne _081044DA - b _081045EC -_081044DA: - bl sub_8106014 - ldr r0, _081044FC @ =0xffff7fff - ldr r1, _08104500 @ =0x0000ffff - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _08104504 @ =gUnknown_203ACF0 - ldr r1, [r0] - movs r0, 0x6 - b _08104654 - .align 2, 0 -_081044F8: .4byte gMain -_081044FC: .4byte 0xffff7fff -_08104500: .4byte 0x0000ffff -_08104504: .4byte gUnknown_203ACF0 -_08104508: - movs r0, 0x2 - bl HideBg - movs r0, 0x1 - bl HideBg - ldr r0, _08104524 @ =gUnknown_203ACF0 - ldr r1, [r0] - ldr r0, [r1, 0x30] - adds r2, r1, 0 - adds r2, 0x5A - strh r0, [r2] - movs r0, 0x2 - b _08104654 - .align 2, 0 -_08104524: .4byte gUnknown_203ACF0 -_08104528: - bl sub_810603C - ldr r0, _08104534 @ =gUnknown_203ACF0 - ldr r1, [r0] - movs r0, 0x8 - b _08104654 - .align 2, 0 -_08104534: .4byte gUnknown_203ACF0 -_08104538: - movs r0, 0x3 - bl CopyBgTilemapBufferToVram - movs r0, 0x2 - bl CopyBgTilemapBufferToVram - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - movs r0, 0 - bl CopyBgTilemapBufferToVram - ldr r0, _08104558 @ =gUnknown_203ACF0 - ldr r1, [r0] - movs r0, 0x9 - b _08104654 - .align 2, 0 -_08104558: .4byte gUnknown_203ACF0 -_0810455C: - ldr r0, _08104580 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08104590 - ldr r0, _08104584 @ =0xffff7fff - ldr r1, _08104588 @ =0x0000ffff - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _0810458C @ =gUnknown_203ACF0 - ldr r1, [r0] - movs r0, 0xC - b _08104654 - .align 2, 0 -_08104580: .4byte gMain -_08104584: .4byte 0xffff7fff -_08104588: .4byte 0x0000ffff -_0810458C: .4byte gUnknown_203ACF0 -_08104590: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _081045EC - movs r5, 0x1E - str r5, [sp] - movs r4, 0x10 - str r4, [sp, 0x4] - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - movs r3, 0x2 - bl FillBgTilemapBufferRect_Palette0 - str r5, [sp] - str r4, [sp, 0x4] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0x2 - bl FillBgTilemapBufferRect_Palette0 - str r5, [sp] - str r4, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0x2 - bl FillBgTilemapBufferRect_Palette0 - movs r0, 0x2 - bl CopyBgTilemapBufferToVram - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - movs r0, 0 - bl CopyBgTilemapBufferToVram - ldr r0, _081045E8 @ =gUnknown_203ACF0 - ldr r1, [r0] - movs r0, 0xA - b _08104654 - .align 2, 0 -_081045E8: .4byte gUnknown_203ACF0 -_081045EC: - bl sub_8106B34 - b _08104656 -_081045F2: - bl sub_81067C0 - ldr r0, _08104600 @ =gUnknown_203ACF0 - ldr r1, [r0] - movs r0, 0xB - b _08104654 - .align 2, 0 -_08104600: .4byte gUnknown_203ACF0 -_08104604: - movs r0, 0 - bl sub_8105E1C - movs r0, 0x3 - bl CopyBgTilemapBufferToVram - movs r0, 0x2 - bl CopyBgTilemapBufferToVram - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - movs r0, 0 - bl CopyBgTilemapBufferToVram - ldr r0, _0810462C @ =gUnknown_203ACF0 - ldr r1, [r0] - movs r0, 0x5 - b _08104654 - .align 2, 0 -_0810462C: .4byte gUnknown_203ACF0 -_08104630: - bl sub_81067C0 - movs r0, 0x1E - str r0, [sp] - movs r0, 0x10 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0x2 - bl FillBgTilemapBufferRect_Palette0 - movs r0, 0 - bl CopyBgTilemapBufferToVram - ldr r0, _08104660 @ =gUnknown_203ACF0 - ldr r1, [r0] - movs r0, 0x1 -_08104654: - strb r0, [r1, 0x1] -_08104656: - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08104660: .4byte gUnknown_203ACF0 - thumb_func_end sub_81042EC - thumb_func_start sub_8104664 sub_8104664: @ 8104664 push {r4-r7,lr} diff --git a/src/pokedex_screen.c b/src/pokedex_screen.c index 220d0c9ff..0fa958463 100644 --- a/src/pokedex_screen.c +++ b/src/pokedex_screen.c @@ -92,9 +92,10 @@ void sub_8103924(const struct ListMenuTemplate * a0, u8 a1); u8 sub_81039F0(void); void sub_8103988(u8 a0); void sub_8103AC8(u8 taskId); -int sub_8104284(void); u8 sub_8104234(void); +int sub_8104284(void); void sub_81042EC(u8 taskId); +bool32 sub_8104664(u8 a0); 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); @@ -143,6 +144,7 @@ extern const struct ScrollArrowsTemplate gUnknown_84520E4; extern const struct PokedexScreenWindowGfx gUnknown_84520F4[]; extern const struct ListMenuWindowRect gUnknown_845218C; extern const struct ScrollArrowsTemplate gUnknown_84521B4; +extern const struct ScrollArrowsTemplate gUnknown_84524B4; extern const struct CursorStruct gUnknown_84524C4; void sub_81024C0(void) @@ -1163,3 +1165,163 @@ void sub_8103AC8(u8 taskId) break; } } + +u8 sub_8104234(void) +{ + struct ScrollArrowsTemplate template = gUnknown_84524B4; + template.fullyUpThreshold = gUnknown_203ACF0->field_29; + template.fullyDownThreshold = gUnknown_203ACF0->field_2A - 1; + gUnknown_203ACF0->field_62 = gUnknown_203ACF0->field_2B; + return AddScrollIndicatorArrowPair(&template, &gUnknown_203ACF0->field_62); +} + +int sub_8104284(void) +{ + switch (gSaveBlock2Ptr->optionsButtonMode) + { + case OPTIONS_BUTTON_MODE_L_EQUALS_A: + // Using the JOY_HELD and JOY_NEW macros here does not match! + if ((gMain.heldKeys & R_BUTTON) && (gMain.newKeys & DPAD_LEFT)) + return 1; + else if ((gMain.heldKeys & R_BUTTON) && (gMain.newKeys & DPAD_RIGHT)) + return 2; + else + return 0; + case OPTIONS_BUTTON_MODE_LR: + if (gMain.newKeys & L_BUTTON) + return 1; + else if (gMain.newKeys & R_BUTTON) + return 2; + else + return 0; + default: + case OPTIONS_BUTTON_MODE_HELP: + return 0; + } +} + +void sub_81042EC(u8 taskId) +{ + switch (gUnknown_203ACF0->field_01) + { + case 0: + HideBg(3); + HideBg(2); + HideBg(1); + gUnknown_203ACF0->field_01 = 2; + break; + case 1: + HideBg(2); + HideBg(1); + gTasks[taskId].func = sub_8102F80; + gUnknown_203ACF0->field_01 = 0; + break; + case 2: + gUnknown_203ACF0->field_2C = 1; + sub_8105E1C(0); + gUnknown_203ACF0->field_01 = 3; + break; + case 3: + CopyBgTilemapBufferToVram(3); + CopyBgTilemapBufferToVram(2); + CopyBgTilemapBufferToVram(1); + CopyBgTilemapBufferToVram(0); + PlayCry2(gUnknown_203ACF0->field_5A, 0, 125, 10); + gUnknown_203ACF0->field_01 = 4; + break; + case 4: + BeginNormalPaletteFade(0xFFFF7FFF, 0, 16, 0, RGB_WHITEALPHA); + ShowBg(3); + ShowBg(2); + ShowBg(1); + gUnknown_203ACF0->field_01 = 5; + break; + case 5: + if (JOY_NEW(A_BUTTON)) + { + sub_8106014(); + FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 2, 30, 16); + CopyBgTilemapBufferToVram(1); + gUnknown_203ACF0->field_01 = 7; + } + else if (JOY_NEW(B_BUTTON)) + { + sub_8106014(); + BeginNormalPaletteFade(0xFFFF7FFF, 0, 0, 16, RGB_WHITEALPHA); + gUnknown_203ACF0->field_01 = 1; + } + else if (JOY_NEW(DPAD_UP) && sub_8104664(1)) + { + sub_8106014(); + BeginNormalPaletteFade(0xFFFF7FFF, 0, 0, 16, RGB_WHITEALPHA); + gUnknown_203ACF0->field_01 = 6; + } + else if (JOY_NEW(DPAD_DOWN) && sub_8104664(0)) + { + sub_8106014(); + BeginNormalPaletteFade(0xFFFF7FFF, 0, 0, 16, RGB_WHITEALPHA); + gUnknown_203ACF0->field_01 = 6; + } + else + { + sub_8106B34(); + } + break; + case 6: + HideBg(2); + HideBg(1); + gUnknown_203ACF0->field_5A = gUnknown_203ACF0->field_30; + gUnknown_203ACF0->field_01 = 2; + break; + case 7: + sub_810603C(); + gUnknown_203ACF0->field_01 = 8; + break; + case 8: + CopyBgTilemapBufferToVram(3); + CopyBgTilemapBufferToVram(2); + CopyBgTilemapBufferToVram(1); + CopyBgTilemapBufferToVram(0); + gUnknown_203ACF0->field_01 = 9; + break; + case 9: + if (JOY_NEW(A_BUTTON)) + { + BeginNormalPaletteFade(0xFFFF7FFF, 0, 0, 16, RGB_WHITEALPHA); + gUnknown_203ACF0->field_01 = 12; + } + else if (JOY_NEW(B_BUTTON)) + { + FillBgTilemapBufferRect_Palette0(2, 0x000, 0, 2, 30, 16); + FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 2, 30, 16); + FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 2, 30, 16); + CopyBgTilemapBufferToVram(2); + CopyBgTilemapBufferToVram(1); + CopyBgTilemapBufferToVram(0); + gUnknown_203ACF0->field_01 = 10; + } + else + { + sub_8106B34(); + } + break; + case 10: + sub_81067C0(); + gUnknown_203ACF0->field_01 = 11; + break; + case 11: + sub_8105E1C(0); + CopyBgTilemapBufferToVram(3); + CopyBgTilemapBufferToVram(2); + CopyBgTilemapBufferToVram(1); + CopyBgTilemapBufferToVram(0); + gUnknown_203ACF0->field_01 = 5; + break; + case 12: + sub_81067C0(); + FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 2, 30, 16); + CopyBgTilemapBufferToVram(0); + gUnknown_203ACF0->field_01 = 1; + break; + } +} |