From 2c953c5baf05d12a829cb73664c9a95f660f1548 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 1 Jul 2019 22:10:35 -0400 Subject: [PATCH 01/17] Redo partial decomp of intro (force push) --- asm/intro.s | 702 -------------------------------------- baserom.ips | Bin 2401339 -> 2401107 bytes include/libgcnmultiboot.h | 17 + include/link.h | 2 + ld_script.txt | 1 + src/intro.c | 289 ++++++++++++++++ 6 files changed, 309 insertions(+), 702 deletions(-) create mode 100644 include/libgcnmultiboot.h create mode 100644 src/intro.c diff --git a/asm/intro.s b/asm/intro.s index 24b7bb9b6..99a67a6a5 100644 --- a/asm/intro.s +++ b/asm/intro.s @@ -5,708 +5,6 @@ .text - thumb_func_start sub_80EC5A4 -sub_80EC5A4: @ 80EC5A4 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_80EC5A4 - - thumb_func_start sub_80EC5B8 -sub_80EC5B8: @ 80EC5B8 - push {lr} - bl UpdatePaletteFade - lsls r0, 24 - cmp r0, 0 - bne _080EC5CA - ldr r0, _080EC5D0 @ =sub_80EC870 - bl SetMainCallback2 -_080EC5CA: - pop {r0} - bx r0 - .align 2, 0 -_080EC5D0: .4byte sub_80EC870 - thumb_func_end sub_80EC5B8 - - thumb_func_start load_copyright_graphics -load_copyright_graphics: @ 80EC5D4 - push {r4-r6,lr} - adds r3, r0, 0 - adds r4, r1, 0 - adds r5, r2, 0 - lsls r3, 16 - lsrs r3, 16 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 16 - lsrs r5, 16 - ldr r0, _080EC610 @ =gUnknown_8402280 - movs r6, 0xC0 - lsls r6, 19 - adds r3, r6 - adds r1, r3, 0 - bl LZ77UnCompVram - ldr r0, _080EC614 @ =gUnknown_84024E4 - adds r4, r6 - adds r1, r4, 0 - bl LZ77UnCompVram - ldr r0, _080EC618 @ =gUnknown_8402260 - adds r1, r5, 0 - movs r2, 0x20 - bl LoadPalette - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080EC610: .4byte gUnknown_8402280 -_080EC614: .4byte gUnknown_84024E4 -_080EC618: .4byte gUnknown_8402260 - thumb_func_end load_copyright_graphics - - thumb_func_start SerialCb_CopyrightScreen -SerialCb_CopyrightScreen: @ 80EC61C - push {lr} - ldr r0, _080EC628 @ =gUnknown_203AAD4 - bl GameCubeMultiBoot_HandleSerialInterrupt - pop {r0} - bx r0 - .align 2, 0 -_080EC628: .4byte gUnknown_203AAD4 - thumb_func_end SerialCb_CopyrightScreen - - thumb_func_start sub_80EC62C -sub_80EC62C: @ 80EC62C - push {r4-r6,lr} - sub sp, 0xC - ldr r0, _080EC64C @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r5, r0, r1 - ldrb r4, [r5] - cmp r4, 0x8C - bne _080EC640 - b _080EC778 -_080EC640: - cmp r4, 0x8C - bgt _080EC650 - cmp r4, 0 - beq _080EC65E - b _080EC732 - .align 2, 0 -_080EC64C: .4byte gMain -_080EC650: - cmp r4, 0x8D - bne _080EC656 - b _080EC7A4 -_080EC656: - cmp r4, 0x8E - bne _080EC65C - b _080EC808 -_080EC65C: - b _080EC732 -_080EC65E: - movs r0, 0 - bl SetVBlankCallback - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - movs r1, 0xA0 - lsls r1, 19 - ldr r2, _080EC74C @ =0x00007fff - adds r0, r2, 0 - strh r0, [r1] - movs r0, 0 - movs r1, 0 - bl SetGpuReg - movs r0, 0x10 - movs r1, 0 - bl SetGpuReg - movs r0, 0x12 - movs r1, 0 - bl SetGpuReg - add r0, sp, 0x4 - strh r4, [r0] - ldr r1, _080EC750 @ =0x040000d4 - str r0, [r1] - movs r0, 0xC0 - lsls r0, 19 - str r0, [r1, 0x4] - ldr r0, _080EC754 @ =0x8100c000 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - str r4, [sp, 0x8] - add r0, sp, 0x8 - str r0, [r1] - movs r0, 0xE0 - lsls r0, 19 - str r0, [r1, 0x4] - ldr r0, _080EC758 @ =0x85000100 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - add r0, sp, 0x4 - strh r4, [r0] - str r0, [r1] - ldr r0, _080EC75C @ =0x05000002 - str r0, [r1, 0x4] - ldr r0, _080EC760 @ =0x810001ff - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - bl ResetPaletteFade - movs r1, 0xE0 - lsls r1, 6 - movs r0, 0 - movs r2, 0 - bl load_copyright_graphics - bl ScanlineEffect_Stop - bl ResetTasks - bl ResetSpriteData - bl FreeAllSpritePalettes - movs r0, 0x1 - negs r0, r0 - ldr r1, _080EC764 @ =0x0000ffff - str r1, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - movs r1, 0xE0 - lsls r1, 3 - movs r0, 0x8 - bl SetGpuReg - movs r0, 0x1 - bl EnableInterrupts - ldr r0, _080EC768 @ =sub_80EC5A4 - bl SetVBlankCallback - movs r1, 0xA0 - lsls r1, 1 - movs r0, 0 - bl SetGpuReg - ldr r0, _080EC76C @ =SerialCb_CopyrightScreen - bl SetSerialCallback - ldr r0, _080EC770 @ =gUnknown_203AAD4 - bl GameCubeMultiBoot_Init -_080EC732: - bl UpdatePaletteFade - ldr r0, _080EC774 @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r0, r1 - ldrb r1, [r0] - adds r1, 0x1 - strb r1, [r0] - ldr r0, _080EC770 @ =gUnknown_203AAD4 - bl GameCubeMultiBoot_Main - b _080EC812 - .align 2, 0 -_080EC74C: .4byte 0x00007fff -_080EC750: .4byte 0x040000d4 -_080EC754: .4byte 0x8100c000 -_080EC758: .4byte 0x85000100 -_080EC75C: .4byte 0x05000002 -_080EC760: .4byte 0x810001ff -_080EC764: .4byte 0x0000ffff -_080EC768: .4byte sub_80EC5A4 -_080EC76C: .4byte SerialCb_CopyrightScreen -_080EC770: .4byte gUnknown_203AAD4 -_080EC774: .4byte gMain -_080EC778: - ldr r4, _080EC7A0 @ =gUnknown_203AAD4 - adds r0, r4, 0 - bl GameCubeMultiBoot_Main - ldrb r0, [r4, 0x2] - cmp r0, 0x1 - beq _080EC812 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - b _080EC812 - .align 2, 0 -_080EC7A0: .4byte gUnknown_203AAD4 -_080EC7A4: - bl UpdatePaletteFade - lsls r0, 24 - cmp r0, 0 - bne _080EC812 - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - ldr r5, _080EC7E4 @ =gUnknown_203AAD4 - ldrb r0, [r5, 0x2] - cmp r0, 0 - beq _080EC7F4 - ldrb r0, [r5, 0x2] - cmp r0, 0x2 - bne _080EC7FE - ldr r6, _080EC7E8 @ =0x020000ac - ldr r4, [r6] - ldr r0, _080EC7EC @ =0x65366347 - cmp r4, r0 - bne _080EC7DC - ldr r0, _080EC7F0 @ =gMultiBootProgram_PokemonColosseum_Start - movs r1, 0x80 - lsls r1, 18 - movs r2, 0xA0 - lsls r2, 9 - bl CpuSet - str r4, [r6] -_080EC7DC: - adds r0, r5, 0 - bl GameCubeMultiBoot_ExecuteProgram - b _080EC7FE - .align 2, 0 -_080EC7E4: .4byte gUnknown_203AAD4 -_080EC7E8: .4byte 0x020000ac -_080EC7EC: .4byte 0x65366347 -_080EC7F0: .4byte gMultiBootProgram_PokemonColosseum_Start -_080EC7F4: - bl GameCubeMultiBoot_Quit - ldr r0, _080EC804 @ =SerialCB - bl SetSerialCallback -_080EC7FE: - movs r0, 0 - b _080EC814 - .align 2, 0 -_080EC804: .4byte SerialCB -_080EC808: - bl sub_800B388 - ldr r0, _080EC81C @ =sub_80EC5B8 - bl SetMainCallback2 -_080EC812: - movs r0, 0x1 -_080EC814: - add sp, 0xC - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_080EC81C: .4byte sub_80EC5B8 - thumb_func_end sub_80EC62C - - thumb_func_start c2_copyright_1 -c2_copyright_1: @ 80EC820 - push {lr} - bl sub_80EC62C - lsls r0, 24 - cmp r0, 0 - bne _080EC858 - bl ResetMenuAndMonGlobals - bl Save_ResetSaveCounters - movs r0, 0 - bl Save_LoadGameData - ldr r0, _080EC85C @ =gSaveFileStatus - ldrh r0, [r0] - cmp r0, 0 - beq _080EC846 - cmp r0, 0x2 - bne _080EC84A -_080EC846: - bl Sav2_ClearSetDefault -_080EC84A: - ldr r0, _080EC860 @ =gSaveBlock2Ptr - ldr r0, [r0] - ldrb r0, [r0, 0x15] - lsls r0, 31 - lsrs r0, 31 - bl SetPokemonCryStereo -_080EC858: - pop {r0} - bx r0 - .align 2, 0 -_080EC85C: .4byte gSaveFileStatus -_080EC860: .4byte gSaveBlock2Ptr - thumb_func_end c2_copyright_1 - - thumb_func_start sub_80EC864 -sub_80EC864: @ 80EC864 - push {lr} - bl sub_80EC62C - pop {r0} - bx r0 - thumb_func_end sub_80EC864 - - thumb_func_start sub_80EC870 -sub_80EC870: @ 80EC870 - push {r4,lr} - sub sp, 0xC - ldr r0, _080EC88C @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r0, r1 - ldrb r4, [r0] - cmp r4, 0x1 - beq _080EC944 - cmp r4, 0x1 - bgt _080EC890 - cmp r4, 0 - beq _080EC8A0 - b _080EC894 - .align 2, 0 -_080EC88C: .4byte gMain -_080EC890: - cmp r4, 0x2 - beq _080EC988 -_080EC894: - ldr r0, _080EC928 @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r0, r1 - movs r1, 0 - strb r1, [r0] -_080EC8A0: - movs r0, 0 - bl SetVBlankCallback - movs r0, 0 - movs r1, 0 - bl SetGpuReg - ldr r0, _080EC92C @ =gHeap - movs r1, 0xE0 - lsls r1, 9 - bl InitHeap - bl ResetTasks - bl ResetSpriteData - bl ResetPaletteFade - bl ResetTempTileDataBuffers - bl sub_80ECA00 - add r1, sp, 0x4 - movs r0, 0 - strh r0, [r1] - ldr r1, _080EC930 @ =0x040000d4 - add r0, sp, 0x4 - str r0, [r1] - movs r0, 0xC0 - lsls r0, 19 - str r0, [r1, 0x4] - ldr r0, _080EC934 @ =0x8100c000 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r2, 0 - str r2, [sp, 0x8] - add r0, sp, 0x8 - str r0, [r1] - movs r0, 0xE0 - lsls r0, 19 - str r0, [r1, 0x4] - ldr r0, _080EC938 @ =0x85000100 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - add r0, sp, 0x4 - strh r2, [r0] - str r0, [r1] - movs r0, 0xA0 - lsls r0, 19 - str r0, [r1, 0x4] - ldr r0, _080EC93C @ =0x81000200 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r2, 0x80 - lsls r2, 3 - movs r0, 0 - movs r1, 0 - bl FillPalette - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, _080EC940 @ =gUnknown_840BB80 - movs r0, 0 - movs r2, 0x2 - bl InitBgsFromTemplates - b _080EC9B8 - .align 2, 0 -_080EC928: .4byte gMain -_080EC92C: .4byte gHeap -_080EC930: .4byte 0x040000d4 -_080EC934: .4byte 0x8100c000 -_080EC938: .4byte 0x85000100 -_080EC93C: .4byte 0x81000200 -_080EC940: .4byte gUnknown_840BB80 -_080EC944: - ldr r0, _080EC978 @ =gUnknown_8402630 - movs r1, 0 - movs r2, 0x20 - bl LoadPalette - ldr r1, _080EC97C @ =gUnknown_8402650 - movs r0, 0 - str r0, [sp] - movs r0, 0x3 - movs r2, 0 - movs r3, 0 - bl DecompressAndCopyTileDataToVram - ldr r1, _080EC980 @ =gUnknown_8402668 - str r4, [sp] - movs r0, 0x3 - movs r2, 0 - movs r3, 0 - bl DecompressAndCopyTileDataToVram - ldr r0, _080EC984 @ =gUnknown_840270C - movs r1, 0xD0 - movs r2, 0x20 - bl LoadPalette - b _080EC9B8 - .align 2, 0 -_080EC978: .4byte gUnknown_8402630 -_080EC97C: .4byte gUnknown_8402650 -_080EC980: .4byte gUnknown_8402668 -_080EC984: .4byte gUnknown_840270C -_080EC988: - bl FreeTempTileDataBuffersIfPossible - lsls r0, 24 - cmp r0, 0 - bne _080EC9C6 - bl sub_80ECA70 - movs r0, 0x1 - negs r0, r0 - movs r1, 0x10 - movs r2, 0 - bl BlendPalettes - ldr r0, _080EC9B0 @ =sub_80EC9D4 - bl SetMainCallback2 - ldr r0, _080EC9B4 @ =sub_80EC9EC - bl SetVBlankCallback - b _080EC9C6 - .align 2, 0 -_080EC9B0: .4byte sub_80EC9D4 -_080EC9B4: .4byte sub_80EC9EC -_080EC9B8: - ldr r1, _080EC9D0 @ =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_080EC9C6: - add sp, 0xC - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EC9D0: .4byte gMain - thumb_func_end sub_80EC870 - - thumb_func_start sub_80EC9D4 -sub_80EC9D4: @ 80EC9D4 - push {lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_80EC9D4 - - thumb_func_start sub_80EC9EC -sub_80EC9EC: @ 80EC9EC - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_80EC9EC - - thumb_func_start sub_80ECA00 -sub_80ECA00: @ 80ECA00 - push {lr} - movs r0, 0 - movs r1, 0 - bl SetGpuReg - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - movs r0, 0x52 - movs r1, 0 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0 - bl SetGpuReg - movs r0, 0x10 - movs r1, 0 - bl SetGpuReg - movs r0, 0x12 - movs r1, 0 - bl SetGpuReg - movs r0, 0x14 - movs r1, 0 - bl SetGpuReg - movs r0, 0x16 - movs r1, 0 - bl SetGpuReg - movs r0, 0x18 - movs r1, 0 - bl SetGpuReg - movs r0, 0x1A - movs r1, 0 - bl SetGpuReg - movs r0, 0x1C - movs r1, 0 - bl SetGpuReg - movs r0, 0x1E - movs r1, 0 - bl SetGpuReg - movs r1, 0x82 - lsls r1, 5 - movs r0, 0 - bl SetGpuRegBits - pop {r0} - bx r0 - thumb_func_end sub_80ECA00 - - thumb_func_start sub_80ECA70 -sub_80ECA70: @ 80ECA70 - push {r4,lr} - ldr r0, _080ECA9C @ =0x000028bc - bl Alloc - adds r4, r0, 0 - ldr r1, _080ECAA0 @ =sub_80ECAF0 - bl sub_80ECAA8 - ldr r0, _080ECAA4 @ =sub_80ECAB0 - movs r1, 0x3 - bl CreateTask - strb r0, [r4, 0x5] - ldrb r0, [r4, 0x5] - movs r1, 0 - adds r2, r4, 0 - bl SetWordTaskArg - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080ECA9C: .4byte 0x000028bc -_080ECAA0: .4byte sub_80ECAF0 -_080ECAA4: .4byte sub_80ECAB0 - thumb_func_end sub_80ECA70 - - thumb_func_start sub_80ECAA8 -sub_80ECAA8: @ 80ECAA8 - str r1, [r0] - movs r1, 0 - strb r1, [r0, 0x4] - bx lr - thumb_func_end sub_80ECAA8 - - thumb_func_start sub_80ECAB0 -sub_80ECAB0: @ 80ECAB0 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - movs r1, 0 - bl GetWordTaskArg - adds r4, r0, 0 - ldr r0, _080ECAE8 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0xD - ands r0, r1 - cmp r0, 0 - beq _080ECAD8 - ldr r0, [r4] - ldr r1, _080ECAEC @ =sub_80EDBE8 - cmp r0, r1 - beq _080ECAD8 - adds r0, r4, 0 - bl sub_80ECAA8 -_080ECAD8: - ldr r1, [r4] - adds r0, r4, 0 - bl _call_via_r1 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080ECAE8: .4byte gMain -_080ECAEC: .4byte sub_80EDBE8 - thumb_func_end sub_80ECAB0 - - thumb_func_start sub_80ECAF0 -sub_80ECAF0: @ 80ECAF0 - push {r4,r5,lr} - sub sp, 0xC - adds r5, r0, 0 - ldrb r0, [r5, 0x4] - cmp r0, 0 - beq _080ECB02 - cmp r0, 0x1 - beq _080ECB78 - b _080ECB8A -_080ECB02: - ldr r0, _080ECB68 @ =gUnknown_840BBA8 - bl InitWindows - ldr r0, _080ECB6C @ =gUnknown_840272C - ldr r1, _080ECB70 @ =0x0000043c - adds r4, r5, r1 - adds r1, r4, 0 - bl LZ77UnCompWram - ldr r0, _080ECB74 @ =gUnknown_84028F8 - adds r1, r5, 0 - adds r1, 0x3C - bl LZ77UnCompWram - movs r0, 0x20 - str r0, [sp] - str r0, [sp, 0x4] - movs r0, 0x11 - str r0, [sp, 0x8] - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect - movs r0, 0 - movs r1, 0 - bl FillWindowPixelBuffer - movs r0, 0x90 - str r0, [sp] - movs r0, 0x10 - str r0, [sp, 0x4] - movs r0, 0 - adds r1, r4, 0 - movs r2, 0 - movs r3, 0x28 - bl BlitBitmapToWindow - movs r0, 0 - bl PutWindowTilemap - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - ldrb r0, [r5, 0x4] - adds r0, 0x1 - strb r0, [r5, 0x4] - b _080ECB8A - .align 2, 0 -_080ECB68: .4byte gUnknown_840BBA8 -_080ECB6C: .4byte gUnknown_840272C -_080ECB70: .4byte 0x0000043c -_080ECB74: .4byte gUnknown_84028F8 -_080ECB78: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - cmp r0, 0 - bne _080ECB8A - ldr r1, _080ECB94 @ =sub_80ECB98 - adds r0, r5, 0 - bl sub_80ECAA8 -_080ECB8A: - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080ECB94: .4byte sub_80ECB98 - thumb_func_end sub_80ECAF0 - thumb_func_start sub_80ECB98 sub_80ECB98: @ 80ECB98 push {r4,r5,lr} diff --git a/baserom.ips b/baserom.ips index 95538d30ee2ad5f35f14a38ea56d909065b65ba9..11c3b7f62344f9c74c968ebd2a78fe0e54a4f975 100644 GIT binary patch delta 160 zcmdmeViM!!W0M#gS{PfHT9{i{T3B1yTG(4SS~y#{TDV(yT6kOdTKKmJOpRgQ^8f#K zl~{q||I_Eh2==f#ecAluVY^1GAP@^}*N7GNXJ+)>UXdW|Yu>InLl}rffLIiW#ei5G oh$Vnn5{RXMSQ?0BfLIoY<$zcoh!ucX5r~z5Sb4kR3>7IJ0H1a_BLDyZ delta 392 zcmYk!y-EW?6o%n*W@l$-|0gEvPmE?ao1m>#dV8_ZMp^I*tgJcKtPHcu&KInn`* z8eQQAUg+7r^6fwc5MrnzCjx^85=optionsSound); + } +} + +void sub_80EC864(void) +{ + sub_80EC62C(); +} + +void sub_80EC870(void) +{ + switch (gMain.state) + { + default: + gMain.state = 0; + // fallthrough + case 0: + SetVBlankCallback(NULL); + SetGpuReg(REG_OFFSET_DISPCNT, 0); + InitHeap(gHeap, HEAP_SIZE); + ResetTasks(); + ResetSpriteData(); + ResetPaletteFade(); + ResetTempTileDataBuffers(); + sub_80ECA00(); + DmaFill16(3, 0, VRAM, VRAM_SIZE); + DmaFill32(3, 0, OAM, OAM_SIZE); + DmaFill16(3, 0, PLTT, PLTT_SIZE); + FillPalette(0, 0, 0x400); + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, gUnknown_840BB80, NELEMS(gUnknown_840BB80)); + break; + case 1: + LoadPalette(gUnknown_8402630, 0x00, 0x20); + DecompressAndCopyTileDataToVram(3, gUnknown_8402650, 0, 0, 0); + DecompressAndCopyTileDataToVram(3, gUnknown_8402668, 0, 0, 1); + LoadPalette(gUnknown_840270C, 0xD0, 0x20); + break; + case 2: + if (!FreeTempTileDataBuffersIfPossible()) + { + sub_80ECA70(); + BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK); + SetMainCallback2(sub_80EC9D4); + SetVBlankCallback(sub_80EC9EC); + } + return; + } + gMain.state++; +} + +void sub_80EC9D4(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void sub_80EC9EC(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void sub_80ECA00(void) +{ + SetGpuReg(REG_OFFSET_DISPCNT, 0); + SetGpuReg(REG_OFFSET_BLDCNT, 0); + SetGpuReg(REG_OFFSET_BLDALPHA, 0); + SetGpuReg(REG_OFFSET_BLDY, 0); + SetGpuReg(REG_OFFSET_BG0HOFS, 0); + SetGpuReg(REG_OFFSET_BG0VOFS, 0); + SetGpuReg(REG_OFFSET_BG1HOFS, 0); + SetGpuReg(REG_OFFSET_BG1VOFS, 0); + SetGpuReg(REG_OFFSET_BG2HOFS, 0); + SetGpuReg(REG_OFFSET_BG2VOFS, 0); + SetGpuReg(REG_OFFSET_BG3HOFS, 0); + SetGpuReg(REG_OFFSET_BG3VOFS, 0); + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); +} + +void sub_80ECA70(void) +{ + struct IntroSequenceData * ptr = Alloc(sizeof(struct IntroSequenceData)); + sub_80ECAA8(ptr, sub_80ECAF0); + ptr->field_0005 = CreateTask(sub_80ECAB0, 3); + SetWordTaskArg(ptr->field_0005, 0, (uintptr_t)ptr); +} + +void sub_80ECAA8(struct IntroSequenceData * ptr, void (*cb)(struct IntroSequenceData *)) +{ + ptr->field_0000 = cb; + ptr->field_0004 = 0; +} + +void sub_80ECAB0(u8 taskId) +{ + struct IntroSequenceData * ptr = (void *)GetWordTaskArg(taskId, 0); + if (JOY_NEW(A_BUTTON | START_BUTTON | SELECT_BUTTON) && ptr->field_0000 != sub_80EDBE8) + sub_80ECAA8(ptr, sub_80EDBE8); + ptr->field_0000(ptr); +} + +void sub_80ECAF0(struct IntroSequenceData * this) +{ + switch (this->field_0004) + { + case 0: + InitWindows(gUnknown_840BBA8); + LZ77UnCompWram(gUnknown_840272C, this->field_043C); + LZ77UnCompWram(gUnknown_84028F8, this->field_003C); + FillBgTilemapBufferRect(2, 0x000, 0, 0, 32, 32, 0x11); + FillWindowPixelBuffer(0, 0x00); + BlitBitmapToWindow(0, this->field_043C, 0, 40, 144, 16); + PutWindowTilemap(0); + CopyWindowToVram(0, 3); + this->field_0004++; + break; + case 1: + if (!IsDma3ManagerBusyWithBgCopy()) + sub_80ECAA8(this, sub_80ECB98); + break; + } +} From 4f63b54a6b4e697402e2243e02998b8f2521a717 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 2 Jul 2019 15:30:30 -0400 Subject: [PATCH 02/17] intro: through sub_80ECC3C --- asm/intro.s | 143 ---------------------------------------------------- src/intro.c | 66 +++++++++++++++++++++++- 2 files changed, 65 insertions(+), 144 deletions(-) diff --git a/asm/intro.s b/asm/intro.s index 99a67a6a5..024f65e73 100644 --- a/asm/intro.s +++ b/asm/intro.s @@ -5,149 +5,6 @@ .text - thumb_func_start sub_80ECB98 -sub_80ECB98: @ 80ECB98 - push {r4,r5,lr} - adds r4, r0, 0 - ldrb r5, [r4, 0x4] - cmp r5, 0x1 - beq _080ECBE2 - cmp r5, 0x1 - bgt _080ECBAC - cmp r5, 0 - beq _080ECBB2 - b _080ECC32 -_080ECBAC: - cmp r5, 0x2 - beq _080ECBFC - b _080ECC32 -_080ECBB2: - movs r1, 0x80 - lsls r1, 7 - movs r0, 0 - bl SetGpuRegBits - movs r1, 0xFC - lsls r1, 6 - movs r0, 0x48 - bl SetGpuReg - movs r0, 0x4A - movs r1, 0 - bl SetGpuReg - movs r0, 0x42 - movs r1, 0xF0 - bl SetGpuReg - movs r0, 0x46 - movs r1, 0 - bl SetGpuReg - strh r5, [r4, 0x12] - b _080ECBF4 -_080ECBE2: - movs r0, 0x3 - bl ShowBg - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - movs r2, 0 - bl BlendPalettes -_080ECBF4: - ldrb r0, [r4, 0x4] - adds r0, 0x1 - strb r0, [r4, 0x4] - b _080ECC32 -_080ECBFC: - ldrh r0, [r4, 0x12] - adds r0, 0x8 - strh r0, [r4, 0x12] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x2F - bls _080ECC0E - movs r0, 0x30 - strh r0, [r4, 0x12] -_080ECC0E: - ldrh r0, [r4, 0x12] - movs r1, 0x50 - subs r1, r0 - lsls r1, 8 - adds r0, 0x50 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x46 - bl SetGpuReg - ldrh r0, [r4, 0x12] - cmp r0, 0x30 - bne _080ECC32 - ldr r1, _080ECC38 @ =sub_80ECC3C - adds r0, r4, 0 - bl sub_80ECAA8 -_080ECC32: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080ECC38: .4byte sub_80ECC3C - thumb_func_end sub_80ECB98 - - thumb_func_start sub_80ECC3C -sub_80ECC3C: @ 80ECC3C - push {r4,r5,lr} - adds r4, r0, 0 - ldrb r5, [r4, 0x4] - cmp r5, 0x1 - beq _080ECC68 - cmp r5, 0x1 - bgt _080ECC50 - cmp r5, 0 - beq _080ECC56 - b _080ECC9C -_080ECC50: - cmp r5, 0x2 - beq _080ECC86 - b _080ECC9C -_080ECC56: - ldr r0, _080ECC64 @ =0x00000141 - bl PlaySE - bl sub_80EDC40 - strh r5, [r4, 0x12] - b _080ECC7E - .align 2, 0 -_080ECC64: .4byte 0x00000141 -_080ECC68: - ldrh r0, [r4, 0x12] - adds r0, 0x1 - strh r0, [r4, 0x12] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1E - bne _080ECC9C - bl sub_80EDDF0 - movs r0, 0 - strh r0, [r4, 0x12] -_080ECC7E: - ldrb r0, [r4, 0x4] - adds r0, 0x1 - strb r0, [r4, 0x4] - b _080ECC9C -_080ECC86: - ldrh r0, [r4, 0x12] - adds r0, 0x1 - strh r0, [r4, 0x12] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x5A - bne _080ECC9C - ldr r1, _080ECCA4 @ =sub_80ECCA8 - adds r0, r4, 0 - bl sub_80ECAA8 -_080ECC9C: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080ECCA4: .4byte sub_80ECCA8 - thumb_func_end sub_80ECC3C - thumb_func_start sub_80ECCA8 sub_80ECCA8: @ 80ECCA8 push {r4,r5,lr} diff --git a/src/intro.c b/src/intro.c index 42d2af471..216605be7 100644 --- a/src/intro.c +++ b/src/intro.c @@ -12,14 +12,18 @@ #include "link.h" #include "menu.h" #include "save.h" +#include "sound.h" #include "new_game.h" +#include "constants/songs.h" struct IntroSequenceData { void (*field_0000)(struct IntroSequenceData *); u8 field_0004; u8 field_0005; - u8 filler_0006[0x36]; + u8 filler_0006[0xC]; + u16 field_0012; + u8 filler_0014[0x28]; u8 field_003C[0x400]; u8 field_043C[0x400]; u8 filler_083C[0x2080]; @@ -36,7 +40,11 @@ void sub_80ECAB0(u8 taskId); void sub_80ECAA8(struct IntroSequenceData * ptr, void (*cb)(struct IntroSequenceData *)); void sub_80ECAF0(struct IntroSequenceData * ptr); void sub_80ECB98(struct IntroSequenceData * ptr); +void sub_80ECC3C(struct IntroSequenceData * ptr); +void sub_80ECCA8(struct IntroSequenceData * ptr); void sub_80EDBE8(struct IntroSequenceData * ptr); +void sub_80EDC40(void); +void sub_80EDDF0(void); extern const u32 gMultiBootProgram_PokemonColosseum_Start[]; @@ -287,3 +295,59 @@ void sub_80ECAF0(struct IntroSequenceData * this) break; } } + +void sub_80ECB98(struct IntroSequenceData * this) +{ + switch (this->field_0004) + { + case 0: + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN1_ON); + SetGpuReg(REG_OFFSET_WININ, 0x3F00); + SetGpuReg(REG_OFFSET_WINOUT, 0x0000); + SetGpuReg(REG_OFFSET_WIN1H, 0x00F0); + SetGpuReg(REG_OFFSET_WIN1V, 0x0000); + this->field_0012 = 0; + this->field_0004++; + break; + case 1: + ShowBg(3); + BlendPalettes(0xFFFFFFFF, 0x00, RGB_BLACK); + this->field_0004++; + break; + case 2: + this->field_0012 += 8; + if (this->field_0012 >= 0x30) + this->field_0012 = 0x30; + SetGpuReg(REG_OFFSET_WIN1V, ((0x50 - this->field_0012) << 8) | (0x50 + this->field_0012)); + if (this->field_0012 == 0x30) + sub_80ECAA8(this, sub_80ECC3C); + break; + } +} + +void sub_80ECC3C(struct IntroSequenceData * this) +{ + switch (this->field_0004) + { + case 0: + PlaySE(BGM_FRLG_GAMEFREAK_LOGO); + sub_80EDC40(); + this->field_0012 = 0; + this->field_0004++; + break; + case 1: + this->field_0012++; + if (this->field_0012 == 30) + { + sub_80EDDF0(); + this->field_0012 = 0; + this->field_0004++; + } + break; + case 2: + this->field_0012++; + if (this->field_0012 == 90) + sub_80ECAA8(this, sub_80ECCA8); + break; + } +} From 3b83565a7e49d13a295a7415dc52f68e738bc1cb Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 3 Jul 2019 14:01:03 -0400 Subject: [PATCH 03/17] intro: through sub_80ED140 --- asm/intro.s | 582 ---------------------------------------------------- src/intro.c | 243 +++++++++++++++++++++- 2 files changed, 241 insertions(+), 584 deletions(-) diff --git a/asm/intro.s b/asm/intro.s index 024f65e73..dd561950f 100644 --- a/asm/intro.s +++ b/asm/intro.s @@ -5,588 +5,6 @@ .text - thumb_func_start sub_80ECCA8 -sub_80ECCA8: @ 80ECCA8 - push {r4,r5,lr} - sub sp, 0x8 - adds r4, r0, 0 - ldrb r0, [r4, 0x4] - cmp r0, 0x5 - bhi _080ECD54 - lsls r0, 2 - ldr r1, _080ECCC0 @ =_080ECCC4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080ECCC0: .4byte _080ECCC4 - .align 2, 0 -_080ECCC4: - .4byte _080ECCDC - .4byte _080ECCE6 - .4byte _080ECCF6 - .4byte _080ECD18 - .4byte _080ECD20 - .4byte _080ECD3E -_080ECCDC: - bl sub_80EDED8 - movs r0, 0 - strh r0, [r4, 0x12] - b _080ECD36 -_080ECCE6: - ldrh r0, [r4, 0x12] - adds r0, 0x1 - strh r0, [r4, 0x12] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x27 - bls _080ECD54 - b _080ECD36 -_080ECCF6: - ldr r1, _080ECD14 @ =0x00003f44 - movs r0, 0x50 - bl SetGpuReg - movs r0, 0x30 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - movs r1, 0x10 - movs r2, 0x10 - movs r3, 0 - bl StartBlendTask - b _080ECD36 - .align 2, 0 -_080ECD14: .4byte 0x00003f44 -_080ECD18: - movs r0, 0x2 - bl ShowBg - b _080ECD36 -_080ECD20: - bl IsBlendTaskActive - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _080ECD54 - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - strh r5, [r4, 0x12] -_080ECD36: - ldrb r0, [r4, 0x4] - adds r0, 0x1 - strb r0, [r4, 0x4] - b _080ECD54 -_080ECD3E: - ldrh r0, [r4, 0x12] - adds r0, 0x1 - strh r0, [r4, 0x12] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x32 - bls _080ECD54 - ldr r1, _080ECD5C @ =sub_80ECD60 - adds r0, r4, 0 - bl sub_80ECAA8 -_080ECD54: - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080ECD5C: .4byte sub_80ECD60 - thumb_func_end sub_80ECCA8 - - thumb_func_start sub_80ECD60 -sub_80ECD60: @ 80ECD60 - push {r4-r6,lr} - sub sp, 0x8 - adds r6, r0, 0 - ldrb r0, [r6, 0x4] - cmp r0, 0x7 - bls _080ECD6E - b _080ECE96 -_080ECD6E: - lsls r0, 2 - ldr r1, _080ECD78 @ =_080ECD7C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080ECD78: .4byte _080ECD7C - .align 2, 0 -_080ECD7C: - .4byte _080ECD9C - .4byte _080ECDC4 - .4byte _080ECDCC - .4byte _080ECE10 - .4byte _080ECE26 - .4byte _080ECE52 - .4byte _080ECE64 - .4byte _080ECE78 -_080ECD9C: - ldr r1, _080ECDC0 @ =0x00003f50 - movs r0, 0x50 - bl SetGpuReg - movs r5, 0x10 - str r5, [sp] - movs r4, 0 - str r4, [sp, 0x4] - movs r0, 0 - movs r1, 0x10 - movs r2, 0x10 - movs r3, 0 - bl StartBlendTask - strh r4, [r6, 0x8] - strh r5, [r6, 0xA] - strh r4, [r6, 0x12] - b _080ECE70 - .align 2, 0 -_080ECDC0: .4byte 0x00003f50 -_080ECDC4: - bl sub_80EDF68 - str r0, [r6, 0x14] - b _080ECE70 -_080ECDCC: - bl IsBlendTaskActive - lsls r0, 24 - cmp r0, 0 - bne _080ECE96 - adds r1, r6, 0 - adds r1, 0x3C - movs r0, 0x20 - str r0, [sp] - movs r0, 0x40 - str r0, [sp, 0x4] - movs r0, 0 - movs r2, 0x38 - movs r3, 0x6 - bl BlitBitmapToWindow - ldr r0, _080ECE0C @ =0x0000043c - adds r1, r6, r0 - movs r0, 0x90 - str r0, [sp] - movs r0, 0x10 - str r0, [sp, 0x4] - movs r0, 0 - movs r2, 0 - movs r3, 0x28 - bl BlitBitmapToWindow - movs r0, 0 - movs r1, 0x2 - bl CopyWindowToVram - b _080ECE70 - .align 2, 0 -_080ECE0C: .4byte 0x0000043c -_080ECE10: - bl IsDma3ManagerBusyWithBgCopy - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _080ECE96 - ldr r0, [r6, 0x14] - bl DestroySprite - strh r4, [r6, 0x12] - b _080ECE70 -_080ECE26: - ldrh r0, [r6, 0x12] - adds r0, 0x1 - strh r0, [r6, 0x12] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x5A - bls _080ECE96 - movs r0, 0x50 - movs r1, 0x4 - bl SetGpuRegBits - movs r0, 0x14 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - movs r0, 0x10 - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl StartBlendTask - b _080ECE70 -_080ECE52: - bl IsBlendTaskActive - lsls r0, 24 - cmp r0, 0 - bne _080ECE96 - movs r0, 0x2 - bl HideBg - b _080ECE70 -_080ECE64: - bl ResetSpriteData - bl FreeAllSpritePalettes - movs r0, 0 - strh r0, [r6, 0x12] -_080ECE70: - ldrb r0, [r6, 0x4] - adds r0, 0x1 - strb r0, [r6, 0x4] - b _080ECE96 -_080ECE78: - ldrh r0, [r6, 0x12] - adds r0, 0x1 - strh r0, [r6, 0x12] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x14 - bls _080ECE96 - movs r0, 0x50 - movs r1, 0 - bl SetGpuReg - ldr r1, _080ECEA0 @ =sub_80ECEA4 - adds r0, r6, 0 - bl sub_80ECAA8 -_080ECE96: - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080ECEA0: .4byte sub_80ECEA4 - thumb_func_end sub_80ECD60 - - thumb_func_start sub_80ECEA4 -sub_80ECEA4: @ 80ECEA4 - push {r4,r5,lr} - sub sp, 0x4 - adds r5, r0, 0 - ldrb r0, [r5, 0x4] - cmp r0, 0x5 - bls _080ECEB2 - b _080ED094 -_080ECEB2: - lsls r0, 2 - ldr r1, _080ECEBC @ =_080ECEC0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080ECEBC: .4byte _080ECEC0 - .align 2, 0 -_080ECEC0: - .4byte _080ECED8 - .4byte _080ECF64 - .4byte _080ECFA4 - .4byte _080ECFD8 - .4byte _080ED000 - .4byte _080ED064 -_080ECED8: - movs r0, 0 - bl SetVBlankCallback - ldr r0, _080ECF48 @ =gUnknown_8402D34 - movs r1, 0x10 - movs r2, 0x20 - bl LoadPalette - ldr r0, _080ECF4C @ =gUnknown_84048CC - movs r1, 0x20 - movs r2, 0x20 - bl LoadPalette - ldr r2, _080ECF50 @ =0x00007fff - movs r0, 0x6 - movs r1, 0x10 - bl BlendPalettes - ldr r1, _080ECF54 @ =gUnknown_840BB88 - movs r0, 0 - movs r2, 0x2 - bl InitBgsFromTemplates - ldr r1, _080ECF58 @ =gUnknown_84048EC - movs r0, 0 - str r0, [sp] - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl DecompressAndCopyTileDataToVram - ldr r1, _080ECF5C @ =gUnknown_8404F7C - movs r0, 0x1 - str r0, [sp] - movs r2, 0 - movs r3, 0 - bl DecompressAndCopyTileDataToVram - movs r0, 0x1 - bl ShowBg - movs r0, 0 - bl HideBg - movs r0, 0x2 - bl HideBg - movs r0, 0x3 - bl HideBg - bl sub_80EEBE4 - ldr r0, _080ECF60 @ =sub_80EC9EC - bl SetVBlankCallback - b _080ECFF0 - .align 2, 0 -_080ECF48: .4byte gUnknown_8402D34 -_080ECF4C: .4byte gUnknown_84048CC -_080ECF50: .4byte 0x00007fff -_080ECF54: .4byte gUnknown_840BB88 -_080ECF58: .4byte gUnknown_84048EC -_080ECF5C: .4byte gUnknown_8404F7C -_080ECF60: .4byte sub_80EC9EC -_080ECF64: - bl FreeTempTileDataBuffersIfPossible - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _080ECF72 - b _080ED094 -_080ECF72: - ldr r1, _080ECF9C @ =gUnknown_8402D54 - str r0, [sp] - movs r0, 0 - movs r2, 0 - movs r3, 0 - bl DecompressAndCopyTileDataToVram - ldr r1, _080ECFA0 @ =gUnknown_8403FE8 - movs r0, 0x1 - str r0, [sp] - movs r0, 0 - movs r2, 0 - movs r3, 0 - bl DecompressAndCopyTileDataToVram - bl ResetBgPositions - movs r0, 0x1 - bl ShowBg - b _080ECFF0 - .align 2, 0 -_080ECF9C: .4byte gUnknown_8402D54 -_080ECFA0: .4byte gUnknown_8403FE8 -_080ECFA4: - bl FreeTempTileDataBuffersIfPossible - lsls r0, 24 - cmp r0, 0 - bne _080ED094 - movs r0, 0 - bl ShowBg - ldr r0, _080ECFD0 @ =sub_80ED0AC - movs r1, 0 - bl CreateTask - movs r1, 0x2 - negs r1, r1 - ldr r0, _080ECFD4 @ =0x00007fff - str r0, [sp] - movs r0, 0x6 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - b _080ECFF0 - .align 2, 0 -_080ECFD0: .4byte sub_80ED0AC -_080ECFD4: .4byte 0x00007fff -_080ECFD8: - ldr r0, _080ECFF8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _080ED094 - ldr r0, _080ECFFC @ =0x00000115 - bl m4aSongNumStart - strh r4, [r5, 0x12] -_080ECFF0: - ldrb r0, [r5, 0x4] - adds r0, 0x1 - strb r0, [r5, 0x4] - b _080ED094 - .align 2, 0 -_080ECFF8: .4byte gPaletteFade -_080ECFFC: .4byte 0x00000115 -_080ED000: - ldrh r0, [r5, 0x12] - adds r0, 0x1 - strh r0, [r5, 0x12] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x14 - bne _080ED01A - ldr r0, _080ED054 @ =sub_80ED140 - movs r1, 0 - bl CreateTask - bl sub_80ED118 -_080ED01A: - ldrh r0, [r5, 0x12] - cmp r0, 0x1D - bls _080ED094 - movs r0, 0x2 - negs r0, r0 - ldr r2, _080ED058 @ =0x00007fff - movs r1, 0x10 - bl BlendPalettes - ldr r0, _080ED05C @ =sub_80ED0AC - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - ldr r0, _080ED054 @ =sub_80ED140 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - ldr r1, _080ED060 @ =sub_80ED188 - adds r0, r5, 0 - bl sub_80ECAA8 - b _080ED094 - .align 2, 0 -_080ED054: .4byte sub_80ED140 -_080ED058: .4byte 0x00007fff -_080ED05C: .4byte sub_80ED0AC -_080ED060: .4byte sub_80ED188 -_080ED064: - ldr r0, _080ED09C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080ED094 - ldr r0, _080ED0A0 @ =sub_80ED0AC - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - ldr r0, _080ED0A4 @ =sub_80ED140 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - ldr r1, _080ED0A8 @ =sub_80ED188 - adds r0, r5, 0 - bl sub_80ECAA8 -_080ED094: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080ED09C: .4byte gPaletteFade -_080ED0A0: .4byte sub_80ED0AC -_080ED0A4: .4byte sub_80ED140 -_080ED0A8: .4byte sub_80ED188 - thumb_func_end sub_80ECEA4 - - thumb_func_start sub_80ED0AC -sub_80ED0AC: @ 80ED0AC - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080ED114 @ =gTasks+0x8 - adds r4, r1, r0 - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x5 - ble _080ED0EC - movs r1, 0 - strh r1, [r4] - ldrh r0, [r4, 0x2] - adds r0, 0x1 - strh r0, [r4, 0x2] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x2 - ble _080ED0DE - strh r1, [r4, 0x2] -_080ED0DE: - movs r0, 0x2 - ldrsh r1, [r4, r0] - lsls r1, 15 - movs r0, 0 - movs r2, 0 - bl ChangeBgY -_080ED0EC: - movs r1, 0x4 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080ED10C - movs r1, 0x90 - lsls r1, 1 - adds r0, r1, 0 - ldrh r1, [r4, 0x6] - adds r0, r1 - strh r0, [r4, 0x6] - movs r0, 0x6 - ldrsh r1, [r4, r0] - movs r0, 0 - movs r2, 0x2 - bl ChangeBgY -_080ED10C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080ED114: .4byte gTasks+0x8 - thumb_func_end sub_80ED0AC - - thumb_func_start sub_80ED118 -sub_80ED118: @ 80ED118 - push {lr} - ldr r0, _080ED138 @ =sub_80ED0AC - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080ED13C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r0, 0x1 - strh r0, [r1, 0xC] - pop {r0} - bx r0 - .align 2, 0 -_080ED138: .4byte sub_80ED0AC -_080ED13C: .4byte gTasks - thumb_func_end sub_80ED118 - - thumb_func_start sub_80ED140 -sub_80ED140: @ 80ED140 - push {lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080ED184 @ =gTasks+0x8 - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _080ED17E - movs r0, 0 - strh r0, [r1] - ldrh r2, [r1, 0x2] - movs r3, 0x2 - ldrsh r0, [r1, r3] - cmp r0, 0x1 - bgt _080ED170 - adds r0, r2, 0x1 - strh r0, [r1, 0x2] -_080ED170: - movs r0, 0x2 - ldrsh r1, [r1, r0] - lsls r1, 15 - movs r0, 0x1 - movs r2, 0 - bl ChangeBgY -_080ED17E: - pop {r0} - bx r0 - .align 2, 0 -_080ED184: .4byte gTasks+0x8 - thumb_func_end sub_80ED140 - thumb_func_start sub_80ED188 sub_80ED188: @ 80ED188 push {r4-r7,lr} diff --git a/src/intro.c b/src/intro.c index 216605be7..51fbbac74 100644 --- a/src/intro.c +++ b/src/intro.c @@ -21,9 +21,13 @@ struct IntroSequenceData void (*field_0000)(struct IntroSequenceData *); u8 field_0004; u8 field_0005; - u8 filler_0006[0xC]; + u8 filler_0006[2]; + u16 field_0008; + u16 field_000A; + u8 field_000C[6]; u16 field_0012; - u8 filler_0014[0x28]; + struct Sprite * field_0014; + u8 filler_0018[0x24]; u8 field_003C[0x400]; u8 field_043C[0x400]; u8 filler_083C[0x2080]; @@ -42,9 +46,18 @@ void sub_80ECAF0(struct IntroSequenceData * ptr); void sub_80ECB98(struct IntroSequenceData * ptr); void sub_80ECC3C(struct IntroSequenceData * ptr); void sub_80ECCA8(struct IntroSequenceData * ptr); +void sub_80ECD60(struct IntroSequenceData * ptr); +void sub_80ECEA4(struct IntroSequenceData * ptr); +void sub_80ED0AC(u8 taskId); +void sub_80ED118(void); +void sub_80ED140(u8 taskId); +void sub_80ED188(struct IntroSequenceData * ptr); void sub_80EDBE8(struct IntroSequenceData * ptr); void sub_80EDC40(void); void sub_80EDDF0(void); +void sub_80EDED8(void); +struct Sprite * sub_80EDF68(void); +void sub_80EEBE4(void); extern const u32 gMultiBootProgram_PokemonColosseum_Start[]; @@ -57,10 +70,18 @@ extern const u8 gUnknown_8402668[]; extern const u16 gUnknown_840270C[]; extern const u8 gUnknown_840272C[]; extern const u8 gUnknown_84028F8[]; +extern const u16 gUnknown_8402D34[]; +extern const u8 gUnknown_8402D54[]; +extern const u8 gUnknown_8403FE8[]; +extern const u16 gUnknown_84048CC[]; +extern const u8 gUnknown_84048EC[]; +extern const u8 gUnknown_8404F7C[]; extern const struct BgTemplate gUnknown_840BB80[2]; +extern const struct BgTemplate gUnknown_840BB88[2]; extern const struct WindowTemplate gUnknown_840BBA8[]; + void sub_80EC5A4(void) { LoadOam(); @@ -351,3 +372,221 @@ void sub_80ECC3C(struct IntroSequenceData * this) break; } } + +void sub_80ECCA8(struct IntroSequenceData * this) +{ + switch (this->field_0004) + { + case 0: + sub_80EDED8(); + this->field_0012 = 0; + this->field_0004++; + break; + case 1: + this->field_0012++; + if (this->field_0012 >= 40) + this->field_0004++; + break; + case 2: + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG2 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD); + StartBlendTask(0, 16, 16, 0, 48, 0); + this->field_0004++; + break; + case 3: + ShowBg(2); + this->field_0004++; + break; + case 4: + if (!IsBlendTaskActive()) + { + SetGpuReg(REG_OFFSET_BLDCNT, 0); + this->field_0012 = 0; + this->field_0004++; + } + break; + case 5: + this->field_0012++; + if (this->field_0012 > 50) + sub_80ECAA8(this, sub_80ECD60); + break; + } +} + +void sub_80ECD60(struct IntroSequenceData * this) +{ + switch (this->field_0004) + { + case 0: + SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_OBJ | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD); + StartBlendTask(0, 16, 16, 0, 16, 0); + this->field_0008 = 0; + this->field_000A = 16; + this->field_0012 = 0; + this->field_0004++; + break; + case 1: + this->field_0014 = sub_80EDF68(); + this->field_0004++; + break; + case 2: + if (!IsBlendTaskActive()) + { + BlitBitmapToWindow(0, this->field_003C, 0x38, 0x06, 0x20, 0x40); + BlitBitmapToWindow(0, this->field_043C, 0x00, 0x28, 0x90, 0x10); + CopyWindowToVram(0, 2); + this->field_0004++; + } + break; + case 3: + if (!IsDma3ManagerBusyWithBgCopy()) + { + DestroySprite(this->field_0014); + this->field_0012 = 0; + this->field_0004++; + } + break; + case 4: + this->field_0012++; + if (this->field_0012 > 90) + { + SetGpuRegBits(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG2); + StartBlendTask(16, 0, 0, 16, 20, 0); + this->field_0004++; + } + break; + case 5: + if (!IsBlendTaskActive()) + { + HideBg(2); + this->field_0004++; + } + break; + case 6: + ResetSpriteData(); + FreeAllSpritePalettes(); + this->field_0012 = 0; + this->field_0004++; + break; + case 7: + this->field_0012++; + if (this->field_0012 > 20) + { + SetGpuReg(REG_OFFSET_BLDCNT, 0); + sub_80ECAA8(this, sub_80ECEA4); + } + break; + } +} + +void sub_80ECEA4(struct IntroSequenceData * this) +{ + switch (this->field_0004) + { + case 0: + SetVBlankCallback(NULL); + LoadPalette(gUnknown_8402D34, 0x10, 0x20); + LoadPalette(gUnknown_84048CC, 0x20, 0x20); + BlendPalettes(0x06, 0x10, RGB_WHITE); + InitBgsFromTemplates(0, gUnknown_840BB88, NELEMS(gUnknown_840BB88)); + DecompressAndCopyTileDataToVram(1, gUnknown_84048EC, 0, 0, 0); + DecompressAndCopyTileDataToVram(1, gUnknown_8404F7C, 0, 0, 1); + ShowBg(1); + HideBg(0); + HideBg(2); + HideBg(3); + sub_80EEBE4(); + SetVBlankCallback(sub_80EC9EC); + this->field_0004++; + break; + case 1: + if (!FreeTempTileDataBuffersIfPossible()) + { + DecompressAndCopyTileDataToVram(0, gUnknown_8402D54, 0, 0, 0); + DecompressAndCopyTileDataToVram(0, gUnknown_8403FE8, 0, 0, 1); + ResetBgPositions(); + ShowBg(1); + this->field_0004++; + } + break; + case 2: + if (!FreeTempTileDataBuffersIfPossible()) + { + ShowBg(0); + CreateTask(sub_80ED0AC, 0); + BeginNormalPaletteFade(0x00000006, -2, 16, 0, RGB_WHITE); + this->field_0004++; + } + break; + case 3: + if (!gPaletteFade.active) + { + m4aSongNumStart(BGM_FRLG_OPENING); + this->field_0012 = 0; + this->field_0004++; + } + break; + case 4: + this->field_0012++; + if (this->field_0012 == 20) + { + CreateTask(sub_80ED140, 0); + sub_80ED118(); + } + if (this->field_0012 >= 30) + { + BlendPalettes(-2, 16, RGB_WHITE); + DestroyTask(FindTaskIdByFunc(sub_80ED0AC)); + DestroyTask(FindTaskIdByFunc(sub_80ED140)); + sub_80ECAA8(this, sub_80ED188); + } + break; + case 5: + if (!gPaletteFade.active) + { + DestroyTask(FindTaskIdByFunc(sub_80ED0AC)); + DestroyTask(FindTaskIdByFunc(sub_80ED140)); + sub_80ECAA8(this, sub_80ED188); + } + break; + } +} + +void sub_80ED0AC(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + data[0]++; + if (data[0] > 5) + { + data[0] = 0; + data[1]++; + if (data[1] > 2) + data[1] = 0; + ChangeBgY(0, data[1] << 15, 0); + } + if (data[2]) + { + data[3] += 0x120; + ChangeBgY(0, data[3], 2); + } +} + +void sub_80ED118(void) +{ + u8 taskId = FindTaskIdByFunc(sub_80ED0AC); + gTasks[taskId].data[2] = TRUE; +} + +void sub_80ED140(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + data[0]++; + if (data[0] > 3) + { + data[0] = 0; + if (data[1] < 2) + data[1]++; + ChangeBgY(1, data[1] << 15, 0); + } +} From 6da3a0b53aaab1df071ed75ab7086575d048c4c6 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 3 Jul 2019 15:18:34 -0400 Subject: [PATCH 04/17] intro: through sub_80ED4A0 --- asm/intro.s | 369 ---------------------------------------------------- src/intro.c | 148 ++++++++++++++++++++- 2 files changed, 147 insertions(+), 370 deletions(-) diff --git a/asm/intro.s b/asm/intro.s index dd561950f..ba8795a42 100644 --- a/asm/intro.s +++ b/asm/intro.s @@ -5,375 +5,6 @@ .text - thumb_func_start sub_80ED188 -sub_80ED188: @ 80ED188 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r7, r0, 0 - ldrb r0, [r7, 0x4] - cmp r0, 0x6 - bls _080ED19A - b _080ED3F6 -_080ED19A: - lsls r0, 2 - ldr r1, _080ED1A4 @ =_080ED1A8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080ED1A4: .4byte _080ED1A8 - .align 2, 0 -_080ED1A8: - .4byte _080ED1C4 - .4byte _080ED214 - .4byte _080ED32C - .4byte _080ED350 - .4byte _080ED360 - .4byte _080ED3BC - .4byte _080ED3D2 -_080ED1C4: - movs r0, 0x2 - negs r0, r0 - ldr r2, _080ED204 @ =0x00007fff - movs r1, 0x10 - bl BlendPalettes - ldr r1, _080ED208 @ =gUnknown_840BB90 - movs r0, 0 - movs r2, 0x4 - bl InitBgsFromTemplates - ldr r1, _080ED20C @ =gUnknown_8405414 - movs r0, 0 - str r0, [sp] - movs r0, 0x3 - movs r2, 0 - movs r3, 0 - bl DecompressAndCopyTileDataToVram - ldr r1, _080ED210 @ =gUnknown_8405890 - movs r0, 0x1 - str r0, [sp] - movs r0, 0x3 - movs r2, 0 - movs r3, 0 - bl DecompressAndCopyTileDataToVram - movs r0, 0x3 - bl ShowBg - b _080ED3CA - .align 2, 0 -_080ED204: .4byte 0x00007fff -_080ED208: .4byte gUnknown_840BB90 -_080ED20C: .4byte gUnknown_8405414 -_080ED210: .4byte gUnknown_8405890 -_080ED214: - bl FreeTempTileDataBuffersIfPossible - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0 - beq _080ED222 - b _080ED3F6 -_080ED222: - movs r0, 0 - bl SetVBlankCallback - ldr r0, _080ED2FC @ =gUnknown_84053B4 - movs r1, 0x10 - movs r2, 0x60 - bl LoadPalette - ldr r0, _080ED300 @ =gUnknown_8405DA4 - movs r1, 0x50 - movs r2, 0x20 - bl LoadPalette - ldr r0, _080ED304 @ =gUnknown_8406634 - movs r1, 0x60 - movs r2, 0x20 - bl LoadPalette - movs r5, 0x2 - negs r5, r5 - ldr r0, _080ED308 @ =0x00007fff - mov r8, r0 - adds r0, r5, 0 - movs r1, 0x10 - mov r2, r8 - bl BlendPalettes - ldr r1, _080ED30C @ =gUnknown_8405B28 - str r6, [sp] - movs r0, 0 - movs r2, 0 - movs r3, 0 - bl DecompressAndCopyTileDataToVram - ldr r1, _080ED310 @ =gUnknown_8405CDC - movs r4, 0x1 - str r4, [sp] - movs r0, 0 - movs r2, 0 - movs r3, 0 - bl DecompressAndCopyTileDataToVram - ldr r1, _080ED314 @ =gUnknown_8406654 - str r6, [sp] - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl DecompressAndCopyTileDataToVram - ldr r1, _080ED318 @ =gUnknown_84071D0 - str r4, [sp] - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl DecompressAndCopyTileDataToVram - ldr r1, _080ED31C @ =gUnknown_8405DC4 - str r6, [sp] - movs r0, 0x2 - movs r2, 0 - movs r3, 0 - bl DecompressAndCopyTileDataToVram - ldr r1, _080ED320 @ =gUnknown_840644C - str r4, [sp] - movs r0, 0x2 - movs r2, 0 - movs r3, 0 - bl DecompressAndCopyTileDataToVram - bl ResetBgPositions - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl HideBg - movs r0, 0x2 - bl HideBg - movs r1, 0xE7 - lsls r1, 9 - movs r0, 0x2 - movs r2, 0 - bl ChangeBgY - movs r1, 0xA0 - lsls r1, 6 - movs r0, 0x1 - movs r2, 0 - bl ChangeBgY - ldr r0, _080ED324 @ =sub_80ED40C - movs r1, 0 - bl CreateTask - adds r0, r7, 0 - bl sub_80ED444 - adds r0, r5, 0 - movs r1, 0x10 - mov r2, r8 - bl BlendPalettes - ldr r0, _080ED328 @ =sub_80EC9EC - bl SetVBlankCallback - b _080ED3CA - .align 2, 0 -_080ED2FC: .4byte gUnknown_84053B4 -_080ED300: .4byte gUnknown_8405DA4 -_080ED304: .4byte gUnknown_8406634 -_080ED308: .4byte 0x00007fff -_080ED30C: .4byte gUnknown_8405B28 -_080ED310: .4byte gUnknown_8405CDC -_080ED314: .4byte gUnknown_8406654 -_080ED318: .4byte gUnknown_84071D0 -_080ED31C: .4byte gUnknown_8405DC4 -_080ED320: .4byte gUnknown_840644C -_080ED324: .4byte sub_80ED40C -_080ED328: .4byte sub_80EC9EC -_080ED32C: - bl FreeTempTileDataBuffersIfPossible - lsls r0, 24 - cmp r0, 0 - bne _080ED3F6 - movs r1, 0x2 - negs r1, r1 - ldr r0, _080ED34C @ =0x00007fff - str r0, [sp] - adds r0, r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - b _080ED3CA - .align 2, 0 -_080ED34C: .4byte 0x00007fff -_080ED350: - ldr r0, _080ED35C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - b _080ED3C0 - .align 2, 0 -_080ED35C: .4byte gPaletteFade -_080ED360: - ldrh r0, [r7, 0x12] - adds r0, 0x1 - strh r0, [r7, 0x12] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x3B - bls _080ED3F6 - movs r0, 0 - strh r0, [r7, 0x12] - ldr r0, _080ED3B4 @ =sub_80ED40C - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - adds r0, r7, 0 - bl sub_80ED4A0 - ldr r0, _080ED3B8 @ =sub_80ED428 - movs r1, 0 - bl CreateTask - movs r1, 0x80 - lsls r1, 9 - movs r0, 0x3 - movs r2, 0 - bl ChangeBgY - movs r0, 0 - bl HideBg - movs r0, 0x3 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - b _080ED3CA - .align 2, 0 -_080ED3B4: .4byte sub_80ED40C -_080ED3B8: .4byte sub_80ED428 -_080ED3BC: - bl IsDma3ManagerBusyWithBgCopy -_080ED3C0: - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _080ED3F6 - strh r0, [r7, 0x12] -_080ED3CA: - ldrb r0, [r7, 0x4] - adds r0, 0x1 - strb r0, [r7, 0x4] - b _080ED3F6 -_080ED3D2: - ldrh r0, [r7, 0x12] - adds r0, 0x1 - strh r0, [r7, 0x12] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x3B - bls _080ED3F6 - ldr r0, _080ED404 @ =sub_80ED428 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - ldr r1, _080ED408 @ =sub_80ED4C0 - adds r0, r7, 0 - bl sub_80ECAA8 -_080ED3F6: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080ED404: .4byte sub_80ED428 -_080ED408: .4byte sub_80ED4C0 - thumb_func_end sub_80ED188 - - thumb_func_start sub_80ED40C -sub_80ED40C: @ 80ED40C - push {lr} - movs r0, 0x3 - movs r1, 0xE0 - movs r2, 0x2 - bl ChangeBgX - movs r1, 0x88 - lsls r1, 1 - movs r0, 0 - movs r2, 0x1 - bl ChangeBgX - pop {r0} - bx r0 - thumb_func_end sub_80ED40C - - thumb_func_start sub_80ED428 -sub_80ED428: @ 80ED428 - push {lr} - movs r0, 0x2 - movs r1, 0x20 - movs r2, 0x1 - bl ChangeBgY - movs r0, 0x1 - movs r1, 0x24 - movs r2, 0x2 - bl ChangeBgY - pop {r0} - bx r0 - thumb_func_end sub_80ED428 - - thumb_func_start sub_80ED444 -sub_80ED444: @ 80ED444 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0 - str r0, [r4, 0x1C] - str r0, [r4, 0x20] - ldr r0, _080ED494 @ =gUnknown_840BDA8 - movs r1, 0xA8 - movs r2, 0x50 - movs r3, 0xB - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _080ED46E - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080ED498 @ =gSprites - adds r0, r1 - str r0, [r4, 0x20] -_080ED46E: - ldr r0, _080ED49C @ =gUnknown_840BDC0 - movs r1, 0x48 - movs r2, 0x50 - movs r3, 0xC - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _080ED48E - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080ED498 @ =gSprites - adds r0, r1 - str r0, [r4, 0x1C] -_080ED48E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080ED494: .4byte gUnknown_840BDA8 -_080ED498: .4byte gSprites -_080ED49C: .4byte gUnknown_840BDC0 - thumb_func_end sub_80ED444 - - thumb_func_start sub_80ED4A0 -sub_80ED4A0: @ 80ED4A0 - push {r4,lr} - adds r4, r0, 0 - ldr r0, [r4, 0x1C] - cmp r0, 0 - beq _080ED4AE - bl DestroySprite -_080ED4AE: - ldr r0, [r4, 0x20] - cmp r0, 0 - beq _080ED4B8 - bl DestroySprite -_080ED4B8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80ED4A0 - thumb_func_start sub_80ED4C0 sub_80ED4C0: @ 80ED4C0 push {r4,r5,lr} diff --git a/src/intro.c b/src/intro.c index 51fbbac74..25c2f59eb 100644 --- a/src/intro.c +++ b/src/intro.c @@ -27,7 +27,10 @@ struct IntroSequenceData u8 field_000C[6]; u16 field_0012; struct Sprite * field_0014; - u8 filler_0018[0x24]; + u8 filler_0018[4]; + struct Sprite * field_001C; + struct Sprite * field_0020; + u8 filler_0024[0x18]; u8 field_003C[0x400]; u8 field_043C[0x400]; u8 filler_083C[0x2080]; @@ -52,7 +55,13 @@ void sub_80ED0AC(u8 taskId); void sub_80ED118(void); void sub_80ED140(u8 taskId); void sub_80ED188(struct IntroSequenceData * ptr); +void sub_80ED40C(u8 taskId); +void sub_80ED428(u8 taskId); +void sub_80ED444(struct IntroSequenceData * ptr); +void sub_80ED4A0(struct IntroSequenceData * ptr); +void sub_80ED4C0(struct IntroSequenceData * ptr); void sub_80EDBE8(struct IntroSequenceData * ptr); +void sub_80ED40C(u8 taskId); void sub_80EDC40(void); void sub_80EDDF0(void); void sub_80EDED8(void); @@ -76,11 +85,25 @@ extern const u8 gUnknown_8403FE8[]; extern const u16 gUnknown_84048CC[]; extern const u8 gUnknown_84048EC[]; extern const u8 gUnknown_8404F7C[]; +extern const u16 gUnknown_84053B4[]; +extern const u8 gUnknown_8405414[]; +extern const u8 gUnknown_8405890[]; +extern const u8 gUnknown_8405B28[]; +extern const u8 gUnknown_8405CDC[]; +extern const u16 gUnknown_8405DA4[]; +extern const u8 gUnknown_8405DC4[]; +extern const u8 gUnknown_840644C[]; +extern const u16 gUnknown_8406634[]; +extern const u8 gUnknown_8406654[]; +extern const u8 gUnknown_84071D0[]; extern const struct BgTemplate gUnknown_840BB80[2]; extern const struct BgTemplate gUnknown_840BB88[2]; +extern const struct BgTemplate gUnknown_840BB90[4]; extern const struct WindowTemplate gUnknown_840BBA8[]; +extern const struct SpriteTemplate gUnknown_840BDA8; +extern const struct SpriteTemplate gUnknown_840BDC0; void sub_80EC5A4(void) { @@ -590,3 +613,126 @@ void sub_80ED140(u8 taskId) ChangeBgY(1, data[1] << 15, 0); } } + +void sub_80ED188(struct IntroSequenceData * this) +{ + switch (this->field_0004) + { + case 0: + BlendPalettes(0xFFFFFFFE, 16, RGB_WHITE); + InitBgsFromTemplates(0, gUnknown_840BB90, NELEMS(gUnknown_840BB90)); + DecompressAndCopyTileDataToVram(3, gUnknown_8405414, 0, 0, 0); + DecompressAndCopyTileDataToVram(3, gUnknown_8405890, 0, 0, 1); + ShowBg(3); + this->field_0004++; + break; + case 1: + if (!FreeTempTileDataBuffersIfPossible()) + { + SetVBlankCallback(NULL); + LoadPalette(gUnknown_84053B4, 0x10, 0x60); + LoadPalette(gUnknown_8405DA4, 0x50, 0x20); + LoadPalette(gUnknown_8406634, 0x60, 0x20); + BlendPalettes(0xFFFFFFFE, 16, RGB_WHITE); + DecompressAndCopyTileDataToVram(0, gUnknown_8405B28, 0, 0, 0); + DecompressAndCopyTileDataToVram(0, gUnknown_8405CDC, 0, 0, 1); + DecompressAndCopyTileDataToVram(1, gUnknown_8406654, 0, 0, 0); + DecompressAndCopyTileDataToVram(1, gUnknown_84071D0, 0, 0, 1); + DecompressAndCopyTileDataToVram(2, gUnknown_8405DC4, 0, 0, 0); + DecompressAndCopyTileDataToVram(2, gUnknown_840644C, 0, 0, 1); + ResetBgPositions(); + ShowBg(0); + HideBg(1); + HideBg(2); + ChangeBgY(2, 0x0001CE00, 0); + ChangeBgY(1, 0x00002800, 0); + CreateTask(sub_80ED40C, 0); + sub_80ED444(this); + BlendPalettes(0xFFFFFFFE, 16, RGB_WHITE); + SetVBlankCallback(sub_80EC9EC); + this->field_0004++; + } + break; + case 2: + if (!FreeTempTileDataBuffersIfPossible()) + { + BeginNormalPaletteFade(0xFFFFFFFE, -2, 16, 0, RGB_WHITE); + this->field_0004++; + } + break; + case 3: + if (!gPaletteFade.active) + { + this->field_0012 = 0; + this->field_0004++; + } + break; + case 4: + this->field_0012++; + if (this->field_0012 >= 60) + { + this->field_0012 = 0; + DestroyTask(FindTaskIdByFunc(sub_80ED40C)); + sub_80ED4A0(this); + CreateTask(sub_80ED428, 0); + ChangeBgY(3, 0x00010000, 0); + HideBg(0); + ShowBg(3); + ShowBg(1); + ShowBg(2); + this->field_0004++; + } + break; + case 5: + if (!IsDma3ManagerBusyWithBgCopy()) + { + this->field_0012 = 0; + this->field_0004++; + } + break; + case 6: + this->field_0012++; + if (this->field_0012 >= 60) + { + DestroyTask(FindTaskIdByFunc(sub_80ED428)); + sub_80ECAA8(this, sub_80ED4C0); + } + break; + } +} + +void sub_80ED40C(u8 taskId) +{ + ChangeBgX(3, 0x0E0, 2); + ChangeBgX(0, 0x110, 1); +} + +void sub_80ED428(u8 taskId) +{ + ChangeBgY(2, 0x020, 1); + ChangeBgY(1, 0x024, 2); +} + +void sub_80ED444(struct IntroSequenceData * this) +{ + u8 spriteId; + + this->field_001C = NULL; + this->field_0020 = NULL; + + spriteId = CreateSprite(&gUnknown_840BDA8, 168, 80, 11); + if (spriteId != MAX_SPRITES) + this->field_0020 = &gSprites[spriteId]; + + spriteId = CreateSprite(&gUnknown_840BDC0, 72, 80, 12); + if (spriteId != MAX_SPRITES) + this->field_001C = &gSprites[spriteId]; +} + +void sub_80ED4A0(struct IntroSequenceData * this) +{ + if (this->field_001C != NULL) + DestroySprite(this->field_001C); + if (this->field_0020 != NULL) + DestroySprite(this->field_0020); +} From 6ccb5cc1720657b28ebb929239f6167e71488aa2 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 3 Jul 2019 16:27:56 -0400 Subject: [PATCH 05/17] intro: through sub_80ED818 --- asm/intro.s | 479 -------------------------------------------------- src/intro.c | 180 ++++++++++++++++++- sym_ewram.txt | 9 +- 3 files changed, 179 insertions(+), 489 deletions(-) diff --git a/asm/intro.s b/asm/intro.s index ba8795a42..8e908cebe 100644 --- a/asm/intro.s +++ b/asm/intro.s @@ -5,485 +5,6 @@ .text - thumb_func_start sub_80ED4C0 -sub_80ED4C0: @ 80ED4C0 - push {r4,r5,lr} - sub sp, 0x4 - adds r5, r0, 0 - ldrb r4, [r5, 0x4] - cmp r4, 0x1 - beq _080ED59C - cmp r4, 0x1 - bgt _080ED4D6 - cmp r4, 0 - beq _080ED4E4 - b _080ED68A -_080ED4D6: - cmp r4, 0x2 - bne _080ED4DC - b _080ED5FC -_080ED4DC: - cmp r4, 0x3 - bne _080ED4E2 - b _080ED658 -_080ED4E2: - b _080ED68A -_080ED4E4: - ldr r0, _080ED584 @ =gUnknown_8407430 - movs r1, 0x10 - movs r2, 0x40 - bl LoadPalette - ldr r0, _080ED588 @ =gUnknown_8405DA4 - movs r1, 0x50 - movs r2, 0x20 - bl LoadPalette - movs r0, 0x2 - negs r0, r0 - ldr r2, _080ED58C @ =0x00007fff - movs r1, 0x10 - bl BlendPalettes - ldr r1, _080ED590 @ =gUnknown_840BBA0 - movs r0, 0 - movs r2, 0x2 - bl InitBgsFromTemplates - ldr r1, _080ED594 @ =gUnknown_8407470 - str r4, [sp] - movs r0, 0x1 - movs r2, 0 - movs r3, 0 - bl DecompressAndCopyTileDataToVram - ldr r1, _080ED598 @ =gUnknown_8407A50 - movs r0, 0x1 - str r0, [sp] - movs r2, 0 - movs r3, 0 - bl DecompressAndCopyTileDataToVram - movs r0, 0x1 - bl ShowBg - movs r0, 0 - bl HideBg - movs r0, 0x2 - bl HideBg - movs r0, 0x3 - bl HideBg - bl ResetBgPositions - ldrb r0, [r5, 0x4] - adds r0, 0x1 - strb r0, [r5, 0x4] - movs r1, 0x80 - lsls r1, 6 - movs r0, 0 - bl SetGpuRegBits - movs r0, 0x48 - movs r1, 0x12 - bl SetGpuRegBits - movs r0, 0x48 - movs r1, 0x1 - bl ClearGpuRegBits - movs r0, 0x4A - movs r1, 0 - bl SetGpuRegBits - movs r1, 0x82 - lsls r1, 6 - movs r0, 0x44 - bl SetGpuReg - movs r0, 0x40 - movs r1, 0x78 - bl SetGpuReg - b _080ED68A - .align 2, 0 -_080ED584: .4byte gUnknown_8407430 -_080ED588: .4byte gUnknown_8405DA4 -_080ED58C: .4byte 0x00007fff -_080ED590: .4byte gUnknown_840BBA0 -_080ED594: .4byte gUnknown_8407470 -_080ED598: .4byte gUnknown_8407A50 -_080ED59C: - bl FreeTempTileDataBuffersIfPossible - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _080ED68A - ldr r1, _080ED5EC @ =gUnknown_8407B9C - str r0, [sp] - movs r0, 0 - movs r2, 0 - movs r3, 0 - bl DecompressAndCopyTileDataToVram - ldr r1, _080ED5F0 @ =gUnknown_8408D98 - str r4, [sp] - movs r0, 0 - movs r2, 0 - movs r3, 0 - bl DecompressAndCopyTileDataToVram - ldr r1, _080ED5F4 @ =gUnknown_203AB00 - movs r0, 0x4 - strh r0, [r1] - ldr r1, _080ED5F8 @ =gUnknown_203AB02 - movs r0, 0x34 - strh r0, [r1] - movs r1, 0xC0 - lsls r1, 5 - movs r0, 0 - movs r2, 0 - bl ChangeBgX - movs r1, 0xF8 - lsls r1, 9 - movs r0, 0 - movs r2, 0 - bl ChangeBgY - b _080ED642 - .align 2, 0 -_080ED5EC: .4byte gUnknown_8407B9C -_080ED5F0: .4byte gUnknown_8408D98 -_080ED5F4: .4byte gUnknown_203AB00 -_080ED5F8: .4byte gUnknown_203AB02 -_080ED5FC: - bl FreeTempTileDataBuffersIfPossible - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _080ED68A - movs r0, 0x2 - negs r0, r0 - ldr r2, _080ED64C @ =0x00007fff - movs r1, 0 - bl BlendPalettes - movs r0, 0 - bl ShowBg - ldr r0, _080ED650 @ =sub_80ED714 - movs r1, 0 - bl CreateTask - adds r0, r5, 0 - bl sub_80EE4F8 - ldr r0, [r5, 0x18] - movs r1, 0 - movs r2, 0xB4 - movs r3, 0x34 - bl sub_80EE528 - ldr r0, _080ED654 @ =sub_80EE200 - movs r1, 0 - bl CreateTask - bl sub_80ED6D8 - strh r4, [r5, 0x12] -_080ED642: - ldrb r0, [r5, 0x4] - adds r0, 0x1 - strb r0, [r5, 0x4] - b _080ED68A - .align 2, 0 -_080ED64C: .4byte 0x00007fff -_080ED650: .4byte sub_80ED714 -_080ED654: .4byte sub_80EE200 -_080ED658: - ldrh r0, [r5, 0x12] - adds r0, 0x1 - strh r0, [r5, 0x12] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x10 - bne _080ED66C - adds r0, r5, 0 - bl sub_80ED7D4 -_080ED66C: - adds r0, r5, 0 - bl sub_80EE5C8 - cmp r0, 0 - bne _080ED68A - ldr r0, _080ED694 @ =sub_80EE200 - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - bne _080ED68A - ldr r1, _080ED698 @ =sub_80ED898 - adds r0, r5, 0 - bl sub_80ECAA8 -_080ED68A: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080ED694: .4byte sub_80EE200 -_080ED698: .4byte sub_80ED898 - thumb_func_end sub_80ED4C0 - - thumb_func_start sub_80ED69C -sub_80ED69C: @ 80ED69C - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080ED6C4 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r2, 0x8 - ldrsh r0, [r1, r2] - cmp r0, 0 - bne _080ED6C8 - movs r1, 0x80 - lsls r1, 3 - movs r0, 0x1 - movs r2, 0x2 - bl ChangeBgX - b _080ED6D2 - .align 2, 0 -_080ED6C4: .4byte gTasks -_080ED6C8: - movs r0, 0x1 - movs r1, 0x20 - movs r2, 0x2 - bl ChangeBgX -_080ED6D2: - pop {r0} - bx r0 - thumb_func_end sub_80ED69C - - thumb_func_start sub_80ED6D8 -sub_80ED6D8: @ 80ED6D8 - push {lr} - ldr r0, _080ED6E8 @ =sub_80ED69C - movs r1, 0 - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_080ED6E8: .4byte sub_80ED69C - thumb_func_end sub_80ED6D8 - - thumb_func_start sub_80ED6EC -sub_80ED6EC: @ 80ED6EC - push {lr} - ldr r0, _080ED70C @ =sub_80ED69C - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080ED710 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r0, 0x1 - strh r0, [r1, 0x8] - pop {r0} - bx r0 - .align 2, 0 -_080ED70C: .4byte sub_80ED69C -_080ED710: .4byte gTasks - thumb_func_end sub_80ED6EC - - thumb_func_start sub_80ED714 -sub_80ED714: @ 80ED714 - push {lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080ED75C @ =gTasks+0x8 - adds r2, r1, r0 - movs r0, 0 - ldrsh r1, [r2, r0] - cmp r1, 0 - bne _080ED758 - ldrh r0, [r2, 0x2] - adds r0, 0x1 - strh r0, [r2, 0x2] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1D - ble _080ED758 - strh r1, [r2, 0x2] - ldrh r0, [r2, 0x4] - movs r1, 0x1 - eors r0, r1 - strh r0, [r2, 0x4] - movs r0, 0x4 - ldrsh r1, [r2, r0] - lsls r1, 15 - movs r0, 0xF8 - lsls r0, 9 - adds r1, r0 - movs r0, 0 - movs r2, 0 - bl ChangeBgY -_080ED758: - pop {r0} - bx r0 - .align 2, 0 -_080ED75C: .4byte gTasks+0x8 - thumb_func_end sub_80ED714 - - thumb_func_start sub_80ED760 -sub_80ED760: @ 80ED760 - push {lr} - ldr r0, _080ED780 @ =sub_80ED714 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080ED784 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r0, 0x1 - strh r0, [r1, 0x8] - pop {r0} - bx r0 - .align 2, 0 -_080ED780: .4byte sub_80ED714 -_080ED784: .4byte gTasks - thumb_func_end sub_80ED760 - - thumb_func_start sub_80ED788 -sub_80ED788: @ 80ED788 - push {lr} - ldr r0, _080ED7A8 @ =sub_80ED714 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080ED7AC @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r0, 0 - strh r0, [r1, 0x8] - pop {r0} - bx r0 - .align 2, 0 -_080ED7A8: .4byte sub_80ED714 -_080ED7AC: .4byte gTasks - thumb_func_end sub_80ED788 - - thumb_func_start sub_80ED7B0 -sub_80ED7B0: @ 80ED7B0 - push {lr} - ldr r0, _080ED7CC @ =sub_80ED714 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080ED7D0 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldrb r0, [r1, 0xC] - pop {r1} - bx r1 - .align 2, 0 -_080ED7CC: .4byte sub_80ED714 -_080ED7D0: .4byte gTasks - thumb_func_end sub_80ED7B0 - - thumb_func_start sub_80ED7D4 -sub_80ED7D4: @ 80ED7D4 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080ED800 @ =gUnknown_840BDFC - movs r1, 0x94 - lsls r1, 1 - movs r2, 0x70 - movs r3, 0x7 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _080ED80C - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080ED804 @ =gSprites - adds r0, r1 - str r0, [r4, 0x24] - ldr r1, _080ED808 @ =sub_80ED818 - str r1, [r0, 0x1C] - b _080ED810 - .align 2, 0 -_080ED800: .4byte gUnknown_840BDFC -_080ED804: .4byte gSprites -_080ED808: .4byte sub_80ED818 -_080ED80C: - movs r0, 0 - str r0, [r4, 0x24] -_080ED810: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80ED7D4 - - thumb_func_start sub_80ED818 -sub_80ED818: @ 80ED818 - push {r4,lr} - adds r2, r0, 0 - adds r4, r2, 0 - adds r4, 0x2E - movs r1, 0x2E - ldrsh r0, [r2, r1] - cmp r0, 0x1 - beq _080ED848 - cmp r0, 0x1 - bgt _080ED832 - cmp r0, 0 - beq _080ED838 - b _080ED892 -_080ED832: - cmp r0, 0x2 - beq _080ED866 - b _080ED892 -_080ED838: - ldrh r0, [r2, 0x20] - lsls r0, 5 - strh r0, [r4, 0x2] - movs r0, 0xA0 - strh r0, [r4, 0x4] - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] -_080ED848: - ldrh r0, [r4, 0x2] - ldrh r1, [r4, 0x4] - subs r0, r1 - strh r0, [r4, 0x2] - lsls r0, 16 - asrs r0, 21 - strh r0, [r2, 0x20] - cmp r0, 0x34 - bgt _080ED892 - bl sub_80ED6EC - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - b _080ED892 -_080ED866: - ldrh r0, [r4, 0x2] - subs r0, 0x20 - strh r0, [r4, 0x2] - lsls r0, 16 - asrs r0, 21 - strh r0, [r2, 0x20] - movs r1, 0x20 - negs r1, r1 - cmp r0, r1 - bgt _080ED892 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r3] - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - strh r0, [r2, 0x2E] - adds r0, r2, 0 - bl DestroySprite -_080ED892: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80ED818 - thumb_func_start sub_80ED898 sub_80ED898: @ 80ED898 push {r4,r5,lr} diff --git a/src/intro.c b/src/intro.c index 25c2f59eb..b57b538f0 100644 --- a/src/intro.c +++ b/src/intro.c @@ -27,16 +27,19 @@ struct IntroSequenceData u8 field_000C[6]; u16 field_0012; struct Sprite * field_0014; - u8 filler_0018[4]; + struct Sprite * field_0018; struct Sprite * field_001C; struct Sprite * field_0020; - u8 filler_0024[0x18]; + struct Sprite * field_0024; + u8 filler_0028[0x14]; u8 field_003C[0x400]; u8 field_043C[0x400]; u8 filler_083C[0x2080]; }; // size: 0x28BC EWRAM_DATA struct GcmbStruct gUnknown_203AAD4 = {0}; +EWRAM_DATA u16 gUnknown_203AB00 = 0; +EWRAM_DATA u16 gUnknown_203AB02 = 0; void sub_80EC870(void); void sub_80EC9D4(void); @@ -60,12 +63,21 @@ void sub_80ED428(u8 taskId); void sub_80ED444(struct IntroSequenceData * ptr); void sub_80ED4A0(struct IntroSequenceData * ptr); void sub_80ED4C0(struct IntroSequenceData * ptr); +void sub_80ED6D8(void); +void sub_80ED714(u8 taskId); +void sub_80ED7D4(struct IntroSequenceData * ptr); +void sub_80ED818(struct Sprite * sprite); +void sub_80ED898(struct IntroSequenceData * ptr); void sub_80EDBE8(struct IntroSequenceData * ptr); void sub_80ED40C(u8 taskId); void sub_80EDC40(void); void sub_80EDDF0(void); void sub_80EDED8(void); struct Sprite * sub_80EDF68(void); +void sub_80EE200(u8 taskId); +void sub_80EE4F8(struct IntroSequenceData * ptr); +void sub_80EE528(struct Sprite * sprite, u16 a1, u16 a2, u16 a3); +bool32 sub_80EE5C8(struct IntroSequenceData * ptr); void sub_80EEBE4(void); extern const u32 gMultiBootProgram_PokemonColosseum_Start[]; @@ -96,14 +108,21 @@ extern const u8 gUnknown_840644C[]; extern const u16 gUnknown_8406634[]; extern const u8 gUnknown_8406654[]; extern const u8 gUnknown_84071D0[]; +extern const u16 gUnknown_8407430[]; +extern const u8 gUnknown_8407470[]; +extern const u8 gUnknown_8407A50[]; +extern const u8 gUnknown_8407B9C[]; +extern const u8 gUnknown_8408D98[]; extern const struct BgTemplate gUnknown_840BB80[2]; extern const struct BgTemplate gUnknown_840BB88[2]; extern const struct BgTemplate gUnknown_840BB90[4]; +extern const struct BgTemplate gUnknown_840BBA0[2]; extern const struct WindowTemplate gUnknown_840BBA8[]; extern const struct SpriteTemplate gUnknown_840BDA8; extern const struct SpriteTemplate gUnknown_840BDC0; +extern const struct SpriteTemplate gUnknown_840BDFC; void sub_80EC5A4(void) { @@ -736,3 +755,160 @@ void sub_80ED4A0(struct IntroSequenceData * this) if (this->field_0020 != NULL) DestroySprite(this->field_0020); } + +void sub_80ED4C0(struct IntroSequenceData * this) +{ + switch (this->field_0004) + { + case 0: + LoadPalette(gUnknown_8407430, 0x10, 0x40); + LoadPalette(gUnknown_8405DA4, 0x50, 0x20); + BlendPalettes(0xFFFFFFFE, 16, RGB_WHITE); + InitBgsFromTemplates(0, gUnknown_840BBA0, NELEMS(gUnknown_840BBA0)); + DecompressAndCopyTileDataToVram(1, gUnknown_8407470, 0, 0, 0); + DecompressAndCopyTileDataToVram(1, gUnknown_8407A50, 0, 0, 1); + ShowBg(1); + HideBg(0); + HideBg(2); + HideBg(3); + ResetBgPositions(); + this->field_0004++; + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON); + SetGpuRegBits(REG_OFFSET_WININ, 0x12); + ClearGpuRegBits(REG_OFFSET_WININ, 0x01); + SetGpuRegBits(REG_OFFSET_WINOUT, 0x00); + SetGpuReg(REG_OFFSET_WIN0V, 0x2080); + SetGpuReg(REG_OFFSET_WIN0H, 0x0078); + break; + case 1: + if (!FreeTempTileDataBuffersIfPossible()) + { + DecompressAndCopyTileDataToVram(0, gUnknown_8407B9C, 0, 0, 0); + DecompressAndCopyTileDataToVram(0, gUnknown_8408D98, 0, 0, 1); + gUnknown_203AB00 = 4; + gUnknown_203AB02 = 52; + ChangeBgX(0, 0x00001800, 0); + ChangeBgY(0, 0x0001F000, 0); + this->field_0004++; + } + break; + case 2: + if (!FreeTempTileDataBuffersIfPossible()) + { + BlendPalettes(0xFFFFFFFE, 0, RGB_WHITE); + ShowBg(0); + CreateTask(sub_80ED714, 0); + sub_80EE4F8(this); + sub_80EE528(this->field_0018, 0, 0xB4, 0x34); + CreateTask(sub_80EE200, 0); + sub_80ED6D8(); + this->field_0012 = 0; + this->field_0004++; + } + break; + case 3: + this->field_0012++; + if (this->field_0012 == 16) + sub_80ED7D4(this); + if (!sub_80EE5C8(this) && !FuncIsActiveTask(sub_80EE200)) + sub_80ECAA8(this, sub_80ED898); + break; + } +} + +void sub_80ED69C(u8 taskId) +{ + if (gTasks[taskId].data[0] == 0) + ChangeBgX(1, 0x400, 2); + else + ChangeBgX(1, 0x020, 2); +} + +void sub_80ED6D8(void) +{ + CreateTask(sub_80ED69C, 0); +} + +void sub_80ED6EC(void) +{ + u8 taskId = FindTaskIdByFunc(sub_80ED69C); + gTasks[taskId].data[0] = 1; +} + +void sub_80ED714(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + if (data[0] == 0) + { + data[1]++; + if (data[1] >= 30) + { + data[1] = 0; + data[2] ^= 1; + ChangeBgY(0, (data[2] << 15) + 0x1F000, 0); + } + } +} + +void sub_80ED760(void) +{ + u8 taskId = FindTaskIdByFunc(sub_80ED714); + gTasks[taskId].data[0] = 1; +} + +void sub_80ED788(void) +{ + u8 taskId = FindTaskIdByFunc(sub_80ED714); + gTasks[taskId].data[0] = 0; +} + +u8 sub_80ED7B0(void) +{ + u8 taskId = FindTaskIdByFunc(sub_80ED714); + return gTasks[taskId].data[2]; +} + +void sub_80ED7D4(struct IntroSequenceData * this) +{ + u8 spriteId = CreateSprite(&gUnknown_840BDFC, 296, 112, 7); + if (spriteId != MAX_SPRITES) + { + this->field_0024 = &gSprites[spriteId]; + this->field_0024->callback = sub_80ED818; + } + else + this->field_0024 = NULL; +} + +void sub_80ED818(struct Sprite * sprite) +{ + s16 * data = sprite->data; + + switch (data[0]) + { + case 0: + data[1] = sprite->pos1.x << 5; + data[2] = 160; + data[0]++; + // fallthrough + case 1: + data[1] -= data[2]; + sprite->pos1.x = data[1] >> 5; + if (sprite->pos1.x <= 52) + { + sub_80ED6EC(); + data[0]++; + } + break; + case 2: + data[1] -= 32; + sprite->pos1.x = data[1] >> 5; + if (sprite->pos1.x <= -32) + { + sprite->invisible = TRUE; + sprite->data[0]++; + DestroySprite(sprite); + } + break; + } +} diff --git a/sym_ewram.txt b/sym_ewram.txt index 2c791be78..ec2d2149d 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1112,14 +1112,7 @@ gUnknown_203AAC4: @ 203AAC4 gUnknown_203AAC6: @ 203AAC6 .space 0xE -gUnknown_203AAD4: @ 203AAD4 - .space 0x2C - -gUnknown_203AB00: @ 203AB00 - .space 0x2 - -gUnknown_203AB02: @ 203AB02 - .space 0x2 + .include "src/intro.o" gUnknown_203AB04: @ 203AB04 .space 0x2 From 8bdc814a8f295e35d14c51559e537b922af4a19c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 3 Jul 2019 18:23:57 -0400 Subject: [PATCH 06/17] Dump some intro-related gfx --- .gitignore | 4 +- baserom.ips | Bin 2401107 -> 2372423 bytes data/data_83FECCC.s | 158 +--------------------------- data/intro.s | 187 +++++++++++++++++++++++++++++++++ graphics/intro/unk_8402260.pal | 19 ++++ graphics/intro/unk_8402280.png | Bin 0 -> 554 bytes graphics/intro/unk_84024E4.bin | Bin 0 -> 2048 bytes graphics/intro/unk_8402630.pal | 19 ++++ graphics/intro/unk_8402650.png | Bin 0 -> 81 bytes graphics/intro/unk_8402668.bin | Bin 0 -> 1280 bytes graphics/intro/unk_840270C.pal | 19 ++++ graphics/intro/unk_840272C.png | Bin 0 -> 448 bytes graphics/intro/unk_84028F8.bin | Bin 0 -> 1024 bytes graphics/intro/unk_8402A64.png | Bin 0 -> 198 bytes graphics/intro/unk_8402ADC.png | Bin 0 -> 203 bytes graphics/intro/unk_8402B2C.png | Bin 0 -> 272 bytes graphics/intro/unk_8402CD4.png | Bin 0 -> 157 bytes graphics/intro/unk_8402D34.pal | 19 ++++ graphics/intro/unk_8402D54.png | Bin 0 -> 4239 bytes graphics/intro/unk_8403FE8.bin | Bin 0 -> 4096 bytes graphics/intro/unk_84048CC.pal | 19 ++++ graphics/intro/unk_84048EC.png | Bin 0 -> 1406 bytes graphics/intro/unk_8404F7C.bin | Bin 0 -> 4096 bytes graphics/intro/unk_84053B4.pal | 51 +++++++++ graphics/intro/unk_8405414.png | Bin 0 -> 1049 bytes graphics/intro/unk_8405890.bin | Bin 0 -> 4096 bytes graphics/intro/unk_8405B08.pal | 19 ++++ graphics/intro/unk_8405B28.png | Bin 0 -> 385 bytes graphics/intro/unk_8405CDC.bin | Bin 0 -> 1280 bytes graphics/intro/unk_8405DA4.pal | 19 ++++ graphics/intro/unk_8405DC4.png | Bin 0 -> 1408 bytes graphics/intro/unk_840644C.bin | Bin 0 -> 2048 bytes graphics/intro/unk_8406634.pal | 19 ++++ graphics/intro/unk_8406654.png | Bin 0 -> 2463 bytes graphics/intro/unk_84071D0.bin | Bin 0 -> 2048 bytes graphics/intro/unk_8407430.pal | 35 ++++++ graphics/intro/unk_8407470.png | Bin 0 -> 1355 bytes graphics/intro/unk_8407A50.bin | Bin 0 -> 1280 bytes graphics/intro/unk_8407B9C.png | Bin 0 -> 3631 bytes graphics/intro/unk_8408D98.bin | Bin 0 -> 4096 bytes ld_script.txt | 3 + src/intro.c | 2 +- 42 files changed, 433 insertions(+), 159 deletions(-) create mode 100644 data/intro.s create mode 100644 graphics/intro/unk_8402260.pal create mode 100644 graphics/intro/unk_8402280.png create mode 100644 graphics/intro/unk_84024E4.bin create mode 100644 graphics/intro/unk_8402630.pal create mode 100644 graphics/intro/unk_8402650.png create mode 100644 graphics/intro/unk_8402668.bin create mode 100644 graphics/intro/unk_840270C.pal create mode 100644 graphics/intro/unk_840272C.png create mode 100644 graphics/intro/unk_84028F8.bin create mode 100644 graphics/intro/unk_8402A64.png create mode 100644 graphics/intro/unk_8402ADC.png create mode 100644 graphics/intro/unk_8402B2C.png create mode 100644 graphics/intro/unk_8402CD4.png create mode 100644 graphics/intro/unk_8402D34.pal create mode 100644 graphics/intro/unk_8402D54.png create mode 100644 graphics/intro/unk_8403FE8.bin create mode 100644 graphics/intro/unk_84048CC.pal create mode 100644 graphics/intro/unk_84048EC.png create mode 100644 graphics/intro/unk_8404F7C.bin create mode 100644 graphics/intro/unk_84053B4.pal create mode 100644 graphics/intro/unk_8405414.png create mode 100644 graphics/intro/unk_8405890.bin create mode 100644 graphics/intro/unk_8405B08.pal create mode 100644 graphics/intro/unk_8405B28.png create mode 100644 graphics/intro/unk_8405CDC.bin create mode 100644 graphics/intro/unk_8405DA4.pal create mode 100644 graphics/intro/unk_8405DC4.png create mode 100644 graphics/intro/unk_840644C.bin create mode 100644 graphics/intro/unk_8406634.pal create mode 100644 graphics/intro/unk_8406654.png create mode 100644 graphics/intro/unk_84071D0.bin create mode 100644 graphics/intro/unk_8407430.pal create mode 100644 graphics/intro/unk_8407470.png create mode 100644 graphics/intro/unk_8407A50.bin create mode 100644 graphics/intro/unk_8407B9C.png create mode 100644 graphics/intro/unk_8408D98.bin diff --git a/.gitignore b/.gitignore index e3cb43d69..c85c20759 100644 --- a/.gitignore +++ b/.gitignore @@ -39,8 +39,10 @@ types_*.taghl Thumbs.db build/ .idea/ +cmake-build-* *.DS_Store *.pl *.bak src/data/items.h -tools/br_ips/{br_ips,ips_patch}{,.exe} +tools/br_ips/br_ips +tools/br_ips/ips_patch diff --git a/baserom.ips b/baserom.ips index 11c3b7f62344f9c74c968ebd2a78fe0e54a4f975..ffe2db87bca265ce4ba60c7a5ceb3a14e48bd54c 100644 GIT binary patch delta 150 zcmWN=xedZV07XH0!Q9x~_hADqI47bAax#h__{f1J3%Pr9aJ44MU220o@%P2~^KkJYJRQ@_hU~D*9{U_{$Pve! WaLO6yTyV)1*Nhl*!>!Bg?rr{^$v%Yu delta 27414 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 diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s index d10a7d403..bbd53eca8 100644 --- a/data/data_83FECCC.s +++ b/data/data_83FECCC.s @@ -165,164 +165,8 @@ gUnknown_8402250:: @ 8402250 gUnknown_8402258:: @ 8402258 .incbin "baserom.gba", 0x402258, 0x8 -gUnknown_8402260:: @ 8402260 - .incbin "baserom.gba", 0x402260, 0x20 -gUnknown_8402280:: @ 8402280 - .incbin "baserom.gba", 0x402280, 0x264 - -gUnknown_84024E4:: @ 84024E4 - .incbin "baserom.gba", 0x4024E4, 0x14C - -gUnknown_8402630:: @ 8402630 - .incbin "baserom.gba", 0x402630, 0x20 - -gUnknown_8402650:: @ 8402650 - .incbin "baserom.gba", 0x402650, 0x18 - -gUnknown_8402668:: @ 8402668 - .incbin "baserom.gba", 0x402668, 0xA4 - -gUnknown_840270C:: @ 840270C - .incbin "baserom.gba", 0x40270C, 0x20 - -gUnknown_840272C:: @ 840272C - .incbin "baserom.gba", 0x40272C, 0x1CC - -gUnknown_84028F8:: @ 84028F8 - .incbin "baserom.gba", 0x4028F8, 0x43C - -gUnknown_8402D34:: @ 8402D34 - .incbin "baserom.gba", 0x402D34, 0x20 - -gUnknown_8402D54:: @ 8402D54 - .incbin "baserom.gba", 0x402D54, 0x1294 - -gUnknown_8403FE8:: @ 8403FE8 - .incbin "baserom.gba", 0x403FE8, 0x8E4 - -gUnknown_84048CC:: @ 84048CC - .incbin "baserom.gba", 0x4048CC, 0x20 - -gUnknown_84048EC:: @ 84048EC - .incbin "baserom.gba", 0x4048EC, 0x690 - -gUnknown_8404F7C:: @ 8404F7C - .incbin "baserom.gba", 0x404F7C, 0x438 - -gUnknown_84053B4:: @ 84053B4 - .incbin "baserom.gba", 0x4053B4, 0x60 - -gUnknown_8405414:: @ 8405414 - .incbin "baserom.gba", 0x405414, 0x47C - -gUnknown_8405890:: @ 8405890 - .incbin "baserom.gba", 0x405890, 0x298 - -gUnknown_8405B28:: @ 8405B28 - .incbin "baserom.gba", 0x405B28, 0x1B4 - -gUnknown_8405CDC:: @ 8405CDC - .incbin "baserom.gba", 0x405CDC, 0xC8 - -gUnknown_8405DA4:: @ 8405DA4 - .incbin "baserom.gba", 0x405DA4, 0x20 - -gUnknown_8405DC4:: @ 8405DC4 - .incbin "baserom.gba", 0x405DC4, 0x688 - -gUnknown_840644C:: @ 840644C - .incbin "baserom.gba", 0x40644C, 0x1E8 - -gUnknown_8406634:: @ 8406634 - .incbin "baserom.gba", 0x406634, 0x20 - -gUnknown_8406654:: @ 8406654 - .incbin "baserom.gba", 0x406654, 0xB7C - -gUnknown_84071D0:: @ 84071D0 - .incbin "baserom.gba", 0x4071D0, 0x260 - -gUnknown_8407430:: @ 8407430 - .incbin "baserom.gba", 0x407430, 0x40 - -gUnknown_8407470:: @ 8407470 - .incbin "baserom.gba", 0x407470, 0x5E0 - -gUnknown_8407A50:: @ 8407A50 - .incbin "baserom.gba", 0x407A50, 0x14C - -gUnknown_8407B9C:: @ 8407B9C - .incbin "baserom.gba", 0x407B9C, 0x11FC - -gUnknown_8408D98:: @ 8408D98 - .incbin "baserom.gba", 0x408D98, 0x2DE8 - -gUnknown_840BB80:: @ 840BB80 - .incbin "baserom.gba", 0x40BB80, 0x8 - -gUnknown_840BB88:: @ 840BB88 - .incbin "baserom.gba", 0x40BB88, 0x8 - -gUnknown_840BB90:: @ 840BB90 - .incbin "baserom.gba", 0x40BB90, 0x10 - -gUnknown_840BBA0:: @ 840BBA0 - .incbin "baserom.gba", 0x40BBA0, 0x8 - -gUnknown_840BBA8:: @ 840BBA8 - .incbin "baserom.gba", 0x40BBA8, 0x10 - -gUnknown_840BBB8:: @ 840BBB8 - .incbin "baserom.gba", 0x40BBB8, 0x8 - -gUnknown_840BBC0:: @ 840BBC0 - .incbin "baserom.gba", 0x40BBC0, 0x28 - -gUnknown_840BBE8:: @ 840BBE8 - .incbin "baserom.gba", 0x40BBE8, 0x20 - -gUnknown_840BC08:: @ 840BC08 - .incbin "baserom.gba", 0x40BC08, 0x64 - -gUnknown_840BC6C:: @ 840BC6C - .incbin "baserom.gba", 0x40BC6C, 0x18 - -gUnknown_840BC84:: @ 840BC84 - .incbin "baserom.gba", 0x40BC84, 0x38 - -gUnknown_840BCBC:: @ 840BCBC - .incbin "baserom.gba", 0x40BCBC, 0x20 - -gUnknown_840BCDC:: @ 840BCDC - .incbin "baserom.gba", 0x40BCDC, 0xAC - -gUnknown_840BD88:: @ 840BD88 - .incbin "baserom.gba", 0x40BD88, 0x20 - -gUnknown_840BDA8:: @ 840BDA8 - .incbin "baserom.gba", 0x40BDA8, 0x18 - -gUnknown_840BDC0:: @ 840BDC0 - .incbin "baserom.gba", 0x40BDC0, 0x3C - -gUnknown_840BDFC:: @ 840BDFC - .incbin "baserom.gba", 0x40BDFC, 0x50 - -gUnknown_840BE4C:: @ 840BE4C - .incbin "baserom.gba", 0x40BE4C, 0x40 - -gUnknown_840BE8C:: @ 840BE8C - .incbin "baserom.gba", 0x40BE8C, 0x38 - -gUnknown_840BEC4:: @ 840BEC4 - .incbin "baserom.gba", 0x40BEC4, 0x18 - -gUnknown_840BEDC:: @ 840BEDC - .incbin "baserom.gba", 0x40BEDC, 0x38 - -gUnknown_840BF14:: @ 840BF14 - .incbin "baserom.gba", 0x40BF14, 0x28 + .section .rodata.battle_anim_special gUnknown_840BF3C:: @ 840BF3C .incbin "baserom.gba", 0x40BF3C, 0xC diff --git a/data/intro.s b/data/intro.s new file mode 100644 index 000000000..d28eb8d41 --- /dev/null +++ b/data/intro.s @@ -0,0 +1,187 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + .section .rodata + + .align 2 +gUnknown_8402260:: @ gbapal + .incbin "graphics/intro/unk_8402260.gbapal" + +gUnknown_8402280:: @ 4bpp.lz + .incbin "graphics/intro/unk_8402280.4bpp.lz" + +gUnknown_84024E4:: @ bin.lz + .incbin "graphics/intro/unk_84024E4.bin.lz" + +gUnknown_8402630:: @ gbapal + .incbin "graphics/intro/unk_8402630.gbapal" + +gUnknown_8402650:: @ 4bpp.lz + .incbin "graphics/intro/unk_8402650.4bpp.lz" + +gUnknown_8402668:: @ bin.lz + .incbin "graphics/intro/unk_8402668.bin.lz" + +gUnknown_840270C:: @ gbapal + .incbin "graphics/intro/unk_840270C.gbapal" + +gUnknown_840272C:: @ 4bpp.lz + .incbin "graphics/intro/unk_840272C.4bpp.lz" + +gUnknown_84028F8:: @ bin.lz + .incbin "graphics/intro/unk_84028F8.bin.lz" + +gUnknown_8402A44:: @ gbapal + .incbin "graphics/intro/unk_8402A64.gbapal" + +gUnknown_8402A64:: @ 4bpp.lz + .incbin "graphics/intro/unk_8402A64.4bpp.lz" + +gUnknown_8402ABC:: @ gbapal + .incbin "graphics/intro/unk_8402ADC.gbapal" + +gUnknown_8402ADC:: @ 4bpp.lz + .incbin "graphics/intro/unk_8402ADC.4bpp.lz" + +gUnknown_8402B2C:: @ 4bpp.lz + .incbin "graphics/intro/unk_8402B2C.4bpp.lz" + +gUnknown_8402CD4:: @ 8402BD4 + .incbin "graphics/intro/unk_8402CD4.4bpp.lz" + +gUnknown_8402D34:: @ gbapal + .incbin "graphics/intro/unk_8402D34.gbapal" + +gUnknown_8402D54:: @ 4bpp.lz + .incbin "graphics/intro/unk_8402D54.4bpp.lz" + +gUnknown_8403FE8:: @ bin.lz + .incbin "graphics/intro/unk_8403FE8.bin.lz" + +gUnknown_84048CC:: @ gbapal + .incbin "graphics/intro/unk_84048CC.gbapal" + +gUnknown_84048EC:: @ 4bpp.lz + .incbin "graphics/intro/unk_84048EC.4bpp.lz" + +gUnknown_8404F7C:: @ bin.lz + .incbin "graphics/intro/unk_8404F7C.bin.lz" + +gUnknown_84053B4:: @ gbapal + .incbin "graphics/intro/unk_84053B4.gbapal" + +gUnknown_8405414:: @ 4bpp.lz + .incbin "graphics/intro/unk_8405414.4bpp.lz" + +gUnknown_8405890:: @ bin.lz + .incbin "graphics/intro/unk_8405890.bin.lz" + +gUnknown_8405B08:: @ 8405B08 + .incbin "graphics/intro/unk_8405B08.gbapal" + +gUnknown_8405B28:: @ 4bpp.lz + .incbin "graphics/intro/unk_8405B28.4bpp.lz" + +gUnknown_8405CDC:: @ bin.lz + .incbin "graphics/intro/unk_8405CDC.bin.lz" + +gUnknown_8405DA4:: @ gbapal + .incbin "graphics/intro/unk_8405DA4.gbapal" + +gUnknown_8405DC4:: @ 4bpp.lz + .incbin "graphics/intro/unk_8405DC4.4bpp.lz" + +gUnknown_840644C:: @ bin.lz + .incbin "graphics/intro/unk_840644C.bin.lz" + +gUnknown_8406634:: @ gbapal + .incbin "graphics/intro/unk_8406634.gbapal" + +gUnknown_8406654:: @ 4bpp.lz + .incbin "graphics/intro/unk_8406654.4bpp.lz" + +gUnknown_84071D0:: @ bin.lz + .incbin "graphics/intro/unk_84071D0.bin.lz" + +gUnknown_8407430:: @ gbapal + .incbin "graphics/intro/unk_8407430.gbapal" + +gUnknown_8407470:: @ 4bpp.lz + .incbin "graphics/intro/unk_8407470.4bpp.lz" + +gUnknown_8407A50:: @ bin.lz + .incbin "graphics/intro/unk_8407A50.bin.lz" + +gUnknown_8407B9C:: @ 4bpp.lz + .incbin "graphics/intro/unk_8407B9C.4bpp.lz" + +gUnknown_8408D98:: @ bin.lz + .incbin "graphics/intro/unk_8408D98.bin.lz" + +gUnknown_840926C:: @ 840926C + .incbin "baserom.gba", 0x40926C, 0x2914 + +gUnknown_840BB80:: @ 840BB80 + .incbin "baserom.gba", 0x40BB80, 0x8 + +gUnknown_840BB88:: @ 840BB88 + .incbin "baserom.gba", 0x40BB88, 0x8 + +gUnknown_840BB90:: @ 840BB90 + .incbin "baserom.gba", 0x40BB90, 0x10 + +gUnknown_840BBA0:: @ 840BBA0 + .incbin "baserom.gba", 0x40BBA0, 0x8 + +gUnknown_840BBA8:: @ 840BBA8 + .incbin "baserom.gba", 0x40BBA8, 0x10 + +gUnknown_840BBB8:: @ 840BBB8 + .incbin "baserom.gba", 0x40BBB8, 0x8 + +gUnknown_840BBC0:: @ 840BBC0 + .incbin "baserom.gba", 0x40BBC0, 0x28 + +gUnknown_840BBE8:: @ 840BBE8 + .incbin "baserom.gba", 0x40BBE8, 0x20 + +gUnknown_840BC08:: @ 840BC08 + .incbin "baserom.gba", 0x40BC08, 0x64 + +gUnknown_840BC6C:: @ 840BC6C + .incbin "baserom.gba", 0x40BC6C, 0x18 + +gUnknown_840BC84:: @ 840BC84 + .incbin "baserom.gba", 0x40BC84, 0x38 + +gUnknown_840BCBC:: @ 840BCBC + .incbin "baserom.gba", 0x40BCBC, 0x20 + +gUnknown_840BCDC:: @ 840BCDC + .incbin "baserom.gba", 0x40BCDC, 0xAC + +gUnknown_840BD88:: @ 840BD88 + .incbin "baserom.gba", 0x40BD88, 0x20 + +gUnknown_840BDA8:: @ 840BDA8 + .incbin "baserom.gba", 0x40BDA8, 0x18 + +gUnknown_840BDC0:: @ 840BDC0 + .incbin "baserom.gba", 0x40BDC0, 0x3C + +gUnknown_840BDFC:: @ 840BDFC + .incbin "baserom.gba", 0x40BDFC, 0x50 + +gUnknown_840BE4C:: @ 840BE4C + .incbin "baserom.gba", 0x40BE4C, 0x40 + +gUnknown_840BE8C:: @ 840BE8C + .incbin "baserom.gba", 0x40BE8C, 0x38 + +gUnknown_840BEC4:: @ 840BEC4 + .incbin "baserom.gba", 0x40BEC4, 0x18 + +gUnknown_840BEDC:: @ 840BEDC + .incbin "baserom.gba", 0x40BEDC, 0x38 + +gUnknown_840BF14:: @ 840BF14 + .incbin "baserom.gba", 0x40BF14, 0x28 diff --git a/graphics/intro/unk_8402260.pal b/graphics/intro/unk_8402260.pal new file mode 100644 index 000000000..4219d4394 --- /dev/null +++ b/graphics/intro/unk_8402260.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 32 32 +24 57 57 +49 82 82 +82 106 106 +106 131 131 +139 156 156 +164 180 180 +197 205 205 +222 230 230 +255 255 255 diff --git a/graphics/intro/unk_8402280.png b/graphics/intro/unk_8402280.png new file mode 100644 index 0000000000000000000000000000000000000000..dccf33afabced3cf28a392778330ae93fafc405e GIT binary patch literal 554 zcmV+_0@eMAP)+cBr_WHWw7;B%6I9V2AZNBJmCsyZcgBVkN6V=ESO`35_!gJ| zFrNBeqyrUhZbwL)PVLZGoTg-rnXK)|T7qnGdZ~|ARA=YxfHUZt z&THNp%*1I?#e5~|>=Y{M(*v_NSaF%FxN8(s@E%zND^bz{T;d3b=^zItqDrlwt3-|0jII_>bR|X5wCaY@^hatyLk38WAN2bbif)* s_v<&9mtf~UE^}X{mML$F7b_C|2XyxnxbrLMX#fBK07*qoM6N<$g4g;0w*UYD literal 0 HcmV?d00001 diff --git a/graphics/intro/unk_84024E4.bin b/graphics/intro/unk_84024E4.bin new file mode 100644 index 0000000000000000000000000000000000000000..2e48c59b40b87ff480dc9612ead5b8527322c042 GIT binary patch literal 2048 zcmeH{#}0!q5JaB|B%y^QKeepkzo{$hQMeD3{(gV?b3sZ0RSkt13>@) literal 0 HcmV?d00001 diff --git a/graphics/intro/unk_840270C.pal b/graphics/intro/unk_840270C.pal new file mode 100644 index 000000000..619aee6a0 --- /dev/null +++ b/graphics/intro/unk_840270C.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +24 41 74 +0 0 0 +139 123 16 +189 172 16 +131 164 65 +148 230 49 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +222 222 222 +24 41 74 +82 82 82 +180 180 180 +255 255 255 diff --git a/graphics/intro/unk_840272C.png b/graphics/intro/unk_840272C.png new file mode 100644 index 0000000000000000000000000000000000000000..d84885c6ac6e27cdd89a4208d90b8bf474bff007 GIT binary patch literal 448 zcmV;x0YCnUP){hvVc!^LWpVaqsQyhD@53iq(F*`E)YN=05NH$Ot{kllSePc zKQT~V7qE2S{s7vn=O8;ERlwFd?=;{E$;;o6HS`6C#9#-J3OQtegfR+;V*w55HMTQg z<>9JEZU#D_**<9D`Bb9eU717b*YHJOqJ!NOHR+(DOg$G}AQYZSB6I2jVPJ~Q{ncvF zR+%rD^^(mbt25lBPZu|HgaUQ59@*er>qSE!HU?c3x+K$Ob4e_Bn?0p%)t)Z*y;OQg z>|yoncE^3wUBti>6Q@|Cl16qZo$r=a)*R&EU>nVM0QD literal 0 HcmV?d00001 diff --git a/graphics/intro/unk_8402A64.png b/graphics/intro/unk_8402A64.png new file mode 100644 index 0000000000000000000000000000000000000000..79784c7c58224048c20c3c91394a23a2d7b92928 GIT binary patch literal 198 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDU1qli;C@3%(8ZtOKG6V%N zBqcEv7c(?Bb4;1Sv1AFymMt7dk8)hS%JJ+O$N&EV7n@Qh0rfDJ1o;IsI6S+N2IRPS zx;Tb#%uG&5c#x6M!0_&Wfg3aP={kkx$N$Cq{wf4c`|t39^%z6e2ZoFLB_(z_e)-Su q!Lvie$8Vo0&m503=G`umXp_Q>iZ8gkHOQ`&t;ucLK6Vl)=db&7d^Ww;j&Oc5objcR9dRz_lQ^-~xm2%>xX9hfBE^btk{S nD=Sdkpd>KaF>6QSu7+6*r}%_@3z&I>L3Vk%`njxgN@xNAcdtKV literal 0 HcmV?d00001 diff --git a/graphics/intro/unk_8402B2C.png b/graphics/intro/unk_8402B2C.png new file mode 100644 index 0000000000000000000000000000000000000000..791cb0e47669dc4345ed41302de5d75fb650b6b2 GIT binary patch literal 272 zcmV+r0q_2aP)Upvtxl zd~CDAOkV`{byAPRy@cQ@4FtUii~@U*DL4mB$}YD93_J!71IvP*1G>=~09PrfXoXA^ zw^|G(Rkx;C@*q?AU|%dp?t|P|_+#LSLcjY6Y;3cK3dWTwXlhyM6xckMV5~ig69AXz z|6x8VhzFTcpd2JA*<~z`LD<1Bpu<38aOQw35NP4+FuWk+^RcE_@ZiVNq-2+{G4KG8 W_pODFn@aNl0000vM$n)F=}Y;WQ?2kL%`FcljU!YkkD^kA-B&58d{HMIfrjrx_GHl z;+2cFezD=R27I literal 0 HcmV?d00001 diff --git a/graphics/intro/unk_8402D34.pal b/graphics/intro/unk_8402D34.pal new file mode 100644 index 000000000..4be93ec3e --- /dev/null +++ b/graphics/intro/unk_8402D34.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +115 197 106 +41 164 8 +82 180 65 +139 222 131 +98 197 82 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +16 139 98 +16 115 98 +24 90 90 +32 74 90 +32 65 82 diff --git a/graphics/intro/unk_8402D54.png b/graphics/intro/unk_8402D54.png new file mode 100644 index 0000000000000000000000000000000000000000..0f487f0bd37f2a51ea56f2c5f2f8b393ebe4e777 GIT binary patch literal 4239 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 literal 0 HcmV?d00001 diff --git a/graphics/intro/unk_8403FE8.bin b/graphics/intro/unk_8403FE8.bin new file mode 100644 index 0000000000000000000000000000000000000000..c81ca17d13d735f55909f02611ed0118846dc82f GIT binary patch literal 4096 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 literal 0 HcmV?d00001 diff --git a/graphics/intro/unk_84053B4.pal b/graphics/intro/unk_84053B4.pal new file mode 100644 index 000000000..3567f4cff --- /dev/null +++ b/graphics/intro/unk_84053B4.pal @@ -0,0 +1,51 @@ +JASC-PAL +0100 +48 +0 0 0 +131 238 115 +82 189 74 +57 164 57 +115 213 98 +16 123 16 +164 255 131 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 148 0 +164 222 98 +0 0 0 +82 98 115 +98 189 123 +139 156 172 +65 139 98 +238 246 246 +106 172 57 +189 189 213 +148 213 82 +106 180 41 +164 131 41 +115 98 49 +82 74 57 +222 222 230 +32 65 90 +24 115 65 +0 0 0 +156 230 156 +131 205 148 +106 180 131 +65 139 98 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 diff --git a/graphics/intro/unk_8405414.png b/graphics/intro/unk_8405414.png new file mode 100644 index 0000000000000000000000000000000000000000..254ec3b06f9633c4b65950e00123a39c74dcd67e GIT binary patch literal 1049 zcmV+!1m^pRP)zya2g}FIIm1dAkCriap~=Rgb_j2HWJ(2I$Ic{W--LL^`$WL z0o3Rkv0Ios-F|{3aJ}QNko=#~o4uBoB?JEPjOUr>rV6yttaUjWm!9=cVCM(z57axvA500 zCct`4!m?6WX`2&`$<|k6>U7`Q)V&^Sx}MmY-r8EzR0FoHSJYYR??~%2L3)WIHJ7HZ z02qRPLws_CH3inF${`1E3bYy1_kjLG8n~pd0ebc98NDJbz@v8zeJ&DFG^QWl1J^&O;id+il{!k`Zrxs_ow0wSXQ^@=q$!Xi9=4TyL(t^I1eWNb^Yy4D2e zmQBWFW$P{yMH9NuAoga1l=t_5ZFg^}(}^4!cWxc(My^AXJ0yxEaL14g2L%$k0;Y^5 z4&dCjBRXH=kbmf)s`Ck|T1ki)RY;|j)EY8IHHHHgQ38FJ+#JYJqDQiV)3dH{f@rXJ z(C;q(#Gua@x%C%DBbqfmsld|{W94#w$*o>h!2@hIn>*TWw=H_P{nBFR2aq{rrKExD z?t?p*jL8{-t|K7h2WD}Ow6>~#jfkg=!Dv)tSYQC0!sMW$fLmfHE4VI0J|gS`{DVP% zW8@Y(-!`ID@`SCE(&`zV3+u(j?Buwx&OT}-574UNa)X7EvJdoY$UQu*-xjq75H`oI z&XPtsh6SV}#UAmvldX5#tfg1!w^NZxMb z0uJ97gCF_QcrzeWGaxWf3x-!c=hJ-*O0-7w>&-8Vog0Ds;SvmkfJXBBkVZexfjRQ_ zUFS95#Mk6V=M7^{GdY{n;?3{7?TZ&T7bH+QJ?H-vBM2BCw;C{b)#uaqSxNt?C+Jsb zScTw);%Hw%5aFp7Q_XgZ0W?TXLc{%E4s-{hVu()QXeJ{v`XjVw6 z81V5-6~9$K!GA!UKcNF>Us0@hRVjWmv4P(Z+5DIAju<<9_^Bj0@beK5xmEE&@pB}H z^>I8dP386Z1&k!MbBtvKh*jAKEL@kS&f^?0ca-opKi>EA%lZ^2GHUpyNLc>?=s$IT TJIxvg00000NkvXXu0mjfFRbv^ literal 0 HcmV?d00001 diff --git a/graphics/intro/unk_8405890.bin b/graphics/intro/unk_8405890.bin new file mode 100644 index 0000000000000000000000000000000000000000..aea2053b37cd1fe708f85c2106853244003da7d3 GIT binary patch literal 4096 zcmeH{MG^ur5C9iQj@c6+NQf{IqQrk=z>pDRCT!Ru^@P%+p!8@cJ$gzHv#;N7Zwr`Rz;i9OfGuDPm|4K=-`{R; GdVwG0#?HL} literal 0 HcmV?d00001 diff --git a/graphics/intro/unk_8405B08.pal b/graphics/intro/unk_8405B08.pal new file mode 100644 index 000000000..43cc9d949 --- /dev/null +++ b/graphics/intro/unk_8405B08.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +131 238 115 +82 189 74 +57 164 57 +115 213 98 +16 123 16 +164 255 131 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 0 255 +255 148 0 +164 222 98 diff --git a/graphics/intro/unk_8405B28.png b/graphics/intro/unk_8405B28.png new file mode 100644 index 0000000000000000000000000000000000000000..45400d46d36d4f8741908b5e19b3a44e93238278 GIT binary patch literal 385 zcmV-{0e=38P)Yaz|mNm81b3yix!RxDOgH&wHXdN^HfQ6H}lQOAA$ GZ{7jO{|rF@ literal 0 HcmV?d00001 diff --git a/graphics/intro/unk_8405DA4.pal b/graphics/intro/unk_8405DA4.pal new file mode 100644 index 000000000..79d568984 --- /dev/null +++ b/graphics/intro/unk_8405DA4.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +197 222 205 +255 255 255 +222 222 222 +123 123 123 +255 0 255 +255 0 255 +255 0 255 +65 41 74 +255 180 123 +238 98 74 +205 57 32 +197 131 180 +164 98 148 +131 65 123 +90 57 90 +16 16 16 diff --git a/graphics/intro/unk_8405DC4.png b/graphics/intro/unk_8405DC4.png new file mode 100644 index 0000000000000000000000000000000000000000..8ae6ba691fff2705e713ba057eefc57c514a4df8 GIT binary patch literal 1408 zcmV-`1%LX9P)5!UosGThw%5zF+d88ISe_oh)}SX)zYicm zilH2(TKonAfd}Awe*ih+CqD!$DbUp-cGDU;uDVW+31K(gd~iyXpqLEPTBAfdV}8A4 zp)8&C*_5~;IuF?IB*7jQ*UgCE+~NhHu>*dVgngVNtD0!jfQ+aw6JoxsfCQr)<~PIbXO%TXF`+(Gjk4!zh35p_Y5HO;HAE{sEMpe3*n&`q!* z)`WA9F_{1$VCX2I4WKE=w1W3?D-gD zYZ6h(y6XMb(r+8ITDCT9Iq7~J)rI4nh)p%XRAOEHF6XjL*cwE%A^LpB)lH-ck*oHV8^YPC0&PfsGl^IdlUy zZKydVYtt2dxkbibZKbWZTdD8vw}OSYlG7=%uRf?l3B51{^hy|dpWe*#PmBJTTm%XI z!77iFA6>l?mI79(pQfeRc)?6N9KUUYXWF4OFUwR@@%oN`ub8H_)Lf|E5wBRcIqWF* z?^jg(-GGOCx!O_^aHy`B5mW42t&H49s7+g>lWgg{Z8BfHChq1tnCvFBd~IMSYXqt1>)eesp1oZzg>#@uqx1>2&QtZIZ=g1gB7 zwKYn!P3gB|QgFd^LHqvd(7ZJw!bV!3R>J=45@z;X?rZH(1z<1c!(m4p#C#-bq9M=; zd?e~;Z-tZ>B(J<2BnA#o#6i9WEakcTJ?{5=`T9y6UiXXVb-yQ$8-WkkK!H~AelK$U zw1=q)cEID#JMW1FaOZ&+K+=Oxh$aGb#6zPJ>T*D-lqfYvi3_yK_Q0a5N^3VZVAdc%289l#sdMtlf62w_!t zWjK#51=1Nr0YYSxzMTHm=jUqgeHEg3^!c097HY&WZ92|O3dO<hj*8gnq4Tzub4x-ng>IOlnn$=pB&5l)~SazED_ zP@~wnYn8rLmgvj#3w?eevViEK86tfcp-?E63^az23Z^DAvO!6uLhDp}2Y2YBLlj^~ z47o6RaL_B|HfTPb`f_#{>$7y>1sd!jk<;_Z=@MsjkDcu_8a8=GwQP{s@*yV8SwU2Pj439GRj6VBZxa1PSX)XzV?}aSNkT?+8o*O5Zt@|Gr=iytDs6ZP4 O0000@}MZasSS={I1|P|OL#MvNLWZo;G~(`L+?i`maxuxQD$6|2^) z+rVbb{;w_DcI?`-@4%s>nC-{gJ@(IuQ)kYDx$xg*DF2ah707EhZr!=}5ZXU_^8Be@ Vym|}mzy1%#H;6Y7Z{Yhi@D3*ZT3G-9 literal 0 HcmV?d00001 diff --git a/graphics/intro/unk_8406634.pal b/graphics/intro/unk_8406634.pal new file mode 100644 index 000000000..8e13fe902 --- /dev/null +++ b/graphics/intro/unk_8406634.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 123 41 +65 148 90 +49 115 74 +106 57 98 +49 115 98 +82 205 156 +49 164 115 +255 255 255 +106 189 115 +90 41 82 +222 180 205 +189 131 189 +139 90 148 +205 205 222 +131 131 131 +16 16 16 diff --git a/graphics/intro/unk_8406654.png b/graphics/intro/unk_8406654.png new file mode 100644 index 0000000000000000000000000000000000000000..4c6c06681e4e7151367cba54ffd2b7e5a702e527 GIT binary patch literal 2463 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 literal 0 HcmV?d00001 diff --git a/graphics/intro/unk_8407430.pal b/graphics/intro/unk_8407430.pal new file mode 100644 index 000000000..5c34c44c8 --- /dev/null +++ b/graphics/intro/unk_8407430.pal @@ -0,0 +1,35 @@ +JASC-PAL +0100 +32 +0 0 0 +82 98 115 +98 189 123 +139 156 172 +65 139 98 +238 246 246 +106 172 57 +189 189 213 +148 213 82 +106 180 41 +164 131 41 +115 98 49 +82 74 57 +222 222 230 +32 65 90 +24 115 65 +0 0 0 +164 238 139 +57 148 57 +131 213 115 +156 230 156 +131 205 148 +106 180 131 +65 139 98 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +255 0 0 diff --git a/graphics/intro/unk_8407470.png b/graphics/intro/unk_8407470.png new file mode 100644 index 0000000000000000000000000000000000000000..809c259bfab0dc5ff383208f84602c76d2c9b633 GIT binary patch literal 1355 zcmV-R1+@B!P)V@EXL=EJ>+iuFSOq`vn#D7*)bjP$4@&m?|oKyLfa2(VyumM-YnMZrT9wSMR)Z)xZ zo_;-A?e>0-7VsD$Ra@;=jyBL@?7Oze;W!LepyU$v?kTi{XvI=6O>UQn9;qwf^oq(S z!=S+Y)P}1Rb1Riw9;@&`lds5J;UPf~nDiQER8U+9N(rnFYoz5Uc{*cNGZq;KMXGte zrN(Mm0Nc9~@j8k~FNrFpk>(b{s`49%mrGG;1!zJvwg0wF^z_Z~Hl1`2-cYyOJz#VV zw7KjhH2D-52aL`;b13Yv>H-enG8`0oaxkKAyRvJ{wddY~?G*TlP3Rr-ZLo6Y3wu8< z0p@b4ZLq%vP=LTO=2`$M0LOmG3SN@!+OHTV>kaqx-5U}fcH;?eiDWF=79*jJEfNKdIR%J^FN|Pq#**R#PMfg9#!v%#FwR`^rQXz1eeH`4ygf=Y95Etr@`f5_6hC1v~edl$9c8+?Aj`|Hn>DQ-3-+guUi6$SAucyZU zkW$YDsWC(=(ZuY*kPi{unlSo zy%!$=>kNC3J?t<%pu>@esI!Qqq^<-y-bj#?yzSCsNRK)UX@D6BJo4s_{Q~5%jr1CF z#L)RV4DLmZP6vSIR)K1petY-ph?PptQh?>cT!8ySm)gIa04Jz1n!7~uDz*A!_xOZH zuih`Tpd_!-^LUk#$9ei1dOIF3m1RgzuY7@G`PP`9&xy8ZFCl9HGXM#R>15$u8`mZY zP3yyNXxdMnQ<~N=L=3q%xo!06l!Rq*Z&KrHh3l+7{G9fCWTn#`dfiZp1`232)P(9| z^*y4UGpg5zHudUfHth^?$4@xv@5q2hhBW}DifjlZdy2XCfH6jb!AICf{pD&nq>g}z z3k>H-T-Pl*tiT?FJN6vB%QUoOn<-VDp9i?bQPOGFCU{<1hvv!EoUd21xgG@LFunKP zyT|3H>ameJY)o(cIFGa7;JX~%Qx~bU!`L8qq$*)Cjy+5s6xw)y*vzyQP8Mnt#7&b2)51 zw+xZPDNx>~5b#5vWCZvTt^pz5$$q%Hr@o|6a<7zlcZZ>dzh>|CwTNegnBilbjG~os zKJuZqL>7#Te1m9JALnCf(&+PZEaeN)jRc`A)`19LGwZw&8ic%}h^P4>@FyDmfo7r+ z+FBU7VZ_^Hu=1Ig1Dk_jfjh>9cP99s@b6VsLYNo7SAoy!{XDvR+<(WnNq>UwwW$CA N002ovPDHLkV1gZ@ma_l= literal 0 HcmV?d00001 diff --git a/graphics/intro/unk_8407A50.bin b/graphics/intro/unk_8407A50.bin new file mode 100644 index 0000000000000000000000000000000000000000..6a70c1dc0b10e8dc8b128106401e11971434d796 GIT binary patch literal 1280 zcmd_p$2x-n6a>&8(c2LrdJ-iFDTrPoN}_k(|512_`&njYbr!RnBDD8qSD$_Z zqMnd8DPzjCtQk=kEL*W^P0_jyQSaEbr*7YYLr0=+x^nHtt(G>T9yDawh*4w4|MpSO znlo>~q9r+bQEw{QvaPJ5swV1VCr+I?ccI}@)OYSZc=Y7ii@4sr`|#<@w;yr6=Kt5u Iet(ku0wnEU#Q*>R literal 0 HcmV?d00001 diff --git a/graphics/intro/unk_8407B9C.png b/graphics/intro/unk_8407B9C.png new file mode 100644 index 0000000000000000000000000000000000000000..75528b3b60e7a38d5b18109e008b114207d43a18 GIT binary patch literal 3631 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 B{^I}u literal 0 HcmV?d00001 diff --git a/graphics/intro/unk_8408D98.bin b/graphics/intro/unk_8408D98.bin new file mode 100644 index 0000000000000000000000000000000000000000..6e02db72d01f9684459bcc4fb082f0ba55186f92 GIT binary patch literal 4096 zcmeI!b(9uW9LDikx@%cpnkAN6x*L{`1-=iv3(K;El%RkJ7=)D4VG>FxVUh-+gc72p ziXup=+5)1TONcT1SmJ2!s}97|(d_T_{@(5LXO>46WmPt1cUK-c z{B!WBp~|T+#L-lVic=5wO0q15O4M!6-R=vI_ZA@gYR8(BR}M$JK8_j zv7QZV%hr#Q`@{KXm0@;B$)8}z(E zdt7j%|KVRQ`fu-~UEq=_;WAhFkE^%&YbNj3p+b~GDV0j8b^RM4jd2f1t8_|#!(>oK zWitBYnsEQO;AbF#P9)NqE_8MOd^aATyJ-dVpeMcP&4cuzFAwpssR17S8Nee9JAEkEOJ-f?zG n(B5My%UI3|R`RY(c+Vh{R_ObDz$#y@W({l2KKON>+{pg{x=A0L literal 0 HcmV?d00001 diff --git a/ld_script.txt b/ld_script.txt index f2f738c84..762ec2710 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -419,6 +419,9 @@ SECTIONS { data/data_83F5738.o(.rodata); src/save.o(.rodata); data/data_83FECCC.o(.rodata); + src/intro.o(.rodata); + data/intro.o(.rodata); + data/data_83FECCC.o(.rodata.battle_anim_special); data/strings.o(.rodata); data/data_83FECCC.o(.rodata.841EE44); src/new_menu_helpers.o(.rodata); diff --git a/src/intro.c b/src/intro.c index b57b538f0..a7ad6c56a 100644 --- a/src/intro.c +++ b/src/intro.c @@ -82,7 +82,7 @@ void sub_80EEBE4(void); extern const u32 gMultiBootProgram_PokemonColosseum_Start[]; -extern const u8 gUnknown_8402260[]; +extern const u16 gUnknown_8402260[]; extern const u8 gUnknown_8402280[]; extern const u8 gUnknown_84024E4[]; extern const u16 gUnknown_8402630[]; From fc6a63a2ca6fa7e80c5bc7e45f0a1677136a026c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 3 Jul 2019 19:53:42 -0400 Subject: [PATCH 07/17] Dump some sprite gfx and palettes --- baserom.ips | Bin 2372423 -> 2361907 bytes data/intro.s | 29 ++++++++++++++++++++++++++- graphics/intro/unk_840926C.png | Bin 0 -> 807 bytes graphics/intro/unk_84096AC.pal | 19 ++++++++++++++++++ graphics/intro/unk_84096CC.png | Bin 0 -> 588 bytes graphics/intro/unk_8409A1C.pal | 19 ++++++++++++++++++ graphics/intro/unk_8409A3C.png | Bin 0 -> 541 bytes graphics/intro/unk_8409D20.png | Bin 0 -> 1096 bytes graphics/intro/unk_840A3E4.png | Bin 0 -> 3635 bytes graphics/intro/unk_840B834.pal | 35 +++++++++++++++++++++++++++++++++ graphics/intro/unk_840B874.png | Bin 0 -> 384 bytes graphics/intro/unk_840BAE0.png | Bin 0 -> 164 bytes 12 files changed, 101 insertions(+), 1 deletion(-) create mode 100644 graphics/intro/unk_840926C.png create mode 100644 graphics/intro/unk_84096AC.pal create mode 100644 graphics/intro/unk_84096CC.png create mode 100644 graphics/intro/unk_8409A1C.pal create mode 100644 graphics/intro/unk_8409A3C.png create mode 100644 graphics/intro/unk_8409D20.png create mode 100644 graphics/intro/unk_840A3E4.png create mode 100644 graphics/intro/unk_840B834.pal create mode 100644 graphics/intro/unk_840B874.png create mode 100644 graphics/intro/unk_840BAE0.png diff --git a/baserom.ips b/baserom.ips index ffe2db87bca265ce4ba60c7a5ceb3a14e48bd54c..c0ea768340b07ffa68deee82e362fbbd76eb2fe3 100644 GIT binary patch delta 134 zcmWN=yA6U+0EW?AMN~k1f?fng?Wr7);!kXE!2ro9cmt1kp4Y%AeVah!Zw9I&9&VnbNS@ObbR}D9N F{{t-VH}C)e delta 10399 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 F{~yKGHp~D3 diff --git a/data/intro.s b/data/intro.s index d28eb8d41..4f6531dc4 100644 --- a/data/intro.s +++ b/data/intro.s @@ -118,7 +118,34 @@ gUnknown_8408D98:: @ bin.lz .incbin "graphics/intro/unk_8408D98.bin.lz" gUnknown_840926C:: @ 840926C - .incbin "baserom.gba", 0x40926C, 0x2914 + .incbin "graphics/intro/unk_840926C.4bpp.lz" + +gUnknown_84096AC:: @ 84096AC + .incbin "graphics/intro/unk_84096AC.gbapal" + +gUnknown_84096CC:: @ 84096CC + .incbin "graphics/intro/unk_84096CC.4bpp.lz" + +gUnknown_8409A1C:: @ 8409A1C + .incbin "graphics/intro/unk_8409A1C.gbapal" + +gUnknown_8409A3C:: @ 8409A3C + .incbin "graphics/intro/unk_8409A3C.4bpp.lz" + +gUnknown_8409D20:: @ 8409D20 + .incbin "graphics/intro/unk_8409D20.4bpp.lz" + +gUnknown_840A3E4:: @ 840A3E4 + .incbin "graphics/intro/unk_840A3E4.4bpp.lz" + +gUnknown_840B834:: @ 840B834 + .incbin "graphics/intro/unk_840B834.gbapal" + +gUnknown_840B874:: @ 840B874 + .incbin "graphics/intro/unk_840B874.4bpp.lz" + +gUnknown_840BAE0:: @ 840BAE0 + .incbin "graphics/intro/unk_840BAE0.4bpp.lz" gUnknown_840BB80:: @ 840BB80 .incbin "baserom.gba", 0x40BB80, 0x8 diff --git a/graphics/intro/unk_840926C.png b/graphics/intro/unk_840926C.png new file mode 100644 index 0000000000000000000000000000000000000000..80cc52d524edba1e9129e6561fafcbb2c8b97994 GIT binary patch literal 807 zcmV+?1K9kDP)8nu5CC9Oax#{t6l5xD>DWCKPjibve1H@|_bl;?rfY&01v;fe_B4?50_yQke{o9# zrltFQM^Yl$kQ!VJ%Lbp_Hyf`vm%By$6?ZFOFMVId>yK-YTiXl=F(~0L4|WY+TWfa* zJt*yOp1lD*THA3H3Pmm`fi+?cTHBgjBkEjJf^H24g|_Q7=4f){t;IK>#I{AG6sE=s z5n&B-x{1bz6i}We0D#N`*BR;%mSAH$4*)7a-{cbX=<6EF1S*JZIfmS*dtg8dD;l&$_UO_LtP zIEvH#KKC_GM)0bNDS-ofM!=jW(A%ys(=-|aw^@mLKLSL0*lGPJu-|{bD$)G97O_O$ zK!xM_QH@)6MH4wy3G@xU#boMqLxk{_N%(daOX1I;o5dg#r|Q%tgb9|7&kB5oIYqxH-4?;l&nSa$!&cdV9|Ct-m1a>u=0KCV8V@gy5YR=P7K-+^tI_yv z!y@=bK#U*^qVOA!xg7V8ca?;TSi&6-DgY#~( zl%)rtl=8jk`!LAN1IRMwdoaeI6II&X90I5+Shff_)Dn)hc)}bgE{h}aaO|^zOBn#J z09yeSPOvF~j3s&=0Bw~8;0ZXfb-*k#Y~=_@IN(;NPT_h>d8cErXEN0dy>#&zptUYi zUiu+Jd=6+TV`2(0->m?NT8f@tRwi6cIU8gE=`W!j2Vw$l?(-78i&w*}^^A)ZfCWe` lowRJrx%eOG8NFV|+F#XjzUo1+4VVA`002ovPDHLkV1o8_W;_4@ literal 0 HcmV?d00001 diff --git a/graphics/intro/unk_84096AC.pal b/graphics/intro/unk_84096AC.pal new file mode 100644 index 000000000..53a2c5c2b --- /dev/null +++ b/graphics/intro/unk_84096AC.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +197 222 205 +255 106 82 +222 65 41 +180 24 0 +57 238 189 +82 205 156 +0 164 115 +255 255 255 +255 0 255 +222 180 205 +189 131 189 +139 90 148 +106 57 98 +205 205 222 +131 131 131 +16 16 16 diff --git a/graphics/intro/unk_84096CC.png b/graphics/intro/unk_84096CC.png new file mode 100644 index 0000000000000000000000000000000000000000..75aacced48b349975ff0f8ef093d04cc0e3376e8 GIT binary patch literal 588 zcmV-S0<-;zP)^b*ud_t&bWBo0Sa$c? zL*}qr%ws%bW5jqN#5;Hg|2-J=1(2TyVrX{fKrHfy(TwsWkhZOddi1A&%-g2U^bk&f zn70H}k3-mP1C=+>odL0Ieb2=L8*P+Tm_=#W9dCz!2_+umyOA z{x@ZHz&nRq;Gug;AOtJ}>SJJh*E5iSSm73k{)s`26@g_C^%@A@_x+(J4sTH_&D*vF zKn`yEgQ^&W(n{1ru>_IGx!aBu(z8HqXD}EcG6r;Ws9^#uu)ukWPi@OXX}snhf+KK* zICb(2qDwa`@&I5f@4^Hu3O&~#e8aB-@h~&zA^j^-in&PH)<5ZAFbHXiWf$4w^_~`y zK&cnN-CylfAL;q@TdhEB%x7L9n?MPKRrRI|K2Ob*SCt+R0AIqaKq#=FU`oK!TI3yj z1p_Y>3866K>J;)#TQY#T&BzJFH!iE1R**BOlxG1RN#J*WlD7cOG(9UL?&cb@ng@k4 zjtt-91uwV)`I=#jTJXY0!A&XyDI}=05bNVl4$TCNm?l|+Kc3%rDL6(>umNNO{CIi; zH#10H1~GvMsfHtv5pS_P4dSmopNB6Ad;s&&!n%vA>#sbJ8s?7U4>0R*R1|LxQo6YK aDgFzB77cq~)shYX0000 literal 0 HcmV?d00001 diff --git a/graphics/intro/unk_8409A1C.pal b/graphics/intro/unk_8409A1C.pal new file mode 100644 index 000000000..36cbbb9a0 --- /dev/null +++ b/graphics/intro/unk_8409A1C.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +164 238 139 +57 148 57 +131 213 115 +156 230 156 +131 205 148 +106 180 131 +65 139 98 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +255 0 0 diff --git a/graphics/intro/unk_8409A3C.png b/graphics/intro/unk_8409A3C.png new file mode 100644 index 0000000000000000000000000000000000000000..01ed028f8c6e48f1502ed881ce9ba7d3e39e818b GIT binary patch literal 541 zcmV+&0^y z(UIFQ3`E&~ZJ^u$2{u4M4H#k;AZbY#`;<&Rl4v}hJMnq3g1sBs%@zJDK({{z);mCM zfpQ1DH*q{Bzc=waz05Df90+CA4iqG;Sx|rmG`yv@YVTq|EiWk6s z36NL;#-){*iVu zNjYK=b?6j;QO`@4B)Q#7i9yt1R8lUyo3S6f!hu#ui9ytXlRbdf4IsRJ_JE@}zHK1< z9{S)L0sRmzr2~pj(8+O`0Za(KEu0gKdI4Mrc^m-1UvLuJoPtRRYR=HXp662p^uQUV z_SF8JI)J@;(DG-@5<@_`P6%iLU@0&?6WR6xy)GUo&L&~Ou*XvQ762bW7%=VYU<83D z81!8LxQ@4QhC9G>usPx&UGf9x1yBqUG-beYunM3!Na&e8%VU&5NU}9E0sul$0cYk0 zhgGNm9Hbo_o2p=QXqg+_AZj^$F0DTTC9e!qx8YD+2D%HSrlw46E8lB{(wj>eaIhty z(g61C=7ev4!Ys0dd%f`QW|oEXlLKe@?#h63LX=>Z@BC!$HCvN=?Z806gnsCxWfMYXDTOgX0(GC;t&fCT%Pwk_Tf^SkVd_>?^BjXwGz$eV*5y}8y zlvMzqV{d+p_^?$$Ppu#WFOzJcJUyj$bcFH>U=)B8V|%F6=DWMk!DS;Irvx zn>~x}C38R_*ti010~qMe0*#+Ax`9Ch$L!Q&HZuebr8trS+Ey+Y*!+U;lLd-eOBriz zV!rK82516FHs*-?3XK?`N#kPB-BT{?q>U~lr%dD^Z(noo#&+hfH$gjx?YROJ>{Q|g zXlL9v0^oKZxg0R_E>2RKg)e7lSwe0JC-{AbE))=2?rb0iaW`@Csn z1*F4*zhJ?Mfcd<;fT+I$8oxSU0nKH7uY$f6VS%pzZ8x>+pxKI>pqbqHI#AT__(L_x z&&v)~3xHeF;0G82?2;}jHzEa8So3cLz-)Gg|(Of O0000zpSXiLOPiL=+t;xI567+@+ z7@PTe{R&OUyU_wL<=67Rrsfj@CKZ^V17;}KmY<>m0(24U4%h;ybZ!UvY`uQ_DzCJz zdVuMG-D16d^X9u;z-^6#*rlZ&2zd42&HhJ3uLw1%AFQ`4vrFq1E{|)@TCWa9IfnBJh)~a=>h+^$6qL z0=|}!5@kYf;JNV8OB&5Rpo_>;iAtI}AfT=^tpc-Ha1#j7g@@N%)DZxsYFhz-*I!*- znmhxLQ9D9U0hkymrK=&nclEc*BcN2FQW7t*BWV=P*kobu{k0N`Yfwa>8)!qMP4}qr zTq%4Vf0XhZ(8PLH(R@%X3y*<}2!cE@T<>fRTO@muif1DdR*%44ijBh5b~dLX9gO z;U@qXc3GzO7{n2S4r;6*%ESU_RVXE`5S11@ z5S|)k0F(t9zYtWIi~yiP%c&lvqb%A3b>Q>Z2H{BhMxm#paHOz>TL5)vssX4FGXg|V zD{NtvIsmP3KpOIigO$M35jdb`fIgL>rb#;lVqWJ#Q%eBao+mY09JZ3=^D?If%Fi08B4-=Qja6b1}UIQ07Kp zYNqq!H%9mTB^2oV{meJqUV6hiWXNklIvGSh~og7`w45W9&~eRS|uHG`P$F%kDfgkld2K0 zCGjV~@7aT$f~vV1Cbj~+p=S>;kqv9{sM(TmLOL&VUG(h1#4Ku@MpB-$_>=D8H0s*} zZDc`%xu6PAeii!zd(ikZ6Z7ynX=b2j53sY%V#WZAKLJ_Rvj?y!&>l2cWJ@i+AYjhrs6j_b)Y^kx zj8RbH1fplGQkAUENox;yn60v#%2t4v^z6Z8Zw?F}r*r~mdwZ}o1HdXX^gy-hzwL_f zhN2}HP#zEUl$#)gpw8{pKaJ8TVIVVD)nc<*fk^h^E~8Z1p(aZsz6S845T4epxJ%gr zJDrRA>&^8KKYHwcoVYV!ryHk9{q?)+>mNOB-@xLIV%gaP0N2;o|0L1KoVa`B9xxky zU_`@|b>dEsaN^$lv_S=^UNB(AorludgXS*U2&opZEn^ELJd&+FXihfo{)Ns+21xw@ zq$(>S1MiF?8hfB`f}_56ba(hzGl&8$6;s_!32oAGVgh$zw4 z9sub12Pf_!DR1i^yn%n%11aqSQy%vZ0s9A9oJZ_I&p$YO@S%SodvK$F2>$Q=!@<)F zqK^a3uK+#ghrll`#nIfB;y_6CYl`ESl;TiFQXEA;#R1ig4pJO?Z2BnwC7mK28#yKhKwWNPnWj-)tB9Q3!OI5JXpaYKqjm7JhRK9b^qhsiiW(Pl6{NO1s3 zdkKmUQye9A0}diQmf~ zJRyKRj8DMcKiCw<<{wK4qRn9BNgDS21E)CdZxCGxm%+#((LMjbDUQtxoqN{gz{8AW z*z*sZ;`lq~NUVpMGSKr6et{l_Dse7|Jq&N3F2x~YGB`?%WSim;AIU!m!JEGn)?mns zzJK7ICL_J~59(oS)%yNH@BM>#931fv{@y<{;+TIB{~P|Hk01YdC~8NZVdOq|lm&{9 z0#nL{Y^z&=kG5fFF5u6`I%u1D1n?~|{}=#~JA#)U*Y2 z9M%(k92i#;HDK#O)N1aB*!9gtWQuj{b7T*_37QcB%cgc+#yPP#TXWp58DPz-0kq>f zCEfHL06}8Ssxfp$TS2kz0eM~WQ9NF@z>a{o1mGA8;>5Qn?bu8U+lWa8-F)MZumLH? zO3M~7%b)|^zKwayNdVZ3q*(;m^)o3*y5pP_sg#^;^ey0$N7I6Y^^&zcQ*;#66h^VX zICq`k3GP z5LVkFon|^tIRDMUD%fe^f09-+TWH!AQLZBD>$z#i)r>zL!!tnxwBf3 zrr!ZzbTq4IAfgoS*$3w1M9hphwZIbN=tn50330%b42(FTwzPnvE2p>xYV>gS;04YG z85;sZ07X{r0kkZ|*`dFT@soms4MV@6K)BN^I}+i`*oV9W@FD`r4zMF#=-)Fy;_vyq zat8orAopSmh$bpatquU3D{u|80&#NeGRir%`3K%!Ix9k9t=2h*-TNeoov~bd0qZ#L zqai@M!(_SY0i?WX&;v5D?^h>} zR(#?-;8F+tn{>Zq;MwV;hrPpfe-uv)A6m_)r#P980+j`t_f7xl0ao)5pFIGN8Quu& zlv)Kh0rj(!M<15=1?BX?kqY|2`%jOQ|7?4pZUcVC{YCcQ0SC7aSdvQjfrHxzUXjJ1 ze0ckCaDO2Y7<&hSc@Nl0b9nn;*SuBxpHjOC2e%JyThUv0IPSDOynP@5F>Jw&sS3HK z+lNsj_rTP+yMrBkKh%32&x?NCO(9GRNWNT%{i2!VM*w?wzySFi2S60YdLPrid9!}4 z{k}z+E-!q(T(DvH`t8;0Tu*v&_ipAc7gTCxkASH@cDb;)^>TqD)(#L|FA!2_)5>D2 z&EIS>aw9hveAt`CbF+8{!$qqv8{kBfvo* zNq}=fE)1*ku}Rik&T%&d<}ThOU~2L|eQwNaL|8fHwdr>cS{Ky3$BLU);_>HpQf*=! zb+j(1`I3PA&P&uFLmY)9+?l3~chY!tx$p$QGCu{ds94fT?KD+jU65Ub;T`ii*#LWe zK|t$*>^a_QE2qurZ|j1})+Y4;dSu4eC~9!~pfON8KD@jBVe>tz zSgI+--J1P}8){z*d%5sE|Gvm_s#5ox1EEW^2zz&MO@TP-U-IRG4JO+Y#^>7ybkU<> zL$C{R(R&xvh$jGk>+2->_BjhM0DH}HZf%nJ{pR}m89o(HS4+wapeoEq8bwwX$0pvq zyN*%8%crYvpKAqW@HGE|1V@XI#CWq2_}0lPQ-59|>c>Q}(^8>JH^sT2+l`aQN2^aFr? z4wtVVP>3fOxiM)Dp0*c3O_L=*1S}Cs#BnGO!()*rQo$tiyP56-h0qBCT0@4{pMd+o!RrENaDO`Dj)(-C?En% z0YD}T1c0f8h!7;u0mMrP5~c(20DTldq3cEgecwyyIyZV*I1(^9=N*UfYvA7jx%spJ z77GJ~wZ0W#Oe?@zs|6UN1>`_L4zy-4Sb#Bq)&nc9VfZ4H&F}C;*g_kZwaNiv2tY@jm>Q`3Q(Z70?PGSh~DZP*@9K)=gpsg8m(7T7bMBd{CD4;IOO*gLOR^RLg&I zhtvQJ3P4>!{Q#_EQJ=%MC+a@br$7$^-g*J-;SxgmlIaNO-5V<|n((3p(DsdUNbs{c eAqm_0BlrN3r~)CPRKENG0000#90WO7-_~#3 z+Fa$ST2%4<_?+%p$EKCB8z?j|gfuV}9{u;@dKZ_8I`>w)h)ItA4(t|;Kc&|>n7Oas z&Yx>H%k|9cowZ9$_GDB{u31v?o9Dp1J$ub8Ce>_HtJAg1Dc)k0S@V Date: Wed, 3 Jul 2019 21:33:01 -0400 Subject: [PATCH 08/17] Dump a bunch of sprite data --- baserom.ips | Bin 2361907 -> 2361247 bytes data/intro.s | 178 +++++++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 157 insertions(+), 21 deletions(-) diff --git a/baserom.ips b/baserom.ips index c0ea768340b07ffa68deee82e362fbbd76eb2fe3..fe0a892ff567d1c70eb1ab9295aafd3bbf0a1e6c 100644 GIT binary patch delta 134 zcmWm4yAgsw07cPRML@wt6hZu=R$zw)&mn}soDMe888gaoD93AXvh#YjrfXVrm(fUL zd78*qpiooI6e-sHZS$|!XWgcDgGGV`QY^7ThBa~&_}>y+?6AiHN1RaMjLXLj*T?M# D`(r+V delta 783 zcmZvaziSjh6vw}_J9oFyyEBPN)brH4MDW)Y1|nDlvc(l*6&p#VO^W;lVs~4NXqOa% z7K#cM7Iq2-OypWS1vxAfL?c?MMG6b?{LJhYDjD{}_sx56-g`6bz121IIpR{~3O)~UdP@~SNG*J@i=W*1=decFTRhPIwxq(t%)njQdiM^*-=d`FB zIwlelzr{JHzN%sN zla@$Wfs!hkK)c}cGBix5ym^KAeSH5Z;I)3>VYRR6!v|;msLSKQuLvPV- z@QMDZebeiWK^^wMD2%~4?1c%Kgelku`{4jI;2<>N5FCah(1JEhKWhwTuFd`df@!ZQ diff --git a/data/intro.s b/data/intro.s index 4f6531dc4..4d1181fbd 100644 --- a/data/intro.s +++ b/data/intro.s @@ -147,56 +147,192 @@ gUnknown_840B874:: @ 840B874 gUnknown_840BAE0:: @ 840BAE0 .incbin "graphics/intro/unk_840BAE0.4bpp.lz" -gUnknown_840BB80:: @ 840BB80 - .incbin "baserom.gba", 0x40BB80, 0x8 +gUnknown_840BB80:: + .4byte 0x000031ff @ { 3, 3, 31, 0, 0, 3, 0x000 } + .4byte 0x000421ee @ { 2, 3, 30, 0, 0, 2, 0x010 } -gUnknown_840BB88:: @ 840BB88 - .incbin "baserom.gba", 0x40BB88, 0x8 +gUnknown_840BB88:: + .4byte 0x000005c0 @ { 0, 0, 28, 2, 0, 0, 0x000 } + .4byte 0x000005e5 @ { 1, 1, 30, 2, 0, 0, 0x000 } -gUnknown_840BB90:: @ 840BB90 - .incbin "baserom.gba", 0x40BB90, 0x10 +gUnknown_840BB90:: + .4byte 0x000035e7 @ { 3, 1, 30, 2, 0, 3, 0x000 } + .4byte 0x000001d0 @ { 0, 0, 29, 0, 0, 0, 0x000 } + .4byte 0x000021be @ { 2, 3, 27, 0, 0, 2, 0x000 } + .4byte 0x000011c9 @ { 1, 2, 28, 0, 0, 1, 0x000 } -gUnknown_840BBA0:: @ 840BBA0 - .incbin "baserom.gba", 0x40BBA0, 0x8 +gUnknown_840BBA0:: + .4byte 0x000011d1 @ { 1, 0, 29, 0, 0, 1, 0x000 } + .4byte 0x000005e4 @ { 0, 1, 30, 2, 0, 0, 0x000 } gUnknown_840BBA8:: @ 840BBA8 - .incbin "baserom.gba", 0x40BBA8, 0x10 + window_template 2, 6, 4, 18, 9, 0xD, 0x000 + window_template 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0000 gUnknown_840BBB8:: @ 840BBB8 - .incbin "baserom.gba", 0x40BBB8, 0x8 + .byte 0x3f, 0x3f + .byte 0x00, 0x3f + .byte 0x3f, 0x00 + .byte 0x00, 0x00 gUnknown_840BBC0:: @ 840BBC0 - .incbin "baserom.gba", 0x40BBC0, 0x28 + obj_tiles 0x08402a64, 0x0080, 0x0000 + obj_tiles 0x08402adc, 0x0080, 0x0001 + obj_tiles 0x08402b2c, 0x0800, 0x0002 + obj_tiles 0x084028f8, 0x0400, 0x0003 + obj_tiles 0x08402cd4, 0x0100, 0x0004 gUnknown_840BBE8:: @ 840BBE8 - .incbin "baserom.gba", 0x40BBE8, 0x20 + obj_pal 0x08402a44, 0x0000 + obj_pal 0x08402abc, 0x0001 + obj_pal 0x0840270c, 0x0003 + obj_pal NULL, 0x0000 gUnknown_840BC08:: @ 840BC08 - .incbin "baserom.gba", 0x40BC08, 0x64 + .short 0x0048, 0x0050 + .short 0x0088, 0x004a + .short 0x00a8, 0x0050 + .short 0x0078, 0x0050 + .short 0x0068, 0x0056 + .short 0x0058, 0x004a + .short 0x00b8, 0x004a + .short 0x0038, 0x0056 + .short 0x0098, 0x0056 + +gOamData_840BC2C:: + .word 0x40000000, 0x00000800 @ { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SHAPE_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_1, .tileNum = 0x000, .priority = 2, .paletteNum = 0 } + +gOamData_840BC34:: + .word NULL, 0x00000800 @ { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SHAPE_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_0, .tileNum = 0x000, .priority = 2, .paletteNum = 0 } + +gAnimCmd_840BC3C:: + obj_image_anim_frame 0, 4 + obj_image_anim_frame 1, 4 + obj_image_anim_frame 2, 4 + obj_image_anim_frame 3, 4 + obj_image_anim_jump 0 + +gAnimCmd_840BC50:: + obj_image_anim_frame 0, 4 + obj_image_anim_frame 1, 4 + obj_image_anim_frame 2, 4 + obj_image_anim_frame 3, 4 + obj_image_anim_end + +gAnimCmdTable_840BC64:: + .word gAnimCmd_840BC3C + .word gAnimCmd_840BC50 gUnknown_840BC6C:: @ 840BC6C - .incbin "baserom.gba", 0x40BC6C, 0x18 + spr_template 0, 0, gOamData_840BC2C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80EE29C gUnknown_840BC84:: @ 840BC84 - .incbin "baserom.gba", 0x40BC84, 0x38 + spr_template 1, 1, gOamData_840BC34, gAnimCmdTable_840BC64, NULL, gDummySpriteAffineAnimTable, sub_80EE350 + +gOamData_840BC9C:: + .word 0x80000000, 0x00000800 @ { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SHAPE_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_2, .tileNum = 0x000, .priority = 2, .paletteNum = 0 } + +gAnimCmd_840BCA4:: + obj_image_anim_frame 0, 8 + obj_image_anim_frame 16, 8 + obj_image_anim_frame 32, 8 + obj_image_anim_frame 48, 8 + obj_image_anim_end + +gAnimCmdTable_840BCB8:: + .word gAnimCmd_840BCA4 gUnknown_840BCBC:: @ 840BCBC - .incbin "baserom.gba", 0x40BCBC, 0x20 + spr_template 2, 1, gOamData_840BC9C, gAnimCmdTable_840BCB8, NULL, gDummySpriteAffineAnimTable, sub_80EE4DC + +gOamData_840BCD4:: + .word 0xC0008400, 0x00000C00 @ { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_BLEND, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SHAPE_V_RECTANGLE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 3, .paletteNum = 0 } gUnknown_840BCDC:: @ 840BCDC - .incbin "baserom.gba", 0x40BCDC, 0xAC + spr_template 3, 3, gOamData_840BCD4, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + +gOamData_840BCF4:: + .word 0x40004400, 0x00000C00 @ { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_BLEND, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SHAPE_H_RECTANGLE, .matrixNum = 0, .size = ST_OAM_SIZE_1, .tileNum = 0x000, .priority = 3, .paletteNum = 0 } + +gUnknown_840BCFC:: + spr_template 4, 3, gOamData_840BCF4, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + +gOamData_840BD14:: + .word 0xC0000300, 0x00000400 @ { .affineMode = ST_OAM_AFFINE_DOUBLE, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SHAPE_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 1, .paletteNum = 0 } + +gAnimCmd_840BD1C:: + obj_image_anim_frame 0, 1 + obj_image_anim_end + +gAnimCmd_840BD24:: + obj_image_anim_frame 64, 1 + obj_image_anim_end + +gAnimCmd_840BD2C:: + obj_image_anim_frame 128, 1 + obj_image_anim_end + +gAnimCmd_840BD34:: + obj_image_anim_frame 192, 1 + obj_image_anim_end + +gAnimCmd_840BD3C:: + obj_image_anim_frame 256, 1 + obj_image_anim_end + +gAnimCmdTable_840BD44:: + .word gAnimCmd_840BD1C + .word gAnimCmd_840BD24 + .word gAnimCmd_840BD2C + .word gAnimCmd_840BD34 + .word gAnimCmd_840BD3C + +gAffineAnimCmd_840BD58:: + obj_rot_scal_anim_frame 256, 256, 0, 0 + obj_rot_scal_anim_end + +gAffineAnimCmd_840BD68:: + obj_rot_scal_anim_frame 256, 256, 0, 0 + obj_rot_scal_anim_frame 32, 32, 0, 8 + obj_rot_scal_anim_end + +gAffineAnimCmdTable_840BD80:: + .word gAffineAnimCmd_840BD58 + .word gAffineAnimCmd_840BD68 gUnknown_840BD88:: @ 840BD88 - .incbin "baserom.gba", 0x40BD88, 0x20 + spr_template 5, 7, gOamData_840BD14, gAnimCmdTable_840BD44, NULL, gAffineAnimCmdTable_840BD80, SpriteCallbackDummy + +gOamData_840BDA0:: + .4byte 0xC0000000, 0x00000400 @ { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SHAPE_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 1, .paletteNum = 0 } gUnknown_840BDA8:: @ 840BDA8 - .incbin "baserom.gba", 0x40BDA8, 0x18 + spr_template 7, 7, gOamData_840BDA0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy gUnknown_840BDC0:: @ 840BDC0 - .incbin "baserom.gba", 0x40BDC0, 0x3C + spr_template 6, 6, gOamData_840BDA0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + +gOamData_840BDD8:: + .4byte 0xC0004000, 0x00000000 @ { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SHAPE_H_RECTANGLE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 0, .paletteNum = 0 } + +gAnimCmds_840BDE0:: + obj_image_anim_frame 0, 0 + obj_image_anim_end + +gAnimCmds_840BDE8:: + obj_image_anim_frame 32, 4 + obj_image_anim_frame 0, 4 + obj_image_anim_end + +gAnimCmdTable_840BDF4:: + .4byte gAnimCmds_840BDE0 + .4byte gAnimCmds_840BDE8 gUnknown_840BDFC:: @ 840BDFC - .incbin "baserom.gba", 0x40BDFC, 0x50 + spr_template 8, 8, gOamData_840BDD8, gAnimCmdTable_840BDF4, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy + +gUnknown_840BE14:: + .incbin "baserom.gba", 0x40BE14, 0x38 gUnknown_840BE4C:: @ 840BE4C .incbin "baserom.gba", 0x40BE4C, 0x40 From 12ada4fac566acc7d29b3352215de25c2522260b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 3 Jul 2019 21:50:33 -0400 Subject: [PATCH 09/17] Dump remaining intro data --- baserom.ips | Bin 2361247 -> 2360951 bytes data/intro.s | 98 +++++++++++++++++++++++++++------ graphics/intro/unk_840B834.pal | 18 +----- graphics/intro/unk_840B854.pal | 19 +++++++ 4 files changed, 102 insertions(+), 33 deletions(-) create mode 100644 graphics/intro/unk_840B854.pal diff --git a/baserom.ips b/baserom.ips index fe0a892ff567d1c70eb1ab9295aafd3bbf0a1e6c..110503bd78897e6dd1f065563e87c1d44e70ed52 100644 GIT binary patch delta 134 zcmWN=yA6V10EN-~iVCPGPapU|Sbzbj*n?dtZen913mBI$p>zvb!_L<4B@Zcwyex HL(!CfyXiJH delta 415 zcmYk$KT88a5QpKp{N3y&r_q?4@ziK6EG#Tirnu4%V4Kb|rHEZp4A=+;3k5+E&{8`= z5exybvres`;5V=l;=7W<; Date: Thu, 4 Jul 2019 09:23:14 -0400 Subject: [PATCH 10/17] Decompile intro rodata --- data/intro.s | 416 -------------------------------------------------- ld_script.txt | 1 - src/intro.c | 371 +++++++++++++++++++++++++++++++++++++++----- 3 files changed, 332 insertions(+), 456 deletions(-) delete mode 100644 data/intro.s diff --git a/data/intro.s b/data/intro.s deleted file mode 100644 index 05eb0d0dd..000000000 --- a/data/intro.s +++ /dev/null @@ -1,416 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - .section .rodata - - .align 2 -gUnknown_8402260:: @ gbapal - .incbin "graphics/intro/unk_8402260.gbapal" - -gUnknown_8402280:: @ 4bpp.lz - .incbin "graphics/intro/unk_8402280.4bpp.lz" - -gUnknown_84024E4:: @ bin.lz - .incbin "graphics/intro/unk_84024E4.bin.lz" - -gUnknown_8402630:: @ gbapal - .incbin "graphics/intro/unk_8402630.gbapal" - -gUnknown_8402650:: @ 4bpp.lz - .incbin "graphics/intro/unk_8402650.4bpp.lz" - -gUnknown_8402668:: @ bin.lz - .incbin "graphics/intro/unk_8402668.bin.lz" - -gUnknown_840270C:: @ gbapal - .incbin "graphics/intro/unk_840270C.gbapal" - -gUnknown_840272C:: @ 4bpp.lz - .incbin "graphics/intro/unk_840272C.4bpp.lz" - -gUnknown_84028F8:: @ bin.lz - .incbin "graphics/intro/unk_84028F8.bin.lz" - -gUnknown_8402A44:: @ gbapal - .incbin "graphics/intro/unk_8402A64.gbapal" - -gUnknown_8402A64:: @ 4bpp.lz - .incbin "graphics/intro/unk_8402A64.4bpp.lz" - -gUnknown_8402ABC:: @ gbapal - .incbin "graphics/intro/unk_8402ADC.gbapal" - -gUnknown_8402ADC:: @ 4bpp.lz - .incbin "graphics/intro/unk_8402ADC.4bpp.lz" - -gUnknown_8402B2C:: @ 4bpp.lz - .incbin "graphics/intro/unk_8402B2C.4bpp.lz" - -gUnknown_8402CD4:: @ 8402BD4 - .incbin "graphics/intro/unk_8402CD4.4bpp.lz" - -gUnknown_8402D34:: @ gbapal - .incbin "graphics/intro/unk_8402D34.gbapal" - -gUnknown_8402D54:: @ 4bpp.lz - .incbin "graphics/intro/unk_8402D54.4bpp.lz" - -gUnknown_8403FE8:: @ bin.lz - .incbin "graphics/intro/unk_8403FE8.bin.lz" - -gUnknown_84048CC:: @ gbapal - .incbin "graphics/intro/unk_84048CC.gbapal" - -gUnknown_84048EC:: @ 4bpp.lz - .incbin "graphics/intro/unk_84048EC.4bpp.lz" - -gUnknown_8404F7C:: @ bin.lz - .incbin "graphics/intro/unk_8404F7C.bin.lz" - -gUnknown_84053B4:: @ gbapal - .incbin "graphics/intro/unk_84053B4.gbapal" - -gUnknown_8405414:: @ 4bpp.lz - .incbin "graphics/intro/unk_8405414.4bpp.lz" - -gUnknown_8405890:: @ bin.lz - .incbin "graphics/intro/unk_8405890.bin.lz" - -gUnknown_8405B08:: @ 8405B08 - .incbin "graphics/intro/unk_8405B08.gbapal" - -gUnknown_8405B28:: @ 4bpp.lz - .incbin "graphics/intro/unk_8405B28.4bpp.lz" - -gUnknown_8405CDC:: @ bin.lz - .incbin "graphics/intro/unk_8405CDC.bin.lz" - -gUnknown_8405DA4:: @ gbapal - .incbin "graphics/intro/unk_8405DA4.gbapal" - -gUnknown_8405DC4:: @ 4bpp.lz - .incbin "graphics/intro/unk_8405DC4.4bpp.lz" - -gUnknown_840644C:: @ bin.lz - .incbin "graphics/intro/unk_840644C.bin.lz" - -gUnknown_8406634:: @ gbapal - .incbin "graphics/intro/unk_8406634.gbapal" - -gUnknown_8406654:: @ 4bpp.lz - .incbin "graphics/intro/unk_8406654.4bpp.lz" - -gUnknown_84071D0:: @ bin.lz - .incbin "graphics/intro/unk_84071D0.bin.lz" - -gUnknown_8407430:: @ gbapal - .incbin "graphics/intro/unk_8407430.gbapal" - -gUnknown_8407470:: @ 4bpp.lz - .incbin "graphics/intro/unk_8407470.4bpp.lz" - -gUnknown_8407A50:: @ bin.lz - .incbin "graphics/intro/unk_8407A50.bin.lz" - -gUnknown_8407B9C:: @ 4bpp.lz - .incbin "graphics/intro/unk_8407B9C.4bpp.lz" - -gUnknown_8408D98:: @ bin.lz - .incbin "graphics/intro/unk_8408D98.bin.lz" - -gUnknown_840926C:: @ 840926C - .incbin "graphics/intro/unk_840926C.4bpp.lz" - -gUnknown_84096AC:: @ 84096AC - .incbin "graphics/intro/unk_84096AC.gbapal" - -gUnknown_84096CC:: @ 84096CC - .incbin "graphics/intro/unk_84096CC.4bpp.lz" - -gUnknown_8409A1C:: @ 8409A1C - .incbin "graphics/intro/unk_8409A1C.gbapal" - -gUnknown_8409A3C:: @ 8409A3C - .incbin "graphics/intro/unk_8409A3C.4bpp.lz" - -gUnknown_8409D20:: @ 8409D20 - .incbin "graphics/intro/unk_8409D20.4bpp.lz" - -gUnknown_840A3E4:: @ 840A3E4 - .incbin "graphics/intro/unk_840A3E4.4bpp.lz" - -gUnknown_840B834:: @ 840B834 - .incbin "graphics/intro/unk_840B834.gbapal" - -gUnknown_840B854:: - .incbin "graphics/intro/unk_840B854.gbapal" - -gUnknown_840B874:: @ 840B874 - .incbin "graphics/intro/unk_840B874.4bpp.lz" - -gUnknown_840BAE0:: @ 840BAE0 - .incbin "graphics/intro/unk_840BAE0.4bpp.lz" - -gUnknown_840BB80:: - .4byte 0x000031ff @ { 3, 3, 31, 0, 0, 3, 0x000 } - .4byte 0x000421ee @ { 2, 3, 30, 0, 0, 2, 0x010 } - -gUnknown_840BB88:: - .4byte 0x000005c0 @ { 0, 0, 28, 2, 0, 0, 0x000 } - .4byte 0x000005e5 @ { 1, 1, 30, 2, 0, 0, 0x000 } - -gUnknown_840BB90:: - .4byte 0x000035e7 @ { 3, 1, 30, 2, 0, 3, 0x000 } - .4byte 0x000001d0 @ { 0, 0, 29, 0, 0, 0, 0x000 } - .4byte 0x000021be @ { 2, 3, 27, 0, 0, 2, 0x000 } - .4byte 0x000011c9 @ { 1, 2, 28, 0, 0, 1, 0x000 } - -gUnknown_840BBA0:: - .4byte 0x000011d1 @ { 1, 0, 29, 0, 0, 1, 0x000 } - .4byte 0x000005e4 @ { 0, 1, 30, 2, 0, 0, 0x000 } - -gUnknown_840BBA8:: @ 840BBA8 - window_template 2, 6, 4, 18, 9, 0xD, 0x000 - window_template 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0000 - -gUnknown_840BBB8:: @ 840BBB8 - .byte 0x3f, 0x3f - .byte 0x00, 0x3f - .byte 0x3f, 0x00 - .byte 0x00, 0x00 - -gUnknown_840BBC0:: @ 840BBC0 - obj_tiles gUnknown_8402A64, 0x0080, 0 - obj_tiles gUnknown_8402ADC, 0x0080, 1 - obj_tiles gUnknown_8402B2C, 0x0800, 2 - obj_tiles gUnknown_84028F8, 0x0400, 3 - obj_tiles gUnknown_8402CD4, 0x0100, 4 - -gUnknown_840BBE8:: @ 840BBE8 - obj_pal gUnknown_8402A44, 0 - obj_pal gUnknown_8402ABC, 1 - obj_pal gUnknown_840270C, 3 - obj_pal NULL, 0x0000 - -gUnknown_840BC08:: @ 840BC08 - .short 0x0048, 0x0050 - .short 0x0088, 0x004a - .short 0x00a8, 0x0050 - .short 0x0078, 0x0050 - .short 0x0068, 0x0056 - .short 0x0058, 0x004a - .short 0x00b8, 0x004a - .short 0x0038, 0x0056 - .short 0x0098, 0x0056 - -gOamData_840BC2C:: - .word 0x40000000, 0x00000800 @ { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SHAPE_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_1, .tileNum = 0x000, .priority = 2, .paletteNum = 0 } - -gOamData_840BC34:: - .word NULL, 0x00000800 @ { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SHAPE_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_0, .tileNum = 0x000, .priority = 2, .paletteNum = 0 } - -gAnimCmd_840BC3C:: - obj_image_anim_frame 0, 4 - obj_image_anim_frame 1, 4 - obj_image_anim_frame 2, 4 - obj_image_anim_frame 3, 4 - obj_image_anim_jump 0 - -gAnimCmd_840BC50:: - obj_image_anim_frame 0, 4 - obj_image_anim_frame 1, 4 - obj_image_anim_frame 2, 4 - obj_image_anim_frame 3, 4 - obj_image_anim_end - -gAnimCmdTable_840BC64:: - .word gAnimCmd_840BC3C - .word gAnimCmd_840BC50 - -gUnknown_840BC6C:: @ 840BC6C - spr_template 0, 0, gOamData_840BC2C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80EE29C - -gUnknown_840BC84:: @ 840BC84 - spr_template 1, 1, gOamData_840BC34, gAnimCmdTable_840BC64, NULL, gDummySpriteAffineAnimTable, sub_80EE350 - -gOamData_840BC9C:: - .word 0x80000000, 0x00000800 @ { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SHAPE_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_2, .tileNum = 0x000, .priority = 2, .paletteNum = 0 } - -gAnimCmd_840BCA4:: - obj_image_anim_frame 0, 8 - obj_image_anim_frame 16, 8 - obj_image_anim_frame 32, 8 - obj_image_anim_frame 48, 8 - obj_image_anim_end - -gAnimCmdTable_840BCB8:: - .word gAnimCmd_840BCA4 - -gUnknown_840BCBC:: @ 840BCBC - spr_template 2, 1, gOamData_840BC9C, gAnimCmdTable_840BCB8, NULL, gDummySpriteAffineAnimTable, sub_80EE4DC - -gOamData_840BCD4:: - .word 0xC0008400, 0x00000C00 @ { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_BLEND, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SHAPE_V_RECTANGLE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 3, .paletteNum = 0 } - -gUnknown_840BCDC:: @ 840BCDC - spr_template 3, 3, gOamData_840BCD4, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gOamData_840BCF4:: - .word 0x40004400, 0x00000C00 @ { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_BLEND, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SHAPE_H_RECTANGLE, .matrixNum = 0, .size = ST_OAM_SIZE_1, .tileNum = 0x000, .priority = 3, .paletteNum = 0 } - -gUnknown_840BCFC:: - spr_template 4, 3, gOamData_840BCF4, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gOamData_840BD14:: - .word 0xC0000300, 0x00000400 @ { .affineMode = ST_OAM_AFFINE_DOUBLE, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SHAPE_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 1, .paletteNum = 0 } - -gAnimCmd_840BD1C:: - obj_image_anim_frame 0, 1 - obj_image_anim_end - -gAnimCmd_840BD24:: - obj_image_anim_frame 64, 1 - obj_image_anim_end - -gAnimCmd_840BD2C:: - obj_image_anim_frame 128, 1 - obj_image_anim_end - -gAnimCmd_840BD34:: - obj_image_anim_frame 192, 1 - obj_image_anim_end - -gAnimCmd_840BD3C:: - obj_image_anim_frame 256, 1 - obj_image_anim_end - -gAnimCmdTable_840BD44:: - .word gAnimCmd_840BD1C - .word gAnimCmd_840BD24 - .word gAnimCmd_840BD2C - .word gAnimCmd_840BD34 - .word gAnimCmd_840BD3C - -gAffineAnimCmd_840BD58:: - obj_rot_scal_anim_frame 256, 256, 0, 0 - obj_rot_scal_anim_end - -gAffineAnimCmd_840BD68:: - obj_rot_scal_anim_frame 256, 256, 0, 0 - obj_rot_scal_anim_frame 32, 32, 0, 8 - obj_rot_scal_anim_end - -gAffineAnimCmdTable_840BD80:: - .word gAffineAnimCmd_840BD58 - .word gAffineAnimCmd_840BD68 - -gUnknown_840BD88:: @ 840BD88 - spr_template 5, 7, gOamData_840BD14, gAnimCmdTable_840BD44, NULL, gAffineAnimCmdTable_840BD80, SpriteCallbackDummy - -gOamData_840BDA0:: - .4byte 0xC0000000, 0x00000400 @ { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SHAPE_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 1, .paletteNum = 0 } - -gUnknown_840BDA8:: @ 840BDA8 - spr_template 7, 7, gOamData_840BDA0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gUnknown_840BDC0:: @ 840BDC0 - spr_template 6, 6, gOamData_840BDA0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gOamData_840BDD8:: - .4byte 0xC0004000, NULL @ { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SHAPE_H_RECTANGLE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 0, .paletteNum = 0 } - -gAnimCmds_840BDE0:: - obj_image_anim_frame 0, 0 - obj_image_anim_end - -gAnimCmds_840BDE8:: - obj_image_anim_frame 32, 4 - obj_image_anim_frame 0, 4 - obj_image_anim_end - -gAnimCmdTable_840BDF4:: - .4byte gAnimCmds_840BDE0 - .4byte gAnimCmds_840BDE8 - -gUnknown_840BDFC:: @ 840BDFC - spr_template 8, 8, gOamData_840BDD8, gAnimCmdTable_840BDF4, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gOamData_840BE14:: - .word 0xC0000300, 0x00000400 @ { .affineMode = ST_OAM_AFFINE_DOUBLE, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SHAPE_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 1, .paletteNum = 0 } - -gAnimCmd_40BE1C:: - obj_image_anim_frame 0, 0 - obj_image_anim_end - -gAnimCmd_40BE24:: - obj_image_anim_frame 64, 0 - obj_image_anim_end - -gAnimCmd_40BE2C:: - obj_image_anim_frame 96, 0 - obj_image_anim_end - -gAnimCmd_40BE34:: - obj_image_anim_frame 160, 0 - obj_image_anim_end - -gAnimCmdTable_840BE3C:: - .word gAnimCmd_40BE1C - .word gAnimCmd_40BE24 - .word gAnimCmd_40BE2C - .word gAnimCmd_40BE34 - -gUnknown_840BE4C:: @ 840BE4C - spr_template 9, 6, gOamData_840BE14, gAnimCmdTable_840BE3C, NULL, gAffineAnimCmdTable_840BD80, SpriteCallbackDummy - -gOamData_840BE64:: - .word 0xC0008000, 0x00000400 @ { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SHAPE_V_RECTANGLE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 1, .paletteNum = 0 } - -gAnimCmd_840BE6C:: - obj_image_anim_frame 0, 8 - obj_image_anim_frame 32, 4 - obj_image_anim_end - -gAnimCmd_840BE78:: - obj_image_anim_frame 64, 8 - obj_image_anim_frame 72, 4 - obj_image_anim_end - -gAnimCmdTable_840BE84:: - .word gAnimCmd_840BE6C - .word gAnimCmd_840BE78 - -gUnknown_840BE8C:: @ 840BE8C - spr_template 10, 10, gOamData_840BE64, gAnimCmdTable_840BE84, NULL, gDummySpriteAffineAnimTable, sub_80EE1C4 - -gOamData_840BEA4:: - .word 0x40000000, 0x00000400 @ { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SHAPE_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_1, .tileNum = 0x000, .priority = 1, .paletteNum = 0 } - -gAnimCmd_840BEAC:: - obj_image_anim_frame 0, 10 - obj_image_anim_frame 4, 10 - obj_image_anim_frame 8, 10 - obj_image_anim_frame 12, 8 - obj_image_anim_end - -gAnimCmdTable_840BEC0:: - .word gAnimCmd_840BEAC - -gUnknown_840BEC4:: @ 840BEC4 - spr_template 11, 11, gOamData_840BEA4, gAnimCmdTable_840BEC0, NULL, gDummySpriteAffineAnimTable, sub_80EE8E4 - -gUnknown_840BEDC:: @ 840BEDC - obj_tiles gUnknown_840926C, 0x0800, 6 - obj_tiles gUnknown_84096CC, 0x0800, 7 - obj_tiles gUnknown_840A3E4, 0x2800, 5 - obj_tiles gUnknown_8409A3C, 0x0800, 8 - obj_tiles gUnknown_8409D20, 0x1800, 9 - obj_tiles gUnknown_840B874, 0x0a00, 10 - obj_tiles gUnknown_840BAE0, 0x0200, 11 - -gUnknown_840BF14:: @ 840BF14 - obj_pal gUnknown_8405DA4, 6 - obj_pal gUnknown_84096AC, 7 - obj_pal gUnknown_8409A1C, 8 - obj_pal gUnknown_840B834, 10 - obj_pal gUnknown_840B854, 11 - diff --git a/ld_script.txt b/ld_script.txt index 762ec2710..2d5b99e6c 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -420,7 +420,6 @@ SECTIONS { src/save.o(.rodata); data/data_83FECCC.o(.rodata); src/intro.o(.rodata); - data/intro.o(.rodata); data/data_83FECCC.o(.rodata.battle_anim_special); data/strings.o(.rodata); data/data_83FECCC.o(.rodata.841EE44); diff --git a/src/intro.c b/src/intro.c index a7ad6c56a..944f661dc 100644 --- a/src/intro.c +++ b/src/intro.c @@ -74,55 +74,348 @@ void sub_80EDC40(void); void sub_80EDDF0(void); void sub_80EDED8(void); struct Sprite * sub_80EDF68(void); +void sub_80EE1C4(struct Sprite * sprite); void sub_80EE200(u8 taskId); +void sub_80EE29C(struct Sprite * sprite); +void sub_80EE350(struct Sprite * sprite); +void sub_80EE4DC(struct Sprite * sprite); void sub_80EE4F8(struct IntroSequenceData * ptr); void sub_80EE528(struct Sprite * sprite, u16 a1, u16 a2, u16 a3); bool32 sub_80EE5C8(struct IntroSequenceData * ptr); +void sub_80EE8E4(struct Sprite * sprite); void sub_80EEBE4(void); extern const u32 gMultiBootProgram_PokemonColosseum_Start[]; -extern const u16 gUnknown_8402260[]; -extern const u8 gUnknown_8402280[]; -extern const u8 gUnknown_84024E4[]; -extern const u16 gUnknown_8402630[]; -extern const u8 gUnknown_8402650[]; -extern const u8 gUnknown_8402668[]; -extern const u16 gUnknown_840270C[]; -extern const u8 gUnknown_840272C[]; -extern const u8 gUnknown_84028F8[]; -extern const u16 gUnknown_8402D34[]; -extern const u8 gUnknown_8402D54[]; -extern const u8 gUnknown_8403FE8[]; -extern const u16 gUnknown_84048CC[]; -extern const u8 gUnknown_84048EC[]; -extern const u8 gUnknown_8404F7C[]; -extern const u16 gUnknown_84053B4[]; -extern const u8 gUnknown_8405414[]; -extern const u8 gUnknown_8405890[]; -extern const u8 gUnknown_8405B28[]; -extern const u8 gUnknown_8405CDC[]; -extern const u16 gUnknown_8405DA4[]; -extern const u8 gUnknown_8405DC4[]; -extern const u8 gUnknown_840644C[]; -extern const u16 gUnknown_8406634[]; -extern const u8 gUnknown_8406654[]; -extern const u8 gUnknown_84071D0[]; -extern const u16 gUnknown_8407430[]; -extern const u8 gUnknown_8407470[]; -extern const u8 gUnknown_8407A50[]; -extern const u8 gUnknown_8407B9C[]; -extern const u8 gUnknown_8408D98[]; +const u16 gUnknown_8402260[] = INCBIN_U16("graphics/intro/unk_8402260.gbapal"); +const u8 gUnknown_8402280[] = INCBIN_U8("graphics/intro/unk_8402280.4bpp.lz"); +const u8 gUnknown_84024E4[] = INCBIN_U8("graphics/intro/unk_84024E4.bin.lz"); +const u16 gUnknown_8402630[] = INCBIN_U16("graphics/intro/unk_8402630.gbapal"); +const u8 gUnknown_8402650[] = INCBIN_U8("graphics/intro/unk_8402650.4bpp.lz"); +const u8 gUnknown_8402668[] = INCBIN_U8("graphics/intro/unk_8402668.bin.lz"); +const u16 gUnknown_840270C[] = INCBIN_U16("graphics/intro/unk_840270C.gbapal"); +const u8 gUnknown_840272C[] = INCBIN_U8("graphics/intro/unk_840272C.4bpp.lz"); +const u8 gUnknown_84028F8[] = INCBIN_U8("graphics/intro/unk_84028F8.bin.lz"); +const u16 gUnknown_8402A44[] = INCBIN_U16("graphics/intro/unk_8402A64.gbapal"); +const u8 gUnknown_8402A64[] = INCBIN_U8("graphics/intro/unk_8402A64.4bpp.lz"); +const u16 gUnknown_8402ABC[] = INCBIN_U16("graphics/intro/unk_8402ADC.gbapal"); +const u8 gUnknown_8402ADC[] = INCBIN_U8("graphics/intro/unk_8402ADC.4bpp.lz"); +const u8 gUnknown_8402B2C[] = INCBIN_U8("graphics/intro/unk_8402B2C.4bpp.lz"); +const u8 gUnknown_8402CD4[] = INCBIN_U8("graphics/intro/unk_8402CD4.4bpp.lz"); +const u16 gUnknown_8402D34[] = INCBIN_U16("graphics/intro/unk_8402D34.gbapal"); +const u8 gUnknown_8402D54[] = INCBIN_U8("graphics/intro/unk_8402D54.4bpp.lz"); +const u8 gUnknown_8403FE8[] = INCBIN_U8("graphics/intro/unk_8403FE8.bin.lz"); +const u16 gUnknown_84048CC[] = INCBIN_U16("graphics/intro/unk_84048CC.gbapal"); +const u8 gUnknown_84048EC[] = INCBIN_U8("graphics/intro/unk_84048EC.4bpp.lz"); +const u8 gUnknown_8404F7C[] = INCBIN_U8("graphics/intro/unk_8404F7C.bin.lz"); +const u16 gUnknown_84053B4[] = INCBIN_U16("graphics/intro/unk_84053B4.gbapal"); +const u8 gUnknown_8405414[] = INCBIN_U8("graphics/intro/unk_8405414.4bpp.lz"); +const u8 gUnknown_8405890[] = INCBIN_U8("graphics/intro/unk_8405890.bin.lz"); +const u16 gUnknown_8405B08[] = INCBIN_U16("graphics/intro/unk_8405B08.gbapal"); +const u8 gUnknown_8405B28[] = INCBIN_U8("graphics/intro/unk_8405B28.4bpp.lz"); +const u8 gUnknown_8405CDC[] = INCBIN_U8("graphics/intro/unk_8405CDC.bin.lz"); +const u16 gUnknown_8405DA4[] = INCBIN_U16("graphics/intro/unk_8405DA4.gbapal"); +const u8 gUnknown_8405DC4[] = INCBIN_U8("graphics/intro/unk_8405DC4.4bpp.lz"); +const u8 gUnknown_840644C[] = INCBIN_U8("graphics/intro/unk_840644C.bin.lz"); +const u16 gUnknown_8406634[] = INCBIN_U16("graphics/intro/unk_8406634.gbapal"); +const u8 gUnknown_8406654[] = INCBIN_U8("graphics/intro/unk_8406654.4bpp.lz"); +const u8 gUnknown_84071D0[] = INCBIN_U8("graphics/intro/unk_84071D0.bin.lz"); +const u16 gUnknown_8407430[] = INCBIN_U16("graphics/intro/unk_8407430.gbapal"); +const u8 gUnknown_8407470[] = INCBIN_U8("graphics/intro/unk_8407470.4bpp.lz"); +const u8 gUnknown_8407A50[] = INCBIN_U8("graphics/intro/unk_8407A50.bin.lz"); +const u8 gUnknown_8407B9C[] = INCBIN_U8("graphics/intro/unk_8407B9C.4bpp.lz"); +const u8 gUnknown_8408D98[] = INCBIN_U8("graphics/intro/unk_8408D98.bin.lz"); +const u8 gUnknown_840926C[] = INCBIN_U8("graphics/intro/unk_840926C.4bpp.lz"); +const u16 gUnknown_84096AC[] = INCBIN_U16("graphics/intro/unk_84096AC.gbapal"); +const u8 gUnknown_84096CC[] = INCBIN_U8("graphics/intro/unk_84096CC.4bpp.lz"); +const u16 gUnknown_8409A1C[] = INCBIN_U16("graphics/intro/unk_8409A1C.gbapal"); +const u8 gUnknown_8409A3C[] = INCBIN_U8("graphics/intro/unk_8409A3C.4bpp.lz"); +const u8 gUnknown_8409D20[] = INCBIN_U8("graphics/intro/unk_8409D20.4bpp.lz"); +const u8 gUnknown_840A3E4[] = INCBIN_U8("graphics/intro/unk_840A3E4.4bpp.lz"); +const u16 gUnknown_840B834[] = INCBIN_U16("graphics/intro/unk_840B834.gbapal"); +const u16 gUnknown_840B854[] = INCBIN_U16("graphics/intro/unk_840B854.gbapal"); +const u8 gUnknown_840B874[] = INCBIN_U8("graphics/intro/unk_840B874.4bpp.lz"); +const u8 gUnknown_840BAE0[] = INCBIN_U8("graphics/intro/unk_840BAE0.4bpp.lz"); -extern const struct BgTemplate gUnknown_840BB80[2]; -extern const struct BgTemplate gUnknown_840BB88[2]; -extern const struct BgTemplate gUnknown_840BB90[4]; -extern const struct BgTemplate gUnknown_840BBA0[2]; -extern const struct WindowTemplate gUnknown_840BBA8[]; +const struct BgTemplate gUnknown_840BB80[] = { + { 3, 3, 31, 0, 0, 3, 0x000 }, + { 2, 3, 30, 0, 0, 2, 0x010 } +}; -extern const struct SpriteTemplate gUnknown_840BDA8; -extern const struct SpriteTemplate gUnknown_840BDC0; -extern const struct SpriteTemplate gUnknown_840BDFC; +const struct BgTemplate gUnknown_840BB88[] = { + { 0, 0, 28, 2, 0, 0, 0x000 }, + { 1, 1, 30, 2, 0, 0, 0x000 } +}; + +const struct BgTemplate gUnknown_840BB90[] = { + { 3, 1, 30, 2, 0, 3, 0x000 }, + { 0, 0, 29, 0, 0, 0, 0x000 }, + { 2, 3, 27, 0, 0, 2, 0x000 }, + { 1, 2, 28, 0, 0, 1, 0x000 } +}; + +const struct BgTemplate gUnknown_840BBA0[] = { + { 1, 0, 29, 0, 0, 1, 0x000 }, + { 0, 1, 30, 2, 0, 0, 0x000 } +}; + +const struct WindowTemplate gUnknown_840BBA8[] = { + { 2, 6, 4, 18, 9, 0xD, 0x000 }, + DUMMY_WIN_TEMPLATE +}; + +const u8 gUnknown_840BBB8[][2] = { + {0x3f, 0x3f}, + {0x00, 0x3f}, + {0x3f, 0x00}, + {0x00, 0x00} +}; + +const struct CompressedSpriteSheet gUnknown_840BBC0[] = { + {gUnknown_8402A64, 0x0080, 0}, + {gUnknown_8402ADC, 0x0080, 1}, + {gUnknown_8402B2C, 0x0800, 2}, + {gUnknown_84028F8, 0x0400, 3}, + {gUnknown_8402CD4, 0x0100, 4} +}; + +const struct SpritePalette gUnknown_840BBE8[] = { + {gUnknown_8402A44, 0}, + {gUnknown_8402ABC, 1}, + {gUnknown_840270C, 3}, + {0} +}; + +const s16 gUnknown_840BC08[][2] = { + {0x0048, 0x0050}, + {0x0088, 0x004a}, + {0x00a8, 0x0050}, + {0x0078, 0x0050}, + {0x0068, 0x0056}, + {0x0058, 0x004a}, + {0x00b8, 0x004a}, + {0x0038, 0x0056}, + {0x0098, 0x0056} +}; + +const struct OamData gOamData_840BC2C = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_1, .tileNum = 0x000, .priority = 2, .paletteNum = 0 }; + +const struct OamData gOamData_840BC34 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_0, .tileNum = 0x000, .priority = 2, .paletteNum = 0 }; + +const union AnimCmd gAnimCmd_840BC3C[] = { + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(2, 4), + ANIMCMD_FRAME(3, 4), + ANIMCMD_JUMP(0) +}; + +const union AnimCmd gAnimCmd_840BC50[] = { + ANIMCMD_FRAME(0, 4), + ANIMCMD_FRAME(1, 4), + ANIMCMD_FRAME(2, 4), + ANIMCMD_FRAME(3, 4), + ANIMCMD_END +}; + +const union AnimCmd *const gAnimCmdTable_840BC64[] = { + gAnimCmd_840BC3C, + gAnimCmd_840BC50 +}; + +const struct SpriteTemplate gUnknown_840BC6C = {0, 0, &gOamData_840BC2C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80EE29C}; + +const struct SpriteTemplate gUnknown_840BC84 = {1, 1, &gOamData_840BC34, gAnimCmdTable_840BC64, NULL, gDummySpriteAffineAnimTable, sub_80EE350}; + +const struct OamData gOamData_840BC9C = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_2, .tileNum = 0x000, .priority = 2, .paletteNum = 0 }; + +const union AnimCmd gAnimCmd_840BCA4[] = { + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(16, 8), + ANIMCMD_FRAME(32, 8), + ANIMCMD_FRAME(48, 8), + ANIMCMD_END +}; + +const union AnimCmd *const gAnimCmdTable_840BCB8[] = { + gAnimCmd_840BCA4 +}; + +const struct SpriteTemplate gUnknown_840BCBC = {2, 1, &gOamData_840BC9C, gAnimCmdTable_840BCB8, NULL, gDummySpriteAffineAnimTable, sub_80EE4DC}; + +const struct OamData gOamData_840BCD4 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_BLEND, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_V_RECTANGLE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 3, .paletteNum = 0 }; + +const struct SpriteTemplate gUnknown_840BCDC = {3, 3, &gOamData_840BCD4, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; + +const struct OamData gOamData_840BCF4 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_BLEND, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_H_RECTANGLE, .matrixNum = 0, .size = ST_OAM_SIZE_1, .tileNum = 0x000, .priority = 3, .paletteNum = 0 }; + +const struct SpriteTemplate gUnknown_840BCFC = {4, 3, &gOamData_840BCF4, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; + +const struct OamData gOamData_840BD14 = { .affineMode = ST_OAM_AFFINE_DOUBLE, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 1, .paletteNum = 0 }; + +const union AnimCmd gAnimCmd_840BD1C[] = { + ANIMCMD_FRAME(0, 1), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_840BD24[] = { + ANIMCMD_FRAME(64, 1), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_840BD2C[] = { + ANIMCMD_FRAME(128, 1), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_840BD34[] = { + ANIMCMD_FRAME(192, 1), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_840BD3C[] = { + ANIMCMD_FRAME(256, 1), + ANIMCMD_END +}; + +const union AnimCmd *const gAnimCmdTable_840BD44[] = { + gAnimCmd_840BD1C, + gAnimCmd_840BD24, + gAnimCmd_840BD2C, + gAnimCmd_840BD34, + gAnimCmd_840BD3C +}; + +const union AffineAnimCmd gAffineAnimCmd_840BD58[] = { + AFFINEANIMCMD_FRAME(256, 256, 0, 0), + AFFINEANIMCMD_END +}; + +const union AffineAnimCmd gAffineAnimCmd_840BD68[] = { + AFFINEANIMCMD_FRAME(256, 256, 0, 0), + AFFINEANIMCMD_FRAME(32, 32, 0, 8), + AFFINEANIMCMD_END +}; + +const union AffineAnimCmd *const gAffineAnimCmdTable_840BD80[] = { + gAffineAnimCmd_840BD58, + gAffineAnimCmd_840BD68 +}; + +const struct SpriteTemplate gUnknown_840BD88 = {5, 7, &gOamData_840BD14, gAnimCmdTable_840BD44, NULL, gAffineAnimCmdTable_840BD80, SpriteCallbackDummy}; + +const struct OamData gOamData_840BDA0 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 1, .paletteNum = 0 }; + +const struct SpriteTemplate gUnknown_840BDA8 = {7, 7, &gOamData_840BDA0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; + +const struct SpriteTemplate gUnknown_840BDC0 = {6, 6, &gOamData_840BDA0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; + +const struct OamData gOamData_840BDD8 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_H_RECTANGLE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 0, .paletteNum = 0 }; + +const union AnimCmd gAnimCmds_840BDE0[] = { + ANIMCMD_FRAME(0, 0), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmds_840BDE8[] = { + ANIMCMD_FRAME(32, 4), + ANIMCMD_FRAME(0, 4), + ANIMCMD_END +}; + +const union AnimCmd *const gAnimCmdTable_840BDF4[] = { + gAnimCmds_840BDE0, + gAnimCmds_840BDE8 +}; + +const struct SpriteTemplate gUnknown_840BDFC = {8, 8, &gOamData_840BDD8, gAnimCmdTable_840BDF4, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; + +const struct OamData gOamData_840BE14 = { .affineMode = ST_OAM_AFFINE_DOUBLE, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 1, .paletteNum = 0 }; + +const union AnimCmd gAnimCmd_840BE1C[] = { + ANIMCMD_FRAME(0, 0), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_840BE24[] = { + ANIMCMD_FRAME(64, 0), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_840BE2C[] = { + ANIMCMD_FRAME(96, 0), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_840BE34[] = { + ANIMCMD_FRAME(160, 0), + ANIMCMD_END +}; + +const union AnimCmd *const gAnimCmdTable_840BE3C[] = { + gAnimCmd_840BE1C, + gAnimCmd_840BE24, + gAnimCmd_840BE2C, + gAnimCmd_840BE34 +}; + +const struct SpriteTemplate gUnknown_840BE4C = {9, 6, &gOamData_840BE14, gAnimCmdTable_840BE3C, NULL, gAffineAnimCmdTable_840BD80, SpriteCallbackDummy}; + +const struct OamData gOamData_840BE64 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_V_RECTANGLE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 1, .paletteNum = 0 }; + +const union AnimCmd gAnimCmd_840BE6C[] = { + ANIMCMD_FRAME(0, 8), + ANIMCMD_FRAME(32, 4), + ANIMCMD_END +}; + +const union AnimCmd gAnimCmd_840BE78[] = { + ANIMCMD_FRAME(64, 8), + ANIMCMD_FRAME(72, 4), + ANIMCMD_END +}; + +const union AnimCmd *const gAnimCmdTable_840BE84[] = { + gAnimCmd_840BE6C, + gAnimCmd_840BE78 +}; + +const struct SpriteTemplate gUnknown_840BE8C = {10, 10, &gOamData_840BE64, gAnimCmdTable_840BE84, NULL, gDummySpriteAffineAnimTable, sub_80EE1C4}; + +const struct OamData gOamData_840BEA4 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_1, .tileNum = 0x000, .priority = 1, .paletteNum = 0 }; + +const union AnimCmd gAnimCmd_840BEAC[] = { + ANIMCMD_FRAME(0, 10), + ANIMCMD_FRAME(4, 10), + ANIMCMD_FRAME(8, 10), + ANIMCMD_FRAME(12, 8), + ANIMCMD_END +}; + +const union AnimCmd *const gAnimCmdTable_840BEC0[] = { + gAnimCmd_840BEAC +}; + +const struct SpriteTemplate gUnknown_840BEC4 = {11, 11, &gOamData_840BEA4, gAnimCmdTable_840BEC0, NULL, gDummySpriteAffineAnimTable, sub_80EE8E4}; + +const struct CompressedSpriteSheet gUnknown_840BEDC[] = { + {gUnknown_840926C, 0x0800, 6}, + {gUnknown_84096CC, 0x0800, 7}, + {gUnknown_840A3E4, 0x2800, 5}, + {gUnknown_8409A3C, 0x0800, 8}, + {gUnknown_8409D20, 0x1800, 9}, + {gUnknown_840B874, 0x0a00, 10}, + {gUnknown_840BAE0, 0x0200, 11} +}; + +const struct SpritePalette gUnknown_840BF14[] = { + {gUnknown_8405DA4, 6}, + {gUnknown_84096AC, 7}, + {gUnknown_8409A1C, 8}, + {gUnknown_840B834, 10}, + {gUnknown_840B854, 11}, + // {0} +}; void sub_80EC5A4(void) { From 2f671f9bd2b1785d1e6be135ddd638daadac62c4 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 4 Jul 2019 10:42:22 -0400 Subject: [PATCH 11/17] intro: sub_80EDC40 --- asm/intro.s | 575 -------------------------------------------------- src/intro.c | 285 ++++++++++++++++++++++++- sym_ewram.txt | 58 +---- 3 files changed, 282 insertions(+), 636 deletions(-) diff --git a/asm/intro.s b/asm/intro.s index 8e908cebe..87afc0815 100644 --- a/asm/intro.s +++ b/asm/intro.s @@ -5,581 +5,6 @@ .text - thumb_func_start sub_80ED898 -sub_80ED898: @ 80ED898 - push {r4,r5,lr} - sub sp, 0x8 - adds r4, r0, 0 - ldrb r0, [r4, 0x4] - cmp r0, 0xF - bls _080ED8A6 - b _080EDA98 -_080ED8A6: - lsls r0, 2 - ldr r1, _080ED8B0 @ =_080ED8B4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080ED8B0: .4byte _080ED8B4 - .align 2, 0 -_080ED8B4: - .4byte _080ED8F4 - .4byte _080ED8F8 - .4byte _080ED910 - .4byte _080ED918 - .4byte _080ED936 - .4byte _080ED946 - .4byte _080ED95E - .4byte _080ED97C - .4byte _080ED998 - .4byte _080ED9A0 - .4byte _080ED9BA - .4byte _080ED9D2 - .4byte _080ED9DC - .4byte _080EDA1C - .4byte _080EDA5C - .4byte _080EDA7C -_080ED8F4: - movs r0, 0 - b _080EDA6C -_080ED8F8: - ldrh r0, [r4, 0x12] - adds r0, 0x1 - strh r0, [r4, 0x12] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1E - bhi _080ED908 - b _080EDAC4 -_080ED908: - adds r0, r4, 0 - bl sub_80EE5E4 - b _080EDA6E -_080ED910: - adds r0, r4, 0 - bl sub_80EE850 - b _080EDA64 -_080ED918: - ldrh r0, [r4, 0x12] - adds r0, 0x1 - strh r0, [r4, 0x12] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1E - bhi _080ED928 - b _080EDAC4 -_080ED928: - bl sub_80ED760 - adds r0, r4, 0 - bl sub_80EDF94 - movs r0, 0 - b _080EDA6C -_080ED936: - ldrb r0, [r4, 0x6] - cmp r0, 0 - bne _080ED93E - b _080EDAC4 -_080ED93E: - adds r0, r4, 0 - bl sub_80EE6A4 - b _080EDA6E -_080ED946: - adds r0, r4, 0 - bl sub_80EE850 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - beq _080ED956 - b _080EDAC4 -_080ED956: - bl sub_80ED788 - strh r5, [r4, 0x12] - b _080EDA6E -_080ED95E: - ldrh r0, [r4, 0x12] - adds r0, 0x1 - strh r0, [r4, 0x12] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x10 - bhi _080ED96E - b _080EDAC4 -_080ED96E: - ldr r0, [r4, 0x18] - movs r1, 0x8 - movs r2, 0xC - movs r3, 0x5 - bl sub_80EE970 - b _080EDA6E -_080ED97C: - adds r0, r4, 0 - bl sub_80EE850 - lsls r0, 24 - cmp r0, 0 - beq _080ED98A - b _080EDAC4 -_080ED98A: - ldr r0, [r4, 0x18] - movs r1, 0x8 - movs r2, 0xC - movs r3, 0x5 - bl sub_80EE970 - b _080EDA6E -_080ED998: - adds r0, r4, 0 - bl sub_80EE850 - b _080EDA64 -_080ED9A0: - ldrh r0, [r4, 0x12] - adds r0, 0x1 - strh r0, [r4, 0x12] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x14 - bhi _080ED9B0 - b _080EDAC4 -_080ED9B0: - adds r0, r4, 0 - bl sub_80EEA94 - movs r0, 0 - b _080EDA6C -_080ED9BA: - bl sub_80ED7B0 - lsls r0, 24 - cmp r0, 0 - beq _080ED9C6 - b _080EDAC4 -_080ED9C6: - bl sub_80ED760 - adds r0, r4, 0 - bl sub_80EDAF0 - b _080EDA6E -_080ED9D2: - movs r0, 0 - bl HideBg - movs r0, 0 - b _080EDA6C -_080ED9DC: - ldrh r0, [r4, 0x12] - adds r0, 0x1 - strh r0, [r4, 0x12] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x30 - bne _080ED9FA - ldr r0, _080EDA18 @ =0x00007fff - str r0, [sp] - movs r0, 0x6 - movs r1, 0x2 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade -_080ED9FA: - ldrh r0, [r4, 0x12] - cmp r0, 0x78 - bls _080EDAC4 - adds r0, r4, 0 - bl sub_80EDB70 - adds r0, r4, 0 - bl sub_80EDBAC - ldrb r0, [r4, 0x4] - adds r0, 0x1 - strb r0, [r4, 0x4] - movs r0, 0 - b _080EDAC2 - .align 2, 0 -_080EDA18: .4byte 0x00007fff -_080EDA1C: - ldrh r0, [r4, 0x12] - adds r0, 0x1 - strh r0, [r4, 0x12] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x8 - bls _080EDAC4 - add r1, sp, 0x4 - ldr r2, _080EDA50 @ =0x00007fff - adds r0, r2, 0 - strh r0, [r1] - ldr r1, _080EDA54 @ =gPlttBufferUnfaded + 0x20 - ldr r2, _080EDA58 @ =0x01000020 - add r0, sp, 0x4 - bl CpuSet - movs r1, 0x2 - negs r1, r1 - movs r0, 0 - str r0, [sp] - adds r0, r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - b _080EDA6E - .align 2, 0 -_080EDA50: .4byte 0x00007fff -_080EDA54: .4byte gPlttBufferUnfaded + 0x20 -_080EDA58: .4byte 0x01000020 -_080EDA5C: - ldr r0, _080EDA78 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 -_080EDA64: - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _080EDAC4 -_080EDA6C: - strh r0, [r4, 0x12] -_080EDA6E: - ldrb r0, [r4, 0x4] - adds r0, 0x1 - strb r0, [r4, 0x4] - b _080EDAC4 - .align 2, 0 -_080EDA78: .4byte gPaletteFade -_080EDA7C: - ldrh r0, [r4, 0x12] - adds r0, 0x1 - strh r0, [r4, 0x12] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x3C - bls _080EDAC4 - ldr r1, _080EDA94 @ =sub_80EDBE8 - adds r0, r4, 0 - bl sub_80ECAA8 - b _080EDAC4 - .align 2, 0 -_080EDA94: .4byte sub_80EDBE8 -_080EDA98: - ldr r0, _080EDACC @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _080EDAC4 - ldr r0, _080EDAD0 @ =0xffff0064 - ldr r2, _080EDAD4 @ =0x00007fff - movs r1, 0 - bl BlendPalettes - ldr r1, [r4, 0x18] - movs r0, 0 - strh r0, [r1, 0x24] - ldr r1, [r4, 0x18] - movs r0, 0xB4 - strh r0, [r1, 0x20] - movs r0, 0x1 - strb r0, [r4, 0x4] - movs r0, 0x1E -_080EDAC2: - strh r0, [r4, 0x12] -_080EDAC4: - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080EDACC: .4byte gMain -_080EDAD0: .4byte 0xffff0064 -_080EDAD4: .4byte 0x00007fff - thumb_func_end sub_80ED898 - - thumb_func_start sub_80EDAD8 -sub_80EDAD8: @ 80EDAD8 - push {lr} - ldrb r3, [r0, 0x1] - lsrs r1, r3, 6 - ldrb r2, [r0, 0x3] - lsrs r2, 6 - lsls r3, 30 - lsrs r3, 30 - bl CalcCenterToCornerVec - pop {r0} - bx r0 - thumb_func_end sub_80EDAD8 - - thumb_func_start sub_80EDAF0 -sub_80EDAF0: @ 80EDAF0 - push {r4-r7,lr} - adds r7, r0, 0 - movs r5, 0 -_080EDAF6: - movs r6, 0x1 - ands r6, r5 - lsls r1, r6, 1 - adds r1, r6 - lsls r1, 20 - lsrs r2, r5, 31 - adds r2, r5, r2 - asrs r2, 1 - lsls r2, 22 - movs r0, 0xC4 - lsls r0, 14 - adds r1, r0 - asrs r1, 16 - movs r0, 0x90 - lsls r0, 15 - adds r2, r0 - asrs r2, 16 - ldr r0, _080EDB68 @ =gUnknown_840BE4C - movs r3, 0x8 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _080EDB5C - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080EDB6C @ =gSprites - adds r4, r0, r1 - lsls r1, r5, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim - lsls r1, r5, 2 - adds r0, r7, 0 - adds r0, 0x28 - adds r2, r0, r1 - str r4, [r2] - cmp r6, 0 - beq _080EDB56 - ldrb r0, [r4, 0x1] - movs r1, 0x3F - ands r1, r0 - movs r0, 0x80 - orrs r1, r0 - strb r1, [r4, 0x1] -_080EDB56: - ldr r0, [r2] - bl sub_80EDAD8 -_080EDB5C: - adds r5, 0x1 - cmp r5, 0x3 - ble _080EDAF6 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080EDB68: .4byte gUnknown_840BE4C -_080EDB6C: .4byte gSprites - thumb_func_end sub_80EDAF0 - - thumb_func_start sub_80EDB70 -sub_80EDB70: @ 80EDB70 - push {r4,lr} - adds r4, r0, 0 - ldr r1, [r4, 0x18] - ldrh r0, [r1, 0x24] - ldrh r2, [r1, 0x20] - adds r0, r2 - strh r0, [r1, 0x20] - ldr r1, [r4, 0x18] - ldrh r0, [r1, 0x26] - ldrh r2, [r1, 0x22] - adds r0, r2 - strh r0, [r1, 0x22] - ldr r0, [r4, 0x18] - movs r1, 0 - movs r2, 0x2A - bl sub_8007FFC - ldr r0, [r4, 0x18] - ldr r1, _080EDBA4 @ =SpriteCallbackDummy - str r1, [r0, 0x1C] - movs r1, 0x1 - bl StartSpriteAffineAnim - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EDBA4: .4byte SpriteCallbackDummy - thumb_func_end sub_80EDB70 - - thumb_func_start nullsub_83 -nullsub_83: @ 80EDBA8 - bx lr - thumb_func_end nullsub_83 - - thumb_func_start sub_80EDBAC -sub_80EDBAC: @ 80EDBAC - push {r4-r7,lr} - adds r7, r0, 0 - movs r6, 0 - ldr r5, _080EDBE0 @ =gUnknown_840BBB8 -_080EDBB4: - lsls r0, r6, 2 - adds r4, r7, 0 - adds r4, 0x28 - adds r4, r0 - ldr r0, [r4] - movs r1, 0x1 - bl StartSpriteAffineAnim - ldr r0, [r4] - ldr r1, _080EDBE4 @ =nullsub_83 - str r1, [r0, 0x1C] - ldrb r1, [r5] - ldrb r2, [r5, 0x1] - bl sub_8007FFC - adds r5, 0x2 - adds r6, 0x1 - cmp r6, 0x3 - ble _080EDBB4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080EDBE0: .4byte gUnknown_840BBB8 -_080EDBE4: .4byte nullsub_83 - thumb_func_end sub_80EDBAC - - thumb_func_start sub_80EDBE8 -sub_80EDBE8: @ 80EDBE8 - push {r4,lr} - adds r4, r0, 0 - ldrb r0, [r4, 0x4] - cmp r0, 0 - beq _080EDBF8 - cmp r0, 0x1 - beq _080EDC0C - b _080EDC34 -_080EDBF8: - movs r2, 0x80 - lsls r2, 3 - movs r0, 0 - movs r1, 0 - bl FillPalette - ldrb r0, [r4, 0x4] - adds r0, 0x1 - strb r0, [r4, 0x4] - b _080EDC34 -_080EDC0C: - bl FreeTempTileDataBuffersIfPossible - lsls r0, 24 - cmp r0, 0 - bne _080EDC34 - ldrb r0, [r4, 0x5] - bl DestroyTask - adds r0, r4, 0 - bl Free - movs r0, 0x2 - bl DisableInterrupts - movs r0, 0 - bl SetHBlankCallback - ldr r0, _080EDC3C @ =CB2_InitTitleScreen - bl SetMainCallback2 -_080EDC34: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EDC3C: .4byte CB2_InitTitleScreen - thumb_func_end sub_80EDBE8 - - thumb_func_start sub_80EDC40 -sub_80EDC40: @ 80EDC40 - push {r4-r6,lr} - movs r5, 0 - ldr r4, _080EDCE4 @ =gUnknown_840BBC0 -_080EDC46: - adds r0, r4, 0 - bl LoadCompressedSpriteSheet - adds r4, 0x8 - adds r5, 0x1 - cmp r5, 0x4 - bls _080EDC46 - ldr r0, _080EDCE8 @ =gUnknown_840BBE8 - bl LoadSpritePalettes - ldr r6, _080EDCEC @ =gUnknown_203AB0E - movs r0, 0x60 - strh r0, [r6] - ldr r5, _080EDCF0 @ =gUnknown_203AB10 - movs r0, 0x10 - strh r0, [r5] - ldr r1, _080EDCF4 @ =gUnknown_203AB12 - movs r0, 0x7 - strh r0, [r1] - ldr r0, _080EDCF8 @ =gUnknown_203AB14 - movs r2, 0x5 - strh r2, [r0] - ldr r1, _080EDCFC @ =gUnknown_203AB16 - movs r0, 0x8 - strh r0, [r1] - ldr r1, _080EDD00 @ =gUnknown_203AB18 - movs r0, 0x5A - strh r0, [r1] - ldr r1, _080EDD04 @ =gUnknown_203AB1A - movs r0, 0x78 - strh r0, [r1] - ldr r0, _080EDD08 @ =gUnknown_203AB1E - movs r1, 0x1 - strh r1, [r0] - ldr r0, _080EDD0C @ =gUnknown_203AB20 - strh r1, [r0] - ldr r0, _080EDD10 @ =gUnknown_203AB22 - strh r2, [r0] - ldr r0, _080EDD14 @ =gUnknown_203AB24 - strh r2, [r0] - ldr r4, _080EDD18 @ =gUnknown_203AB28 - ldr r0, [r4] - cmp r0, 0 - bne _080EDCA2 - ldr r0, _080EDD1C @ =0x151b9245 - str r0, [r4] -_080EDCA2: - ldr r0, _080EDD20 @ =gUnknown_840BC6C - movs r1, 0xF8 - movs r2, 0x37 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _080EDCDE - ldr r0, _080EDD24 @ =gSprites - lsls r3, r1, 4 - adds r3, r1 - lsls r3, 2 - adds r2, r3, r0 - movs r1, 0xF8 - lsls r1, 4 - strh r1, [r2, 0x2E] - movs r1, 0xDC - lsls r1, 2 - strh r1, [r2, 0x30] - ldrh r1, [r6] - strh r1, [r2, 0x32] - ldrh r1, [r5] - strh r1, [r2, 0x34] - adds r0, r3 - adds r0, 0x3A - ldr r1, [r4] - bl StoreWordInTwoHalfwords -_080EDCDE: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080EDCE4: .4byte gUnknown_840BBC0 -_080EDCE8: .4byte gUnknown_840BBE8 -_080EDCEC: .4byte gUnknown_203AB0E -_080EDCF0: .4byte gUnknown_203AB10 -_080EDCF4: .4byte gUnknown_203AB12 -_080EDCF8: .4byte gUnknown_203AB14 -_080EDCFC: .4byte gUnknown_203AB16 -_080EDD00: .4byte gUnknown_203AB18 -_080EDD04: .4byte gUnknown_203AB1A -_080EDD08: .4byte gUnknown_203AB1E -_080EDD0C: .4byte gUnknown_203AB20 -_080EDD10: .4byte gUnknown_203AB22 -_080EDD14: .4byte gUnknown_203AB24 -_080EDD18: .4byte gUnknown_203AB28 -_080EDD1C: .4byte 0x151b9245 -_080EDD20: .4byte gUnknown_840BC6C -_080EDD24: .4byte gSprites - thumb_func_end sub_80EDC40 - thumb_func_start sub_80EDD28 sub_80EDD28: @ 80EDD28 push {r4-r7,lr} diff --git a/src/intro.c b/src/intro.c index 944f661dc..19e59401f 100644 --- a/src/intro.c +++ b/src/intro.c @@ -14,6 +14,9 @@ #include "save.h" #include "sound.h" #include "new_game.h" +#include "title_screen.h" +#include "decompress.h" +#include "util.h" #include "constants/songs.h" struct IntroSequenceData @@ -21,17 +24,18 @@ struct IntroSequenceData void (*field_0000)(struct IntroSequenceData *); u8 field_0004; u8 field_0005; - u8 filler_0006[2]; + u8 field_0006; u16 field_0008; u16 field_000A; - u8 field_000C[6]; + u8 filler_000C[6]; u16 field_0012; struct Sprite * field_0014; struct Sprite * field_0018; struct Sprite * field_001C; struct Sprite * field_0020; struct Sprite * field_0024; - u8 filler_0028[0x14]; + struct Sprite * field_0028[4]; + u8 filler_0038[0x4]; u8 field_003C[0x400]; u8 field_043C[0x400]; u8 filler_083C[0x2080]; @@ -40,6 +44,27 @@ struct IntroSequenceData EWRAM_DATA struct GcmbStruct gUnknown_203AAD4 = {0}; EWRAM_DATA u16 gUnknown_203AB00 = 0; EWRAM_DATA u16 gUnknown_203AB02 = 0; +EWRAM_DATA u16 gUnknown_203AB04 = 0; +EWRAM_DATA u16 gUnknown_203AB06 = 0; +EWRAM_DATA u16 gUnknown_203AB08 = 0; +EWRAM_DATA u16 gUnknown_203AB0A = 0; +EWRAM_DATA u16 gUnknown_203AB0C = 0; +EWRAM_DATA u16 gUnknown_203AB0E = 0; +EWRAM_DATA u16 gUnknown_203AB10 = 0; +EWRAM_DATA u16 gUnknown_203AB12 = 0; +EWRAM_DATA u16 gUnknown_203AB14 = 0; +EWRAM_DATA u16 gUnknown_203AB16 = 0; +EWRAM_DATA u16 gUnknown_203AB18 = 0; +EWRAM_DATA u16 gUnknown_203AB1A = 0; +EWRAM_DATA u16 gUnknown_203AB1C = 0; +EWRAM_DATA u16 gUnknown_203AB1E = 0; +EWRAM_DATA u16 gUnknown_203AB20 = 0; +EWRAM_DATA u16 gUnknown_203AB22 = 0; +EWRAM_DATA u16 gUnknown_203AB24 = 0; +EWRAM_DATA u16 gUnknown_203AB26 = 0; +EWRAM_DATA u32 gUnknown_203AB28 = 0; +EWRAM_DATA u16 gUnknown_203AB2C = 0; +EWRAM_DATA u16 gUnknown_203AB2E = 0; void sub_80EC870(void); void sub_80EC9D4(void); @@ -68,12 +93,15 @@ void sub_80ED714(u8 taskId); void sub_80ED7D4(struct IntroSequenceData * ptr); void sub_80ED818(struct Sprite * sprite); void sub_80ED898(struct IntroSequenceData * ptr); +void sub_80EDAF0(struct IntroSequenceData * ptr); +void sub_80EDB70(struct IntroSequenceData * ptr); +void sub_80EDBAC(struct IntroSequenceData * ptr); void sub_80EDBE8(struct IntroSequenceData * ptr); -void sub_80ED40C(u8 taskId); void sub_80EDC40(void); void sub_80EDDF0(void); void sub_80EDED8(void); struct Sprite * sub_80EDF68(void); +void sub_80EDF94(struct IntroSequenceData * ptr); void sub_80EE1C4(struct Sprite * sprite); void sub_80EE200(u8 taskId); void sub_80EE29C(struct Sprite * sprite); @@ -82,7 +110,12 @@ void sub_80EE4DC(struct Sprite * sprite); void sub_80EE4F8(struct IntroSequenceData * ptr); void sub_80EE528(struct Sprite * sprite, u16 a1, u16 a2, u16 a3); bool32 sub_80EE5C8(struct IntroSequenceData * ptr); +void sub_80EE5E4(struct IntroSequenceData * ptr); +void sub_80EE6A4(struct IntroSequenceData * ptr); +bool8 sub_80EE850(struct IntroSequenceData * ptr); void sub_80EE8E4(struct Sprite * sprite); +void sub_80EE970(struct Sprite * sprite, s16 a1, u16 a2, u8 a3); +void sub_80EEA94(struct IntroSequenceData * ptr); void sub_80EEBE4(void); extern const u32 gMultiBootProgram_PokemonColosseum_Start[]; @@ -1205,3 +1238,247 @@ void sub_80ED818(struct Sprite * sprite) break; } } + +void sub_80ED898(struct IntroSequenceData * this) +{ + switch (this->field_0004) + { + case 0: + this->field_0012 = 0; + this->field_0004++; + break; + case 1: + this->field_0012++; + if (this->field_0012 > 30) + { + sub_80EE5E4(this); + this->field_0004++; + } + break; + case 2: + if (!sub_80EE850(this)) + { + this->field_0012 = 0; + this->field_0004++; + } + break; + case 3: + this->field_0012++; + if (this->field_0012 > 30) + { + sub_80ED760(); + sub_80EDF94(this); + this->field_0012 = 0; + this->field_0004++; + } + break; + case 4: + if (this->field_0006) + { + sub_80EE6A4(this); + this->field_0004++; + } + break; + case 5: + if (!sub_80EE850(this)) + { + sub_80ED788(); + this->field_0012 = 0; + this->field_0004++; + } + break; + case 6: + this->field_0012++; + if (this->field_0012 > 16) + { + sub_80EE970(this->field_0018, 8, 12, 5); + this->field_0004++; + } + break; + case 7: + if (!sub_80EE850(this)) + { + sub_80EE970(this->field_0018, 8, 12, 5); + this->field_0004++; + } + break; + case 8: + if (!sub_80EE850(this)) + { + this->field_0012 = 0; + this->field_0004++; + } + break; + case 9: + this->field_0012++; + if (this->field_0012 > 20) + { + sub_80EEA94(this); + this->field_0012 = 0; + this->field_0004++; + } + break; + case 10: + if (!sub_80ED7B0()) + { + sub_80ED760(); + sub_80EDAF0(this); + this->field_0004++; + } + break; + case 11: + HideBg(0); + this->field_0012 = 0; + this->field_0004++; + break; + case 12: + this->field_0012++; + if (this->field_0012 == 48) + BeginNormalPaletteFade(0x00000006, 2, 0, 16, RGB_WHITE); + if (this->field_0012 > 120) + { + sub_80EDB70(this); + sub_80EDBAC(this); + this->field_0004++; + this->field_0012 = 0; + } + break; + case 13: + this->field_0012++; + if (this->field_0012 > 8) + { + CpuFill16(RGB_WHITE, gPlttBufferUnfaded + 16, 64); + BeginNormalPaletteFade(0xFFFFFFFE, -2, 0, 16, RGB_BLACK); + this->field_0004++; + } + break; + case 14: + if (!gPaletteFade.active) + { + this->field_0012 = 0; + this->field_0004++; + } + break; + case 15: + this->field_0012++; + if (this->field_0012 > 60) + sub_80ECAA8(this, sub_80EDBE8); + break; + default: + if (JOY_NEW(R_BUTTON)) + { + BlendPalettes(0xFFFF0064, 0, RGB_WHITE); + this->field_0018->pos2.x = 0; + this->field_0018->pos1.x = 0xB4; + this->field_0004 = 1; + this->field_0012 = 30; + } + break; + } +} + +void sub_80EDAD8(struct Sprite * sprite) +{ + CalcCenterToCornerVec(sprite, sprite->oam.shape, sprite->oam.size, sprite->oam.affineMode); +} + +void sub_80EDAF0(struct IntroSequenceData * this) +{ + int i; + + for (i = 0; i < 4; i++) + { + int x = (i & 1) * 48 + 49; + int y = (i / 2) * 64 + 72; + u8 spriteId = CreateSprite(&gUnknown_840BE4C, x, y, 8); + if (spriteId != MAX_SPRITES) + { + StartSpriteAnim(&gSprites[spriteId], i); + this->field_0028[i] = &gSprites[spriteId]; + if (i & 1) + this->field_0028[i]->oam.shape = ST_OAM_V_RECTANGLE; + sub_80EDAD8(this->field_0028[i]); + } + } +} + +void sub_80EDB70(struct IntroSequenceData * this) +{ + this->field_0018->pos1.x += this->field_0018->pos2.x; + this->field_0018->pos1.y += this->field_0018->pos2.y; + sub_8007FFC(this->field_0018, 0, 0x2A); + this->field_0018->callback = SpriteCallbackDummy; + StartSpriteAffineAnim(this->field_0018, 1); +} + +void nullsub_83(struct Sprite * sprite) +{ + +} + +void sub_80EDBAC(struct IntroSequenceData * this) +{ + int i; + + for (i = 0; i < 4; i++) + { + StartSpriteAffineAnim(this->field_0028[i], 1); + this->field_0028[i]->callback = nullsub_83; + sub_8007FFC(this->field_0028[i], gUnknown_840BBB8[i][0], gUnknown_840BBB8[i][1]); + } +} + +void sub_80EDBE8(struct IntroSequenceData * this) +{ + switch (this->field_0004) + { + case 0: + FillPalette(RGB_BLACK, 0, 0x400); + this->field_0004++; + break; + case 1: + if (!FreeTempTileDataBuffersIfPossible()) + { + DestroyTask(this->field_0005); + Free(this); + DisableInterrupts(INTR_FLAG_HBLANK); + SetHBlankCallback(NULL); + SetMainCallback2(CB2_InitTitleScreen); + } + break; + } +} + +void sub_80EDC40(void) +{ + int i; + u8 spriteId; + + for (i = 0; i < NELEMS(gUnknown_840BBC0); i++) + { + LoadCompressedSpriteSheet(&gUnknown_840BBC0[i]); + } + LoadSpritePalettes(gUnknown_840BBE8); + gUnknown_203AB0E = 0x60; + gUnknown_203AB10 = 0x10; + gUnknown_203AB12 = 0x07; + gUnknown_203AB14 = 0x05; + gUnknown_203AB16 = 0x08; + gUnknown_203AB18 = 0x5A; + gUnknown_203AB1A = 0x78; + gUnknown_203AB1E = 0x01; + gUnknown_203AB20 = 0x01; + gUnknown_203AB22 = 0x05; + gUnknown_203AB24 = 0x05; + if (gUnknown_203AB28 == 0) + gUnknown_203AB28 = 0x151B9245; + spriteId = CreateSprite(&gUnknown_840BC6C, 0xF8, 0x37, 0); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].data[0] = 0xF80; + gSprites[spriteId].data[1] = 0x370; + gSprites[spriteId].data[2] = gUnknown_203AB0E; + gSprites[spriteId].data[3] = gUnknown_203AB10; + StoreWordInTwoHalfwords(&gSprites[spriteId].data[6], gUnknown_203AB28); + } +} diff --git a/sym_ewram.txt b/sym_ewram.txt index ec2d2149d..58be99913 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1114,63 +1114,7 @@ gUnknown_203AAC6: @ 203AAC6 .include "src/intro.o" -gUnknown_203AB04: @ 203AB04 - .space 0x2 - -gUnknown_203AB06: @ 203AB06 - .space 0x2 - -gUnknown_203AB08: @ 203AB08 - .space 0x2 - -gUnknown_203AB0A: @ 203AB0A - .space 0x2 - -gUnknown_203AB0C: @ 203AB0C - .space 0x2 - -gUnknown_203AB0E: @ 203AB0E - .space 0x2 - -gUnknown_203AB10: @ 203AB10 - .space 0x2 - -gUnknown_203AB12: @ 203AB12 - .space 0x2 - -gUnknown_203AB14: @ 203AB14 - .space 0x2 - -gUnknown_203AB16: @ 203AB16 - .space 0x2 - -gUnknown_203AB18: @ 203AB18 - .space 0x2 - -gUnknown_203AB1A: @ 203AB1A - .space 0x2 - -gUnknown_203AB1C: @ 203AB1C - .space 0x2 - -gUnknown_203AB1E: @ 203AB1E - .space 0x2 - -gUnknown_203AB20: @ 203AB20 - .space 0x2 - -gUnknown_203AB22: @ 203AB22 - .space 0x2 - -gUnknown_203AB24: @ 203AB24 - .space 0x4 - -gUnknown_203AB28: @ 203AB28 - .space 0x4 - -gUnknown_203AB2C: @ 203AB2C - .space 0x4 - + .align 2 gUnknown_203AB30: @ 203AB30 .space 0x4 From 231b2aeb83f206396a884c862c669111b9faa078 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 4 Jul 2019 11:40:05 -0400 Subject: [PATCH 12/17] Foundation to support LG, Rev1 in the future --- Makefile | 38 ++++++++++++++++++++++++++++++++------ asm/title_screen.s | 4 ++++ include/config.h | 2 -- include/constants/global.h | 4 +++- src/main.c | 7 ++++++- 5 files changed, 45 insertions(+), 10 deletions(-) diff --git a/Makefile b/Makefile index b8b021287..eb131ba38 100644 --- a/Makefile +++ b/Makefile @@ -3,15 +3,41 @@ CPP := $(CC) -E LD := tools/binutils/bin/arm-none-eabi-ld OBJCOPY := tools/binutils/bin/arm-none-eabi-objcopy +GAME_VERSION := FIRERED +REVISION := 0 +GAME_LANGUAGE := ENGLISH + +# So long as baserom.gba is required, we error out if the +# user tries to build any ROM other than FireRed. +ifneq ($(GAME_VERSION),FIRERED) +$(error We can only build English Pokemon FireRed v1.0 currently) +else ifneq ($(REVISION),0) +$(error We can only build English Pokemon FireRed v1.0 currently) +else ifneq ($(GAME_LANGUAGE),ENGLISH) +$(error We can only build English Pokemon FireRed v1.0 currently) +endif + +ifeq ($(GAME_VERSION),FIRERED) TITLE := POKEMON FIRE -GAME_CODE := BPRE +GAME_CODE := BPR +BUILD_NAME := firered +else +TITLE := POKEMON LEAF +GAME_CODE := BPL +BUILD_NAME := leafgreen +endif +ifeq ($(GAME_LANGUAGE),ENGLISH) +GAME_CODE := $(GAME_CODE)E +endif +ifneq ($(REVISION),0) +BUILD_NAME := $(BUILD_NAME)_rev$(REVISION) +endif MAKER_CODE := 01 -REVISION := 0 SHELL := /bin/bash -o pipefail -ROM := pokefirered.gba -OBJ_DIR := build/firered +ROM := poke$(BUILD_NAME).gba +OBJ_DIR := build/$(BUILD_NAME) ELF = $(ROM:.gba=.elf) MAP = $(ROM:.gba=.map) @@ -26,12 +52,12 @@ ASM_BUILDDIR = $(OBJ_DIR)/$(ASM_SUBDIR) DATA_ASM_BUILDDIR = $(OBJ_DIR)/$(DATA_ASM_SUBDIR) SONG_BUILDDIR = $(OBJ_DIR)/$(SONG_SUBDIR) -ASFLAGS := -mcpu=arm7tdmi +ASFLAGS := -mcpu=arm7tdmi --defsym $(GAME_VERSION)=1 --defsym REVISION=$(REVISION) --defsym $(GAME_LANGUAGE)=1 CC1 := tools/agbcc/bin/agbcc override CFLAGS += -mthumb-interwork -Wimplicit -Wparentheses -Werror -O2 -fhex-asm -CPPFLAGS := -I tools/agbcc -I tools/agbcc/include -iquote include -nostdinc -undef +CPPFLAGS := -I tools/agbcc -I tools/agbcc/include -iquote include -nostdinc -undef -D$(GAME_VERSION) -DREVISION=$(REVISION) -D$(GAME_LANGUAGE) LDFLAGS = -Map ../../$(MAP) diff --git a/asm/title_screen.s b/asm/title_screen.s index 1646e6ce4..3801bb4e2 100644 --- a/asm/title_screen.s +++ b/asm/title_screen.s @@ -1056,7 +1056,11 @@ _080791DE: lsrs r5, r0, 24 cmp r5, 0 bne _080792A6 + .ifdef FIRERED movs r0, 0x6 + .else + movs r0, 0x3 + .endif movs r1, 0 bl PlayCry1 ldrb r0, [r4, 0xC] diff --git a/include/config.h b/include/config.h index f094c95bd..491eadf13 100644 --- a/include/config.h +++ b/include/config.h @@ -15,8 +15,6 @@ // since not all baseroms and pointers have been dumped yet and will result in // a broken ROM. -#define ENGLISH - #ifdef ENGLISH #define UNITS_IMPERIAL #else diff --git a/include/constants/global.h b/include/constants/global.h index b1c8fed3e..3cac8d473 100644 --- a/include/constants/global.h +++ b/include/constants/global.h @@ -23,10 +23,12 @@ enum LanguageId { LANGUAGE_ITALIAN = 4, LANGUAGE_GERMAN = 5, // 6 goes unused but the theory is it was meant to be Korean - LANGUAGE_SPANISH = 7, + LANGUAGE_SPANISH = 7, }; +#ifdef ENGLISH #define GAME_LANGUAGE (LANGUAGE_ENGLISH) +#endif #define PC_ITEMS_COUNT 30 #define BAG_ITEMS_COUNT 42 diff --git a/src/main.c b/src/main.c index ae9a33e81..0d4e2ee1e 100644 --- a/src/main.c +++ b/src/main.c @@ -55,7 +55,12 @@ static void VCountIntr(void); static void SerialIntr(void); static void IntrDummy(void); -const u8 gGameVersion = VERSION_FIRE_RED; +#if defined(FIRERED) +#define GAME_VERSION VERSION_FIRE_RED +#elif defined(LEAF_GREEN) +#define GAME_VERSION VERSION_LEAF_GREEN +#endif +const u8 gGameVersion = GAME_VERSION; const u8 gGameLanguage = GAME_LANGUAGE; From b5f0c606dd5e7e9e4488ea63e819c5f51298890c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 4 Jul 2019 13:27:30 -0400 Subject: [PATCH 13/17] intro: through sub_80EDD28 --- asm/intro.s | 97 ---------------------------------------------- asm/title_screen.s | 4 +- src/intro.c | 25 +++++++++++- 3 files changed, 26 insertions(+), 100 deletions(-) diff --git a/asm/intro.s b/asm/intro.s index 87afc0815..854a30a76 100644 --- a/asm/intro.s +++ b/asm/intro.s @@ -5,103 +5,6 @@ .text - thumb_func_start sub_80EDD28 -sub_80EDD28: @ 80EDD28 - push {r4-r7,lr} - lsls r0, 16 - lsrs r5, r0, 16 - lsls r1, 16 - lsrs r3, r1, 16 - lsls r2, 16 - lsrs r2, 16 - ldr r0, _080EDDCC @ =gUnknown_203AB12 - ldrh r0, [r0] - ands r2, r0 - adds r2, 0x2 - lsls r2, 16 - lsrs r4, r2, 16 - ldr r1, _080EDDD0 @ =gUnknown_203AB2C - ldrh r0, [r1] - adds r2, r0, 0 - adds r0, r2, 0x1 - strh r0, [r1] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _080EDD5C - movs r6, 0x3 - negs r6, r6 - adds r0, r6, 0 - strh r0, [r1] -_080EDD5C: - lsls r1, r5, 16 - asrs r1, 16 - lsls r0, r4, 16 - asrs r7, r0, 16 - adds r1, r7 - lsls r0, r3, 16 - asrs r0, 16 - lsls r2, 16 - asrs r6, r2, 16 - adds r0, r6 - lsls r0, 16 - lsrs r3, r0, 16 - lsls r1, 16 - asrs r4, r1, 16 - ldr r0, _080EDDD4 @ =0xffff0000 - adds r1, r0 - lsrs r1, 16 - cmp r1, 0xEE - bhi _080EDDC6 - ldr r0, _080EDDD8 @ =gUnknown_840BC84 - lsls r1, r3, 16 - asrs r5, r1, 16 - adds r1, r4, 0 - adds r2, r5, 0 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x40 - beq _080EDDC6 - ldr r0, _080EDDDC @ =gSprites - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldr r0, _080EDDE0 @ =gUnknown_203AB22 - ldrh r0, [r0] - lsls r4, r0 - strh r4, [r1, 0x2E] - ldr r2, _080EDDE4 @ =gUnknown_203AB24 - adds r0, r5, 0 - ldrh r2, [r2] - lsls r0, r2 - strh r0, [r1, 0x30] - ldr r0, _080EDDE8 @ =gUnknown_203AB1E - ldrh r0, [r0] - muls r0, r7 - strh r0, [r1, 0x32] - ldr r0, _080EDDEC @ =gUnknown_203AB20 - ldrh r0, [r0] - muls r0, r6 - strh r0, [r1, 0x34] -_080EDDC6: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080EDDCC: .4byte gUnknown_203AB12 -_080EDDD0: .4byte gUnknown_203AB2C -_080EDDD4: .4byte 0xffff0000 -_080EDDD8: .4byte gUnknown_840BC84 -_080EDDDC: .4byte gSprites -_080EDDE0: .4byte gUnknown_203AB22 -_080EDDE4: .4byte gUnknown_203AB24 -_080EDDE8: .4byte gUnknown_203AB1E -_080EDDEC: .4byte gUnknown_203AB20 - thumb_func_end sub_80EDD28 - thumb_func_start sub_80EDDF0 sub_80EDDF0: @ 80EDDF0 push {lr} diff --git a/asm/title_screen.s b/asm/title_screen.s index 3801bb4e2..e62cc9a9f 100644 --- a/asm/title_screen.s +++ b/asm/title_screen.s @@ -1057,9 +1057,9 @@ _080791DE: cmp r5, 0 bne _080792A6 .ifdef FIRERED - movs r0, 0x6 + movs r0, 0x6 @ CHARIZARD .else - movs r0, 0x3 + movs r0, 0x3 @ VENUSAUR .endif movs r1, 0 bl PlayCry1 diff --git a/src/intro.c b/src/intro.c index 19e59401f..555c5a12c 100644 --- a/src/intro.c +++ b/src/intro.c @@ -63,7 +63,7 @@ EWRAM_DATA u16 gUnknown_203AB22 = 0; EWRAM_DATA u16 gUnknown_203AB24 = 0; EWRAM_DATA u16 gUnknown_203AB26 = 0; EWRAM_DATA u32 gUnknown_203AB28 = 0; -EWRAM_DATA u16 gUnknown_203AB2C = 0; +EWRAM_DATA s16 gUnknown_203AB2C = 0; EWRAM_DATA u16 gUnknown_203AB2E = 0; void sub_80EC870(void); @@ -1482,3 +1482,26 @@ void sub_80EDC40(void) StoreWordInTwoHalfwords(&gSprites[spriteId].data[6], gUnknown_203AB28); } } + +void sub_80EDD28(s16 x, s16 y, s16 a2) +{ + u8 spriteId; + s16 r4 = (a2 & gUnknown_203AB12) + 2; + s16 r2 = gUnknown_203AB2C; + gUnknown_203AB2C++; + if (gUnknown_203AB2C > 3) + gUnknown_203AB2C = -3; + x += r4; + y += r2; + if (x >= 1 && x <= 0xEF) + { + spriteId = CreateSprite(&gUnknown_840BC84, x, y, 1); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].data[0] = x << gUnknown_203AB22; + gSprites[spriteId].data[1] = y << gUnknown_203AB24; + gSprites[spriteId].data[2] = gUnknown_203AB1E * r4; + gSprites[spriteId].data[3] = gUnknown_203AB20 * r2; + } + } +} From 5bad031d18f1e0813e12680d4e257ebaa6f4a0e7 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 4 Jul 2019 18:08:32 -0400 Subject: [PATCH 14/17] intro: through sub_80EE350 --- asm/intro.s | 794 -------------------------------------------------- src/intro.c | 272 ++++++++++++++++- sym_ewram.txt | 3 - 3 files changed, 266 insertions(+), 803 deletions(-) diff --git a/asm/intro.s b/asm/intro.s index 854a30a76..d5ebd1f99 100644 --- a/asm/intro.s +++ b/asm/intro.s @@ -5,800 +5,6 @@ .text - thumb_func_start sub_80EDDF0 -sub_80EDDF0: @ 80EDDF0 - push {lr} - ldr r0, _080EDE00 @ =sub_80EDE04 - movs r1, 0x1 - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_080EDE00: .4byte sub_80EDE04 - thumb_func_end sub_80EDDF0 - - thumb_func_start sub_80EDE04 -sub_80EDE04: @ 80EDE04 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - lsls r0, 2 - add r0, r9 - lsls r0, 3 - ldr r1, _080EDEB0 @ =gTasks+0x8 - adds r0, r1 - mov r8, r0 - ldrh r1, [r0, 0x4] - adds r1, 0x1 - strh r1, [r0, 0x4] - ldrh r0, [r0, 0x6] - adds r0, 0x1 - mov r2, r8 - strh r0, [r2, 0x6] - lsls r1, 16 - asrs r1, 16 - cmp r1, 0x6 - ble _080EDECA - movs r0, 0 - strh r0, [r2, 0x4] - ldrb r6, [r2] - ldr r0, _080EDEB4 @ =gUnknown_840BC84 - ldr r1, _080EDEB8 @ =gUnknown_840BC08 - lsls r6, 2 - adds r6, r1 - movs r3, 0 - ldrsh r1, [r6, r3] - movs r3, 0x2 - ldrsh r2, [r6, r3] - movs r3, 0x2 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - ldr r5, _080EDEBC @ =gSprites - adds r7, r4, r5 - adds r0, r7, 0 - movs r1, 0x1 - bl StartSpriteAnim - adds r5, 0x1C - adds r4, r5 - ldr r0, _080EDEC0 @ =sub_80EE40C - str r0, [r4] - ldrh r0, [r6, 0x2] - lsls r0, 4 - strh r0, [r7, 0x30] - movs r0, 0x78 - strh r0, [r7, 0x32] - mov r1, r8 - ldrh r0, [r1, 0x2] - strh r0, [r7, 0x34] - lsls r0, 16 - cmp r0, 0 - bge _080EDE88 - movs r0, 0x1 - strh r0, [r7, 0x34] -_080EDE88: - mov r2, r8 - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x8 - bls _080EDECA - ldrh r0, [r2, 0x2] - adds r0, 0x1 - strh r0, [r2, 0x2] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080EDEC4 - mov r0, r9 - bl DestroyTask - b _080EDECA - .align 2, 0 -_080EDEB0: .4byte gTasks+0x8 -_080EDEB4: .4byte gUnknown_840BC84 -_080EDEB8: .4byte gUnknown_840BC08 -_080EDEBC: .4byte gSprites -_080EDEC0: .4byte sub_80EE40C -_080EDEC4: - movs r0, 0 - mov r3, r8 - strh r0, [r3] -_080EDECA: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80EDE04 - - thumb_func_start sub_80EDED8 -sub_80EDED8: @ 80EDED8 - push {lr} - ldr r0, _080EDEE8 @ =sub_80EDEEC - movs r1, 0x2 - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_080EDEE8: .4byte sub_80EDEEC - thumb_func_end sub_80EDED8 - - thumb_func_start sub_80EDEEC -sub_80EDEEC: @ 80EDEEC - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _080EDF5C @ =gTasks+0x8 - adds r4, r0, r1 - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080EDF44 - ldrh r1, [r4, 0x2] - ldrb r2, [r4, 0x2] - adds r0, r1, 0x4 - strh r0, [r4, 0x2] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x8 - bls _080EDF1A - subs r0, r1, 0x5 - strh r0, [r4, 0x2] -_080EDF1A: - ldr r0, _080EDF60 @ =gUnknown_840BCBC - ldr r1, _080EDF64 @ =gUnknown_840BC08 - lsls r2, 2 - adds r2, r1 - movs r3, 0 - ldrsh r1, [r2, r3] - movs r3, 0x2 - ldrsh r2, [r2, r3] - movs r3, 0x3 - bl CreateSprite - ldrh r0, [r4, 0x4] - adds r0, 0x1 - strh r0, [r4, 0x4] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - ble _080EDF44 - adds r0, r5, 0 - bl DestroyTask -_080EDF44: - ldrh r0, [r4] - adds r0, 0x1 - strh r0, [r4] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x9 - ble _080EDF56 - movs r0, 0 - strh r0, [r4] -_080EDF56: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080EDF5C: .4byte gTasks+0x8 -_080EDF60: .4byte gUnknown_840BCBC -_080EDF64: .4byte gUnknown_840BC08 - thumb_func_end sub_80EDEEC - - thumb_func_start sub_80EDF68 -sub_80EDF68: @ 80EDF68 - push {lr} - ldr r0, _080EDF8C @ =gUnknown_840BCDC - movs r1, 0x78 - movs r2, 0x46 - movs r3, 0x4 - bl CreateSprite - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080EDF90 @ =gSprites - adds r0, r1 - pop {r1} - bx r1 - .align 2, 0 -_080EDF8C: .4byte gUnknown_840BCDC -_080EDF90: .4byte gSprites - thumb_func_end sub_80EDF68 - - thumb_func_start sub_80EDF94 -sub_80EDF94: @ 80EDF94 - push {r4,r5,lr} - adds r4, r0, 0 - movs r0, 0 - strb r0, [r4, 0x6] - ldr r0, _080EDFD0 @ =sub_80EE024 - movs r1, 0x4 - bl CreateTask - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - adds r0, r5, 0 - movs r1, 0x5 - adds r2, r4, 0 - bl SetWordTaskArg - ldr r0, _080EDFD4 @ =gTasks - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - adds r4, r0 - movs r0, 0x40 - strh r0, [r4, 0xE] - movs r0, 0 - bl GetBgX - strh r0, [r4, 0x10] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080EDFD0: .4byte sub_80EE024 -_080EDFD4: .4byte gTasks - thumb_func_end sub_80EDF94 - - thumb_func_start sub_80EDFD8 -sub_80EDFD8: @ 80EDFD8 - push {r4-r6,lr} - mov r6, r8 - push {r6} - adds r4, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - mov r8, r3 - lsls r4, 15 - movs r0, 0xF8 - lsls r0, 9 - adds r4, r0 - movs r0, 0 - adds r1, r4, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0 - mov r1, r8 - movs r2, 0 - bl ChangeBgX - lsls r5, 8 - movs r0, 0 - adds r1, r5, 0 - movs r2, 0x2 - bl ChangeBgX - lsls r6, 8 - movs r0, 0 - adds r1, r6, 0 - movs r2, 0x2 - bl ChangeBgY - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80EDFD8 - - thumb_func_start sub_80EE024 -sub_80EE024: @ 80EE024 - push {r4,r5,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080EE048 @ =gTasks+0x8 - adds r5, r0, r1 - movs r1, 0 - ldrsh r0, [r5, r1] - cmp r0, 0x5 - bhi _080EE11C - lsls r0, 2 - ldr r1, _080EE04C @ =_080EE050 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080EE048: .4byte gTasks+0x8 -_080EE04C: .4byte _080EE050 - .align 2, 0 -_080EE050: - .4byte _080EE068 - .4byte _080EE07A - .4byte _080EE094 - .4byte _080EE0BC - .4byte _080EE0EE - .4byte _080EE114 -_080EE068: - movs r0, 0x2 - strh r0, [r5, 0xE] - movs r0, 0 - strh r0, [r5, 0x2] - movs r0, 0x6 - strh r0, [r5, 0x10] - movs r0, 0x20 - strh r0, [r5, 0x12] - b _080EE10C -_080EE07A: - ldrh r0, [r5, 0x6] - subs r0, 0x2 - strh r0, [r5, 0x6] - ldrh r0, [r5, 0x2] - adds r0, 0x1 - strh r0, [r5, 0x2] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xF - ble _080EE11C - movs r0, 0 - strh r0, [r5, 0x2] - b _080EE10C -_080EE094: - ldrh r0, [r5, 0x2] - adds r0, 0x1 - strh r0, [r5, 0x2] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xE - bne _080EE0AE - adds r0, r2, 0 - movs r1, 0x5 - bl GetWordTaskArg - movs r1, 0x1 - strb r1, [r0, 0x6] -_080EE0AE: - movs r2, 0x2 - ldrsh r0, [r5, r2] - cmp r0, 0xF - ble _080EE11C - movs r0, 0 - strh r0, [r5, 0x2] - b _080EE10C -_080EE0BC: - ldrh r0, [r5, 0x6] - adds r0, 0x8 - strh r0, [r5, 0x6] - ldrh r0, [r5, 0x2] - adds r0, 0x1 - strh r0, [r5, 0x2] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bne _080EE0E0 - bl sub_80EE160 - movs r0, 0x20 - strh r0, [r5, 0x10] - movs r0, 0x30 - strh r0, [r5, 0x12] - movs r0, 0x3 - strh r0, [r5, 0xE] -_080EE0E0: - movs r3, 0x2 - ldrsh r0, [r5, r3] - cmp r0, 0x7 - ble _080EE11C - movs r0, 0 - strh r0, [r5, 0x2] - b _080EE10C -_080EE0EE: - ldrh r0, [r5, 0x6] - subs r0, 0x8 - strh r0, [r5, 0x6] - ldrh r0, [r5, 0x2] - adds r0, 0x1 - strh r0, [r5, 0x2] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3 - ble _080EE11C - movs r1, 0 - strh r1, [r5, 0xE] - movs r0, 0x40 - strh r0, [r5, 0x6] - strh r1, [r5, 0x2] -_080EE10C: - ldrh r0, [r5] - adds r0, 0x1 - strh r0, [r5] - b _080EE11C -_080EE114: - adds r0, r2, 0 - bl DestroyTask - b _080EE156 -_080EE11C: - movs r4, 0x6 - ldrsh r3, [r5, r4] - ldr r4, _080EE15C @ =gSineTable - adds r0, r3, 0 - adds r0, 0x40 - lsls r0, 1 - adds r0, r4 - movs r2, 0 - ldrsh r1, [r0, r2] - movs r2, 0x12 - ldrsh r0, [r5, r2] - muls r1, r0 - asrs r1, 8 - negs r1, r1 - movs r0, 0x10 - ldrsh r2, [r5, r0] - lsls r3, 1 - adds r3, r4 - movs r4, 0 - ldrsh r0, [r3, r4] - muls r0, r2 - asrs r0, 8 - subs r2, r0 - movs r3, 0xE - ldrsh r0, [r5, r3] - movs r4, 0x8 - ldrsh r3, [r5, r4] - bl sub_80EDFD8 -_080EE156: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080EE15C: .4byte gSineTable - thumb_func_end sub_80EE024 - - thumb_func_start sub_80EE160 -sub_80EE160: @ 80EE160 - push {r4,lr} - ldr r4, _080EE1BC @ =gUnknown_840BE8C - adds r0, r4, 0 - movs r1, 0x84 - movs r2, 0x4E - movs r3, 0x6 - bl CreateSprite - adds r0, r4, 0 - movs r1, 0x84 - movs r2, 0x76 - movs r3, 0x6 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _080EE1B4 - ldr r0, _080EE1C0 @ =gSprites - lsls r4, r1, 4 - adds r4, r1 - lsls r4, 2 - adds r4, r0 - ldrb r2, [r4, 0x1] - movs r1, 0x3F - adds r0, r1, 0 - ands r0, r2 - movs r2, 0x40 - orrs r0, r2 - strb r0, [r4, 0x1] - ldrb r0, [r4, 0x3] - ands r1, r0 - movs r0, 0x80 - orrs r1, r0 - strb r1, [r4, 0x3] - adds r0, r4, 0 - bl sub_80EDAD8 - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAnim -_080EE1B4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EE1BC: .4byte gUnknown_840BE8C -_080EE1C0: .4byte gSprites - thumb_func_end sub_80EE160 - - thumb_func_start sub_80EE1C4 -sub_80EE1C4: @ 80EE1C4 - push {lr} - adds r3, r0, 0 - movs r0, 0x3E - adds r0, r3 - mov r12, r0 - ldrb r2, [r0] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] - adds r0, r3, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080EE1FA - adds r0, r3, 0 - bl DestroySprite -_080EE1FA: - pop {r0} - bx r0 - thumb_func_end sub_80EE1C4 - - thumb_func_start sub_80EE200 -sub_80EE200: @ 80EE200 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _080EE220 @ =gTasks+0x8 - adds r1, r0, r1 - movs r2, 0 - ldrsh r0, [r1, r2] - cmp r0, 0 - beq _080EE224 - cmp r0, 0x1 - beq _080EE232 - b _080EE28A - .align 2, 0 -_080EE220: .4byte gTasks+0x8 -_080EE224: - movs r3, 0x80 - lsls r3, 3 - adds r0, r3, 0 - strh r0, [r1, 0x2] - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_080EE232: - ldrh r0, [r1, 0x4] - adds r0, 0x1 - strh r0, [r1, 0x4] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x27 - ble _080EE250 - ldrh r2, [r1, 0x2] - movs r3, 0x2 - ldrsh r0, [r1, r3] - cmp r0, 0x10 - ble _080EE250 - adds r0, r2, 0 - subs r0, 0x10 - strh r0, [r1, 0x2] -_080EE250: - movs r0, 0x2 - ldrsh r1, [r1, r0] - movs r0, 0 - movs r2, 0x1 - bl ChangeBgX - ldr r5, _080EE290 @ =gUnknown_203AB30 - str r0, [r5] - ldr r1, _080EE294 @ =0x00007fff - cmp r0, r1 - bls _080EE270 - movs r1, 0x80 - lsls r1, 6 - movs r0, 0 - bl ClearGpuRegBits -_080EE270: - ldr r1, [r5] - ldr r0, _080EE298 @ =0x0000eeff - cmp r1, r0 - bls _080EE28A - movs r1, 0xEF - lsls r1, 8 - movs r0, 0 - movs r2, 0 - bl ChangeBgX - adds r0, r4, 0 - bl DestroyTask -_080EE28A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080EE290: .4byte gUnknown_203AB30 -_080EE294: .4byte 0x00007fff -_080EE298: .4byte 0x0000eeff - thumb_func_end sub_80EE200 - - thumb_func_start sub_80EE29C -sub_80EE29C: @ 80EE29C - push {r4,r5,lr} - sub sp, 0x4 - adds r5, r0, 0 - ldrh r2, [r5, 0x2E] - ldrh r0, [r5, 0x32] - subs r2, r0 - strh r2, [r5, 0x2E] - ldrh r1, [r5, 0x34] - ldrh r0, [r5, 0x30] - adds r1, r0 - strh r1, [r5, 0x30] - ldrh r0, [r5, 0x36] - adds r0, 0x30 - strh r0, [r5, 0x36] - lsls r2, 16 - asrs r2, 20 - strh r2, [r5, 0x20] - lsls r1, 16 - asrs r1, 20 - strh r1, [r5, 0x22] - ldr r1, _080EE340 @ =gSineTable - lsls r0, 16 - asrs r0, 20 - adds r0, 0x40 - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - lsls r0, 16 - asrs r0, 21 - strh r0, [r5, 0x26] - ldrh r0, [r5, 0x38] - adds r0, 0x1 - strh r0, [r5, 0x38] - movs r1, 0x38 - ldrsh r0, [r5, r1] - ldr r1, _080EE344 @ =gUnknown_203AB16 - ldrh r1, [r1] - bl __modsi3 - cmp r0, 0 - beq _080EE324 - adds r4, r5, 0 - adds r4, 0x3A - adds r0, r4, 0 - mov r1, sp - bl LoadWordFromTwoHalfwords - ldr r1, [sp] - ldr r0, _080EE348 @ =0x41c64e6d - muls r1, r0 - ldr r3, _080EE34C @ =0x00006073 - adds r1, r3 - str r1, [sp] - adds r0, r4, 0 - bl StoreWordInTwoHalfwords - ldr r2, [sp] - lsrs r2, 16 - str r2, [sp] - movs r1, 0x20 - ldrsh r0, [r5, r1] - ldrh r1, [r5, 0x26] - ldrh r3, [r5, 0x22] - adds r1, r3 - lsls r1, 16 - asrs r1, 16 - bl sub_80EDD28 -_080EE324: - movs r0, 0x20 - ldrsh r1, [r5, r0] - movs r0, 0x8 - negs r0, r0 - cmp r1, r0 - bge _080EE336 - adds r0, r5, 0 - bl DestroySprite -_080EE336: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080EE340: .4byte gSineTable -_080EE344: .4byte gUnknown_203AB16 -_080EE348: .4byte 0x41c64e6d -_080EE34C: .4byte 0x00006073 - thumb_func_end sub_80EE29C - - thumb_func_start sub_80EE350 -sub_80EE350: @ 80EE350 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x32] - ldrh r1, [r4, 0x2E] - adds r0, r1 - strh r0, [r4, 0x2E] - ldrh r2, [r4, 0x34] - ldrh r1, [r4, 0x30] - adds r0, r2, r1 - strh r0, [r4, 0x30] - ldrh r1, [r4, 0x36] - adds r1, 0x1 - strh r1, [r4, 0x36] - ldrh r0, [r4, 0x38] - adds r0, r1 - strh r0, [r4, 0x38] - ldrh r0, [r4, 0x3C] - adds r0, 0x1 - strh r0, [r4, 0x3C] - ldrh r0, [r4, 0x2E] - ldr r1, _080EE3F8 @ =gUnknown_203AB22 - ldrh r1, [r1] - asrs r0, r1 - strh r0, [r4, 0x20] - movs r1, 0x30 - ldrsh r0, [r4, r1] - ldr r1, _080EE3FC @ =gUnknown_203AB24 - ldrh r1, [r1] - asrs r0, r1 - strh r0, [r4, 0x22] - ldr r1, _080EE400 @ =gUnknown_203AB1C - ldrh r0, [r1] - cmp r0, 0 - beq _080EE3A4 - lsls r0, r2, 16 - cmp r0, 0 - bge _080EE3A4 - movs r2, 0x38 - ldrsh r0, [r4, r2] - ldrh r1, [r1] - asrs r0, r1 - strh r0, [r4, 0x26] -_080EE3A4: - movs r0, 0x3C - ldrsh r1, [r4, r0] - ldr r0, _080EE404 @ =gUnknown_203AB18 - ldrh r0, [r0] - cmp r1, r0 - ble _080EE3DC - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsrs r1, r2, 2 - movs r0, 0x1 - eors r1, r0 - ands r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - movs r2, 0x3C - ldrsh r1, [r4, r2] - ldr r0, _080EE408 @ =gUnknown_203AB1A - ldrh r0, [r0] - cmp r1, r0 - ble _080EE3DC - adds r0, r4, 0 - bl DestroySprite -_080EE3DC: - movs r1, 0x22 - ldrsh r0, [r4, r1] - movs r2, 0x26 - ldrsh r1, [r4, r2] - adds r0, r1 - cmp r0, 0xA0 - bls _080EE3F0 - adds r0, r4, 0 - bl DestroySprite -_080EE3F0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EE3F8: .4byte gUnknown_203AB22 -_080EE3FC: .4byte gUnknown_203AB24 -_080EE400: .4byte gUnknown_203AB1C -_080EE404: .4byte gUnknown_203AB18 -_080EE408: .4byte gUnknown_203AB1A - thumb_func_end sub_80EE350 - thumb_func_start sub_80EE40C sub_80EE40C: @ 80EE40C push {r4,lr} diff --git a/src/intro.c b/src/intro.c index 555c5a12c..79a1afba8 100644 --- a/src/intro.c +++ b/src/intro.c @@ -17,6 +17,7 @@ #include "title_screen.h" #include "decompress.h" #include "util.h" +#include "trig.h" #include "constants/songs.h" struct IntroSequenceData @@ -65,6 +66,7 @@ EWRAM_DATA u16 gUnknown_203AB26 = 0; EWRAM_DATA u32 gUnknown_203AB28 = 0; EWRAM_DATA s16 gUnknown_203AB2C = 0; EWRAM_DATA u16 gUnknown_203AB2E = 0; +EWRAM_DATA u32 gUnknown_203AB30 = 0; void sub_80EC870(void); void sub_80EC9D4(void); @@ -99,13 +101,18 @@ void sub_80EDBAC(struct IntroSequenceData * ptr); void sub_80EDBE8(struct IntroSequenceData * ptr); void sub_80EDC40(void); void sub_80EDDF0(void); +void sub_80EDE04(u8 taskId); void sub_80EDED8(void); +void sub_80EDEEC(u8 taskId); struct Sprite * sub_80EDF68(void); void sub_80EDF94(struct IntroSequenceData * ptr); +void sub_80EE024(u8 taskId); +void sub_80EE160(void); void sub_80EE1C4(struct Sprite * sprite); void sub_80EE200(u8 taskId); void sub_80EE29C(struct Sprite * sprite); void sub_80EE350(struct Sprite * sprite); +void sub_80EE40C(struct Sprite * sprite); void sub_80EE4DC(struct Sprite * sprite); void sub_80EE4F8(struct IntroSequenceData * ptr); void sub_80EE528(struct Sprite * sprite, u16 a1, u16 a2, u16 a3); @@ -219,7 +226,7 @@ const struct SpritePalette gUnknown_840BBE8[] = { {0} }; -const s16 gUnknown_840BC08[][2] = { +const struct Coords16 gUnknown_840BC08[] = { {0x0048, 0x0050}, {0x0088, 0x004a}, {0x00a8, 0x0050}, @@ -441,6 +448,11 @@ const struct CompressedSpriteSheet gUnknown_840BEDC[] = { {gUnknown_840BAE0, 0x0200, 11} }; +// POTENTIAL UB +// This array is passed to LoadSpritePalettes in sub_80EEBE4. +// LoadSpritePalettes uses a {0} entry to signal end of array. +// Because such an entry is absent in this case, the function +// continues reading into the next .rodata section. const struct SpritePalette gUnknown_840BF14[] = { {gUnknown_8405DA4, 6}, {gUnknown_84096AC, 7}, @@ -1413,13 +1425,12 @@ void sub_80EDB70(struct IntroSequenceData * this) void nullsub_83(struct Sprite * sprite) { - } void sub_80EDBAC(struct IntroSequenceData * this) { int i; - + for (i = 0; i < 4; i++) { StartSpriteAffineAnim(this->field_0028[i], 1); @@ -1453,7 +1464,7 @@ void sub_80EDC40(void) { int i; u8 spriteId; - + for (i = 0; i < NELEMS(gUnknown_840BBC0); i++) { LoadCompressedSpriteSheet(&gUnknown_840BBC0[i]); @@ -1471,7 +1482,7 @@ void sub_80EDC40(void) gUnknown_203AB22 = 0x05; gUnknown_203AB24 = 0x05; if (gUnknown_203AB28 == 0) - gUnknown_203AB28 = 0x151B9245; + gUnknown_203AB28 = 354128453; spriteId = CreateSprite(&gUnknown_840BC6C, 0xF8, 0x37, 0); if (spriteId != MAX_SPRITES) { @@ -1483,7 +1494,7 @@ void sub_80EDC40(void) } } -void sub_80EDD28(s16 x, s16 y, s16 a2) +void sub_80EDD28(s16 x, s16 y, u16 a2) { u8 spriteId; s16 r4 = (a2 & gUnknown_203AB12) + 2; @@ -1505,3 +1516,252 @@ void sub_80EDD28(s16 x, s16 y, s16 a2) } } } + +void sub_80EDDF0(void) +{ + CreateTask(sub_80EDE04, 1); +} + +void sub_80EDE04(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + u8 r6; + u8 spriteId; + + data[2]++, data[3]++; + if (data[2] > 6) + { + data[2] = 0; + r6 = data[0]; + spriteId = CreateSprite(&gUnknown_840BC84, gUnknown_840BC08[r6].x, gUnknown_840BC08[r6].y, 2); + StartSpriteAnim(&gSprites[spriteId], 1); + gSprites[spriteId].callback = sub_80EE40C; + gSprites[spriteId].data[1] = gUnknown_840BC08[r6].y << 4; + gSprites[spriteId].data[2] = 120; + gSprites[spriteId].data[3] = data[1]; + if (gSprites[spriteId].data[3] < 0) + gSprites[spriteId].data[3] = 1; + data[0]++; + if (data[0] < 0 || data[0] > 8) + { + data[1]++; + if (data[1] > 1) + DestroyTask(taskId); + else + data[0] = 0; + } + } +} + +void sub_80EDED8(void) +{ + CreateTask(sub_80EDEEC, 2); +} + +void sub_80EDEEC(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + u8 r2; + + if (data[0] == 0) + { + r2 = data[1]; + data[1] += 4; + if (data[1] < 0 || data[1] > 8) + data[1] -= 9; + CreateSprite(&gUnknown_840BCBC, gUnknown_840BC08[r2].x, gUnknown_840BC08[r2].y, 3); + data[2]++; + if (data[2] > 8) + DestroyTask(taskId); + } + data[0]++; + if (data[0] > 9) + data[0] = 0; +} + +struct Sprite * sub_80EDF68(void) +{ + u8 spriteId = CreateSprite(&gUnknown_840BCDC, 120, 70, 4); + return &gSprites[spriteId]; +} + +void sub_80EDF94(struct IntroSequenceData * this) +{ + u8 taskId; + this->field_0006 = 0; + taskId = CreateTask(sub_80EE024, 4); + SetWordTaskArg(taskId, 5, (uintptr_t)this); + gTasks[taskId].data[3] = 64; + gTasks[taskId].data[4] = GetBgX(0); +} + +void sub_80EDFD8(int a, int b, int c, int d) +{ + ChangeBgY(0, (a << 15) + 0x1F000, 0); + ChangeBgX(0, d, 0); + ChangeBgX(0, b << 8, 2); + ChangeBgY(0, c << 8, 2); +} + +void sub_80EE024(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + int b, c; + int angle; + switch (data[0]) + { + case 0: + data[7] = 2; + data[1] = 0; + data[8] = 6; + data[9] = 32; + data[0]++; + break; + case 1: + data[3] -= 2; + data[1]++; + if (data[1] > 15) + { + data[1] = 0; + data[0]++; + } + break; + case 2: + data[1]++; + if (data[1] == 14) + ((struct IntroSequenceData *)GetWordTaskArg(taskId, 5))->field_0006 = 1; + if (data[1] > 15) + { + data[1] = 0; + data[0]++; + } + break; + case 3: + data[3] += 8; + data[1]++; + if (data[1] == 4) + { + sub_80EE160(); + data[8] = 32; + data[9] = 48; + data[7] = 3; + } + if (data[1] > 7) + { + data[1] = 0; + data[0]++; + } + break; + case 4: + data[3] -= 8; + data[1]++; + if (data[1] > 3) + { + data[7] = 0; + data[3] = 64; + data[1] = 0; + data[0]++; + } + break; + case 5: + DestroyTask(taskId); + return; + } + angle = data[3]; + b = -((gSineTable[angle + 0x40] * data[9]) >> 8); + c = data[8] - ((gSineTable[angle] * data[8]) >> 8); + sub_80EDFD8(data[7], b, c, data[4]); +} + +void sub_80EE160(void) +{ + u8 spriteId; + + spriteId = CreateSprite(&gUnknown_840BE8C, 132, 78, 6); + spriteId = CreateSprite(&gUnknown_840BE8C, 132, 118, 6); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].oam.shape = ST_OAM_H_RECTANGLE; + gSprites[spriteId].oam.size = ST_OAM_SIZE_2; + sub_80EDAD8(&gSprites[spriteId]); + StartSpriteAnim(&gSprites[spriteId], 1); + } +} + +void sub_80EE1C4(struct Sprite * sprite) +{ + sprite->invisible ^= TRUE; + if (sprite->animEnded) + DestroySprite(sprite); +} + +void sub_80EE200(u8 taskId) +{ + s16 * data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + data[1] = 0x400; + data[0]++; + // fallthrough + case 1: + data[2]++; + if (data[2] > 39 && data[1] > 16) + data[1] -= 16; + gUnknown_203AB30 = ChangeBgX(0, data[1], 1); + if (gUnknown_203AB30 >= 0x8000) + ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON); + if (gUnknown_203AB30 >= 0xEF00) + { + ChangeBgX(0, 0xEF00, 0); + DestroyTask(taskId); + } + break; + } +} + +void sub_80EE29C(struct Sprite * sprite) +{ + u32 v; + sprite->data[0] -= sprite->data[2]; + sprite->data[1] += sprite->data[3]; + sprite->data[4] += 48; + sprite->pos1.x = sprite->data[0] >> 4; + sprite->pos1.y = sprite->data[1] >> 4; + sprite->pos2.y = gSineTable[(sprite->data[4] >> 4) + 0x40] >> 5; + sprite->data[5]++; + if (sprite->data[5] % gUnknown_203AB16) + { + LoadWordFromTwoHalfwords(&sprite->data[6], &v); + v = v * 1103515245 + 24691; + StoreWordInTwoHalfwords(&sprite->data[6], v); + v >>= 16; + sub_80EDD28(sprite->pos1.x, sprite->pos1.y + sprite->pos2.y, v); + } + if (sprite->pos1.x < -8) + DestroySprite(sprite); +} + +void sub_80EE350(struct Sprite * sprite) +{ + u32 v; + + sprite->data[0] += sprite->data[2]; + sprite->data[1] += sprite->data[3]; + sprite->data[4]++; + sprite->data[5] += sprite->data[4]; + sprite->data[7]++; + sprite->pos1.x = *(u16 *)&sprite->data[0] >> gUnknown_203AB22; + sprite->pos1.y = sprite->data[1] >> gUnknown_203AB24; + if (gUnknown_203AB1C && sprite->data[3] < 0) + sprite->pos2.y = sprite->data[5] >> gUnknown_203AB1C; + if (sprite->data[7] > gUnknown_203AB18) + { + sprite->invisible = sprite->invisible ? FALSE : TRUE; + if (sprite->data[7] > gUnknown_203AB1A) + DestroySprite(sprite); + } + if (sprite->pos1.y + sprite->pos2.y < 0 || sprite->pos1.y + sprite->pos2.y > 160) + DestroySprite(sprite); +} diff --git a/sym_ewram.txt b/sym_ewram.txt index 58be99913..63b75ae19 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1115,9 +1115,6 @@ gUnknown_203AAC6: @ 203AAC6 .include "src/intro.o" .align 2 -gUnknown_203AB30: @ 203AB30 - .space 0x4 - gUnknown_203AB34: @ 203AB34 .space 0x4 From b3b439fd8ab05eed4be632e2f265b79f1ce2173e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 4 Jul 2019 19:31:07 -0400 Subject: [PATCH 15/17] intro: through sub_80EE6A4 --- asm/intro.s | 415 ---------------------------------------------------- src/intro.c | 164 ++++++++++++++++++++- 2 files changed, 162 insertions(+), 417 deletions(-) diff --git a/asm/intro.s b/asm/intro.s index d5ebd1f99..275119991 100644 --- a/asm/intro.s +++ b/asm/intro.s @@ -5,421 +5,6 @@ .text - thumb_func_start sub_80EE40C -sub_80EE40C: @ 80EE40C - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4, 0x32] - movs r2, 0x32 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _080EE490 - subs r0, r1, 0x1 - strh r0, [r4, 0x32] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 20 - strh r0, [r4, 0x22] - cmp r0, 0x56 - ble _080EE438 - movs r0, 0x4A - strh r0, [r4, 0x22] - movs r0, 0x94 - lsls r0, 3 - strh r0, [r4, 0x30] -_080EE438: - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080EE4D4 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080EE46C - ldrh r0, [r4, 0x20] - adds r1, r0, 0 - adds r1, 0x1A - strh r1, [r4, 0x20] - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0xBC - ble _080EE486 - movs r2, 0xBC - lsls r2, 1 - adds r0, r2, 0 - subs r0, r1 - strh r0, [r4, 0x20] - movs r0, 0x1 - b _080EE484 -_080EE46C: - ldrh r0, [r4, 0x20] - adds r1, r0, 0 - subs r1, 0x1A - strh r1, [r4, 0x20] - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0x33 - bgt _080EE486 - movs r0, 0x68 - subs r0, r1 - strh r0, [r4, 0x20] - movs r0, 0 -_080EE484: - strh r0, [r4, 0x2E] -_080EE486: - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAnim - b _080EE4D4 -_080EE490: - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _080EE49E - adds r0, r4, 0 - bl DestroySprite -_080EE49E: - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080EE4B4 - adds r0, r4, 0 - movs r1, 0 - bl StartSpriteAnim -_080EE4B4: - ldrh r0, [r4, 0x30] - adds r0, 0x4 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 20 - strh r0, [r4, 0x22] - ldrh r0, [r4, 0x36] - adds r0, 0x1 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x32 - ble _080EE4D4 - adds r0, r4, 0 - bl DestroySprite -_080EE4D4: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80EE40C - - thumb_func_start sub_80EE4DC -sub_80EE4DC: @ 80EE4DC - push {lr} - adds r2, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080EE4F2 - adds r0, r2, 0 - bl DestroySprite -_080EE4F2: - pop {r0} - bx r0 - thumb_func_end sub_80EE4DC - - thumb_func_start sub_80EE4F8 -sub_80EE4F8: @ 80EE4F8 - push {r4,lr} - adds r4, r0, 0 - ldr r0, _080EE520 @ =gUnknown_840BD88 - movs r1, 0 - movs r2, 0 - movs r3, 0x9 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - ldr r0, _080EE524 @ =gSprites - adds r1, r0 - str r1, [r4, 0x18] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EE520: .4byte gUnknown_840BD88 -_080EE524: .4byte gSprites - thumb_func_end sub_80EE4F8 - - thumb_func_start sub_80EE528 -sub_80EE528: @ 80EE528 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - adds r4, r0, 0 - adds r0, r2, 0 - adds r5, r3, 0 - lsls r1, 16 - lsls r0, 16 - lsls r5, 16 - lsrs r5, 16 - lsrs r2, r1, 16 - mov r9, r2 - asrs r1, 16 - lsls r2, r1, 4 - movs r3, 0 - mov r8, r3 - strh r2, [r4, 0x2E] - lsrs r6, r0, 16 - asrs r0, 16 - subs r0, r1 - lsls r0, 4 - adds r1, r5, 0 - bl __divsi3 - strh r0, [r4, 0x30] - strh r5, [r4, 0x32] - strh r6, [r4, 0x34] - mov r0, r8 - strh r0, [r4, 0x36] - mov r2, r9 - strh r2, [r4, 0x20] - movs r0, 0x64 - strh r0, [r4, 0x22] - ldr r0, _080EE57C @ =sub_80EE580 - str r0, [r4, 0x1C] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080EE57C: .4byte sub_80EE580 - thumb_func_end sub_80EE528 - - thumb_func_start sub_80EE580 -sub_80EE580: @ 80EE580 - push {r4,lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x36] - adds r0, 0x1 - strh r0, [r2, 0x36] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x27 - ble _080EE5A0 - ldrh r1, [r2, 0x30] - movs r3, 0x30 - ldrsh r0, [r2, r3] - cmp r0, 0x1 - ble _080EE5A0 - subs r0, r1, 0x1 - strh r0, [r2, 0x30] -_080EE5A0: - ldrh r0, [r2, 0x30] - ldrh r4, [r2, 0x2E] - adds r0, r4 - strh r0, [r2, 0x2E] - lsls r0, 16 - asrs r0, 20 - strh r0, [r2, 0x20] - ldrh r3, [r2, 0x34] - movs r4, 0x34 - ldrsh r1, [r2, r4] - cmp r0, r1 - blt _080EE5BE - strh r3, [r2, 0x20] - ldr r0, _080EE5C4 @ =SpriteCallbackDummy - str r0, [r2, 0x1C] -_080EE5BE: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EE5C4: .4byte SpriteCallbackDummy - thumb_func_end sub_80EE580 - - thumb_func_start sub_80EE5C8 -sub_80EE5C8: @ 80EE5C8 - push {lr} - movs r2, 0 - ldr r0, [r0, 0x18] - ldr r1, [r0, 0x1C] - ldr r0, _080EE5E0 @ =sub_80EE580 - cmp r1, r0 - bne _080EE5D8 - movs r2, 0x1 -_080EE5D8: - adds r0, r2, 0 - pop {r1} - bx r1 - .align 2, 0 -_080EE5E0: .4byte sub_80EE580 - thumb_func_end sub_80EE5C8 - - thumb_func_start sub_80EE5E4 -sub_80EE5E4: @ 80EE5E4 - push {r4,lr} - adds r4, r0, 0 - ldr r0, [r4, 0x18] - movs r1, 0x2 - bl StartSpriteAnim - ldr r0, [r4, 0x18] - movs r1, 0 - strh r1, [r0, 0x2E] - ldr r0, [r4, 0x18] - strh r1, [r0, 0x30] - ldr r1, [r4, 0x18] - movs r0, 0x3 - strh r0, [r1, 0x26] - ldr r1, [r4, 0x18] - ldr r0, _080EE60C @ =sub_80EE610 - str r0, [r1, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EE60C: .4byte sub_80EE610 - thumb_func_end sub_80EE5E4 - - thumb_func_start sub_80EE610 -sub_80EE610: @ 80EE610 - push {r4,r5,lr} - adds r4, r0, 0 - movs r0, 0x2E - ldrsh r5, [r4, r0] - cmp r5, 0x1 - beq _080EE646 - cmp r5, 0x1 - bgt _080EE626 - cmp r5, 0 - beq _080EE62C - b _080EE69A -_080EE626: - cmp r5, 0x2 - beq _080EE65C - b _080EE69A -_080EE62C: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - ble _080EE69A - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAnim - strh r5, [r4, 0x26] - b _080EE654 -_080EE646: - movs r0, 0x21 - movs r1, 0x3F - movs r2, 0x1 - bl PlayCry3 - movs r0, 0 - strh r0, [r4, 0x30] -_080EE654: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080EE69A -_080EE65C: - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080EE67C - movs r0, 0 - strh r0, [r4, 0x32] - movs r1, 0 - movs r2, 0x26 - ldrsh r0, [r4, r2] - cmp r0, 0 - bne _080EE67A - movs r1, 0x1 -_080EE67A: - strh r1, [r4, 0x26] -_080EE67C: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x30 - ble _080EE69A - adds r0, r4, 0 - movs r1, 0 - bl StartSpriteAnim - movs r0, 0 - strh r0, [r4, 0x26] - ldr r0, _080EE6A0 @ =SpriteCallbackDummy - str r0, [r4, 0x1C] -_080EE69A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080EE6A0: .4byte SpriteCallbackDummy - thumb_func_end sub_80EE610 - - thumb_func_start sub_80EE6A4 -sub_80EE6A4: @ 80EE6A4 - push {r4,lr} - adds r4, r0, 0 - ldr r1, _080EE6F0 @ =gUnknown_203AB0A - movs r0, 0x10 - strh r0, [r1] - ldr r1, _080EE6F4 @ =gUnknown_203AB04 - movs r0, 0x3 - strh r0, [r1] - ldr r1, _080EE6F8 @ =gUnknown_203AB08 - movs r0, 0x5 - strh r0, [r1] - ldr r1, _080EE6FC @ =gUnknown_203AB06 - movs r0, 0 - strh r0, [r1] - ldr r0, [r4, 0x18] - movs r1, 0x2 - bl StartSpriteAnim - ldr r0, [r4, 0x18] - movs r1, 0 - strh r1, [r0, 0x2E] - ldr r0, [r4, 0x18] - strh r1, [r0, 0x30] - ldr r0, [r4, 0x18] - strh r1, [r0, 0x32] - ldr r0, [r4, 0x18] - strh r1, [r0, 0x34] - ldr r0, [r4, 0x18] - strh r1, [r0, 0x36] - ldr r1, [r4, 0x18] - movs r0, 0x28 - strh r0, [r1, 0x3C] - ldr r1, [r4, 0x18] - ldr r0, _080EE700 @ =sub_80EE704 - str r0, [r1, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EE6F0: .4byte gUnknown_203AB0A -_080EE6F4: .4byte gUnknown_203AB04 -_080EE6F8: .4byte gUnknown_203AB08 -_080EE6FC: .4byte gUnknown_203AB06 -_080EE700: .4byte sub_80EE704 - thumb_func_end sub_80EE6A4 - thumb_func_start sub_80EE704 sub_80EE704: @ 80EE704 push {r4,r5,lr} diff --git a/src/intro.c b/src/intro.c index 79a1afba8..3e0b9e498 100644 --- a/src/intro.c +++ b/src/intro.c @@ -19,6 +19,7 @@ #include "util.h" #include "trig.h" #include "constants/songs.h" +#include "constants/species.h" struct IntroSequenceData { @@ -115,10 +116,13 @@ void sub_80EE350(struct Sprite * sprite); void sub_80EE40C(struct Sprite * sprite); void sub_80EE4DC(struct Sprite * sprite); void sub_80EE4F8(struct IntroSequenceData * ptr); -void sub_80EE528(struct Sprite * sprite, u16 a1, u16 a2, u16 a3); +void sub_80EE528(struct Sprite * sprite, s16 a1, s16 a2, u16 a3); +void sub_80EE580(struct Sprite * sprite); bool32 sub_80EE5C8(struct IntroSequenceData * ptr); void sub_80EE5E4(struct IntroSequenceData * ptr); +void sub_80EE610(struct Sprite * sprite); void sub_80EE6A4(struct IntroSequenceData * ptr); +void sub_80EE704(struct Sprite * sprite); bool8 sub_80EE850(struct IntroSequenceData * ptr); void sub_80EE8E4(struct Sprite * sprite); void sub_80EE970(struct Sprite * sprite, s16 a1, u16 a2, u8 a3); @@ -1758,10 +1762,166 @@ void sub_80EE350(struct Sprite * sprite) sprite->pos2.y = sprite->data[5] >> gUnknown_203AB1C; if (sprite->data[7] > gUnknown_203AB18) { - sprite->invisible = sprite->invisible ? FALSE : TRUE; + sprite->invisible = !sprite->invisible; if (sprite->data[7] > gUnknown_203AB1A) DestroySprite(sprite); } if (sprite->pos1.y + sprite->pos2.y < 0 || sprite->pos1.y + sprite->pos2.y > 160) DestroySprite(sprite); } + +void sub_80EE40C(struct Sprite * sprite) +{ + if (sprite->data[2]) + { + sprite->data[2]--; + sprite->data[1]++; + sprite->pos1.y = sprite->data[1] >> 4; + if (sprite->pos1.y > 0x56) + { + sprite->pos1.y = 0x4A; + sprite->data[1] = 0x4A0; + } + if (sprite->animEnded) + { + if (sprite->data[0] == 0) + { + sprite->pos1.x += 26; + if (sprite->pos1.x > 188) + { + sprite->pos1.x = 376 - sprite->pos1.x; + sprite->data[0] = 1; + } + } + else + { + sprite->pos1.x -= 26; + if (sprite->pos1.x < 52) + { + sprite->pos1.x = 104 - sprite->pos1.x; + sprite->data[0] = 0; + } + } + StartSpriteAnim(sprite, 1); + } + } + else + { + if (sprite->data[3]) + DestroySprite(sprite); + if (sprite->animEnded) + StartSpriteAnim(sprite, 0); + sprite->data[1] += 4; + sprite->pos1.y = sprite->data[1] >> 4; + sprite->data[4]++; + if (sprite->data[4] > 50) + DestroySprite(sprite); + } +} + +void sub_80EE4DC(struct Sprite * sprite) +{ + if (sprite->animEnded) + DestroySprite(sprite); +} + +void sub_80EE4F8(struct IntroSequenceData * this) +{ + u8 spriteId = CreateSprite(&gUnknown_840BD88, 0, 0, 9); + this->field_0018 = &gSprites[spriteId]; +} + +void sub_80EE528(struct Sprite * sprite, s16 a1, s16 a2, u16 a3) +{ + sprite->data[0] = a1 << 4; + sprite->data[1] = ((a2 - a1) << 4) / a3; + sprite->data[2] = a3; + sprite->data[3] = a2; + sprite->data[4] = 0; + sprite->pos1.x = a1; + sprite->pos1.y = 100; + sprite->callback = sub_80EE580; +} + +void sub_80EE580(struct Sprite * sprite) +{ + sprite->data[4]++; + if (sprite->data[4] >= 40) + { + if (sprite->data[1] > 1) + sprite->data[1]--; + } + sprite->data[0] += sprite->data[1]; + sprite->pos1.x = sprite->data[0] >> 4; + if (sprite->pos1.x >= sprite->data[3]) + { + sprite->pos1.x = sprite->data[3]; + sprite->callback = SpriteCallbackDummy; + } +} + +bool32 sub_80EE5C8(struct IntroSequenceData * ptr) +{ + return ptr->field_0018->callback == sub_80EE580 ? TRUE : FALSE; +} + +void sub_80EE5E4(struct IntroSequenceData * ptr) +{ + StartSpriteAnim(ptr->field_0018, 2); + ptr->field_0018->data[0] = 0; + ptr->field_0018->data[1] = 0; + ptr->field_0018->pos2.y = 3; + ptr->field_0018->callback = sub_80EE610; +} + +void sub_80EE610(struct Sprite * sprite) +{ + switch (sprite->data[0]) + { + case 0: + sprite->data[1]++; + if (sprite->data[1] > 8) + { + StartSpriteAnim(sprite, 1); + sprite->pos2.y = 0; + sprite->data[0]++; + } + break; + case 1: + PlayCry3(SPECIES_NIDORINO, 0x3F, 1); + sprite->data[1] = 0; + sprite->data[0]++; + break; + case 2: + sprite->data[2]++; + if (sprite->data[2] > 1) + { + sprite->data[2] = 0; + sprite->pos2.y = sprite->pos2.y == 0 ? 1 : 0; + } + sprite->data[1]++; + if (sprite->data[1] > 48) + { + StartSpriteAnim(sprite, 0); + sprite->pos2.y = 0; + sprite->callback = SpriteCallbackDummy; + } + break; + } +} + +void sub_80EE6A4(struct IntroSequenceData * ptr) +{ + gUnknown_203AB0A = 16; + gUnknown_203AB04 = 3; + gUnknown_203AB08 = 5; + gUnknown_203AB06 = 0; + StartSpriteAnim(ptr->field_0018, 2); + ptr->field_0018->data[0] = 0; + ptr->field_0018->data[1] = 0; + ptr->field_0018->data[2] = 0; + ptr->field_0018->data[3] = 0; + ptr->field_0018->data[4] = 0; + ptr->field_0018->data[7] = 40; + ptr->field_0018->callback = sub_80EE704; +} From a1f10189b67e39a6ff1eac39686e83282e7c16d3 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 4 Jul 2019 21:16:08 -0400 Subject: [PATCH 16/17] Finish decomp of intro --- asm/intro.s | 685 -------------------------------------------------- ld_script.txt | 1 - src/intro.c | 252 ++++++++++++++++++- 3 files changed, 250 insertions(+), 688 deletions(-) delete mode 100644 asm/intro.s diff --git a/asm/intro.s b/asm/intro.s deleted file mode 100644 index 275119991..000000000 --- a/asm/intro.s +++ /dev/null @@ -1,685 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_80EE704 -sub_80EE704: @ 80EE704 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _080EE740 - cmp r0, 0x1 - bgt _080EE71A - cmp r0, 0 - beq _080EE726 - b _080EE846 -_080EE71A: - cmp r0, 0x2 - beq _080EE7C4 - cmp r0, 0x3 - bne _080EE724 - b _080EE824 -_080EE724: - b _080EE846 -_080EE726: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - bgt _080EE736 - b _080EE846 -_080EE736: - adds r0, r4, 0 - movs r1, 0x3 - bl StartSpriteAnim - b _080EE818 -_080EE740: - ldrh r2, [r4, 0x3C] - ldrh r3, [r4, 0x32] - adds r1, r2, r3 - movs r5, 0 - strh r1, [r4, 0x32] - ldrh r0, [r4, 0x34] - adds r0, 0x8 - strh r0, [r4, 0x34] - lsls r1, 16 - asrs r1, 20 - strh r1, [r4, 0x24] - ldr r1, _080EE7B0 @ =gSineTable - movs r3, 0x34 - ldrsh r0, [r4, r3] - lsls r0, 1 - adds r0, r1 - movs r3, 0 - ldrsh r1, [r0, r3] - ldr r0, _080EE7B4 @ =gUnknown_203AB04 - ldrh r0, [r0] - muls r0, r1 - ldr r1, _080EE7B8 @ =gUnknown_203AB08 - ldrh r1, [r1] - asrs r0, r1 - negs r0, r0 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x38] - adds r0, 0x1 - strh r0, [r4, 0x38] - movs r0, 0x38 - ldrsh r1, [r4, r0] - ldr r0, _080EE7BC @ =gUnknown_203AB06 - ldrh r0, [r0] - cmp r1, r0 - ble _080EE78C - strh r5, [r4, 0x38] - subs r0, r2, 0x1 - strh r0, [r4, 0x3C] -_080EE78C: - ldrh r0, [r4, 0x36] - adds r0, 0x1 - strh r0, [r4, 0x36] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xF - ble _080EE846 - adds r0, r4, 0 - movs r1, 0x2 - bl StartSpriteAnim - strh r5, [r4, 0x30] - ldr r0, _080EE7C0 @ =0x00004757 - strh r0, [r4, 0x3A] - movs r0, 0x1C - strh r0, [r4, 0x3C] - b _080EE818 - .align 2, 0 -_080EE7B0: .4byte gSineTable -_080EE7B4: .4byte gUnknown_203AB04 -_080EE7B8: .4byte gUnknown_203AB08 -_080EE7BC: .4byte gUnknown_203AB06 -_080EE7C0: .4byte 0x00004757 -_080EE7C4: - ldrh r0, [r4, 0x3C] - ldrh r1, [r4, 0x32] - adds r0, r1 - strh r0, [r4, 0x32] - lsls r0, 16 - asrs r1, r0, 20 - strh r1, [r4, 0x24] - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x6 - ble _080EE804 - ldrh r0, [r4, 0x20] - adds r0, r1 - lsls r0, 16 - asrs r0, 16 - ldrh r1, [r4, 0x26] - ldrh r2, [r4, 0x22] - adds r1, r2 - lsls r1, 16 - asrs r1, 16 - movs r3, 0x3A - ldrsh r2, [r4, r3] - bl sub_80EE864 - movs r0, 0x3A - ldrsh r1, [r4, r0] - ldr r0, _080EE820 @ =0x41c64e6d - muls r0, r1 - strh r0, [r4, 0x3A] -_080EE804: - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0xC - ble _080EE846 - adds r0, r4, 0 - movs r1, 0 - bl StartSpriteAnim - movs r0, 0 - strh r0, [r4, 0x30] -_080EE818: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080EE846 - .align 2, 0 -_080EE820: .4byte 0x41c64e6d -_080EE824: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x10 - ble _080EE846 - ldr r0, _080EE84C @ =gUnknown_203AB0A - ldrh r1, [r0] - ldrh r2, [r4, 0x24] - negs r2, r2 - lsls r2, 16 - asrs r2, 16 - adds r0, r4, 0 - movs r3, 0x4 - bl sub_80EE970 -_080EE846: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080EE84C: .4byte gUnknown_203AB0A - thumb_func_end sub_80EE704 - - thumb_func_start sub_80EE850 -sub_80EE850: @ 80EE850 - ldr r0, [r0, 0x18] - ldr r1, [r0, 0x1C] - ldr r0, _080EE860 @ =SpriteCallbackDummy - eors r1, r0 - negs r0, r1 - orrs r0, r1 - lsrs r0, 31 - bx lr - .align 2, 0 -_080EE860: .4byte SpriteCallbackDummy - thumb_func_end sub_80EE850 - - thumb_func_start sub_80EE864 -sub_80EE864: @ 80EE864 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r2, 16 - lsrs r5, r2, 16 - movs r6, 0 - lsls r0, 16 - ldr r2, _080EE8D4 @ =0xffea0000 - adds r2, r0 - mov r8, r2 - lsls r1, 16 - movs r0, 0xC0 - lsls r0, 13 - adds r7, r1, r0 -_080EE880: - ldr r0, _080EE8D8 @ =gUnknown_840BEC4 - mov r2, r8 - asrs r1, r2, 16 - asrs r2, r7, 16 - movs r3, 0xA - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _080EE8C4 - ldr r0, _080EE8DC @ =gSprites - lsls r4, r1, 4 - adds r4, r1 - lsls r4, 2 - adds r4, r0 - lsls r5, 16 - asrs r5, 16 - adds r0, r5, 0 - movs r1, 0xD - bl __modsi3 - adds r0, 0x8 - strh r0, [r4, 0x34] - adds r0, r5, 0 - movs r1, 0x3 - bl __modsi3 - strh r0, [r4, 0x36] - strh r6, [r4, 0x3C] - ldr r0, _080EE8E0 @ =0x41c64e6d - muls r0, r5 - lsls r0, 16 - lsrs r5, r0, 16 -_080EE8C4: - adds r6, 0x1 - cmp r6, 0x1 - ble _080EE880 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080EE8D4: .4byte 0xffea0000 -_080EE8D8: .4byte gUnknown_840BEC4 -_080EE8DC: .4byte gSprites -_080EE8E0: .4byte 0x41c64e6d - thumb_func_end sub_80EE864 - - thumb_func_start sub_80EE8E4 -sub_80EE8E4: @ 80EE8E4 - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r5, 0 - adds r4, 0x2E - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _080EE8FA - cmp r0, 0x1 - beq _080EE90C - b _080EE93E -_080EE8FA: - ldrh r0, [r5, 0x20] - lsls r0, 4 - strh r0, [r4, 0x2] - ldrh r0, [r5, 0x22] - lsls r0, 4 - strh r0, [r4, 0x4] - ldrh r0, [r5, 0x2E] - adds r0, 0x1 - strh r0, [r5, 0x2E] -_080EE90C: - ldrh r1, [r4, 0x2] - ldrh r0, [r4, 0x6] - subs r1, r0 - strh r1, [r4, 0x2] - ldrh r0, [r4, 0x8] - ldrh r2, [r4, 0x4] - adds r0, r2 - strh r0, [r4, 0x4] - lsls r1, 16 - asrs r1, 20 - strh r1, [r5, 0x20] - ldrh r0, [r4, 0x4] - lsls r0, 16 - asrs r0, 20 - strh r0, [r5, 0x22] - adds r0, r5, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080EE93E - adds r0, r5, 0 - bl DestroySprite -_080EE93E: - ldrh r0, [r4, 0xE] - adds r0, 0x1 - strh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - ble _080EE96A - movs r0, 0 - strh r0, [r4, 0xE] - adds r3, r5, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_080EE96A: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80EE8E4 - - thumb_func_start sub_80EE970 -sub_80EE970: @ 80EE970 - push {r4-r6,lr} - mov r6, r8 - push {r6} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r2, 0 - adds r6, r3, 0 - lsls r5, 16 - lsrs r5, 16 - lsls r6, 24 - lsrs r6, 24 - movs r1, 0 - mov r8, r1 - mov r1, r8 - strh r1, [r4, 0x2E] - strh r5, [r4, 0x30] - ldrh r1, [r4, 0x24] - lsls r1, 4 - strh r1, [r4, 0x32] - lsls r0, 16 - asrs r0, 12 - adds r1, r5, 0 - bl __divsi3 - strh r0, [r4, 0x34] - mov r0, r8 - strh r0, [r4, 0x36] - movs r0, 0x80 - lsls r0, 4 - adds r1, r5, 0 - bl __divsi3 - strh r0, [r4, 0x38] - mov r1, r8 - strh r1, [r4, 0x3A] - strh r6, [r4, 0x3C] - adds r0, r4, 0 - movs r1, 0x2 - bl StartSpriteAnim - ldr r0, _080EE9D0 @ =sub_80EE9D4 - str r0, [r4, 0x1C] - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080EE9D0: .4byte sub_80EE9D4 - thumb_func_end sub_80EE970 - - thumb_func_start sub_80EE9D4 -sub_80EE9D4: @ 80EE9D4 - push {r4,r5,lr} - adds r4, r0, 0 - movs r0, 0x2E - ldrsh r5, [r4, r0] - cmp r5, 0x1 - beq _080EEA08 - cmp r5, 0x1 - bgt _080EE9EA - cmp r5, 0 - beq _080EE9F0 - b _080EEA88 -_080EE9EA: - cmp r5, 0x2 - beq _080EEA6E - b _080EEA88 -_080EE9F0: - ldrh r0, [r4, 0x3A] - adds r0, 0x1 - strh r0, [r4, 0x3A] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - ble _080EEA88 - adds r0, r4, 0 - movs r1, 0x3 - bl StartSpriteAnim - b _080EEA64 -_080EEA08: - ldrh r0, [r4, 0x30] - subs r0, 0x1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r5, r0, 16 - cmp r5, 0 - beq _080EEA4C - ldrh r1, [r4, 0x34] - ldrh r2, [r4, 0x32] - adds r1, r2 - strh r1, [r4, 0x32] - ldrh r0, [r4, 0x38] - ldrh r2, [r4, 0x36] - adds r0, r2 - strh r0, [r4, 0x36] - lsls r1, 16 - asrs r1, 20 - strh r1, [r4, 0x24] - ldr r1, _080EEA48 @ =gSineTable - lsls r0, 16 - asrs r0, 20 - lsls r0, 1 - adds r0, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0x3C - ldrsh r1, [r4, r2] - asrs r0, r1 - negs r0, r0 - strh r0, [r4, 0x26] - b _080EEA88 - .align 2, 0 -_080EEA48: .4byte gSineTable -_080EEA4C: - ldrh r0, [r4, 0x32] - lsrs r0, 4 - strh r0, [r4, 0x24] - strh r5, [r4, 0x26] - adds r0, r4, 0 - movs r1, 0x2 - bl StartSpriteAnim - movs r1, 0x3C - ldrsh r0, [r4, r1] - cmp r0, 0x5 - beq _080EEA84 -_080EEA64: - strh r5, [r4, 0x3A] - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080EEA88 -_080EEA6E: - ldrh r0, [r4, 0x3A] - adds r0, 0x1 - strh r0, [r4, 0x3A] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - ble _080EEA88 - adds r0, r4, 0 - movs r1, 0 - bl StartSpriteAnim -_080EEA84: - ldr r0, _080EEA90 @ =SpriteCallbackDummy - str r0, [r4, 0x1C] -_080EEA88: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080EEA90: .4byte SpriteCallbackDummy - thumb_func_end sub_80EE9D4 - - thumb_func_start sub_80EEA94 -sub_80EEA94: @ 80EEA94 - push {r4,lr} - adds r4, r0, 0 - ldr r0, [r4, 0x18] - movs r2, 0 - strh r2, [r0, 0x2E] - ldr r0, [r4, 0x18] - strh r2, [r0, 0x30] - ldr r0, [r4, 0x18] - strh r2, [r0, 0x32] - ldr r0, [r4, 0x18] - strh r2, [r0, 0x34] - ldr r0, [r4, 0x18] - strh r2, [r0, 0x36] - ldr r0, [r4, 0x18] - strh r2, [r0, 0x38] - ldr r1, [r4, 0x18] - ldrh r0, [r1, 0x24] - ldrh r3, [r1, 0x20] - adds r0, r3 - strh r0, [r1, 0x20] - ldr r0, [r4, 0x18] - strh r2, [r0, 0x24] - ldr r1, _080EEAF4 @ =gUnknown_203AB0C - movs r0, 0x24 - strh r0, [r1] - ldr r1, _080EEAF8 @ =gUnknown_203AB06 - movs r0, 0x28 - strh r0, [r1] - ldr r1, _080EEAFC @ =gUnknown_203AB04 - movs r0, 0x3 - strh r0, [r1] - ldr r1, _080EEB00 @ =gUnknown_203AB08 - movs r0, 0x4 - strh r0, [r1] - ldr r1, [r4, 0x18] - movs r0, 0x24 - strh r0, [r1, 0x3C] - ldr r0, [r4, 0x18] - movs r1, 0x2 - bl StartSpriteAnim - ldr r1, [r4, 0x18] - ldr r0, _080EEB04 @ =sub_80EEB08 - str r0, [r1, 0x1C] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EEAF4: .4byte gUnknown_203AB0C -_080EEAF8: .4byte gUnknown_203AB06 -_080EEAFC: .4byte gUnknown_203AB04 -_080EEB00: .4byte gUnknown_203AB08 -_080EEB04: .4byte sub_80EEB08 - thumb_func_end sub_80EEA94 - - thumb_func_start sub_80EEB08 -sub_80EEB08: @ 80EEB08 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _080EEB58 - cmp r0, 0x1 - bgt _080EEB1E - cmp r0, 0 - beq _080EEB24 - b _080EEBCE -_080EEB1E: - cmp r0, 0x2 - beq _080EEB84 - b _080EEBCE -_080EEB24: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080EEB4A - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - ands r0, r1 - cmp r0, 0 - beq _080EEB44 - ldrh r0, [r4, 0x24] - adds r0, 0x1 - b _080EEB48 -_080EEB44: - ldrh r0, [r4, 0x24] - subs r0, 0x1 -_080EEB48: - strh r0, [r4, 0x24] -_080EEB4A: - movs r3, 0x30 - ldrsh r0, [r4, r3] - cmp r0, 0x11 - ble _080EEBCE - movs r0, 0 - strh r0, [r4, 0x30] - b _080EEB78 -_080EEB58: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - movs r5, 0 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - ldr r1, _080EEB80 @ =gUnknown_203AB06 - ldrh r1, [r1] - cmp r0, r1 - blt _080EEBCE - adds r0, r4, 0 - movs r1, 0x4 - bl StartSpriteAnim - strh r5, [r4, 0x30] - strh r5, [r4, 0x32] -_080EEB78: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _080EEBCE - .align 2, 0 -_080EEB80: .4byte gUnknown_203AB06 -_080EEB84: - ldrh r2, [r4, 0x3C] - ldrh r1, [r4, 0x30] - adds r0, r2, r1 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 20 - negs r1, r0 - strh r1, [r4, 0x24] - ldr r1, _080EEBD4 @ =gSineTable - lsls r0, 1 - adds r0, r1 - movs r3, 0 - ldrsh r1, [r0, r3] - ldr r0, _080EEBD8 @ =gUnknown_203AB04 - ldrh r0, [r0] - muls r0, r1 - ldr r1, _080EEBDC @ =gUnknown_203AB08 - ldrh r1, [r1] - asrs r0, r1 - negs r0, r0 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x32] - adds r0, 0x1 - strh r0, [r4, 0x32] - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0xC - ble _080EEBC0 - subs r0, r2, 0x1 - strh r0, [r4, 0x3C] -_080EEBC0: - ldrh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 20 - cmp r0, 0x3F - ble _080EEBCE - ldr r0, _080EEBE0 @ =SpriteCallbackDummy - str r0, [r4, 0x1C] -_080EEBCE: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080EEBD4: .4byte gSineTable -_080EEBD8: .4byte gUnknown_203AB04 -_080EEBDC: .4byte gUnknown_203AB08 -_080EEBE0: .4byte SpriteCallbackDummy - thumb_func_end sub_80EEB08 - - thumb_func_start sub_80EEBE4 -sub_80EEBE4: @ 80EEBE4 - push {r4,r5,lr} - movs r5, 0 - ldr r4, _080EEC04 @ =gUnknown_840BEDC -_080EEBEA: - adds r0, r4, 0 - bl LoadCompressedSpriteSheet - adds r4, 0x8 - adds r5, 0x1 - cmp r5, 0x6 - bls _080EEBEA - ldr r0, _080EEC08 @ =gUnknown_840BF14 - bl LoadSpritePalettes - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080EEC04: .4byte gUnknown_840BEDC -_080EEC08: .4byte gUnknown_840BF14 - thumb_func_end sub_80EEBE4 - - .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index 2d5b99e6c..494c35e86 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -211,7 +211,6 @@ SECTIONS { asm/battle_controller_oak.o(.text); asm/player_pc.o(.text); src/intro.o(.text); - asm/intro.o(.text); asm/battle_anim_special.o(.text); asm/hall_of_fame.o(.text); asm/credits.o(.text); diff --git a/src/intro.c b/src/intro.c index 3e0b9e498..f6ac0b8f0 100644 --- a/src/intro.c +++ b/src/intro.c @@ -124,9 +124,12 @@ void sub_80EE610(struct Sprite * sprite); void sub_80EE6A4(struct IntroSequenceData * ptr); void sub_80EE704(struct Sprite * sprite); bool8 sub_80EE850(struct IntroSequenceData * ptr); +void sub_80EE864(s16 a1, s16 a2, s16 a3); void sub_80EE8E4(struct Sprite * sprite); -void sub_80EE970(struct Sprite * sprite, s16 a1, u16 a2, u8 a3); +void sub_80EE970(struct Sprite * sprite, u16 a1, s16 a2, u8 a3); +void sub_80EE9D4(struct Sprite * sprite); void sub_80EEA94(struct IntroSequenceData * ptr); +void sub_80EEB08(struct Sprite * sprite); void sub_80EEBE4(void); extern const u32 gMultiBootProgram_PokemonColosseum_Start[]; @@ -1756,7 +1759,7 @@ void sub_80EE350(struct Sprite * sprite) sprite->data[4]++; sprite->data[5] += sprite->data[4]; sprite->data[7]++; - sprite->pos1.x = *(u16 *)&sprite->data[0] >> gUnknown_203AB22; + sprite->pos1.x = (u16)sprite->data[0] >> gUnknown_203AB22; sprite->pos1.y = sprite->data[1] >> gUnknown_203AB24; if (gUnknown_203AB1C && sprite->data[3] < 0) sprite->pos2.y = sprite->data[5] >> gUnknown_203AB1C; @@ -1925,3 +1928,248 @@ void sub_80EE6A4(struct IntroSequenceData * ptr) ptr->field_0018->data[7] = 40; ptr->field_0018->callback = sub_80EE704; } + +void sub_80EE704(struct Sprite * sprite) +{ + switch (sprite->data[0]) + { + case 0: + sprite->data[1]++; + if (sprite->data[1] > 4) + { + StartSpriteAnim(sprite, 3); + sprite->data[0]++; + } + break; + case 1: + sprite->data[2] += sprite->data[7]; + sprite->data[3] += 8; + sprite->pos2.x = sprite->data[2] >> 4; + sprite->pos2.y = -((gSineTable[sprite->data[3]] * gUnknown_203AB04) >> gUnknown_203AB08); + sprite->data[5]++; + if (sprite->data[5] > gUnknown_203AB06) + { + sprite->data[5] = 0; + sprite->data[7]--; + } + sprite->data[4]++; + if (sprite->data[4] > 15) + { + StartSpriteAnim(sprite, 2); + sprite->data[1] = 0; + sprite->data[6] = 0x4757; + sprite->data[7] = 28; + sprite->data[0]++; + } + break; + case 2: + sprite->data[2] += sprite->data[7]; + sprite->pos2.x = sprite->data[2] >> 4; + sprite->data[1]++; + if (sprite->data[1] > 6) + { + sub_80EE864(sprite->pos1.x + sprite->pos2.x, sprite->pos1.y + sprite->pos2.y, sprite->data[6]); + sprite->data[6] *= 1103515245; + } + if (sprite->data[1] > 12) + { + StartSpriteAnim(sprite, 0); + sprite->data[1] = 0; + sprite->data[0]++; + } + break; + case 3: + sprite->data[1]++; + if (sprite->data[1] > 16) + { + sub_80EE970(sprite, gUnknown_203AB0A, -sprite->pos2.x, 4); + } + break; + } +} + +bool8 sub_80EE850(struct IntroSequenceData * ptr) +{ + return ptr->field_0018->callback == SpriteCallbackDummy ? FALSE : TRUE; +} + +void sub_80EE864(s16 a1, s16 a2, s16 a3) +{ + int i; + u8 spriteId; + + for (i = 0; i < 2; i++) + { + spriteId = CreateSprite(&gUnknown_840BEC4, a1 - 22, a2 + 24, 10); + if (spriteId != MAX_SPRITES) + { + gSprites[spriteId].data[3] = (a3 % 13) + 8; + gSprites[spriteId].data[4] = a3 % 3; + gSprites[spriteId].data[7] = i; + a3 *= 1103515245; + } + } +} + +void sub_80EE8E4(struct Sprite * sprite) +{ + s16 * data = sprite->data; + + switch (sprite->data[0]) + { + case 0: + data[1] = sprite->pos1.x << 4; + data[2] = sprite->pos1.y << 4; + sprite->data[0]++; + // fallthrough + case 1: + data[1] -= data[3]; + data[2] += data[4]; + sprite->pos1.x = data[1] >> 4; + sprite->pos1.y = data[2] >> 4; + if (sprite->animEnded) + DestroySprite(sprite); + break; + } + data[7]++; + if (data[7] > 1) + { + data[7] = 0; + sprite->invisible ^= TRUE; + } +} + +void sub_80EE970(struct Sprite * sprite, u16 a1, s16 a2, u8 a3) +{ + sprite->data[0] = 0; + sprite->data[1] = a1; + sprite->data[2] = sprite->pos2.x << 4; + sprite->data[3] = (a2 << 4) / a1; + sprite->data[4] = 0; + sprite->data[5] = 0x800 / a1; + sprite->data[6] = 0; + sprite->data[7] = a3; + StartSpriteAnim(sprite, 2); + sprite->callback = sub_80EE9D4; +} + +void sub_80EE9D4(struct Sprite * sprite) +{ + switch (sprite->data[0]) + { + case 0: + sprite->data[6]++; + if (sprite->data[6] > 4) + { + StartSpriteAnim(sprite, 3); + sprite->data[6] = 0; + sprite->data[0]++; + } + break; + case 1: + sprite->data[1]--; + if (sprite->data[1]) + { + sprite->data[2] += sprite->data[3]; + sprite->data[4] += sprite->data[5]; + sprite->pos2.x = sprite->data[2] >> 4; + sprite->pos2.y = -(gSineTable[sprite->data[4] >> 4] >> sprite->data[7]); + } + else + { + sprite->pos2.x = (u16)sprite->data[2] >> 4; + sprite->pos2.y = 0; + StartSpriteAnim(sprite, 2); + if (sprite->data[7] == 5) + sprite->callback = SpriteCallbackDummy; + else + { + sprite->data[6] = 0; + sprite->data[0]++; + } + } + break; + case 2: + sprite->data[6]++; + if (sprite->data[6] > 4) + { + StartSpriteAnim(sprite, 0); + sprite->callback = SpriteCallbackDummy; + } + break; + } +} + +void sub_80EEA94(struct IntroSequenceData * ptr) +{ + ptr->field_0018->data[0] = 0; + ptr->field_0018->data[1] = 0; + ptr->field_0018->data[2] = 0; + ptr->field_0018->data[3] = 0; + ptr->field_0018->data[4] = 0; + ptr->field_0018->data[5] = 0; + ptr->field_0018->pos1.x += ptr->field_0018->pos2.x; + ptr->field_0018->pos2.x = 0; + gUnknown_203AB0C = 0x24; + gUnknown_203AB06 = 0x28; + gUnknown_203AB04 = 0x03; + gUnknown_203AB08 = 0x04; + ptr->field_0018->data[7] = 36; + StartSpriteAnim(ptr->field_0018, 2); + ptr->field_0018->callback = sub_80EEB08; +} + +void sub_80EEB08(struct Sprite * sprite) +{ + switch (sprite->data[0]) + { + case 0: + sprite->data[1]++; + if (sprite->data[1] & 1) + { + sprite->data[2]++; + if (sprite->data[2] & 1) + sprite->pos2.x++; + else + sprite->pos2.x--; + } + if (sprite->data[1] > 17) + { + sprite->data[1] = 0; + sprite->data[0]++; + } + break; + case 1: + if (++sprite->data[1] >= gUnknown_203AB06) + { + StartSpriteAnim(sprite, 4); + sprite->data[1] = 0; + sprite->data[2] = 0; + sprite->data[0]++; + } + break; + case 2: + sprite->data[1] += sprite->data[7]; + sprite->pos2.x = -(sprite->data[1] >> 4); + sprite->pos2.y = -((gSineTable[sprite->data[1] >> 4] * gUnknown_203AB04) >> gUnknown_203AB08); + sprite->data[2]++; + if (sprite->data[7] > 12) + sprite->data[7]--; + if ((sprite->data[1] >> 4) > 0x3F) + sprite->callback = SpriteCallbackDummy; + break; + } +} + +void sub_80EEBE4(void) +{ + int i; + + for (i = 0; i < NELEMS(gUnknown_840BEDC); i++) + { + LoadCompressedSpriteSheet(&gUnknown_840BEDC[i]); + } + // gUnknown_840BF14 is not properly terminated, so this + // call exhibits undefined behavior. + LoadSpritePalettes(gUnknown_840BF14); +} From 95537e5c231f5714b9a2a045fca5582779df372c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 4 Jul 2019 21:54:09 -0400 Subject: [PATCH 17/17] Make almost everything in intro static --- src/intro.c | 546 ++++++++++++++++++++++++++-------------------------- 1 file changed, 273 insertions(+), 273 deletions(-) diff --git a/src/intro.c b/src/intro.c index f6ac0b8f0..0ebf71a8d 100644 --- a/src/intro.c +++ b/src/intro.c @@ -43,182 +43,182 @@ struct IntroSequenceData u8 filler_083C[0x2080]; }; // size: 0x28BC -EWRAM_DATA struct GcmbStruct gUnknown_203AAD4 = {0}; -EWRAM_DATA u16 gUnknown_203AB00 = 0; -EWRAM_DATA u16 gUnknown_203AB02 = 0; -EWRAM_DATA u16 gUnknown_203AB04 = 0; -EWRAM_DATA u16 gUnknown_203AB06 = 0; -EWRAM_DATA u16 gUnknown_203AB08 = 0; -EWRAM_DATA u16 gUnknown_203AB0A = 0; -EWRAM_DATA u16 gUnknown_203AB0C = 0; -EWRAM_DATA u16 gUnknown_203AB0E = 0; -EWRAM_DATA u16 gUnknown_203AB10 = 0; -EWRAM_DATA u16 gUnknown_203AB12 = 0; -EWRAM_DATA u16 gUnknown_203AB14 = 0; -EWRAM_DATA u16 gUnknown_203AB16 = 0; -EWRAM_DATA u16 gUnknown_203AB18 = 0; -EWRAM_DATA u16 gUnknown_203AB1A = 0; -EWRAM_DATA u16 gUnknown_203AB1C = 0; -EWRAM_DATA u16 gUnknown_203AB1E = 0; -EWRAM_DATA u16 gUnknown_203AB20 = 0; -EWRAM_DATA u16 gUnknown_203AB22 = 0; -EWRAM_DATA u16 gUnknown_203AB24 = 0; -EWRAM_DATA u16 gUnknown_203AB26 = 0; -EWRAM_DATA u32 gUnknown_203AB28 = 0; -EWRAM_DATA s16 gUnknown_203AB2C = 0; -EWRAM_DATA u16 gUnknown_203AB2E = 0; -EWRAM_DATA u32 gUnknown_203AB30 = 0; +static EWRAM_DATA struct GcmbStruct gUnknown_203AAD4 = {0}; +static EWRAM_DATA u16 gUnknown_203AB00 = 0; +static EWRAM_DATA u16 gUnknown_203AB02 = 0; +static EWRAM_DATA u16 gUnknown_203AB04 = 0; +static EWRAM_DATA u16 gUnknown_203AB06 = 0; +static EWRAM_DATA u16 gUnknown_203AB08 = 0; +static EWRAM_DATA u16 gUnknown_203AB0A = 0; +static EWRAM_DATA u16 gUnknown_203AB0C = 0; +static EWRAM_DATA u16 gUnknown_203AB0E = 0; +static EWRAM_DATA u16 gUnknown_203AB10 = 0; +static EWRAM_DATA u16 gUnknown_203AB12 = 0; +static EWRAM_DATA u16 gUnknown_203AB14 = 0; +static EWRAM_DATA u16 gUnknown_203AB16 = 0; +static EWRAM_DATA u16 gUnknown_203AB18 = 0; +static EWRAM_DATA u16 gUnknown_203AB1A = 0; +static EWRAM_DATA u16 gUnknown_203AB1C = 0; +static EWRAM_DATA u16 gUnknown_203AB1E = 0; +static EWRAM_DATA u16 gUnknown_203AB20 = 0; +static EWRAM_DATA u16 gUnknown_203AB22 = 0; +static EWRAM_DATA u16 gUnknown_203AB24 = 0; +static EWRAM_DATA u16 gUnknown_203AB26 = 0; +static EWRAM_DATA u32 gUnknown_203AB28 = 0; +static EWRAM_DATA s16 gUnknown_203AB2C = 0; +static EWRAM_DATA u16 gUnknown_203AB2E = 0; +static EWRAM_DATA u32 gUnknown_203AB30 = 0; -void sub_80EC870(void); -void sub_80EC9D4(void); -void sub_80EC9EC(void); -void sub_80ECA00(void); -void sub_80ECA70(void); -void sub_80ECAB0(u8 taskId); -void sub_80ECAA8(struct IntroSequenceData * ptr, void (*cb)(struct IntroSequenceData *)); -void sub_80ECAF0(struct IntroSequenceData * ptr); -void sub_80ECB98(struct IntroSequenceData * ptr); -void sub_80ECC3C(struct IntroSequenceData * ptr); -void sub_80ECCA8(struct IntroSequenceData * ptr); -void sub_80ECD60(struct IntroSequenceData * ptr); -void sub_80ECEA4(struct IntroSequenceData * ptr); -void sub_80ED0AC(u8 taskId); -void sub_80ED118(void); -void sub_80ED140(u8 taskId); -void sub_80ED188(struct IntroSequenceData * ptr); -void sub_80ED40C(u8 taskId); -void sub_80ED428(u8 taskId); -void sub_80ED444(struct IntroSequenceData * ptr); -void sub_80ED4A0(struct IntroSequenceData * ptr); -void sub_80ED4C0(struct IntroSequenceData * ptr); -void sub_80ED6D8(void); -void sub_80ED714(u8 taskId); -void sub_80ED7D4(struct IntroSequenceData * ptr); -void sub_80ED818(struct Sprite * sprite); -void sub_80ED898(struct IntroSequenceData * ptr); -void sub_80EDAF0(struct IntroSequenceData * ptr); -void sub_80EDB70(struct IntroSequenceData * ptr); -void sub_80EDBAC(struct IntroSequenceData * ptr); -void sub_80EDBE8(struct IntroSequenceData * ptr); -void sub_80EDC40(void); -void sub_80EDDF0(void); -void sub_80EDE04(u8 taskId); -void sub_80EDED8(void); -void sub_80EDEEC(u8 taskId); -struct Sprite * sub_80EDF68(void); -void sub_80EDF94(struct IntroSequenceData * ptr); -void sub_80EE024(u8 taskId); -void sub_80EE160(void); -void sub_80EE1C4(struct Sprite * sprite); -void sub_80EE200(u8 taskId); -void sub_80EE29C(struct Sprite * sprite); -void sub_80EE350(struct Sprite * sprite); -void sub_80EE40C(struct Sprite * sprite); -void sub_80EE4DC(struct Sprite * sprite); -void sub_80EE4F8(struct IntroSequenceData * ptr); -void sub_80EE528(struct Sprite * sprite, s16 a1, s16 a2, u16 a3); -void sub_80EE580(struct Sprite * sprite); -bool32 sub_80EE5C8(struct IntroSequenceData * ptr); -void sub_80EE5E4(struct IntroSequenceData * ptr); -void sub_80EE610(struct Sprite * sprite); -void sub_80EE6A4(struct IntroSequenceData * ptr); -void sub_80EE704(struct Sprite * sprite); -bool8 sub_80EE850(struct IntroSequenceData * ptr); -void sub_80EE864(s16 a1, s16 a2, s16 a3); -void sub_80EE8E4(struct Sprite * sprite); -void sub_80EE970(struct Sprite * sprite, u16 a1, s16 a2, u8 a3); -void sub_80EE9D4(struct Sprite * sprite); -void sub_80EEA94(struct IntroSequenceData * ptr); -void sub_80EEB08(struct Sprite * sprite); -void sub_80EEBE4(void); +static void sub_80EC870(void); +static void sub_80EC9D4(void); +static void sub_80EC9EC(void); +static void sub_80ECA00(void); +static void sub_80ECA70(void); +static void sub_80ECAB0(u8 taskId); +static void sub_80ECAA8(struct IntroSequenceData * ptr, void (*cb)(struct IntroSequenceData *)); +static void sub_80ECAF0(struct IntroSequenceData * ptr); +static void sub_80ECB98(struct IntroSequenceData * ptr); +static void sub_80ECC3C(struct IntroSequenceData * ptr); +static void sub_80ECCA8(struct IntroSequenceData * ptr); +static void sub_80ECD60(struct IntroSequenceData * ptr); +static void sub_80ECEA4(struct IntroSequenceData * ptr); +static void sub_80ED0AC(u8 taskId); +static void sub_80ED118(void); +static void sub_80ED140(u8 taskId); +static void sub_80ED188(struct IntroSequenceData * ptr); +static void sub_80ED40C(u8 taskId); +static void sub_80ED428(u8 taskId); +static void sub_80ED444(struct IntroSequenceData * ptr); +static void sub_80ED4A0(struct IntroSequenceData * ptr); +static void sub_80ED4C0(struct IntroSequenceData * ptr); +static void sub_80ED6D8(void); +static void sub_80ED714(u8 taskId); +static void sub_80ED7D4(struct IntroSequenceData * ptr); +static void sub_80ED818(struct Sprite * sprite); +static void sub_80ED898(struct IntroSequenceData * ptr); +static void sub_80EDAF0(struct IntroSequenceData * ptr); +static void sub_80EDB70(struct IntroSequenceData * ptr); +static void sub_80EDBAC(struct IntroSequenceData * ptr); +static void sub_80EDBE8(struct IntroSequenceData * ptr); +static void sub_80EDC40(void); +static void sub_80EDDF0(void); +static void sub_80EDE04(u8 taskId); +static void sub_80EDED8(void); +static void sub_80EDEEC(u8 taskId); +static struct Sprite * sub_80EDF68(void); +static void sub_80EDF94(struct IntroSequenceData * ptr); +static void sub_80EE024(u8 taskId); +static void sub_80EE160(void); +static void sub_80EE1C4(struct Sprite * sprite); +static void sub_80EE200(u8 taskId); +static void sub_80EE29C(struct Sprite * sprite); +static void sub_80EE350(struct Sprite * sprite); +static void sub_80EE40C(struct Sprite * sprite); +static void sub_80EE4DC(struct Sprite * sprite); +static void sub_80EE4F8(struct IntroSequenceData * ptr); +static void sub_80EE528(struct Sprite * sprite, s16 a1, s16 a2, u16 a3); +static void sub_80EE580(struct Sprite * sprite); +static bool32 sub_80EE5C8(struct IntroSequenceData * ptr); +static void sub_80EE5E4(struct IntroSequenceData * ptr); +static void sub_80EE610(struct Sprite * sprite); +static void sub_80EE6A4(struct IntroSequenceData * ptr); +static void sub_80EE704(struct Sprite * sprite); +static bool8 sub_80EE850(struct IntroSequenceData * ptr); +static void sub_80EE864(s16 a1, s16 a2, s16 a3); +static void sub_80EE8E4(struct Sprite * sprite); +static void sub_80EE970(struct Sprite * sprite, u16 a1, s16 a2, u8 a3); +static void sub_80EE9D4(struct Sprite * sprite); +static void sub_80EEA94(struct IntroSequenceData * ptr); +static void sub_80EEB08(struct Sprite * sprite); +static void sub_80EEBE4(void); extern const u32 gMultiBootProgram_PokemonColosseum_Start[]; -const u16 gUnknown_8402260[] = INCBIN_U16("graphics/intro/unk_8402260.gbapal"); -const u8 gUnknown_8402280[] = INCBIN_U8("graphics/intro/unk_8402280.4bpp.lz"); -const u8 gUnknown_84024E4[] = INCBIN_U8("graphics/intro/unk_84024E4.bin.lz"); -const u16 gUnknown_8402630[] = INCBIN_U16("graphics/intro/unk_8402630.gbapal"); -const u8 gUnknown_8402650[] = INCBIN_U8("graphics/intro/unk_8402650.4bpp.lz"); -const u8 gUnknown_8402668[] = INCBIN_U8("graphics/intro/unk_8402668.bin.lz"); -const u16 gUnknown_840270C[] = INCBIN_U16("graphics/intro/unk_840270C.gbapal"); -const u8 gUnknown_840272C[] = INCBIN_U8("graphics/intro/unk_840272C.4bpp.lz"); -const u8 gUnknown_84028F8[] = INCBIN_U8("graphics/intro/unk_84028F8.bin.lz"); -const u16 gUnknown_8402A44[] = INCBIN_U16("graphics/intro/unk_8402A64.gbapal"); -const u8 gUnknown_8402A64[] = INCBIN_U8("graphics/intro/unk_8402A64.4bpp.lz"); -const u16 gUnknown_8402ABC[] = INCBIN_U16("graphics/intro/unk_8402ADC.gbapal"); -const u8 gUnknown_8402ADC[] = INCBIN_U8("graphics/intro/unk_8402ADC.4bpp.lz"); -const u8 gUnknown_8402B2C[] = INCBIN_U8("graphics/intro/unk_8402B2C.4bpp.lz"); -const u8 gUnknown_8402CD4[] = INCBIN_U8("graphics/intro/unk_8402CD4.4bpp.lz"); -const u16 gUnknown_8402D34[] = INCBIN_U16("graphics/intro/unk_8402D34.gbapal"); -const u8 gUnknown_8402D54[] = INCBIN_U8("graphics/intro/unk_8402D54.4bpp.lz"); -const u8 gUnknown_8403FE8[] = INCBIN_U8("graphics/intro/unk_8403FE8.bin.lz"); -const u16 gUnknown_84048CC[] = INCBIN_U16("graphics/intro/unk_84048CC.gbapal"); -const u8 gUnknown_84048EC[] = INCBIN_U8("graphics/intro/unk_84048EC.4bpp.lz"); -const u8 gUnknown_8404F7C[] = INCBIN_U8("graphics/intro/unk_8404F7C.bin.lz"); -const u16 gUnknown_84053B4[] = INCBIN_U16("graphics/intro/unk_84053B4.gbapal"); -const u8 gUnknown_8405414[] = INCBIN_U8("graphics/intro/unk_8405414.4bpp.lz"); -const u8 gUnknown_8405890[] = INCBIN_U8("graphics/intro/unk_8405890.bin.lz"); -const u16 gUnknown_8405B08[] = INCBIN_U16("graphics/intro/unk_8405B08.gbapal"); -const u8 gUnknown_8405B28[] = INCBIN_U8("graphics/intro/unk_8405B28.4bpp.lz"); -const u8 gUnknown_8405CDC[] = INCBIN_U8("graphics/intro/unk_8405CDC.bin.lz"); -const u16 gUnknown_8405DA4[] = INCBIN_U16("graphics/intro/unk_8405DA4.gbapal"); -const u8 gUnknown_8405DC4[] = INCBIN_U8("graphics/intro/unk_8405DC4.4bpp.lz"); -const u8 gUnknown_840644C[] = INCBIN_U8("graphics/intro/unk_840644C.bin.lz"); -const u16 gUnknown_8406634[] = INCBIN_U16("graphics/intro/unk_8406634.gbapal"); -const u8 gUnknown_8406654[] = INCBIN_U8("graphics/intro/unk_8406654.4bpp.lz"); -const u8 gUnknown_84071D0[] = INCBIN_U8("graphics/intro/unk_84071D0.bin.lz"); -const u16 gUnknown_8407430[] = INCBIN_U16("graphics/intro/unk_8407430.gbapal"); -const u8 gUnknown_8407470[] = INCBIN_U8("graphics/intro/unk_8407470.4bpp.lz"); -const u8 gUnknown_8407A50[] = INCBIN_U8("graphics/intro/unk_8407A50.bin.lz"); -const u8 gUnknown_8407B9C[] = INCBIN_U8("graphics/intro/unk_8407B9C.4bpp.lz"); -const u8 gUnknown_8408D98[] = INCBIN_U8("graphics/intro/unk_8408D98.bin.lz"); -const u8 gUnknown_840926C[] = INCBIN_U8("graphics/intro/unk_840926C.4bpp.lz"); -const u16 gUnknown_84096AC[] = INCBIN_U16("graphics/intro/unk_84096AC.gbapal"); -const u8 gUnknown_84096CC[] = INCBIN_U8("graphics/intro/unk_84096CC.4bpp.lz"); -const u16 gUnknown_8409A1C[] = INCBIN_U16("graphics/intro/unk_8409A1C.gbapal"); -const u8 gUnknown_8409A3C[] = INCBIN_U8("graphics/intro/unk_8409A3C.4bpp.lz"); -const u8 gUnknown_8409D20[] = INCBIN_U8("graphics/intro/unk_8409D20.4bpp.lz"); -const u8 gUnknown_840A3E4[] = INCBIN_U8("graphics/intro/unk_840A3E4.4bpp.lz"); -const u16 gUnknown_840B834[] = INCBIN_U16("graphics/intro/unk_840B834.gbapal"); -const u16 gUnknown_840B854[] = INCBIN_U16("graphics/intro/unk_840B854.gbapal"); -const u8 gUnknown_840B874[] = INCBIN_U8("graphics/intro/unk_840B874.4bpp.lz"); -const u8 gUnknown_840BAE0[] = INCBIN_U8("graphics/intro/unk_840BAE0.4bpp.lz"); +static const u16 gUnknown_8402260[] = INCBIN_U16("graphics/intro/unk_8402260.gbapal"); +static const u8 gUnknown_8402280[] = INCBIN_U8("graphics/intro/unk_8402280.4bpp.lz"); +static const u8 gUnknown_84024E4[] = INCBIN_U8("graphics/intro/unk_84024E4.bin.lz"); +static const u16 gUnknown_8402630[] = INCBIN_U16("graphics/intro/unk_8402630.gbapal"); +static const u8 gUnknown_8402650[] = INCBIN_U8("graphics/intro/unk_8402650.4bpp.lz"); +static const u8 gUnknown_8402668[] = INCBIN_U8("graphics/intro/unk_8402668.bin.lz"); +static const u16 gUnknown_840270C[] = INCBIN_U16("graphics/intro/unk_840270C.gbapal"); +static const u8 gUnknown_840272C[] = INCBIN_U8("graphics/intro/unk_840272C.4bpp.lz"); +static const u8 gUnknown_84028F8[] = INCBIN_U8("graphics/intro/unk_84028F8.bin.lz"); +static const u16 gUnknown_8402A44[] = INCBIN_U16("graphics/intro/unk_8402A64.gbapal"); +static const u8 gUnknown_8402A64[] = INCBIN_U8("graphics/intro/unk_8402A64.4bpp.lz"); +static const u16 gUnknown_8402ABC[] = INCBIN_U16("graphics/intro/unk_8402ADC.gbapal"); +static const u8 gUnknown_8402ADC[] = INCBIN_U8("graphics/intro/unk_8402ADC.4bpp.lz"); +static const u8 gUnknown_8402B2C[] = INCBIN_U8("graphics/intro/unk_8402B2C.4bpp.lz"); +static const u8 gUnknown_8402CD4[] = INCBIN_U8("graphics/intro/unk_8402CD4.4bpp.lz"); +static const u16 gUnknown_8402D34[] = INCBIN_U16("graphics/intro/unk_8402D34.gbapal"); +static const u8 gUnknown_8402D54[] = INCBIN_U8("graphics/intro/unk_8402D54.4bpp.lz"); +static const u8 gUnknown_8403FE8[] = INCBIN_U8("graphics/intro/unk_8403FE8.bin.lz"); +static const u16 gUnknown_84048CC[] = INCBIN_U16("graphics/intro/unk_84048CC.gbapal"); +static const u8 gUnknown_84048EC[] = INCBIN_U8("graphics/intro/unk_84048EC.4bpp.lz"); +static const u8 gUnknown_8404F7C[] = INCBIN_U8("graphics/intro/unk_8404F7C.bin.lz"); +static const u16 gUnknown_84053B4[] = INCBIN_U16("graphics/intro/unk_84053B4.gbapal"); +static const u8 gUnknown_8405414[] = INCBIN_U8("graphics/intro/unk_8405414.4bpp.lz"); +static const u8 gUnknown_8405890[] = INCBIN_U8("graphics/intro/unk_8405890.bin.lz"); +static const u16 gUnknown_8405B08[] = INCBIN_U16("graphics/intro/unk_8405B08.gbapal"); +static const u8 gUnknown_8405B28[] = INCBIN_U8("graphics/intro/unk_8405B28.4bpp.lz"); +static const u8 gUnknown_8405CDC[] = INCBIN_U8("graphics/intro/unk_8405CDC.bin.lz"); +static const u16 gUnknown_8405DA4[] = INCBIN_U16("graphics/intro/unk_8405DA4.gbapal"); +static const u8 gUnknown_8405DC4[] = INCBIN_U8("graphics/intro/unk_8405DC4.4bpp.lz"); +static const u8 gUnknown_840644C[] = INCBIN_U8("graphics/intro/unk_840644C.bin.lz"); +static const u16 gUnknown_8406634[] = INCBIN_U16("graphics/intro/unk_8406634.gbapal"); +static const u8 gUnknown_8406654[] = INCBIN_U8("graphics/intro/unk_8406654.4bpp.lz"); +static const u8 gUnknown_84071D0[] = INCBIN_U8("graphics/intro/unk_84071D0.bin.lz"); +static const u16 gUnknown_8407430[] = INCBIN_U16("graphics/intro/unk_8407430.gbapal"); +static const u8 gUnknown_8407470[] = INCBIN_U8("graphics/intro/unk_8407470.4bpp.lz"); +static const u8 gUnknown_8407A50[] = INCBIN_U8("graphics/intro/unk_8407A50.bin.lz"); +static const u8 gUnknown_8407B9C[] = INCBIN_U8("graphics/intro/unk_8407B9C.4bpp.lz"); +static const u8 gUnknown_8408D98[] = INCBIN_U8("graphics/intro/unk_8408D98.bin.lz"); +static const u8 gUnknown_840926C[] = INCBIN_U8("graphics/intro/unk_840926C.4bpp.lz"); +static const u16 gUnknown_84096AC[] = INCBIN_U16("graphics/intro/unk_84096AC.gbapal"); +static const u8 gUnknown_84096CC[] = INCBIN_U8("graphics/intro/unk_84096CC.4bpp.lz"); +static const u16 gUnknown_8409A1C[] = INCBIN_U16("graphics/intro/unk_8409A1C.gbapal"); +static const u8 gUnknown_8409A3C[] = INCBIN_U8("graphics/intro/unk_8409A3C.4bpp.lz"); +static const u8 gUnknown_8409D20[] = INCBIN_U8("graphics/intro/unk_8409D20.4bpp.lz"); +static const u8 gUnknown_840A3E4[] = INCBIN_U8("graphics/intro/unk_840A3E4.4bpp.lz"); +static const u16 gUnknown_840B834[] = INCBIN_U16("graphics/intro/unk_840B834.gbapal"); +static const u16 gUnknown_840B854[] = INCBIN_U16("graphics/intro/unk_840B854.gbapal"); +static const u8 gUnknown_840B874[] = INCBIN_U8("graphics/intro/unk_840B874.4bpp.lz"); +static const u8 gUnknown_840BAE0[] = INCBIN_U8("graphics/intro/unk_840BAE0.4bpp.lz"); -const struct BgTemplate gUnknown_840BB80[] = { +static const struct BgTemplate gUnknown_840BB80[] = { { 3, 3, 31, 0, 0, 3, 0x000 }, { 2, 3, 30, 0, 0, 2, 0x010 } }; -const struct BgTemplate gUnknown_840BB88[] = { +static const struct BgTemplate gUnknown_840BB88[] = { { 0, 0, 28, 2, 0, 0, 0x000 }, { 1, 1, 30, 2, 0, 0, 0x000 } }; -const struct BgTemplate gUnknown_840BB90[] = { +static const struct BgTemplate gUnknown_840BB90[] = { { 3, 1, 30, 2, 0, 3, 0x000 }, { 0, 0, 29, 0, 0, 0, 0x000 }, { 2, 3, 27, 0, 0, 2, 0x000 }, { 1, 2, 28, 0, 0, 1, 0x000 } }; -const struct BgTemplate gUnknown_840BBA0[] = { +static const struct BgTemplate gUnknown_840BBA0[] = { { 1, 0, 29, 0, 0, 1, 0x000 }, { 0, 1, 30, 2, 0, 0, 0x000 } }; -const struct WindowTemplate gUnknown_840BBA8[] = { +static const struct WindowTemplate gUnknown_840BBA8[] = { { 2, 6, 4, 18, 9, 0xD, 0x000 }, DUMMY_WIN_TEMPLATE }; -const u8 gUnknown_840BBB8[][2] = { +static const u8 gUnknown_840BBB8[][2] = { {0x3f, 0x3f}, {0x00, 0x3f}, {0x3f, 0x00}, {0x00, 0x00} }; -const struct CompressedSpriteSheet gUnknown_840BBC0[] = { +static const struct CompressedSpriteSheet gUnknown_840BBC0[] = { {gUnknown_8402A64, 0x0080, 0}, {gUnknown_8402ADC, 0x0080, 1}, {gUnknown_8402B2C, 0x0800, 2}, @@ -226,14 +226,14 @@ const struct CompressedSpriteSheet gUnknown_840BBC0[] = { {gUnknown_8402CD4, 0x0100, 4} }; -const struct SpritePalette gUnknown_840BBE8[] = { +static const struct SpritePalette gUnknown_840BBE8[] = { {gUnknown_8402A44, 0}, {gUnknown_8402ABC, 1}, {gUnknown_840270C, 3}, {0} }; -const struct Coords16 gUnknown_840BC08[] = { +static const struct Coords16 gUnknown_840BC08[] = { {0x0048, 0x0050}, {0x0088, 0x004a}, {0x00a8, 0x0050}, @@ -245,11 +245,11 @@ const struct Coords16 gUnknown_840BC08[] = { {0x0098, 0x0056} }; -const struct OamData gOamData_840BC2C = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_1, .tileNum = 0x000, .priority = 2, .paletteNum = 0 }; +static const struct OamData gOamData_840BC2C = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_1, .tileNum = 0x000, .priority = 2, .paletteNum = 0 }; -const struct OamData gOamData_840BC34 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_0, .tileNum = 0x000, .priority = 2, .paletteNum = 0 }; +static const struct OamData gOamData_840BC34 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_0, .tileNum = 0x000, .priority = 2, .paletteNum = 0 }; -const union AnimCmd gAnimCmd_840BC3C[] = { +static const union AnimCmd gAnimCmd_840BC3C[] = { ANIMCMD_FRAME(0, 4), ANIMCMD_FRAME(1, 4), ANIMCMD_FRAME(2, 4), @@ -257,7 +257,7 @@ const union AnimCmd gAnimCmd_840BC3C[] = { ANIMCMD_JUMP(0) }; -const union AnimCmd gAnimCmd_840BC50[] = { +static const union AnimCmd gAnimCmd_840BC50[] = { ANIMCMD_FRAME(0, 4), ANIMCMD_FRAME(1, 4), ANIMCMD_FRAME(2, 4), @@ -265,18 +265,18 @@ const union AnimCmd gAnimCmd_840BC50[] = { ANIMCMD_END }; -const union AnimCmd *const gAnimCmdTable_840BC64[] = { +static const union AnimCmd *const gAnimCmdTable_840BC64[] = { gAnimCmd_840BC3C, gAnimCmd_840BC50 }; -const struct SpriteTemplate gUnknown_840BC6C = {0, 0, &gOamData_840BC2C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80EE29C}; +static const struct SpriteTemplate gUnknown_840BC6C = {0, 0, &gOamData_840BC2C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80EE29C}; -const struct SpriteTemplate gUnknown_840BC84 = {1, 1, &gOamData_840BC34, gAnimCmdTable_840BC64, NULL, gDummySpriteAffineAnimTable, sub_80EE350}; +static const struct SpriteTemplate gUnknown_840BC84 = {1, 1, &gOamData_840BC34, gAnimCmdTable_840BC64, NULL, gDummySpriteAffineAnimTable, sub_80EE350}; -const struct OamData gOamData_840BC9C = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_2, .tileNum = 0x000, .priority = 2, .paletteNum = 0 }; +static const struct OamData gOamData_840BC9C = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_2, .tileNum = 0x000, .priority = 2, .paletteNum = 0 }; -const union AnimCmd gAnimCmd_840BCA4[] = { +static const union AnimCmd gAnimCmd_840BCA4[] = { ANIMCMD_FRAME(0, 8), ANIMCMD_FRAME(16, 8), ANIMCMD_FRAME(32, 8), @@ -284,48 +284,48 @@ const union AnimCmd gAnimCmd_840BCA4[] = { ANIMCMD_END }; -const union AnimCmd *const gAnimCmdTable_840BCB8[] = { +static const union AnimCmd *const gAnimCmdTable_840BCB8[] = { gAnimCmd_840BCA4 }; -const struct SpriteTemplate gUnknown_840BCBC = {2, 1, &gOamData_840BC9C, gAnimCmdTable_840BCB8, NULL, gDummySpriteAffineAnimTable, sub_80EE4DC}; +static const struct SpriteTemplate gUnknown_840BCBC = {2, 1, &gOamData_840BC9C, gAnimCmdTable_840BCB8, NULL, gDummySpriteAffineAnimTable, sub_80EE4DC}; -const struct OamData gOamData_840BCD4 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_BLEND, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_V_RECTANGLE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 3, .paletteNum = 0 }; +static const struct OamData gOamData_840BCD4 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_BLEND, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_V_RECTANGLE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 3, .paletteNum = 0 }; -const struct SpriteTemplate gUnknown_840BCDC = {3, 3, &gOamData_840BCD4, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; +static const struct SpriteTemplate gUnknown_840BCDC = {3, 3, &gOamData_840BCD4, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; -const struct OamData gOamData_840BCF4 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_BLEND, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_H_RECTANGLE, .matrixNum = 0, .size = ST_OAM_SIZE_1, .tileNum = 0x000, .priority = 3, .paletteNum = 0 }; +static const struct OamData gOamData_840BCF4 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_BLEND, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_H_RECTANGLE, .matrixNum = 0, .size = ST_OAM_SIZE_1, .tileNum = 0x000, .priority = 3, .paletteNum = 0 }; -const struct SpriteTemplate gUnknown_840BCFC = {4, 3, &gOamData_840BCF4, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; +static const struct SpriteTemplate gUnknown_840BCFC = {4, 3, &gOamData_840BCF4, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; -const struct OamData gOamData_840BD14 = { .affineMode = ST_OAM_AFFINE_DOUBLE, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 1, .paletteNum = 0 }; +static const struct OamData gOamData_840BD14 = { .affineMode = ST_OAM_AFFINE_DOUBLE, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 1, .paletteNum = 0 }; -const union AnimCmd gAnimCmd_840BD1C[] = { +static const union AnimCmd gAnimCmd_840BD1C[] = { ANIMCMD_FRAME(0, 1), ANIMCMD_END }; -const union AnimCmd gAnimCmd_840BD24[] = { +static const union AnimCmd gAnimCmd_840BD24[] = { ANIMCMD_FRAME(64, 1), ANIMCMD_END }; -const union AnimCmd gAnimCmd_840BD2C[] = { +static const union AnimCmd gAnimCmd_840BD2C[] = { ANIMCMD_FRAME(128, 1), ANIMCMD_END }; -const union AnimCmd gAnimCmd_840BD34[] = { +static const union AnimCmd gAnimCmd_840BD34[] = { ANIMCMD_FRAME(192, 1), ANIMCMD_END }; -const union AnimCmd gAnimCmd_840BD3C[] = { +static const union AnimCmd gAnimCmd_840BD3C[] = { ANIMCMD_FRAME(256, 1), ANIMCMD_END }; -const union AnimCmd *const gAnimCmdTable_840BD44[] = { +static const union AnimCmd *const gAnimCmdTable_840BD44[] = { gAnimCmd_840BD1C, gAnimCmd_840BD24, gAnimCmd_840BD2C, @@ -333,105 +333,105 @@ const union AnimCmd *const gAnimCmdTable_840BD44[] = { gAnimCmd_840BD3C }; -const union AffineAnimCmd gAffineAnimCmd_840BD58[] = { +static const union AffineAnimCmd gAffineAnimCmd_840BD58[] = { AFFINEANIMCMD_FRAME(256, 256, 0, 0), AFFINEANIMCMD_END }; -const union AffineAnimCmd gAffineAnimCmd_840BD68[] = { +static const union AffineAnimCmd gAffineAnimCmd_840BD68[] = { AFFINEANIMCMD_FRAME(256, 256, 0, 0), AFFINEANIMCMD_FRAME(32, 32, 0, 8), AFFINEANIMCMD_END }; -const union AffineAnimCmd *const gAffineAnimCmdTable_840BD80[] = { +static const union AffineAnimCmd *const gAffineAnimCmdTable_840BD80[] = { gAffineAnimCmd_840BD58, gAffineAnimCmd_840BD68 }; -const struct SpriteTemplate gUnknown_840BD88 = {5, 7, &gOamData_840BD14, gAnimCmdTable_840BD44, NULL, gAffineAnimCmdTable_840BD80, SpriteCallbackDummy}; +static const struct SpriteTemplate gUnknown_840BD88 = {5, 7, &gOamData_840BD14, gAnimCmdTable_840BD44, NULL, gAffineAnimCmdTable_840BD80, SpriteCallbackDummy}; -const struct OamData gOamData_840BDA0 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 1, .paletteNum = 0 }; +static const struct OamData gOamData_840BDA0 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 1, .paletteNum = 0 }; -const struct SpriteTemplate gUnknown_840BDA8 = {7, 7, &gOamData_840BDA0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; +static const struct SpriteTemplate gUnknown_840BDA8 = {7, 7, &gOamData_840BDA0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; -const struct SpriteTemplate gUnknown_840BDC0 = {6, 6, &gOamData_840BDA0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; +static const struct SpriteTemplate gUnknown_840BDC0 = {6, 6, &gOamData_840BDA0, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; -const struct OamData gOamData_840BDD8 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_H_RECTANGLE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 0, .paletteNum = 0 }; +static const struct OamData gOamData_840BDD8 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_H_RECTANGLE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 0, .paletteNum = 0 }; -const union AnimCmd gAnimCmds_840BDE0[] = { +static const union AnimCmd gAnimCmds_840BDE0[] = { ANIMCMD_FRAME(0, 0), ANIMCMD_END }; -const union AnimCmd gAnimCmds_840BDE8[] = { +static const union AnimCmd gAnimCmds_840BDE8[] = { ANIMCMD_FRAME(32, 4), ANIMCMD_FRAME(0, 4), ANIMCMD_END }; -const union AnimCmd *const gAnimCmdTable_840BDF4[] = { +static const union AnimCmd *const gAnimCmdTable_840BDF4[] = { gAnimCmds_840BDE0, gAnimCmds_840BDE8 }; -const struct SpriteTemplate gUnknown_840BDFC = {8, 8, &gOamData_840BDD8, gAnimCmdTable_840BDF4, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; +static const struct SpriteTemplate gUnknown_840BDFC = {8, 8, &gOamData_840BDD8, gAnimCmdTable_840BDF4, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy}; -const struct OamData gOamData_840BE14 = { .affineMode = ST_OAM_AFFINE_DOUBLE, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 1, .paletteNum = 0 }; +static const struct OamData gOamData_840BE14 = { .affineMode = ST_OAM_AFFINE_DOUBLE, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 1, .paletteNum = 0 }; -const union AnimCmd gAnimCmd_840BE1C[] = { +static const union AnimCmd gAnimCmd_840BE1C[] = { ANIMCMD_FRAME(0, 0), ANIMCMD_END }; -const union AnimCmd gAnimCmd_840BE24[] = { +static const union AnimCmd gAnimCmd_840BE24[] = { ANIMCMD_FRAME(64, 0), ANIMCMD_END }; -const union AnimCmd gAnimCmd_840BE2C[] = { +static const union AnimCmd gAnimCmd_840BE2C[] = { ANIMCMD_FRAME(96, 0), ANIMCMD_END }; -const union AnimCmd gAnimCmd_840BE34[] = { +static const union AnimCmd gAnimCmd_840BE34[] = { ANIMCMD_FRAME(160, 0), ANIMCMD_END }; -const union AnimCmd *const gAnimCmdTable_840BE3C[] = { +static const union AnimCmd *const gAnimCmdTable_840BE3C[] = { gAnimCmd_840BE1C, gAnimCmd_840BE24, gAnimCmd_840BE2C, gAnimCmd_840BE34 }; -const struct SpriteTemplate gUnknown_840BE4C = {9, 6, &gOamData_840BE14, gAnimCmdTable_840BE3C, NULL, gAffineAnimCmdTable_840BD80, SpriteCallbackDummy}; +static const struct SpriteTemplate gUnknown_840BE4C = {9, 6, &gOamData_840BE14, gAnimCmdTable_840BE3C, NULL, gAffineAnimCmdTable_840BD80, SpriteCallbackDummy}; -const struct OamData gOamData_840BE64 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_V_RECTANGLE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 1, .paletteNum = 0 }; +static const struct OamData gOamData_840BE64 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_V_RECTANGLE, .matrixNum = 0, .size = ST_OAM_SIZE_3, .tileNum = 0x000, .priority = 1, .paletteNum = 0 }; -const union AnimCmd gAnimCmd_840BE6C[] = { +static const union AnimCmd gAnimCmd_840BE6C[] = { ANIMCMD_FRAME(0, 8), ANIMCMD_FRAME(32, 4), ANIMCMD_END }; -const union AnimCmd gAnimCmd_840BE78[] = { +static const union AnimCmd gAnimCmd_840BE78[] = { ANIMCMD_FRAME(64, 8), ANIMCMD_FRAME(72, 4), ANIMCMD_END }; -const union AnimCmd *const gAnimCmdTable_840BE84[] = { +static const union AnimCmd *const gAnimCmdTable_840BE84[] = { gAnimCmd_840BE6C, gAnimCmd_840BE78 }; -const struct SpriteTemplate gUnknown_840BE8C = {10, 10, &gOamData_840BE64, gAnimCmdTable_840BE84, NULL, gDummySpriteAffineAnimTable, sub_80EE1C4}; +static const struct SpriteTemplate gUnknown_840BE8C = {10, 10, &gOamData_840BE64, gAnimCmdTable_840BE84, NULL, gDummySpriteAffineAnimTable, sub_80EE1C4}; -const struct OamData gOamData_840BEA4 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_1, .tileNum = 0x000, .priority = 1, .paletteNum = 0 }; +static const struct OamData gOamData_840BEA4 = { .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, .mosaic = FALSE, .bpp = ST_OAM_4BPP, .shape = ST_OAM_SQUARE, .matrixNum = 0, .size = ST_OAM_SIZE_1, .tileNum = 0x000, .priority = 1, .paletteNum = 0 }; -const union AnimCmd gAnimCmd_840BEAC[] = { +static const union AnimCmd gAnimCmd_840BEAC[] = { ANIMCMD_FRAME(0, 10), ANIMCMD_FRAME(4, 10), ANIMCMD_FRAME(8, 10), @@ -439,13 +439,13 @@ const union AnimCmd gAnimCmd_840BEAC[] = { ANIMCMD_END }; -const union AnimCmd *const gAnimCmdTable_840BEC0[] = { +static const union AnimCmd *const gAnimCmdTable_840BEC0[] = { gAnimCmd_840BEAC }; -const struct SpriteTemplate gUnknown_840BEC4 = {11, 11, &gOamData_840BEA4, gAnimCmdTable_840BEC0, NULL, gDummySpriteAffineAnimTable, sub_80EE8E4}; +static const struct SpriteTemplate gUnknown_840BEC4 = {11, 11, &gOamData_840BEA4, gAnimCmdTable_840BEC0, NULL, gDummySpriteAffineAnimTable, sub_80EE8E4}; -const struct CompressedSpriteSheet gUnknown_840BEDC[] = { +static const struct CompressedSpriteSheet gUnknown_840BEDC[] = { {gUnknown_840926C, 0x0800, 6}, {gUnknown_84096CC, 0x0800, 7}, {gUnknown_840A3E4, 0x2800, 5}, @@ -460,7 +460,7 @@ const struct CompressedSpriteSheet gUnknown_840BEDC[] = { // LoadSpritePalettes uses a {0} entry to signal end of array. // Because such an entry is absent in this case, the function // continues reading into the next .rodata section. -const struct SpritePalette gUnknown_840BF14[] = { +static const struct SpritePalette gUnknown_840BF14[] = { {gUnknown_8405DA4, 6}, {gUnknown_84096AC, 7}, {gUnknown_8409A1C, 8}, @@ -469,32 +469,32 @@ const struct SpritePalette gUnknown_840BF14[] = { // {0} }; -void sub_80EC5A4(void) +static void sub_80EC5A4(void) { LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); } -void sub_80EC5B8(void) +static void sub_80EC5B8(void) { if (!UpdatePaletteFade()) SetMainCallback2(sub_80EC870); } -void load_copyright_graphics(u16 a, u16 b, u16 c) +static void load_copyright_graphics(u16 a, u16 b, u16 c) { LZ77UnCompVram(gUnknown_8402280, (void *)BG_VRAM + a); LZ77UnCompVram(gUnknown_84024E4, (void *)BG_VRAM + b); LoadPalette(gUnknown_8402260, c, 0x20); } -void SerialCb_CopyrightScreen(void) +static void SerialCb_CopyrightScreen(void) { GameCubeMultiBoot_HandleSerialInterrupt(&gUnknown_203AAD4); } -bool8 sub_80EC62C(void) +static bool8 sub_80EC62C(void) { switch (gMain.state) { @@ -586,7 +586,7 @@ void sub_80EC864(void) sub_80EC62C(); } -void sub_80EC870(void) +static void sub_80EC870(void) { switch (gMain.state) { @@ -628,7 +628,7 @@ void sub_80EC870(void) gMain.state++; } -void sub_80EC9D4(void) +static void sub_80EC9D4(void) { RunTasks(); AnimateSprites(); @@ -636,14 +636,14 @@ void sub_80EC9D4(void) UpdatePaletteFade(); } -void sub_80EC9EC(void) +static void sub_80EC9EC(void) { LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); } -void sub_80ECA00(void) +static void sub_80ECA00(void) { SetGpuReg(REG_OFFSET_DISPCNT, 0); SetGpuReg(REG_OFFSET_BLDCNT, 0); @@ -660,7 +660,7 @@ void sub_80ECA00(void) SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON); } -void sub_80ECA70(void) +static void sub_80ECA70(void) { struct IntroSequenceData * ptr = Alloc(sizeof(struct IntroSequenceData)); sub_80ECAA8(ptr, sub_80ECAF0); @@ -668,13 +668,13 @@ void sub_80ECA70(void) SetWordTaskArg(ptr->field_0005, 0, (uintptr_t)ptr); } -void sub_80ECAA8(struct IntroSequenceData * ptr, void (*cb)(struct IntroSequenceData *)) +static void sub_80ECAA8(struct IntroSequenceData * ptr, void (*cb)(struct IntroSequenceData *)) { ptr->field_0000 = cb; ptr->field_0004 = 0; } -void sub_80ECAB0(u8 taskId) +static void sub_80ECAB0(u8 taskId) { struct IntroSequenceData * ptr = (void *)GetWordTaskArg(taskId, 0); if (JOY_NEW(A_BUTTON | START_BUTTON | SELECT_BUTTON) && ptr->field_0000 != sub_80EDBE8) @@ -682,7 +682,7 @@ void sub_80ECAB0(u8 taskId) ptr->field_0000(ptr); } -void sub_80ECAF0(struct IntroSequenceData * this) +static void sub_80ECAF0(struct IntroSequenceData * this) { switch (this->field_0004) { @@ -704,7 +704,7 @@ void sub_80ECAF0(struct IntroSequenceData * this) } } -void sub_80ECB98(struct IntroSequenceData * this) +static void sub_80ECB98(struct IntroSequenceData * this) { switch (this->field_0004) { @@ -733,7 +733,7 @@ void sub_80ECB98(struct IntroSequenceData * this) } } -void sub_80ECC3C(struct IntroSequenceData * this) +static void sub_80ECC3C(struct IntroSequenceData * this) { switch (this->field_0004) { @@ -760,7 +760,7 @@ void sub_80ECC3C(struct IntroSequenceData * this) } } -void sub_80ECCA8(struct IntroSequenceData * this) +static void sub_80ECCA8(struct IntroSequenceData * this) { switch (this->field_0004) { @@ -799,7 +799,7 @@ void sub_80ECCA8(struct IntroSequenceData * this) } } -void sub_80ECD60(struct IntroSequenceData * this) +static void sub_80ECD60(struct IntroSequenceData * this) { switch (this->field_0004) { @@ -865,7 +865,7 @@ void sub_80ECD60(struct IntroSequenceData * this) } } -void sub_80ECEA4(struct IntroSequenceData * this) +static void sub_80ECEA4(struct IntroSequenceData * this) { switch (this->field_0004) { @@ -938,7 +938,7 @@ void sub_80ECEA4(struct IntroSequenceData * this) } } -void sub_80ED0AC(u8 taskId) +static void sub_80ED0AC(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -958,13 +958,13 @@ void sub_80ED0AC(u8 taskId) } } -void sub_80ED118(void) +static void sub_80ED118(void) { u8 taskId = FindTaskIdByFunc(sub_80ED0AC); gTasks[taskId].data[2] = TRUE; } -void sub_80ED140(u8 taskId) +static void sub_80ED140(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -978,7 +978,7 @@ void sub_80ED140(u8 taskId) } } -void sub_80ED188(struct IntroSequenceData * this) +static void sub_80ED188(struct IntroSequenceData * this) { switch (this->field_0004) { @@ -1065,19 +1065,19 @@ void sub_80ED188(struct IntroSequenceData * this) } } -void sub_80ED40C(u8 taskId) +static void sub_80ED40C(u8 taskId) { ChangeBgX(3, 0x0E0, 2); ChangeBgX(0, 0x110, 1); } -void sub_80ED428(u8 taskId) +static void sub_80ED428(u8 taskId) { ChangeBgY(2, 0x020, 1); ChangeBgY(1, 0x024, 2); } -void sub_80ED444(struct IntroSequenceData * this) +static void sub_80ED444(struct IntroSequenceData * this) { u8 spriteId; @@ -1093,7 +1093,7 @@ void sub_80ED444(struct IntroSequenceData * this) this->field_001C = &gSprites[spriteId]; } -void sub_80ED4A0(struct IntroSequenceData * this) +static void sub_80ED4A0(struct IntroSequenceData * this) { if (this->field_001C != NULL) DestroySprite(this->field_001C); @@ -1101,7 +1101,7 @@ void sub_80ED4A0(struct IntroSequenceData * this) DestroySprite(this->field_0020); } -void sub_80ED4C0(struct IntroSequenceData * this) +static void sub_80ED4C0(struct IntroSequenceData * this) { switch (this->field_0004) { @@ -1161,7 +1161,7 @@ void sub_80ED4C0(struct IntroSequenceData * this) } } -void sub_80ED69C(u8 taskId) +static void sub_80ED69C(u8 taskId) { if (gTasks[taskId].data[0] == 0) ChangeBgX(1, 0x400, 2); @@ -1169,18 +1169,18 @@ void sub_80ED69C(u8 taskId) ChangeBgX(1, 0x020, 2); } -void sub_80ED6D8(void) +static void sub_80ED6D8(void) { CreateTask(sub_80ED69C, 0); } -void sub_80ED6EC(void) +static void sub_80ED6EC(void) { u8 taskId = FindTaskIdByFunc(sub_80ED69C); gTasks[taskId].data[0] = 1; } -void sub_80ED714(u8 taskId) +static void sub_80ED714(u8 taskId) { s16 * data = gTasks[taskId].data; if (data[0] == 0) @@ -1195,25 +1195,25 @@ void sub_80ED714(u8 taskId) } } -void sub_80ED760(void) +static void sub_80ED760(void) { u8 taskId = FindTaskIdByFunc(sub_80ED714); gTasks[taskId].data[0] = 1; } -void sub_80ED788(void) +static void sub_80ED788(void) { u8 taskId = FindTaskIdByFunc(sub_80ED714); gTasks[taskId].data[0] = 0; } -u8 sub_80ED7B0(void) +static u8 sub_80ED7B0(void) { u8 taskId = FindTaskIdByFunc(sub_80ED714); return gTasks[taskId].data[2]; } -void sub_80ED7D4(struct IntroSequenceData * this) +static void sub_80ED7D4(struct IntroSequenceData * this) { u8 spriteId = CreateSprite(&gUnknown_840BDFC, 296, 112, 7); if (spriteId != MAX_SPRITES) @@ -1225,7 +1225,7 @@ void sub_80ED7D4(struct IntroSequenceData * this) this->field_0024 = NULL; } -void sub_80ED818(struct Sprite * sprite) +static void sub_80ED818(struct Sprite * sprite) { s16 * data = sprite->data; @@ -1258,7 +1258,7 @@ void sub_80ED818(struct Sprite * sprite) } } -void sub_80ED898(struct IntroSequenceData * this) +static void sub_80ED898(struct IntroSequenceData * this) { switch (this->field_0004) { @@ -1396,12 +1396,12 @@ void sub_80ED898(struct IntroSequenceData * this) } } -void sub_80EDAD8(struct Sprite * sprite) +static void sub_80EDAD8(struct Sprite * sprite) { CalcCenterToCornerVec(sprite, sprite->oam.shape, sprite->oam.size, sprite->oam.affineMode); } -void sub_80EDAF0(struct IntroSequenceData * this) +static void sub_80EDAF0(struct IntroSequenceData * this) { int i; @@ -1421,7 +1421,7 @@ void sub_80EDAF0(struct IntroSequenceData * this) } } -void sub_80EDB70(struct IntroSequenceData * this) +static void sub_80EDB70(struct IntroSequenceData * this) { this->field_0018->pos1.x += this->field_0018->pos2.x; this->field_0018->pos1.y += this->field_0018->pos2.y; @@ -1430,11 +1430,11 @@ void sub_80EDB70(struct IntroSequenceData * this) StartSpriteAffineAnim(this->field_0018, 1); } -void nullsub_83(struct Sprite * sprite) +static void nullsub_83(struct Sprite * sprite) { } -void sub_80EDBAC(struct IntroSequenceData * this) +static void sub_80EDBAC(struct IntroSequenceData * this) { int i; @@ -1446,7 +1446,7 @@ void sub_80EDBAC(struct IntroSequenceData * this) } } -void sub_80EDBE8(struct IntroSequenceData * this) +static void sub_80EDBE8(struct IntroSequenceData * this) { switch (this->field_0004) { @@ -1467,7 +1467,7 @@ void sub_80EDBE8(struct IntroSequenceData * this) } } -void sub_80EDC40(void) +static void sub_80EDC40(void) { int i; u8 spriteId; @@ -1501,7 +1501,7 @@ void sub_80EDC40(void) } } -void sub_80EDD28(s16 x, s16 y, u16 a2) +static void sub_80EDD28(s16 x, s16 y, u16 a2) { u8 spriteId; s16 r4 = (a2 & gUnknown_203AB12) + 2; @@ -1524,12 +1524,12 @@ void sub_80EDD28(s16 x, s16 y, u16 a2) } } -void sub_80EDDF0(void) +static void sub_80EDDF0(void) { CreateTask(sub_80EDE04, 1); } -void sub_80EDE04(u8 taskId) +static void sub_80EDE04(u8 taskId) { s16 * data = gTasks[taskId].data; u8 r6; @@ -1560,12 +1560,12 @@ void sub_80EDE04(u8 taskId) } } -void sub_80EDED8(void) +static void sub_80EDED8(void) { CreateTask(sub_80EDEEC, 2); } -void sub_80EDEEC(u8 taskId) +static void sub_80EDEEC(u8 taskId) { s16 * data = gTasks[taskId].data; u8 r2; @@ -1586,13 +1586,13 @@ void sub_80EDEEC(u8 taskId) data[0] = 0; } -struct Sprite * sub_80EDF68(void) +static struct Sprite * sub_80EDF68(void) { u8 spriteId = CreateSprite(&gUnknown_840BCDC, 120, 70, 4); return &gSprites[spriteId]; } -void sub_80EDF94(struct IntroSequenceData * this) +static void sub_80EDF94(struct IntroSequenceData * this) { u8 taskId; this->field_0006 = 0; @@ -1602,7 +1602,7 @@ void sub_80EDF94(struct IntroSequenceData * this) gTasks[taskId].data[4] = GetBgX(0); } -void sub_80EDFD8(int a, int b, int c, int d) +static void sub_80EDFD8(int a, int b, int c, int d) { ChangeBgY(0, (a << 15) + 0x1F000, 0); ChangeBgX(0, d, 0); @@ -1610,7 +1610,7 @@ void sub_80EDFD8(int a, int b, int c, int d) ChangeBgY(0, c << 8, 2); } -void sub_80EE024(u8 taskId) +static void sub_80EE024(u8 taskId) { s16 * data = gTasks[taskId].data; int b, c; @@ -1680,7 +1680,7 @@ void sub_80EE024(u8 taskId) sub_80EDFD8(data[7], b, c, data[4]); } -void sub_80EE160(void) +static void sub_80EE160(void) { u8 spriteId; @@ -1695,14 +1695,14 @@ void sub_80EE160(void) } } -void sub_80EE1C4(struct Sprite * sprite) +static void sub_80EE1C4(struct Sprite * sprite) { sprite->invisible ^= TRUE; if (sprite->animEnded) DestroySprite(sprite); } -void sub_80EE200(u8 taskId) +static void sub_80EE200(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1728,7 +1728,7 @@ void sub_80EE200(u8 taskId) } } -void sub_80EE29C(struct Sprite * sprite) +static void sub_80EE29C(struct Sprite * sprite) { u32 v; sprite->data[0] -= sprite->data[2]; @@ -1750,7 +1750,7 @@ void sub_80EE29C(struct Sprite * sprite) DestroySprite(sprite); } -void sub_80EE350(struct Sprite * sprite) +static void sub_80EE350(struct Sprite * sprite) { u32 v; @@ -1773,7 +1773,7 @@ void sub_80EE350(struct Sprite * sprite) DestroySprite(sprite); } -void sub_80EE40C(struct Sprite * sprite) +static void sub_80EE40C(struct Sprite * sprite) { if (sprite->data[2]) { @@ -1822,19 +1822,19 @@ void sub_80EE40C(struct Sprite * sprite) } } -void sub_80EE4DC(struct Sprite * sprite) +static void sub_80EE4DC(struct Sprite * sprite) { if (sprite->animEnded) DestroySprite(sprite); } -void sub_80EE4F8(struct IntroSequenceData * this) +static void sub_80EE4F8(struct IntroSequenceData * this) { u8 spriteId = CreateSprite(&gUnknown_840BD88, 0, 0, 9); this->field_0018 = &gSprites[spriteId]; } -void sub_80EE528(struct Sprite * sprite, s16 a1, s16 a2, u16 a3) +static void sub_80EE528(struct Sprite * sprite, s16 a1, s16 a2, u16 a3) { sprite->data[0] = a1 << 4; sprite->data[1] = ((a2 - a1) << 4) / a3; @@ -1846,7 +1846,7 @@ void sub_80EE528(struct Sprite * sprite, s16 a1, s16 a2, u16 a3) sprite->callback = sub_80EE580; } -void sub_80EE580(struct Sprite * sprite) +static void sub_80EE580(struct Sprite * sprite) { sprite->data[4]++; if (sprite->data[4] >= 40) @@ -1863,12 +1863,12 @@ void sub_80EE580(struct Sprite * sprite) } } -bool32 sub_80EE5C8(struct IntroSequenceData * ptr) +static bool32 sub_80EE5C8(struct IntroSequenceData * ptr) { return ptr->field_0018->callback == sub_80EE580 ? TRUE : FALSE; } -void sub_80EE5E4(struct IntroSequenceData * ptr) +static void sub_80EE5E4(struct IntroSequenceData * ptr) { StartSpriteAnim(ptr->field_0018, 2); ptr->field_0018->data[0] = 0; @@ -1877,7 +1877,7 @@ void sub_80EE5E4(struct IntroSequenceData * ptr) ptr->field_0018->callback = sub_80EE610; } -void sub_80EE610(struct Sprite * sprite) +static void sub_80EE610(struct Sprite * sprite) { switch (sprite->data[0]) { @@ -1913,7 +1913,7 @@ void sub_80EE610(struct Sprite * sprite) } } -void sub_80EE6A4(struct IntroSequenceData * ptr) +static void sub_80EE6A4(struct IntroSequenceData * ptr) { gUnknown_203AB0A = 16; gUnknown_203AB04 = 3; @@ -1929,7 +1929,7 @@ void sub_80EE6A4(struct IntroSequenceData * ptr) ptr->field_0018->callback = sub_80EE704; } -void sub_80EE704(struct Sprite * sprite) +static void sub_80EE704(struct Sprite * sprite) { switch (sprite->data[0]) { @@ -1988,12 +1988,12 @@ void sub_80EE704(struct Sprite * sprite) } } -bool8 sub_80EE850(struct IntroSequenceData * ptr) +static bool8 sub_80EE850(struct IntroSequenceData * ptr) { return ptr->field_0018->callback == SpriteCallbackDummy ? FALSE : TRUE; } -void sub_80EE864(s16 a1, s16 a2, s16 a3) +static void sub_80EE864(s16 a1, s16 a2, s16 a3) { int i; u8 spriteId; @@ -2011,7 +2011,7 @@ void sub_80EE864(s16 a1, s16 a2, s16 a3) } } -void sub_80EE8E4(struct Sprite * sprite) +static void sub_80EE8E4(struct Sprite * sprite) { s16 * data = sprite->data; @@ -2039,7 +2039,7 @@ void sub_80EE8E4(struct Sprite * sprite) } } -void sub_80EE970(struct Sprite * sprite, u16 a1, s16 a2, u8 a3) +static void sub_80EE970(struct Sprite * sprite, u16 a1, s16 a2, u8 a3) { sprite->data[0] = 0; sprite->data[1] = a1; @@ -2053,7 +2053,7 @@ void sub_80EE970(struct Sprite * sprite, u16 a1, s16 a2, u8 a3) sprite->callback = sub_80EE9D4; } -void sub_80EE9D4(struct Sprite * sprite) +static void sub_80EE9D4(struct Sprite * sprite) { switch (sprite->data[0]) { @@ -2100,7 +2100,7 @@ void sub_80EE9D4(struct Sprite * sprite) } } -void sub_80EEA94(struct IntroSequenceData * ptr) +static void sub_80EEA94(struct IntroSequenceData * ptr) { ptr->field_0018->data[0] = 0; ptr->field_0018->data[1] = 0; @@ -2119,7 +2119,7 @@ void sub_80EEA94(struct IntroSequenceData * ptr) ptr->field_0018->callback = sub_80EEB08; } -void sub_80EEB08(struct Sprite * sprite) +static void sub_80EEB08(struct Sprite * sprite) { switch (sprite->data[0]) { @@ -2161,7 +2161,7 @@ void sub_80EEB08(struct Sprite * sprite) } } -void sub_80EEBE4(void) +static void sub_80EEBE4(void) { int i;