.include "constants/gba_constants.inc" .include "constants/species_constants.inc" .include "asm/macros.inc" .syntax unified .text thumb_func_start SetUpFieldMove_Flash SetUpFieldMove_Flash: @ 810CBB4 push {lr} ldr r0, _0810CBDC @ =gMapHeader ldrb r0, [r0, 0x15] cmp r0, 0x1 bne _0810CBF4 ldr r0, _0810CBE0 @ =0x00000828 bl FlagGet lsls r0, 24 cmp r0, 0 bne _0810CBF4 ldr r1, _0810CBE4 @ =gUnknown_0300485C ldr r0, _0810CBE8 @ =sub_808AB90 str r0, [r1] ldr r1, _0810CBEC @ =gUnknown_03005CE4 ldr r0, _0810CBF0 @ =sub_810CBFC str r0, [r1] movs r0, 0x1 b _0810CBF6 .align 2, 0 _0810CBDC: .4byte gMapHeader _0810CBE0: .4byte 0x00000828 _0810CBE4: .4byte gUnknown_0300485C _0810CBE8: .4byte sub_808AB90 _0810CBEC: .4byte gUnknown_03005CE4 _0810CBF0: .4byte sub_810CBFC _0810CBF4: movs r0, 0 _0810CBF6: pop {r1} bx r1 thumb_func_end SetUpFieldMove_Flash thumb_func_start sub_810CBFC sub_810CBFC: @ 810CBFC push {lr} bl oei_task_add lsls r0, 24 lsrs r0, 24 ldr r2, _0810CC24 @ =gUnknown_0202FF84 ldr r1, _0810CC28 @ =gLastFieldPokeMenuOpened ldrb r1, [r1] str r1, [r2] ldr r2, _0810CC2C @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r2 ldr r2, _0810CC30 @ =sub_810CC34 lsrs r0, r2, 16 strh r0, [r1, 0x18] strh r2, [r1, 0x1A] pop {r0} bx r0 .align 2, 0 _0810CC24: .4byte gUnknown_0202FF84 _0810CC28: .4byte gLastFieldPokeMenuOpened _0810CC2C: .4byte gTasks _0810CC30: .4byte sub_810CC34 thumb_func_end sub_810CBFC thumb_func_start sub_810CC34 sub_810CC34: @ 810CC34 push {lr} movs r0, 0xCF bl PlaySE ldr r0, _0810CC4C @ =0x00000828 bl FlagSet ldr r0, _0810CC50 @ =gUnknown_081B694A bl ScriptContext1_SetupScript pop {r0} bx r0 .align 2, 0 _0810CC4C: .4byte 0x00000828 _0810CC50: .4byte gUnknown_081B694A thumb_func_end sub_810CC34 thumb_func_start sub_810CC54 sub_810CC54: @ 810CC54 push {lr} bl RunTasks bl AnimateSprites bl BuildOamBuffer bl UpdatePaletteFade pop {r0} bx r0 thumb_func_end sub_810CC54 thumb_func_start sub_810CC6C sub_810CC6C: @ 810CC6C push {lr} bl LoadOam bl ProcessSpriteCopyRequests bl TransferPlttBuffer pop {r0} bx r0 thumb_func_end sub_810CC6C thumb_func_start sub_810CC80 sub_810CC80: @ 810CC80 push {r4,lr} sub sp, 0x8 movs r0, 0 bl SetVBlankCallback movs r0, 0x80 lsls r0, 19 movs r1, 0 strh r1, [r0] adds r0, 0xC strh r1, [r0] subs r0, 0x2 strh r1, [r0] subs r0, 0x2 strh r1, [r0] adds r0, 0x10 strh r1, [r0] adds r0, 0x2 strh r1, [r0] subs r0, 0x6 strh r1, [r0] adds r0, 0x2 strh r1, [r0] subs r0, 0x6 strh r1, [r0] adds r0, 0x2 strh r1, [r0] mov r0, sp strh r1, [r0] ldr r1, _0810CD34 @ =0x040000d4 str r0, [r1] movs r0, 0xC0 lsls r0, 19 str r0, [r1, 0x4] ldr r0, _0810CD38 @ =0x8100c000 str r0, [r1, 0x8] ldr r0, [r1, 0x8] movs r4, 0 str r4, [sp, 0x4] add r0, sp, 0x4 str r0, [r1] movs r0, 0xE0 lsls r0, 19 str r0, [r1, 0x4] ldr r0, _0810CD3C @ =0x85000100 str r0, [r1, 0x8] ldr r0, [r1, 0x8] mov r0, sp strh r4, [r0] str r0, [r1] ldr r0, _0810CD40 @ =0x05000002 str r0, [r1, 0x4] ldr r0, _0810CD44 @ =0x810001ff str r0, [r1, 0x8] ldr r0, [r1, 0x8] bl ResetPaletteFade bl ResetTasks bl ResetSpriteData ldr r3, _0810CD48 @ =0x04000208 ldrh r2, [r3] strh r4, [r3] ldr r4, _0810CD4C @ =0x04000200 ldrh r0, [r4] movs r1, 0x1 orrs r0, r1 strh r0, [r4] strh r2, [r3] ldr r0, _0810CD50 @ =sub_810CC6C bl SetVBlankCallback ldr r0, _0810CD54 @ =sub_810CC54 bl SetMainCallback2 bl sub_810CD5C lsls r0, 24 cmp r0, 0 bne _0810CD2A ldr r0, _0810CD58 @ =gMain ldr r0, [r0, 0x8] bl SetMainCallback2 _0810CD2A: add sp, 0x8 pop {r4} pop {r0} bx r0 .align 2, 0 _0810CD34: .4byte 0x040000d4 _0810CD38: .4byte 0x8100c000 _0810CD3C: .4byte 0x85000100 _0810CD40: .4byte 0x05000002 _0810CD44: .4byte 0x810001ff _0810CD48: .4byte 0x04000208 _0810CD4C: .4byte 0x04000200 _0810CD50: .4byte sub_810CC6C _0810CD54: .4byte sub_810CC54 _0810CD58: .4byte gMain thumb_func_end sub_810CC80 thumb_func_start sub_810CD5C sub_810CD5C: @ 810CD5C push {r4-r7,lr} bl get_map_light_from_warp0 lsls r0, 24 lsrs r6, r0, 24 bl sav1_map_get_light_level lsls r0, 24 lsrs r5, r0, 24 movs r3, 0 ldr r4, _0810CD9C @ =gUnknown_083F7FC4 ldrb r0, [r4] cmp r0, 0 beq _0810CDB0 adds r7, r4, 0 adds r0, r4, 0x4 mov r12, r0 _0810CD7E: lsls r2, r3, 3 adds r1, r2, r7 ldrb r0, [r1] cmp r0, r6 bne _0810CDA0 ldrb r0, [r1, 0x1] cmp r0, r5 bne _0810CDA0 mov r1, r12 adds r0, r2, r1 ldr r0, [r0] bl _call_via_r0 movs r0, 0x1 b _0810CDB2 .align 2, 0 _0810CD9C: .4byte gUnknown_083F7FC4 _0810CDA0: adds r0, r3, 0x1 lsls r0, 24 lsrs r3, r0, 24 lsls r0, r3, 3 adds r0, r4 ldrb r0, [r0] cmp r0, 0 bne _0810CD7E _0810CDB0: movs r0, 0 _0810CDB2: pop {r4-r7} pop {r1} bx r1 thumb_func_end sub_810CD5C thumb_func_start sub_810CDB8 sub_810CDB8: @ 810CDB8 push {r4-r6,lr} lsls r0, 24 lsls r1, 24 lsrs r5, r0, 24 lsrs r4, r1, 24 movs r3, 0 ldr r1, _0810CDE4 @ =gUnknown_083F7FC4 ldrb r0, [r1] cmp r0, 0 beq _0810CDF8 adds r6, r1, 0 _0810CDCE: lsls r0, r3, 3 adds r2, r0, r6 ldrb r0, [r2] cmp r0, r5 bne _0810CDE8 ldrb r0, [r2, 0x1] cmp r0, r4 bne _0810CDE8 ldrb r0, [r2, 0x2] b _0810CDFA .align 2, 0 _0810CDE4: .4byte gUnknown_083F7FC4 _0810CDE8: adds r0, r3, 0x1 lsls r0, 24 lsrs r3, r0, 24 lsls r0, r3, 3 adds r0, r1 ldrb r0, [r0] cmp r0, 0 bne _0810CDCE _0810CDF8: movs r0, 0 _0810CDFA: pop {r4-r6} pop {r1} bx r1 thumb_func_end sub_810CDB8 thumb_func_start fade_type_for_given_maplight_pair fade_type_for_given_maplight_pair: @ 810CE00 push {r4-r6,lr} lsls r0, 24 lsls r1, 24 lsrs r5, r0, 24 lsrs r4, r1, 24 movs r3, 0 ldr r1, _0810CE2C @ =gUnknown_083F7FC4 ldrb r0, [r1] cmp r0, 0 beq _0810CE40 adds r6, r1, 0 _0810CE16: lsls r0, r3, 3 adds r2, r0, r6 ldrb r0, [r2] cmp r0, r5 bne _0810CE30 ldrb r0, [r2, 0x1] cmp r0, r4 bne _0810CE30 ldrb r0, [r2, 0x3] b _0810CE42 .align 2, 0 _0810CE2C: .4byte gUnknown_083F7FC4 _0810CE30: adds r0, r3, 0x1 lsls r0, 24 lsrs r3, r0, 24 lsls r0, r3, 3 adds r0, r1 ldrb r0, [r0] cmp r0, 0 bne _0810CE16 _0810CE40: movs r0, 0 _0810CE42: pop {r4-r6} pop {r1} bx r1 thumb_func_end fade_type_for_given_maplight_pair thumb_func_start sub_810CE48 sub_810CE48: @ 810CE48 push {lr} ldr r0, _0810CE58 @ =sub_810CE5C movs r1, 0 bl CreateTask pop {r0} bx r0 .align 2, 0 _0810CE58: .4byte sub_810CE5C thumb_func_end sub_810CE48 thumb_func_start sub_810CE5C sub_810CE5C: @ 810CE5C lsls r0, 24 lsrs r0, 24 ldr r2, _0810CE70 @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r2 ldr r0, _0810CE74 @ =sub_810CE78 str r0, [r1] bx lr .align 2, 0 _0810CE70: .4byte gTasks _0810CE74: .4byte sub_810CE78 thumb_func_end sub_810CE5C thumb_func_start sub_810CE78 sub_810CE78: @ 810CE78 push {r4-r6,lr} adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 movs r6, 0x80 lsls r6, 19 movs r5, 0 strh r5, [r6] ldr r0, _0810CEE8 @ =gCaveTransitionTiles ldr r1, _0810CEEC @ =0x0600c000 bl LZ77UnCompVram ldr r0, _0810CEF0 @ =gCaveTransitionTilemap ldr r1, _0810CEF4 @ =0x0600f800 bl LZ77UnCompVram ldr r0, _0810CEF8 @ =gCaveTransitionPalette_White movs r1, 0xE0 movs r2, 0x20 bl LoadPalette ldr r0, _0810CEFC @ =gUnknown_083F809C movs r1, 0xE0 movs r2, 0x10 bl LoadPalette ldr r1, _0810CF00 @ =REG_BLDCNT ldr r2, _0810CF04 @ =0x00003e41 adds r0, r2, 0 strh r0, [r1] ldr r0, _0810CF08 @ =REG_BLDALPHA strh r5, [r0] adds r0, 0x2 strh r5, [r0] subs r1, 0x48 ldr r2, _0810CF0C @ =0x00001f0c adds r0, r2, 0 strh r0, [r1] movs r1, 0x8A lsls r1, 5 adds r0, r1, 0 strh r0, [r6] ldr r1, _0810CF10 @ =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 ldr r1, _0810CF14 @ =sub_810CF18 str r1, [r0] movs r2, 0 movs r1, 0x10 strh r1, [r0, 0x8] strh r2, [r0, 0xA] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0810CEE8: .4byte gCaveTransitionTiles _0810CEEC: .4byte 0x0600c000 _0810CEF0: .4byte gCaveTransitionTilemap _0810CEF4: .4byte 0x0600f800 _0810CEF8: .4byte gCaveTransitionPalette_White _0810CEFC: .4byte gUnknown_083F809C _0810CF00: .4byte REG_BLDCNT _0810CF04: .4byte 0x00003e41 _0810CF08: .4byte REG_BLDALPHA _0810CF0C: .4byte 0x00001f0c _0810CF10: .4byte gTasks _0810CF14: .4byte sub_810CF18 thumb_func_end sub_810CE78 thumb_func_start sub_810CF18 sub_810CF18: @ 810CF18 push {lr} lsls r0, 24 lsrs r0, 24 ldr r2, _0810CF44 @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r3, r1, r2 ldrh r2, [r3, 0xA] movs r1, 0x80 lsls r1, 5 adds r0, r2, r1 lsls r0, 16 lsrs r0, 16 ldr r1, _0810CF48 @ =REG_BLDALPHA strh r0, [r1] cmp r2, 0x10 bhi _0810CF4C ldrh r0, [r3, 0xA] adds r0, 0x1 strh r0, [r3, 0xA] b _0810CF54 .align 2, 0 _0810CF44: .4byte gTasks _0810CF48: .4byte REG_BLDALPHA _0810CF4C: movs r0, 0 strh r0, [r3, 0xC] ldr r0, _0810CF58 @ =sub_810CF5C str r0, [r3] _0810CF54: pop {r0} bx r0 .align 2, 0 _0810CF58: .4byte sub_810CF5C thumb_func_end sub_810CF18 thumb_func_start sub_810CF5C sub_810CF5C: @ 810CF5C push {r4,lr} lsls r0, 24 lsrs r0, 24 ldr r2, _0810CF94 @ =REG_BLDALPHA ldr r3, _0810CF98 @ =0x00001010 adds r1, r3, 0 strh r1, [r2] ldr r2, _0810CF9C @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r4, r1, r2 ldrh r1, [r4, 0xC] cmp r1, 0x7 bhi _0810CFA4 adds r0, r1, 0x1 strh r0, [r4, 0xC] lsls r1, 1 ldr r0, _0810CFA0 @ =gUnknown_083F809C adds r0, r1, r0 movs r2, 0x10 subs r2, r1 lsls r2, 16 lsrs r2, 16 movs r1, 0xE0 bl LoadPalette b _0810CFB6 .align 2, 0 _0810CF94: .4byte REG_BLDALPHA _0810CF98: .4byte 0x00001010 _0810CF9C: .4byte gTasks _0810CFA0: .4byte gUnknown_083F809C _0810CFA4: ldr r0, _0810CFBC @ =gCaveTransitionPalette_White movs r1, 0 movs r2, 0x20 bl LoadPalette ldr r0, _0810CFC0 @ =sub_810CFC4 str r0, [r4] movs r0, 0x8 strh r0, [r4, 0xC] _0810CFB6: pop {r4} pop {r0} bx r0 .align 2, 0 _0810CFBC: .4byte gCaveTransitionPalette_White _0810CFC0: .4byte sub_810CFC4 thumb_func_end sub_810CF5C thumb_func_start sub_810CFC4 sub_810CFC4: @ 810CFC4 push {lr} lsls r0, 24 lsrs r0, 24 ldr r2, _0810CFE4 @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r2 ldrh r2, [r1, 0xC] movs r3, 0xC ldrsh r0, [r1, r3] cmp r0, 0 beq _0810CFE8 subs r0, r2, 0x1 strh r0, [r1, 0xC] b _0810CFF0 .align 2, 0 _0810CFE4: .4byte gTasks _0810CFE8: ldr r0, _0810CFF4 @ =gMain ldr r0, [r0, 0x8] bl SetMainCallback2 _0810CFF0: pop {r0} bx r0 .align 2, 0 _0810CFF4: .4byte gMain thumb_func_end sub_810CFC4 thumb_func_start sub_810CFF8 sub_810CFF8: @ 810CFF8 push {lr} ldr r0, _0810D008 @ =sub_810D00C movs r1, 0 bl CreateTask pop {r0} bx r0 .align 2, 0 _0810D008: .4byte sub_810D00C thumb_func_end sub_810CFF8 thumb_func_start sub_810D00C sub_810D00C: @ 810D00C lsls r0, 24 lsrs r0, 24 ldr r2, _0810D020 @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r2 ldr r0, _0810D024 @ =sub_810D028 str r0, [r1] bx lr .align 2, 0 _0810D020: .4byte gTasks _0810D024: .4byte sub_810D028 thumb_func_end sub_810D00C thumb_func_start sub_810D028 sub_810D028: @ 810D028 push {r4-r6,lr} adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 movs r6, 0x80 lsls r6, 19 movs r4, 0 strh r4, [r6] ldr r0, _0810D098 @ =gCaveTransitionTiles ldr r1, _0810D09C @ =0x0600c000 bl LZ77UnCompVram ldr r0, _0810D0A0 @ =gCaveTransitionTilemap ldr r1, _0810D0A4 @ =0x0600f800 bl LZ77UnCompVram ldr r0, _0810D0A8 @ =REG_BLDCNT strh r4, [r0] adds r0, 0x2 strh r4, [r0] adds r0, 0x2 strh r4, [r0] ldr r1, _0810D0AC @ =REG_BG0CNT ldr r2, _0810D0B0 @ =0x00001f0c adds r0, r2, 0 strh r0, [r1] movs r1, 0x8A lsls r1, 5 adds r0, r1, 0 strh r0, [r6] ldr r0, _0810D0B4 @ =gCaveTransitionPalette_White movs r1, 0xE0 movs r2, 0x20 bl LoadPalette ldr r0, _0810D0B8 @ =gCaveTransitionPalette_Black movs r1, 0 movs r2, 0x20 bl LoadPalette ldr r1, _0810D0BC @ =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r0, r1 ldr r1, _0810D0C0 @ =sub_810D0C4 str r1, [r0] movs r2, 0 movs r1, 0x10 strh r1, [r0, 0x8] strh r2, [r0, 0xA] strh r2, [r0, 0xC] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _0810D098: .4byte gCaveTransitionTiles _0810D09C: .4byte 0x0600c000 _0810D0A0: .4byte gCaveTransitionTilemap _0810D0A4: .4byte 0x0600f800 _0810D0A8: .4byte REG_BLDCNT _0810D0AC: .4byte REG_BG0CNT _0810D0B0: .4byte 0x00001f0c _0810D0B4: .4byte gCaveTransitionPalette_White _0810D0B8: .4byte gCaveTransitionPalette_Black _0810D0BC: .4byte gTasks _0810D0C0: .4byte sub_810D0C4 thumb_func_end sub_810D028 thumb_func_start sub_810D0C4 sub_810D0C4: @ 810D0C4 push {lr} lsls r0, 24 lsrs r0, 24 ldr r2, _0810D0F8 @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r3, r1, r2 ldrh r1, [r3, 0xC] cmp r1, 0xF bhi _0810D100 adds r2, r1, 0x1 adds r0, r2, 0x1 strh r0, [r3, 0xC] movs r0, 0xF subs r0, r1 lsls r0, 1 ldr r1, _0810D0FC @ =gUnknown_083F808C adds r0, r1 lsls r2, 17 lsrs r2, 16 movs r1, 0xE0 bl LoadPalette b _0810D114 .align 2, 0 _0810D0F8: .4byte gTasks _0810D0FC: .4byte gUnknown_083F808C _0810D100: ldr r1, _0810D118 @ =REG_BLDALPHA ldr r2, _0810D11C @ =0x00001010 adds r0, r2, 0 strh r0, [r1] subs r1, 0x2 ldr r2, _0810D120 @ =0x00003e41 adds r0, r2, 0 strh r0, [r1] ldr r0, _0810D124 @ =sub_810D128 str r0, [r3] _0810D114: pop {r0} bx r0 .align 2, 0 _0810D118: .4byte REG_BLDALPHA _0810D11C: .4byte 0x00001010 _0810D120: .4byte 0x00003e41 _0810D124: .4byte sub_810D128 thumb_func_end sub_810D0C4 thumb_func_start sub_810D128 sub_810D128: @ 810D128 push {lr} lsls r0, 24 lsrs r0, 24 ldr r2, _0810D158 @ =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r3, r1, r2 ldrh r0, [r3, 0xA] movs r1, 0x10 subs r1, r0 lsls r1, 16 movs r2, 0x80 lsls r2, 21 adds r0, r1, r2 lsrs r0, 16 ldr r2, _0810D15C @ =REG_BLDALPHA strh r0, [r2] cmp r1, 0 beq _0810D160 ldrh r0, [r3, 0xA] adds r0, 0x1 strh r0, [r3, 0xA] b _0810D172 .align 2, 0 _0810D158: .4byte gTasks _0810D15C: .4byte REG_BLDALPHA _0810D160: ldr r0, _0810D178 @ =gCaveTransitionPalette_Black movs r1, 0 movs r2, 0x20 bl LoadPalette ldr r0, _0810D17C @ =gMain ldr r0, [r0, 0x8] bl SetMainCallback2 _0810D172: pop {r0} bx r0 .align 2, 0 _0810D178: .4byte gCaveTransitionPalette_Black _0810D17C: .4byte gMain thumb_func_end sub_810D128 .align 2, 0 @ Don't pad with nop.