main menu through sub_800C780

This commit is contained in:
PikalaxALT
2019-10-07 14:06:47 -04:00
parent 2a7205dec6
commit 2fe6b6db8c
6 changed files with 239 additions and 564 deletions
-557
View File
@@ -5,563 +5,6 @@
.text
thumb_func_start sub_800C2D4
sub_800C2D4: @ 800C2D4
push {lr}
bl RunTasks
bl AnimateSprites
bl BuildOamBuffer
bl UpdatePaletteFade
pop {r0}
bx r0
thumb_func_end sub_800C2D4
thumb_func_start sub_800C2EC
sub_800C2EC: @ 800C2EC
push {lr}
bl LoadOam
bl ProcessSpriteCopyRequests
bl TransferPlttBuffer
pop {r0}
bx r0
thumb_func_end sub_800C2EC
thumb_func_start sub_800C300
sub_800C300: @ 800C300
push {lr}
movs r0, 0x1
bl sub_800C318
pop {r0}
bx r0
thumb_func_end sub_800C300
thumb_func_start sub_800C30C
sub_800C30C: @ 800C30C
push {lr}
movs r0, 0x1
bl sub_800C318
pop {r0}
bx r0
thumb_func_end sub_800C30C
thumb_func_start sub_800C318
sub_800C318: @ 800C318
push {r4,r5,lr}
sub sp, 0x8
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
movs r0, 0
bl SetVBlankCallback
movs r0, 0
movs r1, 0
bl SetGpuReg
movs r0, 0xC
movs r1, 0
bl SetGpuReg
movs r0, 0xA
movs r1, 0
bl SetGpuReg
movs r0, 0x8
movs r1, 0
bl SetGpuReg
movs r0, 0x18
movs r1, 0
bl SetGpuReg
movs r0, 0x1A
movs r1, 0
bl SetGpuReg
movs r0, 0x14
movs r1, 0
bl SetGpuReg
movs r0, 0x16
movs r1, 0
bl SetGpuReg
movs r0, 0x10
movs r1, 0
bl SetGpuReg
movs r0, 0x12
movs r1, 0
bl SetGpuReg
mov r1, sp
movs r0, 0
strh r0, [r1]
ldr r1, _0800C4A0 @ =0x040000d4
mov r0, sp
str r0, [r1]
movs r0, 0xC0
lsls r0, 19
str r0, [r1, 0x4]
ldr r0, _0800C4A4 @ =0x8100c000
str r0, [r1, 0x8]
ldr r0, [r1, 0x8]
movs r5, 0
str r5, [sp, 0x4]
add r0, sp, 0x4
str r0, [r1]
movs r0, 0xE0
lsls r0, 19
str r0, [r1, 0x4]
ldr r0, _0800C4A8 @ =0x85000100
str r0, [r1, 0x8]
ldr r0, [r1, 0x8]
mov r0, sp
strh r5, [r0]
str r0, [r1]
ldr r0, _0800C4AC @ =0x05000002
str r0, [r1, 0x4]
ldr r0, _0800C4B0 @ =0x810001ff
str r0, [r1, 0x8]
ldr r0, [r1, 0x8]
bl ScanlineEffect_Stop
bl ResetTasks
bl ResetSpriteData
bl FreeAllSpritePalettes
bl ResetPaletteFade
movs r0, 0
bl ResetBgsAndClearDma3BusyFlags
ldr r1, _0800C4B4 @ =gUnknown_8234690
movs r0, 0
movs r2, 0x1
bl InitBgsFromTemplates
movs r0, 0
movs r1, 0
movs r2, 0
bl ChangeBgX
movs r0, 0
movs r1, 0
movs r2, 0
bl ChangeBgY
movs r0, 0x1
movs r1, 0
movs r2, 0
bl ChangeBgX
movs r0, 0x1
movs r1, 0
movs r2, 0
bl ChangeBgY
movs r0, 0x2
movs r1, 0
movs r2, 0
bl ChangeBgX
movs r0, 0x2
movs r1, 0
movs r2, 0
bl ChangeBgY
ldr r0, _0800C4B8 @ =gUnknown_8234618
bl InitWindows
bl DeactivateAllTextPrinters
ldr r0, _0800C4BC @ =gUnknown_8234648
movs r1, 0
movs r2, 0x20
bl LoadPalette
ldr r0, _0800C4C0 @ =gUnknown_8234668
movs r1, 0xF0
movs r2, 0x20
bl LoadPalette
movs r0, 0x40
movs r1, 0
bl SetGpuReg
movs r0, 0x44
movs r1, 0
bl SetGpuReg
movs r0, 0x48
movs r1, 0
bl SetGpuReg
movs r0, 0x4A
movs r1, 0
bl SetGpuReg
movs r0, 0x50
movs r1, 0
bl SetGpuReg
movs r0, 0x52
movs r1, 0
bl SetGpuReg
movs r0, 0x54
movs r1, 0
bl SetGpuReg
ldr r0, _0800C4C4 @ =sub_800C2D4
bl SetMainCallback2
movs r1, 0xC1
lsls r1, 6
movs r0, 0
bl SetGpuReg
ldr r0, _0800C4C8 @ =sub_800C4D0
movs r1, 0
bl CreateTask
lsls r0, 24
lsrs r0, 24
ldr r2, _0800C4CC @ =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r1, r2
strh r5, [r1, 0xA]
strh r4, [r1, 0x18]
movs r0, 0
add sp, 0x8
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_0800C4A0: .4byte 0x040000d4
_0800C4A4: .4byte 0x8100c000
_0800C4A8: .4byte 0x85000100
_0800C4AC: .4byte 0x05000002
_0800C4B0: .4byte 0x810001ff
_0800C4B4: .4byte gUnknown_8234690
_0800C4B8: .4byte gUnknown_8234618
_0800C4BC: .4byte gUnknown_8234648
_0800C4C0: .4byte gUnknown_8234668
_0800C4C4: .4byte sub_800C2D4
_0800C4C8: .4byte sub_800C4D0
_0800C4CC: .4byte gTasks
thumb_func_end sub_800C318
thumb_func_start sub_800C4D0
sub_800C4D0: @ 800C4D0
push {r4-r6,lr}
lsls r0, 24
lsrs r5, r0, 24
ldr r0, _0800C538 @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
lsls r0, 24
lsrs r6, r0, 24
cmp r6, 0
beq _0800C4E8
b _0800C626
_0800C4E8:
movs r0, 0x40
movs r1, 0
bl SetGpuReg
movs r0, 0x44
movs r1, 0
bl SetGpuReg
movs r0, 0x48
movs r1, 0x1
bl SetGpuReg
movs r0, 0x4A
movs r1, 0x21
bl SetGpuReg
movs r0, 0x50
movs r1, 0xFF
bl SetGpuReg
movs r0, 0x52
movs r1, 0
bl SetGpuReg
movs r0, 0x54
movs r1, 0x7
bl SetGpuReg
ldr r0, _0800C53C @ =gSaveFileStatus
ldrh r4, [r0]
cmp r4, 0x2
beq _0800C58C
cmp r4, 0x2
bgt _0800C540
cmp r4, 0
beq _0800C5E8
cmp r4, 0x1
beq _0800C54A
b _0800C5E8
.align 2, 0
_0800C538: .4byte gPaletteFade
_0800C53C: .4byte gSaveFileStatus
_0800C540:
cmp r4, 0x4
beq _0800C60C
cmp r4, 0xFF
beq _0800C5B0
b _0800C5E8
_0800C54A:
movs r0, 0
bl sub_800D044
bl sub_806E2BC
cmp r0, 0x1
bne _0800C570
ldr r2, _0800C56C @ =gTasks
lsls r3, r5, 2
adds r0, r3, r5
lsls r0, 3
adds r0, r2
movs r1, 0x2
strh r1, [r0, 0x8]
adds r1, r2, 0
adds r2, r3, 0
b _0800C57E
.align 2, 0
_0800C56C: .4byte gTasks
_0800C570:
ldr r0, _0800C588 @ =gTasks
lsls r2, r5, 2
adds r1, r2, r5
lsls r1, 3
adds r1, r0
strh r4, [r1, 0x8]
adds r1, r0, 0
_0800C57E:
adds r0, r2, r5
lsls r0, 3
adds r0, r1
b _0800C5FC
.align 2, 0
_0800C588: .4byte gTasks
_0800C58C:
movs r0, 0
bl sub_800D094
ldr r0, _0800C5A8 @ =gTasks
lsls r1, r5, 2
adds r1, r5
lsls r1, 3
adds r1, r0
strh r6, [r1, 0x8]
ldr r1, _0800C5AC @ =gUnknown_8415C42
adds r0, r5, 0
bl sub_800C634
b _0800C626
.align 2, 0
_0800C5A8: .4byte gTasks
_0800C5AC: .4byte gUnknown_8415C42
_0800C5B0:
movs r0, 0
bl sub_800D094
ldr r1, _0800C5DC @ =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r4, r0, r1
movs r6, 0x1
strh r6, [r4, 0x8]
ldr r1, _0800C5E0 @ =gUnknown_8415BFF
adds r0, r5, 0
bl sub_800C634
bl sub_806E2BC
cmp r0, 0x1
bne _0800C5E4
movs r0, 0x2
strh r0, [r4, 0x8]
b _0800C626
.align 2, 0
_0800C5DC: .4byte gTasks
_0800C5E0: .4byte gUnknown_8415BFF
_0800C5E4:
strh r6, [r4, 0x8]
b _0800C626
_0800C5E8:
movs r0, 0
bl sub_800D044
ldr r1, _0800C604 @ =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r0, r1
movs r1, 0
strh r1, [r0, 0x8]
_0800C5FC:
ldr r1, _0800C608 @ =sub_800C704
str r1, [r0]
b _0800C626
.align 2, 0
_0800C604: .4byte gTasks
_0800C608: .4byte sub_800C704
_0800C60C:
movs r0, 0
bl sub_800D094
ldr r0, _0800C62C @ =gTasks
lsls r1, r5, 2
adds r1, r5
lsls r1, 3
adds r1, r0
strh r6, [r1, 0x8]
ldr r1, _0800C630 @ =gUnknown_8415C64
adds r0, r5, 0
bl sub_800C634
_0800C626:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0800C62C: .4byte gTasks
_0800C630: .4byte gUnknown_8415C64
thumb_func_end sub_800C4D0
thumb_func_start sub_800C634
sub_800C634: @ 800C634
push {r4,lr}
sub sp, 0x4
adds r4, r0, 0
adds r0, r1, 0
lsls r4, 24
lsrs r4, 24
bl sub_800CDF8
ldr r1, _0800C678 @ =gTasks
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r0, r1
ldr r1, _0800C67C @ =sub_800C688
str r1, [r0]
movs r0, 0x1
negs r0, r0
ldr r1, _0800C680 @ =0x0000ffff
str r1, [sp]
movs r1, 0
movs r2, 0x10
movs r3, 0
bl BeginNormalPaletteFade
movs r0, 0
bl ShowBg
ldr r0, _0800C684 @ =sub_800C2EC
bl SetVBlankCallback
add sp, 0x4
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0800C678: .4byte gTasks
_0800C67C: .4byte sub_800C688
_0800C680: .4byte 0x0000ffff
_0800C684: .4byte sub_800C2EC
thumb_func_end sub_800C634
thumb_func_start sub_800C688
sub_800C688: @ 800C688
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
ldr r0, _0800C6E0 @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _0800C6F8
bl RunTextPrinters
movs r0, 0x4
bl IsTextPrinterActive
lsls r0, 16
cmp r0, 0
bne _0800C6F8
ldr r0, _0800C6E4 @ =gMain
ldrh r1, [r0, 0x2E]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _0800C6F8
movs r0, 0x4
bl ClearWindowTilemap
ldr r0, _0800C6E8 @ =gUnknown_8234638
bl sub_800D1E8
movs r0, 0
bl sub_800D044
ldr r1, _0800C6EC @ =gTasks
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
adds r1, r0, r1
movs r2, 0x8
ldrsh r0, [r1, r2]
cmp r0, 0
bne _0800C6F4
ldr r0, _0800C6F0 @ =sub_800C704
b _0800C6F6
.align 2, 0
_0800C6E0: .4byte gPaletteFade
_0800C6E4: .4byte gMain
_0800C6E8: .4byte gUnknown_8234638
_0800C6EC: .4byte gTasks
_0800C6F0: .4byte sub_800C704
_0800C6F4:
ldr r0, _0800C700 @ =sub_800C7A0
_0800C6F6:
str r0, [r1]
_0800C6F8:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0800C700: .4byte sub_800C7A0
thumb_func_end sub_800C688
thumb_func_start sub_800C704
sub_800C704: @ 800C704
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
ldr r0, _0800C764 @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _0800C774
movs r0, 0x40
movs r1, 0
bl SetGpuReg
movs r0, 0x44
movs r1, 0
bl SetGpuReg
movs r0, 0x48
movs r1, 0x1
bl SetGpuReg
movs r0, 0x4A
movs r1, 0x21
bl SetGpuReg
movs r0, 0x50
movs r1, 0xFF
bl SetGpuReg
movs r0, 0x52
movs r1, 0
bl SetGpuReg
movs r0, 0x54
movs r1, 0x7
bl SetGpuReg
ldr r0, _0800C768 @ =gTasks
lsls r1, r4, 2
adds r1, r4
lsls r1, 3
adds r1, r0
movs r2, 0x8
ldrsh r0, [r1, r2]
cmp r0, 0
bne _0800C770
ldr r0, _0800C76C @ =sub_800CA94
b _0800C772
.align 2, 0
_0800C764: .4byte gPaletteFade
_0800C768: .4byte gTasks
_0800C76C: .4byte sub_800CA94
_0800C770:
ldr r0, _0800C77C @ =sub_800C780
_0800C772:
str r0, [r1]
_0800C774:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0800C77C: .4byte sub_800C780
thumb_func_end sub_800C704
thumb_func_start sub_800C780
sub_800C780: @ 800C780
push {lr}
lsls r0, 24
lsrs r2, r0, 24
ldr r0, _0800C79C @ =gPaletteFade
ldrb r1, [r0, 0x7]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _0800C798
adds r0, r2, 0
bl sub_800C7A0
_0800C798:
pop {r0}
bx r0
.align 2, 0
_0800C79C: .4byte gPaletteFade
thumb_func_end sub_800C780
thumb_func_start sub_800C7A0
sub_800C7A0: @ 800C7A0
push {r4-r7,lr}
+12 -3
View File
@@ -15,13 +15,22 @@ gUnknown_8234615::
.align 2, 0
gUnknown_8234618:: @ 8234618
.incbin "baserom.gba", 0x234618, 0x8
.byte 0x00, 0x03, 0x01, 0x18, 0x02, 0x0f
.2byte 0x0001
gUnknown_8234620:: @ 8234620
.incbin "baserom.gba", 0x234620, 0x18
.byte 0x00, 0x03, 0x01, 0x18, 0x0a, 0x0f
.2byte 0x0001
.byte 0x00, 0x03, 0x0d, 0x18, 0x02, 0x0f
.2byte 0x00f1
.byte 0x00, 0x03, 0x11, 0x18, 0x02, 0x0f
.2byte 0x0121
gUnknown_8234638:: @ 8234638
.incbin "baserom.gba", 0x234638, 0x10
.byte 0x00, 0x03, 0x0f, 0x18, 0x04, 0x0f
.2byte 0x0001
.byte 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
.2byte 0x0000
gUnknown_8234648:: @ 8234648
.incbin "baserom.gba", 0x234648, 0x20
+4 -4
View File
@@ -81,16 +81,16 @@ gUnknown_8415B44:: @ 0x8415B44
gUnknown_8415BAA:: @ 0x8415BAA
.string "- \n!\p-\n!\p\n -- \l $"
gUnknown_8415BFF:: @ 8415BFF
gText_SaveFileCorruptedPrevWillBeLoaded:: @ 8415BFF
.string "The save file is corrupted.\pThe previous save file will be\nloaded.$"
gUnknown_8415C42:: @ 8415C42
gText_SaveFileHasBeenDeleted:: @ 8415C42
.string "The save file has been\ndeleted...$"
gUnknown_8415C64:: @ 8415C64
gText_1MSubCircuitBoardNotInstalled:: @ 8415C64
.string "The 1M sub-circuit board is\nnot installed.$"
gUnknown_8415C8F:: @ 0x8415C8F
gTextJP_InternalBatteryHasRunDry:: @ 0x8415C8F
.string " \n \p \n- $"
gUnknown_8415CD9:: @ 0x8415CD9
+5
View File
@@ -336,4 +336,9 @@ extern const u8 gText_CommErrorCheckConnections[];
extern const u8 gText_ABtnTitleScreen[];
extern const u8 gText_ABtnRegistrationCounter[];
// main_menu
extern const u8 gText_SaveFileCorruptedPrevWillBeLoaded[];
extern const u8 gText_SaveFileHasBeenDeleted[];
extern const u8 gText_1MSubCircuitBoardNotInstalled[];
#endif //GUARD_STRINGS_H
+1
View File
@@ -62,6 +62,7 @@ SECTIONS {
src/string_util.o(.text);
src/link.o(.text);
src/multiboot.o(.text);
src/main_menu.o(.text);
asm/main_menu.o(.text);
src/battle_controllers.o(.text);
src/decompress.o(.text);
+217
View File
@@ -0,0 +1,217 @@
#include "global.h"
#include "palette.h"
#include "gpu_regs.h"
#include "scanline_effect.h"
#include "bg.h"
#include "task.h"
#include "text.h"
#include "save.h"
#include "event_data.h"
#include "window.h"
#include "strings.h"
bool32 sub_800C318(u8 a0);
void sub_800C4D0(u8 taskId);
void sub_800C634(u8 taskId, const u8 *str);
void sub_800C688(u8 taskId);
void sub_800C704(u8 taskId);
void sub_800C780(u8 taskId);
void sub_800C7A0(u8 taskId);
void sub_800CA94(u8 taskId);
void sub_800CDF8(const u8 *str);
void sub_800D044(u8 a0);
void sub_800D094(u8 a0);
void sub_800D1E8(const struct WindowTemplate * template);
extern const struct WindowTemplate gUnknown_8234618[];
extern const u16 gUnknown_8234648[];
extern const u16 gUnknown_8234668[];
extern const struct BgTemplate gUnknown_8234690[1];
void sub_800C2D4(void)
{
RunTasks();
AnimateSprites();
BuildOamBuffer();
UpdatePaletteFade();
}
void sub_800C2EC(void)
{
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
}
void sub_800C300(void)
{
sub_800C318(1);
}
void sub_800C30C(void)
{
sub_800C318(1);
}
bool32 sub_800C318(u8 a0)
{
u8 taskId;
SetVBlankCallback(NULL);
SetGpuReg(REG_OFFSET_DISPCNT, 0);
SetGpuReg(REG_OFFSET_BG2CNT, 0);
SetGpuReg(REG_OFFSET_BG1CNT, 0);
SetGpuReg(REG_OFFSET_BG0CNT, 0);
SetGpuReg(REG_OFFSET_BG2HOFS, 0);
SetGpuReg(REG_OFFSET_BG2VOFS, 0);
SetGpuReg(REG_OFFSET_BG1HOFS, 0);
SetGpuReg(REG_OFFSET_BG1VOFS, 0);
SetGpuReg(REG_OFFSET_BG0HOFS, 0);
SetGpuReg(REG_OFFSET_BG0VOFS, 0);
DmaFill16(3, 0, (void *)VRAM, VRAM_SIZE);
DmaFill32(3, 0, (void *)OAM, OAM_SIZE);
DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2);
ScanlineEffect_Stop();
ResetTasks();
ResetSpriteData();
FreeAllSpritePalettes();
ResetPaletteFade();
ResetBgsAndClearDma3BusyFlags(FALSE);
InitBgsFromTemplates(0, gUnknown_8234690, NELEMS(gUnknown_8234690));
ChangeBgX(0, 0, 0);
ChangeBgY(0, 0, 0);
ChangeBgX(1, 0, 0);
ChangeBgY(1, 0, 0);
ChangeBgX(2, 0, 0);
ChangeBgY(2, 0, 0);
InitWindows(gUnknown_8234618);
DeactivateAllTextPrinters();
LoadPalette(gUnknown_8234648, 0x00, 0x20);
LoadPalette(gUnknown_8234668, 0xF0, 0x20);
SetGpuReg(REG_OFFSET_WIN0H, 0);
SetGpuReg(REG_OFFSET_WIN0V, 0);
SetGpuReg(REG_OFFSET_WININ, 0);
SetGpuReg(REG_OFFSET_WINOUT, 0);
SetGpuReg(REG_OFFSET_BLDCNT, 0);
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
SetGpuReg(REG_OFFSET_BLDY, 0);
SetMainCallback2(sub_800C2D4);
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON);
taskId = CreateTask(sub_800C4D0, 0);
gTasks[taskId].data[1] = 0;
gTasks[taskId].data[8] = a0;
return FALSE;
}
void sub_800C4D0(u8 taskId)
{
if (!gPaletteFade.active)
{
SetGpuReg(REG_OFFSET_WIN0H, 0);
SetGpuReg(REG_OFFSET_WIN0V, 0);
SetGpuReg(REG_OFFSET_WININ, 0x0001);
SetGpuReg(REG_OFFSET_WINOUT, 0x0021);
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN);
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 0));
SetGpuReg(REG_OFFSET_BLDY, 7);
switch (gSaveFileStatus)
{
case 1:
sub_800D044(0);
if (sub_806E2BC() == TRUE)
{
gTasks[taskId].data[0] = 2;
}
else
{
gTasks[taskId].data[0] = 1;
}
gTasks[taskId].func = sub_800C704;
break;
case 2:
sub_800D094(0);
gTasks[taskId].data[0] = 0;
sub_800C634(taskId, gText_SaveFileHasBeenDeleted);
break;
case 0xFF:
sub_800D094(0);
gTasks[taskId].data[0] = 1;
sub_800C634(taskId, gText_SaveFileCorruptedPrevWillBeLoaded);
if (sub_806E2BC() == TRUE)
{
gTasks[taskId].data[0] = 2;
}
else
{
gTasks[taskId].data[0] = 1;
}
break;
case 0:
default:
sub_800D044(0);
gTasks[taskId].data[0] = 0;
gTasks[taskId].func = sub_800C704;
break;
case 4:
sub_800D094(0);
gTasks[taskId].data[0] = 0;
sub_800C634(taskId, gText_1MSubCircuitBoardNotInstalled);
break;
}
}
}
void sub_800C634(u8 taskId, const u8 *str)
{
sub_800CDF8(str);
gTasks[taskId].func = sub_800C688;
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0xFFFF);
ShowBg(0);
SetVBlankCallback(sub_800C2EC);
}
void sub_800C688(u8 taskId)
{
if (!gPaletteFade.active)
{
RunTextPrinters();
if (!IsTextPrinterActive(4) && JOY_NEW(A_BUTTON))
{
ClearWindowTilemap(4);
sub_800D1E8(&gUnknown_8234618[4]);
sub_800D044(0);
if (gTasks[taskId].data[0] == 0)
gTasks[taskId].func = sub_800C704;
else
gTasks[taskId].func = sub_800C7A0;
}
}
}
void sub_800C704(u8 taskId)
{
if (!gPaletteFade.active)
{
SetGpuReg(REG_OFFSET_WIN0H, 0);
SetGpuReg(REG_OFFSET_WIN0V, 0);
SetGpuReg(REG_OFFSET_WININ, 0x0001);
SetGpuReg(REG_OFFSET_WINOUT, 0x0021);
SetGpuReg(REG_OFFSET_BLDCNT,
BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3 | BLDCNT_TGT1_OBJ |
BLDCNT_TGT1_BD | BLDCNT_EFFECT_DARKEN);
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 0));
SetGpuReg(REG_OFFSET_BLDY, 7);
if (gTasks[taskId].data[0] == 0)
gTasks[taskId].func = sub_800CA94;
else
gTasks[taskId].func = sub_800C780;
}
}
void sub_800C780(u8 taskId)
{
if (!gPaletteFade.active)
{
sub_800C7A0(taskId);
}
}