diff options
-rw-r--r-- | asm/field_effect.s | 10 | ||||
-rw-r--r-- | asm/field_effect_helpers.s | 6 | ||||
-rw-r--r-- | asm/field_screen_effect.s | 623 | ||||
-rw-r--r-- | asm/field_tasks.s | 697 | ||||
-rw-r--r-- | asm/overworld.s | 34 | ||||
-rw-r--r-- | data/field_tasks.s | 22 | ||||
-rw-r--r-- | data/field_weather.s | 3 | ||||
-rw-r--r-- | data/maps/FourIsland_IcefallCave_1F/scripts.inc | 2 | ||||
-rw-r--r-- | data/overworld.s | 2 | ||||
-rw-r--r-- | data/specials.inc | 2 | ||||
-rw-r--r-- | include/bike.h | 1 | ||||
-rw-r--r-- | include/field_effect_helpers.h | 1 | ||||
-rw-r--r-- | include/field_screen_effect.h | 6 | ||||
-rw-r--r-- | include/overworld.h | 4 | ||||
-rw-r--r-- | ld_script.txt | 5 | ||||
-rw-r--r-- | src/field_fadetransition.c | 14 | ||||
-rw-r--r-- | src/field_screen_effect.c | 265 | ||||
-rw-r--r-- | src/field_tasks.c | 293 | ||||
-rw-r--r-- | src/scrcmd.c | 2 | ||||
-rw-r--r-- | src/seagallop.c | 2 |
20 files changed, 605 insertions, 1389 deletions
diff --git a/asm/field_effect.s b/asm/field_effect.s index bc2a2fceb..2f1aa5e61 100644 --- a/asm/field_effect.s +++ b/asm/field_effect.s @@ -2854,7 +2854,7 @@ sub_80849A0: @ 80849A0 ands r0, r1 cmp r0, 0 bne _080849DC - bl sub_8055FC4 + bl BGMusicStopped lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -3878,7 +3878,7 @@ sub_8085168: @ 8085168 ands r0, r1 cmp r0, 0 bne _080851A0 - bl sub_8055FC4 + bl BGMusicStopped lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -4383,7 +4383,7 @@ sub_808554C: @ 808554C ands r0, r1 cmp r0, 0 bne _08085584 - bl sub_8055FC4 + bl BGMusicStopped lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -4601,7 +4601,7 @@ _08085702: ands r0, r1 cmp r0, 0 bne _08085750 - bl sub_8055FC4 + bl BGMusicStopped lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 @@ -5400,7 +5400,7 @@ sub_8085D34: @ 8085D34 ands r0, r1 cmp r0, 0 bne _08085D70 - bl sub_8055FC4 + bl BGMusicStopped lsls r0, 24 lsrs r0, 24 cmp r0, 0x1 diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 3f2cf04d1..2797accf4 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -2691,8 +2691,8 @@ _080DC234: .4byte gFieldEffectObjectTemplatePointers _080DC238: .4byte gSprites thumb_func_end FldEff_Unknown22 - thumb_func_start ash -ash: @ 80DC23C + thumb_func_start StartAshFieldEffect +StartAshFieldEffect: @ 80DC23C push {r4,lr} lsls r2, 16 lsrs r2, 16 @@ -2718,7 +2718,7 @@ ash: @ 80DC23C bx r0 .align 2, 0 _080DC26C: .4byte gFieldEffectArguments - thumb_func_end ash + thumb_func_end StartAshFieldEffect thumb_func_start oei_ash oei_ash: @ 80DC270 diff --git a/asm/field_screen_effect.s b/asm/field_screen_effect.s index 6e5a0dc5f..f0ca0f77e 100644 --- a/asm/field_screen_effect.s +++ b/asm/field_screen_effect.s @@ -5,629 +5,6 @@ .text - thumb_func_start UpdateFlashLevelEffect -UpdateFlashLevelEffect: @ 807EEB8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _0807EEDC @ =gTasks+0x8 - adds r4, r0, r1 - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _0807EF14 - cmp r0, 0x1 - bgt _0807EEE0 - cmp r0, 0 - beq _0807EEE6 - b _0807EF76 - .align 2, 0 -_0807EEDC: .4byte gTasks+0x8 -_0807EEE0: - cmp r0, 0x2 - beq _0807EF6C - b _0807EF76 -_0807EEE6: - ldr r0, _0807EF0C @ =gScanlineEffect - ldrb r1, [r0, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - ldr r1, _0807EF10 @ =gScanlineEffectRegBuffers - adds r0, r1 - movs r2, 0x2 - ldrsh r1, [r4, r2] - movs r3, 0x4 - ldrsh r2, [r4, r3] - movs r5, 0x6 - ldrsh r3, [r4, r5] - bl SetFlashScanlineEffectWindowBoundaries - movs r0, 0x1 - strh r0, [r4] - b _0807EF76 - .align 2, 0 -_0807EF0C: .4byte gScanlineEffect -_0807EF10: .4byte gScanlineEffectRegBuffers -_0807EF14: - ldr r0, _0807EF5C @ =gScanlineEffect - ldrb r1, [r0, 0x14] - lsls r0, r1, 4 - subs r0, r1 - lsls r0, 7 - ldr r1, _0807EF60 @ =gScanlineEffectRegBuffers - adds r0, r1 - movs r6, 0x2 - ldrsh r1, [r4, r6] - movs r3, 0x4 - ldrsh r2, [r4, r3] - movs r6, 0x6 - ldrsh r3, [r4, r6] - bl SetFlashScanlineEffectWindowBoundaries - movs r0, 0 - strh r0, [r4] - ldrh r0, [r4, 0xA] - ldrh r1, [r4, 0x6] - adds r0, r1 - strh r0, [r4, 0x6] - lsls r0, 16 - asrs r0, 16 - movs r2, 0x8 - ldrsh r1, [r4, r2] - cmp r0, r1 - ble _0807EF76 - movs r3, 0xC - ldrsh r0, [r4, r3] - cmp r0, 0x1 - bne _0807EF64 - bl ScanlineEffect_Stop - movs r0, 0x2 - strh r0, [r4] - b _0807EF76 - .align 2, 0 -_0807EF5C: .4byte gScanlineEffect -_0807EF60: .4byte gScanlineEffectRegBuffers -_0807EF64: - adds r0, r5, 0 - bl DestroyTask - b _0807EF76 -_0807EF6C: - bl ScanlineEffect_Clear - adds r0, r5, 0 - bl DestroyTask -_0807EF76: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end UpdateFlashLevelEffect - - thumb_func_start sub_807EF7C -sub_807EF7C: @ 807EF7C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0807EFA0 @ =UpdateFlashLevelEffect - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - bne _0807EF98 - bl EnableBothScriptContexts - adds r0, r4, 0 - bl DestroyTask -_0807EF98: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0807EFA0: .4byte UpdateFlashLevelEffect - thumb_func_end sub_807EF7C - - thumb_func_start sub_807EFA4 -sub_807EFA4: @ 807EFA4 - push {r4,lr} - ldr r4, _0807EFC4 @ =sub_807EF7C - adds r0, r4, 0 - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - bne _0807EFBC - adds r0, r4, 0 - movs r1, 0x50 - bl CreateTask -_0807EFBC: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0807EFC4: .4byte sub_807EF7C - thumb_func_end sub_807EFA4 - - thumb_func_start sub_807EFC8 -sub_807EFC8: @ 807EFC8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r8, r0 - mov r9, r1 - adds r5, r2, 0 - adds r4, r3, 0 - ldr r6, [sp, 0x1C] - ldr r0, [sp, 0x20] - lsls r0, 24 - lsrs r7, r0, 24 - ldr r0, _0807F00C @ =UpdateFlashLevelEffect - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _0807F010 @ =gTasks+0x8 - adds r1, r0, r1 - strh r5, [r1, 0x6] - strh r4, [r1, 0x8] - mov r0, r8 - strh r0, [r1, 0x2] - mov r0, r9 - strh r0, [r1, 0x4] - strh r6, [r1, 0xC] - cmp r5, r4 - bge _0807F014 - strh r7, [r1, 0xA] - b _0807F018 - .align 2, 0 -_0807F00C: .4byte UpdateFlashLevelEffect -_0807F010: .4byte gTasks+0x8 -_0807F014: - negs r0, r7 - strh r0, [r1, 0xA] -_0807F018: - adds r0, r2, 0 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_807EFC8 - - thumb_func_start sub_807F028 -sub_807F028: @ 807F028 - push {r4,r5,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r0, 24 - adds r4, r0, 0 - bl Overworld_GetFlashLevel - lsls r0, 24 - lsrs r0, 24 - movs r5, 0 - cmp r4, 0 - bne _0807F042 - movs r5, 0x1 -_0807F042: - ldr r1, _0807F070 @ =sFlashLevelPixelRadii - lsls r0, 1 - adds r0, r1 - ldrh r2, [r0] - lsls r0, r4, 1 - adds r0, r1 - ldrh r3, [r0] - str r5, [sp] - movs r0, 0x2 - str r0, [sp, 0x4] - movs r0, 0x78 - movs r1, 0x50 - bl sub_807EFC8 - bl sub_807EFA4 - bl ScriptContext2_Enable - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0807F070: .4byte sFlashLevelPixelRadii - thumb_func_end sub_807F028 - - thumb_func_start WriteFlashScanlineEffectBuffer -WriteFlashScanlineEffectBuffer: @ 807F074 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _0807F0A2 - ldr r4, _0807F0A8 @ =gScanlineEffectRegBuffers - ldr r1, _0807F0AC @ =sFlashLevelPixelRadii - lsls r0, 1 - adds r0, r1 - ldrh r3, [r0] - adds r0, r4, 0 - movs r1, 0x78 - movs r2, 0x50 - bl SetFlashScanlineEffectWindowBoundaries - movs r0, 0xF0 - lsls r0, 3 - adds r1, r4, r0 - movs r2, 0xF0 - lsls r2, 1 - adds r0, r4, 0 - bl CpuFastSet -_0807F0A2: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0807F0A8: .4byte gScanlineEffectRegBuffers -_0807F0AC: .4byte sFlashLevelPixelRadii - thumb_func_end WriteFlashScanlineEffectBuffer - - thumb_func_start sub_807F0B0 -sub_807F0B0: @ 807F0B0 - push {lr} - bl Overworld_FadeOutMapMusic - ldr r0, _0807F0C4 @ =task50_0807F0C8 - movs r1, 0x50 - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_0807F0C4: .4byte task50_0807F0C8 - thumb_func_end sub_807F0B0 - - thumb_func_start task50_0807F0C8 -task50_0807F0C8: @ 807F0C8 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_8055FC4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0807F0E4 - adds r0, r4, 0 - bl DestroyTask - bl EnableBothScriptContexts -_0807F0E4: - pop {r4} - pop {r0} - bx r0 - thumb_func_end task50_0807F0C8 - - thumb_func_start sub_807F0EC -sub_807F0EC: @ 807F0EC - push {lr} - ldr r0, _0807F10C @ =sub_807F204 - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0807F110 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r0, 0 - strh r0, [r1, 0x1C] - pop {r0} - bx r0 - .align 2, 0 -_0807F10C: .4byte sub_807F204 -_0807F110: .4byte gTasks - thumb_func_end sub_807F0EC - - thumb_func_start sub_807F114 -sub_807F114: @ 807F114 - push {lr} - ldr r0, _0807F134 @ =sub_807F204 - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0807F138 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r0, 0x1 - strh r0, [r1, 0x1C] - pop {r0} - bx r0 - .align 2, 0 -_0807F134: .4byte sub_807F204 -_0807F138: .4byte gTasks - thumb_func_end sub_807F114 - - thumb_func_start sub_807F13C -sub_807F13C: @ 807F13C - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _0807F19C @ =gTasks+0x8 - adds r4, r0 - movs r0, 0 - bl GetGpuReg - strh r0, [r4] - movs r0, 0x48 - bl GetGpuReg - strh r0, [r4, 0x2] - movs r0, 0x4A - bl GetGpuReg - strh r0, [r4, 0x4] - movs r0, 0x50 - bl GetGpuReg - strh r0, [r4, 0x6] - movs r0, 0x52 - bl GetGpuReg - strh r0, [r4, 0x8] - movs r0, 0x40 - bl GetGpuReg - strh r0, [r4, 0xA] - movs r0, 0x44 - bl GetGpuReg - strh r0, [r4, 0xC] - movs r0, 0x42 - bl GetGpuReg - strh r0, [r4, 0xE] - movs r0, 0x46 - bl GetGpuReg - strh r0, [r4, 0x10] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0807F19C: .4byte gTasks+0x8 - thumb_func_end sub_807F13C - - thumb_func_start sub_807F1A0 -sub_807F1A0: @ 807F1A0 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - ldr r0, _0807F200 @ =gTasks+0x8 - adds r4, r0 - ldrh r1, [r4] - movs r0, 0 - bl SetGpuReg - ldrh r1, [r4, 0x2] - movs r0, 0x48 - bl SetGpuReg - ldrh r1, [r4, 0x4] - movs r0, 0x4A - bl SetGpuReg - ldrh r1, [r4, 0x6] - movs r0, 0x50 - bl SetGpuReg - ldrh r1, [r4, 0x8] - movs r0, 0x52 - bl SetGpuReg - ldrh r1, [r4, 0xA] - movs r0, 0x40 - bl SetGpuReg - ldrh r1, [r4, 0xC] - movs r0, 0x44 - bl SetGpuReg - ldrh r1, [r4, 0xE] - movs r0, 0x42 - bl SetGpuReg - ldrh r1, [r4, 0x10] - movs r0, 0x46 - bl SetGpuReg - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0807F200: .4byte gTasks+0x8 - thumb_func_end sub_807F1A0 - - thumb_func_start sub_807F204 -sub_807F204: @ 807F204 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - ldr r1, _0807F228 @ =gTasks+0x8 - adds r5, r0, r1 - movs r1, 0x12 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _0807F2BC - cmp r0, 0x1 - bgt _0807F22C - cmp r0, 0 - beq _0807F236 - b _0807F2F4 - .align 2, 0 -_0807F228: .4byte gTasks+0x8 -_0807F22C: - cmp r0, 0x2 - beq _0807F2D0 - cmp r0, 0x3 - beq _0807F2E8 - b _0807F2F4 -_0807F236: - adds r0, r4, 0 - bl sub_807F13C - movs r1, 0x80 - lsls r1, 6 - movs r0, 0 - bl SetGpuRegBits - movs r1, 0x80 - lsls r1, 7 - movs r0, 0 - bl SetGpuRegBits - movs r1, 0x14 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _0807F280 - movs r0, 0x40 - movs r1, 0 - bl SetGpuReg - ldr r1, _0807F27C @ =0x0000f0ff - movs r0, 0x42 - bl SetGpuReg - movs r0, 0x44 - movs r1, 0xFF - bl SetGpuReg - movs r0, 0x46 - movs r1, 0xFF - bl SetGpuReg - b _0807F2A0 - .align 2, 0 -_0807F27C: .4byte 0x0000f0ff -_0807F280: - movs r0, 0x40 - movs r1, 0x78 - bl SetGpuReg - movs r0, 0x44 - movs r1, 0xFF - bl SetGpuReg - ldr r1, _0807F2B8 @ =0x000078ff - movs r0, 0x42 - bl SetGpuReg - movs r0, 0x46 - movs r1, 0xFF - bl SetGpuReg -_0807F2A0: - movs r0, 0x48 - movs r1, 0 - bl SetGpuReg - movs r0, 0x4A - movs r1, 0x3F - bl SetGpuReg - movs r0, 0x1 - strh r0, [r5, 0x12] - b _0807F2F4 - .align 2, 0 -_0807F2B8: .4byte 0x000078ff -_0807F2BC: - ldr r0, _0807F2CC @ =sub_807F2FC - movs r1, 0x50 - bl CreateTask - movs r0, 0x2 - strh r0, [r5, 0x12] - b _0807F2F4 - .align 2, 0 -_0807F2CC: .4byte sub_807F2FC -_0807F2D0: - ldr r0, _0807F2E4 @ =sub_807F2FC - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - bne _0807F2F4 - movs r0, 0x3 - strh r0, [r5, 0x12] - b _0807F2F4 - .align 2, 0 -_0807F2E4: .4byte sub_807F2FC -_0807F2E8: - adds r0, r4, 0 - bl sub_807F1A0 - adds r0, r4, 0 - bl DestroyTask -_0807F2F4: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_807F204 - - thumb_func_start sub_807F2FC -sub_807F2FC: @ 807F2FC - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r5, r0, 24 - mov r8, r5 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r4, _0807F348 @ =gTasks+0x8 - adds r6, r0, r4 - ldr r0, _0807F34C @ =sub_807F204 - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r4, r1 - movs r1, 0x14 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _0807F350 - ldrh r4, [r6] - movs r0, 0xF0 - subs r0, r4 - lsls r0, 16 - lsrs r7, r0, 16 - lsls r0, r4, 16 - asrs r0, 16 - cmp r0, 0x78 - ble _0807F36C - adds r0, r5, 0 - bl DestroyTask - b _0807F39A - .align 2, 0 -_0807F348: .4byte gTasks+0x8 -_0807F34C: .4byte sub_807F204 -_0807F350: - ldrh r0, [r6] - movs r1, 0x78 - subs r1, r0 - lsls r1, 16 - adds r0, 0x78 - lsls r0, 16 - lsrs r7, r0, 16 - lsrs r4, r1, 16 - cmp r1, 0 - bge _0807F36C - mov r0, r8 - bl DestroyTask - b _0807F39A -_0807F36C: - lsls r4, 16 - lsrs r1, r4, 16 - movs r0, 0x40 - bl SetGpuReg - lsls r1, r7, 16 - asrs r1, 8 - movs r0, 0xF0 - orrs r1, r0 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x42 - bl SetGpuReg - asrs r4, 16 - cmp r4, 0x59 - bgt _0807F394 - ldrh r0, [r6] - adds r0, 0x4 - b _0807F398 -_0807F394: - ldrh r0, [r6] - adds r0, 0x2 -_0807F398: - strh r0, [r6] -_0807F39A: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_807F2FC - thumb_func_start sub_807F3A4 sub_807F3A4: @ 807F3A4 push {r4-r7,lr} diff --git a/asm/field_tasks.s b/asm/field_tasks.s deleted file mode 100644 index b4106c021..000000000 --- a/asm/field_tasks.s +++ /dev/null @@ -1,697 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start task_per_step_callback_manager -task_per_step_callback_manager: @ 806E810 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0806E834 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r2, 0x8 - ldrsh r1, [r1, r2] - ldr r2, _0806E838 @ =gUnknown_83A7310 - lsls r1, 2 - adds r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {r0} - bx r0 - .align 2, 0 -_0806E834: .4byte gTasks -_0806E838: .4byte gUnknown_83A7310 - thumb_func_end task_per_step_callback_manager - - thumb_func_start sub_806E83C -sub_806E83C: @ 806E83C - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _0806E874 @ =gTasks+0x8 - adds r4, r1, r0 - bl ScriptContext2_IsEnabled - lsls r0, 24 - cmp r0, 0 - bne _0806E86C - ldr r0, _0806E878 @ =gUnknown_203ADFA - ldrb r0, [r0] - subs r0, 0x2 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bls _0806E86C - adds r0, r4, 0x2 - adds r1, r4, 0x4 - bl sub_8056078 -_0806E86C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806E874: .4byte gTasks+0x8 -_0806E878: .4byte gUnknown_203ADFA - thumb_func_end sub_806E83C - - thumb_func_start sub_806E87C -sub_806E87C: @ 806E87C - push {r4,r5,lr} - ldr r5, _0806E8C4 @ =task_per_step_callback_manager - adds r0, r5, 0 - bl FuncIsActiveTask - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _0806E8A6 - adds r0, r5, 0 - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0806E8C8 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0x8] -_0806E8A6: - ldr r4, _0806E8CC @ =sub_806E83C - adds r0, r4, 0 - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - bne _0806E8BC - adds r0, r4, 0 - movs r1, 0x50 - bl CreateTask -_0806E8BC: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806E8C4: .4byte task_per_step_callback_manager -_0806E8C8: .4byte gTasks -_0806E8CC: .4byte sub_806E83C - thumb_func_end sub_806E87C - - thumb_func_start ActivatePerStepCallback -ActivatePerStepCallback: @ 806E8D0 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0806E908 @ =task_per_step_callback_manager - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xFF - beq _0806E912 - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - ldr r1, _0806E90C @ =gTasks+0x8 - adds r1, r0, r1 - movs r2, 0 - adds r0, r1, 0 - adds r0, 0x1E -_0806E8F4: - strh r2, [r0] - subs r0, 0x2 - cmp r0, r1 - bge _0806E8F4 - cmp r4, 0x7 - bls _0806E910 - movs r0, 0 - strh r0, [r1] - b _0806E912 - .align 2, 0 -_0806E908: .4byte task_per_step_callback_manager -_0806E90C: .4byte gTasks+0x8 -_0806E910: - strh r4, [r1] -_0806E912: - pop {r4} - pop {r0} - bx r0 - thumb_func_end ActivatePerStepCallback - - thumb_func_start wild_encounter_reset_coro_args -wild_encounter_reset_coro_args: @ 806E918 - push {lr} - ldr r0, _0806E948 @ =task_per_step_callback_manager - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r1, r0, 24 - ldr r0, _0806E94C @ =sub_806E83C - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xFF - beq _0806E942 - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - ldr r1, _0806E950 @ =gTasks+0x8 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x2] - strh r1, [r0, 0x4] -_0806E942: - pop {r0} - bx r0 - .align 2, 0 -_0806E948: .4byte task_per_step_callback_manager -_0806E94C: .4byte sub_806E83C -_0806E950: .4byte gTasks+0x8 - thumb_func_end wild_encounter_reset_coro_args - - thumb_func_start nullsub_40 -nullsub_40: @ 806E954 - bx lr - thumb_func_end nullsub_40 - - thumb_func_start sub_806E958 -sub_806E958: @ 806E958 - push {r4,r5,lr} - movs r3, 0 - ldr r4, _0806E988 @ =gUnknown_83A7330 - lsls r0, 16 - asrs r5, r0, 16 - lsls r1, 16 - asrs r1, 16 -_0806E966: - lsls r2, r3, 1 - adds r0, r2, r4 - ldrb r0, [r0] - adds r0, 0x7 - cmp r0, r5 - bne _0806E98C - adds r0, r4, 0x1 - adds r0, r2, r0 - ldrb r0, [r0] - adds r0, 0x7 - cmp r0, r1 - bne _0806E98C - adds r0, r3, 0x1 - bl FlagSet - b _0806E996 - .align 2, 0 -_0806E988: .4byte gUnknown_83A7330 -_0806E98C: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x8 - bls _0806E966 -_0806E996: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_806E958 - - thumb_func_start sub_806E99C -sub_806E99C: @ 806E99C - push {r4-r7,lr} - movs r4, 0 - ldr r6, _0806E9D8 @ =gUnknown_83A7330 - adds r7, r6, 0x1 -_0806E9A4: - adds r5, r4, 0x1 - adds r0, r5, 0 - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806E9C8 - lsls r1, r4, 1 - adds r0, r1, r6 - ldrb r0, [r0] - adds r0, 0x7 - adds r1, r7 - ldrb r1, [r1] - adds r1, 0x7 - ldr r2, _0806E9DC @ =0x0000035a - bl MapGridSetMetatileIdAt -_0806E9C8: - lsls r0, r5, 24 - lsrs r4, r0, 24 - cmp r4, 0x8 - bls _0806E9A4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0806E9D8: .4byte gUnknown_83A7330 -_0806E9DC: .4byte 0x0000035a - thumb_func_end sub_806E99C - - thumb_func_start sub_806E9E0 -sub_806E9E0: @ 806E9E0 - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _0806EA04 @ =gTasks+0x8 - adds r5, r1, r0 - movs r1, 0x2 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _0806EA2A - cmp r0, 0x1 - bgt _0806EA08 - cmp r0, 0 - beq _0806EA12 - b _0806EB42 - .align 2, 0 -_0806EA04: .4byte gTasks+0x8 -_0806EA08: - cmp r0, 0x2 - beq _0806EAB0 - cmp r0, 0x3 - beq _0806EAF4 - b _0806EB42 -_0806EA12: - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl PlayerGetDestCoords - mov r0, sp - ldrh r0, [r0] - strh r0, [r5, 0x4] - ldrh r0, [r4] - strh r0, [r5, 0x6] - b _0806EB3E -_0806EA2A: - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl PlayerGetDestCoords - mov r0, sp - ldrh r2, [r0] - movs r3, 0 - ldrsh r1, [r0, r3] - movs r3, 0x4 - ldrsh r0, [r5, r3] - cmp r1, r0 - bne _0806EA52 - movs r0, 0 - ldrsh r1, [r4, r0] - movs r3, 0x6 - ldrsh r0, [r5, r3] - cmp r1, r0 - beq _0806EB42 -_0806EA52: - strh r2, [r5, 0x4] - ldrh r0, [r4] - strh r0, [r5, 0x6] - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r4, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r6, r0, 24 - adds r0, r6, 0 - bl MetatileBehavior_IsThinIce - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806EA8E - mov r0, sp - movs r3, 0 - ldrsh r0, [r0, r3] - movs r2, 0 - ldrsh r1, [r4, r2] - bl sub_806E958 - movs r0, 0x4 - strh r0, [r5, 0xC] - movs r0, 0x2 - b _0806EAA2 -_0806EA8E: - adds r0, r6, 0 - bl MetatileBehavior_IsCrackedIce - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806EB42 - movs r0, 0x4 - strh r0, [r5, 0xC] - movs r0, 0x3 -_0806EAA2: - strh r0, [r5, 0x2] - mov r0, sp - ldrh r0, [r0] - strh r0, [r5, 0x8] - ldrh r0, [r4] - strh r0, [r5, 0xA] - b _0806EB42 -_0806EAB0: - ldrh r1, [r5, 0xC] - movs r3, 0xC - ldrsh r0, [r5, r3] - cmp r0, 0 - bne _0806EAFE - mov r1, sp - ldrh r0, [r5, 0x8] - strh r0, [r1] - mov r4, sp - adds r4, 0x2 - ldrh r0, [r5, 0xA] - strh r0, [r4] - movs r0, 0x24 - bl PlaySE - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r4, r2] - ldr r2, _0806EAF0 @ =0x0000035a - bl MapGridSetMetatileIdAt - mov r0, sp - movs r3, 0 - ldrsh r0, [r0, r3] - movs r2, 0 - ldrsh r1, [r4, r2] - bl CurrentMapDrawMetatileAt - b _0806EB3E - .align 2, 0 -_0806EAF0: .4byte 0x0000035a -_0806EAF4: - ldrh r1, [r5, 0xC] - movs r3, 0xC - ldrsh r0, [r5, r3] - cmp r0, 0 - beq _0806EB04 -_0806EAFE: - subs r0, r1, 0x1 - strh r0, [r5, 0xC] - b _0806EB42 -_0806EB04: - mov r1, sp - ldrh r0, [r5, 0x8] - strh r0, [r1] - mov r4, sp - adds r4, 0x2 - ldrh r0, [r5, 0xA] - strh r0, [r4] - movs r0, 0x23 - bl PlaySE - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r4, r2] - ldr r2, _0806EB4C @ =0x0000035b - bl MapGridSetMetatileIdAt - mov r0, sp - movs r3, 0 - ldrsh r0, [r0, r3] - movs r2, 0 - ldrsh r1, [r4, r2] - bl CurrentMapDrawMetatileAt - ldr r0, _0806EB50 @ =0x00004001 - movs r1, 0x1 - bl VarSet -_0806EB3E: - movs r0, 0x1 - strh r0, [r5, 0x2] -_0806EB42: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806EB4C: .4byte 0x0000035b -_0806EB50: .4byte 0x00004001 - thumb_func_end sub_806E9E0 - - thumb_func_start sub_806EB54 -sub_806EB54: @ 806EB54 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _0806EBD8 @ =gTasks+0x8 - adds r5, r1, r0 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl PlayerGetDestCoords - mov r0, sp - ldrh r2, [r0] - movs r3, 0 - ldrsh r1, [r0, r3] - movs r3, 0x2 - ldrsh r0, [r5, r3] - cmp r1, r0 - bne _0806EB8E - movs r0, 0 - ldrsh r1, [r4, r0] - movs r3, 0x4 - ldrsh r0, [r5, r3] - cmp r1, r0 - beq _0806EBF6 -_0806EB8E: - strh r2, [r5, 0x2] - ldrh r0, [r4] - strh r0, [r5, 0x4] - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r4, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl MetatileBehavior_ReturnFalse_4 - lsls r0, 24 - cmp r0, 0 - beq _0806EBF6 - mov r0, sp - movs r3, 0 - ldrsh r0, [r0, r3] - movs r2, 0 - ldrsh r1, [r4, r2] - bl MapGridGetMetatileIdAt - ldr r1, _0806EBDC @ =0x0000020a - cmp r0, r1 - bne _0806EBE4 - mov r0, sp - movs r3, 0 - ldrsh r0, [r0, r3] - movs r2, 0 - ldrsh r1, [r4, r2] - ldr r2, _0806EBE0 @ =0x00000212 - movs r3, 0x4 - bl ash - b _0806EBF6 - .align 2, 0 -_0806EBD8: .4byte gTasks+0x8 -_0806EBDC: .4byte 0x0000020a -_0806EBE0: .4byte 0x00000212 -_0806EBE4: - mov r0, sp - movs r3, 0 - ldrsh r0, [r0, r3] - movs r2, 0 - ldrsh r1, [r4, r2] - ldr r2, _0806EC00 @ =0x00000206 - movs r3, 0x4 - bl ash -_0806EBF6: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806EC00: .4byte 0x00000206 - thumb_func_end sub_806EB54 - - thumb_func_start sub_806EC04 -sub_806EC04: @ 806EC04 - push {r4,r5,lr} - lsls r0, 16 - asrs r5, r0, 16 - lsls r1, 16 - asrs r4, r1, 16 - adds r0, r5, 0 - adds r1, r4, 0 - bl MapGridGetMetatileIdAt - ldr r1, _0806EC38 @ =0x0000022f - ldr r2, _0806EC3C @ =0x00000237 - cmp r0, r1 - bne _0806EC20 - subs r2, 0x31 -_0806EC20: - adds r0, r5, 0 - adds r1, r4, 0 - bl MapGridSetMetatileIdAt - adds r0, r5, 0 - adds r1, r4, 0 - bl CurrentMapDrawMetatileAt - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806EC38: .4byte 0x0000022f -_0806EC3C: .4byte 0x00000237 - thumb_func_end sub_806EC04 - - thumb_func_start sub_806EC40 -sub_806EC40: @ 806EC40 - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _0806ED10 @ =gTasks+0x8 - adds r5, r1, r0 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl PlayerGetDestCoords - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r4, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 16 - lsrs r7, r0, 16 - ldrh r1, [r5, 0x8] - movs r3, 0x8 - ldrsh r0, [r5, r3] - adds r6, r4, 0 - cmp r0, 0 - beq _0806EC92 - subs r0, r1, 0x1 - strh r0, [r5, 0x8] - lsls r0, 16 - cmp r0, 0 - bne _0806EC92 - movs r1, 0xA - ldrsh r0, [r5, r1] - movs r2, 0xC - ldrsh r1, [r5, r2] - bl sub_806EC04 -_0806EC92: - ldrh r1, [r5, 0xE] - movs r3, 0xE - ldrsh r0, [r5, r3] - cmp r0, 0 - beq _0806ECB2 - subs r0, r1, 0x1 - strh r0, [r5, 0xE] - lsls r0, 16 - cmp r0, 0 - bne _0806ECB2 - movs r1, 0x10 - ldrsh r0, [r5, r1] - movs r2, 0x12 - ldrsh r1, [r5, r2] - bl sub_806EC04 -_0806ECB2: - mov r0, sp - ldrh r2, [r0] - movs r3, 0 - ldrsh r1, [r0, r3] - movs r3, 0x4 - ldrsh r0, [r5, r3] - cmp r1, r0 - bne _0806ECCE - movs r0, 0 - ldrsh r1, [r6, r0] - movs r3, 0x6 - ldrsh r0, [r5, r3] - cmp r1, r0 - beq _0806ED2E -_0806ECCE: - strh r2, [r5, 0x4] - adds r4, r6, 0 - ldrh r0, [r4] - strh r0, [r5, 0x6] - lsls r0, r7, 24 - lsrs r0, 24 - bl MetatileBehavior_ReturnFalse_13 - lsls r0, 24 - cmp r0, 0 - beq _0806ED2E - bl GetPlayerSpeed - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - beq _0806ECF8 - ldr r0, _0806ED14 @ =0x00004030 - movs r1, 0 - bl VarSet -_0806ECF8: - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _0806ED18 - movs r0, 0x3 - strh r0, [r5, 0x8] - mov r0, sp - ldrh r0, [r0] - strh r0, [r5, 0xA] - ldrh r0, [r4] - strh r0, [r5, 0xC] - b _0806ED2E - .align 2, 0 -_0806ED10: .4byte gTasks+0x8 -_0806ED14: .4byte 0x00004030 -_0806ED18: - movs r2, 0xE - ldrsh r0, [r5, r2] - cmp r0, 0 - bne _0806ED2E - movs r0, 0x3 - strh r0, [r5, 0xE] - mov r0, sp - ldrh r0, [r0] - strh r0, [r5, 0x10] - ldrh r0, [r6] - strh r0, [r5, 0x12] -_0806ED2E: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_806EC40 - - thumb_func_start sub_806ED38 -sub_806ED38: @ 806ED38 - push {lr} - ldr r0, _0806ED4C @ =0x00000829 - bl FlagSet - ldr r0, _0806ED50 @ =0x00000828 - bl FlagSet - pop {r0} - bx r0 - .align 2, 0 -_0806ED4C: .4byte 0x00000829 -_0806ED50: .4byte 0x00000828 - thumb_func_end sub_806ED38 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/overworld.s b/asm/overworld.s index 47c5d26af..4fbe39153 100644 --- a/asm/overworld.s +++ b/asm/overworld.s @@ -1737,7 +1737,7 @@ _080558D4: bl RoamerMove bl sub_8110920 bl DoCurrentWeather - bl wild_encounter_reset_coro_args + bl ResetFieldTasksArgs bl mapheader_run_script_with_tag_x5 bl sub_80561B4 ldr r1, _0805591C @ =gMapHeader @@ -2640,15 +2640,15 @@ _08055FB8: _08055FC0: .4byte 0x00004001 thumb_func_end sub_8055F88 - thumb_func_start sub_8055FC4 -sub_8055FC4: @ 8055FC4 + thumb_func_start BGMusicStopped +BGMusicStopped: @ 8055FC4 push {lr} bl IsNotWaitingForBGMStop lsls r0, 24 lsrs r0, 24 pop {r1} bx r1 - thumb_func_end sub_8055FC4 + thumb_func_end BGMusicStopped thumb_func_start Overworld_FadeOutMapMusic Overworld_FadeOutMapMusic: @ 8055FD4 @@ -3941,8 +3941,8 @@ VBlankCB_Field: @ 8056A14 bx r0 thumb_func_end VBlankCB_Field - thumb_func_start sub_8056A34 -sub_8056A34: @ 8056A34 + thumb_func_start InitCurrentFlashLevelScanlineEffect +InitCurrentFlashLevelScanlineEffect: @ 8056A34 push {lr} bl Overworld_GetFlashLevel lsls r0, 24 @@ -3950,7 +3950,7 @@ sub_8056A34: @ 8056A34 cmp r0, 0 beq _08056A52 bl WriteFlashScanlineEffectBuffer - ldr r2, _08056A58 @ =gUnknown_826D330 + ldr r2, _08056A58 @ =gFlashEffectParams ldr r0, [r2] ldr r1, [r2, 0x4] ldr r2, [r2, 0x8] @@ -3959,8 +3959,8 @@ _08056A52: pop {r0} bx r0 .align 2, 0 -_08056A58: .4byte gUnknown_826D330 - thumb_func_end sub_8056A34 +_08056A58: .4byte gFlashEffectParams + thumb_func_end InitCurrentFlashLevelScanlineEffect thumb_func_start sub_8056A5C sub_8056A5C: @ 8056A5C @@ -4015,7 +4015,7 @@ _08056ACE: bl sub_812B35C b _08056B62 _08056AE4: - bl sub_8056A34 + bl InitCurrentFlashLevelScanlineEffect bl sub_8056F1C b _08056B62 _08056AEE: @@ -4157,7 +4157,7 @@ _08056C16: .align 2, 0 _08056C1C: .4byte gUnknown_203ADFA _08056C20: - bl sub_8056A34 + bl InitCurrentFlashLevelScanlineEffect bl sub_8056F1C b _08056CCA _08056C2A: @@ -4346,7 +4346,7 @@ _08056DAE: bl sub_812B35C b _08056E3E _08056DC0: - bl sub_8056A34 + bl InitCurrentFlashLevelScanlineEffect bl sub_8056F1C b _08056E3E _08056DCA: @@ -4513,7 +4513,7 @@ _08056F04: .4byte 0x81000800 thumb_func_start sub_8056F08 sub_8056F08: @ 8056F08 push {lr} - bl sub_8056A34 + bl InitCurrentFlashLevelScanlineEffect bl sub_8056F1C bl mapdata_load_assets_to_gpu_and_full_redraw pop {r0} @@ -4648,7 +4648,7 @@ _08057056: bl sub_807B1B8 cmp r4, 0 bne _0805706A - bl sub_806E87C + bl SetUpFieldTasks _0805706A: bl mapheader_run_script_with_tag_x5 pop {r4} @@ -5057,7 +5057,7 @@ _080573AE: bl sub_8057114 b _08057412 _080573B8: - bl sub_8056A34 + bl InitCurrentFlashLevelScanlineEffect bl sub_8056F1C b _08057412 _080573C2: @@ -5402,11 +5402,11 @@ _0805769C: bl FieldEffectActiveListClear bl sub_8079C08 bl sub_807B1B8 - bl sub_806E87C + bl SetUpFieldTasks bl mapheader_run_script_with_tag_x5 b _0805772A _080576C2: - bl sub_8056A34 + bl InitCurrentFlashLevelScanlineEffect bl sub_8056F1C b _0805772A _080576CC: diff --git a/data/field_tasks.s b/data/field_tasks.s deleted file mode 100644 index 2ff9ad215..000000000 --- a/data/field_tasks.s +++ /dev/null @@ -1,22 +0,0 @@ - .section .rodata - .align 2 -gUnknown_83A7310:: @ 83A7310 - .4byte nullsub_40 - .4byte sub_806EB54 - .4byte nullsub_40 - .4byte nullsub_40 - .4byte sub_806E9E0 - .4byte nullsub_40 - .4byte nullsub_40 - .4byte sub_806EC40 - -gUnknown_83A7330:: @ 83A7330 - .byte 0x08, 0x03 - .byte 0x0a, 0x05 - .byte 0x0f, 0x05 - .byte 0x08, 0x09 - .byte 0x09, 0x09 - .byte 0x10, 0x09 - .byte 0x08, 0x0a - .byte 0x09, 0x0a - .byte 0x08, 0x0e diff --git a/data/field_weather.s b/data/field_weather.s index 090c19f6b..c8acca001 100644 --- a/data/field_weather.s +++ b/data/field_weather.s @@ -390,6 +390,3 @@ gUnknown_83C68B8:: gUnknown_83C68BC:: @ 83C68BC spr_template 4613, 4608, gOamData_AffineOff_ObjNormal_8x8, gUnknown_83C68B8, NULL, gDummySpriteAffineAnimTable, unc_0807DAB4 - -sFlashLevelPixelRadii:: @ 83C68D4 - .2byte 0x00c8, 0x0048, 0x0038, 0x0028, 0x0018, 0x0000 diff --git a/data/maps/FourIsland_IcefallCave_1F/scripts.inc b/data/maps/FourIsland_IcefallCave_1F/scripts.inc index 451541b8c..1c3d8da1f 100644 --- a/data/maps/FourIsland_IcefallCave_1F/scripts.inc +++ b/data/maps/FourIsland_IcefallCave_1F/scripts.inc @@ -9,7 +9,7 @@ FourIsland_IcefallCave_1F_MapScript1_163D54:: @ 8163D54 end FourIsland_IcefallCave_1F_MapScript2_163D57:: @ 8163D57 - special sub_806E99C + special Special_SetIcefallCaveCrackedIceMetatiles end FourIsland_IcefallCave_1F_MapScript3_163D5B:: @ 8163D5B diff --git a/data/overworld.s b/data/overworld.s index b305b3002..245ee3696 100644 --- a/data/overworld.s +++ b/data/overworld.s @@ -97,7 +97,7 @@ gUnknown_826D320:: @ 826D320 @ .baseTile = 0x0000 @ } -gUnknown_826D330:: @ 826D330 +gFlashEffectParams:: @ 826D330 .4byte REG_WIN0H .4byte (2 >> 1) | ((DMA_16BIT | DMA_DEST_RELOAD | DMA_SRC_INC | DMA_REPEAT | DMA_START_HBLANK | DMA_ENABLE) << 16) .byte 1, 0 diff --git a/data/specials.inc b/data/specials.inc index 74ba0c849..f7ca055ef 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -317,7 +317,7 @@ gSpecials:: @ 815FD60 def_special Special_DrawElevatorCurrentFloorWindow def_special nullsub_75 def_special Special_CheckPartyPokerus - def_special sub_806E99C + def_special Special_SetIcefallCaveCrackedIceMetatiles def_special Special_ShakeScreen def_special Special_StartGroudonKyogreBattle def_special Special_StartLegendaryBattle diff --git a/include/bike.h b/include/bike.h index 68cc5f5c9..30049ee8c 100644 --- a/include/bike.h +++ b/include/bike.h @@ -4,5 +4,6 @@ void sub_80BD620(u32 unkC, u32 unk10); bool8 sub_80BD540(void); void StartTransitionToFlipBikeState(u8 flags); +s16 GetPlayerSpeed(void); #endif //GUARD_BIKE_H diff --git a/include/field_effect_helpers.h b/include/field_effect_helpers.h index f2a4f83a7..e1a56a26c 100644 --- a/include/field_effect_helpers.h +++ b/include/field_effect_helpers.h @@ -15,5 +15,6 @@ u8 sub_8154228(void); bool8 sub_8155DA0(struct ObjectEvent *); void sub_80DC44C(u8, u8); +void StartAshFieldEffect(s16, s16, u16, s16); #endif //GUARD_FIELD_EFFECT_HELPERS_H diff --git a/include/field_screen_effect.h b/include/field_screen_effect.h index 86fab62e0..e48745a7b 100644 --- a/include/field_screen_effect.h +++ b/include/field_screen_effect.h @@ -4,11 +4,11 @@ #include "global.h" void sub_80AF79C(void); -void sub_807F028(u8); +void AnimateFlash(u8); void sub_80B0244(void); void sub_807E3EC(void); -void sub_807F114(void); -void sub_807F204(u8 taskId); +void DoOutwardBarnDoorWipe(void); +void Task_BarnDoorWipe(u8 taskId); void sub_807DC00(void); #endif // GUARD_FIELD_SCREEN_EFFECT_H diff --git a/include/overworld.h b/include/overworld.h index 845550a17..04d28701c 100644 --- a/include/overworld.h +++ b/include/overworld.h @@ -122,7 +122,7 @@ void Overworld_ResetStateAfterTeleport(void); void Overworld_FadeOutMapMusic(void); void CB2_LoadMap(void); -bool8 sub_8055FC4(void); +bool8 BGMusicStopped(void); bool8 is_light_level_8_or_9(u8 mapType); bool32 sub_8055C9C(void); void Overworld_ResetStateAfterDigEscRope(void); @@ -148,4 +148,6 @@ void sub_8055778(int); void sub_8055738(u8 loc); +void sub_8056078(void *, void *); + #endif //GUARD_OVERWORLD_H diff --git a/ld_script.txt b/ld_script.txt index afc559688..19fdde8dc 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -106,7 +106,7 @@ SECTIONS { asm/field_control_avatar.o(.text); src/event_data.o(.text); src/coord_event_weather.o(.text); - asm/field_tasks.o(.text); + src/field_tasks.o(.text); src/start_menu.o(.text); src/tileset_anims.o(.text); src/palette.o(.text); @@ -422,7 +422,7 @@ SECTIONS { data/event_object_80688E4.o(.rodata); src/scrcmd.o(.rodata); src/coord_event_weather.o(.rodata); - data/field_tasks.o(.rodata); + src/field_tasks.o(.rodata); src/start_menu.o(.rodata); src/tileset_anims.o(.rodata); src/palette.o(.rodata); @@ -433,6 +433,7 @@ SECTIONS { src/battle_anim_status_effects.o(.rodata); src/title_screen.o(.rodata); data/field_weather.o(.rodata); + src/field_screen_effect.o(.rodata); data/field_screen_effect.o(.rodata); src/battle_setup.o(.rodata); data/cable_club.o(.rodata); diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c index 6627aaf48..e2da82de2 100644 --- a/src/field_fadetransition.c +++ b/src/field_fadetransition.c @@ -330,7 +330,7 @@ static void sub_807DFBC(u8 taskId) case 5: sub_807DCB0(0); FreezeObjectEvents(); - sub_807F114(); + DoOutwardBarnDoorWipe(); sub_807DBAC(); task->data[0] = 6; break; @@ -362,7 +362,7 @@ static void sub_807DFBC(u8 taskId) } break; case 9: - if (sub_807E418() && walkrun_is_standing_still() && !FieldIsDoorAnimationRunning() && !FuncIsActiveTask(sub_807F204)) + if (sub_807E418() && walkrun_is_standing_still() && !FieldIsDoorAnimationRunning() && !FuncIsActiveTask(Task_BarnDoorWipe)) { ObjectEventClearHeldMovementIfFinished(&gObjectEvents[GetObjectEventIdByLocalIdAndMap(0xFF, 0, 0)]); task->data[0] = 4; @@ -627,7 +627,7 @@ static void sub_807E5EC(u8 taskId) task->data[0]++; break; case 1: - if (!sub_807E40C() && sub_8055FC4()) + if (!sub_807E40C() && BGMusicStopped()) task->data[0]++; break; case 2: @@ -660,7 +660,7 @@ static void sub_807E678(u8 taskId) data[0]++; break; case 1: - if (!sub_807E40C() && sub_8055FC4()) + if (!sub_807E40C() && BGMusicStopped()) { sub_800AAC0(); data[0]++; @@ -693,7 +693,7 @@ static void sub_807E718(u8 taskId) task->data[0]++; break; case 1: - if (!sub_807E40C() && sub_8055FC4()) + if (!sub_807E40C() && BGMusicStopped()) task->data[0]++; break; case 2: @@ -724,7 +724,7 @@ static void sub_807E784(u8 taskId) } break; case 2: - if (!sub_807E40C() && sub_8055FC4()) + if (!sub_807E40C() && BGMusicStopped()) task->data[0]++; break; case 3: @@ -828,7 +828,7 @@ static void sub_807E980(u8 taskId) break; case 3: sub_807EAC4(data[2], data[3], &data[4], &data[5], &data[6]); - if (!sub_807E40C() && sub_8055FC4()) + if (!sub_807E40C() && BGMusicStopped()) data[0]++; break; default: diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c index 19ed25950..a552c47a2 100644 --- a/src/field_screen_effect.c +++ b/src/field_screen_effect.c @@ -1,6 +1,19 @@ #include "global.h" +#include "field_screen_effect.h" +#include "gpu_regs.h" +#include "overworld.h" +#include "scanline_effect.h" +#include "script.h" +#include "task.h" -void SetFlashScanlineEffectWindowBoundary(u16 *dest, u32 y, s32 left, s32 right) +static const u16 sFlashLevelPixelRadii[] = { + 0x00c8, 0x0048, 0x0038, 0x0028, 0x0018, 0x0000 +}; + +static void Task_EnableScriptAfterMusicFade(u8 taskId); +static void Task_BarnDoorWipeChild(u8 taskId); + +static void SetFlashScanlineEffectWindowBoundary(u16 *dest, u32 y, s32 left, s32 right) { if (y <= 160) { @@ -73,3 +86,253 @@ void SetFlashScanlineEffectWindowBoundaries(u16 *dest, s32 centerX, s32 centerY, } } } + +#define tState data[0] +#define tFlashCenterX data[1] +#define tFlashCenterY data[2] +#define tCurFlashRadius data[3] +#define tDestFlashRadius data[4] +#define tFlashRadiusDelta data[5] +#define tClearScanlineEffect data[6] + +static void UpdateFlashLevelEffect(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + switch (tState) + { + case 0: + SetFlashScanlineEffectWindowBoundaries(gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer], tFlashCenterX, tFlashCenterY, tCurFlashRadius); + tState = 1; + break; + case 1: + SetFlashScanlineEffectWindowBoundaries(gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer], tFlashCenterX, tFlashCenterY, tCurFlashRadius); + tState = 0; + tCurFlashRadius += tFlashRadiusDelta; + if (tCurFlashRadius > tDestFlashRadius) + { + if (tClearScanlineEffect == TRUE) + { + ScanlineEffect_Stop(); + tState = 2; + } + else + { + DestroyTask(taskId); + } + } + break; + case 2: + ScanlineEffect_Clear(); + DestroyTask(taskId); + break; + } +} + +static void sub_807EF7C(u8 taskId) +{ + if (!FuncIsActiveTask(UpdateFlashLevelEffect)) + { + EnableBothScriptContexts(); + DestroyTask(taskId); + } +} + +static void sub_807EFA4(void) +{ + if (!FuncIsActiveTask(sub_807EF7C)) + CreateTask(sub_807EF7C, 80); +} + +static u8 sub_807EFC8(s32 centerX, s32 centerY, s32 initialFlashRadius, s32 destFlashRadius, bool32 clearScanlineEffect, u8 delta) +{ + u8 taskId = CreateTask(UpdateFlashLevelEffect, 80); + s16 *data = gTasks[taskId].data; + + tCurFlashRadius = initialFlashRadius; + tDestFlashRadius = destFlashRadius; + tFlashCenterX = centerX; + tFlashCenterY = centerY; + tClearScanlineEffect = clearScanlineEffect; + + if (initialFlashRadius < destFlashRadius) + tFlashRadiusDelta = delta; + else + tFlashRadiusDelta = -delta; + + return taskId; +} + +#undef tState +#undef tCurFlashRadius +#undef tDestFlashRadius +#undef tFlashRadiusDelta +#undef tClearScanlineEffect + +void AnimateFlash(u8 flashLevel) +{ + u8 curFlashLevel = Overworld_GetFlashLevel(); + bool32 value = FALSE; + if (!flashLevel) + value = TRUE; + sub_807EFC8(120, 80, sFlashLevelPixelRadii[curFlashLevel], sFlashLevelPixelRadii[flashLevel], value, 2); + sub_807EFA4(); + ScriptContext2_Enable(); +} + +void WriteFlashScanlineEffectBuffer(u8 flashLevel) +{ + if (flashLevel) + { + SetFlashScanlineEffectWindowBoundaries(&gScanlineEffectRegBuffers[0][0], 120, 80, sFlashLevelPixelRadii[flashLevel]); + CpuFastCopy(&gScanlineEffectRegBuffers[0], &gScanlineEffectRegBuffers[1], 240 * 8); + } +} + +void sub_807F0B0(void) +{ + Overworld_FadeOutMapMusic(); + CreateTask(Task_EnableScriptAfterMusicFade, 80); +} + +static void Task_EnableScriptAfterMusicFade(u8 taskId) +{ + if (BGMusicStopped() == TRUE) + { + DestroyTask(taskId); + EnableBothScriptContexts(); + } +} + +#define tState data[9] +#define tDirection data[10] +#define DIR_WIPE_IN 0 // From edges to center. +#define DIR_WIPE_OUT 1 // From center to edges. +#define tChildOffset data[0] + +static void DoInwardBarnDoorFade(void) +{ + u8 taskId = CreateTask(Task_BarnDoorWipe, 80); + gTasks[taskId].tDirection = DIR_WIPE_IN; +} + +void DoOutwardBarnDoorWipe(void) +{ + u8 taskId = CreateTask(Task_BarnDoorWipe, 80); + gTasks[taskId].tDirection = DIR_WIPE_OUT; +} + +static void BarnDoorWipeSaveGpuRegs(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + data[0] = GetGpuReg(REG_OFFSET_DISPCNT); + data[1] = GetGpuReg(REG_OFFSET_WININ); + data[2] = GetGpuReg(REG_OFFSET_WINOUT); + data[3] = GetGpuReg(REG_OFFSET_BLDCNT); + data[4] = GetGpuReg(REG_OFFSET_BLDALPHA); + data[5] = GetGpuReg(REG_OFFSET_WIN0H); + data[6] = GetGpuReg(REG_OFFSET_WIN0V); + data[7] = GetGpuReg(REG_OFFSET_WIN1H); + data[8] = GetGpuReg(REG_OFFSET_WIN1V); +} + +static void BarnDoorWipeLoadGpuRegs(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + SetGpuReg(REG_OFFSET_DISPCNT, data[0]); + SetGpuReg(REG_OFFSET_WININ, data[1]); + SetGpuReg(REG_OFFSET_WINOUT, data[2]); + SetGpuReg(REG_OFFSET_BLDCNT, data[3]); + SetGpuReg(REG_OFFSET_BLDALPHA, data[4]); + SetGpuReg(REG_OFFSET_WIN0H, data[5]); + SetGpuReg(REG_OFFSET_WIN0V, data[6]); + SetGpuReg(REG_OFFSET_WIN1H, data[7]); + SetGpuReg(REG_OFFSET_WIN1V, data[8]); +} + +void Task_BarnDoorWipe(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + switch (tState) + { + case 0: + BarnDoorWipeSaveGpuRegs(taskId); + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON); + SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN1_ON); + if (data[10] == 0) + { + SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(0, 0)); + SetGpuReg(REG_OFFSET_WIN1H, WIN_RANGE(240, 255)); + SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(0, 255)); + SetGpuReg(REG_OFFSET_WIN1V, WIN_RANGE(0, 255)); + } + else + { + SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(0, 120)); + SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(0, 255)); + SetGpuReg(REG_OFFSET_WIN1H, WIN_RANGE(120, 255)); + SetGpuReg(REG_OFFSET_WIN1V, WIN_RANGE(0, 255)); + } + SetGpuReg(REG_OFFSET_WININ, 0); + SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR); + tState = 1; + break; + case 1: + CreateTask(Task_BarnDoorWipeChild, 80); + tState = 2; + break; + case 2: + if (!FuncIsActiveTask(Task_BarnDoorWipeChild)) + { + tState = 3; + } + break; + case 3: + BarnDoorWipeLoadGpuRegs(taskId); + DestroyTask(taskId); + break; + } +} + +static void Task_BarnDoorWipeChild(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + u8 parentTaskId = FindTaskIdByFunc(Task_BarnDoorWipe); + s16 lhs, rhs; + if (gTasks[parentTaskId].tDirection == DIR_WIPE_IN) + { + lhs = tChildOffset; + rhs = 240 - tChildOffset; + if (lhs > 120) + { + DestroyTask(taskId); + return; + } + } + else + { + lhs = 120 - tChildOffset; + rhs = 120 + tChildOffset; + if (lhs < 0) + { + DestroyTask(taskId); + return; + } + } + SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(0, lhs)); + SetGpuReg(REG_OFFSET_WIN1H, WIN_RANGE(rhs, 240)); + if (lhs <= 89) + { + tChildOffset += 4; + } + else + { + tChildOffset += 2; + } +} + +#undef tState +#undef tDirection +#undef DIR_WIPE_IN +#undef DIR_WIPE_OUT +#undef tChildOffset diff --git a/src/field_tasks.c b/src/field_tasks.c new file mode 100644 index 000000000..7ca6d0e7b --- /dev/null +++ b/src/field_tasks.c @@ -0,0 +1,293 @@ +#include "global.h" +#include "bike.h" +#include "event_data.h" +#include "field_camera.h" +#include "field_effect_helpers.h" +#include "field_player_avatar.h" +#include "fieldmap.h" +#include "metatile_behavior.h" +#include "overworld.h" +#include "quest_log.h" +#include "script.h" +#include "sound.h" +#include "task.h" +#include "constants/flags.h" +#include "constants/songs.h" +#include "constants/vars.h" + +static void DummyPerStepCallback(u8 taskId); +static void AshGrassPerStepCallback(u8 taskId); +static void IcefallCaveIcePerStepCallback(u8 taskId); +static void CrackedFloorPerStepCallback(u8 taskId); + +static const TaskFunc sPerStepCallbacks[] = +{ + DummyPerStepCallback, + AshGrassPerStepCallback, + DummyPerStepCallback, + DummyPerStepCallback, + IcefallCaveIcePerStepCallback, + DummyPerStepCallback, + DummyPerStepCallback, + CrackedFloorPerStepCallback +}; + +static const u8 sIcefallCaveIceTileCoords[][2] = +{ + { 0x08, 0x03 }, + { 0x0a, 0x05 }, + { 0x0f, 0x05 }, + { 0x08, 0x09 }, + { 0x09, 0x09 }, + { 0x10, 0x09 }, + { 0x08, 0x0a }, + { 0x09, 0x0a }, + { 0x08, 0x0e } +}; + +static void Task_RunPerStepCallback(u8 taskId) +{ + int idx = gTasks[taskId].data[0]; + sPerStepCallbacks[idx](taskId); +} + +static void Task_RunTimeBasedEvents(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + if (!ScriptContext2_IsEnabled()) + { + if (gUnknown_203ADFA != 2 && gUnknown_203ADFA != 3) + { + sub_8056078(&data[1], &data[2]); + } + } +} + +void SetUpFieldTasks(void) +{ + if (!FuncIsActiveTask(Task_RunPerStepCallback)) + { + u8 taskId = CreateTask(Task_RunPerStepCallback, 0x50); + gTasks[taskId].data[0] = 0; + } + + if (!FuncIsActiveTask(Task_RunTimeBasedEvents)) + CreateTask(Task_RunTimeBasedEvents, 0x50); +} + +void ActivatePerStepCallback(u8 callbackId) +{ + u8 taskId = FindTaskIdByFunc(Task_RunPerStepCallback); + if (taskId != 0xff) + { + s32 i; + s16 *data = gTasks[taskId].data; + + for (i = 0; i < 16; i++) + data[i] = 0; + + if (callbackId >= NELEMS(sPerStepCallbacks)) + { + data[0] = 0; + } + else + { + data[0] = callbackId; + } + } +} + +void ResetFieldTasksArgs(void) +{ + u8 taskId; + s16 *data; + + taskId = FindTaskIdByFunc(Task_RunPerStepCallback); + if (taskId != 0xff) + { + data = gTasks[taskId].data; + } + taskId = FindTaskIdByFunc(Task_RunTimeBasedEvents); + if (taskId != 0xff) + { + data = gTasks[taskId].data; + data[1] = 0; + data[2] = 0; + } +} + +static void DummyPerStepCallback(u8 taskId) +{ +} + +static void MarkIcefallCaveCoordVisited(s16 x, s16 y) +{ + u8 i = 0; + for (; i < NELEMS(sIcefallCaveIceTileCoords); ++i) + { + if (sIcefallCaveIceTileCoords[i][0] + 7 == x && sIcefallCaveIceTileCoords[i][1] + 7 == y) + { + FlagSet(i + 1); + break; + } + } +} + +void Special_SetIcefallCaveCrackedIceMetatiles(void) +{ + u8 i = 0; + for (; i < NELEMS(sIcefallCaveIceTileCoords); ++i) + { + if (FlagGet(i + 1) == TRUE) + { + int x = sIcefallCaveIceTileCoords[i][0] + 7; + int y = sIcefallCaveIceTileCoords[i][1] + 7; + MapGridSetMetatileIdAt(x, y, 0x35a); + } + } +} + +static void IcefallCaveIcePerStepCallback(u8 taskId) +{ + s16 x, y; + u8 tileBehavior; + u16 *iceStepCount; + s16 *data = gTasks[taskId].data; + switch (data[1]) + { + case 0: + PlayerGetDestCoords(&x, &y); + data[2] = x; + data[3] = y; + data[1] = 1; + break; + case 1: + PlayerGetDestCoords(&x, &y); + if (x != data[2] || y != data[3]) + { + data[2] = x; + data[3] = y; + tileBehavior = MapGridGetMetatileBehaviorAt(x, y); + if (MetatileBehavior_IsThinIce(tileBehavior) == TRUE) + { + MarkIcefallCaveCoordVisited(x, y); + data[6] = 4; + data[1] = 2; + data[4] = x; + data[5] = y; + } + else if (MetatileBehavior_IsCrackedIce(tileBehavior) == TRUE) + { + data[6] = 4; + data[1] = 3; + data[4] = x; + data[5] = y; + } + } + break; + case 2: + if (data[6] != 0) + { + data[6]--; + } + else + { + x = data[4]; + y = data[5]; + PlaySE(SE_RU_BARI); + MapGridSetMetatileIdAt(x, y, 0x35a); + CurrentMapDrawMetatileAt(x, y); + data[1] = 1; + } + break; + case 3: + if (data[6] != 0) + { + data[6]--; + } + else + { + x = data[4]; + y = data[5]; + PlaySE(SE_RU_GASYAN); + MapGridSetMetatileIdAt(x, y, 0x35b); + CurrentMapDrawMetatileAt(x, y); + VarSet(VAR_0x4001, 1); + data[1] = 1; + } + break; + } +} + +// This is leftover from pokeruby and effectively a no-op. +static void AshGrassPerStepCallback(u8 taskId) +{ + s16 x, y; + u16 *ashGatherCount; + s16 *data = gTasks[taskId].data; + PlayerGetDestCoords(&x, &y); + if (x != data[1] || y != data[2]) + { + data[1] = x; + data[2] = y; + if (MetatileBehavior_ReturnFalse_4((u8)MapGridGetMetatileBehaviorAt(x, y))) + { + if (MapGridGetMetatileIdAt(x, y) == 0x20a) + StartAshFieldEffect(x, y, 0x212, 4); + else + StartAshFieldEffect(x, y, 0x206, 4); + } + } +} + +static void SetCrackedFloorHoleMetatile(s16 x, s16 y) +{ + MapGridSetMetatileIdAt(x, y, MapGridGetMetatileIdAt(x, y) == 0x22f ? 0x206 : 0x237); + CurrentMapDrawMetatileAt(x, y); +} + +// This is leftover from pokeruby and effectively a no-op. +static void CrackedFloorPerStepCallback(u8 taskId) +{ + s16 x, y; + u16 behavior; + s16 *data = gTasks[taskId].data; + PlayerGetDestCoords(&x, &y); + behavior = MapGridGetMetatileBehaviorAt(x, y); + if (data[4] != 0 && (--data[4]) == 0) + SetCrackedFloorHoleMetatile(data[5], data[6]); + + if (data[7] != 0 && (--data[7]) == 0) + SetCrackedFloorHoleMetatile(data[8], data[9]); + + if ((x != data[2] || y != data[3])) + { + data[2] = x; + data[3] = y; + if (MetatileBehavior_ReturnFalse_13(behavior)) + { + if (GetPlayerSpeed() != 4) + VarSet(VAR_0x4030, 0); + + if (data[4] == 0) + { + data[4] = 3; + data[5] = x; + data[6] = y; + } + else if (data[7] == 0) + { + data[7] = 3; + data[8] = x; + data[9] = y; + } + } + } +} + +static void sub_806ED38(void) +{ + FlagSet(FLAG_SYS_POKEDEX_GET); + FlagSet(FLAG_SYS_POKEMON_GET); +} diff --git a/src/scrcmd.c b/src/scrcmd.c index a88655e17..fad30a6a8 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -608,7 +608,7 @@ bool8 ScrCmd_setworldmapflag(struct ScriptContext *ctx) bool8 ScrCmd_animateflash(struct ScriptContext *ctx) { - sub_807F028(ScriptReadByte(ctx)); + AnimateFlash(ScriptReadByte(ctx)); ScriptContext1_Stop(); return TRUE; } diff --git a/src/seagallop.c b/src/seagallop.c index cf07f9880..10ea97fec 100644 --- a/src/seagallop.c +++ b/src/seagallop.c @@ -303,7 +303,7 @@ static void Task_Seagallop_1(u8 taskId) static void Task_Seagallop_2(u8 taskId) { ScrollBG(); - if (sub_8055FC4() && !gPaletteFade.active) + if (BGMusicStopped() && !gPaletteFade.active) { Task_Seagallop_3(); HelpSystem_Enable(); |