diff options
-rw-r--r-- | asm/pokedex_screen.s | 878 | ||||
-rw-r--r-- | include/menu_indicators.h | 4 | ||||
-rw-r--r-- | src/menu_indicators.c | 8 | ||||
-rw-r--r-- | src/pokedex_screen.c | 336 |
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; + } +} |