From 7cbd2d4e827eafe1cb8bf4d30134d46a1d6e443e Mon Sep 17 00:00:00 2001 From: red031000 Date: Fri, 15 Dec 2023 13:50:37 +0000 Subject: [PATCH] Task_ShowPrintedBlackoutMessage --- arm9/asm/blackout_asm.s | 110 --------------------------------------- arm9/src/blackout_src.c | 45 +++++++++++++++- arm9/src/gf_gfx_loader.c | 2 +- 3 files changed, 45 insertions(+), 112 deletions(-) diff --git a/arm9/asm/blackout_asm.s b/arm9/asm/blackout_asm.s index 5f2d404ed..ff2178fb8 100644 --- a/arm9/asm/blackout_asm.s +++ b/arm9/asm/blackout_asm.s @@ -6,116 +6,6 @@ .text - thumb_func_start Task_ShowPrintedBlackoutMessage -Task_ShowPrintedBlackoutMessage: ; 0x02048214 - push {r3-r4, lr} - sub sp, #0xc - bl TaskManager_GetEnvironment - add r4, r0, #0x0 - ldr r0, [r4, #0x0] - cmp r0, #0x4 - bhi _020482EA - add r0, r0, r0 - add r0, pc - ldrh r0, [r0, #0x6] - lsl r0, r0, #0x10 - asr r0, r0, #0x10 - add pc, r0 -_02048230: ; jump table (using 16-bit offset) - .short _0204823A - _02048230 - 2; case 0 - .short _02048258 - _02048230 - 2; case 1 - .short _02048268 - _02048230 - 2; case 2 - .short _02048298 - _02048230 - 2; case 3 - .short _020482B2 - _02048230 - 2; case 4 -_0204823A: - mov r0, #0x8 - str r0, [sp, #0x0] - mov r1, #0x1 - str r1, [sp, #0x4] - mov r0, #0x20 - str r0, [sp, #0x8] - mov r0, #0x3 - mov r2, #0x2a - mov r3, #0x0 - bl BeginNormalPaletteFade - ldr r0, [r4, #0x0] - add r0, r0, #0x1 - str r0, [r4, #0x0] - b _020482EA -_02048258: - bl IsPaletteFadeFinished - cmp r0, #0x0 - beq _020482EA - ldr r0, [r4, #0x0] - add r0, r0, #0x1 - str r0, [r4, #0x0] - b _020482EA -_02048268: - ldr r0, _020482F0 ; =gSystem - ldr r1, [r0, #0x48] - mov r0, #0x1 - tst r0, r1 - bne _02048278 - mov r0, #0x2 - tst r0, r1 - beq _020482EA -_02048278: - mov r0, #0x8 - str r0, [sp, #0x0] - mov r0, #0x1 - str r0, [sp, #0x4] - mov r0, #0x20 - str r0, [sp, #0x8] - mov r0, #0x0 - add r1, r0, #0x0 - add r2, r0, #0x0 - add r3, r0, #0x0 - bl BeginNormalPaletteFade - ldr r0, [r4, #0x0] - add r0, r0, #0x1 - str r0, [r4, #0x0] - b _020482EA -_02048298: - bl IsPaletteFadeFinished - cmp r0, #0x0 - beq _020482EA - add r0, r4, #0x0 - add r0, #0xc - mov r1, #0x0 - bl FillWindowPixelBuffer - ldr r0, [r4, #0x0] - add r0, r0, #0x1 - str r0, [r4, #0x0] - b _020482EA -_020482B2: - add r0, r4, #0x0 - add r0, #0xc - mov r1, #0x0 - bl ClearFrameAndWindow2 - add r0, r4, #0x0 - add r0, #0xc - bl RemoveWindow - ldr r0, [r4, #0x20] - bl MessageFormat_Delete - ldr r0, [r4, #0x1c] - bl DestroyMsgData - ldr r0, [r4, #0x8] - mov r1, #0x3 - bl FreeBgTilemapBuffer - ldr r0, [r4, #0x8] - bl FreeToHeap - add r0, r4, #0x0 - bl FreeToHeap - add sp, #0xc - mov r0, #0x1 - pop {r3-r4, pc} -_020482EA: - mov r0, #0x0 - add sp, #0xc - pop {r3-r4, pc} - .balign 4 -_020482F0: .word gSystem - thumb_func_start sub_020482F4 sub_020482F4: ; 0x020482F4 push {r4-r7, lr} diff --git a/arm9/src/blackout_src.c b/arm9/src/blackout_src.c index 5379188ca..487844fa7 100644 --- a/arm9/src/blackout_src.c +++ b/arm9/src/blackout_src.c @@ -1,16 +1,21 @@ #include "blackout.h" #include "bg_window.h" #include "constants/maps.h" +#include "constants/rgb.h" #include "msgdata/msg.naix" #include "msgdata/msg/narc_0328.h" #include "graphic/font.naix" #include "gf_gfx_loader.h" +#include "PAD_pad.h" +#include "render_window.h" static void Blackout_InitDisplays(BgConfig *bgConfig); /*static*/ void Blackout_DrawMessage(FieldSystem *fieldSystem, TaskManager *taskManager); +static BOOL Task_ShowPrintedBlackoutMessage(TaskManager *taskManager); -extern BOOL Task_ShowPrintedBlackoutMessage(TaskManager *taskManager); extern void sub_020482F4(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); @@ -93,3 +98,41 @@ static void Blackout_InitDisplays(BgConfig *bgConfig) { CopyWindowToVram(&env->window); TaskManager_Call(taskManager, Task_ShowPrintedBlackoutMessage, env); } + +static BOOL Task_ShowPrintedBlackoutMessage(TaskManager *taskManager) { + BlackoutScreenEnvironment *env = TaskManager_GetEnvironment(taskManager); + switch (env->state) { + case 0: + BeginNormalPaletteFade(3, 1, 42, RGB_BLACK, 8, 1, HEAP_ID_32); + env->state++; + break; + case 1: + if (IsPaletteFadeFinished()) { + env->state++; + } + break; + case 2: + if (gSystem.newKeys & PAD_BUTTON_A || gSystem.newKeys & PAD_BUTTON_B) { + BeginNormalPaletteFade(0, 0, 0, RGB_BLACK, 8, 1, HEAP_ID_32); + env->state++; + } + break; + case 3: + if (IsPaletteFadeFinished()) { + FillWindowPixelBuffer(&env->window, 0); + env->state++; + } + break; + case 4: + ClearFrameAndWindow2(&env->window, FALSE); + RemoveWindow(&env->window); + MessageFormat_Delete(env->msgFmt); + DestroyMsgData(env->msgData); + FreeBgTilemapBuffer(env->bgConfig, GF_BG_LYR_MAIN_3); + FreeToHeap(env->bgConfig); + FreeToHeap(env); + return TRUE; + } + + return FALSE; +} diff --git a/arm9/src/gf_gfx_loader.c b/arm9/src/gf_gfx_loader.c index 80ed4d26f..5e442bc2d 100644 --- a/arm9/src/gf_gfx_loader.c +++ b/arm9/src/gf_gfx_loader.c @@ -96,7 +96,7 @@ void GfGfxLoader_GXLoadPalWithSrcOffset(NarcId narcId, s32 memberNo, enum GFPalL } } -u32 GfGfxLoader_LoadWholePalette(NarcId narcId, s32 memberId, u32 layer, u32 baseAddr, u32 szByte, BOOL isCompressed, HeapID heapId) +u32 GfGfxLoader_LoadWholePalette(NarcId narcId, s32 memberId, u32 layer, u32 baseAddr, u32 szByte, BOOL isCompressed, HeapID heapId) //todo: change this to new format { static void (*const load_funcs[])(void *, u32, u32) = { GX_LoadOBJ,