.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start sub_816CBE8 sub_816CBE8: @ 816CBE8 push {lr} bl LoadOam bl ProcessSpriteCopyRequests bl TransferPlttBuffer bl ScanlineEffect_InitHBlankDmaTransfer pop {r0} bx r0 thumb_func_end sub_816CBE8 thumb_func_start sub_816CC00 sub_816CC00: @ 816CC00 push {lr} bl RunTasks bl AnimateSprites bl BuildOamBuffer bl UpdatePaletteFade ldr r0, =gMain ldrh r0, [r0, 0x2E] cmp r0, 0 beq _0816CC3C ldr r0, =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _0816CC3C ldr r0, =sub_816CC54 bl SetMainCallback2 b _0816CC4C .pool _0816CC3C: ldr r2, =gUnknown_030062A0 ldr r1, [r2] movs r0, 0x1 negs r0, r0 cmp r1, r0 beq _0816CC4C adds r0, r1, 0x1 str r0, [r2] _0816CC4C: pop {r0} bx r0 .pool thumb_func_end sub_816CC00 thumb_func_start sub_816CC54 sub_816CC54: @ 816CC54 push {lr} bl UpdatePaletteFade lsls r0, 24 cmp r0, 0 bne _0816CC66 ldr r0, =CB2_InitTitleScreen bl SetMainCallback2 _0816CC66: pop {r0} bx r0 .pool thumb_func_end sub_816CC54 thumb_func_start load_copyright_graphics @ void load_copyright_graphics(u16 tile_patterns_dest, u16 tilemap_dest, u16 unknown_dest) load_copyright_graphics: @ 816CC70 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, =gIntroCopyright_Gfx movs r6, 0xC0 lsls r6, 19 adds r3, r6 adds r1, r3, 0 bl LZ77UnCompVram ldr r0, =gIntroCopyright_Tilemap adds r4, r6 adds r1, r4, 0 bl LZ77UnCompVram ldr r0, =gIntroCopyright_Pal adds r1, r5, 0 movs r2, 0x20 bl LoadPalette pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end load_copyright_graphics thumb_func_start SerialCb_CopyrightScreen SerialCb_CopyrightScreen: @ 816CCB8 push {lr} ldr r0, =gUnknown_030062B0 bl GameCubeMultiBoot_HandleSerialInterrupt pop {r0} bx r0 .pool thumb_func_end SerialCb_CopyrightScreen thumb_func_start do_copyright_screen do_copyright_screen: @ 816CCC8 push {r4-r6,lr} sub sp, 0x10 ldr r0, =gMain movs r1, 0x87 lsls r1, 3 adds r5, r0, r1 ldrb r4, [r5] cmp r4, 0x8C bne _0816CCDC b _0816CE00 _0816CCDC: cmp r4, 0x8C bgt _0816CCEC cmp r4, 0 beq _0816CCF4 b _0816CDBC .pool _0816CCEC: cmp r4, 0x8D bne _0816CCF2 b _0816CE2C _0816CCF2: b _0816CDBC _0816CCF4: 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, =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 str r4, [sp, 0x4] movs r1, 0xC0 lsls r1, 19 ldr r2, =0x05006000 add r0, sp, 0x4 bl CpuSet str r4, [sp, 0x8] add r0, sp, 0x8 movs r1, 0xE0 lsls r1, 19 ldr r2, =0x05000100 bl CpuSet add r0, sp, 0xC strh r4, [r0] ldr r1, =0x05000002 ldr r2, =0x010001ff bl CpuSet 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, =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, =sub_816CBE8 bl SetVBlankCallback movs r1, 0x80 lsls r1, 19 movs r2, 0xA0 lsls r2, 1 adds r0, r2, 0 strh r0, [r1] ldr r0, =SerialCb_CopyrightScreen bl SetSerialCallback ldr r0, =gUnknown_030062B0 bl GameCubeMultiBoot_Init _0816CDBC: bl UpdatePaletteFade ldr r0, =gMain movs r1, 0x87 lsls r1, 3 adds r0, r1 ldrb r1, [r0] adds r1, 0x1 strb r1, [r0] ldr r0, =gUnknown_030062B0 bl GameCubeMultiBoot_Main b _0816CEA0 .pool _0816CE00: ldr r4, =gUnknown_030062B0 adds r0, r4, 0 bl GameCubeMultiBoot_Main ldrb r0, [r4, 0x2] cmp r0, 0x1 beq _0816CEA0 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 _0816CEA0 .pool _0816CE2C: bl UpdatePaletteFade lsls r0, 24 cmp r0, 0 bne _0816CEA0 ldr r0, =task_intro_1 movs r1, 0 bl CreateTask ldr r0, =sub_816CC00 bl SetMainCallback2 ldr r5, =gUnknown_030062B0 ldrb r0, [r5, 0x2] cmp r0, 0 beq _0816CE8C ldrb r0, [r5, 0x2] cmp r0, 0x2 bne _0816CE96 ldr r6, =0x020000ac ldr r4, [r6] ldr r0, =0x65366347 cmp r4, r0 bne _0816CE6C ldr r0, =gMultiBootProgram_PokemonColosseum_Start movs r1, 0x80 lsls r1, 18 movs r2, 0xA0 lsls r2, 9 bl CpuSet str r4, [r6] _0816CE6C: adds r0, r5, 0 bl GameCubeMultiBoot_ExecuteProgram b _0816CE96 .pool _0816CE8C: bl GameCubeMultiBoot_Quit ldr r0, =sub_800BA38 bl SetSerialCallback _0816CE96: movs r0, 0 b _0816CEA2 .pool _0816CEA0: movs r0, 0x1 _0816CEA2: add sp, 0x10 pop {r4-r6} pop {r1} bx r1 thumb_func_end do_copyright_screen thumb_func_start c2_copyright_1 c2_copyright_1: @ 816CEAC push {lr} bl do_copyright_screen lsls r0, 24 cmp r0, 0 bne _0816CEFA bl sub_815355C lsls r0, 16 lsrs r0, 16 bl SetSaveBlocksPointers bl sub_808447C bl ResetSaveCounters movs r0, 0 bl sub_81534D0 ldr r0, =gSaveFileStatus ldrh r0, [r0] cmp r0, 0 beq _0816CEDE cmp r0, 0x2 bne _0816CEE2 _0816CEDE: bl Sav2_ClearSetDefault _0816CEE2: ldr r0, =gSaveBlock2Ptr ldr r0, [r0] ldrb r0, [r0, 0x15] lsls r0, 31 lsrs r0, 31 bl SetPokemonCryStereo ldr r0, =0x02000000 movs r1, 0xE0 lsls r1, 9 bl InitHeap _0816CEFA: pop {r0} bx r0 .pool thumb_func_end c2_copyright_1 thumb_func_start CB2_InitCopyrightScreenAfterTitleScreen CB2_InitCopyrightScreenAfterTitleScreen: @ 816CF0C push {lr} bl do_copyright_screen pop {r0} bx r0 thumb_func_end CB2_InitCopyrightScreenAfterTitleScreen thumb_func_start task_intro_1 @ void task_intro_1(int task_id) task_intro_1: @ 816CF18 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, =gUnknown_0203BCC8 bl Random movs r1, 0x1 ands r1, r0 strh r1, [r4] bl intro_reset_and_hide_bgs movs r0, 0x1E movs r1, 0 bl SetGpuReg movs r0, 0x1A movs r1, 0x50 bl SetGpuReg movs r0, 0x16 movs r1, 0x18 bl SetGpuReg movs r0, 0x12 movs r1, 0x28 bl SetGpuReg ldr r0, =gIntro1BGLeavesGfx movs r1, 0xC0 lsls r1, 19 bl LZ77UnCompVram ldr r0, =gIntro1BG0_Tilemap ldr r1, =0x06008000 bl LZ77UnCompVram ldr r1, =0x06008800 add r0, sp, 0x8 movs r6, 0 strh r6, [r0] ldr r4, =0x040000d4 str r0, [r4] str r1, [r4, 0x4] ldr r5, =0x81000400 str r5, [r4, 0x8] ldr r0, [r4, 0x8] ldr r0, =gIntro1BG1_Tilemap ldr r1, =0x06009000 bl LZ77UnCompVram ldr r1, =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, =gIntro1BG2_Tilemap ldr r1, =0x0600a000 bl LZ77UnCompVram ldr r1, =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, =gIntro1BG3_Tilemap ldr r1, =0x0600b000 bl LZ77UnCompVram ldr r1, =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, =gIntro1BGPals movs r5, 0x80 lsls r5, 2 movs r1, 0 adds r2, r5, 0 bl LoadPalette ldr r1, =0x00009603 movs r0, 0xE bl SetGpuReg ldr r1, =0x00009402 movs r0, 0xC bl SetGpuReg ldr r1, =0x00009201 movs r0, 0xA bl SetGpuReg movs r1, 0x90 lsls r1, 8 movs r0, 0x8 bl SetGpuReg ldr r0, =gUnknown_085E4FDC bl LoadCompressedObjectPic ldr r0, =gUnknown_085E4FEC bl LoadCompressedObjectPic ldr r0, =gUnknown_085E4FFC bl LoadSpritePalettes ldr r0, =gUnknown_085E4A74 bl LoadCompressedObjectPic ldr r0, =gUnknown_085E4A84 bl LoadSpritePalettes ldr r4, =gPlttBufferUnfaded + 0x200 movs r3, 0xF0 lsls r3, 1 adds r1, r4, r3 adds r0, r4, 0 movs r2, 0x10 bl CpuSet movs r0, 0xE1 lsls r0, 1 adds r1, r4, r0 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 r3, 0xB4 lsls r3, 1 adds r1, r4, r3 adds r0, r4, 0 movs r2, 0xC bl CpuSet movs r0, 0xA5 lsls r0, 1 adds r1, r4, r0 adds r0, r4, 0 movs r2, 0xB bl CpuSet movs r3, 0x96 lsls r3, 1 adds r1, r4, r3 adds r0, r4, 0 movs r2, 0xA bl CpuSet movs r0, 0x78 movs r1, 0x50 movs r2, 0 bl sub_816FDB8 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_816F7D0 ldr r2, =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, =task_intro_2 str r0, [r1] add sp, 0xC pop {r3} mov r8, r3 pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end task_intro_1 thumb_func_start task_intro_2 task_intro_2: @ 816D12C 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, =sub_816CBE8 bl SetVBlankCallback movs r1, 0xFA lsls r1, 5 movs r0, 0 bl SetGpuReg ldr r1, =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, =task_intro_3 str r1, [r0] ldr r0, =gUnknown_030062A0 str r5, [r0] movs r0, 0xCF lsls r0, 1 bl m4aSongNumStart bl sub_800B628 add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end task_intro_2 thumb_func_start task_intro_3 task_intro_3: @ 816D190 push {r4-r6,lr} sub sp, 0x8 lsls r0, 24 lsrs r4, r0, 24 adds r6, r4, 0 ldr r5, =gUnknown_030062A0 ldr r0, [r5] cmp r0, 0x4C bne _0816D1BE ldr r2, =gSprites ldr r1, =gTasks lsls r0, r4, 2 adds r0, r4 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, 0x1 strh r1, [r0, 0x2E] _0816D1BE: ldr r0, [r5] cmp r0, 0x80 bne _0816D1CC ldr r0, =task_intro_3_1 movs r1, 0 bl CreateTask _0816D1CC: ldr r0, [r5] cmp r0, 0xFB bne _0816D1EE ldr r2, =gSprites ldr r1, =gTasks lsls r0, r4, 2 adds r0, r4 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] _0816D1EE: ldr r1, [r5] movs r0, 0x80 lsls r0, 1 cmp r1, r0 bne _0816D200 ldr r0, =task_intro_3_2 movs r1, 0 bl CreateTask _0816D200: ldr r1, [r5] movs r0, 0xB8 lsls r0, 1 cmp r1, r0 bne _0816D220 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_816F7D0 _0816D220: ldr r1, [r5] movs r0, 0xC0 lsls r0, 1 cmp r1, r0 bne _0816D240 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_816F7D0 _0816D240: ldr r0, [r5] movs r4, 0x8C lsls r4, 2 cmp r0, r4 bne _0816D252 ldr r0, =task_intro_3_3 movs r1, 0 bl CreateTask _0816D252: ldr r0, [r5] cmp r0, r4 bls _0816D27A ldr r1, =gTasks lsls r0, r6, 2 adds r0, r6 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, =task_intro_4 str r1, [r0] _0816D27A: add sp, 0x8 pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end task_intro_3 thumb_func_start task_intro_3_3 task_intro_3_3: @ 816D2A0 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 lsls r0, r5, 2 adds r0, r5 lsls r0, 3 ldr r1, =gTasks + 0x8 adds r4, r0, r1 ldrh r0, [r4, 0x4] adds r0, 0x1 strh r0, [r4, 0x4] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _0816D2C4 ldrh r0, [r4, 0x6] adds r0, 0x1 strh r0, [r4, 0x6] _0816D2C4: movs r1, 0 ldrsh r0, [r4, r1] cmp r0, 0 beq _0816D2D8 cmp r0, 0x1 beq _0816D314 b _0816D324 .pool _0816D2D8: ldr r0, =gUnknown_085E4AB8 ldr r2, =gUnknown_085E4AD0 movs r1, 0x8 ldrsh r3, [r4, r1] lsls r3, 1 adds r1, r3, r2 ldrb r1, [r1] adds r2, 0x1 adds r3, r2 ldrh r2, [r4, 0x6] ldrb r3, [r3] adds r2, r3 lsls r2, 16 asrs r2, 16 movs r3, 0 bl CreateSprite ldrh r0, [r4] adds r0, 0x1 strh r0, [r4] movs r0, 0xC strh r0, [r4, 0x2] ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] b _0816D324 .pool _0816D314: ldrh r0, [r4, 0x2] subs r0, 0x1 strh r0, [r4, 0x2] lsls r0, 16 asrs r0, 16 cmp r0, 0 bne _0816D324 strh r0, [r4] _0816D324: movs r1, 0x6 ldrsh r0, [r4, r1] cmp r0, 0x3C ble _0816D332 adds r0, r5, 0 bl DestroyTask _0816D332: pop {r4,r5} pop {r0} bx r0 thumb_func_end task_intro_3_3 thumb_func_start sub_816D338 sub_816D338: @ 816D338 push {lr} adds r1, r0, 0 ldrh r0, [r1, 0x2E] adds r0, 0x1 strh r0, [r1, 0x2E] lsls r0, 16 asrs r0, 16 cmp r0, 0xC bne _0816D350 adds r0, r1, 0 bl DestroySprite _0816D350: pop {r0} bx r0 thumb_func_end sub_816D338 thumb_func_start task_intro_4 task_intro_4: @ 816D354 push {r4,r5,lr} sub sp, 0x4 lsls r0, 24 lsrs r1, r0, 24 adds r4, r1, 0 ldr r5, =gUnknown_030062A0 ldr r2, [r5] ldr r0, =0x00000387 cmp r2, r0 bhi _0816D418 ldr r0, =gTasks lsls r4, r1, 2 adds r4, r1 lsls r4, 3 adds r4, r0 movs r1, 0xA ldrsh r0, [r4, r1] lsls r0, 16 ldrh r1, [r4, 0xC] adds r1, r0, r1 ldr r0, =0xffffa000 adds r1, r0 asrs r0, r1, 16 strh r0, [r4, 0xA] strh r1, [r4, 0xC] ldrh r1, [r4, 0xA] movs r0, 0x1A bl SetGpuReg movs r1, 0xE ldrsh r0, [r4, r1] lsls r0, 16 ldrh r1, [r4, 0x10] adds r1, r0, r1 ldr r0, =0xffff8000 adds r1, r0 asrs r0, r1, 16 strh r0, [r4, 0xE] strh r1, [r4, 0x10] ldrh r1, [r4, 0xE] movs r0, 0x16 bl SetGpuReg movs r1, 0x12 ldrsh r0, [r4, r1] lsls r0, 16 ldrh r1, [r4, 0x14] adds r1, r0, r1 ldr r0, =0xffff4000 adds r1, r0 asrs r0, r1, 16 strh r0, [r4, 0x12] strh r1, [r4, 0x14] ldrh r1, [r4, 0x12] movs r0, 0x12 bl SetGpuReg ldr r1, [r5] movs r0, 0xD0 lsls r0, 2 cmp r1, r0 bne _0816D43E ldr r0, =gUnknown_085E4FC4 movs r1, 0x78 movs r2, 0xA0 movs r3, 0xA bl CreateSprite lsls r0, 24 lsrs r0, 24 ldr r2, =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 _0816D43E .pool _0816D418: ldr r0, =0x000003ef cmp r2, r0 bls _0816D43E movs r0, 0x1 negs r0, r0 ldr r1, =0x0000ffff str r1, [sp] movs r1, 0 movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade ldr r1, =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, =task_intro_5 str r1, [r0] _0816D43E: add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end task_intro_4 thumb_func_start task_intro_5 task_intro_5: @ 816D458 push {lr} lsls r0, 24 lsrs r2, r0, 24 ldr r0, =gUnknown_030062A0 ldr r1, [r0] ldr r0, =0x00000402 cmp r1, r0 bls _0816D476 ldr r0, =gTasks lsls r1, r2, 2 adds r1, r2 lsls r1, 3 adds r1, r0 ldr r0, =task_intro_6 str r0, [r1] _0816D476: pop {r0} bx r0 .pool thumb_func_end task_intro_5 thumb_func_start task_intro_6 task_intro_6: @ 816D48C 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, =gUnknown_0203BD24 movs r1, 0 strh r1, [r0] ldr r0, =gUnknown_0203BD26 strh r1, [r0] ldr r0, =gUnknown_0203BCCC strh r1, [r0] movs r0, 0x1 bl load_intro_part2_graphics ldr r1, =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, =task_intro_7 str r1, [r0] pop {r4} pop {r0} bx r0 .pool thumb_func_end task_intro_6 thumb_func_start task_intro_7 task_intro_7: @ 816D4E4 push {r4-r7,lr} sub sp, 0x4 lsls r0, 24 lsrs r4, r0, 24 ldr r0, =gUnknown_0203BCC8 ldrh r0, [r0] cmp r0, 0 bne _0816D504 ldr r0, =gUnknown_085F52BC bl LoadCompressedObjectPic b _0816D50A .pool _0816D504: ldr r0, =gUnknown_085F52CC bl LoadCompressedObjectPic _0816D50A: ldr r0, =gUnknown_085F52DC bl LoadCompressedObjectPic ldr r0, =gUnknown_085F52FC bl LoadCompressedObjectPic movs r6, 0 lsls r7, r4, 2 ldr r5, =gUnknown_085E4AE8 _0816D51C: lsls r0, r6, 3 adds r0, r5 bl LoadCompressedObjectPic adds r0, r6, 0x1 lsls r0, 24 lsrs r6, r0, 24 cmp r6, 0x2 bls _0816D51C ldr r0, =gUnknown_085F530C bl LoadSpritePalettes ldr r0, =gUnknown_085E4B08 bl LoadSpritePalettes ldr r0, =gUnknown_085E4BDC movs r5, 0x88 lsls r5, 1 adds r1, r5, 0 movs r2, 0x80 movs r3, 0 bl CreateSprite ldr r0, =gUnknown_085E4BA4 movs r1, 0x90 lsls r1, 1 movs r2, 0x6E movs r3, 0x1 bl CreateSprite ldr r0, =gUnknown_0203BCC8 ldrh r0, [r0] cmp r0, 0 bne _0816D590 adds r0, r5, 0 movs r1, 0x64 bl sub_817B834 b _0816D598 .pool _0816D590: adds r0, r5, 0 movs r1, 0x64 bl sub_817B88C _0816D598: lsls r0, 24 lsrs r6, r0, 24 ldr r2, =gSprites lsls r0, r6, 4 adds r0, r6 lsls r0, 2 adds r5, r2, 0 adds r5, 0x1C adds r3, r0, r5 ldr r1, =sub_816F9D4 str r1, [r3] adds r2, 0x8 adds r0, r2 ldr r1, =gUnknown_085E4DC4 str r1, [r0] ldr r0, =gTasks adds r4, r7, r4 lsls r4, 3 adds r4, r0 strh r6, [r4, 0xA] ldr r0, =gUnknown_085E4B40 movs r1, 0x88 lsls r1, 1 movs r2, 0x50 movs r3, 0x4 bl CreateSprite movs r0, 0x40 negs r0, r0 movs r1, 0x3C bl sub_817B9C4 lsls r0, 24 lsrs r6, r0, 24 lsls r0, r6, 4 adds r0, r6 lsls r0, 2 adds r0, r5 ldr r1, =sub_816FAB0 str r1, [r0] strh r6, [r4, 0xC] movs r0, 0x1 negs r0, r0 ldr r1, =0x0000ffff str r1, [sp] movs r1, 0 movs r2, 0x10 movs r3, 0 bl BeginNormalPaletteFade ldr r0, =sub_816CBE8 bl SetVBlankCallback movs r1, 0x80 lsls r1, 7 movs r2, 0x80 lsls r2, 3 movs r0, 0x1 movs r3, 0x10 bl sub_817B3DC lsls r0, 24 lsrs r0, 24 strh r0, [r4, 0x8] movs r0, 0x1 bl sub_817B150 ldr r0, =task_intro_8 str r0, [r4] add sp, 0x4 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end task_intro_7 thumb_func_start task_intro_8 @ void task_intro_8(int task_id) task_intro_8: @ 816D650 push {r4-r7,lr} sub sp, 0x4 lsls r0, 24 lsrs r4, r0, 24 adds r6, r4, 0 ldr r5, =gUnknown_030062A0 ldr r1, [r5] movs r0, 0xE8 lsls r0, 3 cmp r1, r0 bne _0816D67C ldr r1, =gUnknown_0203BD28 movs r0, 0x2 strh r0, [r1] ldr r1, =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldrb r0, [r0, 0x8] bl DestroyTask _0816D67C: ldr r1, [r5] ldr r0, =0x0000079a cmp r1, r0 bls _0816D6A4 movs r0, 0x1 negs r0, r0 ldr r1, =0x0000ffff str r1, [sp] movs r1, 0x8 movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade ldr r1, =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, =task_intro_9 str r1, [r0] _0816D6A4: ldr r1, [r5] ldr r0, =0x00000455 ldr r3, =gTasks cmp r1, r0 bne _0816D6C8 ldr r2, =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] _0816D6C8: ldr r1, [r5] ldr r0, =0x000004be cmp r1, r0 bne _0816D6EA ldr r2, =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] _0816D6EA: ldr r1, [r5] ldr r0, =0x00000572 cmp r1, r0 bne _0816D70C ldr r2, =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] _0816D70C: ldr r1, [r5] ldr r0, =0x00000576 cmp r1, r0 bne _0816D72E ldr r2, =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] _0816D72E: ldr r1, [r5] movs r0, 0xC5 lsls r0, 3 cmp r1, r0 bne _0816D752 ldr r2, =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] _0816D752: ldr r1, [r5] ldr r0, =0x000006bf cmp r1, r0 bne _0816D774 ldr r2, =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] _0816D774: 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, =gUnknown_0203BCCC strh r0, [r1] ldrh r2, [r4, 0xE] movs r7, 0xE ldrsh r1, [r4, r7] ldr r0, =0x000001ff cmp r1, r0 bgt _0816D7A0 adds r0, r2, 0x1 strh r0, [r4, 0xE] _0816D7A0: movs r0, 0 bl sub_817B540 add sp, 0x4 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end task_intro_8 thumb_func_start task_intro_9 task_intro_9: @ 816D7E8 push {lr} lsls r0, 24 lsrs r2, r0, 24 ldr r0, =gUnknown_030062A0 ldr r1, [r0] ldr r0, =0x00000814 cmp r1, r0 bls _0816D806 ldr r0, =gTasks lsls r1, r2, 2 adds r1, r2 lsls r1, 3 adds r1, r0 ldr r0, =task_intro_10 str r0, [r1] _0816D806: pop {r0} bx r0 .pool thumb_func_end task_intro_9 thumb_func_start sub_816D81C sub_816D81C: @ 816D81C push {r4,lr} adds r4, r0, 0 ldrh r0, [r4, 0x34] adds r0, 0x4 strh r0, [r4, 0x34] movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0x8 bls _0816D830 b _0816D9BA _0816D830: lsls r0, 2 ldr r1, =_0816D840 adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _0816D840: .4byte _0816D864 .4byte _0816D87A .4byte _0816D898 .4byte _0816D8BC .4byte _0816D8D8 .4byte _0816D8FA .4byte _0816D912 .4byte _0816D96E .4byte _0816D99C _0816D864: ldrh r0, [r4, 0x30] adds r0, 0x1 strh r0, [r4, 0x30] lsls r0, 16 asrs r0, 16 cmp r0, 0xB3 bgt _0816D874 b _0816D9BA _0816D874: ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] _0816D87A: ldrh r0, [r4, 0x20] subs r0, 0x4 strh r0, [r4, 0x20] lsls r0, 16 asrs r0, 16 cmp r0, 0x3C beq _0816D88A b _0816D9BA _0816D88A: movs r0, 0x8 strh r0, [r4, 0x2E] movs r0, 0x14 strh r0, [r4, 0x30] movs r0, 0x2 strh r0, [r4, 0x32] b _0816D9BA _0816D898: ldrh r1, [r4, 0x20] adds r1, 0x8 strh r1, [r4, 0x20] ldrh r0, [r4, 0x22] subs r0, 0x2 strh r0, [r4, 0x22] lsls r1, 16 asrs r1, 16 cmp r1, 0x7C beq _0816D8AE b _0816D9BA _0816D8AE: movs r0, 0x8 strh r0, [r4, 0x2E] movs r0, 0x14 strh r0, [r4, 0x30] movs r0, 0x3 strh r0, [r4, 0x32] b _0816D9BA _0816D8BC: ldrh r0, [r4, 0x22] adds r0, 0x4 strh r0, [r4, 0x22] lsls r0, 16 asrs r0, 16 cmp r0, 0x50 bne _0816D9BA movs r0, 0x8 strh r0, [r4, 0x2E] movs r0, 0xA strh r0, [r4, 0x30] movs r0, 0x4 strh r0, [r4, 0x32] b _0816D9BA _0816D8D8: ldrh r1, [r4, 0x20] subs r1, 0x8 strh r1, [r4, 0x20] ldrh r0, [r4, 0x22] subs r0, 0x2 strh r0, [r4, 0x22] lsls r1, 16 asrs r1, 16 cmp r1, 0x3C bne _0816D9BA movs r0, 0x8 strh r0, [r4, 0x2E] movs r0, 0xA strh r0, [r4, 0x30] movs r0, 0x5 strh r0, [r4, 0x32] b _0816D9BA _0816D8FA: ldrh r0, [r4, 0x20] adds r0, 0x3C strh r0, [r4, 0x20] movs r0, 0xC0 strh r0, [r4, 0x36] movs r0, 0x80 strh r0, [r4, 0x38] movs r0, 0x3 strh r0, [r4, 0x3A] ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] _0816D912: ldrh r0, [r4, 0x36] lsls r0, 24 lsrs r0, 24 movs r1, 0x3C bl Sin strh r0, [r4, 0x24] ldrh r0, [r4, 0x38] lsls r0, 24 lsrs r0, 24 movs r1, 0x14 bl Sin strh r0, [r4, 0x26] ldrh r1, [r4, 0x36] adds r1, 0x2 strh r1, [r4, 0x36] ldrh r0, [r4, 0x38] adds r0, 0x4 strh r0, [r4, 0x38] movs r0, 0xFF ands r1, r0 cmp r1, 0x40 bne _0816D9BA adds r2, r4, 0 adds r2, 0x3F ldrb r0, [r2] movs r1, 0x2 negs r1, r1 ands r1, r0 strb r1, [r2] ldrh r0, [r4, 0x3A] subs r0, 0x1 strh r0, [r4, 0x3A] lsls r0, 16 asrs r1, r0, 16 cmp r1, 0 bne _0816D9BA ldrh r0, [r4, 0x24] ldrh r2, [r4, 0x20] adds r0, r2 strh r0, [r4, 0x20] strh r1, [r4, 0x24] ldrh r0, [r4, 0x2E] adds r0, 0x1 b _0816D9B8 _0816D96E: ldrh r0, [r4, 0x20] subs r0, 0x2 strh r0, [r4, 0x20] ldrh r0, [r4, 0x38] lsls r0, 24 lsrs r0, 24 movs r1, 0x14 bl Sin strh r0, [r4, 0x26] ldrh r0, [r4, 0x38] adds r0, 0x4 strh r0, [r4, 0x38] movs r0, 0x20 ldrsh r1, [r4, r0] movs r0, 0x10 negs r0, r0 cmp r1, r0 bge _0816D9BA adds r0, r4, 0 bl DestroySprite b _0816D9BA _0816D99C: ldrh r0, [r4, 0x34] lsls r0, 24 lsrs r0, 24 movs r1, 0x2 bl Cos strh r0, [r4, 0x26] ldrh r0, [r4, 0x30] subs r0, 0x1 strh r0, [r4, 0x30] lsls r0, 16 cmp r0, 0 bne _0816D9BA ldrh r0, [r4, 0x32] _0816D9B8: strh r0, [r4, 0x2E] _0816D9BA: pop {r4} pop {r0} bx r0 thumb_func_end sub_816D81C thumb_func_start sub_816D9C0 sub_816D9C0: @ 816D9C0 push {r4,lr} adds r4, r0, 0 movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0x5 bls _0816D9CE b _0816DADA _0816D9CE: lsls r0, 2 ldr r1, =_0816D9DC adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _0816D9DC: .4byte _0816D9F4 .4byte _0816DA08 .4byte _0816DA20 .4byte _0816DA64 .4byte _0816DA9A .4byte _0816DACA _0816D9F4: ldr r0, =gUnknown_030062A0 ldr r1, [r0] movs r0, 0x99 lsls r0, 3 cmp r1, r0 bne _0816DADA b _0816DABA .pool _0816DA08: ldr r0, =gUnknown_030062A0 ldr r1, [r0] movs r0, 0xC5 lsls r0, 3 cmp r1, r0 bne _0816DA70 adds r0, r4, 0 movs r1, 0 b _0816DABE .pool _0816DA20: ldr r0, =gUnknown_030062A0 ldr r1, [r0] ldr r0, =0x000006c7 cmp r1, r0 beq _0816DA50 ldrh r0, [r4, 0x30] adds r2, r0, 0 adds r2, 0x20 strh r2, [r4, 0x30] movs r1, 0x30 ldrsh r0, [r4, r1] movs r1, 0xFF lsls r1, 8 ands r0, r1 cmp r0, 0 beq _0816DADA ldrh r0, [r4, 0x20] adds r0, 0x1 b _0816DA8A .pool _0816DA50: adds r0, r4, 0 movs r1, 0x1 bl StartSpriteAnim ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] movs r0, 0x50 strh r0, [r4, 0x32] b _0816DADA _0816DA64: ldrh r0, [r4, 0x32] subs r0, 0x1 strh r0, [r4, 0x32] lsls r0, 16 cmp r0, 0 beq _0816DA94 _0816DA70: ldrh r0, [r4, 0x30] adds r2, r0, 0 adds r2, 0x40 strh r2, [r4, 0x30] movs r1, 0x30 ldrsh r0, [r4, r1] movs r1, 0xFF lsls r1, 8 ands r0, r1 cmp r0, 0 beq _0816DADA ldrh r0, [r4, 0x20] subs r0, 0x1 _0816DA8A: strh r0, [r4, 0x20] movs r0, 0xFF ands r2, r0 strh r2, [r4, 0x30] b _0816DADA _0816DA94: adds r0, r4, 0 movs r1, 0x2 b _0816DABE _0816DA9A: adds r0, r4, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _0816DAAE ldrh r0, [r4, 0x20] adds r0, 0x4 strh r0, [r4, 0x20] _0816DAAE: movs r0, 0x20 ldrsh r1, [r4, r0] movs r0, 0xA8 lsls r0, 1 cmp r1, r0 ble _0816DADA _0816DABA: adds r0, r4, 0 movs r1, 0x1 _0816DABE: bl StartSpriteAnim ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] b _0816DADA _0816DACA: ldr r0, =gUnknown_030062A0 ldr r1, [r0] ldr r0, =0x0000073f cmp r1, r0 bls _0816DADA ldrh r0, [r4, 0x20] subs r0, 0x2 strh r0, [r4, 0x20] _0816DADA: pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_816D9C0 thumb_func_start sub_816DAE8 sub_816DAE8: @ 816DAE8 push {r4,lr} adds r4, r0, 0 movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0x1 beq _0816DB1C cmp r0, 0x1 bgt _0816DAFE cmp r0, 0 beq _0816DB04 b _0816DBA4 _0816DAFE: cmp r0, 0x2 beq _0816DB42 b _0816DBA4 _0816DB04: ldr r0, =gUnknown_030062A0 ldr r1, [r0] movs r0, 0x88 lsls r0, 3 cmp r1, r0 bne _0816DBA4 ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] b _0816DBA4 .pool _0816DB1C: ldrh r0, [r4, 0x20] subs r0, 0x2 strh r0, [r4, 0x20] ldr r0, =gUnknown_030062A0 ldr r1, [r0] movs r0, 0x92 lsls r0, 3 cmp r1, r0 bne _0816DBA4 ldrh r0, [r4, 0x22] subs r0, 0xC strh r0, [r4, 0x22] movs r0, 0x80 strh r0, [r4, 0x30] movs r0, 0 strh r0, [r4, 0x32] ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] _0816DB42: movs r2, 0x20 ldrsh r0, [r4, r2] movs r2, 0x24 ldrsh r1, [r4, r2] adds r0, r1 movs r1, 0x20 negs r1, r1 cmp r0, r1 bgt _0816DB60 adds r0, r4, 0 bl DestroySprite b _0816DBA4 .pool _0816DB60: ldrh r0, [r4, 0x30] movs r1, 0xFF ands r1, r0 cmp r1, 0x3F bgt _0816DB72 lsls r0, 24 lsrs r0, 24 movs r1, 0x10 b _0816DB84 _0816DB72: cmp r1, 0x40 bne _0816DB7C ldrh r0, [r4, 0x20] subs r0, 0x30 strh r0, [r4, 0x20] _0816DB7C: ldrh r0, [r4, 0x30] lsls r0, 24 lsrs r0, 24 movs r1, 0x40 _0816DB84: bl Sin strh r0, [r4, 0x24] ldrh r0, [r4, 0x30] adds r0, 0x1 strh r0, [r4, 0x30] ldrh r0, [r4, 0x32] lsls r0, 24 lsrs r0, 24 movs r1, 0xC bl Cos strh r0, [r4, 0x26] ldrh r0, [r4, 0x32] adds r0, 0x1 strh r0, [r4, 0x32] _0816DBA4: pop {r4} pop {r0} bx r0 thumb_func_end sub_816DAE8 thumb_func_start task_intro_10 task_intro_10: @ 816DBAC 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, =gIntro3Pokeball_Gfx movs r1, 0xC0 lsls r1, 19 bl LZ77UnCompVram ldr r0, =gIntro3Pokeball_Tilemap ldr r1, =0x06004000 bl LZ77UnCompVram ldr r0, =gIntro3PokeballPal movs r2, 0x80 lsls r2, 2 movs r1, 0 bl LoadPalette ldr r0, =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_816F2A8 bl ResetSpriteData bl FreeAllSpritePalettes movs r0, 0x1 negs r0, r0 ldr r1, =0x0000ffff str r1, [sp] movs r1, 0 movs r2, 0x10 movs r3, 0 bl BeginNormalPaletteFade ldr r1, =0x00004883 movs r0, 0xC bl SetGpuReg ldr r1, =0x00001441 movs r0, 0 bl SetGpuReg ldr r0, =task_intro_11 str r0, [r4] ldr r0, =gUnknown_030062A0 str r5, [r0] movs r0, 0xDD lsls r0, 1 bl m4aSongNumStart add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end task_intro_10 thumb_func_start task_intro_11 task_intro_11: @ 816DC64 push {r4,r5,lr} sub sp, 0x4 lsls r0, 24 lsrs r5, r0, 24 ldr r2, =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, =0x000006bf cmp r1, r0 bgt _0816DCA4 ldrh r0, [r3, 0xC] adds r1, r4, r0 strh r1, [r3, 0xA] adds r0, 0x2 strh r0, [r3, 0xC] b _0816DCA8 .pool _0816DCA4: ldr r0, =task_intro_12 str r0, [r3] _0816DCA8: 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_816F2A8 ldr r0, =gUnknown_030062A0 ldr r0, [r0] cmp r0, 0x1C bne _0816DCE6 movs r0, 0x1 negs r0, r0 ldr r1, =0x0000ffff str r1, [sp] movs r1, 0 movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade _0816DCE6: add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end task_intro_11 thumb_func_start task_intro_12 task_intro_12: @ 816DCFC push {lr} lsls r0, 24 lsrs r2, r0, 24 ldr r0, =gUnknown_030062A0 ldr r0, [r0] cmp r0, 0x2B bls _0816DD18 ldr r0, =gTasks lsls r1, r2, 2 adds r1, r2 lsls r1, 3 adds r1, r0 ldr r0, =task_intro_13 str r0, [r1] _0816DD18: pop {r0} bx r0 .pool thumb_func_end task_intro_12 thumb_func_start task_intro_13 task_intro_13: @ 816DD28 push {r4,lr} lsls r0, 24 lsrs r4, r0, 24 ldr r0, =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _0816DD94 bl intro_reset_and_hide_bgs bl ResetSpriteData bl FreeAllSpritePalettes ldr r1, =gReservedSpritePaletteCount movs r0, 0x8 strb r0, [r1] ldr r0, =gIntro3GroudonGfx movs r1, 0xC0 lsls r1, 19 bl LZDecompressVram ldr r0, =gIntro3GroudonTilemap ldr r1, =0x0600c000 bl LZDecompressVram ldr r0, =gIntro3LegendBgGfx ldr r1, =0x06004000 bl LZDecompressVram ldr r0, =gIntro3GroudonBgTilemap ldr r1, =0x0600e000 bl LZDecompressVram ldr r0, =gBattleAnimPicTable + 0x1D0 bl LoadCompressedObjectPicUsingHeap ldr r0, =gBattleAnimPaletteTable + 0x1D0 bl LoadCompressedObjectPaletteUsingHeap ldr r0, =gIntro3BgPal ldr r1, =gPlttBufferUnfaded movs r2, 0x80 lsls r2, 1 bl CpuSet ldr r1, =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, =task_intro_14 str r1, [r0] _0816DD94: pop {r4} pop {r0} bx r0 .pool thumb_func_end task_intro_13 thumb_func_start task_intro_14 task_intro_14: @ 816DDD8 push {r4,r5,lr} sub sp, 0x4 adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 movs r0, 0x40 movs r1, 0xF0 bl SetGpuReg movs r0, 0x44 movs r1, 0xA0 bl SetGpuReg movs r0, 0x48 movs r1, 0x3F bl SetGpuReg movs r0, 0x4A movs r1, 0 bl SetGpuReg ldr r1, =0x0000b880 movs r0, 0xC bl SetGpuReg ldr r1, =0x00001c05 movs r0, 0xA bl SetGpuReg ldr r1, =0x00003641 movs r0, 0 bl SetGpuReg movs r0, 0x1 negs r0, r0 ldr r1, =0x0000ffff str r1, [sp] movs r1, 0 movs r2, 0x10 movs r3, 0 bl BeginNormalPaletteFade ldr r0, =gTasks lsls r4, r5, 2 adds r4, r5 lsls r4, 3 adds r4, r0 movs r0, 0 strh r0, [r4, 0x8] ldr r0, =0x0000ffa0 strh r0, [r4, 0xA] ldr r1, =0x0000ff51 strh r1, [r4, 0xC] movs r2, 0x80 lsls r2, 1 strh r2, [r4, 0xE] movs r3, 0 bl sub_816F2A8 ldr r0, =task_intro_15 str r0, [r4] add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end task_intro_14 thumb_func_start task_intro_15 task_intro_15: @ 816DE7C push {r4,lr} lsls r0, 24 lsrs r0, 24 ldr r2, =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r4, r1, r2 ldrh r2, [r4, 0x8] movs r1, 0x8 ldrsh r0, [r4, r1] cmp r0, 0x20 beq _0816DEB8 adds r0, r2, 0x4 strh r0, [r4, 0x8] movs r0, 0x8 ldrsh r1, [r4, r0] lsls r1, 8 adds r0, r2, 0 subs r0, 0x9C subs r1, r0 lsls r1, 16 lsrs r1, 16 movs r0, 0x44 bl SetGpuReg b _0816DEC6 .pool _0816DEB8: movs r1, 0x82 lsls r1, 6 movs r0, 0x44 bl SetGpuReg ldr r0, =task_intro_16 str r0, [r4] _0816DEC6: pop {r4} pop {r0} bx r0 .pool thumb_func_end task_intro_15 thumb_func_start task_intro_16 task_intro_16: @ 816DED0 lsls r0, 24 lsrs r0, 24 ldr r2, =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r2 ldr r0, =task_intro_17 str r0, [r1] bx lr .pool thumb_func_end task_intro_16 thumb_func_start task_intro_17 task_intro_17: @ 816DEEC push {lr} sub sp, 0xC lsls r0, 24 lsrs r0, 24 ldr r2, =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r2 movs r2, 0 strh r2, [r1, 0x8] ldr r0, =task_intro_18 str r0, [r1] movs r0, 0x1 str r0, [sp] movs r0, 0x4 str r0, [sp, 0x4] str r2, [sp, 0x8] movs r0, 0 movs r1, 0xA0 movs r2, 0x4 movs r3, 0x4 bl ScanlineEffect_InitWave add sp, 0xC pop {r0} bx r0 .pool thumb_func_end task_intro_17 thumb_func_start task_intro_18 task_intro_18: @ 816DF2C push {r4,r5,lr} sub sp, 0x4 lsls r0, 24 lsrs r5, r0, 24 lsls r0, r5, 2 adds r0, r5 lsls r0, 3 ldr r1, =gTasks + 0x8 adds r4, r0, r1 ldrh r0, [r4, 0xA] adds r0, 0x1 strh r0, [r4, 0xA] ldrh r0, [r4] subs r0, 0x1 lsls r0, 16 lsrs r0, 16 cmp r0, 0x6 bhi _0816DF62 ldrh r0, [r4, 0xA] movs r1, 0x1 ands r0, r1 cmp r0, 0 bne _0816DF62 ldrh r0, [r4, 0x8] movs r1, 0x3 eors r0, r1 strh r0, [r4, 0x8] _0816DF62: ldrh r0, [r4, 0x2] ldrh r1, [r4, 0x8] ldrh r2, [r4, 0x4] adds r1, r2 lsls r1, 16 lsrs r1, 16 ldrh r2, [r4, 0x6] movs r3, 0 bl sub_816F2A8 movs r1, 0 ldrsh r0, [r4, r1] cmp r0, 0x9 bls _0816DF80 b _0816E176 _0816DF80: lsls r0, 2 ldr r1, =_0816DF94 adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _0816DF94: .4byte _0816DFBC .4byte _0816DFE6 .4byte _0816E024 .4byte _0816E038 .4byte _0816E07C .4byte _0816E09A .4byte _0816E0C8 .4byte _0816E0DE .4byte _0816E13C .4byte _0816E156 _0816DFBC: ldrh r0, [r4, 0x2] adds r0, 0x10 strh r0, [r4, 0x2] lsls r0, 16 asrs r0, 16 cmp r0, 0xA0 beq _0816DFCC b _0816E176 _0816DFCC: ldrh r0, [r4] adds r0, 0x1 strh r0, [r4] movs r0, 0x2 strh r0, [r4, 0xC] movs r2, 0xF1 lsls r2, 1 adds r0, r2, 0 strh r0, [r4, 0xE] adds r0, r5, 0 bl sub_816E190 b _0816E176 _0816DFE6: ldrh r0, [r4, 0xC] subs r0, 0x1 strh r0, [r4, 0xC] lsls r0, 16 cmp r0, 0 beq _0816DFF4 b _0816E176 _0816DFF4: movs r0, 0x2 strh r0, [r4, 0xC] movs r1, 0xE ldrsh r0, [r4, r1] ldr r1, =gIntro3BgPal adds r0, r1 ldr r1, =gPlttBufferFaded + 0x3E movs r2, 0x1 bl CpuSet ldrh r0, [r4, 0xE] adds r0, 0x2 strh r0, [r4, 0xE] lsls r0, 16 movs r1, 0xF6 lsls r1, 17 cmp r0, r1 beq _0816E01A b _0816E176 _0816E01A: b _0816E14E .pool _0816E024: ldrh r0, [r4, 0xC] subs r0, 0x1 strh r0, [r4, 0xC] lsls r0, 16 cmp r0, 0 beq _0816E032 b _0816E176 _0816E032: movs r0, 0x2 strh r0, [r4, 0xC] b _0816E14E _0816E038: ldrh r0, [r4, 0xC] subs r0, 0x1 strh r0, [r4, 0xC] lsls r0, 16 cmp r0, 0 beq _0816E046 b _0816E176 _0816E046: movs r0, 0x2 strh r0, [r4, 0xC] movs r2, 0xE ldrsh r0, [r4, r2] ldr r1, =gIntro3BgPal adds r0, r1 ldr r1, =gPlttBufferFaded + 0x3E movs r2, 0x1 bl CpuSet ldrh r0, [r4, 0xE] subs r0, 0x2 strh r0, [r4, 0xE] lsls r0, 16 movs r1, 0xF0 lsls r1, 17 cmp r0, r1 beq _0816E06C b _0816E176 _0816E06C: movs r0, 0x8 strh r0, [r4, 0xC] b _0816E14E .pool _0816E07C: ldrh r0, [r4, 0xC] subs r0, 0x1 strh r0, [r4, 0xC] lsls r0, 16 cmp r0, 0 bne _0816E176 movs r1, 0x60 negs r1, r1 adds r0, r1, 0 strh r0, [r4, 0x2] movs r0, 0xA9 strh r0, [r4, 0x4] movs r0, 0x3 strh r0, [r4, 0xC] b _0816E14E _0816E09A: ldrh r0, [r4, 0xC] subs r0, 0x1 strh r0, [r4, 0xC] lsls r0, 16 asrs r1, r0, 16 cmp r1, 0 bne _0816E176 movs r0, 0x50 strh r0, [r4, 0x2] movs r0, 0x29 strh r0, [r4, 0x4] movs r0, 0x10 strh r0, [r4, 0xC] ldr r0, =0x00000195 str r1, [sp] movs r1, 0 movs r2, 0x64 movs r3, 0xA bl PlayCryInternal b _0816E14E .pool _0816E0C8: ldrh r0, [r4, 0xC] subs r0, 0x1 strh r0, [r4, 0xC] lsls r0, 16 cmp r0, 0 bne _0816E176 movs r0, 0x50 strh r0, [r4, 0x2] movs r0, 0x28 strh r0, [r4, 0x4] b _0816E14E _0816E0DE: ldrh r0, [r4, 0x2] adds r0, 0x4 strh r0, [r4, 0x2] ldrh r0, [r4, 0x4] adds r0, 0x4 strh r0, [r4, 0x4] ldr r2, =0x00000666 adds r0, r2, 0 ldrh r1, [r4, 0xC] adds r0, r1 strh r0, [r4, 0xC] movs r2, 0xC ldrsh r0, [r4, r2] movs r1, 0xFF lsls r1, 8 ands r0, r1 lsrs r0, 8 movs r1, 0x40 bl Sin movs r1, 0x80 lsls r1, 1 adds r5, r1, 0 adds r0, r5 strh r0, [r4, 0x6] movs r2, 0x2 ldrsh r0, [r4, r2] cmp r0, 0x78 bne _0816E176 movs r0, 0x2 negs r0, r0 ldr r1, =0x00007fff str r1, [sp] movs r1, 0x3 movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade strh r5, [r4, 0x6] movs r0, 0 strh r0, [r4, 0x8] b _0816E14E .pool _0816E13C: ldrh r1, [r4, 0x6] movs r2, 0x6 ldrsh r0, [r4, r2] cmp r0, 0 beq _0816E14E adds r0, r1, 0 subs r0, 0x8 strh r0, [r4, 0x6] b _0816E176 _0816E14E: ldrh r0, [r4] adds r0, 0x1 strh r0, [r4] b _0816E176 _0816E156: ldr r0, =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _0816E176 ldr r1, =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r0, r1 ldr r1, =task_intro_19 str r1, [r0] ldr r1, =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] _0816E176: add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end task_intro_18 thumb_func_start sub_816E190 sub_816E190: @ 816E190 push {r4-r7,lr} lsls r0, 24 lsrs r7, r0, 24 movs r4, 0 ldr r6, =gSprites ldr r5, =gUnknown_085E4C64 _0816E19C: movs r0, 0 ldrsh r1, [r5, r0] lsls r3, r4, 24 lsrs r3, 24 ldr r0, =gUnknown_08596C10 movs r2, 0xA0 bl CreateSprite lsls r0, 24 lsrs r0, 24 lsls r2, r0, 4 adds r2, r0 lsls r2, 2 adds r0, r6, 0 adds r0, 0x1C adds r0, r2, r0 ldr r1, =sub_816E1F8 str r1, [r0] adds r2, r6 ldrb r0, [r2, 0x5] movs r3, 0xD negs r3, r3 adds r1, r3, 0 ands r0, r1 strb r0, [r2, 0x5] strh r4, [r2, 0x30] strh r7, [r2, 0x36] ldrb r1, [r5, 0x2] adds r0, r2, 0 bl StartSpriteAnim adds r5, 0x6 adds r4, 0x1 cmp r4, 0x5 ble _0816E19C pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_816E190 thumb_func_start sub_816E1F8 sub_816E1F8: @ 816E1F8 push {lr} adds r3, r0, 0 ldrh r0, [r3, 0x34] adds r0, 0x1 strh r0, [r3, 0x34] ldrh r0, [r3, 0x34] movs r1, 0x1 ands r0, r1 cmp r0, 0 bne _0816E214 ldrh r0, [r3, 0x26] movs r1, 0x3 eors r0, r1 strh r0, [r3, 0x26] _0816E214: movs r1, 0x2E ldrsh r0, [r3, r1] cmp r0, 0 beq _0816E222 cmp r0, 0x1 beq _0816E278 b _0816E29C _0816E222: ldr r2, =gUnknown_085E4C64 movs r0, 0x30 ldrsh r1, [r3, r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 1 adds r2, 0x4 adds r0, r2 ldrh r2, [r0] ldrh r1, [r3, 0x32] adds r2, r1 strh r2, [r3, 0x32] movs r0, 0x32 ldrsh r1, [r3, r0] movs r0, 0xFF lsls r0, 8 ands r1, r0 asrs r1, 8 ldrh r0, [r3, 0x22] subs r0, r1 strh r0, [r3, 0x22] movs r0, 0xFF ands r2, r0 strh r2, [r3, 0x32] ldr r2, =gTasks movs r0, 0x36 ldrsh r1, [r3, r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r2 movs r1, 0x8 ldrsh r0, [r0, r1] cmp r0, 0x7 ble _0816E29C ldrh r0, [r3, 0x2E] adds r0, 0x1 strh r0, [r3, 0x2E] b _0816E29C .pool _0816E278: ldrh r1, [r3, 0x20] movs r2, 0x20 ldrsh r0, [r3, r2] cmp r0, 0x77 bgt _0816E286 subs r0, r1, 0x2 b _0816E288 _0816E286: adds r0, r1, 0x2 _0816E288: strh r0, [r3, 0x20] ldrh r1, [r3, 0x22] movs r2, 0x22 ldrsh r0, [r3, r2] cmp r0, 0x4F bgt _0816E298 subs r0, r1, 0x2 b _0816E29A _0816E298: adds r0, r1, 0x2 _0816E29A: strh r0, [r3, 0x22] _0816E29C: pop {r0} bx r0 thumb_func_end sub_816E1F8 thumb_func_start task_intro_19 task_intro_19: @ 816E2A0 push {r4,lr} sub sp, 0xC adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 bl ResetSpriteData ldr r0, =gIntro3KyogreGfx movs r1, 0xC0 lsls r1, 19 bl LZDecompressVram ldr r0, =gIntro3KyogreTilemap ldr r1, =0x0600c000 bl LZDecompressVram ldr r0, =gIntro3KyogreBgTilemap ldr r1, =0x0600e000 bl LZDecompressVram ldr r0, =gUnknown_085E4C88 bl LoadCompressedObjectPic ldr r0, =gUnknown_085E4C98 bl LoadSpritePalette movs r0, 0x2 negs r0, r0 ldr r1, =0x0000ffff str r1, [sp] movs r1, 0 movs r2, 0x10 movs r3, 0 bl BeginNormalPaletteFade ldr r0, =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 ldr r0, =task_intro_20 str r0, [r1] movs r4, 0 strh r4, [r1, 0x8] movs r0, 0xA8 lsls r0, 1 strh r0, [r1, 0xA] movs r2, 0x50 strh r2, [r1, 0xC] movs r2, 0x10 strh r2, [r1, 0x14] adds r2, 0xF0 strh r2, [r1, 0xE] movs r1, 0x50 movs r3, 0 bl sub_816F2A8 movs r0, 0x1 str r0, [sp] movs r0, 0x6 str r0, [sp, 0x4] str r4, [sp, 0x8] movs r0, 0 movs r1, 0xA0 movs r2, 0x4 movs r3, 0x4 bl ScanlineEffect_InitWave add sp, 0xC pop {r4} pop {r0} bx r0 .pool thumb_func_end task_intro_19 thumb_func_start task_intro_20 task_intro_20: @ 816E358 push {r4-r6,lr} sub sp, 0x4 lsls r0, 24 lsrs r6, r0, 24 lsls r0, r6, 2 adds r0, r6 lsls r0, 3 ldr r1, =gTasks + 0x8 adds r5, r0, r1 ldrh r0, [r5, 0x2] ldrh r1, [r5, 0x4] ldrh r2, [r5, 0x6] movs r3, 0 bl sub_816F2A8 movs r1, 0 ldrsh r0, [r5, r1] cmp r0, 0xD bls _0816E380 b _0816E6BC _0816E380: lsls r0, 2 ldr r1, =_0816E394 adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _0816E394: .4byte _0816E3CC .4byte _0816E3E0 .4byte _0816E43C .4byte _0816E488 .4byte _0816E4C4 .4byte _0816E4EC .4byte _0816E544 .4byte _0816E560 .4byte _0816E5A0 .4byte _0816E5BC .4byte _0816E5FC .4byte _0816E61A .4byte _0816E664 .4byte _0816E69C _0816E3CC: ldrh r0, [r5, 0xC] subs r0, 0x1 strh r0, [r5, 0xC] lsls r0, 16 cmp r0, 0 beq _0816E3DA b _0816E6BC _0816E3DA: ldrh r0, [r5] adds r0, 0x1 strh r0, [r5] _0816E3E0: ldrh r0, [r5, 0xC] adds r0, 0x4 strh r0, [r5, 0xC] movs r2, 0xC ldrsh r0, [r5, r2] movs r1, 0x80 lsls r1, 1 bl Sin ldr r1, =gTasks lsls r4, r6, 2 adds r4, r6 lsls r4, 3 adds r4, r1 movs r2, 0xAC lsls r2, 1 adds r1, r2, 0 subs r1, r0 strh r1, [r4, 0xA] movs r1, 0xC ldrsh r0, [r5, r1] movs r1, 0x40 bl Cos movs r1, 0x54 subs r1, r0 strh r1, [r4, 0xC] movs r2, 0xC ldrsh r0, [r5, r2] cmp r0, 0x40 beq _0816E420 b _0816E6BC _0816E420: movs r0, 0x19 strh r0, [r5, 0xC] movs r0, 0x1 strh r0, [r5, 0xE] ldrh r0, [r5] adds r0, 0x1 strh r0, [r5] movs r0, 0 bl sub_816E6D4 b _0816E6BC .pool _0816E43C: ldrh r0, [r5, 0xC] subs r0, 0x1 strh r0, [r5, 0xC] lsls r0, 16 cmp r0, 0 beq _0816E44A b _0816E6BC _0816E44A: ldr r0, =gTasks lsls r1, r6, 2 adds r1, r6 lsls r1, 3 adds r1, r0 movs r2, 0x80 lsls r2, 1 adds r0, r2, 0 ldrh r2, [r1, 0xA] adds r0, r2 strh r0, [r1, 0xA] ldr r2, =0xfffffefe adds r0, r2, 0 ldrh r2, [r1, 0xC] adds r0, r2 strh r0, [r1, 0xC] movs r0, 0x8 strh r0, [r5, 0xC] ldrh r0, [r5] adds r0, 0x1 strh r0, [r5] movs r0, 0 bl sub_816E6D4 bl sub_816E74C b _0816E6BC .pool _0816E488: ldrh r0, [r5, 0xC] subs r0, 0x1 strh r0, [r5, 0xC] lsls r0, 16 cmp r0, 0 beq _0816E496 b _0816E6BC _0816E496: ldr r0, =gTasks lsls r1, r6, 2 adds r1, r6 lsls r1, 3 adds r1, r0 ldr r2, =0xffffff00 adds r0, r2, 0 ldrh r2, [r1, 0xA] adds r0, r2 strh r0, [r1, 0xA] movs r2, 0x81 lsls r2, 1 adds r0, r2, 0 ldrh r2, [r1, 0xC] adds r0, r2 strh r0, [r1, 0xC] movs r0, 0x8 strh r0, [r5, 0xC] b _0816E690 .pool _0816E4C4: ldrh r0, [r5, 0xC] subs r0, 0x1 strh r0, [r5, 0xC] lsls r0, 16 cmp r0, 0 beq _0816E4D2 b _0816E6BC _0816E4D2: ldr r1, =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r0, r1 ldrh r1, [r0, 0xC] subs r1, 0xFC strh r1, [r0, 0xC] movs r0, 0x8 strh r0, [r5, 0xC] b _0816E690 .pool _0816E4EC: ldrh r0, [r5, 0xC] subs r0, 0x1 strh r0, [r5, 0xC] lsls r0, 16 cmp r0, 0 beq _0816E4FA b _0816E6BC _0816E4FA: ldr r0, =gTasks lsls r1, r6, 2 adds r1, r6 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0xC] adds r0, 0xFC strh r0, [r1, 0xC] ldrh r2, [r5, 0xE] movs r0, 0xE ldrsh r1, [r5, r0] cmp r1, 0 beq _0816E528 movs r0, 0xC strh r0, [r5, 0xC] subs r0, r2, 0x1 strh r0, [r5, 0xE] movs r0, 0x2 strh r0, [r5] b _0816E6BC .pool _0816E528: movs r0, 0x1 strh r0, [r5, 0xC] ldrh r0, [r5] adds r0, 0x1 strh r0, [r5] movs r0, 0xCA lsls r0, 1 str r1, [sp] movs r1, 0 movs r2, 0x78 movs r3, 0xA bl PlayCryInternal b _0816E6BC _0816E544: ldrh r0, [r5, 0xC] subs r0, 0x1 strh r0, [r5, 0xC] lsls r0, 16 cmp r0, 0 beq _0816E552 b _0816E6BC _0816E552: movs r0, 0x4 strh r0, [r5, 0xC] movs r1, 0xF5 lsls r1, 1 adds r0, r1, 0 strh r0, [r5, 0xE] b _0816E690 _0816E560: ldrh r0, [r5, 0xC] subs r0, 0x1 strh r0, [r5, 0xC] lsls r0, 16 cmp r0, 0 beq _0816E56E b _0816E6BC _0816E56E: movs r0, 0x4 strh r0, [r5, 0xC] movs r2, 0xE ldrsh r0, [r5, r2] ldr r1, =gIntro3BgPal adds r0, r1 ldr r1, =gPlttBufferFaded + 0x5E movs r2, 0x1 bl CpuSet ldrh r0, [r5, 0xE] subs r0, 0x2 strh r0, [r5, 0xE] lsls r0, 16 movs r1, 0xF0 lsls r1, 17 cmp r0, r1 beq _0816E594 b _0816E6BC _0816E594: b _0816E690 .pool _0816E5A0: ldrh r0, [r5, 0xC] subs r0, 0x1 strh r0, [r5, 0xC] lsls r0, 16 cmp r0, 0 beq _0816E5AE b _0816E6BC _0816E5AE: movs r0, 0x4 strh r0, [r5, 0xC] movs r1, 0xF1 lsls r1, 1 adds r0, r1, 0 strh r0, [r5, 0xE] b _0816E690 _0816E5BC: ldrh r0, [r5, 0xC] subs r0, 0x1 strh r0, [r5, 0xC] lsls r0, 16 cmp r0, 0 bne _0816E6BC movs r0, 0x4 strh r0, [r5, 0xC] movs r2, 0xE ldrsh r0, [r5, r2] ldr r1, =gIntro3BgPal adds r0, r1 ldr r1, =gPlttBufferFaded + 0x5E movs r2, 0x1 bl CpuSet ldrh r0, [r5, 0xE] adds r0, 0x2 strh r0, [r5, 0xE] lsls r0, 16 movs r1, 0xF7 lsls r1, 17 cmp r0, r1 bne _0816E6BC movs r0, 0x10 strh r0, [r5, 0xC] b _0816E690 .pool _0816E5FC: ldrh r0, [r5, 0xC] subs r0, 0x1 strh r0, [r5, 0xC] lsls r0, 16 asrs r0, 16 cmp r0, 0 bne _0816E6BC strh r0, [r5, 0xC] ldrh r0, [r5] adds r0, 0x1 strh r0, [r5] adds r0, r6, 0 bl sub_816E6D4 b _0816E6BC _0816E61A: ldrh r0, [r5, 0xC] adds r0, 0x4 strh r0, [r5, 0xC] ldrh r0, [r5, 0x6] subs r0, 0x8 strh r0, [r5, 0x6] movs r1, 0xC ldrsh r0, [r5, r1] movs r1, 0x3C bl Sin ldr r2, =gTasks lsls r1, r6, 2 adds r1, r6 lsls r1, 3 adds r1, r2 adds r0, 0x58 strh r0, [r1, 0xA] movs r2, 0xC ldrsh r0, [r5, r2] cmp r0, 0x40 bne _0816E6BC movs r0, 0x2 negs r0, r0 ldr r1, =0x00007fff str r1, [sp] movs r1, 0x3 movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade b _0816E690 .pool _0816E664: ldrh r0, [r5, 0xC] adds r0, 0x4 strh r0, [r5, 0xC] ldrh r0, [r5, 0x6] subs r0, 0x8 strh r0, [r5, 0x6] movs r1, 0xC ldrsh r0, [r5, r1] movs r1, 0x14 bl Sin ldr r2, =gTasks lsls r1, r6, 2 adds r1, r6 lsls r1, 3 adds r1, r2 adds r0, 0x80 strh r0, [r1, 0xA] movs r2, 0xC ldrsh r0, [r5, r2] cmp r0, 0x80 bne _0816E6BC _0816E690: ldrh r0, [r5] adds r0, 0x1 strh r0, [r5] b _0816E6BC .pool _0816E69C: ldr r0, =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _0816E6BC ldr r1, =gTasks lsls r0, r6, 2 adds r0, r6 lsls r0, 3 adds r0, r1 ldr r1, =task_intro_21 str r1, [r0] ldr r1, =gScanlineEffect movs r0, 0x3 strb r0, [r1, 0x15] _0816E6BC: add sp, 0x4 pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end task_intro_20 thumb_func_start sub_816E6D4 sub_816E6D4: @ 816E6D4 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} lsls r0, 24 lsrs r0, 24 mov r8, r0 movs r5, 0 ldr r7, =gUnknown_085E4CA8 ldr r0, =gSprites mov r9, r0 adds r4, r7, 0 movs r6, 0 _0816E6EE: movs r3, 0 ldrsh r1, [r4, r3] adds r0, r7, 0x2 adds r0, r6, r0 movs r3, 0 ldrsh r2, [r0, r3] lsls r3, r5, 24 lsrs r3, 24 ldr r0, =gUnknown_085E4D14 bl CreateSprite lsls r0, 24 lsrs r0, 24 lsls r2, r0, 4 adds r2, r0 lsls r2, 2 add r2, r9 adds r3, r2, 0 adds r3, 0x3E ldrb r0, [r3] movs r1, 0x4 orrs r0, r1 strb r0, [r3] mov r0, r8 strh r0, [r2, 0x38] ldrh r0, [r4, 0x4] strh r0, [r2, 0x3A] movs r0, 0x40 strh r0, [r2, 0x3C] adds r4, 0x6 adds r6, 0x6 adds r5, 0x1 cmp r5, 0x5 ble _0816E6EE pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_816E6D4 thumb_func_start sub_816E74C sub_816E74C: @ 816E74C push {r4-r7,lr} mov r7, r8 push {r7} movs r5, 0 ldr r7, =gUnknown_085E4CA8 adds r4, r7, 0x4 movs r6, 0x24 ldr r0, =gSprites mov r8, r0 _0816E75E: movs r3, 0x20 ldrsh r1, [r4, r3] adds r0, r7, 0x2 adds r0, r6, r0 movs r3, 0 ldrsh r2, [r0, r3] lsls r3, r5, 24 lsrs r3, 24 ldr r0, =gUnknown_085E4D14 bl CreateSprite lsls r0, 24 lsrs r0, 24 lsls r2, r0, 4 adds r2, r0 lsls r2, 2 add r2, r8 adds r3, r2, 0 adds r3, 0x3E ldrb r0, [r3] movs r1, 0x4 orrs r0, r1 strb r0, [r3] ldrh r0, [r4] strh r0, [r2, 0x3A] movs r0, 0x40 strh r0, [r2, 0x3C] adds r4, 0x6 adds r6, 0x6 adds r5, 0x1 cmp r5, 0x5 ble _0816E75E pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_816E74C thumb_func_start sub_816E7B4 sub_816E7B4: @ 816E7B4 push {r4,lr} adds r4, r0, 0 movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0 beq _0816E7C6 cmp r0, 0x1 beq _0816E84C b _0816E882 _0816E7C6: ldrh r1, [r4, 0x3A] movs r2, 0x3A ldrsh r0, [r4, r2] cmp r0, 0 bne _0816E80A ldrh r0, [r4, 0x30] adds r0, 0xB movs r1, 0xFF ands r0, r1 strh r0, [r4, 0x30] movs r1, 0x30 ldrsh r0, [r4, r1] movs r1, 0x4 bl Sin strh r0, [r4, 0x24] ldrh r0, [r4, 0x32] adds r0, 0x30 strh r0, [r4, 0x32] lsls r0, 16 asrs r0, 24 negs r0, r0 strh r0, [r4, 0x26] adds r0, r4, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _0816E82A adds r0, r4, 0 bl DestroySprite b _0816E82A _0816E80A: subs r0, r1, 0x1 strh r0, [r4, 0x3A] lsls r0, 16 cmp r0, 0 bne _0816E82A adds r0, r4, 0 movs r1, 0 bl StartSpriteAnim adds r2, r4, 0 adds r2, 0x3E ldrb r1, [r2] movs r0, 0x5 negs r0, r0 ands r0, r1 strb r0, [r2] _0816E82A: ldr r2, =gTasks movs r0, 0x38 ldrsh r1, [r4, r0] lsls r0, r1, 2 adds r0, r1 lsls r0, 3 adds r0, r2 movs r1, 0x8 ldrsh r0, [r0, r1] cmp r0, 0xB ble _0816E882 ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] b _0816E882 .pool _0816E84C: ldrh r1, [r4, 0x20] movs r2, 0x20 ldrsh r0, [r4, r2] cmp r0, 0x77 bgt _0816E85A subs r0, r1, 0x3 b _0816E85C _0816E85A: adds r0, r1, 0x3 _0816E85C: strh r0, [r4, 0x20] ldrh r1, [r4, 0x22] movs r2, 0x22 ldrsh r0, [r4, r2] cmp r0, 0x4F bgt _0816E86C subs r0, r1, 0x3 b _0816E86E _0816E86C: adds r0, r1, 0x3 _0816E86E: strh r0, [r4, 0x22] ldrh r0, [r4, 0x22] subs r0, 0x14 lsls r0, 16 lsrs r0, 16 cmp r0, 0x8C bls _0816E882 adds r0, r4, 0 bl DestroySprite _0816E882: pop {r4} pop {r0} bx r0 thumb_func_end sub_816E7B4 thumb_func_start task_intro_21 task_intro_21: @ 816E888 push {r4,r5,lr} adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 movs r0, 0x50 movs r1, 0x87 bl SetGpuReg ldr r1, =0x00001f1f movs r0, 0x52 bl SetGpuReg movs r0, 0x54 movs r1, 0x1F bl SetGpuReg movs r1, 0xB0 lsls r1, 7 movs r0, 0x8 bl SetGpuReg ldr r1, =0x00005a04 movs r0, 0xA bl SetGpuReg ldr r1, =0x00001c06 movs r0, 0xC bl SetGpuReg movs r1, 0xDD lsls r1, 6 movs r0, 0 bl SetGpuReg movs r0, 0x10 movs r1, 0x50 bl SetGpuReg movs r0, 0x12 movs r1, 0 bl SetGpuReg ldr r1, =0x0000ffb0 movs r0, 0x14 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 ldr r4, =gIntro3CloudsGfx movs r1, 0xC0 lsls r1, 19 adds r0, r4, 0 bl LZDecompressVram ldr r1, =0x06004000 adds r0, r4, 0 bl LZDecompressVram ldr r0, =gIntro3Clouds3Tilemap ldr r1, =0x0600e000 bl LZDecompressVram ldr r1, =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r0, r1 ldr r1, =task_intro_22 str r1, [r0] pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end task_intro_21 thumb_func_start task_intro_22 task_intro_22: @ 816E954 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r0, =gIntro3Clouds1Tilemap ldr r1, =0x0600c000 bl LZDecompressVram ldr r0, =gIntro3Clouds2Tilemap ldr r1, =0x0600d000 bl LZDecompressVram ldr r1, =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, =task_intro_23 str r1, [r0] pop {r4} pop {r0} bx r0 .pool thumb_func_end task_intro_22 thumb_func_start task_intro_23 task_intro_23: @ 816E998 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 movs r0, 0x50 movs r1, 0 bl SetGpuReg movs r0, 0x52 movs r1, 0 bl SetGpuReg movs r0, 0x54 movs r1, 0 bl SetGpuReg ldr r1, =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, =task_intro_24 str r1, [r0] movs r1, 0 strh r1, [r0, 0x8] movs r1, 0x10 strh r1, [r0, 0x14] pop {r4} pop {r0} bx r0 .pool thumb_func_end task_intro_23 thumb_func_start task_intro_24 task_intro_24: @ 816E9DC push {r4-r6,lr} sub sp, 0x4 lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 adds r1, r0 lsls r5, r1, 3 ldr r6, =gTasks + 0x8 adds r4, r5, r6 ldrh r1, [r4, 0xC] lsls r1, 16 asrs r1, 24 lsls r1, 16 lsrs r1, 16 movs r0, 0x10 bl SetGpuReg ldrh r1, [r4, 0xC] lsls r1, 16 asrs r1, 24 negs r1, r1 lsls r1, 16 lsrs r1, 16 movs r0, 0x14 bl SetGpuReg movs r1, 0 ldrsh r0, [r4, r1] cmp r0, 0 beq _0816EA24 cmp r0, 0x1 beq _0816EA58 b _0816EAA6 .pool _0816EA24: ldrh r0, [r4, 0xC] subs r0, 0x1 strh r0, [r4, 0xC] lsls r0, 16 cmp r0, 0 bne _0816EAA6 movs r0, 0x2 negs r0, r0 ldr r1, =0x0000ffff str r1, [sp] movs r1, 0 movs r2, 0x10 movs r3, 0 bl BeginNormalPaletteFade movs r2, 0xA0 lsls r2, 7 adds r0, r2, 0 strh r0, [r4, 0xC] ldrh r0, [r4] adds r0, 0x1 strh r0, [r4] b _0816EAA6 .pool _0816EA58: movs r0, 0xC ldrsh r1, [r4, r0] movs r0, 0xA0 lsls r0, 6 cmp r1, r0 bne _0816EA74 ldr r0, =0x0000fffe ldr r1, =0x00002949 str r1, [sp] movs r1, 0x3 movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade _0816EA74: ldrh r1, [r4, 0xC] movs r2, 0xC ldrsh r0, [r4, r2] cmp r0, 0 beq _0816EA90 adds r0, r1, 0 subs r0, 0x80 strh r0, [r4, 0xC] b _0816EAA6 .pool _0816EA90: ldr r0, =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _0816EAA6 adds r0, r6, 0 subs r0, 0x8 adds r0, r5, r0 ldr r1, =task_intro_25 str r1, [r0] _0816EAA6: add sp, 0x4 pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end task_intro_24 thumb_func_start task_intro_25 task_intro_25: @ 816EAB8 push {r4,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 ldr r0, =gIntro3RayquazaTilemap ldr r1, =0x0600e000 bl LZDecompressVram ldr r0, =gIntro3Clouds4Tilemap ldr r1, =0x0600c000 bl LZDecompressVram ldr r0, =gIntro3RayquazaGfx ldr r1, =0x06004000 bl LZDecompressVram ldr r0, =gIntro3Clouds2Gfx movs r1, 0xC0 lsls r1, 19 bl LZDecompressVram movs r1, 0xD5 lsls r1, 6 movs r0, 0 bl SetGpuReg ldr r1, =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, =task_intro_26 str r1, [r0] movs r2, 0 strh r2, [r0, 0x8] movs r1, 0x1 strh r1, [r0, 0x14] strh r2, [r0, 0x16] ldr r0, =gUnknown_085E4BF4 bl LoadCompressedObjectPicUsingHeap ldr r0, =gUnknown_085E4C04 bl LoadSpritePalettes pop {r4} pop {r0} bx r0 .pool thumb_func_end task_intro_25 thumb_func_start task_intro_26 task_intro_26: @ 816EB44 push {r4-r6,lr} lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 adds r1, r0 lsls r1, 3 ldr r2, =gTasks + 0x8 adds r6, r1, r2 movs r3, 0 ldrsh r0, [r6, r3] cmp r0, 0x1 beq _0816EBE0 cmp r0, 0x1 bgt _0816EB6C cmp r0, 0 beq _0816EB72 b _0816EC62 .pool _0816EB6C: cmp r0, 0x2 beq _0816EC4C b _0816EC62 _0816EB72: ldrh r0, [r6, 0xC] subs r0, 0x1 strh r0, [r6, 0xC] lsls r0, 16 cmp r0, 0 bne _0816EC62 ldr r4, =gUnknown_085E4C4C adds r0, r4, 0 movs r1, 0xC8 movs r2, 0x30 movs r3, 0 bl CreateSprite adds r0, r4, 0 movs r1, 0xC8 movs r2, 0x50 movs r3, 0x1 bl CreateSprite lsls r0, 24 lsrs r1, r0, 24 lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r5, =gSprites adds r0, r5 movs r1, 0x1 bl StartSpriteAnim adds r0, r4, 0 movs r1, 0xC8 movs r2, 0x70 movs r3, 0x2 bl CreateSprite lsls r0, 24 lsrs r1, r0, 24 lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 movs r1, 0x2 bl StartSpriteAnim ldrh r0, [r6] adds r0, 0x1 strh r0, [r6] movs r0, 0x48 strh r0, [r6, 0xC] b _0816EC62 .pool _0816EBE0: ldrh r0, [r6, 0xC] subs r0, 0x1 strh r0, [r6, 0xC] lsls r0, 16 cmp r0, 0 bne _0816EC62 ldr r4, =gUnknown_085E4C4C adds r0, r4, 0 movs r1, 0x28 movs r2, 0x30 movs r3, 0 bl CreateSprite adds r0, r4, 0 movs r1, 0x28 movs r2, 0x50 movs r3, 0x1 bl CreateSprite lsls r0, 24 lsrs r1, r0, 24 lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r5, =gSprites adds r0, r5 movs r1, 0x1 bl StartSpriteAnim adds r0, r4, 0 movs r1, 0x28 movs r2, 0x70 movs r3, 0x2 bl CreateSprite lsls r0, 24 lsrs r1, r0, 24 lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r5 movs r1, 0x2 bl StartSpriteAnim ldrh r0, [r6] adds r0, 0x1 strh r0, [r6] movs r0, 0x30 strh r0, [r6, 0xC] b _0816EC62 .pool _0816EC4C: ldrh r0, [r6, 0xC] subs r0, 0x1 strh r0, [r6, 0xC] lsls r0, 16 cmp r0, 0 bne _0816EC62 adds r0, r2, 0 subs r0, 0x8 adds r0, r1, r0 ldr r1, =task_intro_27 str r1, [r0] _0816EC62: pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end task_intro_26 thumb_func_start sub_816EC6C sub_816EC6C: @ 816EC6C push {r4,lr} adds r4, r0, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x10 ands r0, r1 cmp r0, 0 beq _0816EC88 adds r2, r4, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] _0816EC88: movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0x1 beq _0816ECAC cmp r0, 0x1 bgt _0816EC9A cmp r0, 0 beq _0816ECA0 b _0816ED12 _0816EC9A: cmp r0, 0x2 beq _0816ECDC b _0816ED12 _0816ECA0: movs r0, 0xE1 lsls r0, 1 strh r0, [r4, 0x30] ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] _0816ECAC: movs r1, 0x30 ldrsh r0, [r4, r1] ldr r1, =gIntro3BgPal adds r0, r1 ldr r1, =gPlttBufferFaded + 0xBA movs r2, 0x1 bl CpuSet ldrh r0, [r4, 0x30] adds r0, 0x2 strh r0, [r4, 0x30] lsls r0, 16 movs r1, 0xE7 lsls r1, 17 cmp r0, r1 bne _0816ED12 movs r0, 0xE6 lsls r0, 1 strh r0, [r4, 0x30] movs r0, 0x4 strh r0, [r4, 0x32] ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] _0816ECDC: ldrh r0, [r4, 0x32] subs r0, 0x1 strh r0, [r4, 0x32] lsls r0, 16 cmp r0, 0 bne _0816ED12 movs r0, 0x4 strh r0, [r4, 0x32] movs r1, 0x30 ldrsh r0, [r4, r1] ldr r1, =gIntro3BgPal adds r0, r1 ldr r1, =gPlttBufferFaded + 0xBA movs r2, 0x1 bl CpuSet ldrh r0, [r4, 0x30] subs r0, 0x2 strh r0, [r4, 0x30] lsls r0, 16 movs r1, 0xE0 lsls r1, 17 cmp r0, r1 bne _0816ED12 adds r0, r4, 0 bl DestroySprite _0816ED12: pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_816EC6C thumb_func_start task_intro_27 task_intro_27: @ 816ED20 push {r4-r6,lr} sub sp, 0x4 adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 ldr r0, =gUnknown_085E5048 bl LoadCompressedObjectPic ldr r0, =gUnknown_085E5058 bl LoadSpritePalettes movs r1, 0xD5 lsls r1, 6 movs r0, 0 bl SetGpuReg ldr r6, =gTasks lsls r4, r5, 2 adds r4, r5 lsls r4, 3 adds r4, r6 ldr r0, =task_intro_28 str r0, [r4] ldr r0, =0x0000ffde ldr r1, =0x00002949 str r1, [sp] movs r1, 0 movs r2, 0x10 movs r3, 0 bl BeginNormalPaletteFade movs r0, 0 strh r0, [r4, 0x8] movs r0, 0xA8 strh r0, [r4, 0xA] ldr r1, =0x0000fff0 strh r1, [r4, 0xC] ldr r0, =0x0000ff78 strh r0, [r4, 0xE] strh r1, [r4, 0x10] ldr r0, =sub_816EEA8 movs r1, 0 bl CreateTask lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r6 strh r5, [r1, 0x10] add sp, 0x4 pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end task_intro_27 thumb_func_start task_intro_28 task_intro_28: @ 816EDB4 push {r4-r6,lr} lsls r0, 24 lsrs r0, 24 lsls r1, r0, 2 adds r1, r0 lsls r4, r1, 3 ldr r5, =gTasks + 0x8 adds r2, r4, r5 ldrh r0, [r2, 0xE] movs r3, 0x1 ands r0, r3 cmp r0, 0 bne _0816EDD6 ldrh r0, [r2, 0xC] movs r1, 0x2 eors r0, r1 strh r0, [r2, 0xC] _0816EDD6: ldrh r0, [r2, 0xE] adds r0, 0x1 strh r0, [r2, 0xE] movs r6, 0 ldrsh r1, [r2, r6] cmp r1, 0x1 beq _0816EE2E cmp r1, 0x1 bgt _0816EDF4 cmp r1, 0 beq _0816EDFE b _0816EE86 .pool _0816EDF4: cmp r1, 0x2 beq _0816EE3A cmp r1, 0x3 beq _0816EE70 b _0816EE86 _0816EDFE: ands r0, r3 cmp r0, 0 beq _0816EE1C ldrh r0, [r2, 0x2] subs r0, 0x2 strh r0, [r2, 0x2] ldrh r0, [r2, 0x4] adds r0, 0x1 strh r0, [r2, 0x4] ldrh r0, [r2, 0x6] adds r0, 0x2 strh r0, [r2, 0x6] ldrh r0, [r2, 0x8] adds r0, 0x1 strh r0, [r2, 0x8] _0816EE1C: movs r1, 0x2 ldrsh r0, [r2, r1] cmp r0, 0x68 bne _0816EE86 ldrh r0, [r2] adds r0, 0x1 strh r0, [r2] strh r3, [r2, 0xA] b _0816EE86 _0816EE2E: ldrh r0, [r2] adds r0, 0x1 strh r0, [r2] movs r0, 0x4 strh r0, [r2, 0xA] b _0816EE86 _0816EE3A: ldrh r0, [r2, 0x2] adds r0, 0x4 strh r0, [r2, 0x2] ldrh r0, [r2, 0x4] subs r0, 0x2 strh r0, [r2, 0x4] ldrh r0, [r2, 0x6] subs r0, 0x4 strh r0, [r2, 0x6] ldrh r0, [r2, 0x8] subs r0, 0x2 strh r0, [r2, 0x8] ldr r0, =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _0816EE86 movs r0, 0x8C strh r0, [r2, 0xA] ldrh r0, [r2] adds r0, 0x1 strh r0, [r2] b _0816EE86 .pool _0816EE70: ldrh r0, [r2, 0xA] subs r0, 0x1 strh r0, [r2, 0xA] lsls r0, 16 cmp r0, 0 bne _0816EE86 adds r0, r5, 0 subs r0, 0x8 adds r0, r4, r0 ldr r1, =task_intro_29 str r1, [r0] _0816EE86: pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end task_intro_28 thumb_func_start task_intro_29 task_intro_29: @ 816EE90 push {lr} lsls r0, 24 lsrs r0, 24 bl DestroyTask ldr r0, =sub_816CC54 bl SetMainCallback2 pop {r0} bx r0 .pool thumb_func_end task_intro_29 thumb_func_start sub_816EEA8 sub_816EEA8: @ 816EEA8 push {r4,r5,lr} sub sp, 0x4 lsls r0, 24 lsrs r2, r0, 24 lsls r0, r2, 2 adds r0, r2 lsls r0, 3 ldr r1, =gTasks + 0x8 adds r5, r0, r1 ldrh r0, [r5, 0x4] adds r0, 0x1 strh r0, [r5, 0x4] movs r1, 0 ldrsh r0, [r5, r1] cmp r0, 0x5 bls _0816EECA b _0816F0B2 _0816EECA: lsls r0, 2 ldr r1, =_0816EEDC adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _0816EEDC: .4byte _0816EEF4 .4byte _0816EF34 .4byte _0816EF80 .4byte _0816F00A .4byte _0816F074 .4byte _0816F0A0 _0816EEF4: ldrh r1, [r5, 0x4] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _0816EF16 movs r2, 0x2 ldrsh r0, [r5, r2] lsls r0, 1 ldr r1, =gIntro3BgPal + 0x1A2 adds r0, r1 ldr r1, =gPlttBufferFaded + 0xBC movs r2, 0x1 bl CpuSet ldrh r0, [r5, 0x2] adds r0, 0x1 strh r0, [r5, 0x2] _0816EF16: movs r1, 0x2 ldrsh r0, [r5, r1] cmp r0, 0x6 beq _0816EF20 b _0816F0B2 _0816EF20: ldrh r0, [r5] adds r0, 0x1 strh r0, [r5] movs r0, 0 strh r0, [r5, 0x2] b _0816EF70 .pool _0816EF34: ldrh r1, [r5, 0x6] movs r2, 0x6 ldrsh r0, [r5, r2] cmp r0, 0 bne _0816F004 ldrh r1, [r5, 0x4] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _0816EF60 movs r1, 0x2 ldrsh r0, [r5, r1] lsls r0, 1 ldr r1, =gIntro3BgPal + 0x1A2 adds r0, r1 ldr r1, =gPlttBufferFaded + 0xB0 movs r2, 0x1 bl CpuSet ldrh r0, [r5, 0x2] adds r0, 0x1 strh r0, [r5, 0x2] _0816EF60: movs r2, 0x2 ldrsh r0, [r5, r2] cmp r0, 0x6 beq _0816EF6A b _0816F0B2 _0816EF6A: ldrh r0, [r5] adds r0, 0x1 strh r0, [r5] _0816EF70: movs r0, 0xA strh r0, [r5, 0x6] b _0816F0B2 .pool _0816EF80: ldrh r1, [r5, 0x6] movs r2, 0x6 ldrsh r0, [r5, r2] cmp r0, 0 bne _0816F004 ldrh r1, [r5, 0x4] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _0816EFAC movs r1, 0x2 ldrsh r0, [r5, r1] lsls r0, 1 ldr r1, =gIntro3BgPal + 0x182 adds r0, r1 ldr r1, =gPlttBufferFaded + 0xB8 movs r2, 0x1 bl CpuSet ldrh r0, [r5, 0x2] adds r0, 0x1 strh r0, [r5, 0x2] _0816EFAC: movs r2, 0x2 ldrsh r0, [r5, r2] cmp r0, 0x6 beq _0816EFB6 b _0816F0B2 _0816EFB6: ldr r0, =gUnknown_085E5030 movs r1, 0x78 movs r2, 0x58 movs r3, 0xF bl CreateSprite adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 movs r0, 0x67 bl PlaySE ldr r1, =gSprites lsls r0, r4, 4 adds r0, r4 lsls r0, 2 adds r0, r1 adds r3, r0, 0 adds r3, 0x3E ldrb r1, [r3] movs r2, 0x4 orrs r1, r2 strb r1, [r3] ldrh r1, [r5, 0x8] strh r1, [r0, 0x34] ldrh r0, [r5] adds r0, 0x1 strh r0, [r5] movs r0, 0x10 strh r0, [r5, 0x6] b _0816F0B2 .pool _0816F004: subs r0, r1, 0x1 strh r0, [r5, 0x6] b _0816F0B2 _0816F00A: ldrh r1, [r5, 0x4] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _0816F0B2 ldrh r0, [r5, 0x6] subs r0, 0x1 adds r2, r0, 0 strh r0, [r5, 0x6] lsls r0, 16 cmp r0, 0 beq _0816F068 lsls r2, 24 lsrs r2, 24 ldr r3, =0x00002949 movs r0, 0x50 movs r1, 0x10 bl BlendPalette ldr r4, =gIntro3BgPal + 0x1AC ldr r5, =gPlttBufferFaded + 0xBC adds r0, r4, 0 adds r1, r5, 0 movs r2, 0x1 bl CpuSet adds r1, r5, 0 subs r1, 0xC adds r0, r4, 0 movs r2, 0x1 bl CpuSet subs r4, 0x20 subs r5, 0x4 adds r0, r4, 0 adds r1, r5, 0 movs r2, 0x1 bl CpuSet b _0816F0B2 .pool _0816F068: ldrh r0, [r5] adds r0, 0x1 strh r0, [r5] movs r0, 0x35 strh r0, [r5, 0x6] b _0816F0B2 _0816F074: ldrh r0, [r5, 0x6] subs r0, 0x1 strh r0, [r5, 0x6] lsls r0, 16 cmp r0, 0 bne _0816F0B2 movs r0, 0x1 negs r0, r0 ldr r1, =0x00007fff str r1, [sp] movs r1, 0 movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade ldrh r0, [r5] adds r0, 0x1 strh r0, [r5] b _0816F0B2 .pool _0816F0A0: ldr r0, =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _0816F0B2 adds r0, r2, 0 bl DestroyTask _0816F0B2: add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_816EEA8 thumb_func_start intro_reset_and_hide_bgs @ void intro_reset_and_hide_bgs() intro_reset_and_hide_bgs: @ 816F0C0 push {lr} movs r0, 0 movs r1, 0 bl SetGpuReg movs r0, 0x1C movs r1, 0 bl SetGpuReg movs r0, 0x1E movs r1, 0 bl SetGpuReg movs r0, 0x18 movs r1, 0 bl SetGpuReg movs r0, 0x1A movs r1, 0 bl SetGpuReg movs r0, 0x14 movs r1, 0 bl SetGpuReg movs r0, 0x16 movs r1, 0 bl SetGpuReg movs r0, 0x10 movs r1, 0 bl SetGpuReg movs r0, 0x12 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 pop {r0} bx r0 thumb_func_end intro_reset_and_hide_bgs thumb_func_start task_intro_3_1 task_intro_3_1: @ 816F128 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 ldr r1, =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r4, r0, r1 movs r1, 0x8 ldrsh r0, [r4, r1] cmp r0, 0x1 beq _0816F170 cmp r0, 0x1 ble _0816F148 cmp r0, 0x2 beq _0816F1BC _0816F148: movs r1, 0xFD lsls r1, 6 movs r0, 0x50 bl SetGpuReg ldr r0, =gUnknown_0853FF70 ldrh r1, [r0, 0x3E] movs r0, 0x52 bl SetGpuReg movs r0, 0x54 movs r1, 0 bl SetGpuReg movs r0, 0x40 b _0816F1AC .pool _0816F170: ldrh r1, [r4, 0xA] movs r2, 0xA ldrsh r0, [r4, r2] cmp r0, 0 beq _0816F1A0 subs r0, r1, 0x1 strh r0, [r4, 0xA] movs r1, 0xA ldrsh r0, [r4, r1] lsrs r1, r0, 31 adds r0, r1 movs r1, 0xFF lsls r1, 1 ldr r2, =gUnknown_0853FF70 ands r0, r1 adds r0, r2 ldrh r1, [r0] movs r0, 0x52 bl SetGpuReg b _0816F1DA .pool _0816F1A0: ldr r0, =gUnknown_0853FF70 ldrh r1, [r0] movs r0, 0x52 bl SetGpuReg movs r0, 0x10 _0816F1AC: strh r0, [r4, 0xA] ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] b _0816F1DA .pool _0816F1BC: movs r0, 0x50 movs r1, 0 bl SetGpuReg movs r0, 0x52 movs r1, 0 bl SetGpuReg movs r0, 0x54 movs r1, 0 bl SetGpuReg adds r0, r5, 0 bl DestroyTask _0816F1DA: pop {r4,r5} pop {r0} bx r0 thumb_func_end task_intro_3_1 thumb_func_start task_intro_3_2 task_intro_3_2: @ 816F1E0 push {r4,r5,lr} lsls r0, 24 lsrs r5, r0, 24 ldr r1, =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r4, r0, r1 movs r1, 0x8 ldrsh r0, [r4, r1] cmp r0, 0x1 beq _0816F228 cmp r0, 0x1 ble _0816F200 cmp r0, 0x2 beq _0816F274 _0816F200: movs r1, 0xFD lsls r1, 6 movs r0, 0x50 bl SetGpuReg ldr r0, =gUnknown_0853FF70 ldrh r1, [r0] movs r0, 0x52 bl SetGpuReg movs r0, 0x54 movs r1, 0 bl SetGpuReg movs r0, 0 b _0816F264 .pool _0816F228: ldrh r1, [r4, 0xA] movs r2, 0xA ldrsh r0, [r4, r2] cmp r0, 0x3D bgt _0816F258 adds r0, r1, 0x1 strh r0, [r4, 0xA] movs r1, 0xA ldrsh r0, [r4, r1] lsrs r1, r0, 31 adds r0, r1 movs r1, 0xFF lsls r1, 1 ldr r2, =gUnknown_0853FF70 ands r0, r1 adds r0, r2 ldrh r1, [r0] movs r0, 0x52 bl SetGpuReg b _0816F2A2 .pool _0816F258: ldr r0, =gUnknown_0853FF70 ldrh r1, [r0, 0x3E] movs r0, 0x52 bl SetGpuReg movs r0, 0x10 _0816F264: strh r0, [r4, 0xA] ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] b _0816F2A2 .pool _0816F274: ldrh r1, [r4, 0xA] movs r2, 0xA ldrsh r0, [r4, r2] cmp r0, 0 beq _0816F284 subs r0, r1, 0x1 strh r0, [r4, 0xA] b _0816F2A2 _0816F284: movs r0, 0x50 movs r1, 0 bl SetGpuReg movs r0, 0x52 movs r1, 0 bl SetGpuReg movs r0, 0x54 movs r1, 0 bl SetGpuReg adds r0, r5, 0 bl DestroyTask _0816F2A2: pop {r4,r5} pop {r0} bx r0 thumb_func_end task_intro_3_2 thumb_func_start sub_816F2A8 sub_816F2A8: @ 816F2A8 push {r4,lr} sub sp, 0x24 lsls r2, 16 lsrs r2, 16 movs r4, 0x80 lsls r4, 8 str r4, [sp] str r4, [sp, 0x4] mov r4, sp strh r0, [r4, 0x8] mov r0, sp strh r1, [r0, 0xA] strh r2, [r0, 0xC] strh r2, [r0, 0xE] strh r3, [r0, 0x10] add r4, sp, 0x14 adds r1, r4, 0 movs r2, 0x1 bl BgAffineSet ldrh r1, [r4] movs r0, 0x20 bl SetGpuReg ldrh r1, [r4, 0x2] movs r0, 0x22 bl SetGpuReg ldrh r1, [r4, 0x4] movs r0, 0x24 bl SetGpuReg ldrh r1, [r4, 0x6] movs r0, 0x26 bl SetGpuReg ldrh r1, [r4, 0x8] movs r0, 0x28 bl SetGpuReg ldrh r1, [r4, 0xA] movs r0, 0x2A bl SetGpuReg ldrh r1, [r4, 0xC] movs r0, 0x2C bl SetGpuReg ldrh r1, [r4, 0xE] movs r0, 0x2E bl SetGpuReg add sp, 0x24 pop {r4} pop {r0} bx r0 thumb_func_end sub_816F2A8 thumb_func_start sub_816F318 sub_816F318: @ 816F318 push {r4,lr} sub sp, 0x4 adds r4, r0, 0 movs r1, 0x32 ldrsh r0, [r4, r1] cmp r0, 0xBF ble _0816F394 ldrh r1, [r4, 0x34] movs r2, 0x34 ldrsh r0, [r4, r2] cmp r0, 0 beq _0816F336 subs r0, r1, 0x1 strh r0, [r4, 0x34] b _0816F39A _0816F336: adds r2, r4, 0 adds r2, 0x3E ldrb r1, [r2] movs r0, 0x5 negs r0, r0 ands r0, r1 strb r0, [r2] ldrh r0, [r4, 0x30] lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x32] str r1, [sp] movs r2, 0 movs r3, 0 bl SetOamMatrix movs r0, 0x32 ldrsh r1, [r4, r0] lsls r0, r1, 1 adds r0, r1 lsls r0, 5 subs r0, r1 movs r1, 0x64 bl __divsi3 strh r0, [r4, 0x32] movs r2, 0x32 ldrsh r1, [r4, r2] adds r0, r1, 0 subs r0, 0xC0 cmp r0, 0 bge _0816F378 adds r0, 0x7F _0816F378: asrs r0, 7 adds r0, 0x9 lsls r0, 24 lsrs r0, 24 cmp r0, 0xF bls _0816F386 movs r0, 0xF _0816F386: lsls r2, r0, 4 ldrb r1, [r4, 0x5] movs r0, 0xF ands r0, r1 orrs r0, r2 strb r0, [r4, 0x5] b _0816F39A _0816F394: adds r0, r4, 0 bl DestroySprite _0816F39A: add sp, 0x4 pop {r4} pop {r0} bx r0 thumb_func_end sub_816F318 thumb_func_start sub_816F3A4 sub_816F3A4: @ 816F3A4 push {r4,lr} adds r4, r0, 0 ldr r2, =gSprites movs r1, 0x3C ldrsh r0, [r4, r1] lsls r1, r0, 4 adds r1, r0 lsls r1, 2 adds r1, r2 movs r3, 0x3C ldrsh r0, [r1, r3] cmp r0, 0 beq _0816F420 adds r2, r4, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] ldrh r0, [r4, 0x24] ldrh r1, [r4, 0x20] adds r0, r1 strh r0, [r4, 0x20] ldrh r0, [r4, 0x26] ldrh r3, [r4, 0x22] adds r0, r3 strh r0, [r4, 0x22] adds r0, r4, 0 movs r1, 0x3 bl StartSpriteAnim movs r0, 0x80 lsls r0, 3 strh r0, [r4, 0x32] ldrh r1, [r4, 0x30] movs r0, 0x3 ands r0, r1 lsls r0, 3 strh r0, [r4, 0x34] ldr r0, =sub_816F318 str r0, [r4, 0x1C] ldrb r1, [r4, 0x1] movs r0, 0x3F ands r0, r1 movs r1, 0x40 orrs r0, r1 strb r0, [r4, 0x1] ldrb r0, [r4, 0x3] movs r1, 0xC0 orrs r0, r1 strb r0, [r4, 0x3] adds r0, r4, 0 movs r1, 0x1 movs r2, 0x3 movs r3, 0x2 bl CalcCenterToCornerVec b _0816F44C .pool _0816F420: ldrh r0, [r1, 0x24] strh r0, [r4, 0x24] movs r0, 0x3C ldrsh r1, [r4, r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r0, [r0, 0x26] strh r0, [r4, 0x26] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r0, [r0, 0x20] strh r0, [r4, 0x20] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r0, r2 ldrh r0, [r0, 0x22] strh r0, [r4, 0x22] _0816F44C: pop {r4} pop {r0} bx r0 thumb_func_end sub_816F3A4 thumb_func_start sub_816F454 sub_816F454: @ 816F454 push {lr} adds r1, r0, 0 movs r2, 0x2E ldrsh r0, [r1, r2] cmp r0, 0 beq _0816F464 ldr r0, =sub_816F46C str r0, [r1, 0x1C] _0816F464: pop {r0} bx r0 .pool thumb_func_end sub_816F454 thumb_func_start sub_816F46C sub_816F46C: @ 816F46C push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x4 adds r7, r0, 0 ldrh r4, [r7, 0x20] movs r1, 0x20 ldrsh r0, [r7, r1] cmp r0, 0x74 bgt _0816F4AC ldrh r0, [r7, 0x26] ldrh r1, [r7, 0x22] adds r0, r1 movs r1, 0 strh r0, [r7, 0x22] strh r1, [r7, 0x26] adds r0, r4, 0x4 strh r0, [r7, 0x20] ldr r0, =0x0000fffc strh r0, [r7, 0x24] movs r0, 0x80 strh r0, [r7, 0x36] ldr r0, =sub_816F5B4 str r0, [r7, 0x1C] b _0816F59E .pool _0816F4AC: ldrh r1, [r7, 0x36] ldr r5, =gSineTable lsls r0, r1, 24 lsrs r0, 23 adds r0, r5 ldrh r2, [r0] adds r0, r1, 0 adds r0, 0x40 lsls r0, 24 lsrs r0, 23 adds r0, r5 ldrh r3, [r0] adds r1, 0x2 strh r1, [r7, 0x36] lsls r2, 16 asrs r0, r2, 16 cmp r0, 0 bge _0816F4D2 adds r0, 0x1F _0816F4D2: asrs r0, 5 strh r0, [r7, 0x26] subs r0, r4, 0x1 strh r0, [r7, 0x20] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _0816F4E8 ldrh r0, [r7, 0x22] adds r0, 0x1 strh r0, [r7, 0x22] _0816F4E8: lsls r0, r3, 16 asrs r0, 16 negs r0, r0 cmp r0, 0 bge _0816F4F4 adds r0, 0xF _0816F4F4: lsls r1, r0, 12 lsrs r1, 16 ldrh r4, [r7, 0x32] ldrh r3, [r7, 0x34] adds r0, r1, 0 subs r0, 0x10 lsls r0, 24 lsrs r0, 23 adds r0, r5 ldrh r2, [r0] adds r1, 0x30 lsls r1, 24 lsrs r1, 23 adds r1, r5 movs r0, 0 ldrsh r1, [r1, r0] adds r0, r1, 0 muls r0, r4 cmp r0, 0 bge _0816F51E adds r0, 0xFF _0816F51E: lsls r0, 8 lsrs r0, 16 mov r8, r0 lsls r0, r2, 16 asrs r2, r0, 16 negs r0, r2 muls r0, r3 cmp r0, 0 bge _0816F532 adds r0, 0xFF _0816F532: lsls r0, 8 lsrs r0, 16 mov r10, r0 adds r0, r2, 0 muls r0, r4 cmp r0, 0 bge _0816F542 adds r0, 0xFF _0816F542: lsls r0, 8 lsrs r5, r0, 16 adds r0, r1, 0 muls r0, r3 cmp r0, 0 bge _0816F550 adds r0, 0xFF _0816F550: lsls r6, r0, 8 lsrs r6, 16 ldrh r0, [r7, 0x30] lsls r0, 24 lsrs r0, 24 str r3, [sp] adds r1, r4, 0 movs r2, 0 movs r3, 0 bl SetOamMatrix ldrh r0, [r7, 0x30] adds r0, 0x1 lsls r0, 24 lsrs r0, 24 mov r9, r5 mov r1, r10 lsls r5, r1, 16 lsrs r3, r5, 16 lsls r4, r6, 16 str r6, [sp] mov r1, r8 mov r2, r9 bl SetOamMatrix ldrh r0, [r7, 0x30] adds r0, 0x2 lsls r0, 24 lsrs r0, 24 lsls r5, 1 lsrs r5, 16 lsls r4, 1 lsrs r4, 16 str r4, [sp] mov r1, r8 mov r2, r9 adds r3, r5, 0 bl SetOamMatrix _0816F59E: add sp, 0x4 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_816F46C thumb_func_start sub_816F5B4 sub_816F5B4: @ 816F5B4 push {r4,lr} sub sp, 0x4 adds r4, r0, 0 ldrh r0, [r4, 0x30] lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x3A] adds r1, 0x40 lsls r1, 16 lsrs r1, 16 str r1, [sp] movs r2, 0 movs r3, 0 bl SetOamMatrix ldrh r0, [r4, 0x30] adds r0, 0x1 lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x3A] adds r1, 0x40 lsls r1, 16 lsrs r1, 16 str r1, [sp] movs r2, 0 movs r3, 0 bl SetOamMatrix ldrh r0, [r4, 0x30] adds r0, 0x2 lsls r0, 24 lsrs r0, 24 ldrh r1, [r4, 0x3A] adds r1, 0x40 lsls r1, 16 lsrs r1, 16 str r1, [sp] movs r2, 0 movs r3, 0 bl SetOamMatrix ldrh r1, [r4, 0x36] movs r2, 0x36 ldrsh r0, [r4, r2] cmp r0, 0x40 beq _0816F64C adds r0, r1, 0 subs r0, 0x8 strh r0, [r4, 0x36] ldrh r0, [r4, 0x36] adds r1, r0, 0 ldr r2, =gSineTable adds r0, 0x40 lsls r0, 24 lsrs r0, 23 adds r0, r2 movs r3, 0 ldrsh r0, [r0, r3] cmp r0, 0 bge _0816F62E adds r0, 0x3F _0816F62E: asrs r0, 6 strh r0, [r4, 0x24] lsls r0, r1, 24 lsrs r0, 23 adds r0, r2 movs r1, 0 ldrsh r0, [r0, r1] cmp r0, 0 bge _0816F642 adds r0, 0x3F _0816F642: asrs r0, 6 strh r0, [r4, 0x26] b _0816F654 .pool _0816F64C: movs r0, 0 strh r0, [r4, 0x36] ldr r0, =sub_816F660 str r0, [r4, 0x1C] _0816F654: add sp, 0x4 pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_816F5B4 thumb_func_start sub_816F660 sub_816F660: @ 816F660 push {r4,lr} adds r1, r0, 0 movs r2, 0x2E ldrsh r0, [r1, r2] cmp r0, 0x2 beq _0816F6C0 ldrh r0, [r1, 0x36] adds r0, 0x8 strh r0, [r1, 0x36] ldr r3, =gSineTable lsls r0, 24 lsrs r0, 23 adds r0, r3 movs r4, 0 ldrsh r0, [r0, r4] cmp r0, 0 bge _0816F684 adds r0, 0xF _0816F684: asrs r0, 4 adds r0, 0x40 lsls r0, 16 lsrs r2, r0, 16 adds r0, r2, 0 adds r0, 0x40 lsls r0, 24 lsrs r0, 23 adds r0, r3 movs r4, 0 ldrsh r0, [r0, r4] cmp r0, 0 bge _0816F6A0 adds r0, 0x3F _0816F6A0: asrs r0, 6 strh r0, [r1, 0x24] lsls r0, r2, 24 lsrs r0, 23 adds r0, r3 movs r2, 0 ldrsh r0, [r0, r2] cmp r0, 0 bge _0816F6B4 adds r0, 0x3F _0816F6B4: asrs r0, 6 strh r0, [r1, 0x26] b _0816F6C4 .pool _0816F6C0: ldr r0, =sub_816F6D0 str r0, [r1, 0x1C] _0816F6C4: pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_816F660 thumb_func_start sub_816F6D0 sub_816F6D0: @ 816F6D0 push {r4,lr} adds r4, r0, 0 ldrh r2, [r4, 0x22] movs r0, 0x22 ldrsh r1, [r4, r0] movs r3, 0x38 ldrsh r0, [r4, r3] cmp r1, r0 bge _0816F6E8 adds r0, r2, 0x4 strh r0, [r4, 0x22] b _0816F744 _0816F6E8: movs r0, 0x1 strh r0, [r4, 0x3C] adds r2, r4, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] ldrh r0, [r4, 0x24] ldrh r1, [r4, 0x20] adds r0, r1 strh r0, [r4, 0x20] ldrh r0, [r4, 0x26] ldrh r3, [r4, 0x22] adds r0, r3 strh r0, [r4, 0x22] adds r0, r4, 0 movs r1, 0x3 bl StartSpriteAnim movs r0, 0x80 lsls r0, 3 strh r0, [r4, 0x32] ldrh r1, [r4, 0x30] movs r0, 0x3 ands r0, r1 lsls r0, 3 strh r0, [r4, 0x34] ldr r0, =sub_816F318 str r0, [r4, 0x1C] ldrb r1, [r4, 0x1] movs r0, 0x3F ands r0, r1 movs r1, 0x40 orrs r0, r1 strb r0, [r4, 0x1] ldrb r0, [r4, 0x3] movs r1, 0xC0 orrs r0, r1 strb r0, [r4, 0x3] adds r0, r4, 0 movs r1, 0x1 movs r2, 0x3 movs r3, 0x2 bl CalcCenterToCornerVec _0816F744: pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_816F6D0 thumb_func_start sub_816F750 sub_816F750: @ 816F750 push {r4,lr} adds r4, r0, 0 ldrh r2, [r4, 0x22] movs r0, 0x22 ldrsh r1, [r4, r0] movs r3, 0x38 ldrsh r0, [r4, r3] cmp r1, r0 bge _0816F768 adds r0, r2, 0x4 strh r0, [r4, 0x22] b _0816F7C4 _0816F768: movs r0, 0x1 strh r0, [r4, 0x3C] adds r2, r4, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x4 orrs r0, r1 strb r0, [r2] ldrh r0, [r4, 0x24] ldrh r1, [r4, 0x20] adds r0, r1 strh r0, [r4, 0x20] ldrh r0, [r4, 0x26] ldrh r3, [r4, 0x22] adds r0, r3 strh r0, [r4, 0x22] adds r0, r4, 0 movs r1, 0x3 bl StartSpriteAnim movs r0, 0x80 lsls r0, 3 strh r0, [r4, 0x32] ldrh r1, [r4, 0x30] movs r0, 0x3 ands r0, r1 lsls r0, 3 strh r0, [r4, 0x34] ldr r0, =sub_816F318 str r0, [r4, 0x1C] ldrb r1, [r4, 0x1] movs r0, 0x3F ands r0, r1 movs r1, 0x40 orrs r0, r1 strb r0, [r4, 0x1] ldrb r0, [r4, 0x3] movs r1, 0xC0 orrs r0, r1 strb r0, [r4, 0x3] adds r0, r4, 0 movs r1, 0x1 movs r2, 0x3 movs r3, 0x2 bl CalcCenterToCornerVec _0816F7C4: pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_816F750 thumb_func_start sub_816F7D0 sub_816F7D0: @ 816F7D0 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x14 adds r4, r0, 0 adds r5, r1, 0 ldr r6, [sp, 0x34] ldr r0, [sp, 0x38] mov r8, r0 lsls r4, 16 lsls r5, 16 lsls r2, 16 lsrs r2, 16 str r2, [sp, 0x8] lsls r3, 16 lsrs r3, 16 str r3, [sp, 0xC] lsls r6, 16 lsrs r6, 16 mov r1, r8 lsls r1, 24 lsrs r1, 24 mov r8, r1 ldr r0, =gUnknown_085E4D64 lsrs r2, r4, 16 mov r10, r2 asrs r4, 16 lsrs r1, r5, 16 str r1, [sp, 0x4] asrs r5, 16 adds r1, r4, 0 adds r2, r5, 0 movs r3, 0x1 bl CreateSprite lsls r0, 24 lsrs r7, r0, 24 ldr r2, =gSprites mov r9, r2 lsls r0, r7, 4 adds r0, r7 lsls r5, r0, 2 adds r4, r5, r2 movs r0, 0 strh r0, [r4, 0x2E] strh r0, [r4, 0x3C] mov r0, sp ldrh r0, [r0, 0xC] strh r0, [r4, 0x30] mov r1, sp ldrh r1, [r1, 0x8] strh r1, [r4, 0x32] mov r2, sp ldrh r2, [r2, 0x8] strh r2, [r4, 0x34] strh r6, [r4, 0x38] mov r0, sp ldrh r0, [r0, 0x8] strh r0, [r4, 0x3A] ldrb r0, [r4, 0x1] movs r1, 0x3 orrs r0, r1 strb r0, [r4, 0x1] movs r0, 0x1F ldr r1, [sp, 0xC] ands r1, r0 lsls r1, 1 ldrb r2, [r4, 0x3] movs r0, 0x3F negs r0, r0 ands r0, r2 orrs r0, r1 strb r0, [r4, 0x3] adds r0, r4, 0 movs r1, 0 movs r2, 0x2 movs r3, 0x2 bl CalcCenterToCornerVec adds r0, r4, 0 movs r1, 0x2 bl StartSpriteAnim mov r1, r8 cmp r1, 0 bne _0816F898 mov r0, r9 adds r0, 0x1C adds r0, r5, r0 ldr r1, =sub_816F454 b _0816F8A0 .pool _0816F898: mov r0, r9 adds r0, 0x1C adds r0, r5, r0 ldr r1, =sub_816F750 _0816F8A0: str r1, [r0] str r7, [sp, 0x10] mov r2, r10 lsls r2, 16 asrs r2, 16 mov r10, r2 ldr r0, [sp, 0x4] lsls r0, 16 asrs r0, 16 mov r8, r0 ldr r0, =gUnknown_085E4D64 mov r1, r10 mov r2, r8 movs r3, 0x1 bl CreateSprite lsls r0, 24 lsrs r7, r0, 24 ldr r5, =gSprites lsls r4, r7, 4 adds r4, r7 lsls r4, 2 adds r0, r4, r5 mov r1, sp ldrh r1, [r1, 0x10] strh r1, [r0, 0x3C] ldr r2, [sp, 0xC] adds r2, 0x1 mov r9, r2 strh r2, [r0, 0x30] ldrb r1, [r0, 0x1] movs r2, 0x3 orrs r1, r2 strb r1, [r0, 0x1] mov r2, r9 movs r1, 0x1F ands r2, r1 lsls r2, 1 ldrb r3, [r0, 0x3] movs r6, 0x3F negs r6, r6 adds r1, r6, 0 ands r1, r3 orrs r1, r2 strb r1, [r0, 0x3] movs r1, 0 movs r2, 0x2 movs r3, 0x2 bl CalcCenterToCornerVec ldr r2, =gSprites + 0x1C adds r4, r2 ldr r0, =sub_816F3A4 str r0, [r4] ldr r0, =gUnknown_085E4D64 mov r1, r10 mov r2, r8 movs r3, 0x1 bl CreateSprite lsls r0, 24 lsrs r7, r0, 24 lsls r4, r7, 4 adds r4, r7 lsls r4, 2 adds r5, r4, r5 mov r1, sp ldrh r1, [r1, 0x10] strh r1, [r5, 0x3C] ldr r2, [sp, 0xC] adds r2, 0x2 mov r8, r2 strh r2, [r5, 0x30] adds r0, r5, 0 movs r1, 0x1 bl StartSpriteAnim ldrb r0, [r5, 0x1] movs r1, 0x3 orrs r0, r1 strb r0, [r5, 0x1] mov r0, r8 movs r2, 0x1F ands r0, r2 lsls r0, 1 ldrb r1, [r5, 0x3] ands r6, r1 orrs r6, r0 strb r6, [r5, 0x3] adds r0, r5, 0 movs r1, 0 movs r2, 0x2 movs r3, 0x2 bl CalcCenterToCornerVec ldr r0, =gSprites + 0x1C adds r4, r0 ldr r1, =sub_816F3A4 str r1, [r4] ldr r2, [sp, 0xC] lsls r0, r2, 24 lsrs r0, 24 ldr r5, [sp, 0x8] adds r5, 0x20 lsls r4, r5, 16 lsrs r4, 16 str r4, [sp] adds r1, r4, 0 movs r2, 0 movs r3, 0 bl SetOamMatrix mov r0, r9 lsls r0, 24 lsrs r0, 24 mov r9, r0 str r4, [sp] adds r1, r4, 0 movs r2, 0 movs r3, 0 bl SetOamMatrix mov r1, r8 lsls r1, 24 lsrs r1, 24 mov r8, r1 lsls r5, 17 lsrs r5, 16 str r5, [sp] mov r0, r8 adds r1, r4, 0 movs r2, 0 movs r3, 0 bl SetOamMatrix ldr r0, [sp, 0x10] add sp, 0x14 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r1} bx r1 .pool thumb_func_end sub_816F7D0 thumb_func_start sub_816F9D4 sub_816F9D4: @ 816F9D4 push {r4,r5,lr} adds r4, r0, 0 movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0x4 bhi _0816FA62 lsls r0, 2 ldr r1, =_0816F9F0 adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _0816F9F0: .4byte _0816FA04 .4byte _0816FA12 .4byte _0816FA30 .4byte _0816FA62 .4byte _0816FA50 _0816FA04: adds r0, r4, 0 movs r1, 0 bl StartSpriteAnimIfDifferent ldrh r0, [r4, 0x20] subs r0, 0x1 b _0816FA60 _0816FA12: adds r0, r4, 0 movs r1, 0 bl StartSpriteAnimIfDifferent ldr r0, =gUnknown_030062A0 ldr r0, [r0] movs r1, 0x7 ands r0, r1 cmp r0, 0 bne _0816FAAA ldrh r0, [r4, 0x20] adds r0, 0x1 b _0816FA60 .pool _0816FA30: ldrh r2, [r4, 0x20] movs r1, 0x20 ldrsh r0, [r4, r1] cmp r0, 0x78 ble _0816FA46 ldr r0, =gUnknown_030062A0 ldr r0, [r0] movs r1, 0x7 ands r0, r1 cmp r0, 0 beq _0816FA6E _0816FA46: adds r0, r2, 0x1 b _0816FA60 .pool _0816FA50: ldrh r2, [r4, 0x20] movs r0, 0x20 ldrsh r1, [r4, r0] movs r0, 0x20 negs r0, r0 cmp r1, r0 ble _0816FA62 subs r0, r2, 0x2 _0816FA60: strh r0, [r4, 0x20] _0816FA62: ldr r0, =gUnknown_030062A0 ldr r0, [r0] movs r1, 0x7 ands r0, r1 cmp r0, 0 bne _0816FAAA _0816FA6E: movs r1, 0x26 ldrsh r5, [r4, r1] cmp r5, 0 beq _0816FA80 movs r0, 0 strh r0, [r4, 0x26] b _0816FAAA .pool _0816FA80: bl Random movs r1, 0x3 ands r1, r0 cmp r1, 0x1 beq _0816FAA8 cmp r1, 0x1 bgt _0816FA96 cmp r1, 0 beq _0816FA9E b _0816FAAA _0816FA96: cmp r1, 0x3 bgt _0816FAAA strh r5, [r4, 0x26] b _0816FAAA _0816FA9E: ldr r0, =0x0000ffff strh r0, [r4, 0x26] b _0816FAAA .pool _0816FAA8: strh r1, [r4, 0x26] _0816FAAA: pop {r4,r5} pop {r0} bx r0 thumb_func_end sub_816F9D4 thumb_func_start sub_816FAB0 sub_816FAB0: @ 816FAB0 push {r4,lr} adds r4, r0, 0 movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0x1 beq _0816FACA cmp r0, 0x1 ble _0816FB12 cmp r0, 0x2 beq _0816FAEA cmp r0, 0x3 beq _0816FB04 b _0816FB12 _0816FACA: movs r2, 0x24 ldrsh r0, [r4, r2] movs r2, 0x20 ldrsh r1, [r4, r2] adds r0, r1 ldr r1, =0x0000012f cmp r0, r1 bgt _0816FAE4 ldrh r0, [r4, 0x24] adds r0, 0x8 b _0816FB10 .pool _0816FAE4: movs r0, 0x2 strh r0, [r4, 0x2E] b _0816FB12 _0816FAEA: movs r1, 0x24 ldrsh r0, [r4, r1] movs r2, 0x20 ldrsh r1, [r4, r2] adds r0, r1 cmp r0, 0x78 ble _0816FAFE ldrh r0, [r4, 0x24] subs r0, 0x1 b _0816FB10 _0816FAFE: movs r0, 0x3 strh r0, [r4, 0x2E] b _0816FB12 _0816FB04: ldrh r1, [r4, 0x24] movs r2, 0x24 ldrsh r0, [r4, r2] cmp r0, 0 ble _0816FB12 subs r0, r1, 0x2 _0816FB10: strh r0, [r4, 0x24] _0816FB12: ldrh r0, [r4, 0x30] lsls r0, 24 lsrs r0, 24 movs r1, 0x8 bl Sin ldr r1, =gUnknown_0203BCCC ldrh r1, [r1] subs r0, r1 strh r0, [r4, 0x26] ldrh r0, [r4, 0x30] adds r0, 0x4 strh r0, [r4, 0x30] pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_816FAB0 thumb_func_start sub_816FB38 sub_816FB38: @ 816FB38 push {r4-r6,lr} adds r6, r0, 0 movs r1, 0x2E ldrsh r0, [r6, r1] cmp r0, 0x5 bls _0816FB46 b _0816FD38 _0816FB46: lsls r0, 2 ldr r1, =_0816FB54 adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _0816FB54: .4byte _0816FB6C .4byte _0816FB94 .4byte _0816FBB4 .4byte _0816FC5C .4byte _0816FCC4 .4byte _0816FCF4 _0816FB6C: ldrh r1, [r6, 0x30] movs r2, 0x30 ldrsh r0, [r6, r2] cmp r0, 0 beq _0816FB7C subs r0, r1, 0x1 strh r0, [r6, 0x30] b _0816FD38 _0816FB7C: adds r2, r6, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x5 negs r1, r1 ands r1, r0 strb r1, [r2] adds r0, r6, 0 movs r1, 0x1 bl StartSpriteAffineAnim b _0816FCE6 _0816FB94: ldr r0, =gUnknown_030062A0 ldr r0, [r0] cmp r0, 0x90 beq _0816FB9E b _0816FD38 _0816FB9E: ldrh r0, [r6, 0x2E] adds r0, 0x1 strh r0, [r6, 0x2E] movs r0, 0x9 strh r0, [r6, 0x30] movs r0, 0x2 strh r0, [r6, 0x34] b _0816FD38 .pool _0816FBB4: ldrh r1, [r6, 0x34] movs r2, 0x34 ldrsh r0, [r6, r2] cmp r0, 0 bne _0816FC66 movs r0, 0x2 strh r0, [r6, 0x34] movs r1, 0x30 ldrsh r0, [r6, r1] cmp r0, 0 beq _0816FC14 lsls r0, 1 ldr r4, =gIntro1GameFreakTextFadePal adds r0, r4 ldr r5, =gPlttBufferFaded + 0x23E adds r1, r5, 0 movs r2, 0x1 bl CpuSet movs r1, 0x30 ldrsh r0, [r6, r1] lsls r0, 1 adds r1, r4, 0 adds r1, 0x20 adds r0, r1 adds r1, r5, 0 subs r1, 0x16 movs r2, 0x1 bl CpuSet movs r2, 0x30 ldrsh r0, [r6, r2] lsls r0, 1 adds r4, 0x40 adds r0, r4 subs r5, 0xA adds r1, r5, 0 movs r2, 0x1 bl CpuSet ldrh r0, [r6, 0x30] subs r0, 0x1 strh r0, [r6, 0x30] b _0816FD38 .pool _0816FC14: movs r1, 0x30 ldrsh r0, [r6, r1] lsls r0, 1 ldr r4, =gIntro1GameFreakTextFadePal adds r0, r4 ldr r5, =gPlttBufferFaded + 0x23E adds r1, r5, 0 movs r2, 0x1 bl CpuSet movs r2, 0x30 ldrsh r0, [r6, r2] lsls r0, 1 adds r1, r4, 0 adds r1, 0x20 adds r0, r1 adds r1, r5, 0 subs r1, 0x16 movs r2, 0x1 bl CpuSet movs r1, 0x30 ldrsh r0, [r6, r1] lsls r0, 1 adds r4, 0x40 adds r0, r4 subs r5, 0xA adds r1, r5, 0 movs r2, 0x1 bl CpuSet b _0816FCE6 .pool _0816FC5C: ldrh r1, [r6, 0x34] movs r2, 0x34 ldrsh r0, [r6, r2] cmp r0, 0 beq _0816FC6C _0816FC66: subs r0, r1, 0x1 strh r0, [r6, 0x34] b _0816FD38 _0816FC6C: movs r0, 0x2 strh r0, [r6, 0x34] movs r1, 0x30 ldrsh r0, [r6, r1] cmp r0, 0x9 bgt _0816FCE6 lsls r0, 1 ldr r4, =gIntro1GameFreakTextFadePal adds r0, r4 ldr r5, =gPlttBufferFaded + 0x23E adds r1, r5, 0 movs r2, 0x1 bl CpuSet movs r1, 0x30 ldrsh r0, [r6, r1] lsls r0, 1 adds r1, r4, 0 adds r1, 0x20 adds r0, r1 adds r1, r5, 0 subs r1, 0x16 movs r2, 0x1 bl CpuSet movs r2, 0x30 ldrsh r0, [r6, r2] lsls r0, 1 adds r4, 0x40 adds r0, r4 subs r5, 0xA adds r1, r5, 0 movs r2, 0x1 bl CpuSet ldrh r0, [r6, 0x30] adds r0, 0x1 strh r0, [r6, 0x30] b _0816FD38 .pool _0816FCC4: ldr r0, =gUnknown_030062A0 ldr r1, [r0] movs r0, 0x88 lsls r0, 1 cmp r1, r0 bne _0816FD38 adds r0, r6, 0 movs r1, 0x2 bl StartSpriteAffineAnim ldrb r1, [r6, 0x1] movs r0, 0xD negs r0, r0 ands r0, r1 movs r1, 0x4 orrs r0, r1 strb r0, [r6, 0x1] _0816FCE6: ldrh r0, [r6, 0x2E] adds r0, 0x1 strh r0, [r6, 0x2E] b _0816FD38 .pool _0816FCF4: ldr r1, =gUnknown_085E4F48 movs r2, 0x32 ldrsh r0, [r6, r2] lsls r0, 1 adds r0, r1 ldrh r0, [r0] ldrh r1, [r6, 0x34] adds r0, r1 strh r0, [r6, 0x34] movs r2, 0x34 ldrsh r0, [r6, r2] movs r1, 0xFF lsls r1, 8 ands r0, r1 asrs r0, 8 strh r0, [r6, 0x24] movs r1, 0x32 ldrsh r0, [r6, r1] cmp r0, 0x3 bgt _0816FD24 movs r2, 0x24 ldrsh r0, [r6, r2] negs r0, r0 strh r0, [r6, 0x24] _0816FD24: adds r0, r6, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x20 ands r0, r1 cmp r0, 0 beq _0816FD38 adds r0, r6, 0 bl DestroySprite _0816FD38: pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_816FB38 thumb_func_start sub_816FD44 sub_816FD44: @ 816FD44 push {r4,lr} adds r4, r0, 0 movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0x1 beq _0816FD7C cmp r0, 0x1 bgt _0816FD5A cmp r0, 0 beq _0816FD60 b _0816FDB0 _0816FD5A: cmp r0, 0x2 beq _0816FD9C b _0816FDB0 _0816FD60: ldr r0, =gUnknown_030062A0 ldr r0, [r0] cmp r0, 0x80 bne _0816FDB0 adds r2, r4, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x5 negs r1, r1 ands r1, r0 strb r1, [r2] b _0816FD90 .pool _0816FD7C: ldr r0, =gUnknown_030062A0 ldr r1, [r0] movs r0, 0x88 lsls r0, 1 cmp r1, r0 bne _0816FDB0 adds r0, r4, 0 movs r1, 0x3 bl StartSpriteAffineAnim _0816FD90: ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] b _0816FDB0 .pool _0816FD9C: adds r0, r4, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x20 ands r0, r1 cmp r0, 0 beq _0816FDB0 adds r0, r4, 0 bl DestroySprite _0816FDB0: pop {r4} pop {r0} bx r0 thumb_func_end sub_816FD44 thumb_func_start sub_816FDB8 sub_816FDB8: @ 816FDB8 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0xC lsls r0, 16 lsrs r0, 16 str r0, [sp] lsls r1, 16 lsrs r1, 16 str r1, [sp, 0x4] movs r7, 0 _0816FDD2: lsls r5, r7, 2 ldr r0, =gUnknown_085E4E94 adds r0, 0x2 adds r0, r5, r0 ldr r2, [sp] lsls r1, r2, 16 asrs r1, 16 ldrh r0, [r0] adds r1, r0 lsls r1, 16 asrs r1, 16 ldr r3, [sp, 0x4] lsls r2, r3, 16 asrs r0, r2, 16 str r0, [sp, 0x8] ldr r3, =0xfffc0000 adds r2, r3 ldr r0, =gUnknown_085E4F5C asrs r2, 16 movs r3, 0 bl CreateSprite lsls r0, 24 lsrs r6, r0, 24 lsls r4, r6, 4 adds r4, r6 lsls r4, 2 ldr r0, =gSprites adds r4, r0 movs r1, 0 strh r1, [r4, 0x2E] ldr r0, =gUnknown_085E4FA4 adds r0, r7, r0 ldrb r0, [r0] strh r0, [r4, 0x30] strh r7, [r4, 0x32] adds r1, r4, 0 adds r1, 0x3E ldrb r0, [r1] movs r2, 0x4 mov r10, r2 mov r3, r10 orrs r0, r3 strb r0, [r1] adds r1, r7, 0 adds r1, 0xC movs r0, 0x1F mov r9, r0 mov r2, r9 ands r1, r2 lsls r1, 1 ldrb r0, [r4, 0x3] movs r3, 0x3F negs r3, r3 mov r8, r3 mov r2, r8 ands r0, r2 orrs r0, r1 strb r0, [r4, 0x3] ldr r3, =gUnknown_085E4E94 adds r5, r3 ldrb r1, [r5] adds r0, r4, 0 bl StartSpriteAnim adds r0, r4, 0 movs r1, 0 bl StartSpriteAffineAnim adds r0, r7, 0x1 lsls r0, 16 lsrs r7, r0, 16 cmp r7, 0x8 bls _0816FDD2 ldr r0, =gUnknown_085E4F8C ldr r2, [sp, 0x8] subs r2, 0x6 lsls r2, 16 asrs r2, 16 movs r1, 0x78 movs r3, 0 bl CreateSprite lsls r0, 24 lsrs r6, r0, 24 lsls r0, r6, 4 adds r0, r6 lsls r0, 2 ldr r1, =gSprites adds r0, r1 movs r2, 0 strh r2, [r0, 0x2E] adds r2, r0, 0 adds r2, 0x3E ldrb r1, [r2] mov r3, r10 orrs r1, r3 strb r1, [r2] adds r2, r7, 0 adds r2, 0xC mov r1, r9 ands r2, r1 lsls r2, 1 ldrb r1, [r0, 0x3] mov r3, r8 ands r1, r3 orrs r1, r2 strb r1, [r0, 0x3] movs r1, 0x1 bl StartSpriteAffineAnim adds r0, r6, 0 add sp, 0xC pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r1} bx r1 .pool thumb_func_end sub_816FDB8 thumb_func_start sub_816FEDC sub_816FEDC: @ 816FEDC push {r4-r6,lr} sub sp, 0x4 adds r4, r0, 0 ldrh r0, [r4, 0x3C] adds r0, 0x1 strh r0, [r4, 0x3C] movs r1, 0x2E ldrsh r0, [r4, r1] cmp r0, 0 beq _0816FF48 ldr r2, =gSineTable ldrh r1, [r4, 0x32] lsls r0, r1, 24 lsrs r0, 23 adds r0, r2 ldrh r3, [r0] adds r1, 0x40 lsls r1, 24 lsrs r1, 23 adds r1, r2 movs r2, 0 ldrsh r0, [r1, r2] movs r1, 0x30 ldrsh r2, [r4, r1] adds r1, r0, 0 muls r1, r2 adds r0, r1, 0 cmp r1, 0 bge _0816FF18 adds r0, 0xFF _0816FF18: lsls r0, 8 lsrs r6, r0, 16 lsls r0, r3, 16 asrs r3, r0, 16 negs r0, r3 muls r0, r2 cmp r0, 0 bge _0816FF2A adds r0, 0xFF _0816FF2A: lsls r0, 8 lsrs r5, r0, 16 adds r0, r3, 0 muls r0, r2 cmp r0, 0 bge _0816FF38 adds r0, 0xFF _0816FF38: lsls r0, 8 lsrs r2, r0, 16 adds r1, r6, 0 adds r3, r5, 0 str r1, [sp] movs r0, 0x1 bl SetOamMatrix _0816FF48: movs r2, 0x2E ldrsh r0, [r4, r2] cmp r0, 0x1 beq _0816FF9C cmp r0, 0x1 ble _0816FF58 cmp r0, 0x2 beq _0816FFFE _0816FF58: ldrb r0, [r4, 0x1] movs r1, 0x3 orrs r0, r1 strb r0, [r4, 0x1] ldrb r1, [r4, 0x3] movs r0, 0x3F negs r0, r0 ands r0, r1 movs r1, 0x2 orrs r0, r1 strb r0, [r4, 0x3] adds r0, r4, 0 movs r1, 0x1 movs r2, 0x3 movs r3, 0x3 bl CalcCenterToCornerVec adds r2, r4, 0 adds r2, 0x3E ldrb r1, [r2] movs r0, 0x5 negs r0, r0 ands r0, r1 strb r0, [r2] movs r1, 0 movs r0, 0x1 strh r0, [r4, 0x2E] movs r0, 0x80 strh r0, [r4, 0x30] strh r1, [r4, 0x32] strh r1, [r4, 0x34] b _08170038 .pool _0816FF9C: ldrh r0, [r4, 0x34] lsls r0, 24 lsrs r0, 24 movs r1, 0x8C bl Sin negs r0, r0 strh r0, [r4, 0x24] ldrh r0, [r4, 0x34] lsls r0, 24 lsrs r0, 24 movs r1, 0x78 bl Sin negs r0, r0 strh r0, [r4, 0x26] ldrh r0, [r4, 0x30] adds r0, 0x7 strh r0, [r4, 0x30] ldrh r0, [r4, 0x34] adds r0, 0x3 strh r0, [r4, 0x34] movs r1, 0x20 ldrsh r0, [r4, r1] movs r2, 0x24 ldrsh r1, [r4, r2] adds r0, r1 movs r1, 0x10 negs r1, r1 cmp r0, r1 bgt _08170038 ldrb r0, [r4, 0x5] movs r1, 0xC orrs r0, r1 strb r0, [r4, 0x5] ldrh r0, [r4, 0x2E] adds r0, 0x1 strh r0, [r4, 0x2E] movs r0, 0x14 strh r0, [r4, 0x20] movs r0, 0x28 strh r0, [r4, 0x22] movs r0, 0x80 lsls r0, 2 strh r0, [r4, 0x30] movs r0, 0 strh r0, [r4, 0x32] movs r0, 0x10 b _08170036 _0816FFFE: ldrh r0, [r4, 0x34] lsls r0, 24 lsrs r0, 24 movs r1, 0x22 bl Sin strh r0, [r4, 0x24] ldrh r0, [r4, 0x34] lsls r0, 24 lsrs r0, 24 movs r1, 0x3C bl Cos negs r0, r0 strh r0, [r4, 0x26] ldrh r0, [r4, 0x30] adds r0, 0x2 strh r0, [r4, 0x30] movs r1, 0x3C ldrsh r0, [r4, r1] movs r1, 0x5 bl __modsi3 lsls r0, 16 cmp r0, 0 bne _08170038 ldrh r0, [r4, 0x34] adds r0, 0x1 _08170036: strh r0, [r4, 0x34] _08170038: add sp, 0x4 pop {r4-r6} pop {r0} bx r0 thumb_func_end sub_816FEDC thumb_func_start sub_8170040 sub_8170040: @ 8170040 push {r4,r5,lr} sub sp, 0x4 adds r5, r0, 0 movs r1, 0x2E ldrsh r0, [r5, r1] cmp r0, 0 beq _08170056 adds r4, r5, 0 adds r4, 0x3E cmp r0, 0x1 beq _0817008E _08170056: adds r4, r5, 0 adds r4, 0x3E ldrb r1, [r4] movs r0, 0x5 negs r0, r0 ands r0, r1 strb r0, [r4] ldrb r0, [r5, 0x1] movs r1, 0x3 orrs r0, r1 strb r0, [r5, 0x1] ldrb r1, [r5, 0x3] movs r0, 0x3F negs r0, r0 ands r0, r1 movs r1, 0x24 orrs r0, r1 strb r0, [r5, 0x3] adds r0, r5, 0 movs r1, 0 movs r2, 0x3 movs r3, 0x3 bl CalcCenterToCornerVec movs r0, 0 strh r0, [r5, 0x30] movs r0, 0x1 strh r0, [r5, 0x2E] _0817008E: ldrh r0, [r5, 0x3C] adds r0, 0x1 strh r0, [r5, 0x3C] movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _081700A6 ldrb r0, [r4] movs r1, 0x4 orrs r0, r1 strb r0, [r4] b _081700BE _081700A6: ldrb r0, [r4] movs r1, 0x5 negs r1, r1 ands r1, r0 strb r1, [r4] ldrh r1, [r5, 0x30] movs r2, 0x30 ldrsh r0, [r5, r2] cmp r0, 0x3F bgt _081700BE adds r0, r1, 0x1 strh r0, [r5, 0x30] _081700BE: ldr r1, =gSineTable ldrh r0, [r5, 0x30] lsls r0, 24 lsrs r0, 23 adds r0, r1 movs r1, 0 ldrsh r0, [r0, r1] lsrs r1, r0, 31 adds r0, r1 asrs r0, 1 movs r2, 0x80 lsls r2, 1 adds r1, r2, 0 subs r1, r0 lsls r1, 16 lsrs r1, 16 str r1, [sp] movs r0, 0x12 movs r2, 0 movs r3, 0 bl SetOamMatrix add sp, 0x4 pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_8170040 .align 2, 0 @ Don't pad with nop.