diff options
Diffstat (limited to 'src/engine/reset_rtc_screen.c')
-rw-r--r-- | src/engine/reset_rtc_screen.c | 692 |
1 files changed, 0 insertions, 692 deletions
diff --git a/src/engine/reset_rtc_screen.c b/src/engine/reset_rtc_screen.c deleted file mode 100644 index 8c2c23569..000000000 --- a/src/engine/reset_rtc_screen.c +++ /dev/null @@ -1,692 +0,0 @@ -#include "global.h" -#include "event_data.h" -#include "main.h" -#include "menu.h" -#include "palette.h" -#include "rtc.h" -#include "save.h" -#include "script.h" -#include "sprite.h" -#include "constants/songs.h" -#include "sound.h" -#include "string_util.h" -#include "strings.h" -#include "strings2.h" -#include "task.h" -#include "text.h" -#include "scanline_effect.h" - -struct ResetRtcStruct -{ - /*0x0*/ u8 dataIndex; - /*0x2*/ u16 minVal; - /*0x4*/ u16 maxVal; - /*0x6*/ u8 left; - /*0x7*/ u8 right; - /*0x8*/ u8 unk8; -}; - -extern u16 gSaveFileStatus; - -void CB2_ResetRtcScreen(void); -void VBlankCB_ResetRtcScreen(void); -void Task_ResetRtcScreen(u8); - -static const struct ResetRtcStruct gUnknown_08376420[5] = -{ - { - .dataIndex = 3, - .minVal = 1, - .maxVal = 9999, - .left = 0, - .right = 2, - .unk8 = 0, - }, - { - .dataIndex = 4, - .minVal = 0, - .maxVal = 23, - .left = 1, - .right = 3, - .unk8 = 0, - }, - { - .dataIndex = 5, - .minVal = 0, - .maxVal = 59, - .left = 2, - .right = 4, - .unk8 = 0, - }, - { - .dataIndex = 6, - .minVal = 0, - .maxVal = 59, - .left = 3, - .right = 5, - .unk8 = 0, - }, - { - .dataIndex = 7, - .minVal = 0, - .maxVal = 0, - .left = 4, - .right = 0, - .unk8 = 6, - }, -}; - -const struct OamData gOamData_837645C = -{ - .y = 0, - .affineMode = 0, - .objMode = 0, - .mosaic = 0, - .bpp = 0, - .shape = 0, - .x = 0, - .matrixNum = 0, - .size = 0, - .tileNum = 0, - .priority = 0, - .paletteNum = 0, - .affineParam = 0, -}; - -const u8 gSpriteImage_8376464[] = INCBIN_U8("graphics/unknown_sprites/83764AC/0.4bpp"); -const u8 gSpriteImage_8376484[] = INCBIN_U8("graphics/unknown_sprites/83764AC/1.4bpp"); - -const u16 Palette_3764A4[] = INCBIN_U16("graphics/unknown/83764A4.gbapal"); - -const struct SpriteFrameImage gSpriteImageTable_83764AC[] = -{ - { gSpriteImage_8376464, 0x20 }, - { gSpriteImage_8376484, 0x20 }, -}; - -const struct SpritePalette gUnknown_083764BC = -{ - .data = Palette_3764A4, - .tag = 0x1000, -}; - -const union AnimCmd gSpriteAnim_83764C4[] = -{ - ANIMCMD_FRAME(0, 30), - ANIMCMD_JUMP(0), -}; - -const union AnimCmd gSpriteAnim_83764CC[] = -{ - ANIMCMD_FRAME(0, 158, .vFlip = TRUE), - ANIMCMD_JUMP(0), -}; - -const union AnimCmd gSpriteAnim_83764D4[] = -{ - ANIMCMD_FRAME(1, 30), - ANIMCMD_JUMP(0), -}; - -const union AnimCmd *const gSpriteAnimTable_83764DC[] = -{ - gSpriteAnim_83764C4, - gSpriteAnim_83764CC, - gSpriteAnim_83764D4, -}; - -const struct SpriteTemplate gSpriteTemplate_83764E8 = -{ - .tileTag = 0xFFFF, - .paletteTag = 0x1000, - .oam = &gOamData_837645C, - .anims = gSpriteAnimTable_83764DC, - .images = gSpriteImageTable_83764AC, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = SpriteCallbackDummy, -}; - -const u8 gUnknown_08376500[] = _(" : "); - -void SpriteCB_ResetRtcCusor0(struct Sprite *sprite) -{ - int state = gTasks[sprite->data[0]].data[2]; - if (state != sprite->data[1]) - { - sprite->data[1] = state; - switch (state) - { - case 1: - sprite->invisible = FALSE; - sprite->animNum = 1; - sprite->animDelayCounter = 0; - sprite->pos1.x = 53; - sprite->pos1.y = 68; - break; - case 2: - sprite->invisible = FALSE; - sprite->animNum = 1; - sprite->animDelayCounter = 0; - sprite->pos1.x = 86; - sprite->pos1.y = 68; - break; - case 3: - sprite->invisible = FALSE; - sprite->animNum = 1; - sprite->animDelayCounter = 0; - sprite->pos1.x = 107; - sprite->pos1.y = 68; - break; - case 4: - sprite->invisible = FALSE; - sprite->animNum = 1; - sprite->animDelayCounter = 0; - sprite->pos1.x = 128; - sprite->pos1.y = 68; - break; - case 5: - sprite->invisible = FALSE; - sprite->animNum = 2; - sprite->animDelayCounter = 0; - sprite->pos1.x = 155; - sprite->pos1.y = 80; - break; - case 6: - DestroySprite(sprite); - break; - } - } -} - -void SpriteCB_ResetRtcCusor1(struct Sprite *sprite) -{ - int state = gTasks[sprite->data[0]].data[2]; - if (state != sprite->data[1]) - { - sprite->data[1] = state; - switch (state) - { - case 1: - sprite->invisible = FALSE; - sprite->animNum = 0; - sprite->animDelayCounter = 0; - sprite->pos1.x = 53; - sprite->pos1.y = 92; - break; - case 2: - sprite->invisible = FALSE; - sprite->animNum = 0; - sprite->animDelayCounter = 0; - sprite->pos1.x = 86; - sprite->pos1.y = 92; - break; - case 3: - sprite->invisible = FALSE; - sprite->animNum = 0; - sprite->animDelayCounter = 0; - sprite->pos1.x = 107; - sprite->pos1.y = 92; - break; - case 4: - sprite->invisible = FALSE; - sprite->animNum = 0; - sprite->animDelayCounter = 0; - sprite->pos1.x = 128; - sprite->pos1.y = 92; - break; - case 5: - sprite->invisible = TRUE; - break; - case 6: - DestroySprite(sprite); - break; - } - } -} - -void ResetRtcScreen_CreateCursor(u8 taskId) -{ - int spriteId; - - LoadSpritePalette(&gUnknown_083764BC); - - spriteId = CreateSpriteAtEnd(&gSpriteTemplate_83764E8, 53, 68, 0); - gSprites[spriteId].callback = SpriteCB_ResetRtcCusor0; - gSprites[spriteId].data[0] = taskId; - gSprites[spriteId].data[1] = -1; - - spriteId = CreateSpriteAtEnd(&gSpriteTemplate_83764E8, 53, 68, 0); - gSprites[spriteId].callback = SpriteCB_ResetRtcCusor1; - gSprites[spriteId].data[0] = taskId; - gSprites[spriteId].data[1] = -1; -} - -void ResetRtcScreen_FreeCursorPalette(void) -{ - FreeSpritePaletteByTag(gUnknown_083764BC.tag); -} - -void ResetRtcScreen_HideChooseTimeWindow(void) -{ - Menu_EraseWindowRect(3, 8, 25, 11); -} - -void ResetRtcScreen_PrintTime(u8 x, u8 y, u16 days, u8 hours, u8 minutes, u8 seconds) -{ - u8 *dest = gStringVar4; - days %= 10000; - hours %= 24; - minutes %= 60; - seconds %= 60; - sub_8072C44(gStringVar1, days, 24, 1); - dest = StringCopy(dest, gStringVar1); - dest = StringCopy(dest, gOtherText_Day); - sub_8072C44(gStringVar1, hours, 18, 1); - dest = StringCopy(dest, gStringVar1); - dest = StringCopy(dest, gUnknown_08376500); - dest = ConvertIntToDecimalStringN(dest, minutes, STR_CONV_MODE_LEADING_ZEROS, 2); - dest = StringCopy(dest, gUnknown_08376500); - ConvertIntToDecimalStringN(dest, seconds, STR_CONV_MODE_LEADING_ZEROS, 2); - Menu_PrintText(gStringVar4, x, y); -} - -void ResetRtcScreen_ShowChooseTimeWindow(u16 days, u8 hours, u8 minutes, u8 seconds) -{ - Menu_DrawStdWindowFrame(3, 8, 25, 11); - Menu_PrintText(gOtherText_OK, 20, 9); - ResetRtcScreen_PrintTime(4, 9, days, hours, minutes, seconds); -} - -bool32 ResetRtcScreen_MoveTimeUpDown(s16 *val, int minVal, int maxVal, u16 keys) -{ - if (keys & DPAD_DOWN) - { - (*val)--; - if (*val < minVal) - *val = maxVal; - } - else if (keys & DPAD_UP) - { - (*val)++; - if (*val > maxVal) - *val = minVal; - } - else if (keys & DPAD_LEFT) - { - *val -= 10; - if (*val < minVal) - *val = maxVal; - } - else if (keys & DPAD_RIGHT) - { - *val += 10; - if (*val > maxVal) - *val = minVal; - } - else - { - return FALSE; - } - - return TRUE; -} - -void Task_ResetRtc_3(u8 taskId) -{ - gTasks[taskId].data[0] = 1; -} - -void Task_ResetRtc_2(u8 taskId) -{ - ResetRtcScreen_HideChooseTimeWindow(); - ResetRtcScreen_FreeCursorPalette(); - gTasks[taskId].func = Task_ResetRtc_3; -} - -void Task_ResetRtc_1(u8 taskId) -{ - s16 *data = gTasks[taskId].data; - u8 selection = data[2]; - const struct ResetRtcStruct *selectionInfo = &gUnknown_08376420[selection - 1]; - - if (gMain.newKeys & B_BUTTON) - { - gTasks[taskId].func = Task_ResetRtc_2; - data[1] = 0; - data[2] = 6; - PlaySE(SE_SELECT); - return; - } - - if (gMain.newKeys & DPAD_RIGHT) - { - if (selectionInfo->right) - { - data[2] = selectionInfo->right; - PlaySE(SE_SELECT); - return; - } - } - - if (gMain.newKeys & DPAD_LEFT) - { - if (selectionInfo->left) - { - data[2] = selectionInfo->left; - PlaySE(SE_SELECT); - return; - } - } - - if (selection == 5) - { - if (gMain.newKeys & A_BUTTON) - { - gLocalTime.days = data[3]; - gLocalTime.hours = data[4]; - gLocalTime.minutes = data[5]; - gLocalTime.seconds = data[6]; - PlaySE(SE_SELECT); - gTasks[taskId].func = Task_ResetRtc_2; - data[1] = 1; - data[2] = 6; - } - } - else if (ResetRtcScreen_MoveTimeUpDown(&data[selectionInfo->dataIndex], selectionInfo->minVal, selectionInfo->maxVal, gMain.newAndRepeatedKeys & (DPAD_UP | DPAD_DOWN))) - { - PlaySE(SE_SELECT); - ResetRtcScreen_PrintTime(4, 9, data[3], data[4], data[5], data[6]); - } -} - -void Task_ResetRtc_0(u8 taskId) -{ - s16 *data = gTasks[taskId].data; - data[0] = 0; - data[3] = gLocalTime.days; - data[4] = gLocalTime.hours; - data[5] = gLocalTime.minutes; - data[6] = gLocalTime.seconds; - ResetRtcScreen_ShowChooseTimeWindow(data[3], data[4], data[5], data[6]); - ResetRtcScreen_CreateCursor(taskId); - data[2] = 2; - gTasks[taskId].func = Task_ResetRtc_1; -} - -void CB2_InitResetRtcScreen(void) -{ - REG_DISPCNT = 0; - SetVBlankCallback(NULL); - DmaClear16(3, PLTT, PLTT_SIZE); - DmaFill16Large(3, 0, (u8 *)VRAM, 0x18000, 0x1000); - ResetOamRange(0, 128); - LoadOam(); - ScanlineEffect_Stop(); - ScanlineEffect_Clear(); - ResetSpriteData(); - ResetTasks(); - ResetPaletteFade(); - Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4); - InitMenuWindow(&gWindowTemplate_81E6CE4); - REG_DISPCNT = 4352; - SetVBlankCallback(VBlankCB_ResetRtcScreen); - SetMainCallback2(CB2_ResetRtcScreen); - CreateTask(Task_ResetRtcScreen, 80); -} - -void CB2_ResetRtcScreen(void) -{ - RunTasks(); - AnimateSprites(); - BuildOamBuffer(); - UpdatePaletteFade(); -} - -void VBlankCB_ResetRtcScreen(void) -{ - ProcessSpriteCopyRequests(); - LoadOam(); - TransferPlttBuffer(); -} - -void ResetRtcScreen_ShowMessage(const u8 *str) -{ - Menu_DisplayDialogueFrame(); - Menu_PrintText(str, 2, 15); -} - -void Task_ShowResetRtcPrompt(u8 taskId) -{ - s16 *data = gTasks[taskId].data; - - switch (data[0]) - { - case 0: - Menu_EraseScreen(); - Menu_DrawStdWindowFrame(0, 0, 20, 10); - Menu_PrintText(gSystemText_PresentTime, 1, 1); - ResetRtcScreen_PrintTime( - 1, - 3, - gLocalTime.days, - gLocalTime.hours, - gLocalTime.minutes, - gLocalTime.seconds); - Menu_PrintText(gSystemText_PreviousTime, 1, 5); - ResetRtcScreen_PrintTime( - 1, - 7, - gSaveBlock2.lastBerryTreeUpdate.days, - gSaveBlock2.lastBerryTreeUpdate.hours, - gSaveBlock2.lastBerryTreeUpdate.minutes, - gSaveBlock2.lastBerryTreeUpdate.seconds); - ResetRtcScreen_ShowMessage(gSystemText_ResetRTCPrompt); - data[0]++; - case 1: - if (gMain.newKeys & B_BUTTON) - { - DestroyTask(taskId); - DoSoftReset(); - } - else if (gMain.newKeys & A_BUTTON) - { - PlaySE(SE_SELECT); - DestroyTask(taskId); - } - break; - } -} - -void Task_ResetRtcScreen(u8 taskId) -{ - s16 *data = gTasks[taskId].data; - - switch (data[0]) - { - case 0: - BeginNormalPaletteFade(0xFFFFFFFF, 1, 0x10, 0, 0xFFFF); - data[0] = 1; - break; - case 1: - if (!gPaletteFade.active) - { - if (gSaveFileStatus == 0 || gSaveFileStatus == 2) - { - ResetRtcScreen_ShowMessage(gSystemText_NoSaveFileNoTime); - data[0] = 5; - } - else - { - RtcCalcLocalTime(); - data[1] = CreateTask(Task_ShowResetRtcPrompt, 80); - data[0] = 2; - } - } - break; - case 2: - if (gTasks[data[1]].isActive != TRUE) - { - Menu_EraseScreen(); - ResetRtcScreen_ShowMessage(gSystemText_PleaseResetTime); - gLocalTime = gSaveBlock2.lastBerryTreeUpdate; - data[1] = CreateTask(Task_ResetRtc_0, 80); - data[0] = 3; - } - break; - case 3: - if (gTasks[data[1]].data[0]) - { - if (!gTasks[data[1]].data[1]) - { - DestroyTask(data[1]); - data[0] = 2; - } - else - { - DestroyTask(data[1]); - RtcReset(); - RtcCalcLocalTimeOffset( - gLocalTime.days, - gLocalTime.hours, - gLocalTime.minutes, - gLocalTime.seconds); - gSaveBlock2.lastBerryTreeUpdate = gLocalTime; - VarSet(VAR_DAYS, gLocalTime.days); - DisableResetRTC(); - ResetRtcScreen_ShowMessage(gSystemText_ClockResetDataSave); - data[0] = 4; - } - } - break; - case 4: - if (Save_WriteData(0) == SAVE_STATUS_OK) - { - ResetRtcScreen_ShowMessage(gSystemText_SaveCompleted); - PlaySE(SE_PINPON); - } - else - { - ResetRtcScreen_ShowMessage(gSystemText_SaveFailed); - PlaySE(SE_BOO); - } - data[0] = 5; - // fall through - case 5: - if (gMain.newKeys & A_BUTTON) - { - BeginNormalPaletteFade(0xFFFFFFFF, 1, 0, 0x10, 0xFFFF); - data[0] = 6; - } - else - { - break; - } - // fall through - case 6: - if (!gPaletteFade.active) - { - DestroyTask(taskId); - DoSoftReset(); - } - } -} - -#if DEBUG -void debug_sub_806F8F8(void) -{ - SetMainCallback2(CB2_InitResetRtcScreen); -} - -void debug_sub_806F908(u8 taskId) -{ - s16 *data = gTasks[taskId].data; - - switch (data[0]) - { - case 0: - data[1] = CreateTask(Task_ResetRtc_0, 80); - data[0]++; - break; - case 1: - if (gTasks[data[1]].data[0] != 0) - { - if (gTasks[data[1]].data[1] == 1) - RtcCalcLocalTimeOffset(gLocalTime.days, gLocalTime.hours, gLocalTime.minutes, gLocalTime.seconds); - DestroyTask(data[1]); - Menu_EraseScreen(); - ScriptContext2_Disable(); - DestroyTask(taskId); - } - break; - } -} - -void debug_sub_806F99C(void) -{ - RtcCalcLocalTime(); - CreateTask(debug_sub_806F908, 80); - ScriptContext2_Enable(); -} - -void debug_sub_806F9B8(void) -{ - gLocalTime = gSaveBlock2.lastBerryTreeUpdate; - CreateTask(debug_sub_806F908, 80); - ScriptContext2_Enable(); -} - -static const u8 sDebugText_Days[] = _("にっすう"); // "days" -static const u8 sDebugText_Time[] = _("じかん"); // "time" -static const u8 sDebugText_GameTime[] = _("ゲームない じかん"); // "game time" -static const u8 sDebugText_RTCTime[] = _("RTC じかん"); // "RTC time" - -void debug_sub_806F9E4(u8 taskId) -{ - s16 *data = gTasks[taskId].data; - u8 *str = gStringVar4; - - switch (data[0]) - { - case 0: - data[0]++; - break; - case 1: - Menu_DrawStdWindowFrame(0, 9, 29, 19); - ConvertIntToHexStringN(str + 80, RtcGetErrorStatus(), 2, 4); - Menu_PrintText(str + 80, 2, 10); - Menu_PrintText(sDebugText_Days, 12, 12); - Menu_PrintText(sDebugText_Time, 20, 12); - Menu_PrintText(sDebugText_RTCTime, 1, 14); - Menu_PrintText(sDebugText_GameTime, 1, 16); - data[0]++; - break; - case 2: - RtcCalcLocalTime(); - FormatHexRtcTime(str); - debug_sub_8009894(str + 20); - FormatDecimalTime(str + 40, gLocalTime.hours, gLocalTime.minutes, gLocalTime.seconds); - ConvertIntToDecimalStringN(str + 60, gLocalTime.days, 1, 4); - if (gSaveBlock2.playTimeVBlanks == 0) - { - Menu_PrintText(str, 20, 14); - Menu_PrintText(str + 20, 12, 14); - Menu_PrintText(str + 40, 20, 16); - Menu_PrintText(str + 60, 12, 16); - } - if (data[1] > 19) // Did you mean < 19? - { - data[1]++; - } - else - { - if (gMain.newKeys & A_BUTTON) - { - Menu_EraseScreen(); - DestroyTask(taskId); - ScriptContext2_Disable(); - } - } - break; - } -} -#endif
\ No newline at end of file |