summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-12-10 13:27:37 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2019-12-10 13:27:37 -0500
commit30f74d1c371dbf324a28613554ee9027c4918dd6 (patch)
tree15aeee3d2bf9759109247bca641464ff57bfc518
parentd4314287ae19ef10b036c3fa0dcf9787b7a500d6 (diff)
through sub_810345C
-rw-r--r--asm/pokedex_screen.s412
-rw-r--r--include/strings.h2
-rw-r--r--src/pokedex_screen.c116
3 files changed, 115 insertions, 415 deletions
diff --git a/asm/pokedex_screen.s b/asm/pokedex_screen.s
index 65af03e6f..f6b2ec5aa 100644
--- a/asm/pokedex_screen.s
+++ b/asm/pokedex_screen.s
@@ -5,418 +5,6 @@
.text
- thumb_func_start sub_810317C
-sub_810317C: @ 810317C
- push {r4,r5,lr}
- sub sp, 0x24
- movs r0, 0x1E
- str r0, [sp]
- movs r0, 0x14
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- movs r0, 0x3
- movs r1, 0xE
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect
- movs r0, 0x20
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect
- ldr r0, _08103224 @ =gUnknown_845216C
- bl AddWindow
- ldr r2, _08103228 @ =gUnknown_203ACF0
- ldr r1, [r2]
- adds r1, 0x40
- strb r0, [r1]
- add r1, sp, 0xC
- ldr r0, _0810322C @ =gUnknown_8452174
- ldm r0!, {r3-r5}
- stm r1!, {r3-r5}
- ldm r0!, {r3-r5}
- stm r1!, {r3-r5}
- ldr r2, [r2]
- ldr r0, [r2, 0x44]
- str r0, [sp, 0xC]
- add r1, sp, 0xC
- adds r0, r2, 0
- adds r0, 0x40
- ldrb r0, [r0]
- strb r0, [r1, 0x10]
- adds r0, r2, 0
- adds r0, 0x48
- ldrh r0, [r0]
- strh r0, [r1, 0xC]
- adds r0, r2, 0
- adds r0, 0x42
- ldrb r1, [r0]
- add r0, sp, 0xC
- bl sub_8103924
- movs r0, 0
- movs r1, 0xFF
- bl FillWindowPixelBuffer
- ldr r0, _08103230 @ =gUnknown_8415F3D
- movs r1, 0x1
- bl sub_8106E78
- movs r0, 0x1
- movs r1, 0xFF
- bl FillWindowPixelBuffer
- ldr r0, _08103234 @ =gText_PickOKExit
- bl sub_8104C2C
- movs r0, 0
- movs r1, 0x2
- bl CopyWindowToVram
- movs r0, 0x1
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0x24
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08103224: .4byte gUnknown_845216C
-_08103228: .4byte gUnknown_203ACF0
-_0810322C: .4byte gUnknown_8452174
-_08103230: .4byte gUnknown_8415F3D
-_08103234: .4byte gText_PickOKExit
- thumb_func_end sub_810317C
-
- thumb_func_start sub_8103238
-sub_8103238: @ 8103238
- push {r4,r5,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _08103258 @ =gUnknown_203ACF0
- ldr r0, [r1]
- ldrb r0, [r0, 0x1]
- adds r4, r1, 0
- cmp r0, 0x7
- bls _0810324E
- b _0810344C
-_0810324E:
- lsls r0, 2
- ldr r1, _0810325C @ =_08103260
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08103258: .4byte gUnknown_203ACF0
-_0810325C: .4byte _08103260
- .align 2, 0
-_08103260:
- .4byte _08103280
- .4byte _081032B0
- .4byte _081032E8
- .4byte _081032FC
- .4byte _08103318
- .4byte _08103344
- .4byte _08103362
- .4byte _08103404
-_08103280:
- movs r0, 0x10
- movs r1, 0
- bl sub_8107D38
- movs r0, 0x20
- movs r1, 0x1
- bl sub_8107D38
- ldr r4, _081032AC @ =gUnknown_203ACF0
- ldr r0, [r4]
- adds r0, 0x42
- ldrb r0, [r0]
- bl sub_8103518
- ldr r2, [r4]
- adds r1, r2, 0
- adds r1, 0x48
- strh r0, [r1]
- movs r0, 0x2
- strb r0, [r2, 0x1]
- b _0810344C
- .align 2, 0
-_081032AC: .4byte gUnknown_203ACF0
-_081032B0:
- ldr r0, [r4]
- adds r0, 0x42
- ldrb r0, [r0]
- bl sub_8103988
- movs r0, 0x1
- bl HideBg
- ldr r0, [r4]
- adds r0, 0x40
- bl sub_81047B0
- ldr r1, _081032E0 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _081032E4 @ =sub_810287C
- str r1, [r0]
- ldr r1, [r4]
- movs r0, 0
- strb r0, [r1, 0x1]
- b _0810344C
- .align 2, 0
-_081032E0: .4byte gTasks
-_081032E4: .4byte sub_810287C
-_081032E8:
- bl sub_810345C
- ldr r0, _081032F8 @ =gUnknown_203ACF0
- ldr r1, [r0]
- movs r0, 0x3
- strb r0, [r1, 0x1]
- b _0810344C
- .align 2, 0
-_081032F8: .4byte gUnknown_203ACF0
-_081032FC:
- movs r0, 0x3
- bl CopyBgTilemapBufferToVram
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- ldr r0, _08103314 @ =gUnknown_203ACF0
- ldr r1, [r0]
- movs r0, 0x4
- strb r0, [r1, 0x1]
- b _0810344C
- .align 2, 0
-_08103314: .4byte gUnknown_203ACF0
-_08103318:
- movs r0, 0x1
- bl ShowBg
- ldr r0, _08103338 @ =0xffff7fff
- ldr r1, _0810333C @ =0x0000ffff
- str r1, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r0, _08103340 @ =gUnknown_203ACF0
- ldr r1, [r0]
- movs r0, 0x5
- strb r0, [r1, 0x1]
- b _0810344C
- .align 2, 0
-_08103338: .4byte 0xffff7fff
-_0810333C: .4byte 0x0000ffff
-_08103340: .4byte gUnknown_203ACF0
-_08103344:
- ldr r1, [r4]
- ldrb r0, [r1, 0x17]
- adds r1, 0x62
- movs r2, 0
- bl ListMenuGetScrollAndRow
- bl sub_81039F0
- ldr r1, [r4]
- adds r1, 0x60
- strb r0, [r1]
- ldr r1, [r4]
- movs r0, 0x6
- strb r0, [r1, 0x1]
- b _0810344C
-_08103362:
- ldr r0, [r4]
- adds r0, 0x41
- ldrb r0, [r0]
- bl ListMenu_ProcessInput
- ldr r1, [r4]
- str r0, [r1, 0x30]
- ldrb r0, [r1, 0x17]
- adds r1, 0x62
- movs r2, 0
- bl ListMenuGetScrollAndRow
- ldr r0, _081033C4 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r2, 0x1
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _081033D0
- ldr r0, [r4]
- ldr r1, [r0, 0x30]
- lsrs r0, r1, 16
- ands r0, r2
- cmp r0, 0
- beq _0810344C
- lsls r0, r1, 16
- lsrs r0, 16
- bl sub_8106A20
- lsls r0, 24
- cmp r0, 0
- bne _0810344C
- ldr r0, [r4]
- adds r0, 0x60
- ldrb r0, [r0]
- bl RemoveScrollIndicatorArrowPair
- ldr r0, _081033C8 @ =0xffff7fff
- ldr r1, _081033CC @ =0x0000ffff
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, [r4]
- movs r0, 0x7
- strb r0, [r1, 0x1]
- b _0810344C
- .align 2, 0
-_081033C4: .4byte gMain
-_081033C8: .4byte 0xffff7fff
-_081033CC: .4byte 0x0000ffff
-_081033D0:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0810344C
- ldr r0, [r4]
- adds r0, 0x60
- ldrb r0, [r0]
- bl RemoveScrollIndicatorArrowPair
- ldr r0, _081033FC @ =0xffff7fff
- ldr r1, _08103400 @ =0x0000ffff
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, [r4]
- movs r0, 0x1
- strb r0, [r1, 0x1]
- b _0810344C
- .align 2, 0
-_081033FC: .4byte 0xffff7fff
-_08103400: .4byte 0x0000ffff
-_08103404:
- ldr r0, [r4]
- adds r0, 0x42
- ldrb r0, [r0]
- bl sub_8103988
- movs r0, 0x20
- str r0, [sp]
- movs r0, 0x14
- str r0, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- ldr r0, [r4]
- adds r0, 0x40
- bl sub_81047B0
- ldr r0, [r4]
- adds r0, 0x2F
- movs r2, 0
- movs r1, 0x1
- strb r1, [r0]
- ldr r1, _08103454 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _08103458 @ =sub_8103AC8
- str r1, [r0]
- ldr r0, [r4]
- strb r2, [r0, 0x1]
-_0810344C:
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08103454: .4byte gTasks
-_08103458: .4byte sub_8103AC8
- thumb_func_end sub_8103238
-
- thumb_func_start sub_810345C
-sub_810345C: @ 810345C
- push {r4,r5,lr}
- sub sp, 0x24
- movs r0, 0x1E
- str r0, [sp]
- movs r0, 0x14
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- movs r0, 0x3
- movs r1, 0xE
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect
- movs r0, 0x20
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect
- ldr r0, _08103504 @ =gUnknown_845216C
- bl AddWindow
- ldr r2, _08103508 @ =gUnknown_203ACF0
- ldr r1, [r2]
- adds r1, 0x40
- strb r0, [r1]
- add r1, sp, 0xC
- ldr r0, _0810350C @ =gUnknown_8452174
- ldm r0!, {r3-r5}
- stm r1!, {r3-r5}
- ldm r0!, {r3-r5}
- stm r1!, {r3-r5}
- ldr r2, [r2]
- ldr r0, [r2, 0x44]
- str r0, [sp, 0xC]
- add r1, sp, 0xC
- adds r0, r2, 0
- adds r0, 0x40
- ldrb r0, [r0]
- strb r0, [r1, 0x10]
- adds r0, r2, 0
- adds r0, 0x48
- ldrh r0, [r0]
- strh r0, [r1, 0xC]
- adds r0, r2, 0
- adds r0, 0x42
- ldrb r1, [r0]
- add r0, sp, 0xC
- bl sub_8103924
- movs r0, 0
- movs r1, 0xFF
- bl FillWindowPixelBuffer
- ldr r0, _08103510 @ =gUnknown_8415F4A
- movs r1, 0x1
- bl sub_8106E78
- movs r0, 0x1
- movs r1, 0xFF
- bl FillWindowPixelBuffer
- ldr r0, _08103514 @ =gText_PickOKExit
- bl sub_8104C2C
- movs r0, 0
- movs r1, 0x2
- bl CopyWindowToVram
- movs r0, 0x1
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0x24
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08103504: .4byte gUnknown_845216C
-_08103508: .4byte gUnknown_203ACF0
-_0810350C: .4byte gUnknown_8452174
-_08103510: .4byte gUnknown_8415F4A
-_08103514: .4byte gText_PickOKExit
- thumb_func_end sub_810345C
-
thumb_func_start sub_8103518
sub_8103518: @ 8103518
push {r4-r7,lr}
diff --git a/include/strings.h b/include/strings.h
index ac4720678..140e9fc41 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -972,5 +972,7 @@ extern const u8 gUnknown_8415DC4[];
extern const u8 gUnknown_8415DCA[];
extern const u8 gUnknown_8415DD1[];
extern const u8 gUnknown_8415DD7[];
+extern const u8 gUnknown_8415F3D[];
+extern const u8 gUnknown_8415F4A[];
#endif //GUARD_STRINGS_H
diff --git a/src/pokedex_screen.c b/src/pokedex_screen.c
index 09f602ece..52ca3f28b 100644
--- a/src/pokedex_screen.c
+++ b/src/pokedex_screen.c
@@ -49,7 +49,7 @@ struct PokedexScreenData
u8 field_40;
u8 field_41;
u8 field_42;
- void * field_44;
+ struct ListMenuItem * field_44;
u16 field_48;
u8 filler_4A[0x10];
u16 field_5A;
@@ -74,8 +74,10 @@ EWRAM_DATA struct PokedexScreenData * gUnknown_203ACF0 = NULL;
void sub_810287C(u8 taskId);
void sub_8102C28(void);
void sub_8102F80(u8 taskId);
-void sub_8103238(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_8103988(u8 a0);
@@ -87,6 +89,7 @@ u16 sub_8104BBC(u8 a0, u8 a1);
void sub_8104C2C(const u8 *a0);
void sub_81042EC(u8 taskId);
u8 sub_81068A0(u8 a0);
+bool8 sub_8106A20(u16 a0);
void sub_8106E78(const u8 *a0, s32 a1);
extern const u32 gUnknown_8440274[];
@@ -101,6 +104,8 @@ extern const struct PokedexScreenData gUnknown_8451EE4;
extern const struct WindowTemplate gUnknown_8451F54;
extern const struct WindowTemplate gUnknown_8451F5C;
extern const struct WindowTemplate gUnknown_8451F64;
+extern const struct WindowTemplate gUnknown_845216C;
+extern const struct ListMenuTemplate gUnknown_8452174;
extern const struct ListMenuTemplate gUnknown_8452004;
extern const struct ListMenuTemplate gUnknown_84520BC;
extern const struct ScrollArrowsTemplate gUnknown_84520D4;
@@ -160,7 +165,7 @@ void sub_810250C(void)
gUnknown_203ACF0 = Alloc(sizeof(*gUnknown_203ACF0));
*gUnknown_203ACF0 = gUnknown_8451EE4;
gUnknown_203ACF0->field_00 = taskId;
- gUnknown_203ACF0->field_44 = Alloc(0xC10);
+ gUnknown_203ACF0->field_44 = Alloc(386 * sizeof(struct ListMenuItem));
gUnknown_203ACF0->field_6A = sub_8104BBC(0, 1);
gUnknown_203ACF0->field_6C = sub_8104BBC(1, 1);
gUnknown_203ACF0->field_66 = sub_8104BBC(0, 0);
@@ -517,3 +522,108 @@ void sub_8102F80(u8 taskId)
break;
}
}
+
+void sub_810317C(void)
+{
+ struct ListMenuTemplate template;
+ FillBgTilemapBufferRect(3, 0x00E, 0, 0, 30, 20, 0x00);
+ FillBgTilemapBufferRect(1, 0x000, 0, 0, 32, 32, 0x11);
+ gUnknown_203ACF0->field_40 = AddWindow(&gUnknown_845216C);
+ template = gUnknown_8452174;
+ template.items = gUnknown_203ACF0->field_44;
+ template.windowId = gUnknown_203ACF0->field_40;
+ template.totalItems = gUnknown_203ACF0->field_48;
+ sub_8103924(&template, gUnknown_203ACF0->field_42);
+ FillWindowPixelBuffer(0, PIXEL_FILL(15));
+ sub_8106E78(gUnknown_8415F3D, 1);
+ FillWindowPixelBuffer(1, PIXEL_FILL(15));
+ sub_8104C2C(gText_PickOKExit);
+ CopyWindowToVram(0, 2);
+ CopyWindowToVram(1, 2);
+}
+
+void sub_8103238(u8 taskId)
+{
+ switch (gUnknown_203ACF0->field_01)
+ {
+ case 0:
+ sub_8107D38(0x10, 0);
+ sub_8107D38(0x20, 1);
+ gUnknown_203ACF0->field_48 = sub_8103518(gUnknown_203ACF0->field_42);
+ gUnknown_203ACF0->field_01 = 2;
+ break;
+ case 1:
+ sub_8103988(gUnknown_203ACF0->field_42);
+ HideBg(1);
+ sub_81047B0(&gUnknown_203ACF0->field_40);
+ gTasks[taskId].func = sub_810287C;
+ gUnknown_203ACF0->field_01 = 0;
+ break;
+ case 2:
+ sub_810345C();
+ gUnknown_203ACF0->field_01 = 3;
+ break;
+ case 3:
+ CopyBgTilemapBufferToVram(3);
+ CopyBgTilemapBufferToVram(1);
+ gUnknown_203ACF0->field_01 = 4;
+ break;
+ case 4:
+ ShowBg(1);
+ BeginNormalPaletteFade(0xFFFF7FFF, 0, 16, 0, RGB_WHITEALPHA);
+ gUnknown_203ACF0->field_01 = 5;
+ break;
+ case 5:
+ ListMenuGetScrollAndRow(gUnknown_203ACF0->field_17, &gUnknown_203ACF0->field_62, NULL);
+ gUnknown_203ACF0->field_60 = sub_81039F0();
+ gUnknown_203ACF0->field_01 = 6;
+ break;
+ case 6:
+ gUnknown_203ACF0->field_30 = ListMenu_ProcessInput(gUnknown_203ACF0->field_41);
+ ListMenuGetScrollAndRow(gUnknown_203ACF0->field_17, &gUnknown_203ACF0->field_62, NULL);
+ if (JOY_NEW(A_BUTTON))
+ {
+ if (((gUnknown_203ACF0->field_30 >> 16) & 1) && !sub_8106A20(gUnknown_203ACF0->field_30))
+ {
+ RemoveScrollIndicatorArrowPair(gUnknown_203ACF0->field_60);
+ BeginNormalPaletteFade(0xFFFF7FFF, 0, 0, 16, RGB_WHITEALPHA);
+ gUnknown_203ACF0->field_01 = 7;
+ }
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ RemoveScrollIndicatorArrowPair(gUnknown_203ACF0->field_60);
+ BeginNormalPaletteFade(0xFFFF7FFF, 0, 0, 16, RGB_WHITEALPHA);
+ gUnknown_203ACF0->field_01 = 1;
+ }
+ break;
+ case 7:
+ sub_8103988(gUnknown_203ACF0->field_42);
+ FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 32, 20);
+ CopyBgTilemapBufferToVram(1);
+ sub_81047B0(&gUnknown_203ACF0->field_40);
+ gUnknown_203ACF0->field_2F = 1;
+ gTasks[taskId].func = sub_8103AC8;
+ gUnknown_203ACF0->field_01 = 0;
+ break;
+ }
+}
+
+void sub_810345C(void)
+{
+ struct ListMenuTemplate template;
+ FillBgTilemapBufferRect(3, 0x00E, 0, 0, 30, 20, 0x00);
+ FillBgTilemapBufferRect(1, 0x000, 0, 0, 32, 32, 0x11);
+ gUnknown_203ACF0->field_40 = AddWindow(&gUnknown_845216C);
+ template = gUnknown_8452174;
+ template.items = gUnknown_203ACF0->field_44;
+ template.windowId = gUnknown_203ACF0->field_40;
+ template.totalItems = gUnknown_203ACF0->field_48;
+ sub_8103924(&template, gUnknown_203ACF0->field_42);
+ FillWindowPixelBuffer(0, PIXEL_FILL(15));
+ sub_8106E78(gUnknown_8415F4A, 1);
+ FillWindowPixelBuffer(1, PIXEL_FILL(15));
+ sub_8104C2C(gText_PickOKExit);
+ CopyWindowToVram(0, 2);
+ CopyWindowToVram(1, 2);
+}