diff options
-rw-r--r-- | asm/pokedex_screen.s | 3483 | ||||
-rw-r--r-- | baserom.ips | bin | 78640 -> 69496 bytes | |||
-rw-r--r-- | data/pokedex_screen.s | 538 | ||||
-rw-r--r-- | include/list_menu.h | 4 | ||||
-rw-r--r-- | include/menu_indicators.h | 4 | ||||
-rw-r--r-- | include/pokedex_screen.h | 1 | ||||
-rw-r--r-- | include/sound.h | 2 | ||||
-rw-r--r-- | include/strings.h | 11 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/list_menu.c | 8 | ||||
-rw-r--r-- | src/menu_indicators.c | 8 | ||||
-rw-r--r-- | src/pokedex.c | 3 | ||||
-rw-r--r-- | src/pokedex_screen.c | 1165 |
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 Binary files differindex 74aa1927b..5088391ca 100644 --- a/baserom.ips +++ b/baserom.ips 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; + } +} |