From c855d1d445a8dade267b28991540d8c7f2ed8042 Mon Sep 17 00:00:00 2001 From: red031000 Date: Sat, 16 Dec 2023 14:43:25 +0000 Subject: [PATCH] finish blackout.c --- arm9/arm9.lsf | 3 +- arm9/asm/blackout_asm.s | 148 ------------------------ arm9/asm/unk_02034D7C.s | 2 +- arm9/asm/unk_02034E84.s | 4 +- arm9/asm/unk_02048904.s | 16 +-- arm9/asm/unk_0204C1B4.s | 2 +- arm9/asm/unk_020607D4.s | 2 +- arm9/asm/unk_0206367C.s | 4 +- arm9/global.inc | 6 +- arm9/overlays/06/asm/overlay_06.s | 4 +- arm9/overlays/12/asm/overlay_12.s | 6 +- arm9/overlays/16/asm/overlay_16.s | 2 +- arm9/overlays/17/asm/overlay_17.s | 2 +- arm9/overlays/63/asm/ov63_021D74E0.s | 4 +- arm9/overlays/69/asm/overlay_69.s | 2 +- arm9/src/{blackout_src.c => blackout.c} | 77 +++++++++++- arm9/src/encounter.c | 2 +- arm9/src/scrcmd.c | 2 +- arm9/src/scrcmd_sound.c | 2 +- arm9/src/sound.c | 15 +-- arm9/src/unk_020040F4.c | 2 +- arm9/src/unk_020051F4.c | 6 +- arm9/src/unk_0204AF24.c | 2 +- include/blackout.h | 2 + include/save_local_field_data.h | 8 ++ include/script.h | 5 +- include/unk_020051F4.h | 4 +- 27 files changed, 130 insertions(+), 204 deletions(-) delete mode 100644 arm9/asm/blackout_asm.s rename arm9/src/{blackout_src.c => blackout.c} (61%) create mode 100644 include/save_local_field_data.h diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index 9731395c8..42b8cd0fb 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -187,8 +187,7 @@ Static arm9 Object encounter.o Object unk_02047500.o Object unk_020476CC.o - Object blackout_src.o - Object blackout_asm.o + Object blackout.o Object unk_020484A8.o Object unk_02048904.o Object script_pokemon_util.o diff --git a/arm9/asm/blackout_asm.s b/arm9/asm/blackout_asm.s deleted file mode 100644 index 1ca774603..000000000 --- a/arm9/asm/blackout_asm.s +++ /dev/null @@ -1,148 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .extern Blackout_DrawMessage - - .text - - thumb_func_start Task_BlackOut -Task_BlackOut: ; 0x0204837C - push {r3-r7, lr} - sub sp, #0x18 - add r5, r0, #0x0 - bl TaskManager_GetFieldSystem - add r6, r0, #0x0 - add r0, r5, #0x0 - bl TaskManager_GetStatePtr - add r4, r0, #0x0 - ldr r0, [r4, #0x0] - cmp r0, #0x6 - bhi _02048488 - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_020483A2: ; jump table (using 16-bit offset) - .short _020483B0 - _020483A2 - 2; case 0 - .short _020483E8 - _020483A2 - 2; case 1 - .short _020483F8 - _020483A2 - 2; case 2 - .short _0204840C - _020483A2 - 2; case 3 - .short _02048434 - _020483A2 - 2; case 4 - .short _02048442 - _020483A2 - 2; case 5 - .short _02048482 - _020483A2 - 2; case 6 -_020483B0: - ldr r0, [r6, #0xc] - bl Save_LocalFieldData_Get - add r7, r0, #0x0 - bl LocalFieldData_GetBlackoutSpawn - add r1, sp, #0x4 - str r0, [sp, #0x0] - bl GetDeathWarpData - add r0, r7, #0x0 - bl LocalFieldData_GetSpecialSpawnWarpPtr - add r1, r0, #0x0 - ldr r0, [sp, #0x0] - bl GetSpecialSpawnWarpData - add r0, r5, #0x0 - add r1, sp, #0x4 - bl sub_02049160 - add r0, r6, #0x0 - bl sub_020637F0 - ldr r0, [r4, #0x0] - add r0, r0, #0x1 - str r0, [r4, #0x0] - b _02048488 -_020483E8: - mov r0, #0x0 - mov r1, #0x14 - bl GF_SndStartFadeOutBGM - ldr r0, [r4, #0x0] - add r0, r0, #0x1 - str r0, [r4, #0x0] - b _02048488 -_020483F8: - bl sub_02005404 - cmp r0, #0x0 - bne _02048488 - bl sub_0204AB0C - ldr r0, [r4, #0x0] - add r0, r0, #0x1 - str r0, [r4, #0x0] - b _02048488 -_0204840C: - mov r0, #0xf - mvn r0, r0 - mov r1, #0x37 - mov r2, #0x1 - bl SetBlendBrightness - mov r0, #0xf - mvn r0, r0 - mov r1, #0x3f - mov r2, #0x2 - bl SetBlendBrightness - add r0, r6, #0x0 - add r1, r5, #0x0 - bl Blackout_DrawMessage - ldr r0, [r4, #0x0] - add r0, r0, #0x1 - str r0, [r4, #0x0] - b _02048488 -_02048434: - add r0, r5, #0x0 - bl CallTask_RestoreOverworld - ldr r0, [r4, #0x0] - add r0, r0, #0x1 - str r0, [r4, #0x0] - b _02048488 -_02048442: - mov r0, #0x0 - mov r1, #0x3f - mov r2, #0x3 - bl SetBlendBrightness - bl sub_02034E8C - add r7, r0, #0x0 - ldr r0, [r6, #0xc] - bl Save_LocalFieldData_Get - bl LocalFieldData_GetBlackoutSpawn - cmp r7, r0 - bne _0204846E - mov r2, #0x0 - ldr r1, _02048490 ; =0x000007E4 - add r0, r5, #0x0 - add r3, r2, #0x0 - bl QueueScript - b _0204847A -_0204846E: - mov r2, #0x0 - ldr r1, _02048494 ; =0x000007E5 - add r0, r5, #0x0 - add r3, r2, #0x0 - bl QueueScript -_0204847A: - ldr r0, [r4, #0x0] - add r0, r0, #0x1 - str r0, [r4, #0x0] - b _02048488 -_02048482: - add sp, #0x18 - mov r0, #0x1 - pop {r3-r7, pc} -_02048488: - mov r0, #0x0 - add sp, #0x18 - pop {r3-r7, pc} - nop -_02048490: .word 0x000007E4 -_02048494: .word 0x000007E5 - - thumb_func_start CallTask_BlackOut -CallTask_BlackOut: ; 0x02048498 - ldr r3, _020484A0 ; =TaskManager_Call - ldr r1, _020484A4 ; =Task_BlackOut - mov r2, #0x0 - bx r3 - .balign 4 -_020484A0: .word TaskManager_Call -_020484A4: .word Task_BlackOut diff --git a/arm9/asm/unk_02034D7C.s b/arm9/asm/unk_02034D7C.s index 5e263d2e0..c4863ca17 100644 --- a/arm9/asm/unk_02034D7C.s +++ b/arm9/asm/unk_02034D7C.s @@ -39,7 +39,7 @@ sub_02034D98: ; 0x02034D98 add r0, r4, #0x0 add r0, #0x8c bl sub_02055468 - bl sub_02034E8C + bl GetMomSpawnId add r4, #0x68 strh r0, [r4, #0x0] pop {r4, pc} diff --git a/arm9/asm/unk_02034E84.s b/arm9/asm/unk_02034E84.s index 38d9b58c9..be838749c 100644 --- a/arm9/asm/unk_02034E84.s +++ b/arm9/asm/unk_02034E84.s @@ -81,8 +81,8 @@ _02034E88: sub r0, r0, #0x1 pop {r3, pc} - thumb_func_start sub_02034E8C -sub_02034E8C: ; 0x02034E8C + thumb_func_start GetMomSpawnId +GetMomSpawnId: ; 0x02034E8C mov r0, #0x1 bx lr diff --git a/arm9/asm/unk_02048904.s b/arm9/asm/unk_02048904.s index aabb281c9..a75af32a3 100644 --- a/arm9/asm/unk_02048904.s +++ b/arm9/asm/unk_02048904.s @@ -949,7 +949,7 @@ _02049080: str r0, [r4, #0x0] b _020490B6 _02049090: - bl sub_02005404 + bl GF_SndGetFadeTimer cmp r0, #0x0 bne _020490B6 ldr r1, [r4, #0x4] @@ -1142,7 +1142,7 @@ _02049206: str r0, [r4, #0x0] b _0204923C _02049216: - bl sub_02005404 + bl GF_SndGetFadeTimer cmp r0, #0x0 bne _0204923C ldr r1, [r4, #0x4] @@ -1309,7 +1309,7 @@ _0204934A: str r0, [r4, #0x0] b _02049390 _02049364: - bl sub_02005404 + bl GF_SndGetFadeTimer cmp r0, #0x0 bne _02049390 ldr r1, [r5, #0x0] @@ -1542,7 +1542,7 @@ _02049512: str r0, [r4, #0x0] b _02049570 _0204952C: - bl sub_02005404 + bl GF_SndGetFadeTimer cmp r0, #0x0 bne _02049570 ldr r1, [r6, #0x0] @@ -1756,7 +1756,7 @@ _020496BC: str r0, [r4, #0x0] b _02049712 _020496CC: - bl sub_02005404 + bl GF_SndGetFadeTimer cmp r0, #0x0 bne _02049712 ldr r1, [r5, #0x0] @@ -2188,7 +2188,7 @@ _02049A14: str r0, [r4, #0x0] b _02049AB2 _02049A42: - bl sub_02005404 + bl GF_SndGetFadeTimer cmp r0, #0x0 bne _02049AB2 mov r0, #0x0 @@ -2346,7 +2346,7 @@ _02049B76: str r0, [r4, #0x0] b _02049BDC _02049B9C: - bl sub_02005404 + bl GF_SndGetFadeTimer cmp r0, #0x0 bne _02049BDC mov r0, #0x0 @@ -2825,7 +2825,7 @@ _02049F58: str r0, [r4, #0x0] b _02049F8E _02049F68: - bl sub_02005404 + bl GF_SndGetFadeTimer cmp r0, #0x0 bne _02049F8E ldr r1, [r4, #0x4] diff --git a/arm9/asm/unk_0204C1B4.s b/arm9/asm/unk_0204C1B4.s index ece4bbd21..a34f8bdbf 100644 --- a/arm9/asm/unk_0204C1B4.s +++ b/arm9/asm/unk_0204C1B4.s @@ -326,7 +326,7 @@ _0204C416: str r0, [r4, #0x0] b _0204C458 _0204C41E: - bl sub_02005404 + bl GF_SndGetFadeTimer cmp r0, #0x0 bne _0204C458 ldr r1, [r6, #0x0] diff --git a/arm9/asm/unk_020607D4.s b/arm9/asm/unk_020607D4.s index e68237b82..be379733c 100644 --- a/arm9/asm/unk_020607D4.s +++ b/arm9/asm/unk_020607D4.s @@ -338,7 +338,7 @@ _02060A74: bl IsPaletteFadeFinished cmp r0, #0x0 beq _02060A84 - bl sub_02005404 + bl GF_SndGetFadeTimer cmp r0, #0x0 beq _02060A8A _02060A84: diff --git a/arm9/asm/unk_0206367C.s b/arm9/asm/unk_0206367C.s index 36087884f..d9e8374a1 100644 --- a/arm9/asm/unk_0206367C.s +++ b/arm9/asm/unk_0206367C.s @@ -170,8 +170,8 @@ sub_020637E0: ; 0x020637E0 pop {r3, pc} .balign 4 - thumb_func_start sub_020637F0 -sub_020637F0: ; 0x020637F0 + thumb_func_start FieldSystem_ClearFollowingTrainer +FieldSystem_ClearFollowingTrainer: ; 0x020637F0 push {r4, lr} ldr r0, [r0, #0xc] bl Save_VarsFlags_Get diff --git a/arm9/global.inc b/arm9/global.inc index 043cee13c..7fa4472ce 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -345,7 +345,7 @@ .extern sub_02005350 .extern sub_0200538C .extern GF_SndStartFadeOutBGM -.extern sub_02005404 +.extern GF_SndGetFadeTimer .extern sub_02005410 .extern sub_0200541C .extern sub_02005454 @@ -2568,7 +2568,7 @@ .extern Save_LocalFieldData_Get .extern sub_02034E48 .extern sub_02034E60 -.extern sub_02034E8C +.extern GetMomSpawnId .extern GetSpecialSpawnWarpData .extern GetDeathWarpData .extern sub_02034EF8 @@ -4685,7 +4685,7 @@ .extern sub_020637A8 .extern sub_020637C4 .extern sub_020637E0 -.extern sub_020637F0 +.extern FieldSystem_ClearFollowingTrainer .extern sub_02063808 .extern sub_02063888 .extern sub_020638BC diff --git a/arm9/overlays/06/asm/overlay_06.s b/arm9/overlays/06/asm/overlay_06.s index 96740bec4..0f7f389d6 100644 --- a/arm9/overlays/06/asm/overlay_06.s +++ b/arm9/overlays/06/asm/overlay_06.s @@ -458,7 +458,7 @@ _022399FA: str r0, [r4, #0xc] b _02239AA4 _02239A0A: - bl sub_02005404 + bl GF_SndGetFadeTimer cmp r0, #0 bne _02239AA4 ldr r0, [r4, #0xc] @@ -517,7 +517,7 @@ _02239A72: str r0, [r4, #0xc] b _02239AA4 _02239A84: - bl sub_02005404 + bl GF_SndGetFadeTimer cmp r0, #0 bne _02239AA4 ldr r0, [r4, #0xc] diff --git a/arm9/overlays/12/asm/overlay_12.s b/arm9/overlays/12/asm/overlay_12.s index 13f314d1b..5b1a8182f 100644 --- a/arm9/overlays/12/asm/overlay_12.s +++ b/arm9/overlays/12/asm/overlay_12.s @@ -36965,7 +36965,7 @@ _0223F308: strb r0, [r4, #0x10] pop {r3, r4, r5, pc} _0223F318: - bl sub_02005404 + bl GF_SndGetFadeTimer cmp r0, #0 bne _0223F3A0 ldrb r0, [r4, #0x10] @@ -47042,7 +47042,7 @@ _02244132: strb r0, [r4, #0x10] pop {r4, r5, r6, r7, pc} _0224415A: - bl sub_02005404 + bl GF_SndGetFadeTimer cmp r0, #0 bne _022441B2 mov r0, #6 @@ -47738,7 +47738,7 @@ _0224469E: bl IsBrightnessTransitionActive cmp r0, #1 bne _02244700 - bl sub_02005404 + bl GF_SndGetFadeTimer cmp r0, #0 bne _02244700 ldr r0, [r4] diff --git a/arm9/overlays/16/asm/overlay_16.s b/arm9/overlays/16/asm/overlay_16.s index 980d67130..1d5c7315a 100644 --- a/arm9/overlays/16/asm/overlay_16.s +++ b/arm9/overlays/16/asm/overlay_16.s @@ -41019,7 +41019,7 @@ _021EA42E: _021EA438: cmp r0, #1 bne _021EA458 - bl sub_02005404 + bl GF_SndGetFadeTimer cmp r0, #0 bne _021EA458 mov r0, #1 diff --git a/arm9/overlays/17/asm/overlay_17.s b/arm9/overlays/17/asm/overlay_17.s index 61bfe3cae..b90cfe8e9 100644 --- a/arm9/overlays/17/asm/overlay_17.s +++ b/arm9/overlays/17/asm/overlay_17.s @@ -2735,7 +2735,7 @@ _021D89E2: str r0, [r4] b _021D8C64 _021D89F2: - bl sub_02005404 + bl GF_SndGetFadeTimer cmp r0, #0 beq _021D89FC _021D89FA: diff --git a/arm9/overlays/63/asm/ov63_021D74E0.s b/arm9/overlays/63/asm/ov63_021D74E0.s index c1f04785d..f1b39ffc0 100644 --- a/arm9/overlays/63/asm/ov63_021D74E0.s +++ b/arm9/overlays/63/asm/ov63_021D74E0.s @@ -268,7 +268,7 @@ _021D76FA: ldr r2, [r4] add r0, #0xb4 bl ov63_021D8260 - bl sub_02005404 + bl GF_SndGetFadeTimer cmp r0, #0 bne _021D779C ldr r0, _021D77A8 ; =0x00000495 @@ -298,7 +298,7 @@ _021D773C: ldr r2, [r4] add r0, #0xb4 bl ov63_021D8260 - bl sub_02005404 + bl GF_SndGetFadeTimer cmp r0, #0 bne _021D779C ldr r0, _021D77A8 ; =0x00000495 diff --git a/arm9/overlays/69/asm/overlay_69.s b/arm9/overlays/69/asm/overlay_69.s index 7e71301ed..6cdc55965 100644 --- a/arm9/overlays/69/asm/overlay_69.s +++ b/arm9/overlays/69/asm/overlay_69.s @@ -338,7 +338,7 @@ _0222D8A6: bl IsPaletteFadeFinished cmp r0, #0 beq _0222D8BC - bl sub_02005404 + bl GF_SndGetFadeTimer cmp r0, #0 bne _0222D8BC add sp, #0xc diff --git a/arm9/src/blackout_src.c b/arm9/src/blackout.c similarity index 61% rename from arm9/src/blackout_src.c rename to arm9/src/blackout.c index 2bfecc0ca..2b13232a8 100644 --- a/arm9/src/blackout_src.c +++ b/arm9/src/blackout.c @@ -1,5 +1,6 @@ #include "blackout.h" #include "bg_window.h" +#include "brightness.h" #include "constants/maps.h" #include "constants/rgb.h" #include "msgdata/msg.naix" @@ -8,17 +9,30 @@ #include "gf_gfx_loader.h" #include "PAD_pad.h" #include "render_window.h" +#include "save_local_field_data.h" +#include "script.h" //TODO: temp include, remove when structs are split #include "text.h" +#include "unk_020051F4.h" +#include "unk_0204AF24.h" static void Blackout_InitDisplays(BgConfig *bgConfig); -/*static*/ void Blackout_DrawMessage(FieldSystem *fieldSystem, TaskManager *taskManager); +static void Blackout_DrawMessage(FieldSystem *fieldSystem, TaskManager *taskManager); static BOOL Task_ShowPrintedBlackoutMessage(TaskManager *taskManager); static void Blackout_PrintMessage(BlackoutScreenEnvironment *environment, s32 msgNo, u8 x, u8 y); extern void BeginNormalPaletteFade(u32 pattern, u32 typeTop, u32 typeBottom, u16 colour, u32 duration, u32 framesPer, HeapID heapId); extern BOOL IsPaletteFadeFinished(void); - extern SaveData *FieldSystem_GetSaveData(FieldSystem *fieldSystem); +extern LocalFieldData *Save_LocalFieldData_Get(SaveData *save); +extern u16 LocalFieldData_GetBlackoutSpawn(LocalFieldData *localFieldData); +extern void GetDeathWarpData(u16 spawnId, Location *dest); +extern void GetSpecialSpawnWarpData(u16 spawnId, Location *dest); +extern Location *LocalFieldData_GetSpecialSpawnWarpPtr(LocalFieldData *localFieldData); +extern void sub_02049160(TaskManager *taskManager, Location *location); +extern void FieldSystem_ClearFollowingTrainer(FieldSystem *fieldSystem); +extern void QueueScript(TaskManager *taskManager, u16 script, LocalMapObject *lastInteracted, void *param3); +extern void sub_0204AB0C(void); +extern u16 GetMomSpawnId(void); static const struct GraphicsBanks Blackout_GraphicsBanks = { .bg = GX_VRAM_BG_128_B, @@ -73,7 +87,7 @@ static void Blackout_InitDisplays(BgConfig *bgConfig) { GfGfxLoader_GXLoadPal(NARC_GRAPHIC_FONT, NARC_font_narc_0006_NCLR, GF_PAL_LOCATION_MAIN_BG, GF_PAL_SLOT_13_OFFSET, 0x20, HEAP_ID_FIELD); } -/*static*/ void Blackout_DrawMessage(FieldSystem *fieldSystem, TaskManager *taskManager) { +static void Blackout_DrawMessage(FieldSystem *fieldSystem, TaskManager *taskManager) { BlackoutScreenEnvironment *env = AllocFromHeap(HEAP_ID_FIELD, sizeof(BlackoutScreenEnvironment)); GF_ASSERT(env != NULL); @@ -156,3 +170,60 @@ static void Blackout_PrintMessage(BlackoutScreenEnvironment *environment, s32 ms String_Delete(tmpStr); String_Delete(finStr); } + +BOOL Task_BlackOut(TaskManager *taskManager) { + FieldSystem *fieldSystem = TaskManager_GetFieldSystem(taskManager); + u32 *state = TaskManager_GetStatePtr(taskManager); + LocalFieldData *localFieldData; + Location deathWarp; + u16 deathSpawn; + + switch (*state) { + case 0: + localFieldData = Save_LocalFieldData_Get(fieldSystem->saveData); + deathSpawn = LocalFieldData_GetBlackoutSpawn(localFieldData); + GetDeathWarpData(deathSpawn, &deathWarp); + GetSpecialSpawnWarpData(deathSpawn, LocalFieldData_GetSpecialSpawnWarpPtr(localFieldData)); + sub_02049160(taskManager, &deathWarp); + FieldSystem_ClearFollowingTrainer(fieldSystem); + (*state)++; + break; + case 1: + GF_SndStartFadeOutBGM(0, 20); + (*state)++; + break; + case 2: + if (GF_SndGetFadeTimer() == 0) { + sub_0204AB0C(); + (*state)++; + } + break; + case 3: + SetBlendBrightness(-16, (GXBlendPlaneMask)(GX_BLEND_PLANEMASK_BD | GX_BLEND_PLANEMASK_OBJ | GX_BLEND_PLANEMASK_BG2 | GX_BLEND_PLANEMASK_BG1 | GX_BLEND_PLANEMASK_BG0), SCREEN_MASK_MAIN); + SetBlendBrightness(-16, (GXBlendPlaneMask)(GX_BLEND_PLANEMASK_BD | GX_BLEND_PLANEMASK_OBJ | GX_BLEND_PLANEMASK_BG3 | GX_BLEND_PLANEMASK_BG2 | GX_BLEND_PLANEMASK_BG1 | GX_BLEND_PLANEMASK_BG0), SCREEN_MASK_SUB); + Blackout_DrawMessage(fieldSystem, taskManager); + (*state)++; + break; + case 4: + CallTask_RestoreOverworld(taskManager); + (*state)++; + break; + case 5: + SetBlendBrightness(0, (GXBlendPlaneMask)(GX_BLEND_PLANEMASK_BD | GX_BLEND_PLANEMASK_OBJ | GX_BLEND_PLANEMASK_BG3 | GX_BLEND_PLANEMASK_BG2 | GX_BLEND_PLANEMASK_BG1 | GX_BLEND_PLANEMASK_BG0), SCREEN_MASK_MAIN | SCREEN_MASK_SUB); + if (GetMomSpawnId() == LocalFieldData_GetBlackoutSpawn(Save_LocalFieldData_Get(fieldSystem->saveData))) { + QueueScript(taskManager, 0x7E4, NULL, NULL); + } else { + QueueScript(taskManager, 0x7E5, NULL, NULL); + } + (*state)++; + break; + case 6: + return TRUE; + } + + return FALSE; +} + +void CallTask_BlackOut(TaskManager *taskManager) { + TaskManager_Call(taskManager, Task_BlackOut, NULL); +} diff --git a/arm9/src/encounter.c b/arm9/src/encounter.c index 30240e5a1..08ed1451f 100644 --- a/arm9/src/encounter.c +++ b/arm9/src/encounter.c @@ -1,5 +1,6 @@ #include "global.h" #include "encounter.h" +#include "blackout.h" #include "constants/battle.h" #include "constants/game_stats.h" #include "save_vars_flags.h" @@ -27,7 +28,6 @@ extern void sub_02047FA4(BattleSetup *setup, FieldSystem *fieldSystem); extern BattleSetup *ov06_02244558(u32 param0, FieldSystem *fieldSystem); extern s32 sub_020475A0(BattleSetup *battleSetup); extern s32 sub_020475B0(BattleSetup *battleSetup); -extern BOOL Task_BlackOut(TaskManager *taskManager); extern void sub_0205DD40(u32 param0); extern u32 sub_0205E128(u32 param0); extern void sub_0205DED4(FieldSystem *fieldSystem, u32 winFlag, u32 param2); diff --git a/arm9/src/scrcmd.c b/arm9/src/scrcmd.c index 7c1fd9d39..607f7b603 100644 --- a/arm9/src/scrcmd.c +++ b/arm9/src/scrcmd.c @@ -3,6 +3,7 @@ #include "PAD_pad.h" #include "bag.h" #include "bg_window.h" +#include "blackout.h" #include "camera.h" #include "constants/global_fieldmap.h" #include "constants/items.h" @@ -249,7 +250,6 @@ extern u16 sub_02053678(u32 trainerId, PlayerGender playerGender, u32 param2); extern u16 sub_020536D0(PlayerGender playerGender, u16 param1, u16 param2); extern void sub_02049EA4(TaskManager *taskManager); extern void LocalFieldData_SetBlackoutSpawn(LocalFieldData *localFieldData, u16 spawnPoint); -extern void CallTask_BlackOut(TaskManager *taskManager); extern void HealParty(Party *playerParty); extern void sub_02050024(void); extern u32 sub_02031810(void); diff --git a/arm9/src/scrcmd_sound.c b/arm9/src/scrcmd_sound.c index d14e80b09..7d90d2dd5 100644 --- a/arm9/src/scrcmd_sound.c +++ b/arm9/src/scrcmd_sound.c @@ -65,7 +65,7 @@ BOOL sub_02041464(struct ScriptContext* ctx) { #pragma unused(ctx) - if(sub_02005404() == 0) + if(GF_SndGetFadeTimer() == 0) return TRUE; else return FALSE; diff --git a/arm9/src/sound.c b/arm9/src/sound.c index c0d410df0..d1dfd2476 100644 --- a/arm9/src/sound.c +++ b/arm9/src/sound.c @@ -3,6 +3,7 @@ #include "SPI_mic.h" #include "SPI_pm.h" #include "unk_020040F4.h" +#include "unk_020051F4.h" #include "sound_chatot.h" static struct SoundData sSoundDataBuffer; @@ -17,10 +18,6 @@ void sub_02004088(struct SoundData *); void sub_020040A4(struct SoundData *); void sub_020040DC(void); -extern void sub_0200521C(int); -extern void sub_0200538C(int, int, int); -extern BOOL sub_02005404(void); - void InitSoundData(struct SaveChatotSoundClip * chatot, struct Options * options) { struct SoundData * sdat = GetSoundDataPointer(); @@ -59,26 +56,26 @@ void sub_02003C40(void) sub_02003CE8(2); break; case 3: - if (!sub_02005404()) + if (GF_SndGetFadeTimer() == 0) sub_02003CE8(2); break; case 4: - if (!sub_02005404()) + if (GF_SndGetFadeTimer() == 0) sub_02003CE8(2); break; case 5: - if (!sub_02005404() && !sub_02004D94()) + if (GF_SndGetFadeTimer() == 0 && !sub_02004D94()) { sub_020040DC(); sub_0200521C(sdat->unk_BCD0E); } break; case 6: - if (!sub_02005404() && !sub_02004D94()) + if (GF_SndGetFadeTimer() == 0 && !sub_02004D94()) { sub_020040DC(); sub_0200521C(sdat->unk_BCD0E); - sub_0200538C(0x7F, (int)sdat->unk_BCD08, 0); + sub_0200538C(0x7F, sdat->unk_BCD08, 0); } break; } diff --git a/arm9/src/unk_020040F4.c b/arm9/src/unk_020040F4.c index e64a0e6f5..ae879f1d8 100644 --- a/arm9/src/unk_020040F4.c +++ b/arm9/src/unk_020040F4.c @@ -1341,7 +1341,7 @@ void sub_0200516C(u32 param0) void sub_020051AC(void) { - if (sub_02005404() == 0 && GF_SndPlayerGetSeqNo(GetSoundPlayer(0)) != -1 && + if (GF_SndGetFadeTimer() == 0 && GF_SndPlayerGetSeqNo(GetSoundPlayer(0)) != -1 && sub_02004124() != 0x47e) { diff --git a/arm9/src/unk_020051F4.c b/arm9/src/unk_020051F4.c index 9b9560ce1..58e2ebd92 100644 --- a/arm9/src/unk_020051F4.c +++ b/arm9/src/unk_020051F4.c @@ -124,7 +124,7 @@ void sub_02005374() sub_02003CE8(0); } -void sub_0200538C(s32 param0, u16 param1, u32 param2) +void sub_0200538C(s32 param0, u32 param1, u32 param2) { u8 r0 = sub_020048D0(sub_02004124()); if (r0 == 0xff) @@ -151,7 +151,7 @@ void GF_SndStartFadeOutBGM(u16 param0, u16 param1) return; } - if (!sub_02005404()) + if (GF_SndGetFadeTimer() == 0) { GF_SndPlayerMoveVolume(sub_02004018(r6), param0, param1); sub_02004D74(param1); @@ -160,7 +160,7 @@ void GF_SndStartFadeOutBGM(u16 param0, u16 param1) sub_02003CE8(4); } -u16 sub_02005404() +u16 GF_SndGetFadeTimer() { return *(u16 *)sub_02003D38(6); } diff --git a/arm9/src/unk_0204AF24.c b/arm9/src/unk_0204AF24.c index 53e4eef44..79dd85d73 100644 --- a/arm9/src/unk_0204AF24.c +++ b/arm9/src/unk_0204AF24.c @@ -38,7 +38,7 @@ BOOL sub_0204AF6C(struct TaskManager *taskManager) return FALSE; } -void CallTask_RestoreOverworld(struct TaskManager *taskManager) //TODO: RestoreOverworld +void CallTask_RestoreOverworld(struct TaskManager *taskManager) { struct FieldSystem *fieldSystem = TaskManager_GetFieldSystem(taskManager); if(sub_0203739C(fieldSystem)) diff --git a/include/blackout.h b/include/blackout.h index 5a606a957..826e5e1ca 100644 --- a/include/blackout.h +++ b/include/blackout.h @@ -16,5 +16,7 @@ typedef struct BlackoutScreenEnvironment { MessageFormat *msgFmt; } BlackoutScreenEnvironment; +BOOL Task_BlackOut(TaskManager *taskManager); +void CallTask_BlackOut(TaskManager *taskManager); #endif //POKEDIAMOND_BLACKOUT_H diff --git a/include/save_local_field_data.h b/include/save_local_field_data.h new file mode 100644 index 000000000..2199962e3 --- /dev/null +++ b/include/save_local_field_data.h @@ -0,0 +1,8 @@ +#ifndef POKEDIAMOND_SAVE_LOCAL_FIELD_DATA_H +#define POKEDIAMOND_SAVE_LOCAL_FIELD_DATA_H + +typedef struct LocalFieldData { + +} LocalFieldData; //TODO: populate + +#endif //POKEDIAMOND_SAVE_LOCAL_FIELD_DATA_H diff --git a/include/script.h b/include/script.h index af797cda9..b1a644376 100644 --- a/include/script.h +++ b/include/script.h @@ -6,6 +6,7 @@ #include "camera.h" #include "fashion_case.h" #include "field_player_avatar.h" +#include "save_local_field_data.h" #include "msgdata.h" #include "render_window.h" #include "save.h" @@ -67,10 +68,6 @@ typedef struct ScrCmdUnkStruct00F4 { void *unk2C; } ScrCmdUnkStruct00F4; //todo identify and move to own file -typedef struct LocalFieldData { - -} LocalFieldData; //todo fill out and move to own file - typedef struct RoamerSaveData { } RoamerSaveData; //todo: fill out and move to own file diff --git a/include/unk_020051F4.h b/include/unk_020051F4.h index d621979bf..36dfd8ebe 100644 --- a/include/unk_020051F4.h +++ b/include/unk_020051F4.h @@ -12,9 +12,9 @@ u32 sub_020052B8(u16 param0, u32 param1, int playerNo); u32 sub_02005308(u32 param0, u16 param1); void sub_02005350(u16 param0, u32 param1); void sub_02005374(); -void sub_0200538C(s32 param0, u16 param1, u32 param2); +void sub_0200538C(s32 param0, u32 param1, u32 param2); void GF_SndStartFadeOutBGM(u16 param0, u16 param1); -u16 sub_02005404(); +u16 GF_SndGetFadeTimer(); u16 sub_02005410(u16 param0); void sub_0200541C(); void sub_02005454();