summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-12-10 12:33:19 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2019-12-10 12:33:19 -0500
commitd4314287ae19ef10b036c3fa0dcf9787b7a500d6 (patch)
tree52bdefef8558abe49ac0ba2f24d565eab92d9457
parent002f6d3be65933b0a61669d7219931b61296a918 (diff)
through sub_8102F80
-rw-r--r--asm/pokedex_screen.s616
-rw-r--r--include/strings.h8
-rw-r--r--src/pokedex_screen.c184
3 files changed, 187 insertions, 621 deletions
diff --git a/asm/pokedex_screen.s b/asm/pokedex_screen.s
index 753cf8008..65af03e6f 100644
--- a/asm/pokedex_screen.s
+++ b/asm/pokedex_screen.s
@@ -5,622 +5,6 @@
.text
- thumb_func_start sub_8102C28
-sub_8102C28: @ 8102C28
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x24
- movs r5, 0x1E
- str r5, [sp]
- movs r4, 0x14
- str r4, [sp, 0x4]
- movs r0, 0
- mov r9, r0
- str r0, [sp, 0x8]
- movs r0, 0x3
- movs r1, 0xE
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect
- str r5, [sp]
- str r4, [sp, 0x4]
- movs r6, 0x11
- str r6, [sp, 0x8]
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect
- str r5, [sp]
- str r4, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect
- ldr r0, _08102DA4 @ =gUnknown_8451F54
- bl AddWindow
- ldr r7, _08102DA8 @ =gUnknown_203ACF0
- ldr r1, [r7]
- strb r0, [r1, 0x14]
- ldr r0, _08102DAC @ =gUnknown_8451F5C
- bl AddWindow
- ldr r1, [r7]
- strb r0, [r1, 0x15]
- ldr r0, _08102DB0 @ =gUnknown_8451F64
- bl AddWindow
- ldr r1, [r7]
- strb r0, [r1, 0x16]
- bl IsNationalPokedexEnabled
- adds r5, r0, 0
- cmp r5, 0
- bne _08102C9E
- b _08102DC8
-_08102C9E:
- add r1, sp, 0xC
- ldr r0, _08102DB4 @ =gUnknown_84520BC
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- add r2, sp, 0xC
- ldr r0, [r7]
- ldrb r1, [r0, 0x14]
- strb r1, [r2, 0x10]
- ldrh r1, [r0, 0x12]
- ldrh r2, [r0, 0x10]
- add r0, sp, 0xC
- bl ListMenuInit
- ldr r1, [r7]
- strb r0, [r1, 0x17]
- ldr r0, [r7]
- ldrb r0, [r0, 0x16]
- movs r1, 0
- bl FillWindowPixelBuffer
- ldr r0, [r7]
- ldrb r0, [r0, 0x16]
- ldr r2, _08102DB8 @ =gUnknown_8415DC4
- movs r5, 0x2
- str r5, [sp]
- mov r1, r9
- str r1, [sp, 0x4]
- movs r1, 0
- movs r3, 0
- bl sub_81047C8
- ldr r0, [r7]
- ldrb r0, [r0, 0x16]
- ldr r2, _08102DBC @ =gUnknown_8415DD1
- mov r8, r2
- movs r4, 0xD
- str r4, [sp]
- mov r3, r9
- str r3, [sp, 0x4]
- movs r1, 0
- movs r3, 0x8
- bl sub_81047C8
- ldr r1, [r7]
- ldrb r0, [r1, 0x16]
- adds r1, 0x66
- ldrh r2, [r1]
- str r4, [sp]
- str r5, [sp, 0x4]
- movs r1, 0
- movs r3, 0x34
- bl sub_810491C
- ldr r0, [r7]
- ldrb r0, [r0, 0x16]
- ldr r6, _08102DC0 @ =gUnknown_8415DD7
- movs r4, 0x18
- str r4, [sp]
- mov r1, r9
- str r1, [sp, 0x4]
- movs r1, 0
- adds r2, r6, 0
- movs r3, 0x8
- bl sub_81047C8
- ldr r1, [r7]
- ldrb r0, [r1, 0x16]
- adds r1, 0x6A
- ldrh r2, [r1]
- str r4, [sp]
- str r5, [sp, 0x4]
- movs r1, 0
- movs r3, 0x34
- bl sub_810491C
- ldr r0, [r7]
- ldrb r0, [r0, 0x16]
- ldr r2, _08102DC4 @ =gUnknown_8415DCA
- movs r1, 0x25
- str r1, [sp]
- mov r3, r9
- str r3, [sp, 0x4]
- movs r1, 0
- movs r3, 0
- bl sub_81047C8
- ldr r0, [r7]
- ldrb r0, [r0, 0x16]
- movs r4, 0x30
- str r4, [sp]
- mov r1, r9
- str r1, [sp, 0x4]
- movs r1, 0
- mov r2, r8
- movs r3, 0x8
- bl sub_81047C8
- ldr r1, [r7]
- ldrb r0, [r1, 0x16]
- adds r1, 0x68
- ldrh r2, [r1]
- str r4, [sp]
- str r5, [sp, 0x4]
- movs r1, 0
- movs r3, 0x34
- bl sub_810491C
- ldr r0, [r7]
- ldrb r0, [r0, 0x16]
- movs r4, 0x3B
- str r4, [sp]
- mov r2, r9
- str r2, [sp, 0x4]
- movs r1, 0
- adds r2, r6, 0
- movs r3, 0x8
- bl sub_81047C8
- ldr r1, [r7]
- ldrb r0, [r1, 0x16]
- adds r1, 0x6C
- ldrh r2, [r1]
- str r4, [sp]
- str r5, [sp, 0x4]
- movs r1, 0
- movs r3, 0x34
- bl sub_810491C
- b _08102E4A
- .align 2, 0
-_08102DA4: .4byte gUnknown_8451F54
-_08102DA8: .4byte gUnknown_203ACF0
-_08102DAC: .4byte gUnknown_8451F5C
-_08102DB0: .4byte gUnknown_8451F64
-_08102DB4: .4byte gUnknown_84520BC
-_08102DB8: .4byte gUnknown_8415DC4
-_08102DBC: .4byte gUnknown_8415DD1
-_08102DC0: .4byte gUnknown_8415DD7
-_08102DC4: .4byte gUnknown_8415DCA
-_08102DC8:
- add r1, sp, 0xC
- ldr r0, _08102EA8 @ =gUnknown_8452004
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- add r2, sp, 0xC
- ldr r0, [r7]
- ldrb r1, [r0, 0x14]
- strb r1, [r2, 0x10]
- ldrh r1, [r0, 0x12]
- ldrh r2, [r0, 0x10]
- add r0, sp, 0xC
- bl ListMenuInit
- ldr r1, [r7]
- strb r0, [r1, 0x17]
- ldr r0, [r7]
- ldrb r0, [r0, 0x16]
- movs r1, 0
- bl FillWindowPixelBuffer
- ldr r0, [r7]
- ldrb r0, [r0, 0x16]
- ldr r2, _08102EAC @ =gUnknown_8415DC4
- movs r1, 0x9
- str r1, [sp]
- str r5, [sp, 0x4]
- movs r1, 0x1
- movs r3, 0
- bl sub_81047C8
- ldr r1, [r7]
- ldrb r0, [r1, 0x16]
- adds r1, 0x66
- ldrh r2, [r1]
- movs r1, 0x15
- str r1, [sp]
- movs r4, 0x2
- str r4, [sp, 0x4]
- movs r1, 0x1
- movs r3, 0x20
- bl sub_810491C
- ldr r0, [r7]
- ldrb r0, [r0, 0x16]
- ldr r2, _08102EB0 @ =gUnknown_8415DCA
- movs r1, 0x25
- str r1, [sp]
- str r5, [sp, 0x4]
- movs r1, 0x1
- movs r3, 0
- bl sub_81047C8
- ldr r1, [r7]
- ldrb r0, [r1, 0x16]
- adds r1, 0x68
- ldrh r2, [r1]
- movs r1, 0x31
- str r1, [sp]
- str r4, [sp, 0x4]
- movs r1, 0x1
- movs r3, 0x20
- bl sub_810491C
-_08102E4A:
- movs r0, 0
- movs r1, 0xFF
- bl FillWindowPixelBuffer
- ldr r0, _08102EB4 @ =gUnknown_8415D9C
- movs r1, 0x1
- bl sub_8106E78
- movs r0, 0x1
- movs r1, 0xFF
- bl FillWindowPixelBuffer
- ldr r0, _08102EB8 @ =gUnknown_8415DB8
- bl sub_8104C2C
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0
- movs r1, 0x2
- bl CopyWindowToVram
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0x1
- movs r1, 0x2
- bl CopyWindowToVram
- ldr r4, _08102EBC @ =gUnknown_203ACF0
- ldr r0, [r4]
- ldrb r0, [r0, 0x16]
- bl PutWindowTilemap
- ldr r0, [r4]
- ldrb r0, [r0, 0x16]
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0x24
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08102EA8: .4byte gUnknown_8452004
-_08102EAC: .4byte gUnknown_8415DC4
-_08102EB0: .4byte gUnknown_8415DCA
-_08102EB4: .4byte gUnknown_8415D9C
-_08102EB8: .4byte gUnknown_8415DB8
-_08102EBC: .4byte gUnknown_203ACF0
- thumb_func_end sub_8102C28
-
- thumb_func_start sub_8102EC0
-sub_8102EC0: @ 8102EC0
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r1, 24
- cmp r1, 0
- bne _08102ED0
- movs r0, 0x5
- bl PlaySE
-_08102ED0:
- movs r0, 0x2
- negs r0, r0
- cmp r5, r0
- bne _08102F00
- ldr r0, _08102EF4 @ =gUnknown_203ACF0
- ldr r0, [r0]
- ldrb r0, [r0, 0x15]
- ldr r1, _08102EF8 @ =gUnknown_8440EF0
- movs r2, 0
- movs r3, 0
- bl CopyToWindowPixelBuffer
- ldr r0, _08102EFC @ =gUnknown_8443460
- movs r1, 0x10
- movs r2, 0x20
- bl LoadPalette
- b _08102F24
- .align 2, 0
-_08102EF4: .4byte gUnknown_203ACF0
-_08102EF8: .4byte gUnknown_8440EF0
-_08102EFC: .4byte gUnknown_8443460
-_08102F00:
- ldr r0, _08102F40 @ =gUnknown_203ACF0
- ldr r0, [r0]
- ldrb r0, [r0, 0x15]
- ldr r4, _08102F44 @ =gUnknown_84520F4
- lsls r5, 3
- adds r1, r5, r4
- ldr r1, [r1]
- movs r2, 0
- movs r3, 0
- bl CopyToWindowPixelBuffer
- adds r4, 0x4
- adds r5, r4
- ldr r0, [r5]
- movs r1, 0x10
- movs r2, 0x20
- bl LoadPalette
-_08102F24:
- ldr r4, _08102F40 @ =gUnknown_203ACF0
- ldr r0, [r4]
- ldrb r0, [r0, 0x15]
- bl PutWindowTilemap
- ldr r0, [r4]
- ldrb r0, [r0, 0x15]
- movs r1, 0x2
- bl CopyWindowToVram
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08102F40: .4byte gUnknown_203ACF0
-_08102F44: .4byte gUnknown_84520F4
- thumb_func_end sub_8102EC0
-
- thumb_func_start sub_8102F48
-sub_8102F48: @ 8102F48
- push {lr}
- adds r2, r1, 0
- cmp r2, 0x8
- bhi _08102F60
- ldr r0, _08102F6C @ =gUnknown_203ACF0
- ldr r0, [r0]
- movs r1, 0x1
- lsls r1, r2
- ldr r0, [r0, 0x8]
- ands r0, r1
- cmp r0, 0
- beq _08102F70
-_08102F60:
- movs r0, 0x1
- movs r1, 0
- movs r2, 0x3
- bl ListMenuOverrideSetColors
- b _08102F7A
- .align 2, 0
-_08102F6C: .4byte gUnknown_203ACF0
-_08102F70:
- movs r0, 0xA
- movs r1, 0
- movs r2, 0xB
- bl ListMenuOverrideSetColors
-_08102F7A:
- pop {r0}
- bx r0
- thumb_func_end sub_8102F48
-
- thumb_func_start sub_8102F80
-sub_8102F80: @ 8102F80
- push {r4,r5,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _08102FA0 @ =gUnknown_203ACF0
- ldr r0, [r1]
- ldrb r0, [r0, 0x1]
- adds r4, r1, 0
- cmp r0, 0x7
- bls _08102F96
- b _0810316C
-_08102F96:
- lsls r0, 2
- ldr r1, _08102FA4 @ =_08102FA8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08102FA0: .4byte gUnknown_203ACF0
-_08102FA4: .4byte _08102FA8
- .align 2, 0
-_08102FA8:
- .4byte _08102FC8
- .4byte _08102FF8
- .4byte _08103028
- .4byte _08103038
- .4byte _08103050
- .4byte _0810307C
- .4byte _08103098
- .4byte _0810312C
-_08102FC8:
- movs r0, 0x10
- movs r1, 0
- bl sub_8107D38
- movs r0, 0x20
- movs r1, 0x1
- bl sub_8107D38
- ldr r4, _08102FF4 @ =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 _0810316C
- .align 2, 0
-_08102FF4: .4byte gUnknown_203ACF0
-_08102FF8:
- 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, _08103020 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _08103024 @ =sub_810287C
- b _08103164
- .align 2, 0
-_08103020: .4byte gTasks
-_08103024: .4byte sub_810287C
-_08103028:
- bl sub_810317C
- ldr r0, _08103034 @ =gUnknown_203ACF0
- ldr r1, [r0]
- movs r0, 0x3
- b _0810316A
- .align 2, 0
-_08103034: .4byte gUnknown_203ACF0
-_08103038:
- movs r0, 0x3
- bl CopyBgTilemapBufferToVram
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- ldr r0, _0810304C @ =gUnknown_203ACF0
- ldr r1, [r0]
- movs r0, 0x4
- b _0810316A
- .align 2, 0
-_0810304C: .4byte gUnknown_203ACF0
-_08103050:
- movs r0, 0x1
- bl ShowBg
- ldr r0, _08103070 @ =0xffff7fff
- ldr r1, _08103074 @ =0x0000ffff
- str r1, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r0, _08103078 @ =gUnknown_203ACF0
- ldr r1, [r0]
- movs r0, 0x5
- b _0810316A
- .align 2, 0
-_08103070: .4byte 0xffff7fff
-_08103074: .4byte 0x0000ffff
-_08103078: .4byte gUnknown_203ACF0
-_0810307C:
- 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
- b _0810316A
-_08103098:
- 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, _081030F0 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r3, 0x1
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _081030FC
- ldr r1, [r4]
- ldr r2, [r1, 0x30]
- lsrs r0, r2, 16
- ands r0, r3
- cmp r0, 0
- beq _0810316C
- adds r0, r1, 0
- adds r0, 0x5A
- strh r2, [r0]
- adds r0, 0x6
- ldrb r0, [r0]
- bl RemoveScrollIndicatorArrowPair
- ldr r0, _081030F4 @ =0xffff7fff
- ldr r1, _081030F8 @ =0x0000ffff
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, [r4]
- movs r0, 0x7
- b _0810316A
- .align 2, 0
-_081030F0: .4byte gMain
-_081030F4: .4byte 0xffff7fff
-_081030F8: .4byte 0x0000ffff
-_081030FC:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0810316C
- ldr r0, [r4]
- adds r0, 0x60
- ldrb r0, [r0]
- bl RemoveScrollIndicatorArrowPair
- ldr r0, _08103124 @ =0xffff7fff
- ldr r1, _08103128 @ =0x0000ffff
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, [r4]
- movs r0, 0x1
- b _0810316A
- .align 2, 0
-_08103124: .4byte 0xffff7fff
-_08103128: .4byte 0x0000ffff
-_0810312C:
- 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 r1, _08103174 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _08103178 @ =sub_81042EC
-_08103164:
- str r1, [r0]
- ldr r1, [r4]
- movs r0, 0
-_0810316A:
- strb r0, [r1, 0x1]
-_0810316C:
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08103174: .4byte gTasks
-_08103178: .4byte sub_81042EC
- thumb_func_end sub_8102F80
-
thumb_func_start sub_810317C
sub_810317C: @ 810317C
push {r4,r5,lr}
diff --git a/include/strings.h b/include/strings.h
index aa12fc3ac..ac4720678 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -965,4 +965,12 @@ extern const u8 gText_Var1AndYouWantedVar2[];
extern const u8 gText_HereYouGoThankYou[];
extern const u8 gText_NoMoreRoomForThis[];
+// pokedex_screen
+extern const u8 gUnknown_8415D9C[];
+extern const u8 gUnknown_8415DB8[];
+extern const u8 gUnknown_8415DC4[];
+extern const u8 gUnknown_8415DCA[];
+extern const u8 gUnknown_8415DD1[];
+extern const u8 gUnknown_8415DD7[];
+
#endif //GUARD_STRINGS_H
diff --git a/src/pokedex_screen.c b/src/pokedex_screen.c
index b02095807..09f602ece 100644
--- a/src/pokedex_screen.c
+++ b/src/pokedex_screen.c
@@ -16,6 +16,9 @@
#include "help_system.h"
#include "menu_indicators.h"
#include "overworld.h"
+#include "strings.h"
+#include "menu.h"
+#include "constants/songs.h"
struct PokedexScreenData
{
@@ -38,13 +41,19 @@ struct PokedexScreenData
u8 field_2D;
u8 field_2E;
u8 field_2F;
- u8 filler_30[0x8];
+ u32 field_30;
+ u8 filler_34[0x4];
u16 field_38;
u16 field_3A;
- u8 filler_3C[0x6];
+ u8 filler_3C[0x4];
+ u8 field_40;
+ u8 field_41;
u8 field_42;
void * field_44;
- u8 filler_48[0x18];
+ u16 field_48;
+ u8 filler_4A[0x10];
+ u16 field_5A;
+ u8 filler_5C[0x4];
u8 field_60;
u16 field_62;
u8 filler_64[0x2];
@@ -54,26 +63,49 @@ struct PokedexScreenData
u16 field_6C;
};
+struct PokedexScreenWindowGfx
+{
+ const u16 *map;
+ const u16 *pal;
+};
+
EWRAM_DATA struct PokedexScreenData * gUnknown_203ACF0 = NULL;
void sub_810287C(u8 taskId);
-void sub_8103238(u8 taskId);
-void sub_8103AC8(u8 taskId);
void sub_8102C28(void);
void sub_8102F80(u8 taskId);
+void sub_8103238(u8 taskId);
+void sub_810317C(void);
+u8 sub_81039F0(void);
+u16 sub_8103518(u8 a0);
+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);
u16 sub_8104BBC(u8 a0, u8 a1);
+void sub_8104C2C(const u8 *a0);
+void sub_81042EC(u8 taskId);
u8 sub_81068A0(u8 a0);
+void sub_8106E78(const u8 *a0, s32 a1);
extern const u32 gUnknown_8440274[];
extern const u32 gUnknown_84403AC[];
extern const u16 gUnknown_84404C8[];
extern const u16 gUnknown_84406E0[];
+extern const u16 gUnknown_8440EF0[];
+extern const u16 gUnknown_8443460[];
extern const struct BgTemplate gUnknown_8451EBC[4];
extern const struct WindowTemplate gUnknown_8451ECC[];
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 ListMenuTemplate gUnknown_8452004;
+extern const struct ListMenuTemplate gUnknown_84520BC;
extern const struct ScrollArrowsTemplate gUnknown_84520D4;
extern const struct ScrollArrowsTemplate gUnknown_84520E4;
+extern const struct PokedexScreenWindowGfx gUnknown_84520F4[];
void sub_81024C0(void)
{
@@ -343,3 +375,145 @@ void sub_810287C(u8 taskId)
break;
}
}
+
+void sub_8102C28(void)
+{
+ struct ListMenuTemplate listMenuTemplate;
+ FillBgTilemapBufferRect(3, 0x00E, 0, 0, 30, 20, 0x00);
+ FillBgTilemapBufferRect(2, 0x000, 0, 0, 30, 20, 0x11);
+ FillBgTilemapBufferRect(1, 0x000, 0, 0, 30, 20, 0x11);
+ gUnknown_203ACF0->field_14 = AddWindow(&gUnknown_8451F54);
+ gUnknown_203ACF0->field_15 = AddWindow(&gUnknown_8451F5C);
+ gUnknown_203ACF0->field_16 = AddWindow(&gUnknown_8451F64);
+ if (IsNationalPokedexEnabled())
+ {
+ listMenuTemplate = gUnknown_84520BC;
+ listMenuTemplate.windowId = gUnknown_203ACF0->field_14;
+ gUnknown_203ACF0->field_17 = ListMenuInit(&listMenuTemplate, gUnknown_203ACF0->field_12, gUnknown_203ACF0->field_10);
+ FillWindowPixelBuffer(gUnknown_203ACF0->field_16, PIXEL_FILL(0));
+ sub_81047C8(gUnknown_203ACF0->field_16, 0, gUnknown_8415DC4, 0, 2, 0);
+ sub_81047C8(gUnknown_203ACF0->field_16, 0, gUnknown_8415DD1, 8, 13, 0);
+ sub_810491C(gUnknown_203ACF0->field_16, 0, gUnknown_203ACF0->field_66, 52, 13, 2);
+ sub_81047C8(gUnknown_203ACF0->field_16, 0, gUnknown_8415DD7, 8, 24, 0);
+ sub_810491C(gUnknown_203ACF0->field_16, 0, gUnknown_203ACF0->field_6A, 52, 24, 2);
+ sub_81047C8(gUnknown_203ACF0->field_16, 0, gUnknown_8415DCA, 0, 37, 0);
+ sub_81047C8(gUnknown_203ACF0->field_16, 0, gUnknown_8415DD1, 8, 48, 0);
+ sub_810491C(gUnknown_203ACF0->field_16, 0, gUnknown_203ACF0->field_68, 52, 48, 2);
+ sub_81047C8(gUnknown_203ACF0->field_16, 0, gUnknown_8415DD7, 8, 59, 0);
+ sub_810491C(gUnknown_203ACF0->field_16, 0, gUnknown_203ACF0->field_6C, 52, 59, 2);
+ }
+ else
+ {
+ listMenuTemplate = gUnknown_8452004;
+ listMenuTemplate.windowId = gUnknown_203ACF0->field_14;
+ gUnknown_203ACF0->field_17 = ListMenuInit(&listMenuTemplate, gUnknown_203ACF0->field_12, gUnknown_203ACF0->field_10);
+ FillWindowPixelBuffer(gUnknown_203ACF0->field_16, PIXEL_FILL(0));
+ sub_81047C8(gUnknown_203ACF0->field_16, 1, gUnknown_8415DC4, 0, 9, 0);
+ sub_810491C(gUnknown_203ACF0->field_16, 1, gUnknown_203ACF0->field_66, 32, 21, 2);
+ sub_81047C8(gUnknown_203ACF0->field_16, 1, gUnknown_8415DCA, 0, 37, 0);
+ sub_810491C(gUnknown_203ACF0->field_16, 1, gUnknown_203ACF0->field_68, 32, 49, 2);
+ }
+ FillWindowPixelBuffer(0, PIXEL_FILL(15));
+ sub_8106E78(gUnknown_8415D9C, 1);
+ FillWindowPixelBuffer(1, PIXEL_FILL(15));
+ sub_8104C2C(gUnknown_8415DB8);
+ PutWindowTilemap(0);
+ CopyWindowToVram(0, 2);
+ PutWindowTilemap(1);
+ CopyWindowToVram(1, 2);
+ PutWindowTilemap(gUnknown_203ACF0->field_16);
+ CopyWindowToVram(gUnknown_203ACF0->field_16, 2);
+}
+
+void sub_8102EC0(s32 itemIndex, bool8 onInit, struct ListMenu *list)
+{
+ if (!onInit)
+ PlaySE(SE_SELECT);
+ if (itemIndex == LIST_CANCEL)
+ {
+ CopyToWindowPixelBuffer(gUnknown_203ACF0->field_15, gUnknown_8440EF0, 0x000, 0x000);
+ LoadPalette(gUnknown_8443460, 0x10, 0x20);
+ }
+ else
+ {
+ CopyToWindowPixelBuffer(gUnknown_203ACF0->field_15, gUnknown_84520F4[itemIndex].map, 0x000, 0x000);
+ LoadPalette(gUnknown_84520F4[itemIndex].pal, 0x10, 0x20);
+ }
+ PutWindowTilemap(gUnknown_203ACF0->field_15);
+ CopyWindowToVram(gUnknown_203ACF0->field_15, 2);
+}
+
+void sub_8102F48(u8 windowId, s32 itemId, u8 y)
+{
+ if (itemId < 0 || itemId > 8 || gUnknown_203ACF0->field_08 & (1 << itemId))
+ ListMenuOverrideSetColors(1, 0, 3);
+ else
+ ListMenuOverrideSetColors(10, 0, 11);
+}
+
+void sub_8102F80(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_810317C();
+ 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)
+ {
+ gUnknown_203ACF0->field_5A = 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);
+ gTasks[taskId].func = sub_81042EC;
+ gUnknown_203ACF0->field_01 = 0;
+ break;
+ }
+}