summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-12-11 17:06:27 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2019-12-11 17:06:27 -0500
commit0d586d304dbae11eeb0809ef7a06e2d23db5010c (patch)
treeda61101685e361f4c79ae7abb4048f3e33669bac
parentf55abfddc54e936ccae318d0b4e6efe8f8998d42 (diff)
sub_8103AC8
-rw-r--r--asm/pokedex_screen.s878
-rw-r--r--include/menu_indicators.h4
-rw-r--r--src/menu_indicators.c8
-rw-r--r--src/pokedex_screen.c336
4 files changed, 338 insertions, 888 deletions
diff --git a/asm/pokedex_screen.s b/asm/pokedex_screen.s
index 8eab9c420..5d89ba8a2 100644
--- a/asm/pokedex_screen.s
+++ b/asm/pokedex_screen.s
@@ -5,884 +5,6 @@
.text
- 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/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/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_screen.c b/src/pokedex_screen.c
index 1951146fa..220d0c9ff 100644
--- a/src/pokedex_screen.c
+++ b/src/pokedex_screen.c
@@ -28,7 +28,9 @@ struct PokedexScreenData
{
u8 field_00;
u8 field_01;
- u8 filler_02[0x6];
+ u8 field_02;
+ u8 field_03;
+ u8 filler_04[0x4];
u32 field_08;
u32 field_0C;
u16 field_10;
@@ -37,9 +39,10 @@ struct PokedexScreenData
u8 field_15;
u8 field_16;
u8 field_17;
- u8 filler_18[0x10];
+ u16 field_18[0x8];
u8 field_28;
- u8 filler_29[0x2];
+ u8 field_29;
+ u8 field_2A;
u8 field_2B;
u8 field_2C;
u8 field_2D;
@@ -61,6 +64,7 @@ struct PokedexScreenData
u16 field_5A;
u8 filler_5C[0x4];
u8 field_60;
+ u8 field_61;
u16 field_62;
u8 filler_64[0x2];
u16 field_66;
@@ -88,15 +92,30 @@ 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_81042EC(u8 taskId);
+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[];
@@ -124,6 +143,7 @@ extern const struct ScrollArrowsTemplate gUnknown_84520E4;
extern const struct PokedexScreenWindowGfx gUnknown_84520F4[];
extern const struct ListMenuWindowRect gUnknown_845218C;
extern const struct ScrollArrowsTemplate gUnknown_84521B4;
+extern const struct CursorStruct gUnknown_84524C4;
void sub_81024C0(void)
{
@@ -835,3 +855,311 @@ void sub_8103A40(u8 windowId, s32 itemId, u8 y)
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;
+ }
+}