diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2019-10-07 14:06:47 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2019-10-07 14:06:47 -0400 |
commit | 2fe6b6db8cd681de8cf1671936452aa8bb1103f5 (patch) | |
tree | 1bd0cf21469017bd265370f09039f240f5a3a361 | |
parent | 2a7205dec677c98d087cb8ba191370de464c8bf0 (diff) |
main menu through sub_800C780
-rw-r--r-- | asm/main_menu.s | 557 | ||||
-rw-r--r-- | data/data.s | 15 | ||||
-rw-r--r-- | data/strings.s | 8 | ||||
-rw-r--r-- | include/strings.h | 5 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/main_menu.c | 217 |
6 files changed, 239 insertions, 564 deletions
diff --git a/asm/main_menu.s b/asm/main_menu.s index 76c9f8838..3b33c4f69 100644 --- a/asm/main_menu.s +++ b/asm/main_menu.s @@ -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} diff --git a/data/data.s b/data/data.s index d0bd198e1..da50d9086 100644 --- a/data/data.s +++ b/data/data.s @@ -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 diff --git a/data/strings.s b/data/strings.s index be47054b5..7af3a57bc 100644 --- a/data/strings.s +++ b/data/strings.s @@ -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 diff --git a/include/strings.h b/include/strings.h index 1bafbacbe..2dbe3919b 100644 --- a/include/strings.h +++ b/include/strings.h @@ -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 diff --git a/ld_script.txt b/ld_script.txt index fbf00f9c1..35c85e935 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -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); diff --git a/src/main_menu.c b/src/main_menu.c new file mode 100644 index 000000000..dfc4fb808 --- /dev/null +++ b/src/main_menu.c @@ -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); + } +} |