diff options
-rw-r--r-- | asm/pokedex_screen.s | 861 | ||||
-rw-r--r-- | baserom.ips | bin | 78640 -> 69496 bytes | |||
-rw-r--r-- | data/pokedex_screen.s | 538 | ||||
-rw-r--r-- | include/sound.h | 2 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/pokedex_screen.c | 345 |
6 files changed, 826 insertions, 921 deletions
diff --git a/asm/pokedex_screen.s b/asm/pokedex_screen.s index 9c57cff88..753cf8008 100644 --- a/asm/pokedex_screen.s +++ b/asm/pokedex_screen.s @@ -5,867 +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} 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/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/ld_script.txt b/ld_script.txt index f4678a1b0..f6da871fb 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/pokedex_screen.c b/src/pokedex_screen.c new file mode 100644 index 000000000..b02095807 --- /dev/null +++ b/src/pokedex_screen.c @@ -0,0 +1,345 @@ +#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" + +struct PokedexScreenData +{ + u8 field_00; + u8 field_01; + u8 filler_02[0x6]; + u32 field_08; + u32 field_0C; + u16 field_10; + u16 field_12; + u8 field_14; + u8 field_15; + u8 field_16; + u8 field_17; + u8 filler_18[0x10]; + u8 field_28; + u8 filler_29[0x2]; + u8 field_2B; + u8 field_2C; + u8 field_2D; + u8 field_2E; + u8 field_2F; + u8 filler_30[0x8]; + u16 field_38; + u16 field_3A; + u8 filler_3C[0x6]; + u8 field_42; + void * field_44; + u8 filler_48[0x18]; + u8 field_60; + u16 field_62; + u8 filler_64[0x2]; + u16 field_66; + u16 field_68; + u16 field_6A; + u16 field_6C; +}; + +EWRAM_DATA struct PokedexScreenData * gUnknown_203ACF0 = NULL; + +void sub_810287C(u8 taskId); +void sub_8103238(u8 taskId); +void sub_8103AC8(u8 taskId); +void sub_8102C28(void); +void sub_8102F80(u8 taskId); +void sub_81047B0(u8 *a0); +u16 sub_8104BBC(u8 a0, u8 a1); +u8 sub_81068A0(u8 a0); + +extern const u32 gUnknown_8440274[]; +extern const u32 gUnknown_84403AC[]; +extern const u16 gUnknown_84404C8[]; +extern const u16 gUnknown_84406E0[]; +extern const struct BgTemplate gUnknown_8451EBC[4]; +extern const struct WindowTemplate gUnknown_8451ECC[]; +extern const struct PokedexScreenData gUnknown_8451EE4; +extern const struct ScrollArrowsTemplate gUnknown_84520D4; +extern const struct ScrollArrowsTemplate gUnknown_84520E4; + +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(0xC10); + 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; + } +} |