summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/pokedex_screen.s3483
-rw-r--r--baserom.ipsbin78640 -> 69496 bytes
-rw-r--r--data/pokedex_screen.s538
-rw-r--r--include/list_menu.h4
-rw-r--r--include/menu_indicators.h4
-rw-r--r--include/pokedex_screen.h1
-rw-r--r--include/sound.h2
-rw-r--r--include/strings.h11
-rw-r--r--ld_script.txt1
-rw-r--r--src/list_menu.c8
-rw-r--r--src/menu_indicators.c8
-rw-r--r--src/pokedex.c3
-rw-r--r--src/pokedex_screen.c1165
13 files changed, 1671 insertions, 3557 deletions
diff --git a/asm/pokedex_screen.s b/asm/pokedex_screen.s
index 9c57cff88..5d89ba8a2 100644
--- a/asm/pokedex_screen.s
+++ b/asm/pokedex_screen.s
@@ -5,3489 +5,6 @@
.text
- thumb_func_start sub_81024C0
-sub_81024C0: @ 81024C0
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_81024C0
-
- thumb_func_start sub_81024D4
-sub_81024D4: @ 81024D4
- push {lr}
- ldr r0, _08102500 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _081024EC
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- beq _08102504
-_081024EC:
- bl RunTasks
- bl RunTextPrinters
- bl AnimateSprites
- bl BuildOamBuffer
- b _08102508
- .align 2, 0
-_08102500: .4byte gPaletteFade
-_08102504:
- bl UpdatePaletteFade
-_08102508:
- pop {r0}
- bx r0
- thumb_func_end sub_81024D4
-
- thumb_func_start sub_810250C
-sub_810250C: @ 810250C
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0xC
- bl IsNationalPokedexEnabled
- lsls r0, 24
- lsrs r6, r0, 24
- bl m4aSoundVSyncOff
- movs r0, 0
- bl SetVBlankCallback
- bl ResetPaletteFade
- bl ResetSpriteData
- bl ResetTasks
- bl ScanlineEffect_Stop
- movs r0, 0x1
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, _08102598 @ =gUnknown_8451EBC
- movs r0, 0
- movs r2, 0x4
- bl InitBgsFromTemplates
- movs r4, 0x80
- lsls r4, 4
- adds r0, r4, 0
- bl Alloc
- adds r1, r0, 0
- movs r0, 0x3
- bl SetBgTilemapBuffer
- adds r0, r4, 0
- bl Alloc
- adds r1, r0, 0
- movs r0, 0x2
- bl SetBgTilemapBuffer
- adds r0, r4, 0
- bl Alloc
- adds r1, r0, 0
- movs r0, 0x1
- bl SetBgTilemapBuffer
- adds r0, r4, 0
- bl Alloc
- adds r1, r0, 0
- movs r0, 0
- bl SetBgTilemapBuffer
- cmp r6, 0
- beq _081025A0
- ldr r1, _0810259C @ =gUnknown_84403AC
- movs r0, 0
- str r0, [sp]
- movs r0, 0x3
- adds r2, r4, 0
- movs r3, 0
- bl DecompressAndLoadBgGfxUsingHeap
- b _081025AE
- .align 2, 0
-_08102598: .4byte gUnknown_8451EBC
-_0810259C: .4byte gUnknown_84403AC
-_081025A0:
- ldr r1, _081026A4 @ =gUnknown_8440274
- str r6, [sp]
- movs r0, 0x3
- adds r2, r4, 0
- movs r3, 0
- bl DecompressAndLoadBgGfxUsingHeap
-_081025AE:
- ldr r0, _081026A8 @ =gUnknown_8451ECC
- bl InitWindows
- bl DeactivateAllTextPrinters
- bl m4aSoundVSyncOn
- ldr r0, _081026AC @ =sub_81024C0
- bl SetVBlankCallback
- movs r0, 0x1
- bl EnableInterrupts
- ldr r0, _081026B0 @ =sub_810287C
- movs r1, 0
- bl CreateTask
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r5, _081026B4 @ =gUnknown_203ACF0
- movs r0, 0x70
- bl Alloc
- str r0, [r5]
- ldr r1, _081026B8 @ =gUnknown_8451EE4
- movs r2, 0x70
- bl memcpy
- ldr r0, [r5]
- strb r4, [r0]
- movs r0, 0xC1
- lsls r0, 4
- bl Alloc
- ldr r1, [r5]
- str r0, [r1, 0x44]
- movs r0, 0
- movs r1, 0x1
- bl sub_8104BBC
- ldr r1, [r5]
- adds r1, 0x6A
- strh r0, [r1]
- movs r0, 0x1
- movs r1, 0x1
- bl sub_8104BBC
- ldr r1, [r5]
- adds r1, 0x6C
- strh r0, [r1]
- movs r0, 0
- movs r1, 0
- bl sub_8104BBC
- ldr r1, [r5]
- adds r1, 0x66
- strh r0, [r1]
- movs r0, 0x1
- movs r1, 0
- bl sub_8104BBC
- ldr r1, [r5]
- adds r1, 0x68
- strh r0, [r1]
- movs r0, 0x80
- bl sub_8072474
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- ldr r2, _081026BC @ =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- cmp r6, 0
- beq _081026C4
- ldr r0, _081026C0 @ =gUnknown_84406E0
- movs r2, 0x80
- lsls r2, 2
- movs r1, 0
- bl LoadPalette
- b _081026D0
- .align 2, 0
-_081026A4: .4byte gUnknown_8440274
-_081026A8: .4byte gUnknown_8451ECC
-_081026AC: .4byte sub_81024C0
-_081026B0: .4byte sub_810287C
-_081026B4: .4byte gUnknown_203ACF0
-_081026B8: .4byte gUnknown_8451EE4
-_081026BC: .4byte gPaletteFade
-_081026C0: .4byte gUnknown_84406E0
-_081026C4:
- ldr r0, _08102758 @ =gUnknown_84404C8
- movs r2, 0x80
- lsls r2, 2
- movs r1, 0
- bl LoadPalette
-_081026D0:
- movs r4, 0x20
- str r4, [sp]
- str r4, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- movs r0, 0x3
- movs r1, 0x1
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- movs r5, 0x11
- str r5, [sp, 0x8]
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect
- str r4, [sp]
- movs r0, 0x2
- mov r8, r0
- str r0, [sp, 0x4]
- movs r6, 0xF
- str r6, [sp, 0x8]
- movs r0, 0
- movs r1, 0x3
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect
- str r4, [sp]
- movs r0, 0x10
- str r0, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0x2
- bl FillBgTilemapBufferRect
- str r4, [sp]
- mov r0, r8
- str r0, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r0, 0
- movs r1, 0x3
- movs r2, 0
- movs r3, 0x12
- bl FillBgTilemapBufferRect
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08102758: .4byte gUnknown_84404C8
- thumb_func_end sub_810250C
-
- thumb_func_start CB2_OpenPokedexFromStartMenu
-CB2_OpenPokedexFromStartMenu: @ 810275C
- push {lr}
- bl sub_810250C
- movs r1, 0xC0
- lsls r1, 7
- movs r0, 0
- bl ClearGpuRegBits
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- ldr r0, _08102794 @ =sub_81024D4
- bl SetMainCallback2
- movs r0, 0x4
- bl HelpSystem_SetSomeVariable2
- pop {r0}
- bx r0
- .align 2, 0
-_08102794: .4byte sub_81024D4
- thumb_func_end CB2_OpenPokedexFromStartMenu
-
- thumb_func_start sub_8102798
-sub_8102798: @ 8102798
- push {r4,lr}
- sub sp, 0x4
- ldr r0, _081027B4 @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r4, r0, r1
- ldrb r1, [r4]
- cmp r1, 0x1
- beq _081027D8
- cmp r1, 0x1
- bgt _081027B8
- cmp r1, 0
- beq _081027BE
- b _0810284A
- .align 2, 0
-_081027B4: .4byte gMain
-_081027B8:
- cmp r1, 0x2
- beq _081027F2
- b _0810284A
-_081027BE:
- movs r0, 0x1
- negs r0, r0
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldrb r0, [r4]
- adds r0, 0x1
-_081027D2:
- strb r0, [r4]
-_081027D4:
- movs r0, 0
- b _0810284C
-_081027D8:
- ldr r0, _081027E8 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _081027EC
- movs r0, 0x2
- b _081027D2
- .align 2, 0
-_081027E8: .4byte gPaletteFade
-_081027EC:
- bl UpdatePaletteFade
- b _081027D4
-_081027F2:
- ldr r4, _08102854 @ =gUnknown_203ACF0
- ldr r0, [r4]
- ldr r0, [r0, 0x44]
- cmp r0, 0
- beq _08102800
- bl Free
-_08102800:
- ldr r0, [r4]
- cmp r0, 0
- beq _0810280A
- bl Free
-_0810280A:
- bl FreeAllWindowBuffers
- movs r0, 0
- bl GetBgTilemapBuffer
- cmp r0, 0
- beq _0810281C
- bl Free
-_0810281C:
- movs r0, 0x1
- bl GetBgTilemapBuffer
- cmp r0, 0
- beq _0810282A
- bl Free
-_0810282A:
- movs r0, 0x2
- bl GetBgTilemapBuffer
- cmp r0, 0
- beq _08102838
- bl Free
-_08102838:
- movs r0, 0x3
- bl GetBgTilemapBuffer
- cmp r0, 0
- beq _08102846
- bl Free
-_08102846:
- bl sub_807249C
-_0810284A:
- movs r0, 0x1
-_0810284C:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08102854: .4byte gUnknown_203ACF0
- thumb_func_end sub_8102798
-
- thumb_func_start sub_8102858
-sub_8102858: @ 8102858
- push {lr}
- bl sub_8102798
- lsls r0, 24
- cmp r0, 0
- beq _08102874
- movs r1, 0xC0
- lsls r1, 7
- movs r0, 0
- bl SetGpuRegBits
- ldr r0, _08102878 @ =CB2_ReturnToFieldWithOpenMenu
- bl SetMainCallback2
-_08102874:
- pop {r0}
- bx r0
- .align 2, 0
-_08102878: .4byte CB2_ReturnToFieldWithOpenMenu
- thumb_func_end sub_8102858
-
- thumb_func_start sub_810287C
-sub_810287C: @ 810287C
- push {r4,r5,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _0810289C @ =gUnknown_203ACF0
- ldr r0, [r1]
- ldrb r0, [r0, 0x1]
- adds r4, r1, 0
- cmp r0, 0x9
- bls _08102892
- b _08102C18
-_08102892:
- lsls r0, 2
- ldr r1, _081028A0 @ =_081028A4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0810289C: .4byte gUnknown_203ACF0
-_081028A0: .4byte _081028A4
- .align 2, 0
-_081028A4:
- .4byte _081028CC
- .4byte _081028FC
- .4byte _08102930
- .4byte _08102940
- .4byte _08102964
- .4byte _081029D0
- .4byte _08102A14
- .4byte _08102B24
- .4byte _08102B94
- .4byte _08102BD8
-_081028CC:
- ldr r1, [r4]
- movs r0, 0
- str r0, [r1, 0x8]
- movs r4, 0
-_081028D4:
- lsls r0, r4, 24
- lsrs r0, 24
- bl sub_81068A0
- ldr r1, _081028F8 @ =gUnknown_203ACF0
- ldr r2, [r1]
- lsls r0, 24
- lsrs r0, 24
- lsls r0, r4
- ldr r1, [r2, 0x8]
- orrs r1, r0
- str r1, [r2, 0x8]
- adds r4, 0x1
- cmp r4, 0x8
- ble _081028D4
- movs r0, 0x2
- strb r0, [r2, 0x1]
- b _08102C18
- .align 2, 0
-_081028F8: .4byte gUnknown_203ACF0
-_081028FC:
- ldr r0, [r4]
- adds r0, 0x60
- ldrb r0, [r0]
- bl RemoveScrollIndicatorArrowPair
- ldr r0, [r4]
- adds r0, 0x14
- bl sub_81047B0
- ldr r0, [r4]
- adds r0, 0x15
- bl sub_81047B0
- ldr r0, [r4]
- adds r0, 0x16
- bl sub_81047B0
- ldr r0, _0810292C @ =sub_8102858
- bl SetMainCallback2
- adds r0, r5, 0
- bl DestroyTask
- b _08102C18
- .align 2, 0
-_0810292C: .4byte sub_8102858
-_08102930:
- bl sub_8102C28
- ldr r0, _0810293C @ =gUnknown_203ACF0
- ldr r1, [r0]
- movs r0, 0x3
- b _08102C16
- .align 2, 0
-_0810293C: .4byte gUnknown_203ACF0
-_08102940:
- movs r0, 0x3
- bl CopyBgTilemapBufferToVram
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldr r0, _08102960 @ =gUnknown_203ACF0
- ldr r1, [r0]
- movs r0, 0x4
- b _08102C16
- .align 2, 0
-_08102960: .4byte gUnknown_203ACF0
-_08102964:
- movs r0, 0x3
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0
- bl ShowBg
- ldr r2, _081029A4 @ =gPaletteFade
- ldrb r1, [r2, 0x8]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _081029AC
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2, 0x8]
- movs r0, 0x1
- negs r0, r0
- ldr r1, _081029A8 @ =0x0000ffff
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl BeginNormalPaletteFade
- b _081029BC
- .align 2, 0
-_081029A4: .4byte gPaletteFade
-_081029A8: .4byte 0x0000ffff
-_081029AC:
- ldr r0, _081029C4 @ =0xffff7fff
- ldr r1, _081029C8 @ =0x0000ffff
- str r1, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
-_081029BC:
- ldr r0, _081029CC @ =gUnknown_203ACF0
- ldr r1, [r0]
- movs r0, 0x5
- b _08102C16
- .align 2, 0
-_081029C4: .4byte 0xffff7fff
-_081029C8: .4byte 0x0000ffff
-_081029CC: .4byte gUnknown_203ACF0
-_081029D0:
- ldr r4, _081029EC @ =gUnknown_203ACF0
- ldr r1, [r4]
- ldrb r0, [r1, 0x17]
- adds r1, 0x62
- movs r2, 0
- bl ListMenuGetScrollAndRow
- bl IsNationalPokedexEnabled
- cmp r0, 0
- beq _081029F4
- ldr r0, _081029F0 @ =gUnknown_84520E4
- b _081029F6
- .align 2, 0
-_081029EC: .4byte gUnknown_203ACF0
-_081029F0: .4byte gUnknown_84520E4
-_081029F4:
- ldr r0, _08102A0C @ =gUnknown_84520D4
-_081029F6:
- ldr r1, [r4]
- adds r1, 0x62
- bl AddScrollIndicatorArrowPair
- ldr r1, [r4]
- adds r1, 0x60
- strb r0, [r1]
- ldr r0, _08102A10 @ =gUnknown_203ACF0
- ldr r1, [r0]
- movs r0, 0x6
- b _08102C16
- .align 2, 0
-_08102A0C: .4byte gUnknown_84520D4
-_08102A10: .4byte gUnknown_203ACF0
-_08102A14:
- ldr r0, [r4]
- ldrb r0, [r0, 0x17]
- bl ListMenu_ProcessInput
- ldr r1, [r4]
- str r0, [r1, 0xC]
- ldrb r0, [r1, 0x17]
- adds r1, 0x62
- movs r2, 0
- bl ListMenuGetScrollAndRow
- ldr r0, _08102A4C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r3, 0x1
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08102B14
- ldr r2, [r4]
- ldr r1, [r2, 0xC]
- cmp r1, 0xD
- bhi _08102A50
- cmp r1, 0xA
- bcs _08102ADC
- cmp r1, 0x8
- bls _08102A62
- b _08102AA4
- .align 2, 0
-_08102A4C: .4byte gMain
-_08102A50:
- cmp r1, 0xE
- beq _08102AA4
- movs r0, 0x2
- negs r0, r0
- cmp r1, r0
- beq _08102A5E
- b _08102C18
-_08102A5E:
- strb r3, [r2, 0x1]
- b _08102C18
-_08102A62:
- lsls r0, r1, 24
- lsrs r0, 24
- bl sub_81068A0
- lsls r0, 24
- cmp r0, 0
- bne _08102A72
- b _08102C18
-_08102A72:
- ldr r0, [r4]
- adds r0, 0x60
- ldrb r0, [r0]
- bl RemoveScrollIndicatorArrowPair
- ldr r0, [r4]
- ldr r1, [r0, 0xC]
- adds r0, 0x28
- strb r1, [r0]
- ldr r0, _08102A9C @ =0xffff7fff
- ldr r1, _08102AA0 @ =0x0000ffff
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, [r4]
- movs r0, 0x7
- b _08102C16
- .align 2, 0
-_08102A9C: .4byte 0xffff7fff
-_08102AA0: .4byte 0x0000ffff
-_08102AA4:
- ldr r4, _08102AD0 @ =gUnknown_203ACF0
- ldr r0, [r4]
- adds r0, 0x60
- ldrb r0, [r0]
- bl RemoveScrollIndicatorArrowPair
- ldr r1, [r4]
- ldr r0, [r1, 0xC]
- subs r0, 0x9
- adds r1, 0x42
- strb r0, [r1]
- ldr r0, _08102AD4 @ =0xffff7fff
- ldr r1, _08102AD8 @ =0x0000ffff
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, [r4]
- movs r0, 0x9
- b _08102C16
- .align 2, 0
-_08102AD0: .4byte gUnknown_203ACF0
-_08102AD4: .4byte 0xffff7fff
-_08102AD8: .4byte 0x0000ffff
-_08102ADC:
- adds r0, r2, 0
- adds r0, 0x60
- ldrb r0, [r0]
- bl RemoveScrollIndicatorArrowPair
- ldr r0, [r4]
- ldr r1, [r0, 0xC]
- subs r1, 0x9
- adds r0, 0x42
- movs r2, 0
- strb r1, [r0]
- ldr r0, [r4]
- strh r2, [r0, 0x3A]
- strh r2, [r0, 0x38]
- ldr r0, _08102B0C @ =0xffff7fff
- ldr r1, _08102B10 @ =0x0000ffff
- str r1, [sp]
- movs r1, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, [r4]
- movs r0, 0x8
- b _08102C16
- .align 2, 0
-_08102B0C: .4byte 0xffff7fff
-_08102B10: .4byte 0x0000ffff
-_08102B14:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08102B1E
- b _08102C18
-_08102B1E:
- ldr r0, [r4]
- strb r3, [r0, 0x1]
- b _08102C18
-_08102B24:
- ldr r2, [r4]
- ldrb r0, [r2, 0x17]
- adds r1, r2, 0
- adds r1, 0x12
- adds r2, 0x10
- bl DestroyListMenuTask
- 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, 0x14
- bl sub_81047B0
- ldr r0, [r4]
- adds r0, 0x15
- bl sub_81047B0
- ldr r0, [r4]
- adds r0, 0x16
- bl sub_81047B0
- ldr r0, [r4]
- adds r0, 0x2B
- movs r2, 0
- strb r2, [r0]
- ldr r0, [r4]
- adds r0, 0x2D
- strb r2, [r0]
- ldr r0, [r4]
- adds r0, 0x2F
- strb r2, [r0]
- ldr r1, _08102B8C @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _08102B90 @ =sub_8103AC8
- str r1, [r0]
- ldr r0, [r4]
- strb r2, [r0, 0x1]
- b _08102C18
- .align 2, 0
-_08102B8C: .4byte gTasks
-_08102B90: .4byte sub_8103AC8
-_08102B94:
- ldr r2, [r4]
- ldrb r0, [r2, 0x17]
- adds r1, r2, 0
- adds r1, 0x12
- adds r2, 0x10
- bl DestroyListMenuTask
- movs r0, 0x1
- bl HideBg
- ldr r0, [r4]
- adds r0, 0x14
- bl sub_81047B0
- ldr r0, [r4]
- adds r0, 0x15
- bl sub_81047B0
- ldr r0, [r4]
- adds r0, 0x16
- bl sub_81047B0
- ldr r1, _08102BD0 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _08102BD4 @ =sub_8103238
- b _08102C10
- .align 2, 0
-_08102BD0: .4byte gTasks
-_08102BD4: .4byte sub_8103238
-_08102BD8:
- ldr r2, [r4]
- ldrb r0, [r2, 0x17]
- adds r1, r2, 0
- adds r1, 0x12
- adds r2, 0x10
- bl DestroyListMenuTask
- movs r0, 0x1
- bl HideBg
- ldr r0, [r4]
- adds r0, 0x14
- bl sub_81047B0
- ldr r0, [r4]
- adds r0, 0x15
- bl sub_81047B0
- ldr r0, [r4]
- adds r0, 0x16
- bl sub_81047B0
- ldr r1, _08102C20 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _08102C24 @ =sub_8102F80
-_08102C10:
- str r1, [r0]
- ldr r1, [r4]
- movs r0, 0
-_08102C16:
- strb r0, [r1, 0x1]
-_08102C18:
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08102C20: .4byte gTasks
-_08102C24: .4byte sub_8102F80
- thumb_func_end sub_810287C
-
- 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}
- 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}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- bl IsNationalPokedexEnabled
- movs r1, 0x97
- str r1, [sp]
- cmp r0, 0
- beq _0810353A
- movs r2, 0xC1
- lsls r2, 1
- str r2, [sp]
-_0810353A:
- movs r0, 0
- mov r10, r0
- cmp r4, 0x5
- bhi _08103568
- lsls r0, r4, 2
- ldr r1, _0810354C @ =_08103550
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0810354C: .4byte _08103550
- .align 2, 0
-_08103550:
- .4byte _08103568
- .4byte _08103604
- .4byte _0810369C
- .4byte _0810373C
- .4byte _081037D8
- .4byte _08103874
-_08103568:
- movs r1, 0
- mov r8, r1
-_0810356C:
- mov r4, r8
- adds r4, 0x1
- lsls r0, r4, 16
- lsrs r5, r0, 16
- adds r0, r5, 0
- movs r1, 0
- movs r2, 0
- bl sub_8104AB0
- lsls r0, 24
- lsrs r7, r0, 24
- adds r0, r5, 0
- movs r1, 0x1
- movs r2, 0
- bl sub_8104AB0
- lsls r0, 24
- lsrs r6, r0, 24
- mov r9, r4
- cmp r7, 0
- beq _081035C4
- adds r0, r5, 0
- bl NationalPokedexNumToSpecies
- ldr r2, _081035BC @ =gUnknown_203ACF0
- ldr r1, [r2]
- ldr r2, [r1, 0x44]
- mov r1, r8
- lsls r3, r1, 3
- adds r2, r3, r2
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xB
- muls r0, r1
- ldr r1, _081035C0 @ =gSpeciesNames
- adds r0, r1
- str r0, [r2]
- mov r10, r5
- adds r4, r3, 0
- b _081035D6
- .align 2, 0
-_081035BC: .4byte gUnknown_203ACF0
-_081035C0: .4byte gSpeciesNames
-_081035C4:
- ldr r2, _081035FC @ =gUnknown_203ACF0
- ldr r0, [r2]
- ldr r1, [r0, 0x44]
- mov r0, r8
- lsls r2, r0, 3
- adds r1, r2, r1
- ldr r0, _08103600 @ =gUnknown_8415F66
- str r0, [r1]
- adds r4, r2, 0
-_081035D6:
- adds r0, r5, 0
- bl NationalPokedexNumToSpecies
- ldr r2, _081035FC @ =gUnknown_203ACF0
- ldr r1, [r2]
- ldr r3, [r1, 0x44]
- adds r3, r4, r3
- lsls r2, r6, 17
- lsls r1, r7, 16
- adds r2, r1
- lsls r0, 16
- lsrs r0, 16
- adds r2, r0
- str r2, [r3, 0x4]
- mov r8, r9
- mov r0, r8
- cmp r0, 0x96
- ble _0810356C
- b _08103906
- .align 2, 0
-_081035FC: .4byte gUnknown_203ACF0
-_08103600: .4byte gUnknown_8415F66
-_08103604:
- movs r1, 0
- mov r8, r1
- ldr r2, _08103690 @ =gUnknown_203ACF0
- mov r9, r2
-_0810360C:
- ldr r1, _08103694 @ =gUnknown_8443FC0
- mov r2, r8
- lsls r0, r2, 1
- adds r0, r1
- ldrh r5, [r0]
- ldr r0, [sp]
- cmp r5, r0
- bgt _08103682
- adds r0, r5, 0
- movs r1, 0
- movs r2, 0
- bl sub_8104AB0
- lsls r0, 24
- lsrs r7, r0, 24
- adds r0, r5, 0
- movs r1, 0x1
- movs r2, 0
- bl sub_8104AB0
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r7, 0
- beq _08103682
- adds r0, r5, 0
- bl NationalPokedexNumToSpecies
- mov r2, r9
- ldr r1, [r2]
- ldr r2, [r1, 0x44]
- mov r1, r10
- lsls r4, r1, 3
- adds r2, r4, r2
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xB
- muls r0, r1
- ldr r1, _08103698 @ =gSpeciesNames
- adds r0, r1
- str r0, [r2]
- adds r0, r5, 0
- bl NationalPokedexNumToSpecies
- mov r2, r9
- ldr r1, [r2]
- ldr r1, [r1, 0x44]
- adds r4, r1
- lsls r2, r6, 17
- lsls r1, r7, 16
- adds r2, r1
- lsls r0, 16
- lsrs r0, 16
- adds r2, r0
- str r2, [r4, 0x4]
- mov r0, r10
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- mov r10, r0
-_08103682:
- movs r0, 0x1
- add r8, r0
- movs r0, 0xCD
- lsls r0, 1
- cmp r8, r0
- ble _0810360C
- b _08103906
- .align 2, 0
-_08103690: .4byte gUnknown_203ACF0
-_08103694: .4byte gUnknown_8443FC0
-_08103698: .4byte gSpeciesNames
-_0810369C:
- movs r1, 0
- mov r8, r1
- ldr r2, _08103730 @ =gUnknown_203ACF0
- mov r9, r2
-_081036A4:
- ldr r1, _08103734 @ =gUnknown_84448FE
- mov r2, r8
- lsls r0, r2, 1
- adds r0, r1
- ldrh r0, [r0]
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r0, [sp]
- cmp r5, r0
- bgt _08103722
- adds r0, r5, 0
- movs r1, 0
- movs r2, 0
- bl sub_8104AB0
- lsls r0, 24
- lsrs r7, r0, 24
- adds r0, r5, 0
- movs r1, 0x1
- movs r2, 0
- bl sub_8104AB0
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0
- beq _08103722
- adds r0, r5, 0
- bl NationalPokedexNumToSpecies
- mov r2, r9
- ldr r1, [r2]
- ldr r2, [r1, 0x44]
- mov r1, r10
- lsls r4, r1, 3
- adds r2, r4, r2
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xB
- muls r0, r1
- ldr r1, _08103738 @ =gSpeciesNames
- adds r0, r1
- str r0, [r2]
- adds r0, r5, 0
- bl NationalPokedexNumToSpecies
- mov r2, r9
- ldr r1, [r2]
- ldr r1, [r1, 0x44]
- adds r4, r1
- lsls r2, r6, 17
- lsls r1, r7, 16
- adds r2, r1
- lsls r0, 16
- lsrs r0, 16
- adds r2, r0
- str r2, [r4, 0x4]
- mov r0, r10
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- mov r10, r0
-_08103722:
- movs r0, 0x1
- add r8, r0
- movs r0, 0xCD
- lsls r0, 1
- cmp r8, r0
- ble _081036A4
- b _08103906
- .align 2, 0
-_08103730: .4byte gUnknown_203ACF0
-_08103734: .4byte gUnknown_84448FE
-_08103738: .4byte gSpeciesNames
-_0810373C:
- movs r1, 0
- mov r8, r1
- ldr r2, _081037C8 @ =gUnknown_203ACF0
- mov r9, r2
-_08103744:
- ldr r1, _081037CC @ =gUnknown_84442F6
- mov r2, r8
- lsls r0, r2, 1
- adds r0, r1
- ldrh r5, [r0]
- ldr r0, [sp]
- cmp r5, r0
- bgt _081037BA
- adds r0, r5, 0
- movs r1, 0
- movs r2, 0
- bl sub_8104AB0
- lsls r0, 24
- lsrs r7, r0, 24
- adds r0, r5, 0
- movs r1, 0x1
- movs r2, 0
- bl sub_8104AB0
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0
- beq _081037BA
- adds r0, r5, 0
- bl NationalPokedexNumToSpecies
- mov r2, r9
- ldr r1, [r2]
- ldr r2, [r1, 0x44]
- mov r1, r10
- lsls r4, r1, 3
- adds r2, r4, r2
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xB
- muls r0, r1
- ldr r1, _081037D0 @ =gSpeciesNames
- adds r0, r1
- str r0, [r2]
- adds r0, r5, 0
- bl NationalPokedexNumToSpecies
- mov r2, r9
- ldr r1, [r2]
- ldr r1, [r1, 0x44]
- adds r4, r1
- lsls r2, r6, 17
- lsls r1, r7, 16
- adds r2, r1
- lsls r0, 16
- lsrs r0, 16
- adds r2, r0
- str r2, [r4, 0x4]
- mov r0, r10
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- mov r10, r0
-_081037BA:
- movs r0, 0x1
- add r8, r0
- ldr r0, _081037D4 @ =0x00000181
- cmp r8, r0
- ble _08103744
- b _08103906
- .align 2, 0
-_081037C8: .4byte gUnknown_203ACF0
-_081037CC: .4byte gUnknown_84442F6
-_081037D0: .4byte gSpeciesNames
-_081037D4: .4byte 0x00000181
-_081037D8:
- movs r1, 0
- mov r8, r1
- ldr r2, _08103864 @ =gUnknown_203ACF0
- mov r9, r2
-_081037E0:
- ldr r1, _08103868 @ =gUnknown_84445FA
- mov r2, r8
- lsls r0, r2, 1
- adds r0, r1
- ldrh r5, [r0]
- ldr r0, [sp]
- cmp r5, r0
- bgt _08103856
- adds r0, r5, 0
- movs r1, 0
- movs r2, 0
- bl sub_8104AB0
- lsls r0, 24
- lsrs r7, r0, 24
- adds r0, r5, 0
- movs r1, 0x1
- movs r2, 0
- bl sub_8104AB0
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0
- beq _08103856
- adds r0, r5, 0
- bl NationalPokedexNumToSpecies
- mov r2, r9
- ldr r1, [r2]
- ldr r2, [r1, 0x44]
- mov r1, r10
- lsls r4, r1, 3
- adds r2, r4, r2
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xB
- muls r0, r1
- ldr r1, _0810386C @ =gSpeciesNames
- adds r0, r1
- str r0, [r2]
- adds r0, r5, 0
- bl NationalPokedexNumToSpecies
- mov r2, r9
- ldr r1, [r2]
- ldr r1, [r1, 0x44]
- adds r4, r1
- lsls r2, r6, 17
- lsls r1, r7, 16
- adds r2, r1
- lsls r0, 16
- lsrs r0, 16
- adds r2, r0
- str r2, [r4, 0x4]
- mov r0, r10
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- mov r10, r0
-_08103856:
- movs r0, 0x1
- add r8, r0
- ldr r0, _08103870 @ =0x00000181
- cmp r8, r0
- ble _081037E0
- b _08103906
- .align 2, 0
-_08103864: .4byte gUnknown_203ACF0
-_08103868: .4byte gUnknown_84445FA
-_0810386C: .4byte gSpeciesNames
-_08103870: .4byte 0x00000181
-_08103874:
- movs r1, 0
- mov r8, r1
-_08103878:
- mov r4, r8
- adds r4, 0x1
- lsls r0, r4, 16
- lsrs r5, r0, 16
- adds r0, r5, 0
- movs r1, 0
- movs r2, 0
- bl sub_8104AB0
- lsls r0, 24
- lsrs r7, r0, 24
- adds r0, r5, 0
- movs r1, 0x1
- movs r2, 0
- bl sub_8104AB0
- lsls r0, 24
- lsrs r6, r0, 24
- mov r9, r4
- cmp r7, 0
- beq _081038D0
- adds r0, r5, 0
- bl NationalPokedexNumToSpecies
- ldr r2, _081038C8 @ =gUnknown_203ACF0
- ldr r1, [r2]
- ldr r2, [r1, 0x44]
- mov r1, r8
- lsls r3, r1, 3
- adds r2, r3, r2
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xB
- muls r0, r1
- ldr r1, _081038CC @ =gSpeciesNames
- adds r0, r1
- str r0, [r2]
- mov r10, r5
- adds r4, r3, 0
- b _081038E2
- .align 2, 0
-_081038C8: .4byte gUnknown_203ACF0
-_081038CC: .4byte gSpeciesNames
-_081038D0:
- ldr r2, _08103918 @ =gUnknown_203ACF0
- ldr r0, [r2]
- ldr r1, [r0, 0x44]
- mov r0, r8
- lsls r2, r0, 3
- adds r1, r2, r1
- ldr r0, _0810391C @ =gUnknown_8415F66
- str r0, [r1]
- adds r4, r2, 0
-_081038E2:
- adds r0, r5, 0
- bl NationalPokedexNumToSpecies
- ldr r2, _08103918 @ =gUnknown_203ACF0
- ldr r1, [r2]
- ldr r3, [r1, 0x44]
- adds r3, r4, r3
- lsls r2, r6, 17
- lsls r1, r7, 16
- adds r2, r1
- lsls r0, 16
- lsrs r0, 16
- adds r2, r0
- str r2, [r3, 0x4]
- mov r8, r9
- ldr r0, _08103920 @ =0x00000181
- cmp r8, r0
- ble _08103878
-_08103906:
- mov r0, r10
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08103918: .4byte gUnknown_203ACF0
-_0810391C: .4byte gUnknown_8415F66
-_08103920: .4byte 0x00000181
- thumb_func_end sub_8103518
-
- thumb_func_start sub_8103924
-sub_8103924: @ 8103924
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0x4
- bgt _08103936
- cmp r1, 0x1
- bge _08103950
- b _0810393A
-_08103936:
- cmp r1, 0x5
- beq _08103964
-_0810393A:
- ldr r1, _08103948 @ =gUnknown_845218C
- ldr r4, _0810394C @ =gUnknown_203ACF0
- ldr r0, [r4]
- ldrh r2, [r0, 0x36]
- ldrh r3, [r0, 0x34]
- b _0810396E
- .align 2, 0
-_08103948: .4byte gUnknown_845218C
-_0810394C: .4byte gUnknown_203ACF0
-_08103950:
- ldr r1, _0810395C @ =gUnknown_845218C
- ldr r4, _08103960 @ =gUnknown_203ACF0
- ldr r0, [r4]
- ldrh r2, [r0, 0x3A]
- ldrh r3, [r0, 0x38]
- b _0810396E
- .align 2, 0
-_0810395C: .4byte gUnknown_845218C
-_08103960: .4byte gUnknown_203ACF0
-_08103964:
- ldr r1, _08103980 @ =gUnknown_845218C
- ldr r4, _08103984 @ =gUnknown_203ACF0
- ldr r0, [r4]
- ldrh r2, [r0, 0x3E]
- ldrh r3, [r0, 0x3C]
-_0810396E:
- adds r0, r5, 0
- bl ListMenuInitInRect
- ldr r1, [r4]
- adds r1, 0x41
- strb r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08103980: .4byte gUnknown_845218C
-_08103984: .4byte gUnknown_203ACF0
- thumb_func_end sub_8103924
-
- thumb_func_start sub_8103988
-sub_8103988: @ 8103988
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bgt _08103998
- cmp r0, 0x1
- bge _081039B8
- b _0810399C
-_08103998:
- cmp r0, 0x5
- beq _081039D4
-_0810399C:
- ldr r0, _081039B4 @ =gUnknown_203ACF0
- ldr r2, [r0]
- adds r0, r2, 0
- adds r0, 0x41
- ldrb r0, [r0]
- adds r1, r2, 0
- adds r1, 0x36
- adds r2, 0x34
- bl DestroyListMenuTask
- b _081039E8
- .align 2, 0
-_081039B4: .4byte gUnknown_203ACF0
-_081039B8:
- ldr r0, _081039D0 @ =gUnknown_203ACF0
- ldr r2, [r0]
- adds r0, r2, 0
- adds r0, 0x41
- ldrb r0, [r0]
- adds r1, r2, 0
- adds r1, 0x3A
- adds r2, 0x38
- bl DestroyListMenuTask
- b _081039E8
- .align 2, 0
-_081039D0: .4byte gUnknown_203ACF0
-_081039D4:
- ldr r0, _081039EC @ =gUnknown_203ACF0
- ldr r2, [r0]
- adds r0, r2, 0
- adds r0, 0x41
- ldrb r0, [r0]
- adds r1, r2, 0
- adds r1, 0x3E
- adds r2, 0x3C
- bl DestroyListMenuTask
-_081039E8:
- pop {r0}
- bx r0
- .align 2, 0
-_081039EC: .4byte gUnknown_203ACF0
- thumb_func_end sub_8103988
-
- thumb_func_start sub_81039F0
-sub_81039F0: @ 81039F0
- push {r4,lr}
- sub sp, 0x10
- mov r1, sp
- ldr r0, _08103A18 @ =gUnknown_84521B4
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldr r0, [r0]
- str r0, [r1]
- ldr r2, _08103A1C @ =gUnknown_203ACF0
- ldr r0, [r2]
- adds r0, 0x48
- ldr r1, _08103A20 @ =gUnknown_8452174
- ldrh r3, [r0]
- ldrh r0, [r1, 0xE]
- cmp r3, r0
- bls _08103A24
- mov r1, sp
- subs r0, r3, r0
- b _08103A28
- .align 2, 0
-_08103A18: .4byte gUnknown_84521B4
-_08103A1C: .4byte gUnknown_203ACF0
-_08103A20: .4byte gUnknown_8452174
-_08103A24:
- mov r1, sp
- movs r0, 0
-_08103A28:
- strh r0, [r1, 0x8]
- ldr r1, [r2]
- adds r1, 0x62
- mov r0, sp
- bl AddScrollIndicatorArrowPair
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x10
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81039F0
-
- thumb_func_start sub_8103A40
-sub_8103A40: @ 8103A40
- push {r4-r7,lr}
- sub sp, 0x4
- adds r4, r1, 0
- lsls r2, 24
- lsrs r6, r2, 24
- lsls r0, r4, 16
- lsrs r5, r0, 16
- movs r0, 0x1
- lsrs r4, 17
- ands r4, r0
- ldr r7, _08103AC0 @ =gUnknown_203ACF0
- ldr r0, [r7]
- adds r0, 0x40
- ldrb r0, [r0]
- str r6, [sp]
- movs r1, 0
- adds r2, r5, 0
- movs r3, 0xC
- bl sub_8104A34
- cmp r4, 0
- beq _08103AB6
- ldr r0, [r7]
- adds r0, 0x40
- ldrb r0, [r0]
- movs r1, 0
- movs r2, 0x28
- adds r3, r6, 0
- bl BlitMoveInfoIcon
- ldr r0, _08103AC4 @ =gBaseStats
- lsls r4, r5, 3
- subs r4, r5
- lsls r4, 2
- adds r4, r0
- ldrb r5, [r4, 0x6]
- ldr r0, [r7]
- adds r0, 0x40
- ldrb r0, [r0]
- adds r1, r5, 0x1
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0x78
- adds r3, r6, 0
- bl BlitMoveInfoIcon
- ldrb r1, [r4, 0x7]
- cmp r5, r1
- beq _08103AB6
- ldr r0, [r7]
- adds r0, 0x40
- ldrb r0, [r0]
- adds r1, 0x1
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0x98
- adds r3, r6, 0
- bl BlitMoveInfoIcon
-_08103AB6:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08103AC0: .4byte gUnknown_203ACF0
-_08103AC4: .4byte gBaseStats
- thumb_func_end sub_8103A40
-
- thumb_func_start sub_8103AC8
-sub_8103AC8: @ 8103AC8
- push {r4,r5,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08103AE8 @ =gUnknown_203ACF0
- ldr r0, [r1]
- ldrb r0, [r0, 0x1]
- adds r5, r1, 0
- cmp r0, 0x1A
- bls _08103ADE
- b _08104228
-_08103ADE:
- lsls r0, 2
- ldr r1, _08103AEC @ =_08103AF0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08103AE8: .4byte gUnknown_203ACF0
-_08103AEC: .4byte _08103AF0
- .align 2, 0
-_08103AF0:
- .4byte _08103B5C
- .4byte _08103B98
- .4byte _08103BF8
- .4byte _08103C24
- .4byte _08103C5C
- .4byte _08103C84
- .4byte _08103E6C
- .4byte _08103E6C
- .4byte _08103EA0
- .4byte _08103ED4
- .4byte _08103EA0
- .4byte _08103EFC
- .4byte _08103F20
- .4byte _08103F42
- .4byte _08103F54
- .4byte _08103F68
- .4byte _08103F7A
- .4byte _08103FF0
- .4byte _0810403A
- .4byte _0810406C
- .4byte _08104080
- .4byte _081040E4
- .4byte _081040F4
- .4byte _08104118
- .4byte _081041DE
- .4byte _081041F0
- .4byte _0810421C
-_08103B5C:
- movs r0, 0x3
- bl HideBg
- movs r0, 0x2
- bl HideBg
- movs r0, 0x1
- bl HideBg
- ldr r4, _08103B94 @ =gUnknown_203ACF0
- ldr r0, [r4]
- adds r0, 0x28
- ldrb r0, [r0]
- bl sub_810699C
- ldr r0, [r4]
- adds r2, r0, 0
- adds r2, 0x2B
- adds r0, 0x29
- ldrb r1, [r0]
- ldrb r0, [r2]
- cmp r0, r1
- bcs _08103B8C
- strb r1, [r2]
-_08103B8C:
- ldr r1, [r4]
- movs r0, 0x2
- b _08104226
- .align 2, 0
-_08103B94: .4byte gUnknown_203ACF0
-_08103B98:
- bl sub_8104E90
- movs r0, 0x2
- bl HideBg
- movs r0, 0x1
- bl HideBg
- ldr r0, _08103BC8 @ =gUnknown_203ACF0
- ldr r0, [r0]
- adds r0, 0x2F
- ldrb r0, [r0]
- cmp r0, 0
- beq _08103BB8
- cmp r0, 0x1
- beq _08103BD4
-_08103BB8:
- ldr r0, _08103BCC @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _08103BD0 @ =sub_810287C
- b _08103BE0
- .align 2, 0
-_08103BC8: .4byte gUnknown_203ACF0
-_08103BCC: .4byte gTasks
-_08103BD0: .4byte sub_810287C
-_08103BD4:
- ldr r0, _08103BEC @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _08103BF0 @ =sub_8103238
-_08103BE0:
- str r0, [r1]
- ldr r0, _08103BF4 @ =gUnknown_203ACF0
- ldr r1, [r0]
- movs r0, 0
- b _08104226
- .align 2, 0
-_08103BEC: .4byte gTasks
-_08103BF0: .4byte sub_8103238
-_08103BF4: .4byte gUnknown_203ACF0
-_08103BF8:
- movs r0, 0
- bl sub_8104F0C
- movs r0, 0x3
- bl CopyBgTilemapBufferToVram
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- movs r0, 0xFF
- bl sub_8105058
- ldr r0, _08103C20 @ =gUnknown_203ACF0
- ldr r1, [r0]
- movs r0, 0x3
- b _08104226
- .align 2, 0
-_08103C20: .4byte gUnknown_203ACF0
-_08103C24:
- ldr r0, _08103C50 @ =0xffff7fff
- ldr r1, _08103C54 @ =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, _08103C58 @ =gUnknown_203ACF0
- ldr r1, [r0]
- movs r0, 0x4
- b _08104226
- .align 2, 0
-_08103C50: .4byte 0xffff7fff
-_08103C54: .4byte 0x0000ffff
-_08103C58: .4byte gUnknown_203ACF0
-_08103C5C:
- bl sub_8104234
- ldr r4, _08103C7C @ =gUnknown_203ACF0
- ldr r1, [r4]
- adds r1, 0x60
- strb r0, [r1]
- ldr r0, _08103C80 @ =gUnknown_84524C4
- movs r1, 0
- bl ListMenuAddCursorObjectInternal
- ldr r1, [r4]
- adds r1, 0x61
- strb r0, [r1]
- ldr r1, [r4]
- movs r0, 0x5
- b _08104226
- .align 2, 0
-_08103C7C: .4byte gUnknown_203ACF0
-_08103C80: .4byte gUnknown_84524C4
-_08103C84:
- ldr r0, [r5]
- adds r0, 0x2D
- ldrb r0, [r0]
- bl sub_8105058
- ldr r2, [r5]
- adds r0, r2, 0
- adds r0, 0x61
- ldrb r0, [r0]
- adds r1, r2, 0
- adds r1, 0x2D
- ldrb r1, [r1]
- adds r2, 0x2C
- ldrb r2, [r2]
- bl sub_8105178
- ldr r2, [r5]
- adds r0, r2, 0
- adds r0, 0x2B
- ldrb r0, [r0]
- adds r1, r2, 0
- adds r1, 0x62
- strh r0, [r1]
- movs r4, 0
- ldr r0, _08103CF8 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08103CFC
- adds r0, r2, 0
- adds r0, 0x2D
- ldrb r1, [r0]
- lsls r1, 1
- subs r0, 0x15
- adds r0, r1
- ldrh r0, [r0]
- movs r1, 0
- movs r2, 0x1
- bl sub_8104AB0
- lsls r0, 24
- cmp r0, 0
- beq _08103CFC
- ldr r0, [r5]
- adds r0, 0x60
- ldrb r0, [r0]
- bl RemoveScrollIndicatorArrowPair
- ldr r0, [r5]
- adds r0, 0x61
- ldrb r0, [r0]
- movs r1, 0
- bl ListMenuRemoveCursorObject
- ldr r1, [r5]
- movs r0, 0xC
- b _08104226
- .align 2, 0
-_08103CF8: .4byte gMain
-_08103CFC:
- ldr r2, _08103D28 @ =gMain
- ldrh r1, [r2, 0x2C]
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- bne _08103D6E
- ldrh r1, [r2, 0x30]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _08103D32
- ldr r0, _08103D2C @ =gUnknown_203ACF0
- ldr r0, [r0]
- adds r1, r0, 0
- adds r1, 0x2D
- ldrb r0, [r1]
- cmp r0, 0
- beq _08103D30
- subs r0, 0x1
- strb r0, [r1]
- b _08103D60
- .align 2, 0
-_08103D28: .4byte gMain
-_08103D2C: .4byte gUnknown_203ACF0
-_08103D30:
- movs r4, 0x1
-_08103D32:
- ldrh r1, [r2, 0x2C]
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- bne _08103D6E
- ldrh r1, [r2, 0x30]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08103D6E
- ldr r0, _08103D68 @ =gUnknown_203ACF0
- ldr r0, [r0]
- adds r2, r0, 0
- adds r2, 0x2D
- ldrb r1, [r2]
- adds r0, 0x2C
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r1, r0
- bge _08103D6C
- adds r0, r1, 0x1
- strb r0, [r2]
-_08103D60:
- movs r0, 0x5
- bl PlaySE
- b _08104228
- .align 2, 0
-_08103D68: .4byte gUnknown_203ACF0
-_08103D6C:
- movs r4, 0x2
-_08103D6E:
- cmp r4, 0
- bne _08103D78
- bl sub_8104284
- adds r4, r0, 0
-_08103D78:
- cmp r4, 0x1
- beq _08103D94
- cmp r4, 0x1
- ble _08103E4E
- cmp r4, 0x2
- beq _08103DF8
- b _08103E4E
-_08103D86:
- ldr r1, [r4]
- movs r0, 0x8
- strb r0, [r1, 0x1]
- ldr r5, _08103D90 @ =gUnknown_203ACF0
- b _08103DDA
- .align 2, 0
-_08103D90: .4byte gUnknown_203ACF0
-_08103D94:
- ldr r0, _08103DE4 @ =gUnknown_203ACF0
- ldr r1, [r0]
- adds r2, r1, 0
- adds r2, 0x2B
- adds r1, 0x29
- ldrb r2, [r2]
- adds r5, r0, 0
- ldrb r1, [r1]
- cmp r2, r1
- bls _08103DDA
- adds r4, r5, 0
-_08103DAA:
- ldr r1, [r4]
- adds r1, 0x2B
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0x28
- ldrb r0, [r0]
- adds r1, 0x2B
- ldrb r1, [r1]
- bl sub_8106838
- lsls r0, 24
- cmp r0, 0
- bne _08103D86
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0x2B
- adds r1, 0x29
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- bhi _08103DAA
-_08103DDA:
- ldr r1, [r5]
- ldrb r0, [r1, 0x1]
- cmp r0, 0x8
- beq _08103E4E
- b _08103E4A
- .align 2, 0
-_08103DE4: .4byte gUnknown_203ACF0
-_08103DE8:
- ldr r1, [r4]
- movs r0, 0xA
- strb r0, [r1, 0x1]
- ldr r5, _08103DF4 @ =gUnknown_203ACF0
- b _08103E42
- .align 2, 0
-_08103DF4: .4byte gUnknown_203ACF0
-_08103DF8:
- ldr r1, _08103E64 @ =gUnknown_203ACF0
- ldr r0, [r1]
- adds r2, r0, 0
- adds r2, 0x2B
- ldrb r2, [r2]
- adds r0, 0x2A
- ldrb r0, [r0]
- subs r0, 0x1
- adds r5, r1, 0
- cmp r2, r0
- bge _08103E42
- adds r4, r5, 0
-_08103E10:
- ldr r1, [r4]
- adds r1, 0x2B
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0x28
- ldrb r0, [r0]
- adds r1, 0x2B
- ldrb r1, [r1]
- bl sub_8106838
- lsls r0, 24
- cmp r0, 0
- bne _08103DE8
- ldr r0, [r4]
- adds r1, r0, 0
- adds r1, 0x2B
- ldrb r1, [r1]
- adds r0, 0x2A
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r1, r0
- blt _08103E10
-_08103E42:
- ldr r1, [r5]
- ldrb r0, [r1, 0x1]
- cmp r0, 0xA
- beq _08103E4E
-_08103E4A:
- movs r0, 0x6
- strb r0, [r1, 0x1]
-_08103E4E:
- ldr r0, _08103E68 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08103E5C
- b _08104228
-_08103E5C:
- ldr r0, _08103E64 @ =gUnknown_203ACF0
- ldr r1, [r0]
- movs r0, 0x6
- b _08104226
- .align 2, 0
-_08103E64: .4byte gUnknown_203ACF0
-_08103E68: .4byte gMain
-_08103E6C:
- ldr r0, [r5]
- adds r0, 0x60
- ldrb r0, [r0]
- bl RemoveScrollIndicatorArrowPair
- ldr r0, [r5]
- adds r0, 0x61
- ldrb r0, [r0]
- movs r1, 0
- bl ListMenuRemoveCursorObject
- ldr r0, _08103E98 @ =0xffff7fff
- ldr r1, _08103E9C @ =0x0000ffff
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, [r5]
- movs r0, 0x1
- b _08104226
- .align 2, 0
-_08103E98: .4byte 0xffff7fff
-_08103E9C: .4byte 0x0000ffff
-_08103EA0:
- bl sub_8104E90
- movs r0, 0xFF
- bl sub_8105058
- ldr r4, _08103ED0 @ =gUnknown_203ACF0
- ldr r0, [r4]
- adds r0, 0x61
- ldrb r0, [r0]
- movs r1, 0
- movs r2, 0xA0
- movs r3, 0
- bl ListMenuUpdateCursorObject
- ldr r0, [r4]
- adds r0, 0x2E
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r4]
- strb r1, [r0, 0x2]
- ldr r1, [r4]
- ldrb r0, [r1, 0x1]
- adds r0, 0x1
- b _08104226
- .align 2, 0
-_08103ED0: .4byte gUnknown_203ACF0
-_08103ED4:
- movs r0, 0
- bl sub_81052D0
- lsls r0, 24
- cmp r0, 0
- bne _08103EE2
- b _08104228
-_08103EE2:
- ldr r2, _08103EF8 @ =gUnknown_203ACF0
- ldr r1, [r2]
- adds r0, r1, 0
- adds r0, 0x2C
- ldrb r0, [r0]
- subs r0, 0x1
- adds r1, 0x2D
- strb r0, [r1]
- ldr r1, [r2]
- movs r0, 0x5
- b _08104226
- .align 2, 0
-_08103EF8: .4byte gUnknown_203ACF0
-_08103EFC:
- movs r0, 0x1
- bl sub_81052D0
- lsls r0, 24
- cmp r0, 0
- bne _08103F0A
- b _08104228
-_08103F0A:
- ldr r2, _08103F1C @ =gUnknown_203ACF0
- ldr r0, [r2]
- adds r0, 0x2D
- movs r1, 0
- strb r1, [r0]
- ldr r1, [r2]
- movs r0, 0x5
- b _08104226
- .align 2, 0
-_08103F1C: .4byte gUnknown_203ACF0
-_08103F20:
- ldr r2, [r5]
- adds r0, r2, 0
- adds r0, 0x2D
- ldrb r1, [r0]
- lsls r1, 1
- subs r0, 0x15
- adds r0, r1
- ldrh r1, [r0]
- adds r0, r2, 0
- adds r0, 0x5A
- strh r1, [r0]
- movs r0, 0x5
- bl PlaySE
- ldr r1, [r5]
- movs r0, 0xE
- b _08104226
-_08103F42:
- bl sub_8106014
- ldr r0, _08103F50 @ =gUnknown_203ACF0
- ldr r1, [r0]
- movs r0, 0x4
- b _08104226
- .align 2, 0
-_08103F50: .4byte gUnknown_203ACF0
-_08103F54:
- movs r0, 0
- bl sub_8105E1C
- ldr r0, _08103F64 @ =gUnknown_203ACF0
- ldr r1, [r0]
- movs r0, 0xF
- b _08104226
- .align 2, 0
-_08103F64: .4byte gUnknown_203ACF0
-_08103F68:
- ldr r0, [r5]
- movs r1, 0
- strb r1, [r0, 0x2]
- ldr r0, [r5]
- strb r1, [r0, 0x3]
- ldr r1, [r5]
- ldrb r0, [r1, 0x1]
- adds r0, 0x1
- strb r0, [r1, 0x1]
-_08103F7A:
- ldr r1, [r5]
- ldrb r0, [r1, 0x3]
- cmp r0, 0x5
- bhi _08103FA8
- ldrb r0, [r1, 0x2]
- cmp r0, 0
- bne _08103F8A
- b _081040BE
-_08103F8A:
- ldrb r1, [r1, 0x3]
- movs r0, 0
- bl sub_8105594
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldr r1, [r5]
- movs r0, 0x4
- strb r0, [r1, 0x2]
- ldr r1, [r5]
- ldrb r0, [r1, 0x3]
- adds r0, 0x1
- strb r0, [r1, 0x3]
- b _08104228
-_08103FA8:
- 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, 0x3
- bl CopyBgTilemapBufferToVram
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldr r0, [r5]
- adds r0, 0x5A
- ldrh r0, [r0]
- movs r1, 0
- movs r2, 0x7D
- movs r3, 0xA
- bl PlayCry2
- ldr r1, [r5]
- movs r0, 0
- strb r0, [r1, 0x2]
- ldr r1, [r5]
- movs r0, 0x11
- b _08104226
-_08103FF0:
- ldr r0, _08104024 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0810402C
- 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, _08104028 @ =gUnknown_203ACF0
- ldr r1, [r0]
- movs r0, 0x15
- b _08104226
- .align 2, 0
-_08104024: .4byte gMain
-_08104028: .4byte gUnknown_203ACF0
-_0810402C:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08104036
- b _081041D8
-_08104036:
- ldr r1, [r5]
- b _08104224
-_0810403A:
- movs r0, 0
- bl sub_8104F0C
- movs r0, 0
- movs r1, 0x6
- bl sub_8105594
- movs r0, 0x3
- bl CopyBgTilemapBufferToVram
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldr r0, _08104068 @ =gUnknown_203ACF0
- ldr r1, [r0]
- movs r0, 0x13
- b _08104226
- .align 2, 0
-_08104068: .4byte gUnknown_203ACF0
-_0810406C:
- ldr r1, [r5]
- movs r0, 0
- strb r0, [r1, 0x2]
- ldr r1, [r5]
- movs r0, 0x6
- strb r0, [r1, 0x3]
- ldr r1, [r5]
- ldrb r0, [r1, 0x1]
- adds r0, 0x1
- strb r0, [r1, 0x1]
-_08104080:
- ldr r1, [r5]
- ldrb r2, [r1, 0x3]
- cmp r2, 0
- beq _081040C4
- ldrb r0, [r1, 0x2]
- cmp r0, 0
- beq _081040BE
- subs r0, r2, 0x1
- strb r0, [r1, 0x3]
- 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
- ldr r0, [r5]
- ldrb r1, [r0, 0x3]
- movs r0, 0
- bl sub_8105594
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldr r1, [r5]
- movs r0, 0x1
- strb r0, [r1, 0x2]
- b _08104228
-_081040BE:
- subs r0, 0x1
- strb r0, [r1, 0x2]
- b _08104228
-_081040C4:
- 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 r1, [r5]
- movs r0, 0xD
- b _08104226
-_081040E4:
- bl sub_810603C
- ldr r0, _081040F0 @ =gUnknown_203ACF0
- ldr r1, [r0]
- movs r0, 0x16
- b _08104226
- .align 2, 0
-_081040F0: .4byte gUnknown_203ACF0
-_081040F4:
- movs r0, 0x3
- bl CopyBgTilemapBufferToVram
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldr r0, _08104114 @ =gUnknown_203ACF0
- ldr r1, [r0]
- movs r0, 0x17
- b _08104226
- .align 2, 0
-_08104114: .4byte gUnknown_203ACF0
-_08104118:
- ldr r0, _08104174 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0810417C
- 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, _08104178 @ =gUnknown_203ACF0
- ldr r1, [r0]
- movs r0, 0x1A
- b _08104226
- .align 2, 0
-_08104174: .4byte gMain
-_08104178: .4byte gUnknown_203ACF0
-_0810417C:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081041D8
- 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, _081041D4 @ =gUnknown_203ACF0
- ldr r1, [r0]
- movs r0, 0x18
- b _08104226
- .align 2, 0
-_081041D4: .4byte gUnknown_203ACF0
-_081041D8:
- bl sub_8106B34
- b _08104228
-_081041DE:
- bl sub_81067C0
- ldr r0, _081041EC @ =gUnknown_203ACF0
- ldr r1, [r0]
- movs r0, 0x19
- b _08104226
- .align 2, 0
-_081041EC: .4byte gUnknown_203ACF0
-_081041F0:
- 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, _08104218 @ =gUnknown_203ACF0
- ldr r1, [r0]
- movs r0, 0x11
- b _08104226
- .align 2, 0
-_08104218: .4byte gUnknown_203ACF0
-_0810421C:
- bl sub_81067C0
- ldr r0, _08104230 @ =gUnknown_203ACF0
- ldr r1, [r0]
-_08104224:
- movs r0, 0x12
-_08104226:
- strb r0, [r1, 0x1]
-_08104228:
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08104230: .4byte gUnknown_203ACF0
- thumb_func_end sub_8103AC8
-
thumb_func_start sub_8104234
sub_8104234: @ 8104234
push {r4,lr}
diff --git a/baserom.ips b/baserom.ips
index 74aa1927b..5088391ca 100644
--- a/baserom.ips
+++ b/baserom.ips
Binary files differ
diff --git a/data/pokedex_screen.s b/data/pokedex_screen.s
index 473c88e40..6a834342d 100644
--- a/data/pokedex_screen.s
+++ b/data/pokedex_screen.s
@@ -7,162 +7,580 @@
.align 2
gUnknown_843FAB0:: @ 843FAB0
- .incbin "baserom.gba", 0x43FAB0, 0x674
-
-gUnknown_8440124:: @ 8440124
+ .4byte gMonFootprint_Bulbasaur
+ .4byte gMonFootprint_Bulbasaur
+ .4byte gMonFootprint_Ivysaur
+ .4byte gMonFootprint_Venusaur
+ .4byte gMonFootprint_Charmander
+ .4byte gMonFootprint_Charmeleon
+ .4byte gMonFootprint_Charizard
+ .4byte gMonFootprint_Squirtle
+ .4byte gMonFootprint_Wartortle
+ .4byte gMonFootprint_Blastoise
+ .4byte gMonFootprint_Caterpie
+ .4byte gMonFootprint_Metapod
+ .4byte gMonFootprint_Butterfree
+ .4byte gMonFootprint_Weedle
+ .4byte gMonFootprint_Kakuna
+ .4byte gMonFootprint_Beedrill
+ .4byte gMonFootprint_Pidgey
+ .4byte gMonFootprint_Pidgeotto
+ .4byte gMonFootprint_Pidgeot
+ .4byte gMonFootprint_Rattata
+ .4byte gMonFootprint_Raticate
+ .4byte gMonFootprint_Spearow
+ .4byte gMonFootprint_Fearow
+ .4byte gMonFootprint_Ekans
+ .4byte gMonFootprint_Arbok
+ .4byte gMonFootprint_Pikachu
+ .4byte gMonFootprint_Raichu
+ .4byte gMonFootprint_Sandshrew
+ .4byte gMonFootprint_Sandslash
+ .4byte gMonFootprint_NidoranF
+ .4byte gMonFootprint_Nidorina
+ .4byte gMonFootprint_Nidoqueen
+ .4byte gMonFootprint_NidoranM
+ .4byte gMonFootprint_Nidorino
+ .4byte gMonFootprint_Nidoking
+ .4byte gMonFootprint_Clefairy
+ .4byte gMonFootprint_Clefable
+ .4byte gMonFootprint_Vulpix
+ .4byte gMonFootprint_Ninetales
+ .4byte gMonFootprint_Jigglypuff
+ .4byte gMonFootprint_Wigglytuff
+ .4byte gMonFootprint_Zubat
+ .4byte gMonFootprint_Golbat
+ .4byte gMonFootprint_Oddish
+ .4byte gMonFootprint_Gloom
+ .4byte gMonFootprint_Vileplume
+ .4byte gMonFootprint_Paras
+ .4byte gMonFootprint_Parasect
+ .4byte gMonFootprint_Venonat
+ .4byte gMonFootprint_Venomoth
+ .4byte gMonFootprint_Diglett
+ .4byte gMonFootprint_Dugtrio
+ .4byte gMonFootprint_Meowth
+ .4byte gMonFootprint_Persian
+ .4byte gMonFootprint_Psyduck
+ .4byte gMonFootprint_Golduck
+ .4byte gMonFootprint_Mankey
+ .4byte gMonFootprint_Primeape
+ .4byte gMonFootprint_Growlithe
+ .4byte gMonFootprint_Arcanine
+ .4byte gMonFootprint_Poliwag
+ .4byte gMonFootprint_Poliwhirl
+ .4byte gMonFootprint_Poliwrath
+ .4byte gMonFootprint_Abra
+ .4byte gMonFootprint_Kadabra
+ .4byte gMonFootprint_Alakazam
+ .4byte gMonFootprint_Machop
+ .4byte gMonFootprint_Machoke
+ .4byte gMonFootprint_Machamp
+ .4byte gMonFootprint_Bellsprout
+ .4byte gMonFootprint_Weepinbell
+ .4byte gMonFootprint_Victreebel
+ .4byte gMonFootprint_Tentacool
+ .4byte gMonFootprint_Tentacruel
+ .4byte gMonFootprint_Geodude
+ .4byte gMonFootprint_Graveler
+ .4byte gMonFootprint_Golem
+ .4byte gMonFootprint_Ponyta
+ .4byte gMonFootprint_Rapidash
+ .4byte gMonFootprint_Slowpoke
+ .4byte gMonFootprint_Slowbro
+ .4byte gMonFootprint_Magnemite
+ .4byte gMonFootprint_Magneton
+ .4byte gMonFootprint_Farfetchd
+ .4byte gMonFootprint_Doduo
+ .4byte gMonFootprint_Dodrio
+ .4byte gMonFootprint_Seel
+ .4byte gMonFootprint_Dewgong
+ .4byte gMonFootprint_Grimer
+ .4byte gMonFootprint_Muk
+ .4byte gMonFootprint_Shellder
+ .4byte gMonFootprint_Cloyster
+ .4byte gMonFootprint_Gastly
+ .4byte gMonFootprint_Haunter
+ .4byte gMonFootprint_Gengar
+ .4byte gMonFootprint_Onix
+ .4byte gMonFootprint_Drowzee
+ .4byte gMonFootprint_Hypno
+ .4byte gMonFootprint_Krabby
+ .4byte gMonFootprint_Kingler
+ .4byte gMonFootprint_Voltorb
+ .4byte gMonFootprint_Electrode
+ .4byte gMonFootprint_Exeggcute
+ .4byte gMonFootprint_Exeggutor
+ .4byte gMonFootprint_Cubone
+ .4byte gMonFootprint_Marowak
+ .4byte gMonFootprint_Hitmonlee
+ .4byte gMonFootprint_Hitmonchan
+ .4byte gMonFootprint_Lickitung
+ .4byte gMonFootprint_Koffing
+ .4byte gMonFootprint_Weezing
+ .4byte gMonFootprint_Rhyhorn
+ .4byte gMonFootprint_Rhydon
+ .4byte gMonFootprint_Chansey
+ .4byte gMonFootprint_Tangela
+ .4byte gMonFootprint_Kangaskhan
+ .4byte gMonFootprint_Horsea
+ .4byte gMonFootprint_Seadra
+ .4byte gMonFootprint_Goldeen
+ .4byte gMonFootprint_Seaking
+ .4byte gMonFootprint_Staryu
+ .4byte gMonFootprint_Starmie
+ .4byte gMonFootprint_Mrmime
+ .4byte gMonFootprint_Scyther
+ .4byte gMonFootprint_Jynx
+ .4byte gMonFootprint_Electabuzz
+ .4byte gMonFootprint_Magmar
+ .4byte gMonFootprint_Pinsir
+ .4byte gMonFootprint_Tauros
+ .4byte gMonFootprint_Magikarp
+ .4byte gMonFootprint_Gyarados
+ .4byte gMonFootprint_Lapras
+ .4byte gMonFootprint_Ditto
+ .4byte gMonFootprint_Eevee
+ .4byte gMonFootprint_Vaporeon
+ .4byte gMonFootprint_Jolteon
+ .4byte gMonFootprint_Flareon
+ .4byte gMonFootprint_Porygon
+ .4byte gMonFootprint_Omanyte
+ .4byte gMonFootprint_Omastar
+ .4byte gMonFootprint_Kabuto
+ .4byte gMonFootprint_Kabutops
+ .4byte gMonFootprint_Aerodactyl
+ .4byte gMonFootprint_Snorlax
+ .4byte gMonFootprint_Articuno
+ .4byte gMonFootprint_Zapdos
+ .4byte gMonFootprint_Moltres
+ .4byte gMonFootprint_Dratini
+ .4byte gMonFootprint_Dragonair
+ .4byte gMonFootprint_Dragonite
+ .4byte gMonFootprint_Mewtwo
+ .4byte gMonFootprint_Mew
+ .4byte gMonFootprint_Chikorita
+ .4byte gMonFootprint_Bayleef
+ .4byte gMonFootprint_Meganium
+ .4byte gMonFootprint_Cyndaquil
+ .4byte gMonFootprint_Quilava
+ .4byte gMonFootprint_Typhlosion
+ .4byte gMonFootprint_Totodile
+ .4byte gMonFootprint_Croconaw
+ .4byte gMonFootprint_Feraligatr
+ .4byte gMonFootprint_Sentret
+ .4byte gMonFootprint_Furret
+ .4byte gMonFootprint_Hoothoot
+ .4byte gMonFootprint_Noctowl
+ .4byte gMonFootprint_Ledyba
+ .4byte gMonFootprint_Ledian
+ .4byte gMonFootprint_Spinarak
+ .4byte gMonFootprint_Ariados
+ .4byte gMonFootprint_Crobat
+ .4byte gMonFootprint_Chinchou
+ .4byte gMonFootprint_Lanturn
+ .4byte gMonFootprint_Pichu
+ .4byte gMonFootprint_Cleffa
+ .4byte gMonFootprint_Igglybuff
+ .4byte gMonFootprint_Togepi
+ .4byte gMonFootprint_Togetic
+ .4byte gMonFootprint_Natu
+ .4byte gMonFootprint_Xatu
+ .4byte gMonFootprint_Mareep
+ .4byte gMonFootprint_Flaaffy
+ .4byte gMonFootprint_Ampharos
+ .4byte gMonFootprint_Bellossom
+ .4byte gMonFootprint_Marill
+ .4byte gMonFootprint_Azumarill
+ .4byte gMonFootprint_Sudowoodo
+ .4byte gMonFootprint_Politoed
+ .4byte gMonFootprint_Hoppip
+ .4byte gMonFootprint_Skiploom
+ .4byte gMonFootprint_Jumpluff
+ .4byte gMonFootprint_Aipom
+ .4byte gMonFootprint_Sunkern
+ .4byte gMonFootprint_Sunflora
+ .4byte gMonFootprint_Yanma
+ .4byte gMonFootprint_Wooper
+ .4byte gMonFootprint_Quagsire
+ .4byte gMonFootprint_Espeon
+ .4byte gMonFootprint_Umbreon
+ .4byte gMonFootprint_Murkrow
+ .4byte gMonFootprint_Slowking
+ .4byte gMonFootprint_Misdreavus
+ .4byte gMonFootprint_Unown
+ .4byte gMonFootprint_Wobbuffet
+ .4byte gMonFootprint_Girafarig
+ .4byte gMonFootprint_Pineco
+ .4byte gMonFootprint_Forretress
+ .4byte gMonFootprint_Dunsparce
+ .4byte gMonFootprint_Gligar
+ .4byte gMonFootprint_Steelix
+ .4byte gMonFootprint_Snubbull
+ .4byte gMonFootprint_Granbull
+ .4byte gMonFootprint_Qwilfish
+ .4byte gMonFootprint_Scizor
+ .4byte gMonFootprint_Shuckle
+ .4byte gMonFootprint_Heracross
+ .4byte gMonFootprint_Sneasel
+ .4byte gMonFootprint_Teddiursa
+ .4byte gMonFootprint_Ursaring
+ .4byte gMonFootprint_Slugma
+ .4byte gMonFootprint_Magcargo
+ .4byte gMonFootprint_Swinub
+ .4byte gMonFootprint_Piloswine
+ .4byte gMonFootprint_Corsola
+ .4byte gMonFootprint_Remoraid
+ .4byte gMonFootprint_Octillery
+ .4byte gMonFootprint_Delibird
+ .4byte gMonFootprint_Mantine
+ .4byte gMonFootprint_Skarmory
+ .4byte gMonFootprint_Houndour
+ .4byte gMonFootprint_Houndoom
+ .4byte gMonFootprint_Kingdra
+ .4byte gMonFootprint_Phanpy
+ .4byte gMonFootprint_Donphan
+ .4byte gMonFootprint_Porygon2
+ .4byte gMonFootprint_Stantler
+ .4byte gMonFootprint_Smeargle
+ .4byte gMonFootprint_Tyrogue
+ .4byte gMonFootprint_Hitmontop
+ .4byte gMonFootprint_Smoochum
+ .4byte gMonFootprint_Elekid
+ .4byte gMonFootprint_Magby
+ .4byte gMonFootprint_Miltank
+ .4byte gMonFootprint_Blissey
+ .4byte gMonFootprint_Raikou
+ .4byte gMonFootprint_Entei
+ .4byte gMonFootprint_Suicune
+ .4byte gMonFootprint_Larvitar
+ .4byte gMonFootprint_Pupitar
+ .4byte gMonFootprint_Tyranitar
+ .4byte gMonFootprint_Lugia
+ .4byte gMonFootprint_HoOh
+ .4byte gMonFootprint_Celebi
+ .4byte gMonFootprint_QuestionMark
+ .4byte gMonFootprint_QuestionMark
+ .4byte gMonFootprint_QuestionMark
+ .4byte gMonFootprint_QuestionMark
+ .4byte gMonFootprint_QuestionMark
+ .4byte gMonFootprint_QuestionMark
+ .4byte gMonFootprint_QuestionMark
+ .4byte gMonFootprint_QuestionMark
+ .4byte gMonFootprint_QuestionMark
+ .4byte gMonFootprint_QuestionMark
+ .4byte gMonFootprint_QuestionMark
+ .4byte gMonFootprint_QuestionMark
+ .4byte gMonFootprint_QuestionMark
+ .4byte gMonFootprint_QuestionMark
+ .4byte gMonFootprint_QuestionMark
+ .4byte gMonFootprint_QuestionMark
+ .4byte gMonFootprint_QuestionMark
+ .4byte gMonFootprint_QuestionMark
+ .4byte gMonFootprint_QuestionMark
+ .4byte gMonFootprint_QuestionMark
+ .4byte gMonFootprint_QuestionMark
+ .4byte gMonFootprint_QuestionMark
+ .4byte gMonFootprint_QuestionMark
+ .4byte gMonFootprint_QuestionMark
+ .4byte gMonFootprint_QuestionMark
+ .4byte gMonFootprint_Treecko
+ .4byte gMonFootprint_Grovyle
+ .4byte gMonFootprint_Sceptile
+ .4byte gMonFootprint_Torchic
+ .4byte gMonFootprint_Combusken
+ .4byte gMonFootprint_Blaziken
+ .4byte gMonFootprint_Mudkip
+ .4byte gMonFootprint_Marshtomp
+ .4byte gMonFootprint_Swampert
+ .4byte gMonFootprint_Poochyena
+ .4byte gMonFootprint_Mightyena
+ .4byte gMonFootprint_Zigzagoon
+ .4byte gMonFootprint_Linoone
+ .4byte gMonFootprint_Wurmple
+ .4byte gMonFootprint_Silcoon
+ .4byte gMonFootprint_Beautifly
+ .4byte gMonFootprint_Cascoon
+ .4byte gMonFootprint_Dustox
+ .4byte gMonFootprint_Lotad
+ .4byte gMonFootprint_Lombre
+ .4byte gMonFootprint_Ludicolo
+ .4byte gMonFootprint_Seedot
+ .4byte gMonFootprint_Nuzleaf
+ .4byte gMonFootprint_Shiftry
+ .4byte gMonFootprint_Nincada
+ .4byte gMonFootprint_Ninjask
+ .4byte gMonFootprint_Shedinja
+ .4byte gMonFootprint_Taillow
+ .4byte gMonFootprint_Swellow
+ .4byte gMonFootprint_Shroomish
+ .4byte gMonFootprint_Breloom
+ .4byte gMonFootprint_Spinda
+ .4byte gMonFootprint_Wingull
+ .4byte gMonFootprint_Pelipper
+ .4byte gMonFootprint_Surskit
+ .4byte gMonFootprint_Masquerain
+ .4byte gMonFootprint_Wailmer
+ .4byte gMonFootprint_Wailord
+ .4byte gMonFootprint_Skitty
+ .4byte gMonFootprint_Delcatty
+ .4byte gMonFootprint_Kecleon
+ .4byte gMonFootprint_Baltoy
+ .4byte gMonFootprint_Claydol
+ .4byte gMonFootprint_Nosepass
+ .4byte gMonFootprint_Torkoal
+ .4byte gMonFootprint_Sableye
+ .4byte gMonFootprint_Barboach
+ .4byte gMonFootprint_Whiscash
+ .4byte gMonFootprint_Luvdisc
+ .4byte gMonFootprint_Corphish
+ .4byte gMonFootprint_Crawdaunt
+ .4byte gMonFootprint_Feebas
+ .4byte gMonFootprint_Milotic
+ .4byte gMonFootprint_Carvanha
+ .4byte gMonFootprint_Sharpedo
+ .4byte gMonFootprint_Trapinch
+ .4byte gMonFootprint_Vibrava
+ .4byte gMonFootprint_Flygon
+ .4byte gMonFootprint_Makuhita
+ .4byte gMonFootprint_Hariyama
+ .4byte gMonFootprint_Electrike
+ .4byte gMonFootprint_Manectric
+ .4byte gMonFootprint_Numel
+ .4byte gMonFootprint_Camerupt
+ .4byte gMonFootprint_Spheal
+ .4byte gMonFootprint_Sealeo
+ .4byte gMonFootprint_Walrein
+ .4byte gMonFootprint_Cacnea
+ .4byte gMonFootprint_Cacturne
+ .4byte gMonFootprint_Snorunt
+ .4byte gMonFootprint_Glalie
+ .4byte gMonFootprint_Lunatone
+ .4byte gMonFootprint_Solrock
+ .4byte gMonFootprint_Azurill
+ .4byte gMonFootprint_Spoink
+ .4byte gMonFootprint_Grumpig
+ .4byte gMonFootprint_Plusle
+ .4byte gMonFootprint_Minun
+ .4byte gMonFootprint_Mawile
+ .4byte gMonFootprint_Meditite
+ .4byte gMonFootprint_Medicham
+ .4byte gMonFootprint_Swablu
+ .4byte gMonFootprint_Altaria
+ .4byte gMonFootprint_Wynaut
+ .4byte gMonFootprint_Duskull
+ .4byte gMonFootprint_Dusclops
+ .4byte gMonFootprint_Roselia
+ .4byte gMonFootprint_Slakoth
+ .4byte gMonFootprint_Vigoroth
+ .4byte gMonFootprint_Slaking
+ .4byte gMonFootprint_Gulpin
+ .4byte gMonFootprint_Swalot
+ .4byte gMonFootprint_Tropius
+ .4byte gMonFootprint_Whismur
+ .4byte gMonFootprint_Loudred
+ .4byte gMonFootprint_Exploud
+ .4byte gMonFootprint_Clamperl
+ .4byte gMonFootprint_Huntail
+ .4byte gMonFootprint_Gorebyss
+ .4byte gMonFootprint_Absol
+ .4byte gMonFootprint_Shuppet
+ .4byte gMonFootprint_Banette
+ .4byte gMonFootprint_Seviper
+ .4byte gMonFootprint_Zangoose
+ .4byte gMonFootprint_Relicanth
+ .4byte gMonFootprint_Aron
+ .4byte gMonFootprint_Lairon
+ .4byte gMonFootprint_Aggron
+ .4byte gMonFootprint_Castform
+ .4byte gMonFootprint_Volbeat
+ .4byte gMonFootprint_Illumise
+ .4byte gMonFootprint_Lileep
+ .4byte gMonFootprint_Cradily
+ .4byte gMonFootprint_Anorith
+ .4byte gMonFootprint_Armaldo
+ .4byte gMonFootprint_Ralts
+ .4byte gMonFootprint_Kirlia
+ .4byte gMonFootprint_Gardevoir
+ .4byte gMonFootprint_Bagon
+ .4byte gMonFootprint_Shelgon
+ .4byte gMonFootprint_Salamence
+ .4byte gMonFootprint_Beldum
+ .4byte gMonFootprint_Metang
+ .4byte gMonFootprint_Metagross
+ .4byte gMonFootprint_Regirock
+ .4byte gMonFootprint_Regice
+ .4byte gMonFootprint_Registeel
+ .4byte gMonFootprint_Kyogre
+ .4byte gMonFootprint_Groudon
+ .4byte gMonFootprint_Rayquaza
+ .4byte gMonFootprint_Latias
+ .4byte gMonFootprint_Latios
+ .4byte gMonFootprint_Jirachi
+ .4byte gMonFootprint_Deoxys
+ .4byte gMonFootprint_Chimecho
+ .4byte gMonFootprint_Bulbasaur
+
+gUnknown_8440124:: @ 8440124 bin.lz
.incbin "baserom.gba", 0x440124, 0x150
-gUnknown_8440274:: @ 8440274
+gUnknown_8440274:: @ 8440274 4bpp.lz
.incbin "baserom.gba", 0x440274, 0x138
-gUnknown_84403AC:: @ 84403AC
+gUnknown_84403AC:: @ 84403AC 4bpp.lz
.incbin "baserom.gba", 0x4403AC, 0x11C
-gUnknown_84404C8:: @ 84404C8
+gUnknown_84404C8:: @ 84404C8 gbapal
.incbin "baserom.gba", 0x4404C8, 0x200
-gUnknown_84406C8:: @ 84406C8
+gUnknown_84406C8:: @ 84406C8 data16
.incbin "baserom.gba", 0x4406C8, 0x4
-gUnknown_84406CC:: @ 84406CC
+gUnknown_84406CC:: @ 84406CC data16
.incbin "baserom.gba", 0x4406CC, 0x2
-gUnknown_84406CE:: @ 84406CE
+gUnknown_84406CE:: @ 84406CE data16
.incbin "baserom.gba", 0x4406CE, 0x12
-gUnknown_84406E0:: @ 84406E0
- .incbin "baserom.gba", 0x4406E0, 0x810
+gUnknown_84406E0:: @ 84406E0 gbapal
+ .incbin "baserom.gba", 0x4406E0, 0x200
+ .incbin "baserom.gba", 0x4408E0, 0x610
-gUnknown_8440EF0:: @ 8440EF0
+gUnknown_8440EF0:: @ 8440EF0 bin.lz
.incbin "baserom.gba", 0x440EF0, 0x2570
-gUnknown_8443460:: @ 8443460
- .incbin "baserom.gba", 0x443460, 0x1A0
+gUnknown_8443460:: @ 8443460 gbapal
+ .incbin "baserom.gba", 0x443460, 0x20
+ .incbin "baserom.gba", 0x443480, 0x180
-gUnknown_8443600:: @ 8443600
+gUnknown_8443600:: @ 8443600 4bpp
.incbin "baserom.gba", 0x443600, 0x20
-gUnknown_8443620:: @ 8443620
+gUnknown_8443620:: @ 8443620 bin.lz
.incbin "baserom.gba", 0x443620, 0x6E0
-gUnknown_8443D00:: @ 8443D00
+gUnknown_8443D00:: @ 8443D00 4bpp
.incbin "baserom.gba", 0x443D00, 0x2C0
-gUnknown_8443FC0:: @ 8443FC0
+gUnknown_8443FC0:: @ 8443FC0 data16
.incbin "baserom.gba", 0x443FC0, 0x336
-gUnknown_84442F6:: @ 84442F6
+gUnknown_84442F6:: @ 84442F6 data16
.incbin "baserom.gba", 0x4442F6, 0x304
-gUnknown_84445FA:: @ 84445FA
+gUnknown_84445FA:: @ 84445FA data16
.incbin "baserom.gba", 0x4445FA, 0x304
-gUnknown_84448FE:: @ 84448FE
+gUnknown_84448FE:: @ 84448FE data16
.incbin "baserom.gba", 0x4448FE, 0x336
.section .rodata.after @ pokedex.c erroneously carved out?
-gUnknown_8451EBC:: @ 8451EBC
+gUnknown_8451EBC:: @ 8451EBC BgTemplate
.incbin "baserom.gba", 0x451EBC, 0x10
-gUnknown_8451ECC:: @ 8451ECC
+gUnknown_8451ECC:: @ 8451ECC WindowTemplate
.incbin "baserom.gba", 0x451ECC, 0x18
-gUnknown_8451EE4:: @ 8451EE4
+gUnknown_8451EE4:: @ 8451EE4 PokedexScreenData
.incbin "baserom.gba", 0x451EE4, 0x70
-gUnknown_8451F54:: @ 8451F54
+gUnknown_8451F54:: @ 8451F54 WindowTemplate
.incbin "baserom.gba", 0x451F54, 0x8
-gUnknown_8451F5C:: @ 8451F5C
+gUnknown_8451F5C:: @ 8451F5C WindowTemplate
.incbin "baserom.gba", 0x451F5C, 0x8
-gUnknown_8451F64:: @ 8451F64
- .incbin "baserom.gba", 0x451F64, 0xA0
+gUnknown_8451F64:: @ 8451F64 WindowTemplate
+ .incbin "baserom.gba", 0x451F64, 0x8
+ .incbin "baserom.gba", 0x451F6C, 0x98
-gUnknown_8452004:: @ 8452004
- .incbin "baserom.gba", 0x452004, 0xB8
+gUnknown_8452004:: @ 8452004 ListMenuTemplate
+ .incbin "baserom.gba", 0x452004, 0x18
+ .incbin "baserom.gba", 0x45201C, 0xA0
-gUnknown_84520BC:: @ 84520BC
+gUnknown_84520BC:: @ 84520BC ListMenuTemplate
.incbin "baserom.gba", 0x4520BC, 0x18
-gUnknown_84520D4:: @ 84520D4
+gUnknown_84520D4:: @ 84520D4 ScrollArrowsTemplate
.incbin "baserom.gba", 0x4520D4, 0x10
-gUnknown_84520E4:: @ 84520E4
+gUnknown_84520E4:: @ 84520E4 ScrollArrowsTemplate
.incbin "baserom.gba", 0x4520E4, 0x10
-gUnknown_84520F4:: @ 84520F4
+gUnknown_84520F4:: @ 84520F4 struct { dataptr; dataptr; }
.incbin "baserom.gba", 0x4520F4, 0x78
-gUnknown_845216C:: @ 845216C
+gUnknown_845216C:: @ 845216C WindowTemplate
.incbin "baserom.gba", 0x45216C, 0x8
-gUnknown_8452174:: @ 8452174
+gUnknown_8452174:: @ 8452174 ListMenuTemplate
.incbin "baserom.gba", 0x452174, 0x18
-gUnknown_845218C:: @ 845218C
- .incbin "baserom.gba", 0x45218C, 0x28
+gUnknown_845218C:: @ 845218C ListMenuWindowRect
+ .incbin "baserom.gba", 0x45218C, 0x8
+ .incbin "baserom.gba", 0x452194, 0x20
-gUnknown_84521B4:: @ 84521B4
+gUnknown_84521B4:: @ 84521B4 ScrollArrowsTemplate
.incbin "baserom.gba", 0x4521B4, 0x10
-gUnknown_84521C4:: @ 84521C4
+gUnknown_84521C4:: @ 84521C4 WindowTemplate
.incbin "baserom.gba", 0x4521C4, 0x8
-gUnknown_84521CC:: @ 84521CC
+gUnknown_84521CC:: @ 84521CC WindowTemplate
.incbin "baserom.gba", 0x4521CC, 0x8
-gUnknown_84521D4:: @ 84521D4
+gUnknown_84521D4:: @ 84521D4 WindowTemplate
.incbin "baserom.gba", 0x4521D4, 0x8
-gUnknown_84521DC:: @ 84521DC
+gUnknown_84521DC:: @ 84521DC WindowTemplate
.incbin "baserom.gba", 0x4521DC, 0x8
-gUnknown_84521E4:: @ 84521E4
+gUnknown_84521E4:: @ 84521E4 WindowTemplate
.incbin "baserom.gba", 0x4521E4, 0x8
-gUnknown_84521EC:: @ 84521EC
+gUnknown_84521EC:: @ 84521EC WindowTemplate
.incbin "baserom.gba", 0x4521EC, 0x8
-gUnknown_84521F4:: @ 84521F4
+gUnknown_84521F4:: @ 84521F4 WindowTemplate
.incbin "baserom.gba", 0x4521F4, 0x8
-gUnknown_84521FC:: @ 84521FC
+gUnknown_84521FC:: @ 84521FC WindowTemplate
.incbin "baserom.gba", 0x4521FC, 0x8
-gUnknown_8452204:: @ 8452204
+gUnknown_8452204:: @ 8452204 WindowTemplate
.incbin "baserom.gba", 0x452204, 0x8
-gUnknown_845220C:: @ 845220C
+gUnknown_845220C:: @ 845220C WindowTemplate
.incbin "baserom.gba", 0x45220C, 0x8
-gUnknown_8452214:: @ 8452214
- .incbin "baserom.gba", 0x452214, 0x40
+gUnknown_8452214:: @ 8452214 WindowTemplate
+ .incbin "baserom.gba", 0x452214, 0x8
+ .incbin "baserom.gba", 0x45221C, 0x38
-gUnknown_8452254:: @ 8452254
+gUnknown_8452254:: @ 8452254 struct { dataptr; dataptr; }
.incbin "baserom.gba", 0x452254, 0x38
-gUnknown_845228C:: @ 845228C
+gUnknown_845228C:: @ 845228C bin
.incbin "baserom.gba", 0x45228C, 0xA8
-gUnknown_8452334:: @ 8452334
+gUnknown_8452334:: @ 8452334 dataptr
.incbin "baserom.gba", 0x452334, 0x10
-gUnknown_8452344:: @ 8452344
+gUnknown_8452344:: @ 8452344 dataptr
.incbin "baserom.gba", 0x452344, 0x24
-gUnknown_8452368:: @ 8452368
+gUnknown_8452368:: @ 8452368 gbapal
.incbin "baserom.gba", 0x452368, 0x20
-gUnknown_8452388:: @ 8452388
+gUnknown_8452388:: @ 8452388 data16
.incbin "baserom.gba", 0x452388, 0x12C
-gUnknown_84524B4:: @ 84524B4
+gUnknown_84524B4:: @ 84524B4 ScrollArrowsTemplate
.incbin "baserom.gba", 0x4524B4, 0x10
-gUnknown_84524C4:: @ 84524C4
+gUnknown_84524C4:: @ 84524C4 CursorStruct
.incbin "baserom.gba", 0x4524C4, 0x788
-gUnknown_8452C4C:: @ 8452C4C
+gUnknown_8452C4C:: @ 8452C4C struct { dataptr; data8; }
.incbin "baserom.gba", 0x452C4C, 0x48
diff --git a/include/list_menu.h b/include/list_menu.h
index 94a49d2c2..237805f38 100644
--- a/include/list_menu.h
+++ b/include/list_menu.h
@@ -73,8 +73,8 @@ struct ListMenuWindowRect
extern struct ListMenuTemplate gMultiuseListMenuTemplate;
s32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const struct ListMenuTemplate *listMenuTemplate, u8 arg2, u16 tileNum, u16 palNum);
-u8 ListMenuInit(struct ListMenuTemplate *listMenuTemplate, u16 cursorPos, u16 itemsAbove);
-u8 ListMenuInitInRect(struct ListMenuTemplate *listMenuTemplate, struct ListMenuWindowRect *rect, u16 cursorPos, u16 itemsAbove);
+u8 ListMenuInit(const struct ListMenuTemplate *listMenuTemplate, u16 cursorPos, u16 itemsAbove);
+u8 ListMenuInitInRect(const struct ListMenuTemplate *listMenuTemplate, const struct ListMenuWindowRect *rect, u16 cursorPos, u16 itemsAbove);
s32 ListMenu_ProcessInput(u8 listTaskId);
void DestroyListMenuTask(u8 listTaskId, u16 *cursorPos, u16 *itemsAbove);
void RedrawListMenu(u8 listTaskId);
diff --git a/include/menu_indicators.h b/include/menu_indicators.h
index fbcee2590..507c25485 100644
--- a/include/menu_indicators.h
+++ b/include/menu_indicators.h
@@ -32,8 +32,8 @@ struct CursorStruct
u8 AddScrollIndicatorArrowPairParameterized(u32 arrowType, s32 commonPos, s32 firstPos, s32 secondPos, s32 fullyDownThreshold, s32 tileTag, s32 palTag, u16 *scrollOffset);
u8 AddScrollIndicatorArrowPair(const struct ScrollArrowsTemplate * template, u16 * a1);
void RemoveScrollIndicatorArrowPair(u8);
-u8 ListMenuAddCursorObjectInternal(struct CursorStruct *cursor, u32 cursorKind);
-u8 ListMenuAddRedOutlineCursorObject(struct CursorStruct *cursor);
+u8 ListMenuAddCursorObjectInternal(const struct CursorStruct *cursor, u32 cursorKind);
+u8 ListMenuAddRedOutlineCursorObject(const struct CursorStruct *cursor);
void ListMenuUpdateRedOutlineCursorObject(u8 taskId, u16 x, u16 y);
void ListMenuRemoveRedOutlineCursorObject(u8 taskId);
void ListMenuRemoveCursorObject(u8 taskId, u32 cursorKind);
diff --git a/include/pokedex_screen.h b/include/pokedex_screen.h
index 8855a47fc..9cc362d59 100644
--- a/include/pokedex_screen.h
+++ b/include/pokedex_screen.h
@@ -2,5 +2,6 @@
#define GUARD_POKEDEX_SCREEN_H
void CB2_OpenPokedexFromStartMenu(void);
+s8 sub_8104AB0(u16 nationalDexNo, u8 caseID, u8 unk);
#endif //GUARD_POKEDEX_SCREEN_H
diff --git a/include/sound.h b/include/sound.h
index e5736fad8..8ce8a62ad 100644
--- a/include/sound.h
+++ b/include/sound.h
@@ -46,5 +46,7 @@ void SE12PanpotControl(s8 pan);
bool8 IsSEPlaying(void);
bool8 IsBGMPlaying(void);
bool8 IsSpecialSEPlaying(void);
+void sub_8072474(u16 volume);
+void sub_807249C(void);
#endif // GUARD_SOUND_H
diff --git a/include/strings.h b/include/strings.h
index fd690886a..498d6802d 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -965,6 +965,17 @@ 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[];
+extern const u8 gUnknown_8415F3D[];
+extern const u8 gUnknown_8415F4A[];
+extern const u8 gUnknown_8415F66[];
+
// trainer card
extern const u8 gText_WaitingTrainerFinishReading[];
extern const u8 gText_TrainerCardName[];
diff --git a/ld_script.txt b/ld_script.txt
index e3190d9b6..42fc57437 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -227,6 +227,7 @@ SECTIONS {
src/map_preview_screen.o(.text);
asm/link_rfu_2.o(.text);
asm/link_rfu.o(.text);
+ src/pokedex_screen.o(.text);
asm/pokedex_screen.o(.text);
src/list_menu.o(.text);
asm/item_menu.o(.text);
diff --git a/src/list_menu.c b/src/list_menu.c
index 484da31ad..6c4d50961 100644
--- a/src/list_menu.c
+++ b/src/list_menu.c
@@ -70,7 +70,7 @@ static EWRAM_DATA struct MysteryGiftLinkMenuStruct sMysteryGiftLinkMenu = {0};
struct ListMenuOverride gListMenuOverride;
struct ListMenuTemplate gMultiuseListMenuTemplate;
-static u8 ListMenuInitInternal(struct ListMenuTemplate *listMenuTemplate, u16 cursorPos, u16 itemsAbove);
+static u8 ListMenuInitInternal(const struct ListMenuTemplate *listMenuTemplate, u16 cursorPos, u16 itemsAbove);
static bool8 ListMenuChangeSelection(struct ListMenu *list, bool8 updateCursorAndCallCallback, u8 count, bool8 movingDown);
static void ListMenuPrintEntries(struct ListMenu *list, u16 startIndex, u16 yOffset, u16 count);
static void ListMenuDrawCursor(struct ListMenu *list);
@@ -172,7 +172,7 @@ s32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const str
return LIST_NOTHING_CHOSEN;
}
-u8 ListMenuInit(struct ListMenuTemplate *listMenuTemplate, u16 cursorPos, u16 itemsAbove)
+u8 ListMenuInit(const struct ListMenuTemplate *listMenuTemplate, u16 cursorPos, u16 itemsAbove)
{
u8 taskId = ListMenuInitInternal(listMenuTemplate, cursorPos, itemsAbove);
PutWindowTilemap(listMenuTemplate->windowId);
@@ -180,7 +180,7 @@ u8 ListMenuInit(struct ListMenuTemplate *listMenuTemplate, u16 cursorPos, u16 it
return taskId;
}
-u8 ListMenuInitInRect(struct ListMenuTemplate *listMenuTemplate, struct ListMenuWindowRect *rect, u16 cursorPos, u16 itemsAbove)
+u8 ListMenuInitInRect(const struct ListMenuTemplate *listMenuTemplate, const struct ListMenuWindowRect *rect, u16 cursorPos, u16 itemsAbove)
{
s32 i;
u8 taskId = ListMenuInitInternal(listMenuTemplate, cursorPos, itemsAbove);
@@ -338,7 +338,7 @@ u16 ListMenuGetYCoordForPrintingArrowCursor(u8 listTaskId)
return list->itemsAbove * yMultiplier + list->template.upText_Y;
}
-static u8 ListMenuInitInternal(struct ListMenuTemplate *listMenuTemplate, u16 cursorPos, u16 itemsAbove)
+static u8 ListMenuInitInternal(const struct ListMenuTemplate *listMenuTemplate, u16 cursorPos, u16 itemsAbove)
{
u8 listTaskId = CreateTask(ListMenuDummyTask, 0);
struct ListMenu *list = (struct ListMenu *)gTasks[listTaskId].data;
diff --git a/src/menu_indicators.c b/src/menu_indicators.c
index 1d6589fb0..c07aaf772 100644
--- a/src/menu_indicators.c
+++ b/src/menu_indicators.c
@@ -50,7 +50,7 @@ static EWRAM_DATA struct ScrollArrowsTemplate sTempScrollArrowTemplate = {0};
static void SpriteCallback_ScrollIndicatorArrow(struct Sprite *sprite);
static void SpriteCallback_RedArrowCursor(struct Sprite *sprite);
static void Task_ScrollIndicatorArrowPair(u8 taskId);
-static u8 ListMenuAddRedArrowCursorObject(struct CursorStruct *cursor);
+static u8 ListMenuAddRedArrowCursorObject(const struct CursorStruct *cursor);
static void ListMenuUpdateRedArrowCursorObject(u8 taskId, u16 x, u16 y);
static void ListMenuRemoveRedArrowCursorObject(u8 taskId);
@@ -422,7 +422,7 @@ void RemoveScrollIndicatorArrowPair(u8 taskId)
DestroyTask(taskId);
}
-u8 ListMenuAddCursorObjectInternal(struct CursorStruct *cursor, u32 cursorKind)
+u8 ListMenuAddCursorObjectInternal(const struct CursorStruct *cursor, u32 cursorKind)
{
switch (cursorKind)
{
@@ -528,7 +528,7 @@ void ListMenuSetUpRedOutlineCursorSpriteOamTable(u16 rowWidth, u16 rowHeight, st
}
}
-u8 ListMenuAddRedOutlineCursorObject(struct CursorStruct *cursor)
+u8 ListMenuAddRedOutlineCursorObject(const struct CursorStruct *cursor)
{
struct CompressedSpriteSheet spriteSheet;
struct SpritePalette spritePal;
@@ -601,7 +601,7 @@ static void Task_RedArrowCursor(u8 taskId)
{
}
-static u8 ListMenuAddRedArrowCursorObject(struct CursorStruct *cursor)
+static u8 ListMenuAddRedArrowCursorObject(const struct CursorStruct *cursor)
{
struct CompressedSpriteSheet spriteSheet;
struct SpritePalette spritePal;
diff --git a/src/pokedex.c b/src/pokedex.c
index 1354aac8c..683b605d4 100644
--- a/src/pokedex.c
+++ b/src/pokedex.c
@@ -1,9 +1,8 @@
#include "global.h"
#include "pokedex.h"
+#include "pokedex_screen.h"
#include "constants/species.h"
-extern s8 sub_8104AB0(u16 nationalDexNo, u8 caseID, u8 unk);
-
ALIGNED(4) static const u8 gExpandedPlaceholder_PokedexDescription[] = _("");
#include "data/pokemon/pokedex_text.h"
diff --git a/src/pokedex_screen.c b/src/pokedex_screen.c
new file mode 100644
index 000000000..220d0c9ff
--- /dev/null
+++ b/src/pokedex_screen.c
@@ -0,0 +1,1165 @@
+#include "global.h"
+#include "bg.h"
+#include "malloc.h"
+#include "palette.h"
+#include "graphics.h"
+#include "dma3.h"
+#include "gpu_regs.h"
+#include "m4a.h"
+#include "scanline_effect.h"
+#include "task.h"
+#include "text.h"
+#include "window.h"
+#include "new_menu_helpers.h"
+#include "sound.h"
+#include "event_data.h"
+#include "help_system.h"
+#include "menu_indicators.h"
+#include "overworld.h"
+#include "strings.h"
+#include "menu.h"
+#include "pokedex_screen.h"
+#include "data.h"
+#include "pokedex.h"
+#include "constants/songs.h"
+#include "constants/species.h"
+
+struct PokedexScreenData
+{
+ u8 field_00;
+ u8 field_01;
+ u8 field_02;
+ u8 field_03;
+ u8 filler_04[0x4];
+ u32 field_08;
+ u32 field_0C;
+ u16 field_10;
+ u16 field_12;
+ u8 field_14;
+ u8 field_15;
+ u8 field_16;
+ u8 field_17;
+ u16 field_18[0x8];
+ u8 field_28;
+ u8 field_29;
+ u8 field_2A;
+ u8 field_2B;
+ u8 field_2C;
+ u8 field_2D;
+ u8 field_2E;
+ u8 field_2F;
+ u32 field_30;
+ u16 field_34;
+ u16 field_36;
+ u16 field_38;
+ u16 field_3A;
+ u16 field_3C;
+ u16 field_3E;
+ u8 field_40;
+ u8 field_41;
+ u8 field_42;
+ struct ListMenuItem * field_44;
+ u16 field_48;
+ u8 filler_4A[0x10];
+ u16 field_5A;
+ u8 filler_5C[0x4];
+ u8 field_60;
+ u8 field_61;
+ u16 field_62;
+ u8 filler_64[0x2];
+ u16 field_66;
+ u16 field_68;
+ u16 field_6A;
+ 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_8102C28(void);
+void sub_8102F80(u8 taskId);
+void sub_810317C(void);
+void sub_8103238(u8 taskId);
+void sub_810345C(void);
+u16 sub_8103518(u8 a0);
+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);
+void sub_81042EC(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);
+void sub_8104A34(u8 windowId, u8 a1, u16 species, u8 a3, u8 y);
+u16 sub_8104BBC(u8 a0, u8 a1);
+void sub_8104C2C(const u8 *a0);
+void sub_8104E90(void);
+void sub_8104F0C(u8 a0);
+void sub_8105058(u8 a0);
+void sub_8105178(u8 a0, u8 a1, u8 a2);
+bool8 sub_81052D0(u8 a0);
+void sub_8105594(u8 a0, u8 a1);
+void sub_8105E1C(u8 a0);
+void sub_8106014(void);
+void sub_810603C(void);
+bool8 sub_8106838(u8 a0, u8 a1);
+u8 sub_81068A0(u8 a0);
+void sub_810699C(u8 a0);
+bool8 sub_8106A20(u16 a0);
+void sub_81067C0(void);
+void sub_8106B34(void);
+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 u16 gUnknown_8443FC0[];
+extern const u16 gUnknown_84442F6[];
+extern const u16 gUnknown_84448FE[];
+extern const u16 gUnknown_84445FA[];
+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 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;
+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 CursorStruct gUnknown_84524C4;
+
+void sub_81024C0(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+void sub_81024D4(void)
+{
+ if (!gPaletteFade.active || IsDma3ManagerBusyWithBgCopy())
+ {
+ RunTasks();
+ RunTextPrinters();
+ AnimateSprites();
+ BuildOamBuffer();
+ }
+ else
+ {
+ UpdatePaletteFade();
+ }
+}
+
+void sub_810250C(void)
+{
+ bool8 natDex;
+ u8 taskId;
+
+ natDex = IsNationalPokedexEnabled();
+ m4aSoundVSyncOff();
+ SetVBlankCallback(NULL);
+ ResetPaletteFade();
+ ResetSpriteData();
+ ResetTasks();
+ ScanlineEffect_Stop();
+ ResetBgsAndClearDma3BusyFlags(TRUE);
+ InitBgsFromTemplates(0, gUnknown_8451EBC, NELEMS(gUnknown_8451EBC));
+ SetBgTilemapBuffer(3, Alloc(BG_SCREEN_SIZE));
+ SetBgTilemapBuffer(2, Alloc(BG_SCREEN_SIZE));
+ SetBgTilemapBuffer(1, Alloc(BG_SCREEN_SIZE));
+ SetBgTilemapBuffer(0, Alloc(BG_SCREEN_SIZE));
+ if (natDex)
+ DecompressAndLoadBgGfxUsingHeap(3, gUnknown_84403AC, BG_SCREEN_SIZE, 0, 0);
+ else
+ DecompressAndLoadBgGfxUsingHeap(3, gUnknown_8440274, BG_SCREEN_SIZE, 0, 0);
+ InitWindows(gUnknown_8451ECC);
+ DeactivateAllTextPrinters();
+ m4aSoundVSyncOn();
+ SetVBlankCallback(sub_81024C0);
+ EnableInterrupts(INTR_FLAG_VBLANK);
+ taskId = CreateTask(sub_810287C, 0);
+ gUnknown_203ACF0 = Alloc(sizeof(*gUnknown_203ACF0));
+ *gUnknown_203ACF0 = gUnknown_8451EE4;
+ gUnknown_203ACF0->field_00 = taskId;
+ 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);
+ gUnknown_203ACF0->field_68 = sub_8104BBC(1, 0);
+ sub_8072474(0x80);
+ ChangeBgX(0, 0, 0);
+ ChangeBgY(0, 0, 0);
+ ChangeBgX(1, 0, 0);
+ ChangeBgY(1, 0, 0);
+ ChangeBgX(2, 0, 0);
+ ChangeBgY(2, 0, 0);
+ ChangeBgX(3, 0, 0);
+ ChangeBgY(3, 0, 0);
+ gPaletteFade.bufferTransferDisabled = TRUE;
+ if (natDex)
+ LoadPalette(gUnknown_84406E0, 0, 0x200);
+ else
+ LoadPalette(gUnknown_84404C8, 0, 0x200);
+ FillBgTilemapBufferRect(3, 0x001, 0, 0, 32, 32, 0);
+ FillBgTilemapBufferRect(2, 0x000, 0, 0, 32, 32, 0x11);
+ FillBgTilemapBufferRect(1, 0x000, 0, 0, 32, 32, 0x11);
+ FillBgTilemapBufferRect(0, 0x0003, 0, 0, 32, 2, 0xF);
+ FillBgTilemapBufferRect(0, 0x0000, 0, 2, 32, 16, 0x11);
+ FillBgTilemapBufferRect(0, 0x003, 0, 18, 32, 2, 0xF);
+}
+
+void CB2_OpenPokedexFromStartMenu(void)
+{
+ sub_810250C();
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON | DISPCNT_WIN1_ON);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+ SetMainCallback2(sub_81024D4);
+ HelpSystem_SetSomeVariable2(4);
+}
+
+#define FREE_IF_NOT_NULL(ptr0) ({ void * ptr = (ptr0); if (ptr) Free(ptr); })
+
+bool8 sub_8102798(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ gMain.state++;
+ return FALSE;
+ case 1:
+ if (!gPaletteFade.active)
+ gMain.state = 2;
+ else
+ UpdatePaletteFade();
+ return FALSE;
+ case 2:
+ FREE_IF_NOT_NULL(gUnknown_203ACF0->field_44);
+ FREE_IF_NOT_NULL(gUnknown_203ACF0);
+ FreeAllWindowBuffers();
+ FREE_IF_NOT_NULL(GetBgTilemapBuffer(0));
+ FREE_IF_NOT_NULL(GetBgTilemapBuffer(1));
+ FREE_IF_NOT_NULL(GetBgTilemapBuffer(2));
+ FREE_IF_NOT_NULL(GetBgTilemapBuffer(3));
+ sub_807249C();
+ break;
+ }
+ return TRUE;
+}
+
+void sub_8102858(void)
+{
+ if (sub_8102798())
+ {
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON | DISPCNT_WIN1_ON);
+ SetMainCallback2(CB2_ReturnToFieldWithOpenMenu);
+ }
+}
+
+void sub_810287C(u8 taskId)
+{
+ int i;
+ switch (gUnknown_203ACF0->field_01)
+ {
+ case 0:
+ gUnknown_203ACF0->field_08 = 0;
+ for (i = 0; i < 9; i++)
+ gUnknown_203ACF0->field_08 |= (sub_81068A0(i) << i);
+ gUnknown_203ACF0->field_01 = 2;
+ break;
+ case 1:
+ RemoveScrollIndicatorArrowPair(gUnknown_203ACF0->field_60);
+ sub_81047B0(&gUnknown_203ACF0->field_14);
+ sub_81047B0(&gUnknown_203ACF0->field_15);
+ sub_81047B0(&gUnknown_203ACF0->field_16);
+ SetMainCallback2(sub_8102858);
+ DestroyTask(taskId);
+ break;
+ case 2:
+ sub_8102C28();
+ gUnknown_203ACF0->field_01 = 3;
+ break;
+ case 3:
+ CopyBgTilemapBufferToVram(3);
+ CopyBgTilemapBufferToVram(2);
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_203ACF0->field_01 = 4;
+ break;
+ case 4:
+ ShowBg(3);
+ ShowBg(2);
+ ShowBg(1);
+ ShowBg(0);
+ if (gPaletteFade.bufferTransferDisabled)
+ {
+ gPaletteFade.bufferTransferDisabled = FALSE;
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0, RGB_WHITEALPHA);
+ }
+ else
+ 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);
+ if (IsNationalPokedexEnabled())
+ gUnknown_203ACF0->field_60 = AddScrollIndicatorArrowPair(&gUnknown_84520E4, &gUnknown_203ACF0->field_62);
+ else
+ gUnknown_203ACF0->field_60 = AddScrollIndicatorArrowPair(&gUnknown_84520D4, &gUnknown_203ACF0->field_62);
+ gUnknown_203ACF0->field_01 = 6;
+ break;
+ case 6:
+ gUnknown_203ACF0->field_0C = ListMenu_ProcessInput(gUnknown_203ACF0->field_17);
+ ListMenuGetScrollAndRow(gUnknown_203ACF0->field_17, &gUnknown_203ACF0->field_62, NULL);
+ if (JOY_NEW(A_BUTTON))
+ {
+ // FIXME: Get this switch to behave
+ switch (gUnknown_203ACF0->field_0C)
+ {
+ case LIST_CANCEL:
+ gUnknown_203ACF0->field_01 = 1;
+ break;
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ case 8:
+ if (sub_81068A0(gUnknown_203ACF0->field_0C))
+ {
+ RemoveScrollIndicatorArrowPair(gUnknown_203ACF0->field_60);
+ gUnknown_203ACF0->field_28 = gUnknown_203ACF0->field_0C;
+ BeginNormalPaletteFade(0xFFFF7FFF, 0, 0, 16, RGB_WHITEALPHA);
+ gUnknown_203ACF0->field_01 = 7;
+ }
+ break;
+ case 9:
+ case 14:
+ RemoveScrollIndicatorArrowPair(gUnknown_203ACF0->field_60);
+ gUnknown_203ACF0->field_42 = gUnknown_203ACF0->field_0C - 9;
+ BeginNormalPaletteFade(0xFFFF7FFF, 0, 0, 16, RGB_WHITEALPHA);
+ gUnknown_203ACF0->field_01 = 9;
+ break;
+ case 10:
+ case 11:
+ case 12:
+ case 13:
+ RemoveScrollIndicatorArrowPair(gUnknown_203ACF0->field_60);
+ gUnknown_203ACF0->field_42 = gUnknown_203ACF0->field_0C - 9;
+ gUnknown_203ACF0->field_38 = gUnknown_203ACF0->field_3A = 0;
+ BeginNormalPaletteFade(0xFFFF7FFF, 0, 0, 16, RGB_WHITEALPHA);
+ gUnknown_203ACF0->field_01 = 8;
+ break;
+ }
+ break;
+ }
+ if (JOY_NEW(B_BUTTON))
+ {
+ gUnknown_203ACF0->field_01 = 1;
+ }
+ break;
+ case 7:
+ DestroyListMenuTask(gUnknown_203ACF0->field_17, &gUnknown_203ACF0->field_12, &gUnknown_203ACF0->field_10);
+ FillBgTilemapBufferRect_Palette0(1, 0, 0, 0, 32, 20);
+ CopyBgTilemapBufferToVram(1);
+ sub_81047B0(&gUnknown_203ACF0->field_14);
+ sub_81047B0(&gUnknown_203ACF0->field_15);
+ sub_81047B0(&gUnknown_203ACF0->field_16);
+ gUnknown_203ACF0->field_2B = 0;
+ gUnknown_203ACF0->field_2D = 0;
+ gUnknown_203ACF0->field_2F = 0;
+ gTasks[taskId].func = sub_8103AC8;
+ gUnknown_203ACF0->field_01 = 0;
+ break;
+ case 8:
+ DestroyListMenuTask(gUnknown_203ACF0->field_17, &gUnknown_203ACF0->field_12, &gUnknown_203ACF0->field_10);
+ HideBg(1);
+ sub_81047B0(&gUnknown_203ACF0->field_14);
+ sub_81047B0(&gUnknown_203ACF0->field_15);
+ sub_81047B0(&gUnknown_203ACF0->field_16);
+ gTasks[taskId].func = sub_8103238;
+ gUnknown_203ACF0->field_01 = 0;
+ break;
+ case 9:
+ DestroyListMenuTask(gUnknown_203ACF0->field_17, &gUnknown_203ACF0->field_12, &gUnknown_203ACF0->field_10);
+ HideBg(1);
+ sub_81047B0(&gUnknown_203ACF0->field_14);
+ sub_81047B0(&gUnknown_203ACF0->field_15);
+ sub_81047B0(&gUnknown_203ACF0->field_16);
+ gTasks[taskId].func = sub_8102F80;
+ gUnknown_203ACF0->field_01 = 0;
+ 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;
+ }
+}
+
+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);
+}
+
+u16 sub_8103518(u8 a0)
+{
+ s32 max_n = IsNationalPokedexEnabled() ? NATIONAL_DEX_DEOXYS : NATIONAL_DEX_MEW;
+ u16 ndex_num;
+ u16 ret = NATIONAL_DEX_NONE;
+ s32 i;
+ bool8 caught;
+ bool8 seen;
+
+ switch (a0)
+ {
+ default:
+ case 0:
+ for (i = 0; i < NATIONAL_DEX_MEW; i++)
+ {
+ ndex_num = i + 1;
+ seen = sub_8104AB0(ndex_num, FLAG_GET_SEEN, 0);
+ caught = sub_8104AB0(ndex_num, FLAG_GET_CAUGHT, 0);
+ if (seen)
+ {
+ gUnknown_203ACF0->field_44[i].label = gSpeciesNames[NationalPokedexNumToSpecies(ndex_num)];
+ ret = ndex_num;
+ }
+ else
+ {
+ gUnknown_203ACF0->field_44[i].label = gUnknown_8415F66;
+ }
+ gUnknown_203ACF0->field_44[i].index = (caught << 17) + (seen << 16) + NationalPokedexNumToSpecies(ndex_num);
+ }
+ break;
+ case 1:
+ for (i = 0; i < SPECIES_CHIMECHO; i++)
+ {
+ ndex_num = gUnknown_8443FC0[i];
+ if (ndex_num <= max_n)
+ {
+ seen = sub_8104AB0(ndex_num, FLAG_GET_SEEN, 0);
+ caught = sub_8104AB0(ndex_num, FLAG_GET_CAUGHT, 0);
+ if (seen)
+ {
+ gUnknown_203ACF0->field_44[ret].label = gSpeciesNames[NationalPokedexNumToSpecies(ndex_num)];
+ gUnknown_203ACF0->field_44[ret].index = (caught << 17) + (seen << 16) + NationalPokedexNumToSpecies(ndex_num);
+ ret++;
+ }
+ }
+ }
+ break;
+ case 2:
+ for (i = 0; i < SPECIES_CHIMECHO; i++)
+ {
+ ndex_num = SpeciesToNationalPokedexNum(gUnknown_84448FE[i]);
+ if (ndex_num <= max_n)
+ {
+ seen = sub_8104AB0(ndex_num, FLAG_GET_SEEN, 0);
+ caught = sub_8104AB0(ndex_num, FLAG_GET_CAUGHT, 0);
+ if (caught)
+ {
+ gUnknown_203ACF0->field_44[ret].label = gSpeciesNames[NationalPokedexNumToSpecies(ndex_num)];
+ gUnknown_203ACF0->field_44[ret].index = (caught << 17) + (seen << 16) + NationalPokedexNumToSpecies(ndex_num);
+ ret++;
+ }
+ }
+ }
+ break;
+ case 3:
+ for (i = 0; i < NATIONAL_DEX_DEOXYS; i++)
+ {
+ ndex_num = gUnknown_84442F6[i];
+ if (ndex_num <= max_n)
+ {
+ seen = sub_8104AB0(ndex_num, FLAG_GET_SEEN, 0);
+ caught = sub_8104AB0(ndex_num, FLAG_GET_CAUGHT, 0);
+ if (caught)
+ {
+ gUnknown_203ACF0->field_44[ret].label = gSpeciesNames[NationalPokedexNumToSpecies(ndex_num)];
+ gUnknown_203ACF0->field_44[ret].index = (caught << 17) + (seen << 16) + NationalPokedexNumToSpecies(ndex_num);
+ ret++;
+ }
+ }
+ }
+ break;
+ case 4:
+ for (i = 0; i < NATIONAL_DEX_DEOXYS; i++)
+ {
+ ndex_num = gUnknown_84445FA[i];
+ if (ndex_num <= max_n)
+ {
+ seen = sub_8104AB0(ndex_num, FLAG_GET_SEEN, 0);
+ caught = sub_8104AB0(ndex_num, FLAG_GET_CAUGHT, 0);
+ if (caught)
+ {
+ gUnknown_203ACF0->field_44[ret].label = gSpeciesNames[NationalPokedexNumToSpecies(ndex_num)];
+ gUnknown_203ACF0->field_44[ret].index = (caught << 17) + (seen << 16) + NationalPokedexNumToSpecies(ndex_num);
+ ret++;
+ }
+ }
+ }
+ break;
+ case 5:
+ for (i = 0; i < NATIONAL_DEX_DEOXYS; i++)
+ {
+ ndex_num = i + 1;
+ seen = sub_8104AB0(ndex_num, FLAG_GET_SEEN, 0);
+ caught = sub_8104AB0(ndex_num, FLAG_GET_CAUGHT, 0);
+ if (seen)
+ {
+ gUnknown_203ACF0->field_44[i].label = gSpeciesNames[NationalPokedexNumToSpecies(ndex_num)];
+ ret = ndex_num;
+ }
+ else
+ {
+ gUnknown_203ACF0->field_44[i].label = gUnknown_8415F66;
+ }
+ gUnknown_203ACF0->field_44[i].index = (caught << 17) + (seen << 16) + NationalPokedexNumToSpecies(ndex_num);
+ }
+ break;
+ }
+ return ret;
+}
+
+void sub_8103924(const struct ListMenuTemplate * template, u8 a1)
+{
+ switch (a1)
+ {
+ default:
+ case 0:
+ gUnknown_203ACF0->field_41 = ListMenuInitInRect(template, &gUnknown_845218C, gUnknown_203ACF0->field_36, gUnknown_203ACF0->field_34);
+ break;
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ gUnknown_203ACF0->field_41 = ListMenuInitInRect(template, &gUnknown_845218C, gUnknown_203ACF0->field_3A, gUnknown_203ACF0->field_38);
+ break;
+ case 5:
+ gUnknown_203ACF0->field_41 = ListMenuInitInRect(template, &gUnknown_845218C, gUnknown_203ACF0->field_3E, gUnknown_203ACF0->field_3C);
+ break;
+ }
+}
+
+void sub_8103988(u8 a0)
+{
+ switch (a0)
+ {
+ default:
+ case 0:
+ DestroyListMenuTask(gUnknown_203ACF0->field_41, &gUnknown_203ACF0->field_36, &gUnknown_203ACF0->field_34);
+ break;
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ DestroyListMenuTask(gUnknown_203ACF0->field_41, &gUnknown_203ACF0->field_3A, &gUnknown_203ACF0->field_38);
+ break;
+ case 5:
+ DestroyListMenuTask(gUnknown_203ACF0->field_41, &gUnknown_203ACF0->field_3E, &gUnknown_203ACF0->field_3C);
+ break;
+ }
+}
+
+u8 sub_81039F0(void)
+{
+ struct ScrollArrowsTemplate template = gUnknown_84521B4;
+ if (gUnknown_203ACF0->field_48 > gUnknown_8452174.maxShowed)
+ template.fullyDownThreshold = gUnknown_203ACF0->field_48 - gUnknown_8452174.maxShowed;
+ else
+ template.fullyDownThreshold = 0;
+ return AddScrollIndicatorArrowPair(&template, &gUnknown_203ACF0->field_62);
+}
+
+struct PokedexListItem
+{
+ u16 species;
+ bool8 seen:1;
+ bool8 caught:1;
+};
+
+void sub_8103A40(u8 windowId, s32 itemId, u8 y)
+{
+ u32 itemId_ = itemId;
+ u16 species = itemId_;
+ bool8 seen = (itemId_ >> 16) & 1; // not used but required to match
+ bool8 caught = (itemId_ >> 17) & 1;
+ u8 type1;
+ sub_8104A34(gUnknown_203ACF0->field_40, 0, species, 12, y);
+ if (caught)
+ {
+ BlitMoveInfoIcon(gUnknown_203ACF0->field_40, 0, 0x28, y);
+ type1 = gBaseStats[species].type1;
+ BlitMoveInfoIcon(gUnknown_203ACF0->field_40, type1 + 1, 0x78, y);
+ if (type1 != gBaseStats[species].type2)
+ BlitMoveInfoIcon(gUnknown_203ACF0->field_40, gBaseStats[species].type2 + 1, 0x98, y);
+ }
+}
+
+void sub_8103AC8(u8 taskId)
+{
+ int r4;
+ u8 *ptr;
+ switch (gUnknown_203ACF0->field_01)
+ {
+ case 0:
+ HideBg(3);
+ HideBg(2);
+ HideBg(1);
+ sub_810699C(gUnknown_203ACF0->field_28);
+ if (gUnknown_203ACF0->field_2B < gUnknown_203ACF0->field_29)
+ gUnknown_203ACF0->field_2B = gUnknown_203ACF0->field_29;
+ gUnknown_203ACF0->field_01 = 2;
+ break;
+ case 1:
+ sub_8104E90();
+ HideBg(2);
+ HideBg(1);
+ switch (gUnknown_203ACF0->field_2F)
+ {
+ case 0:
+ default:
+ gTasks[taskId].func = sub_810287C;
+ break;
+ case 1:
+ gTasks[taskId].func = sub_8103238;
+ break;
+ }
+ gUnknown_203ACF0->field_01 = 0;
+ break;
+ case 2:
+ sub_8104F0C(0);
+ CopyBgTilemapBufferToVram(3);
+ CopyBgTilemapBufferToVram(2);
+ CopyBgTilemapBufferToVram(1);
+ sub_8105058(0xFF);
+ gUnknown_203ACF0->field_01 = 3;
+ break;
+ case 3:
+ BeginNormalPaletteFade(0xFFFF7FFF, 0, 16, 0, RGB_WHITEALPHA);
+ ShowBg(3);
+ ShowBg(2);
+ ShowBg(1);
+ gUnknown_203ACF0->field_01 = 4;
+ break;
+ case 4:
+ gUnknown_203ACF0->field_60 = sub_8104234();
+ gUnknown_203ACF0->field_61 = ListMenuAddCursorObjectInternal(&gUnknown_84524C4, 0);
+ gUnknown_203ACF0->field_01 = 5;
+ break;
+ case 5:
+ sub_8105058(gUnknown_203ACF0->field_2D);
+ sub_8105178(gUnknown_203ACF0->field_61, gUnknown_203ACF0->field_2D, gUnknown_203ACF0->field_2C);
+ gUnknown_203ACF0->field_62 = gUnknown_203ACF0->field_2B;
+ r4 = 0;
+ if (JOY_NEW(A_BUTTON) && sub_8104AB0(gUnknown_203ACF0->field_18[gUnknown_203ACF0->field_2D], FLAG_GET_SEEN, 1))
+ {
+ RemoveScrollIndicatorArrowPair(gUnknown_203ACF0->field_60);
+ ListMenuRemoveCursorObject(gUnknown_203ACF0->field_61, 0);
+ gUnknown_203ACF0->field_01 = 12;
+ }
+ else
+ {
+ if (!JOY_HELD(R_BUTTON) && JOY_REPT(DPAD_LEFT))
+ {
+ if (gUnknown_203ACF0->field_2D != 0)
+ {
+ gUnknown_203ACF0->field_2D--;
+ PlaySE(SE_SELECT);
+ break;
+ }
+ else
+ r4 = 1;
+ }
+ if (!JOY_HELD(R_BUTTON) && JOY_REPT(DPAD_RIGHT))
+ {
+ if (gUnknown_203ACF0->field_2D < gUnknown_203ACF0->field_2C - 1)
+ {
+ gUnknown_203ACF0->field_2D++;
+ PlaySE(SE_SELECT);
+ break;
+ }
+ else
+ r4 = 2;
+ }
+ if (r4 == 0)
+ r4 = sub_8104284();
+ switch (r4)
+ {
+ case 0:
+ break;
+ case 1:
+ while (gUnknown_203ACF0->field_2B > gUnknown_203ACF0->field_29)
+ {
+ gUnknown_203ACF0->field_2B--;
+ if (sub_8106838(gUnknown_203ACF0->field_28, gUnknown_203ACF0->field_2B))
+ {
+ gUnknown_203ACF0->field_01 = 8;
+ break;
+ }
+ }
+ if (gUnknown_203ACF0->field_01 != 8)
+ gUnknown_203ACF0->field_01 = 6;
+ break;
+ case 2:
+ while (gUnknown_203ACF0->field_2B < gUnknown_203ACF0->field_2A - 1)
+ {
+ gUnknown_203ACF0->field_2B++;
+ if (sub_8106838(gUnknown_203ACF0->field_28, gUnknown_203ACF0->field_2B))
+ {
+ gUnknown_203ACF0->field_01 = 10;
+ break;
+ }
+ }
+ if (gUnknown_203ACF0->field_01 != 10)
+ gUnknown_203ACF0->field_01 = 6;
+ break;
+ }
+ if (JOY_NEW(B_BUTTON))
+ {
+ gUnknown_203ACF0->field_01 = 6;
+ }
+ }
+ break;
+ case 6:
+ case 7:
+ RemoveScrollIndicatorArrowPair(gUnknown_203ACF0->field_60);
+ ListMenuRemoveCursorObject(gUnknown_203ACF0->field_61, 0);
+ BeginNormalPaletteFade(0xFFFF7FFF, 0, 0, 16, RGB_WHITEALPHA);
+ gUnknown_203ACF0->field_01 = 1;
+ break;
+ case 8:
+ case 10:
+ sub_8104E90();
+ sub_8105058(0xFF);
+ ListMenuUpdateCursorObject(gUnknown_203ACF0->field_61, 0, 0xA0, 0);
+ gUnknown_203ACF0->field_2E = 0;
+ gUnknown_203ACF0->field_02 = 0;
+ gUnknown_203ACF0->field_01++;
+ break;
+ case 9:
+ if (sub_81052D0(0))
+ {
+ gUnknown_203ACF0->field_2D = gUnknown_203ACF0->field_2C - 1;
+ gUnknown_203ACF0->field_01 = 5;
+ }
+ break;
+ case 11:
+ if (sub_81052D0(1))
+ {
+ gUnknown_203ACF0->field_2D = 0;
+ gUnknown_203ACF0->field_01 = 5;
+ }
+ break;
+ case 12:
+ gUnknown_203ACF0->field_5A = gUnknown_203ACF0->field_18[gUnknown_203ACF0->field_2D];
+ PlaySE(SE_SELECT);
+ gUnknown_203ACF0->field_01 = 14;
+ break;
+ case 13:
+ sub_8106014();
+ gUnknown_203ACF0->field_01 = 4;
+ break;
+ case 14:
+ sub_8105E1C(0);
+ gUnknown_203ACF0->field_01 = 15;
+ break;
+ case 15:
+ gUnknown_203ACF0->field_02 = 0;
+ gUnknown_203ACF0->field_03 = 0;
+ gUnknown_203ACF0->field_01++;
+ // fallthrough
+ case 16:
+ if (gUnknown_203ACF0->field_03 < 6)
+ {
+ if (!gUnknown_203ACF0->field_02)
+ {
+ gUnknown_203ACF0->field_02--;
+ }
+ else
+ {
+ sub_8105594(0, gUnknown_203ACF0->field_03);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_203ACF0->field_02 = 4;
+ gUnknown_203ACF0->field_03++;
+ }
+ }
+ else
+ {
+ FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 2, 30, 16);
+ CopyBgTilemapBufferToVram(3);
+ CopyBgTilemapBufferToVram(2);
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(0);
+ PlayCry2(gUnknown_203ACF0->field_5A, 0, 125, 10);
+ gUnknown_203ACF0->field_02 = 0;
+ gUnknown_203ACF0->field_01 = 17;
+ }
+ break;
+ case 17:
+ if (JOY_NEW(A_BUTTON))
+ {
+ sub_8106014();
+ FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 2, 30, 16);
+ CopyBgTilemapBufferToVram(1);
+ gUnknown_203ACF0->field_01 = 21;
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ gUnknown_203ACF0->field_01 = 18;
+ }
+ else
+ {
+ sub_8106B34();
+ }
+ break;
+ case 18:
+ sub_8104F0C(0);
+ sub_8105594(0, 6);
+ CopyBgTilemapBufferToVram(3);
+ CopyBgTilemapBufferToVram(2);
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_203ACF0->field_01 = 19;
+ break;
+ case 19:
+ gUnknown_203ACF0->field_02 = 0;
+ gUnknown_203ACF0->field_03 = 6;
+ gUnknown_203ACF0->field_01++;
+ // fallthrough
+ case 20:
+ if (gUnknown_203ACF0->field_03)
+ {
+ if (gUnknown_203ACF0->field_02)
+ {
+ gUnknown_203ACF0->field_03--;
+ FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 2, 30, 16);
+ sub_8105594(0, gUnknown_203ACF0->field_03);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_203ACF0->field_02 = 1;
+ }
+ else
+ gUnknown_203ACF0->field_02--;
+ }
+ else
+ {
+ FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 2, 30, 16);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_203ACF0->field_01 = 13;
+ }
+ break;
+ case 21:
+ sub_810603C();
+ gUnknown_203ACF0->field_01 = 22;
+ break;
+ case 22:
+ CopyBgTilemapBufferToVram(3);
+ CopyBgTilemapBufferToVram(2);
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_203ACF0->field_01 = 23;
+ break;
+ case 23:
+ if (JOY_NEW(A_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 = 26;
+ }
+ 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 = 24;
+ }
+ else
+ {
+ sub_8106B34();
+ }
+ break;
+ case 24:
+ sub_81067C0();
+ gUnknown_203ACF0->field_01 = 25;
+ break;
+ case 25:
+ sub_8105E1C(0);
+ CopyBgTilemapBufferToVram(3);
+ CopyBgTilemapBufferToVram(2);
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_203ACF0->field_01 = 17;
+ break;
+ case 26:
+ sub_81067C0();
+ gUnknown_203ACF0->field_01 = 18;
+ break;
+ }
+}