diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | asm/rom_813BA94.s | 2007 | ||||
-rw-r--r-- | asm/rom_8148B8C.s | 24 | ||||
-rw-r--r-- | include/sprite.h | 10 | ||||
-rw-r--r-- | src/decompress.c | 14 | ||||
-rw-r--r-- | src/intro.c | 592 | ||||
-rw-r--r-- | src/sprite.c | 14 | ||||
-rw-r--r-- | sym_common.txt | 2 |
8 files changed, 616 insertions, 2048 deletions
diff --git a/.gitignore b/.gitignore index 79b9641a0..550f7677c 100644 --- a/.gitignore +++ b/.gitignore @@ -34,3 +34,4 @@ types_*.taghl *.s.old2 *.dump *.sa* +Thumbs.db diff --git a/asm/rom_813BA94.s b/asm/rom_813BA94.s index e11d5fad9..7e966cf91 100644 --- a/asm/rom_813BA94.s +++ b/asm/rom_813BA94.s @@ -6,1993 +6,6 @@ .text - thumb_func_start task_intro_1 -task_intro_1: @ 813BA94 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0xC - mov r8, r0 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r0, 0 - bl SetVBlankCallback - ldr r4, _0813BC18 @ =gUnknown_02039318 - bl Random - movs r1, 0x1 - ands r1, r0 - strh r1, [r4] - bl intro_reset_and_hide_bgs - ldr r0, _0813BC1C @ =REG_BG3VOFS - movs r6, 0 - strh r6, [r0] - ldr r1, _0813BC20 @ =REG_BG2VOFS - movs r0, 0x50 - strh r0, [r1] - subs r1, 0x4 - movs r0, 0x18 - strh r0, [r1] - subs r1, 0x4 - movs r0, 0x28 - strh r0, [r1] - ldr r0, _0813BC24 @ =gUnknown_08407764 - movs r1, 0xC0 - lsls r1, 19 - bl LZ77UnCompVram - ldr r0, _0813BC28 @ =gUnknown_08406B74 - ldr r1, _0813BC2C @ =0x06008000 - bl LZ77UnCompVram - ldr r1, _0813BC30 @ =0x06008800 - add r0, sp, 0x8 - strh r6, [r0] - ldr r4, _0813BC34 @ =0x040000d4 - str r0, [r4] - str r1, [r4, 0x4] - ldr r5, _0813BC38 @ =0x81000400 - str r5, [r4, 0x8] - ldr r0, [r4, 0x8] - ldr r0, _0813BC3C @ =gUnknown_08406F28 - ldr r1, _0813BC40 @ =0x06009000 - bl LZ77UnCompVram - ldr r1, _0813BC44 @ =0x06009800 - add r0, sp, 0x8 - strh r6, [r0] - str r0, [r4] - str r1, [r4, 0x4] - str r5, [r4, 0x8] - ldr r0, [r4, 0x8] - ldr r0, _0813BC48 @ =gUnknown_0840725C - ldr r1, _0813BC4C @ =0x0600a000 - bl LZ77UnCompVram - ldr r1, _0813BC50 @ =0x0600a800 - add r0, sp, 0x8 - strh r6, [r0] - str r0, [r4] - str r1, [r4, 0x4] - str r5, [r4, 0x8] - ldr r0, [r4, 0x8] - ldr r0, _0813BC54 @ =gUnknown_0840754C - ldr r1, _0813BC58 @ =0x0600b000 - bl LZ77UnCompVram - ldr r1, _0813BC5C @ =0x0600b800 - add r0, sp, 0x8 - strh r6, [r0] - str r0, [r4] - str r1, [r4, 0x4] - str r5, [r4, 0x8] - ldr r0, [r4, 0x8] - ldr r0, _0813BC60 @ =gUnknown_08406974 - movs r5, 0x80 - lsls r5, 2 - movs r1, 0 - adds r2, r5, 0 - bl LoadPalette - ldr r1, _0813BC64 @ =REG_BG3CNT - ldr r2, _0813BC68 @ =0x00009603 - adds r0, r2, 0 - strh r0, [r1] - subs r1, 0x2 - ldr r3, _0813BC6C @ =0x00009402 - adds r0, r3, 0 - strh r0, [r1] - subs r1, 0x2 - ldr r2, _0813BC70 @ =0x00009201 - adds r0, r2, 0 - strh r0, [r1] - subs r1, 0x2 - movs r3, 0x90 - lsls r3, 8 - adds r0, r3, 0 - strh r0, [r1] - ldr r0, _0813BC74 @ =gUnknown_0840B008 - bl LoadCompressedObjectPic - ldr r0, _0813BC78 @ =gUnknown_0840B018 - bl LoadCompressedObjectPic - ldr r0, _0813BC7C @ =gUnknown_0840B028 - bl LoadSpritePalettes - ldr r4, _0813BC80 @ =gPlttBufferUnfaded + 0x200 - movs r0, 0xF0 - lsls r0, 1 - adds r1, r4, r0 - adds r0, r4, 0 - movs r2, 0x10 - bl CpuSet - movs r2, 0xE1 - lsls r2, 1 - adds r1, r4, r2 - adds r0, r4, 0 - movs r2, 0xF - bl CpuSet - movs r3, 0xD2 - lsls r3, 1 - adds r1, r4, r3 - adds r0, r4, 0 - movs r2, 0xE - bl CpuSet - movs r0, 0xC3 - lsls r0, 1 - adds r1, r4, r0 - adds r0, r4, 0 - movs r2, 0xD - bl CpuSet - movs r2, 0xB4 - lsls r2, 1 - adds r1, r4, r2 - adds r0, r4, 0 - movs r2, 0xC - bl CpuSet - movs r3, 0xA5 - lsls r3, 1 - adds r1, r4, r3 - adds r0, r4, 0 - movs r2, 0xB - bl CpuSet - movs r0, 0x96 - lsls r0, 1 - adds r1, r4, r0 - adds r0, r4, 0 - movs r2, 0xA - bl CpuSet - movs r1, 0xE - negs r1, r1 - movs r0, 0x78 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - movs r0, 0xEC - adds r2, r5, 0 - movs r3, 0x1 - bl sub_813D584 - ldr r2, _0813BC84 @ =gTasks - mov r3, r8 - lsls r1, r3, 2 - add r1, r8 - lsls r1, 3 - adds r1, r2 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0x8] - ldr r0, _0813BC88 @ =task_intro_2 - str r0, [r1] - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0813BC18: .4byte gUnknown_02039318 -_0813BC1C: .4byte REG_BG3VOFS -_0813BC20: .4byte REG_BG2VOFS -_0813BC24: .4byte gUnknown_08407764 -_0813BC28: .4byte gUnknown_08406B74 -_0813BC2C: .4byte 0x06008000 -_0813BC30: .4byte 0x06008800 -_0813BC34: .4byte 0x040000d4 -_0813BC38: .4byte 0x81000400 -_0813BC3C: .4byte gUnknown_08406F28 -_0813BC40: .4byte 0x06009000 -_0813BC44: .4byte 0x06009800 -_0813BC48: .4byte gUnknown_0840725C -_0813BC4C: .4byte 0x0600a000 -_0813BC50: .4byte 0x0600a800 -_0813BC54: .4byte gUnknown_0840754C -_0813BC58: .4byte 0x0600b000 -_0813BC5C: .4byte 0x0600b800 -_0813BC60: .4byte gUnknown_08406974 -_0813BC64: .4byte REG_BG3CNT -_0813BC68: .4byte 0x00009603 -_0813BC6C: .4byte 0x00009402 -_0813BC70: .4byte 0x00009201 -_0813BC74: .4byte gUnknown_0840B008 -_0813BC78: .4byte gUnknown_0840B018 -_0813BC7C: .4byte gUnknown_0840B028 -_0813BC80: .4byte gPlttBufferUnfaded + 0x200 -_0813BC84: .4byte gTasks -_0813BC88: .4byte task_intro_2 - thumb_func_end task_intro_1 - - thumb_func_start task_intro_2 -task_intro_2: @ 813BC8C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - negs r0, r0 - movs r5, 0 - str r5, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r0, _0813BCE0 @ =sub_813B784 - bl SetVBlankCallback - movs r1, 0x80 - lsls r1, 19 - movs r2, 0xFA - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - ldr r1, _0813BCE4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0813BCE8 @ =sub_813BCF0 - str r1, [r0] - ldr r0, _0813BCEC @ =gUnknown_03005ED0 - str r5, [r0] - movs r0, 0xCF - lsls r0, 1 - bl m4aSongNumStart - bl ResetSerial - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0813BCE0: .4byte sub_813B784 -_0813BCE4: .4byte gTasks -_0813BCE8: .4byte sub_813BCF0 -_0813BCEC: .4byte gUnknown_03005ED0 - thumb_func_end task_intro_2 - - thumb_func_start sub_813BCF0 -sub_813BCF0: @ 813BCF0 - push {r4-r6,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r3, r0, 24 - adds r5, r3, 0 - ldr r4, _0813BDD4 @ =gUnknown_03005ED0 - ldr r0, [r4] - cmp r0, 0x4C - bne _0813BD1E - ldr r2, _0813BDD8 @ =gSprites - ldr r1, _0813BDDC @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r0, r1 - movs r6, 0x8 - ldrsh r1, [r0, r6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x1 - strh r1, [r0, 0x2E] -_0813BD1E: - ldr r0, [r4] - cmp r0, 0xFB - bne _0813BD40 - ldr r2, _0813BDD8 @ =gSprites - ldr r1, _0813BDDC @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r0, r1 - movs r3, 0x8 - ldrsh r1, [r0, r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x2 - strh r1, [r0, 0x2E] -_0813BD40: - ldr r1, [r4] - movs r0, 0xB8 - lsls r0, 1 - cmp r1, r0 - bne _0813BD60 - movs r2, 0x80 - lsls r2, 3 - movs r0, 0x70 - str r0, [sp] - movs r0, 0x1 - str r0, [sp, 0x4] - movs r0, 0x30 - movs r1, 0 - movs r3, 0x5 - bl sub_813D584 -_0813BD60: - ldr r1, [r4] - movs r0, 0xC0 - lsls r0, 1 - cmp r1, r0 - bne _0813BD80 - movs r2, 0x80 - lsls r2, 3 - movs r0, 0x80 - str r0, [sp] - movs r0, 0x1 - str r0, [sp, 0x4] - movs r0, 0xC8 - movs r1, 0x3C - movs r3, 0x9 - bl sub_813D584 -_0813BD80: - ldr r1, [r4] - movs r0, 0x8C - lsls r0, 2 - cmp r1, r0 - bne _0813BDA0 - ldr r0, _0813BDE0 @ =sub_813CCE8 - movs r1, 0 - bl CreateTask - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - movs r0, 0x78 - movs r1, 0x50 - bl sub_813D954 -_0813BDA0: - ldr r1, [r4] - ldr r0, _0813BDE4 @ =0x000002e3 - cmp r1, r0 - bls _0813BDCA - ldr r1, _0813BDDC @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r2, 0 - movs r1, 0x50 - strh r1, [r0, 0xA] - strh r2, [r0, 0xC] - movs r1, 0x18 - strh r1, [r0, 0xE] - strh r2, [r0, 0x10] - movs r1, 0x28 - strh r1, [r0, 0x12] - strh r2, [r0, 0x14] - ldr r1, _0813BDE8 @ =task_intro_4 - str r1, [r0] -_0813BDCA: - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0813BDD4: .4byte gUnknown_03005ED0 -_0813BDD8: .4byte gSprites -_0813BDDC: .4byte gTasks -_0813BDE0: .4byte sub_813CCE8 -_0813BDE4: .4byte 0x000002e3 -_0813BDE8: .4byte task_intro_4 - thumb_func_end sub_813BCF0 - - thumb_func_start task_intro_4 -task_intro_4: @ 813BDEC - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r2, r0, 24 - adds r4, r2, 0 - ldr r0, _0813BE80 @ =gUnknown_03005ED0 - ldr r3, [r0] - ldr r0, _0813BE84 @ =0x00000387 - cmp r3, r0 - bhi _0813BEAC - ldr r0, _0813BE88 @ =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - movs r2, 0xA - ldrsh r0, [r1, r2] - lsls r0, 16 - ldrh r2, [r1, 0xC] - adds r0, r2 - ldr r2, _0813BE8C @ =0xffff4000 - adds r0, r2 - asrs r2, r0, 16 - strh r2, [r1, 0xA] - strh r0, [r1, 0xC] - ldr r0, _0813BE90 @ =REG_BG2VOFS - strh r2, [r0] - movs r2, 0xE - ldrsh r0, [r1, r2] - lsls r0, 16 - ldrh r2, [r1, 0x10] - adds r0, r2 - ldr r2, _0813BE94 @ =0xffff0000 - adds r0, r2 - asrs r2, r0, 16 - strh r2, [r1, 0xE] - strh r0, [r1, 0x10] - ldr r0, _0813BE98 @ =REG_BG1VOFS - strh r2, [r0] - movs r2, 0x12 - ldrsh r0, [r1, r2] - lsls r0, 16 - ldrh r2, [r1, 0x14] - adds r0, r2 - ldr r2, _0813BE9C @ =0xfffe8000 - adds r0, r2 - asrs r2, r0, 16 - strh r2, [r1, 0x12] - strh r0, [r1, 0x14] - ldr r0, _0813BEA0 @ =REG_BG0VOFS - strh r2, [r0] - movs r0, 0xDC - lsls r0, 2 - cmp r3, r0 - bne _0813BED2 - ldr r0, _0813BEA4 @ =gSpriteTemplate_840AFF0 - movs r1, 0xC8 - movs r2, 0xA0 - movs r3, 0xA - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0813BEA8 @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - adds r1, 0x3E - ldrb r0, [r1] - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1] - b _0813BED2 - .align 2, 0 -_0813BE80: .4byte gUnknown_03005ED0 -_0813BE84: .4byte 0x00000387 -_0813BE88: .4byte gTasks -_0813BE8C: .4byte 0xffff4000 -_0813BE90: .4byte REG_BG2VOFS -_0813BE94: .4byte 0xffff0000 -_0813BE98: .4byte REG_BG1VOFS -_0813BE9C: .4byte 0xfffe8000 -_0813BEA0: .4byte REG_BG0VOFS -_0813BEA4: .4byte gSpriteTemplate_840AFF0 -_0813BEA8: .4byte gSprites -_0813BEAC: - ldr r0, _0813BEDC @ =0x000003ef - cmp r3, r0 - bls _0813BED2 - movs r0, 0x1 - negs r0, r0 - ldr r1, _0813BEE0 @ =0x0000ffff - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _0813BEE4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0813BEE8 @ =sub_813BEEC - str r1, [r0] -_0813BED2: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813BEDC: .4byte 0x000003ef -_0813BEE0: .4byte 0x0000ffff -_0813BEE4: .4byte gTasks -_0813BEE8: .4byte sub_813BEEC - thumb_func_end task_intro_4 - - thumb_func_start sub_813BEEC -sub_813BEEC: @ 813BEEC - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _0813BF10 @ =gUnknown_03005ED0 - ldr r1, [r0] - ldr r0, _0813BF14 @ =0x00000402 - cmp r1, r0 - bls _0813BF0A - ldr r0, _0813BF18 @ =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldr r0, _0813BF1C @ =task_intro_6 - str r0, [r1] -_0813BF0A: - pop {r0} - bx r0 - .align 2, 0 -_0813BF10: .4byte gUnknown_03005ED0 -_0813BF14: .4byte 0x00000402 -_0813BF18: .4byte gTasks -_0813BF1C: .4byte task_intro_6 - thumb_func_end sub_813BEEC - - thumb_func_start task_intro_6 -task_intro_6: @ 813BF20 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl intro_reset_and_hide_bgs - movs r0, 0 - bl SetVBlankCallback - bl ResetSpriteData - bl FreeAllSpritePalettes - ldr r0, _0813BF60 @ =gUnknown_02039358 - movs r1, 0 - strh r1, [r0] - ldr r0, _0813BF64 @ =gUnknown_0203935A - strh r1, [r0] - .ifdef SAPPHIRE - movs r0, 0 - .else - movs r0, 0x1 - .endif - bl load_intro_part2_graphics - ldr r1, _0813BF68 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0813BF6C @ =sub_813BF70 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813BF60: .4byte gUnknown_02039358 -_0813BF64: .4byte gUnknown_0203935A -_0813BF68: .4byte gTasks -_0813BF6C: .4byte sub_813BF70 - thumb_func_end task_intro_6 - - thumb_func_start sub_813BF70 -sub_813BF70: @ 813BF70 - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _0813BF88 @ =gUnknown_02039318 - ldrh r0, [r0] - cmp r0, 0 - bne _0813BF90 - ldr r0, _0813BF8C @ =gIntro2BrendanSpriteSheet - bl LoadCompressedObjectPic - b _0813BF96 - .align 2, 0 -_0813BF88: .4byte gUnknown_02039318 -_0813BF8C: .4byte gIntro2BrendanSpriteSheet -_0813BF90: - ldr r0, _0813BFBC @ =gIntro2MaySpriteSheet - bl LoadCompressedObjectPic -_0813BF96: - ldr r0, _0813BFC0 @ =gIntro2BicycleSpriteSheet - bl LoadCompressedObjectPic - ldr r0, _0813BFC4 @ =gIntro2LatiasSpriteSheet, =gIntro2LatiosSpriteSheet - bl LoadCompressedObjectPic - ldr r0, _0813BFC8 @ =gIntro2SpritePalettes - bl LoadSpritePalettes - ldr r0, _0813BFCC @ =gUnknown_02039318 - ldrh r0, [r0] - cmp r0, 0 - bne _0813BFD0 - movs r0, 0x88 - lsls r0, 1 - movs r1, 0x64 - bl sub_8149310 - b _0813BFDA - .align 2, 0 -_0813BFBC: .4byte gIntro2MaySpriteSheet -_0813BFC0: .4byte gIntro2BicycleSpriteSheet - .ifdef SAPPHIRE -_0813BFC4: .4byte gIntro2LatiasSpriteSheet - .else -_0813BFC4: .4byte gIntro2LatiosSpriteSheet - .endif -_0813BFC8: .4byte gIntro2SpritePalettes -_0813BFCC: .4byte gUnknown_02039318 -_0813BFD0: - movs r0, 0x88 - lsls r0, 1 - movs r1, 0x64 - bl sub_8149368 -_0813BFDA: - lsls r0, 24 - lsrs r6, r0, 24 - ldr r2, _0813C060 @ =gSprites - lsls r0, r6, 4 - adds r0, r6 - lsls r0, 2 - adds r5, r2, 0 - adds r5, 0x1C - adds r3, r0, r5 - ldr r1, _0813C064 @ =sub_813D788 - str r1, [r3] - adds r2, 0x8 - adds r0, r2 - ldr r1, _0813C068 @ =gUnknown_0840AE80 - str r1, [r0] - ldr r0, _0813C06C @ =gTasks - lsls r4, r7, 2 - adds r4, r7 - lsls r4, 3 - adds r4, r0 - strh r6, [r4, 0xA] - movs r0, 0x40 - negs r0, r0 - movs r1, 0x3C - .ifdef SAPPHIRE - bl sapphire_sub_81494A0 - .else - bl sub_8149424 - .endif - lsls r0, 24 - lsrs r6, r0, 24 - lsls r0, r6, 4 - adds r0, r6 - lsls r0, 2 - adds r0, r5 - ldr r1, _0813C070 @ =sub_813D880 - str r1, [r0] - strh r6, [r4, 0xC] - movs r0, 0x1 - negs r0, r0 - ldr r1, _0813C074 @ =0x0000ffff - str r1, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r0, _0813C078 @ =sub_813B784 - bl SetVBlankCallback - movs r1, 0x80 - lsls r1, 7 - .ifdef SAPPHIRE - movs r0, 0 - movs r2, 0x40 - .else - movs r2, 0x80 - lsls r2, 3 - movs r0, 0x1 - .endif - movs r3, 0x10 - bl sub_8148EC0 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x8] - .ifdef SAPPHIRE - movs r0, 0 - .else - movs r0, 0x1 - .endif - bl sub_8148C78 - ldr r0, _0813C07C @ =sub_813C080 - str r0, [r4] - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0813C060: .4byte gSprites -_0813C064: .4byte sub_813D788 -_0813C068: .4byte gUnknown_0840AE80 -_0813C06C: .4byte gTasks -_0813C070: .4byte sub_813D880 -_0813C074: .4byte 0x0000ffff -_0813C078: .4byte sub_813B784 -_0813C07C: .4byte sub_813C080 - thumb_func_end sub_813BF70 - - thumb_func_start sub_813C080 -sub_813C080: @ 813C080 - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - adds r6, r4, 0 - ldr r5, _0813C1BC @ =gUnknown_03005ED0 - ldr r1, [r5] - ldr r0, _0813C1C0 @ =0x0000071f - cmp r1, r0 - bls _0813C0B4 - movs r0, 0x1 - negs r0, r0 - ldr r1, _0813C1C4 @ =0x0000ffff - str r1, [sp] - movs r1, 0x10 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _0813C1C8 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0813C1CC @ =sub_813C1F4 - str r1, [r0] -_0813C0B4: - ldr r1, [r5] - ldr r0, _0813C1D0 @ =0x00000455 - ldr r3, _0813C1C8 @ =gTasks - cmp r1, r0 - bne _0813C0D8 - ldr r2, _0813C1D4 @ =gSprites - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r3 - movs r7, 0xA - ldrsh r1, [r0, r7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x1 - strh r1, [r0, 0x2E] -_0813C0D8: - ldr r1, [r5] - ldr r0, _0813C1D8 @ =0x000004be - cmp r1, r0 - bne _0813C0FA - ldr r2, _0813C1D4 @ =gSprites - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r3 - movs r7, 0xA - ldrsh r1, [r0, r7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0 - strh r1, [r0, 0x2E] -_0813C0FA: - ldr r1, [r5] - ldr r0, _0813C1DC @ =0x00000572 - cmp r1, r0 - bne _0813C11C - ldr r2, _0813C1D4 @ =gSprites - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r3 - movs r7, 0xC - ldrsh r1, [r0, r7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x1 - strh r1, [r0, 0x2E] -_0813C11C: - ldr r1, [r5] - ldr r0, _0813C1E0 @ =0x00000576 - cmp r1, r0 - bne _0813C13E - ldr r2, _0813C1D4 @ =gSprites - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r3 - movs r7, 0xA - ldrsh r1, [r0, r7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x2 - strh r1, [r0, 0x2E] -_0813C13E: - ldr r1, [r5] - ldr r0, _0813C1E4 @ =0x00000632 - cmp r1, r0 - bne _0813C160 - ldr r2, _0813C1D4 @ =gSprites - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r3 - movs r7, 0xA - ldrsh r1, [r0, r7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x3 - strh r1, [r0, 0x2E] -_0813C160: - ldr r1, [r5] - ldr r0, _0813C1E8 @ =0x000006bf - cmp r1, r0 - bne _0813C182 - ldr r2, _0813C1D4 @ =gSprites - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r3 - movs r4, 0xA - ldrsh r1, [r0, r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x4 - strh r1, [r0, 0x2E] -_0813C182: - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r4, r0, r3 - ldrh r0, [r4, 0xE] - lsls r0, 16 - asrs r0, 18 - movs r1, 0x7F - ands r0, r1 - movs r1, 0x30 - bl Sin - ldr r1, _0813C1EC @ =gUnknown_0203935A - strh r0, [r1] - ldrh r2, [r4, 0xE] - movs r7, 0xE - ldrsh r1, [r4, r7] - ldr r0, _0813C1F0 @ =0x000001ff - cmp r1, r0 - bgt _0813C1AE - adds r0, r2, 0x1 - strh r0, [r4, 0xE] -_0813C1AE: - .ifdef SAPPHIRE - movs r0, 0 - .else - movs r0, 0x1 - .endif - bl sub_8149020 - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0813C1BC: .4byte gUnknown_03005ED0 -_0813C1C0: .4byte 0x0000071f -_0813C1C4: .4byte 0x0000ffff -_0813C1C8: .4byte gTasks -_0813C1CC: .4byte sub_813C1F4 -_0813C1D0: .4byte 0x00000455 -_0813C1D4: .4byte gSprites -_0813C1D8: .4byte 0x000004be -_0813C1DC: .4byte 0x00000572 -_0813C1E0: .4byte 0x00000576 -_0813C1E4: .4byte 0x00000632 -_0813C1E8: .4byte 0x000006bf -_0813C1EC: .4byte gUnknown_0203935A -_0813C1F0: .4byte 0x000001ff - thumb_func_end sub_813C080 - - thumb_func_start sub_813C1F4 -sub_813C1F4: @ 813C1F4 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _0813C220 @ =gUnknown_03005ED0 - ldr r1, [r0] - ldr r0, _0813C224 @ =0x00000814 - cmp r1, r0 - bls _0813C218 - ldr r0, _0813C228 @ =gTasks - lsls r4, r2, 2 - adds r4, r2 - lsls r4, 3 - adds r4, r0 - ldrb r0, [r4, 0x8] - bl DestroyTask - ldr r0, _0813C22C @ =task_intro_10 - str r0, [r4] -_0813C218: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813C220: .4byte gUnknown_03005ED0 -_0813C224: .4byte 0x00000814 -_0813C228: .4byte gTasks -_0813C22C: .4byte task_intro_10 - thumb_func_end sub_813C1F4 - - thumb_func_start task_intro_10 -task_intro_10: @ 813C230 - push {r4,r5,lr} - sub sp, 0x4 - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - bl intro_reset_and_hide_bgs - ldr r0, _0813C2C0 @ =gUnknown_08409C04 - movs r1, 0xC0 - lsls r1, 19 - bl LZ77UnCompVram - ldr r0, _0813C2C4 @ =gUnknown_08409AD4 - ldr r1, _0813C2C8 @ =0x06004000 - bl LZ77UnCompVram - ldr r0, _0813C2CC @ =gUnknown_084098D4 - movs r2, 0x80 - lsls r2, 2 - movs r1, 0 - bl LoadPalette - ldr r0, _0813C2D0 @ =gTasks - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - adds r4, r0 - movs r5, 0 - strh r5, [r4, 0x8] - strh r5, [r4, 0xA] - strh r5, [r4, 0xC] - strh r5, [r4, 0xE] - movs r0, 0x78 - movs r1, 0x50 - movs r2, 0 - movs r3, 0 - bl sub_813CE30 - bl ResetSpriteData - bl FreeAllSpritePalettes - movs r0, 0x1 - negs r0, r0 - ldr r1, _0813C2D4 @ =0x0000ffff - str r1, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r1, _0813C2D8 @ =REG_BG2CNT - ldr r2, _0813C2DC @ =0x00004883 - adds r0, r2, 0 - strh r0, [r1] - subs r1, 0xC - ldr r2, _0813C2E0 @ =0x00001441 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _0813C2E4 @ =task_intro_11 - str r0, [r4] - ldr r0, _0813C2E8 @ =gUnknown_03005ED0 - str r5, [r0] - movs r0, 0xDD - lsls r0, 1 - bl m4aSongNumStart - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0813C2C0: .4byte gUnknown_08409C04 -_0813C2C4: .4byte gUnknown_08409AD4 -_0813C2C8: .4byte 0x06004000 -_0813C2CC: .4byte gUnknown_084098D4 -_0813C2D0: .4byte gTasks -_0813C2D4: .4byte 0x0000ffff -_0813C2D8: .4byte REG_BG2CNT -_0813C2DC: .4byte 0x00004883 -_0813C2E0: .4byte 0x00001441 -_0813C2E4: .4byte task_intro_11 -_0813C2E8: .4byte gUnknown_03005ED0 - thumb_func_end task_intro_10 - - thumb_func_start task_intro_11 -task_intro_11: @ 813C2EC - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r2, _0813C324 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r3, r0, r2 - movs r1, 0x80 - lsls r1, 3 - adds r0, r1, 0 - ldrh r1, [r3, 0x8] - adds r0, r1 - strh r0, [r3, 0x8] - ldrh r4, [r3, 0xA] - movs r0, 0xA - ldrsh r1, [r3, r0] - ldr r0, _0813C328 @ =0x000006bf - cmp r1, r0 - bgt _0813C32C - ldrh r0, [r3, 0xC] - adds r1, r4, r0 - strh r1, [r3, 0xA] - adds r0, 0x1 - strh r0, [r3, 0xC] - b _0813C330 - .align 2, 0 -_0813C324: .4byte gTasks -_0813C328: .4byte 0x000006bf -_0813C32C: - ldr r0, _0813C378 @ =sub_813C384 - str r0, [r3] -_0813C330: - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - adds r4, r2 - movs r0, 0xA - ldrsh r1, [r4, r0] - movs r0, 0x80 - lsls r0, 9 - bl __divsi3 - adds r2, r0, 0 - lsls r2, 16 - lsrs r2, 16 - ldrh r3, [r4, 0x8] - movs r0, 0x78 - movs r1, 0x50 - bl sub_813CE30 - ldr r0, _0813C37C @ =gUnknown_03005ED0 - ldr r0, [r0] - cmp r0, 0x2C - bne _0813C36E - movs r0, 0x1 - negs r0, r0 - ldr r1, _0813C380 @ =0x0000ffff - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade -_0813C36E: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0813C378: .4byte sub_813C384 -_0813C37C: .4byte gUnknown_03005ED0 -_0813C380: .4byte 0x0000ffff - thumb_func_end task_intro_11 - - thumb_func_start sub_813C384 -sub_813C384: @ 813C384 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _0813C3A4 @ =gUnknown_03005ED0 - ldr r0, [r0] - cmp r0, 0x3B - bls _0813C3A0 - ldr r0, _0813C3A8 @ =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldr r0, _0813C3AC @ =sub_813C3B0 - str r0, [r1] -_0813C3A0: - pop {r0} - bx r0 - .align 2, 0 -_0813C3A4: .4byte gUnknown_03005ED0 -_0813C3A8: .4byte gTasks -_0813C3AC: .4byte sub_813C3B0 - thumb_func_end sub_813C384 - - thumb_func_start sub_813C3B0 -sub_813C3B0: @ 813C3B0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - bl intro_reset_and_hide_bgs - movs r1, 0 - ldr r2, _0813C4E4 @ =0x02000000 - movs r7, 0 - adds r6, r2, 0 - adds r6, 0x20 - adds r5, r2, 0 - adds r5, 0x40 - mov r12, r2 - movs r4, 0x11 - movs r3, 0x22 -_0813C3D4: - adds r0, r1, r2 - strb r7, [r0] - adds r0, r1, r6 - strb r4, [r0] - adds r0, r1, r5 - strb r3, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x1F - bls _0813C3D4 - movs r1, 0xC0 - lsls r1, 19 - ldr r0, _0813C4E8 @ =0x040000d4 - mov r2, r12 - str r2, [r0] - str r1, [r0, 0x4] - ldr r1, _0813C4EC @ =0x80000030 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - movs r1, 0 - ldr r5, _0813C4F0 @ =gPlttBufferUnfaded - ldr r6, _0813C4F4 @ =gPlttBufferFaded - mov r0, r8 - lsls r7, r0, 2 - ldr r4, _0813C4F8 @ =0x06003000 - ldr r2, _0813C4FC @ =0x0000f001 - adds r3, r2, 0 - ldr r2, _0813C500 @ =0x0000027f -_0813C40E: - lsls r0, r1, 1 - adds r0, r4 - strh r3, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, r2 - bls _0813C40E - movs r1, 0 - ldr r3, _0813C504 @ =0x06003800 - ldr r0, _0813C508 @ =0x0000f002 - adds r2, r0, 0 -_0813C426: - lsls r0, r1, 1 - adds r0, r3 - strh r2, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x7F - bls _0813C426 - movs r1, 0 - ldr r4, _0813C50C @ =0x06003900 - movs r2, 0xF0 - lsls r2, 8 - adds r3, r2, 0 - ldr r2, _0813C510 @ =0x0000017f -_0813C442: - lsls r0, r1, 1 - adds r0, r4 - strh r3, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, r2 - bls _0813C442 - movs r1, 0 - ldr r3, _0813C514 @ =0x06003c00 - ldr r0, _0813C508 @ =0x0000f002 - adds r2, r0, 0 -_0813C45A: - lsls r0, r1, 1 - adds r0, r3 - strh r2, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x7F - bls _0813C45A - movs r0, 0xF0 - lsls r0, 1 - adds r2, r5, r0 - movs r4, 0 - ldr r1, _0813C518 @ =0x00007fff - strh r1, [r2] - adds r0, r6, r0 - strh r1, [r0] - movs r0, 0x1 - bl sub_813D084 - movs r0, 0xF2 - lsls r0, 1 - adds r1, r5, r0 - strh r4, [r1] - adds r0, r6, r0 - strh r4, [r0] - ldr r0, _0813C51C @ =gUnknown_0840A778 - ldr r1, _0813C520 @ =0x06004000 - bl LZ77UnCompVram - ldr r0, _0813C524 @ =gUnknown_0840A7E4 - ldr r1, _0813C528 @ =0x06007000 - bl LZ77UnCompVram - ldr r0, _0813C52C @ =gUnknown_0840A758 - movs r1, 0 - movs r2, 0x20 - bl LoadPalette - bl ResetSpriteData - bl FreeAllSpritePalettes - ldr r1, _0813C530 @ =gReservedSpritePaletteCount - movs r0, 0x8 - strb r0, [r1] - ldr r0, _0813C534 @ =gUnknown_0840B20C - bl LoadCompressedObjectPic - ldr r0, _0813C538 @ =gUnknown_0840B21C - bl LoadCompressedObjectPic - ldr r0, _0813C53C @ =gUnknown_0840B22C - bl LoadCompressedObjectPalette - ldr r0, _0813C540 @ =gUnknown_0840B23C - bl LoadSpritePalettes - ldr r1, _0813C544 @ =gTasks - mov r2, r8 - adds r0, r7, r2 - lsls r0, 3 - adds r0, r1 - ldr r1, _0813C548 @ =sub_813C54C - str r1, [r0] - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0813C4E4: .4byte 0x02000000 -_0813C4E8: .4byte 0x040000d4 -_0813C4EC: .4byte 0x80000030 -_0813C4F0: .4byte gPlttBufferUnfaded -_0813C4F4: .4byte gPlttBufferFaded -_0813C4F8: .4byte 0x06003000 -_0813C4FC: .4byte 0x0000f001 -_0813C500: .4byte 0x0000027f -_0813C504: .4byte 0x06003800 -_0813C508: .4byte 0x0000f002 -_0813C50C: .4byte 0x06003900 -_0813C510: .4byte 0x0000017f -_0813C514: .4byte 0x06003c00 -_0813C518: .4byte 0x00007fff -_0813C51C: .4byte gUnknown_0840A778 -_0813C520: .4byte 0x06004000 -_0813C524: .4byte gUnknown_0840A7E4 -_0813C528: .4byte 0x06007000 -_0813C52C: .4byte gUnknown_0840A758 -_0813C530: .4byte gReservedSpritePaletteCount -_0813C534: .4byte gUnknown_0840B20C -_0813C538: .4byte gUnknown_0840B21C -_0813C53C: .4byte gUnknown_0840B22C -_0813C540: .4byte gUnknown_0840B23C -_0813C544: .4byte gTasks -_0813C548: .4byte sub_813C54C - thumb_func_end sub_813C3B0 - - thumb_func_start sub_813C54C -sub_813C54C: @ 813C54C - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, _0813C5BC @ =REG_WIN0H - movs r0, 0xF0 - strh r0, [r1] - adds r1, 0x4 - movs r0, 0xA0 - strh r0, [r1] - adds r1, 0x4 - movs r0, 0x1C - strh r0, [r1] - adds r1, 0x2 - movs r0, 0x1D - strh r0, [r1] - subs r1, 0x3C - ldr r2, _0813C5C0 @ =0x00000603 - adds r0, r2, 0 - strh r0, [r1] - subs r1, 0x6 - adds r2, 0xFD - adds r0, r2, 0 - strh r0, [r1] - subs r1, 0x8 - movs r2, 0xE5 - lsls r2, 6 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _0813C5C4 @ =sub_813CAF4 - movs r1, 0 - bl CreateTask - ldr r5, _0813C5C8 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r5 - lsls r0, 24 - lsrs r0, 24 - movs r3, 0 - strh r0, [r1, 0x26] - movs r0, 0x26 - ldrsh r2, [r1, r0] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r5 - strh r3, [r0, 0x8] - strh r3, [r1, 0x8] - ldr r0, _0813C5CC @ =sub_813C5D0 - str r0, [r1] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0813C5BC: .4byte REG_WIN0H -_0813C5C0: .4byte 0x00000603 -_0813C5C4: .4byte sub_813CAF4 -_0813C5C8: .4byte gTasks -_0813C5CC: .4byte sub_813C5D0 - thumb_func_end sub_813C54C - - thumb_func_start sub_813C5D0 -sub_813C5D0: @ 813C5D0 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0813C600 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r3, r1, r2 - ldrh r1, [r3, 0x8] - movs r2, 0x8 - ldrsh r0, [r3, r2] - cmp r0, 0x20 - beq _0813C608 - adds r0, r1, 0x4 - strh r0, [r3, 0x8] - ldr r2, _0813C604 @ =REG_WIN0V - movs r4, 0x8 - ldrsh r0, [r3, r4] - lsls r0, 8 - subs r1, 0x9C - subs r0, r1 - strh r0, [r2] - b _0813C616 - .align 2, 0 -_0813C600: .4byte gTasks -_0813C604: .4byte REG_WIN0V -_0813C608: - ldr r0, _0813C61C @ =REG_WIN0V - movs r2, 0x82 - lsls r2, 6 - adds r1, r2, 0 - strh r1, [r0] - ldr r0, _0813C620 @ =sub_813C624 - str r0, [r3] -_0813C616: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813C61C: .4byte REG_WIN0V -_0813C620: .4byte sub_813C624 - thumb_func_end sub_813C5D0 - - thumb_func_start sub_813C624 -sub_813C624: @ 813C624 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0813C638 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r0, _0813C63C @ =sub_813C640 - str r0, [r1] - bx lr - .align 2, 0 -_0813C638: .4byte gTasks -_0813C63C: .4byte sub_813C640 - thumb_func_end sub_813C624 - - thumb_func_start sub_813C640 -sub_813C640: @ 813C640 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0813C65C @ =gUnknown_0203931A - movs r1, 0 - strh r1, [r2] - ldr r2, _0813C660 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r0, _0813C664 @ =sub_813C668 - str r0, [r1] - bx lr - .align 2, 0 -_0813C65C: .4byte gUnknown_0203931A -_0813C660: .4byte gTasks -_0813C664: .4byte sub_813C668 - thumb_func_end sub_813C640 - - thumb_func_start sub_813C668 -sub_813C668: @ 813C668 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _0813CA24 @ =gUnknown_03005ED0 - mov r8, r0 - ldr r0, [r0] - cmp r0, 0x50 - bne _0813C6AC - ldr r0, _0813CA28 @ =0x0000014b - movs r4, 0x1 - str r4, [sp] - movs r1, 0xF0 - movs r2, 0xA0 - movs r3, 0x5 - bl sub_813CE88 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r3, _0813CA2C @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r1, r3, 0 - adds r1, 0x1C - adds r1, r0, r1 - ldr r2, _0813CA30 @ =sub_813DB9C - str r2, [r1] - adds r0, r3 - movs r1, 0 - strh r4, [r0, 0x30] - strh r1, [r0, 0x32] -_0813C6AC: - mov r1, r8 - ldr r0, [r1] - cmp r0, 0x98 - bne _0813C6E2 - ldr r0, _0813CA34 @ =0x00000169 - movs r4, 0x1 - str r4, [sp] - movs r1, 0 - movs r2, 0xA0 - movs r3, 0x4 - bl sub_813CE88 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r3, _0813CA2C @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r1, r3, 0 - adds r1, 0x1C - adds r1, r0, r1 - ldr r2, _0813CA30 @ =sub_813DB9C - str r2, [r1] - adds r0, r3 - movs r1, 0x2 - strh r1, [r0, 0x30] - strh r4, [r0, 0x32] -_0813C6E2: - mov r3, r8 - ldr r0, [r3] - cmp r0, 0xDB - bne _0813C720 - movs r0, 0 - bl sub_813D084 - ldr r0, _0813CA38 @ =gUnknown_02039318 - ldrh r0, [r0] - movs r1, 0x88 - lsls r1, 1 - movs r2, 0x60 - movs r3, 0x6 - bl sub_813CFA8 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _0813CA2C @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r1, 0x1C - adds r0, r1 - ldr r1, _0813CA3C @ =sub_813DE70 - str r1, [r0] - ldr r1, _0813CA40 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - strh r2, [r0, 0xA] -_0813C720: - mov r0, r8 - ldr r1, [r0] - movs r0, 0x98 - lsls r0, 1 - cmp r1, r0 - bne _0813C758 - ldr r3, _0813CA40 @ =gTasks - lsls r1, r7, 2 - adds r1, r7 - lsls r1, 3 - adds r1, r3 - movs r0, 0x26 - ldrsh r2, [r1, r0] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r3 - movs r2, 0x4 - strh r2, [r0, 0x8] - ldr r2, _0813CA2C @ =gSprites - movs r3, 0xA - ldrsh r1, [r1, r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x2 - strh r1, [r0, 0x2E] -_0813C758: - mov r0, r8 - ldr r1, [r0] - movs r0, 0xC0 - lsls r0, 1 - cmp r1, r0 - bne _0813C790 - ldr r3, _0813CA40 @ =gTasks - lsls r1, r7, 2 - adds r1, r7 - lsls r1, 3 - adds r1, r3 - movs r0, 0x26 - ldrsh r2, [r1, r0] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r3 - movs r2, 0 - strh r2, [r0, 0x8] - ldr r2, _0813CA2C @ =gSprites - movs r3, 0xA - ldrsh r1, [r1, r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x4 - strh r1, [r0, 0x2E] -_0813C790: - mov r0, r8 - ldr r1, [r0] - movs r0, 0xC8 - lsls r0, 1 - cmp r1, r0 - bne _0813C7AE - movs r0, 0xFF - lsls r0, 16 - ldr r1, _0813CA44 @ =0x00007eff - str r1, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade -_0813C7AE: - mov r3, r8 - ldr r1, [r3] - movs r0, 0xD8 - lsls r0, 1 - cmp r1, r0 - bne _0813C7D6 - ldr r2, _0813CA2C @ =gSprites - ldr r1, _0813CA40 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - movs r3, 0xA - ldrsh r1, [r0, r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x5 - strh r1, [r0, 0x2E] -_0813C7D6: - mov r0, r8 - ldr r1, [r0] - movs r0, 0xE7 - lsls r0, 1 - cmp r1, r0 - bne _0813C80E - ldr r3, _0813CA2C @ =gSprites - ldr r4, _0813CA40 @ =gTasks - lsls r1, r7, 2 - adds r1, r7 - lsls r1, 3 - adds r1, r4 - movs r0, 0xA - ldrsh r2, [r1, r0] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r3 - movs r2, 0x6 - strh r2, [r0, 0x2E] - movs r3, 0x26 - ldrsh r1, [r1, r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r4 - movs r1, 0x2 - strh r1, [r0, 0x8] -_0813C80E: - mov r0, r8 - ldr r1, [r0] - ldr r0, _0813CA48 @ =0x000001cf - cmp r1, r0 - bne _0813C854 - movs r0, 0x1 - bl sub_813D084 - ldr r0, _0813CA28 @ =0x0000014b - movs r1, 0x1 - str r1, [sp] - movs r1, 0xD0 - movs r2, 0x8 - movs r3, 0x5 - bl sub_813CE88 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _0813CA2C @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r1, 0x1C - adds r0, r1 - ldr r1, _0813CA4C @ =sub_813E10C - str r1, [r0] - ldr r1, _0813CA40 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - strh r2, [r0, 0xC] - adds r0, r2, 0 - bl sub_813E7C0 -_0813C854: - mov r3, r8 - ldr r1, [r3] - ldr r0, _0813CA50 @ =0x0000021b - cmp r1, r0 - bne _0813C894 - subs r0, 0xB2 - movs r1, 0x1 - str r1, [sp] - movs r1, 0xF8 - movs r2, 0x10 - movs r3, 0x4 - bl sub_813CE88 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _0813CA2C @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r1, 0x1C - adds r0, r1 - ldr r1, _0813CA4C @ =sub_813E10C - str r1, [r0] - ldr r1, _0813CA40 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - strh r2, [r0, 0xE] - adds r0, r2, 0 - bl sub_813E930 -_0813C894: - mov r0, r8 - ldr r1, [r0] - ldr r0, _0813CA54 @ =0x0000026f - cmp r1, r0 - bne _0813C8D8 - ldr r4, _0813CA2C @ =gSprites - ldr r5, _0813CA40 @ =gTasks - lsls r1, r7, 2 - adds r1, r7 - lsls r1, 3 - adds r1, r5 - movs r3, 0xC - ldrsh r2, [r1, r3] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r4 - movs r3, 0x2 - strh r3, [r0, 0x2E] - movs r0, 0xE - ldrsh r2, [r1, r0] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r4 - strh r3, [r0, 0x2E] - movs r3, 0x26 - ldrsh r1, [r1, r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r5 - movs r1, 0x3 - strh r1, [r0, 0x8] -_0813C8D8: - mov r0, r8 - ldr r1, [r0] - movs r0, 0x9C - lsls r0, 2 - cmp r1, r0 - bne _0813C920 - movs r0, 0 - bl sub_813D084 - ldr r0, _0813CA58 @ =0x0000011b - movs r1, 0 - str r1, [sp] - movs r1, 0x20 - movs r2, 0x98 - movs r3, 0 - bl sub_813CE88 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _0813CA2C @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r1, 0x1C - adds r0, r1 - ldr r1, _0813CA5C @ =sub_813E210 - str r1, [r0] - ldr r1, _0813CA40 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - strh r2, [r0, 0x10] - adds r0, r2, 0 - bl sub_813EDBC -_0813C920: - mov r3, r8 - ldr r1, [r3] - movs r0, 0xAF - lsls r0, 2 - cmp r1, r0 - bne _0813C966 - movs r0, 0x8C - lsls r0, 1 - movs r1, 0x8 - negs r1, r1 - movs r2, 0 - str r2, [sp] - movs r2, 0x90 - movs r3, 0x1 - bl sub_813CE88 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _0813CA2C @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r1, 0x1C - adds r0, r1 - ldr r1, _0813CA5C @ =sub_813E210 - str r1, [r0] - ldr r1, _0813CA40 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - strh r2, [r0, 0x12] - adds r0, r2, 0 - bl sub_813EB4C -_0813C966: - mov r0, r8 - ldr r1, [r0] - movs r0, 0xC2 - lsls r0, 2 - cmp r1, r0 - bne _0813C9B2 - ldr r1, _0813CA60 @ =gUnknown_0203931A - movs r0, 0x1 - strh r0, [r1] - ldr r4, _0813CA2C @ =gSprites - ldr r6, _0813CA40 @ =gTasks - lsls r1, r7, 2 - adds r1, r7 - lsls r1, 3 - adds r1, r6 - movs r3, 0x10 - ldrsh r2, [r1, r3] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r4 - movs r5, 0 - movs r3, 0x2 - strh r3, [r0, 0x2E] - movs r0, 0x12 - ldrsh r2, [r1, r0] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r4 - strh r3, [r0, 0x2E] - movs r3, 0x26 - ldrsh r1, [r1, r3] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r6 - strh r5, [r0, 0x8] -_0813C9B2: - mov r0, r8 - ldr r1, [r0] - ldr r0, _0813CA64 @ =0x0000030d - cmp r1, r0 - bne _0813CA76 - movs r0, 0x2 - bl sub_813D084 - ldr r4, _0813CA2C @ =gSprites - ldr r0, _0813CA40 @ =gTasks - lsls r2, r7, 2 - adds r2, r7 - lsls r2, 3 - adds r2, r0 - movs r3, 0xC - ldrsh r1, [r2, r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r3, 0x3 - strh r3, [r0, 0x2E] - movs r0, 0xE - ldrsh r1, [r2, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r3, [r0, 0x2E] - movs r0, 0x10 - ldrsh r1, [r2, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r3, [r0, 0x2E] - movs r0, 0x12 - ldrsh r1, [r2, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r3, [r0, 0x2E] - ldr r0, _0813CA68 @ =gSpriteTemplate_840B1F4 - movs r1, 0x78 - movs r2, 0x50 - movs r3, 0xF - bl CreateSprite - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r4 - b _0813CA6C - .align 2, 0 -_0813CA24: .4byte gUnknown_03005ED0 -_0813CA28: .4byte 0x0000014b -_0813CA2C: .4byte gSprites -_0813CA30: .4byte sub_813DB9C -_0813CA34: .4byte 0x00000169 -_0813CA38: .4byte gUnknown_02039318 -_0813CA3C: .4byte sub_813DE70 -_0813CA40: .4byte gTasks -_0813CA44: .4byte 0x00007eff -_0813CA48: .4byte 0x000001cf -_0813CA4C: .4byte sub_813E10C -_0813CA50: .4byte 0x0000021b -_0813CA54: .4byte 0x0000026f -_0813CA58: .4byte 0x0000011b -_0813CA5C: .4byte sub_813E210 -_0813CA60: .4byte gUnknown_0203931A -_0813CA64: .4byte 0x0000030d -_0813CA68: .4byte gSpriteTemplate_840B1F4 -_0813CA6C: - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_0813CA76: - mov r3, r8 - ldr r1, [r3] - movs r0, 0xC8 - lsls r0, 2 - cmp r1, r0 - bne _0813CA88 - movs r0, 0x67 - bl PlaySE -_0813CA88: - mov r0, r8 - ldr r1, [r0] - ldr r0, _0813CAC8 @ =0x00000352 - cmp r1, r0 - bne _0813CAA4 - movs r0, 0x1 - negs r0, r0 - ldr r1, _0813CACC @ =0x0000ffff - str r1, [sp] - movs r1, 0x4 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade -_0813CAA4: - mov r3, r8 - ldr r1, [r3] - ldr r0, _0813CAD0 @ =0x000003b2 - cmp r1, r0 - bne _0813CABC - ldr r0, _0813CAD4 @ =gTasks - lsls r1, r7, 2 - adds r1, r7 - lsls r1, 3 - adds r1, r0 - ldr r0, _0813CAD8 @ =sub_813CADC - str r0, [r1] -_0813CABC: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0813CAC8: .4byte 0x00000352 -_0813CACC: .4byte 0x0000ffff -_0813CAD0: .4byte 0x000003b2 -_0813CAD4: .4byte gTasks -_0813CAD8: .4byte sub_813CADC - thumb_func_end sub_813C668 - - thumb_func_start sub_813CADC -sub_813CADC: @ 813CADC - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - ldr r0, _0813CAF0 @ =CB2_813B7EC - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_0813CAF0: .4byte CB2_813B7EC - thumb_func_end sub_813CADC - thumb_func_start sub_813CAF4 sub_813CAF4: @ 813CAF4 push {r4-r6,lr} @@ -3659,7 +1672,7 @@ _0813D7C6: adds r0, r4, 0 movs r1, 0 bl StartSpriteAnimIfDifferent - ldr r0, _0813D7E0 @ =gUnknown_03005ED0 + ldr r0, _0813D7E0 @ =gIntroFrameCounter ldr r0, [r0] movs r1, 0x7 ands r0, r1 @@ -3669,7 +1682,7 @@ _0813D7C6: adds r0, 0x1 b _0813D82E .align 2, 0 -_0813D7E0: .4byte gUnknown_03005ED0 +_0813D7E0: .4byte gIntroFrameCounter _0813D7E4: adds r0, r4, 0 movs r1, 0x2 @@ -3679,7 +1692,7 @@ _0813D7E4: ldrsh r0, [r4, r1] cmp r0, 0x78 ble _0813D802 - ldr r0, _0813D808 @ =gUnknown_03005ED0 + ldr r0, _0813D808 @ =gIntroFrameCounter ldr r0, [r0] movs r1, 0x7 ands r0, r1 @@ -3689,7 +1702,7 @@ _0813D802: adds r0, r2, 0x1 b _0813D82E .align 2, 0 -_0813D808: .4byte gUnknown_03005ED0 +_0813D808: .4byte gIntroFrameCounter _0813D80C: adds r0, r4, 0 movs r1, 0x3 @@ -3710,7 +1723,7 @@ _0813D816: _0813D82E: strh r0, [r4, 0x20] _0813D830: - ldr r0, _0813D84C @ =gUnknown_03005ED0 + ldr r0, _0813D84C @ =gIntroFrameCounter ldr r0, [r0] movs r1, 0x7 ands r0, r1 @@ -3725,7 +1738,7 @@ _0813D83C: strh r0, [r4, 0x26] b _0813D87A .align 2, 0 -_0813D84C: .4byte gUnknown_03005ED0 +_0813D84C: .4byte gIntroFrameCounter _0813D850: bl Random movs r1, 0x3 @@ -18853,7 +16866,7 @@ _08144F5C: bl LoadSpritePalettes movs r0, 0x78 movs r1, 0x2E - bl sub_8149310 + bl intro_create_brendan_sprite lsls r0, 24 lsrs r2, r0, 24 ldr r0, _08144FD0 @ =gTasks @@ -18878,7 +16891,7 @@ _08144F5C: movs r0, 0x88 lsls r0, 1 movs r1, 0x2E - bl sub_8149368 + bl intro_create_may_sprite b _08145034 .align 2, 0 _08144FBC: .4byte gSaveBlock2 @@ -18901,7 +16914,7 @@ _08144FE0: bl LoadSpritePalettes movs r0, 0x78 movs r1, 0x2E - bl sub_8149368 + bl intro_create_may_sprite lsls r0, 24 lsrs r2, r0, 24 ldr r0, _0814506C @ =gTasks @@ -18926,7 +16939,7 @@ _08144FE0: movs r0, 0x88 lsls r0, 1 movs r1, 0x2E - bl sub_8149310 + bl intro_create_brendan_sprite _08145034: lsls r0, 24 lsrs r2, r0, 24 diff --git a/asm/rom_8148B8C.s b/asm/rom_8148B8C.s index 6ed24195f..5ed359627 100644 --- a/asm/rom_8148B8C.s +++ b/asm/rom_8148B8C.s @@ -902,8 +902,8 @@ sub_81492A0: @ 81492A0 _0814930C: .4byte gSprites thumb_func_end sub_81492A0 - thumb_func_start sub_8149310 -sub_8149310: @ 8149310 + thumb_func_start intro_create_brendan_sprite +intro_create_brendan_sprite: @ 8149310 push {r4-r6,lr} adds r5, r0, 0 adds r4, r1, 0 @@ -943,10 +943,10 @@ sub_8149310: @ 8149310 _0814935C: .4byte gSpriteTemplate_8416CDC _08149360: .4byte gSpriteTemplate_8416D2C _08149364: .4byte gSprites - thumb_func_end sub_8149310 + thumb_func_end intro_create_brendan_sprite - thumb_func_start sub_8149368 -sub_8149368: @ 8149368 + thumb_func_start intro_create_may_sprite +intro_create_may_sprite: @ 8149368 push {r4-r6,lr} adds r5, r0, 0 adds r4, r1, 0 @@ -986,7 +986,7 @@ sub_8149368: @ 8149368 _081493B4: .4byte gSpriteTemplate_8416CF4 _081493B8: .4byte gSpriteTemplate_8416D44 _081493BC: .4byte gSprites - thumb_func_end sub_8149368 + thumb_func_end intro_create_may_sprite thumb_func_start nullsub_83 nullsub_83: @ 81493C0 @@ -1045,8 +1045,8 @@ sub_81493C4: @ 81493C4 _08149420: .4byte gSprites thumb_func_end sub_81493C4 - thumb_func_start sub_8149424 -sub_8149424: @ 8149424 + thumb_func_start intro_create_latios_sprite +intro_create_latios_sprite: @ 8149424 push {r4-r6,lr} mov r6, r8 push {r6} @@ -1102,10 +1102,10 @@ _08149490: .4byte gSpriteTemplate_8416D7C _08149494: .4byte 0xffe00000 _08149498: .4byte gSprites _0814949C: .4byte sub_81493C4 - thumb_func_end sub_8149424 + thumb_func_end intro_create_latios_sprite - thumb_func_start sapphire_sub_81494A0 -sapphire_sub_81494A0: @ 81494A0 + thumb_func_start intro_create_latias_sprite +intro_create_latias_sprite: @ 81494A0 push {r4-r6,lr} mov r6, r8 push {r6} @@ -1161,7 +1161,7 @@ _0814950C: .4byte gSpriteTemplate_8416D94 _08149510: .4byte 0xffe00000 _08149514: .4byte gSprites _08149518: .4byte sub_81493C4 - thumb_func_end sapphire_sub_81494A0 + thumb_func_end intro_create_latias_sprite thumb_func_start nullsub_84 nullsub_84: @ 814951C diff --git a/include/sprite.h b/include/sprite.h index 2da099d59..4298593ca 100644 --- a/include/sprite.h +++ b/include/sprite.h @@ -134,7 +134,7 @@ struct Sprite union AnimCmd **anims; struct SpriteFrameImage *images; union AffineAnimCmd **affineAnims; - struct SpriteTemplate *template; + const struct SpriteTemplate *template; struct SubspriteTable *subspriteTables; void (*callback)(struct Sprite *); @@ -193,8 +193,8 @@ extern struct Sprite gSprites[]; void ResetSpriteData(void); void AnimateSprites(void); void BuildOamBuffer(void); -u8 CreateSprite(struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority); -u8 CreateSpriteAtEnd(struct SpriteTemplate *template, u16 x, u16 y, u8 subpriority); +u8 CreateSprite(const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority); +u8 CreateSpriteAtEnd(const struct SpriteTemplate *template, u16 x, u16 y, u8 subpriority); u8 CreateInvisibleSprite(void (*callback)(struct Sprite *)); u8 CreateSpriteAndAnimate(struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority); void DestroySprite(struct Sprite *sprite); @@ -236,8 +236,8 @@ u16 GetSpriteTileTagByTileStart(u16 start); void RequestSpriteSheetCopy(struct SpriteSheet *sheet); u16 LoadSpriteSheetDeferred(struct SpriteSheet *sheet); void FreeAllSpritePalettes(void); -u8 LoadSpritePalette(struct SpritePalette *palette); -void LoadSpritePalettes(struct SpritePalette *palettes); +u8 LoadSpritePalette(const struct SpritePalette *palette); +void LoadSpritePalettes(const struct SpritePalette *palettes); u8 AllocSpritePalette(u16 tag); u8 IndexOfSpritePaletteTag(u16 tag); u16 GetSpritePaletteTagByPaletteNum(u8 paletteNum); diff --git a/src/decompress.c b/src/decompress.c index adc6798b6..b38acc7b2 100644 --- a/src/decompress.c +++ b/src/decompress.c @@ -10,7 +10,7 @@ extern void *gUnknown_081FAF4C[]; extern void DrawSpindaSpots(u16, u32, void *, u8); -void sub_800D378(struct SpriteSheet *a, u32 b, u32 c, u32 d, void *e, s32 f, u32 g, u32 h); +void sub_800D378(const struct SpriteSheet *a, u32 b, u32 c, u32 d, void *e, s32 f, u32 g, u32 h); void sub_800D238(const void *src, void *dest) { @@ -22,7 +22,7 @@ void LZDecompressVram(const void *src, void *dest) LZ77UnCompVram(src, dest); } -void LoadCompressedObjectPic(struct SpriteSheet *a) +void LoadCompressedObjectPic(const struct SpriteSheet *a) { struct SpriteSheet spriteSheet; @@ -33,7 +33,7 @@ void LoadCompressedObjectPic(struct SpriteSheet *a) LoadSpriteSheet(&spriteSheet); } -void LoadCompressedObjectPicOverrideBuffer(struct SpriteSheet *a, void *buffer) +void LoadCompressedObjectPicOverrideBuffer(const struct SpriteSheet *a, void *buffer) { struct SpriteSheet spriteSheet; @@ -44,7 +44,7 @@ void LoadCompressedObjectPicOverrideBuffer(struct SpriteSheet *a, void *buffer) LoadSpriteSheet(&spriteSheet); } -void LoadCompressedObjectPalette(struct SpritePalette *a) +void LoadCompressedObjectPalette(const struct SpritePalette *a) { struct SpritePalette spritePalette; @@ -54,7 +54,7 @@ void LoadCompressedObjectPalette(struct SpritePalette *a) LoadSpritePalette(&spritePalette); } -void LoadCompressedObjectPaletteOverrideBuffer(struct SpritePalette *a, void *buffer) +void LoadCompressedObjectPaletteOverrideBuffer(const struct SpritePalette *a, void *buffer) { struct SpritePalette spritePalette; @@ -72,7 +72,7 @@ void DecompressPicFromTable_2(const struct SpriteSheet *a, u8 b, u8 c, void *d, LZ77UnCompWram(a->data, e); } -void sub_800D334(struct SpriteSheet *a, u32 b, u32 c, u32 d, void *dest, s32 f, u32 g) +void sub_800D334(const struct SpriteSheet *a, u32 b, u32 c, u32 d, void *dest, s32 f, u32 g) { u32 unk; @@ -83,7 +83,7 @@ void sub_800D334(struct SpriteSheet *a, u32 b, u32 c, u32 d, void *dest, s32 f, sub_800D378(a, b, c, d, dest, f, g, unk); } -void sub_800D378(struct SpriteSheet *a, u32 b, u32 c, u32 d, void *dest, s32 f, u32 g, u32 h) +void sub_800D378(const struct SpriteSheet *a, u32 b, u32 c, u32 d, void *dest, s32 f, u32 g, u32 h) { u8 r7 = h; diff --git a/src/intro.c b/src/intro.c index e103109f9..ac51e456c 100644 --- a/src/intro.c +++ b/src/intro.c @@ -1,8 +1,14 @@ #include "global.h" +#include "link.h" #include "main.h" #include "palette.h" +#include "rng.h" +#include "songs.h" +#include "sound.h" +#include "species.h" +#include "sprite.h" #include "task.h" -#include "link.h" +#include "trig.h" struct GcmbStruct { @@ -10,57 +16,131 @@ struct GcmbStruct u8 gcmb_field_2; }; -extern s32 gUnknown_03005ED0; +extern u16 gUnknown_02039318; +extern u16 gUnknown_0203931A; +extern u16 gUnknown_02039358; +extern u16 gUnknown_0203935A; + +extern u32 gIntroFrameCounter; extern struct GcmbStruct gUnknown_03005EE0; extern u16 gSaveFileStatus; +extern u8 gReservedSpritePaletteCount; + +extern const u16 gUnknown_08406974[]; +extern const u8 gUnknown_08406B74[]; +extern const u8 gUnknown_08406F28[]; +extern const u8 gUnknown_0840725C[]; +extern const u8 gUnknown_0840754C[]; +extern const u8 gUnknown_08407764[]; +extern const u8 gUnknown_084098D4[]; +extern const u8 gUnknown_08409AD4[]; +extern const u8 gUnknown_08409C04[]; +extern const u16 gUnknown_0840A758[]; +extern const u8 gUnknown_0840A778[]; +extern const u8 gUnknown_0840A7E4[]; +extern union AnimCmd *gUnknown_0840AE80[]; +extern const struct SpriteTemplate gSpriteTemplate_840AFF0; +extern const struct SpriteSheet gUnknown_0840B008; +extern const struct SpriteSheet gUnknown_0840B018; +extern const struct SpritePalette gUnknown_0840B028[]; +extern const struct SpriteTemplate gSpriteTemplate_840B1F4; +extern const struct SpriteSheet gUnknown_0840B20C; +extern const struct SpriteSheet gUnknown_0840B21C; +extern const struct SpritePalette gUnknown_0840B22C; +extern const struct SpritePalette gUnknown_0840B23C[]; +extern const struct SpriteSheet gIntro2BrendanSpriteSheet; +extern const struct SpriteSheet gIntro2MaySpriteSheet; +extern const struct SpriteSheet gIntro2BicycleSpriteSheet; +extern const struct SpriteSheet gIntro2LatiosSpriteSheet; +extern const struct SpriteSheet gIntro2LatiasSpriteSheet; +extern const struct SpritePalette gIntro2SpritePalettes[]; extern const u8 gIntroCopyright_Gfx[]; extern const u16 gIntroCopyright_Pal[]; extern const u16 gIntroCopyright_Tilemap[]; +extern void LoadCompressedObjectPic(const struct SpriteSheet *); +extern void LoadCompressedObjectPalette(const struct SpritePalette *); extern void CB2_InitTitleScreen(void); +extern u8 sub_8148EC0(/*TODO: arg types*/); +extern u8 intro_create_brendan_sprite(/*TODO: arg types*/); +extern u8 intro_create_may_sprite(/*TODO: arg types*/); -void CB2_813B7EC(void); -void task_intro_1(u8); +static void MainCB2_EndIntro(void); +static void Task_IntroLoadPart1Graphics(u8); +static void Task_IntroFadeIn(u8); +static void Task_IntroWaterDrops(u8); +static void task_intro_4(u8); +static void task_intro_5(u8); +static void Task_IntroLoadPart2Graphics(u8); +static void Task_IntroStartBikeRide(u8); +static void task_intro_8(u8); +static void task_intro_9(u8); +static void task_intro_10(u8); +static void task_intro_11(u8); +static void task_intro_12(u8); +static void task_intro_13(u8); +static void task_intro_14(u8); +static void task_intro_15(u8); +static void task_intro_16(u8); +static void task_intro_17(u8); +static void Task_IntroPokemonBattle(u8); +static void task_intro_19(u8); +void sub_813CAF4(u8); +void intro_reset_and_hide_bgs(void); +void sub_813CCE8(u8); +void sub_813CE30(u16, u16, u16, u16); +u8 sub_813CE88(/*TODO: arg types*/); +u8 sub_813CFA8(/*TODO: arg types*/); +u8 sub_813D584(/*TODO: arg types*/); +void sub_813D788(struct Sprite *); +void sub_813D880(struct Sprite *); +sub_813D954(/*TODO: arg types*/); +void sub_813DB9C(struct Sprite *); +void sub_813DE70(struct Sprite *); +void sub_813E10C(struct Sprite *); +void sub_813E210(struct Sprite *); +void sub_813E7C0(u8); +void sub_813EB4C(u8); -void sub_813B784(void) +static void VBlankCB_Intro(void) { LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); } -void CB2_813B798(void) +static void MainCB2_Intro(void) { RunTasks(); AnimateSprites(); BuildOamBuffer(); UpdatePaletteFade(); if (gMain.newKeys && !gPaletteFade.active) - SetMainCallback2(CB2_813B7EC); - else if (gUnknown_03005ED0 != -1) - gUnknown_03005ED0++; + SetMainCallback2(MainCB2_EndIntro); + else if (gIntroFrameCounter != -1) + gIntroFrameCounter++; } -void CB2_813B7EC(void) +static void MainCB2_EndIntro(void) { if (!UpdatePaletteFade()) SetMainCallback2(CB2_InitTitleScreen); } -void sub_813B808(u16 a1, u16 a2, u16 a3) +static void LoadCopyrightGraphics(u16 a1, u16 a2, u16 a3) { LZ77UnCompVram(gIntroCopyright_Gfx, (void *)(VRAM + a1)); LoadPalette(gIntroCopyright_Pal, a3, 0x20); CpuCopy16(gIntroCopyright_Tilemap, (void *)(VRAM + a2), 0x500); } -void SerialCb_CopyrightScreen(void) +static void SerialCb_CopyrightScreen(void) { GameCubeMultiBoot_HandleSerialInterrupt(&gUnknown_03005EE0); } -u8 SetUpCopyrightScreen(void) +static u8 SetUpCopyrightScreen(void) { u16 ime; @@ -79,7 +159,7 @@ u8 SetUpCopyrightScreen(void) DmaFill32(3, 0, (void *)OAM, OAM_SIZE); DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2); ResetPaletteFade(); - sub_813B808(0, 14336, 0); + LoadCopyrightGraphics(0, 14336, 0); remove_some_task(); ResetTasks(); ResetSpriteData(); @@ -90,9 +170,9 @@ u8 SetUpCopyrightScreen(void) REG_IME = 0; REG_IE |= INTR_FLAG_VBLANK; REG_IME = ime; - REG_DISPSTAT |= 8; - SetVBlankCallback(sub_813B784); - REG_DISPCNT = 320; + REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; + SetVBlankCallback(VBlankCB_Intro); + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON; SetSerialCallback(SerialCb_CopyrightScreen); GameCubeMultiBoot_Init(&gUnknown_03005EE0); default: @@ -111,8 +191,8 @@ u8 SetUpCopyrightScreen(void) case 141: if (UpdatePaletteFade()) break; - CreateTask(task_intro_1, 0); - SetMainCallback2(CB2_813B798); + CreateTask(Task_IntroLoadPart1Graphics, 0); + SetMainCallback2(MainCB2_Intro); if (gUnknown_03005EE0.gcmb_field_2) { GameCubeMultiBoot_ExecuteProgram(&gUnknown_03005EE0); @@ -145,3 +225,477 @@ void CB2_InitCopyrightScreen(void) { SetUpCopyrightScreen(); } + +static void Task_IntroLoadPart1Graphics(u8 taskId) +{ + SetVBlankCallback(NULL); + gUnknown_02039318 = Random() & 1; + intro_reset_and_hide_bgs(); + REG_BG3VOFS = 0; + REG_BG2VOFS = 0x50; + REG_BG1VOFS = 0x18; + REG_BG0VOFS = 0x28; + LZ77UnCompVram(gUnknown_08407764, (void *)VRAM); + LZ77UnCompVram(gUnknown_08406B74, (void *)(VRAM + 0x8000)); + DmaClear16(3, VRAM + 0x8800, 0x800); + LZ77UnCompVram(gUnknown_08406F28, (void *)(VRAM + 0x9000)); + DmaClear16(3, VRAM + 0x9800, 0x800); + LZ77UnCompVram(gUnknown_0840725C, (void *)(VRAM + 0xA000)); + DmaClear16(3, VRAM + 0xA800, 0x800); + LZ77UnCompVram(gUnknown_0840754C, (void *)(VRAM + 0xB000)); + DmaClear16(3, VRAM + 0xB800, 0x800); + LoadPalette(gUnknown_08406974, 0, 0x200); + REG_BG3CNT = 0x9603; + REG_BG2CNT = 0x9402; + REG_BG1CNT = 0x9201; + REG_BG0CNT = 0x9000; + LoadCompressedObjectPic(&gUnknown_0840B008); + LoadCompressedObjectPic(&gUnknown_0840B018); + LoadSpritePalettes(gUnknown_0840B028); + CpuCopy16(gPlttBufferUnfaded + 0x100, gPlttBufferUnfaded + 0x1F0, 0x20); + CpuCopy16(gPlttBufferUnfaded + 0x100, gPlttBufferUnfaded + 0x1E1, 0x1E); + CpuCopy16(gPlttBufferUnfaded + 0x100, gPlttBufferUnfaded + 0x1D2, 0x1C); + CpuCopy16(gPlttBufferUnfaded + 0x100, gPlttBufferUnfaded + 0x1C3, 0x1A); + CpuCopy16(gPlttBufferUnfaded + 0x100, gPlttBufferUnfaded + 0x1B4, 0x18); + CpuCopy16(gPlttBufferUnfaded + 0x100, gPlttBufferUnfaded + 0x1A5, 0x16); + CpuCopy16(gPlttBufferUnfaded + 0x100, gPlttBufferUnfaded + 0x196, 0x14); + gTasks[taskId].data[0] = sub_813D584(0xEC, -14, 0x200, 1, 0x78, 0); + gTasks[taskId].func = Task_IntroFadeIn; +} + +static void Task_IntroFadeIn(u8 taskId) +{ + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0); + SetVBlankCallback(VBlankCB_Intro); + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON; + gTasks[taskId].func = Task_IntroWaterDrops; + gIntroFrameCounter = 0; + m4aSongNumStart(0x19E); + ResetSerial(); +} + +static void Task_IntroWaterDrops(u8 taskId) +{ + //start moving rock + if (gIntroFrameCounter == 76) + gSprites[gTasks[taskId].data[0]].data0 = 1; + + //drop rock + if (gIntroFrameCounter == 251) + gSprites[gTasks[taskId].data[0]].data0 = 2; + + //drop two more rocks + if (gIntroFrameCounter == 368) + sub_813D584(0x30, 0, 0x400, 5, 0x70, 1); + if (gIntroFrameCounter == 384) + sub_813D584(0xC8, 0x3C, 0x400, 9, 0x80, 1); + + //show GameFreak logo + if (gIntroFrameCounter == 560) + sub_813D954(0x78, 0x50, CreateTask(sub_813CCE8, 0)); + + if (gIntroFrameCounter > 739) + { + gTasks[taskId].data[1] = 0x50; + gTasks[taskId].data[2] = 0; + gTasks[taskId].data[3] = 0x18; + gTasks[taskId].data[4] = 0; + gTasks[taskId].data[5] = 0x28; + gTasks[taskId].data[6] = 0; + gTasks[taskId].func = task_intro_4; + } +} + +static void task_intro_4(u8 taskId) +{ + if (gIntroFrameCounter < 904) + { + s32 r2; + + //slide backgrounds downward + r2 = (gTasks[taskId].data[1] << 16) + (u16)gTasks[taskId].data[2] - 0xC000; + gTasks[taskId].data[1] = r2 >> 16; + gTasks[taskId].data[2] = r2; + REG_BG2VOFS = gTasks[taskId].data[1]; + r2 = (gTasks[taskId].data[3] << 16) + (u16)gTasks[taskId].data[4] - 0x10000; + gTasks[taskId].data[3] = r2 >> 16; + gTasks[taskId].data[4] = r2; + REG_BG1VOFS = gTasks[taskId].data[3]; + r2 = (gTasks[taskId].data[5] << 16) + (u16)gTasks[taskId].data[6] - 0x18000; + gTasks[taskId].data[5] = r2 >> 16; + gTasks[taskId].data[6] = r2; + REG_BG0VOFS = gTasks[taskId].data[5]; + + //show Lati@s sprite + if (gIntroFrameCounter == 880) + { + u8 spriteId = CreateSprite(&gSpriteTemplate_840AFF0, 0xC8, 0xA0, 10); + + gSprites[spriteId].invisible = 1; + } + } + else + { + //fade to white + if (gIntroFrameCounter > 1007) + { + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0xFFFF); + gTasks[taskId].func = task_intro_5; + } + } +} + +static void task_intro_5(u8 taskId) +{ + if (gIntroFrameCounter > 1026) + gTasks[taskId].func = Task_IntroLoadPart2Graphics; +} + +static void Task_IntroLoadPart2Graphics(u8 taskId) +{ + intro_reset_and_hide_bgs(); + SetVBlankCallback(NULL); + ResetSpriteData(); + FreeAllSpritePalettes(); + gUnknown_02039358 = 0; + gUnknown_0203935A = 0; +#ifdef SAPPHIRE + load_intro_part2_graphics(0); +#else + load_intro_part2_graphics(1); +#endif + gTasks[taskId].func = Task_IntroStartBikeRide; +} + +static void Task_IntroStartBikeRide(u8 taskId) +{ + u8 spriteId; + + if (gUnknown_02039318 == 0) + LoadCompressedObjectPic(&gIntro2BrendanSpriteSheet); + else + LoadCompressedObjectPic(&gIntro2MaySpriteSheet); + LoadCompressedObjectPic(&gIntro2BicycleSpriteSheet); +#ifdef SAPPHIRE + LoadCompressedObjectPic(&gIntro2LatiasSpriteSheet); +#else + LoadCompressedObjectPic(&gIntro2LatiosSpriteSheet); +#endif + LoadSpritePalettes(gIntro2SpritePalettes); + if (gUnknown_02039318 == 0) + spriteId = intro_create_brendan_sprite(0x110, 100); + else + spriteId = intro_create_may_sprite(0x110, 100); + gSprites[spriteId].callback = sub_813D788; + gSprites[spriteId].anims = gUnknown_0840AE80; + gTasks[taskId].data[1] = spriteId; +#ifdef SAPPHIRE + spriteId = intro_create_latias_sprite(-0x40, 0x3C); +#else + spriteId = intro_create_latios_sprite(-0x40, 0x3C); +#endif + gSprites[spriteId].callback = sub_813D880; + gTasks[taskId].data[2] = spriteId; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0xFFFF); + SetVBlankCallback(VBlankCB_Intro); +#ifdef SAPPHIRE + gTasks[taskId].data[0] = sub_8148EC0(0, 0x4000, 0x40, 0x10); + sub_8148C78(0); +#else + gTasks[taskId].data[0] = sub_8148EC0(1, 0x4000, 0x400, 0x10); + sub_8148C78(1); +#endif + gTasks[taskId].func = task_intro_8; +} + +static void task_intro_8(u8 taskId) +{ + s16 a; + u16 sine; + + if (gIntroFrameCounter > 1823) + { + BeginNormalPaletteFade(0xFFFFFFFF, 0x10, 0, 0x10, 0xFFFF); + gTasks[taskId].func = task_intro_9; + } + if (gIntroFrameCounter == 1109) + gSprites[gTasks[taskId].data[1]].data0 = 1; + if (gIntroFrameCounter == 1214) + gSprites[gTasks[taskId].data[1]].data0 = 0; + if (gIntroFrameCounter == 1394) + gSprites[gTasks[taskId].data[2]].data0 = 1; + if (gIntroFrameCounter == 1398) + gSprites[gTasks[taskId].data[1]].data0 = 2; + if (gIntroFrameCounter == 1586) + gSprites[gTasks[taskId].data[1]].data0 = 3; + if (gIntroFrameCounter == 1727) + gSprites[gTasks[taskId].data[1]].data0 = 4; + + //TODO: Clean this up + a = (((u16)gTasks[taskId].data[3] << 16) >> 18) & 0x7F; + sine = Sin(a, 0x30); + gUnknown_0203935A = sine; + if (gTasks[taskId].data[3] < 0x200) + gTasks[taskId].data[3]++; +#ifdef SAPPHIRE + sub_8149020(0); +#else + sub_8149020(1); +#endif +} + +static void task_intro_9(u8 taskId) +{ + if (gIntroFrameCounter > 2068) + { + DestroyTask(gTasks[taskId].data[0]); + gTasks[taskId].func = task_intro_10; + } +} + +static void task_intro_10(u8 taskId) +{ + intro_reset_and_hide_bgs(); + LZ77UnCompVram(gUnknown_08409C04, (void *)VRAM); + LZ77UnCompVram(gUnknown_08409AD4, (void *)(VRAM + 0x4000)); + LoadPalette(gUnknown_084098D4, 0, 0x200); + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[2] = 0; + gTasks[taskId].data[3] = 0; + sub_813CE30(0x78, 0x50, 0, 0); + ResetSpriteData(); + FreeAllSpritePalettes(); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0xFFFF); + REG_BG2CNT = 0x4883; + REG_DISPCNT = DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG2_ON | DISPCNT_OBJ_ON; + gTasks[taskId].func = task_intro_11; + gIntroFrameCounter = 0; + m4aSongNumStart(0x1BA); +} + +static void task_intro_11(u8 taskId) +{ + gTasks[taskId].data[0] += 0x400; + if (gTasks[taskId].data[1] <= 0x6BF) + { + gTasks[taskId].data[1] += gTasks[taskId].data[2]; + gTasks[taskId].data[2]++; + } + else + { + gTasks[taskId].func = task_intro_12; + } + sub_813CE30(0x78, 0x50, 0x10000 / gTasks[taskId].data[1], gTasks[taskId].data[0]); + if (gIntroFrameCounter == 44) + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0xFFFF); +} + +static void task_intro_12(u8 taskId) +{ + if (gIntroFrameCounter > 59) + gTasks[taskId].func = task_intro_13; +} + +extern u8 unk_2000000[][32]; + +static void task_intro_13(u8 taskId) +{ + u16 i; + void *vram; + + intro_reset_and_hide_bgs(); + for (i = 0; i < 32; i++) + { + unk_2000000[0][i] = 0; + unk_2000000[1][i] = 17; + unk_2000000[2][i] = 34; + } + vram = (void *)VRAM; + DmaCopy16(3, unk_2000000, vram, 0x60); + for (i = 0; i < 0x280; i++) + ((u16 *)(VRAM + 0x3000))[i] = 0xF001; + for (i = 0; i < 0x80; i++) + ((u16 *)(VRAM + 0x3800))[i] = 0xF002; + for (i = 0; i < 0x180; i++) + ((u16 *)(VRAM + 0x3900))[i] = 0xF000; + for (i = 0; i < 0x80; i++) + ((u16 *)(VRAM + 0x3C00))[i] = 0xF002; + gPlttBufferUnfaded[0xF0] = RGB_WHITE; + gPlttBufferFaded[0xF0] = RGB_WHITE; + sub_813D084(1); + gPlttBufferUnfaded[0xF2] = RGB_BLACK; + gPlttBufferFaded[0xF2] = RGB_BLACK; + LZ77UnCompVram(gUnknown_0840A778, (void *)(VRAM + 0x4000)); + LZ77UnCompVram(gUnknown_0840A7E4, (void *)(VRAM + 0x7000)); + LoadPalette(gUnknown_0840A758, 0, 0x20); + ResetSpriteData(); + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 8; + LoadCompressedObjectPic(&gUnknown_0840B20C); + LoadCompressedObjectPic(&gUnknown_0840B21C); + LoadCompressedObjectPalette(&gUnknown_0840B22C); + LoadSpritePalettes(gUnknown_0840B23C); + gTasks[taskId].func = task_intro_14; +} + +static void task_intro_14(u8 taskId) +{ + u8 newTaskId; + + REG_WIN0H = 0xF0; + REG_WIN0V = 0xA0; + REG_WININ = 0x1C; + REG_WINOUT = 0x1D; + REG_BG3CNT = 0x603; + REG_BG0CNT = 0x700; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON; + gTasks[taskId].data[15] = CreateTask(sub_813CAF4, 0); + gTasks[gTasks[taskId].data[15]].data[0] = 0; + gTasks[taskId].data[0] = 0; + gTasks[taskId].func = task_intro_15; +} + +static void task_intro_15(u8 taskId) +{ + u16 foo = gTasks[taskId].data[0]; + + if (gTasks[taskId].data[0] != 32) + { + u32 bar; //needed to match for some reason + + gTasks[taskId].data[0] += 4; + REG_WIN0V = (gTasks[taskId].data[0] * 256) - (bar = foo - 0x9C); + } + else + { + REG_WIN0V = 0x2080; + gTasks[taskId].func = task_intro_16; + } +} + +static void task_intro_16(u8 taskId) +{ + gTasks[taskId].func = task_intro_17; +} + +static void task_intro_17(u8 taskId) +{ + gUnknown_0203931A = 0; + gTasks[taskId].func = Task_IntroPokemonBattle; +} + +static void Task_IntroPokemonBattle(u8 taskId) +{ + u8 spriteId; + + if (gIntroFrameCounter == 80) + { + spriteId = sub_813CE88(SPECIES_SHARPEDO, 0xF0, 0xA0, 5, 1); + gSprites[spriteId].callback = sub_813DB9C; + gSprites[spriteId].data1 = 1; + gSprites[spriteId].data2 = 0; + } + if (gIntroFrameCounter == 152) + { + spriteId = sub_813CE88(SPECIES_DUSKULL, 0, 0xA0, 4, 1); + gSprites[spriteId].callback = sub_813DB9C; + gSprites[spriteId].data1 = 2; + gSprites[spriteId].data2 = 1; + } + if (gIntroFrameCounter == 219) + { + sub_813D084(0); + spriteId = sub_813CFA8(gUnknown_02039318, 0x110, 0x60, 6); + gSprites[spriteId].callback = sub_813DE70; + gTasks[taskId].data[1] = spriteId; + } + if (gIntroFrameCounter == 304) + { + gTasks[gTasks[taskId].data[15]].data[0] = 4; + gSprites[gTasks[taskId].data[1]].data0 = 2; + } + if (gIntroFrameCounter == 384) + { + gTasks[gTasks[taskId].data[15]].data[0] = 0; + gSprites[gTasks[taskId].data[1]].data0 = 4; + } + if (gIntroFrameCounter == 400) + { + BeginNormalPaletteFade(0xFF0000, 0, 0x10, 0, 0x7EFF); + } + if (gIntroFrameCounter == 432) + { + gSprites[gTasks[taskId].data[1]].data0 = 5; + } + if (gIntroFrameCounter == 462) + { + gSprites[gTasks[taskId].data[1]].data0 = 6; + gTasks[gTasks[taskId].data[15]].data[0] = 2; + } + if (gIntroFrameCounter == 463) + { + sub_813D084(1); + spriteId = sub_813CE88(SPECIES_SHARPEDO, 0xD0, 8, 5, 1); + gSprites[spriteId].callback = sub_813E10C; + gTasks[taskId].data[2] = spriteId; + sub_813E7C0(spriteId); + } + if (gIntroFrameCounter == 539) + { + spriteId = sub_813CE88(SPECIES_DUSKULL, 0xF8, 0x10, 4, 1); + gSprites[spriteId].callback = sub_813E10C; + gTasks[taskId].data[3] = spriteId; + sub_813E930(spriteId); + } + if (gIntroFrameCounter == 623) + { + gSprites[gTasks[taskId].data[2]].data0 = 2; + gSprites[gTasks[taskId].data[3]].data0 = 2; + gTasks[gTasks[taskId].data[15]].data[0] = 3; + } + if (gIntroFrameCounter == 624) + { + sub_813D084(0); + spriteId = sub_813CE88(SPECIES_MUDKIP, 0x20, 0x98, 0, 0); + gSprites[spriteId].callback = sub_813E210; + gTasks[taskId].data[4] = spriteId; + sub_813EDBC(spriteId); + } + if (gIntroFrameCounter == 700) + { + spriteId = sub_813CE88(SPECIES_TORCHIC, -8, 0x90, 1, 0); + gSprites[spriteId].callback = sub_813E210; + gTasks[taskId].data[5] = spriteId; + sub_813EB4C(spriteId); + } + if (gIntroFrameCounter == 776) + { + gUnknown_0203931A = 1; + gSprites[gTasks[taskId].data[4]].data0 = 2; + gSprites[gTasks[taskId].data[5]].data0 = 2; + gTasks[gTasks[taskId].data[15]].data[0] = 0; + } + if (gIntroFrameCounter == 781) + { + sub_813D084(2); + gSprites[gTasks[taskId].data[2]].data0 = 3; + gSprites[gTasks[taskId].data[3]].data0 = 3; + gSprites[gTasks[taskId].data[4]].data0 = 3; + gSprites[gTasks[taskId].data[5]].data0 = 3; + spriteId = CreateSprite(&gSpriteTemplate_840B1F4, 0x78, 0x50, 15); + gSprites[spriteId].invisible = 1; + } + if (gIntroFrameCounter == 800) + PlaySE(SE_OP_BASYU); + if (gIntroFrameCounter == 850) + BeginNormalPaletteFade(0xFFFFFFFF, 4, 0, 0x10, 0xFFFF); + if (gIntroFrameCounter == 946) + gTasks[taskId].func = task_intro_19; +} + +static void task_intro_19(u8 taskId) +{ + DestroyTask(taskId); + SetMainCallback2(MainCB2_EndIntro); +} diff --git a/src/sprite.c b/src/sprite.c index 12c62145e..c91476f51 100644 --- a/src/sprite.c +++ b/src/sprite.c @@ -57,7 +57,7 @@ static void BuildSpritePriorities(void); static void SortSprites(void); static void CopyMatricesToOamBuffer(void); static void AddSpritesToOamBuffer(void); -static u8 CreateSpriteAt(u8 index, struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority); +static u8 CreateSpriteAt(u8 index, const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority); static void ClearSpriteCopyRequests(void); static void ResetOamMatrices(void); static void ResetSprite(struct Sprite *sprite); @@ -530,7 +530,7 @@ static void AddSpritesToOamBuffer(void) } } -u8 CreateSprite(struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority) +u8 CreateSprite(const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority) { u8 i; @@ -541,7 +541,7 @@ u8 CreateSprite(struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority) return MAX_SPRITES; } -u8 CreateSpriteAtEnd(struct SpriteTemplate *template, u16 x, u16 y, u8 subpriority) +u8 CreateSpriteAtEnd(const struct SpriteTemplate *template, u16 x, u16 y, u8 subpriority) { s16 i; @@ -554,7 +554,7 @@ u8 CreateSpriteAtEnd(struct SpriteTemplate *template, u16 x, u16 y, u8 subpriori u8 CreateInvisibleSprite(void (*callback)(struct Sprite *)) { - u8 index = CreateSprite((struct SpriteTemplate *)&gDummySpriteTemplate, 0, 0, 31); + u8 index = CreateSprite(&gDummySpriteTemplate, 0, 0, 31); if (index == MAX_SPRITES) { @@ -568,7 +568,7 @@ u8 CreateInvisibleSprite(void (*callback)(struct Sprite *)) } } -static u8 CreateSpriteAt(u8 index, struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority) +static u8 CreateSpriteAt(u8 index, const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority) { struct Sprite *sprite = &gSprites[index]; @@ -1635,7 +1635,7 @@ void FreeAllSpritePalettes(void) sSpritePaletteTags[i] = 0xFFFF; } -u8 LoadSpritePalette(struct SpritePalette *palette) +u8 LoadSpritePalette(const struct SpritePalette *palette) { u8 index = IndexOfSpritePaletteTag(palette->tag); @@ -1656,7 +1656,7 @@ u8 LoadSpritePalette(struct SpritePalette *palette) } } -void LoadSpritePalettes(struct SpritePalette *palettes) +void LoadSpritePalettes(const struct SpritePalette *palettes) { u8 i; for (i = 0; palettes[i].data != NULL; i++) diff --git a/sym_common.txt b/sym_common.txt index 252bcbfbc..2c2479b83 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -337,7 +337,7 @@ gSaveFileStatus: @ 3005EB8 gUnknown_03005EBC: @ 3005EBC .space 0x14 -gUnknown_03005ED0: @ 3005ED0 +gIntroFrameCounter: @ 3005ED0 .space 0x10 gUnknown_03005EE0: @ 3005EE0 |