Task_ShowPrintedBlackoutMessage

This commit is contained in:
red031000
2023-12-15 13:50:37 +00:00
parent 72bdeab878
commit 7cbd2d4e82
3 changed files with 45 additions and 112 deletions

View File

@@ -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}

View File

@@ -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;
}

View File

@@ -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,