summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@gmail.com>2019-12-11 20:30:09 -0500
committerPikalaxALT <PikalaxALT@gmail.com>2019-12-11 20:30:09 -0500
commite2a4da3a0117e1cb02bd082d82330c9c3d696005 (patch)
tree3f677d39a64a33937855ec9e97ab79d5ef3b9161
parentaf1c24b751a12b5c5d283e13326df3a997ef27dd (diff)
through sub_81042EC
-rw-r--r--asm/pokedex_screen.s483
-rw-r--r--src/pokedex_screen.c164
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;
+ }
+}