diff options
-rw-r--r-- | include/rtc.h | 1 | ||||
-rw-r--r-- | src/engine/reset_rtc_screen.c | 398 |
2 files changed, 90 insertions, 309 deletions
diff --git a/include/rtc.h b/include/rtc.h index fdc5ad709..e117cf753 100644 --- a/include/rtc.h +++ b/include/rtc.h @@ -44,5 +44,6 @@ void RtcInitLocalTimeOffset(s32 hour, s32 minute); void RtcCalcLocalTimeOffset(s32 days, s32 hours, s32 minutes, s32 seconds); void CalcTimeDifference(struct Time *result, struct Time *t1, struct Time *t2); u32 RtcGetMinuteCount(void); +void debug_sub_8009894(u8 *); #endif // GUARD_RTC_UTIL_H diff --git a/src/engine/reset_rtc_screen.c b/src/engine/reset_rtc_screen.c index 8b67f39a5..8c2c23569 100644 --- a/src/engine/reset_rtc_screen.c +++ b/src/engine/reset_rtc_screen.c @@ -5,6 +5,7 @@ #include "palette.h" #include "rtc.h" #include "save.h" +#include "script.h" #include "sprite.h" #include "constants/songs.h" #include "sound.h" @@ -147,13 +148,6 @@ const struct SpriteTemplate gSpriteTemplate_83764E8 = const u8 gUnknown_08376500[] = _(" : "); -#if DEBUG -const u8 gUnknown_Debug_0839AE94[] = _("にっすう"); -const u8 gUnknown_Debug_0839AE99[] = _("じかん"); -const u8 gUnknown_Debug_0839AE9D[] = _("ゲームない じかん"); -const u8 gUnknown_Debug_0839AEA7[] = _("RTC じかん"); -#endif - void SpriteCB_ResetRtcCusor0(struct Sprite *sprite) { int state = gTasks[sprite->data[0]].data[2]; @@ -576,6 +570,7 @@ void Task_ResetRtcScreen(u8 taskId) PlaySE(SE_BOO); } data[0] = 5; + // fall through case 5: if (gMain.newKeys & A_BUTTON) { @@ -586,6 +581,7 @@ void Task_ResetRtcScreen(u8 taskId) { break; } + // fall through case 6: if (!gPaletteFade.active) { @@ -596,317 +592,101 @@ void Task_ResetRtcScreen(u8 taskId) } #if DEBUG - -__attribute__((naked)) void debug_sub_806F8F8(void) { - asm("\ - push {lr}\n\ - ldr r0, ._131 @ CB2_InitResetRtcScreen\n\ - bl SetMainCallback2\n\ - pop {r0}\n\ - bx r0\n\ -._132:\n\ - .align 2, 0\n\ -._131:\n\ - .word CB2_InitResetRtcScreen+1"); + SetMainCallback2(CB2_InitResetRtcScreen); } -__attribute__((naked)) -void debug_sub_806F908(u8 a) -{ - asm("\ - push {r4, r5, lr}\n\ - lsl r0, r0, #0x18\n\ - lsr r5, r0, #0x18\n\ - lsl r0, r5, #0x2\n\ - add r0, r0, r5\n\ - lsl r0, r0, #0x3\n\ - ldr r2, ._136 @ gTasks\n\ - add r4, r0, r2\n\ - mov r1, #0x0\n\ - ldsh r0, [r4, r1]\n\ - cmp r0, #0\n\ - beq ._133 @cond_branch\n\ - cmp r0, #0x1\n\ - beq ._134 @cond_branch\n\ - b ._141\n\ -._137:\n\ - .align 2, 0\n\ -._136:\n\ - .word gTasks+0x8\n\ -._133:\n\ - ldr r0, ._139 @ Task_ResetRtc_0\n\ - mov r1, #0x50\n\ - bl CreateTask\n\ - lsl r0, r0, #0x18\n\ - lsr r0, r0, #0x18\n\ - strh r0, [r4, #0x2]\n\ - ldrh r0, [r4]\n\ - add r0, r0, #0x1\n\ - strh r0, [r4]\n\ - b ._141\n\ -._140:\n\ - .align 2, 0\n\ -._139:\n\ - .word Task_ResetRtc_0+1\n\ -._134:\n\ - sub r2, r2, #0x8\n\ - mov r0, #0x2\n\ - ldsh r1, [r4, r0]\n\ - lsl r0, r1, #0x2\n\ - add r0, r0, r1\n\ - lsl r0, r0, #0x3\n\ - add r2, r0, r2\n\ - mov r1, #0x8\n\ - ldsh r0, [r2, r1]\n\ - cmp r0, #0\n\ - beq ._141 @cond_branch\n\ - mov r1, #0xa\n\ - ldsh r0, [r2, r1]\n\ - cmp r0, #0x1\n\ - bne ._142 @cond_branch\n\ - ldr r3, ._143 @ gLocalTime\n\ - mov r1, #0x0\n\ - ldsh r0, [r3, r1]\n\ - mov r1, #0x2\n\ - ldsb r1, [r3, r1]\n\ - mov r2, #0x3\n\ - ldsb r2, [r3, r2]\n\ - ldrb r3, [r3, #0x4]\n\ - lsl r3, r3, #0x18\n\ - asr r3, r3, #0x18\n\ - bl RtcCalcLocalTimeOffset\n\ -._142:\n\ - ldrb r0, [r4, #0x2]\n\ - bl DestroyTask\n\ - bl Menu_EraseScreen\n\ - bl ScriptContext2_Disable\n\ - add r0, r5, #0\n\ - bl DestroyTask\n\ -._141:\n\ - pop {r4, r5}\n\ - pop {r0}\n\ - bx r0\n\ -._144:\n\ - .align 2, 0\n\ -._143:\n\ - .word gLocalTime"); -} +void debug_sub_806F908(u8 taskId) +{ + s16 *data = gTasks[taskId].data; -__attribute__((naked)) -void debug_sub_806F99C() -{ - asm("\ - push {lr}\n\ - bl RtcCalcLocalTime\n\ - ldr r0, ._145 @ debug_sub_806F908\n\ - mov r1, #0x50\n\ - bl CreateTask\n\ - bl ScriptContext2_Enable\n\ - pop {r0}\n\ - bx r0\n\ -._146:\n\ - .align 2, 0\n\ -._145:\n\ - .word debug_sub_806F908+1"); + 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; + } } -__attribute__((naked)) -void debug_sub_806F9B8() -{ - asm("\ - push {lr}\n\ - ldr r2, ._147 @ gLocalTime\n\ - ldr r0, ._147 + 4 @ gSaveBlock2\n\ - add r0, r0, #0xa0\n\ - ldr r1, [r0, #0x4]\n\ - ldr r0, [r0]\n\ - str r0, [r2]\n\ - str r1, [r2, #0x4]\n\ - ldr r0, ._147 + 8 @ debug_sub_806F908\n\ - mov r1, #0x50\n\ - bl CreateTask\n\ - bl ScriptContext2_Enable\n\ - pop {r0}\n\ - bx r0\n\ -._148:\n\ - .align 2, 0\n\ -._147:\n\ - .word gLocalTime\n\ - .word gSaveBlock2\n\ - .word debug_sub_806F908+1"); +void debug_sub_806F99C(void) +{ + RtcCalcLocalTime(); + CreateTask(debug_sub_806F908, 80); + ScriptContext2_Enable(); } -__attribute__((naked)) -void debug_sub_806F9E4() -{ - asm("\ - push {r4, r5, r6, r7, lr}\n\ - mov r7, sl\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5, r6, r7}\n\ - lsl r0, r0, #0x18\n\ - lsr r7, r0, #0x18\n\ - lsl r0, r7, #0x2\n\ - add r0, r0, r7\n\ - lsl r0, r0, #0x3\n\ - ldr r1, ._153 @ gTasks\n\ - add r5, r0, r1\n\ - ldr r6, ._153 + 4 @ gStringVar4\n\ - mov r1, #0x0\n\ - ldsh r0, [r5, r1]\n\ - cmp r0, #0x1\n\ - beq ._149 @cond_branch\n\ - cmp r0, #0x1\n\ - bgt ._150 @cond_branch\n\ - cmp r0, #0\n\ - beq ._151 @cond_branch\n\ - b ._165\n\ -._154:\n\ - .align 2, 0\n\ -._153:\n\ - .word gTasks+0x8\n\ - .word gStringVar4\n\ -._150:\n\ - cmp r0, #0x2\n\ - beq ._155 @cond_branch\n\ - b ._165\n\ -._149:\n\ - mov r0, #0x0\n\ - mov r1, #0x9\n\ - mov r2, #0x1d\n\ - mov r3, #0x13\n\ - bl Menu_DrawStdWindowFrame\n\ - add r4, r6, #0\n\ - add r4, r4, #0x50\n\ - bl RtcGetErrorStatus\n\ - add r1, r0, #0\n\ - lsl r1, r1, #0x10\n\ - lsr r1, r1, #0x10\n\ - add r0, r4, #0\n\ - mov r2, #0x2\n\ - mov r3, #0x4\n\ - bl ConvertIntToHexStringN\n\ - add r0, r4, #0\n\ - mov r1, #0x2\n\ - mov r2, #0xa\n\ - bl Menu_PrintText\n\ - ldr r0, ._158 @ gUnknown_Debug_0839AE94\n\ - mov r1, #0xc\n\ - mov r2, #0xc\n\ - bl Menu_PrintText\n\ - ldr r0, ._158 + 4 @ gUnknown_Debug_0839AE99\n\ - mov r1, #0x14\n\ - mov r2, #0xc\n\ - bl Menu_PrintText\n\ - ldr r0, ._158 + 8 @ gUnknown_Debug_0839AEA7\n\ - mov r1, #0x1\n\ - mov r2, #0xe\n\ - bl Menu_PrintText\n\ - ldr r0, ._158 + 12 @ gUnknown_Debug_0839AE9D\n\ - mov r1, #0x1\n\ - mov r2, #0x10\n\ - bl Menu_PrintText\n\ -._151:\n\ - ldrh r0, [r5]\n\ - add r0, r0, #0x1\n\ - strh r0, [r5]\n\ - b ._165\n\ -._159:\n\ - .align 2, 0\n\ -._158:\n\ - .word gUnknown_Debug_0839AE94\n\ - .word gUnknown_Debug_0839AE99\n\ - .word gUnknown_Debug_0839AEA7\n\ - .word gUnknown_Debug_0839AE9D\n\ -._155:\n\ - bl RtcCalcLocalTime\n\ - add r0, r6, #0\n\ - bl FormatHexRtcTime\n\ - mov r2, #0x14\n\ - add r2, r2, r6\n\ - mov r9, r2\n\ - mov r0, r9\n\ - bl debug_sub_8009894\n\ - mov r0, #0x28\n\ - add r0, r0, r6\n\ - mov sl, r0\n\ - ldr r4, ._163 @ gLocalTime\n\ - mov r1, #0x2\n\ - ldsb r1, [r4, r1]\n\ - mov r2, #0x3\n\ - ldsb r2, [r4, r2]\n\ - mov r3, #0x4\n\ - ldsb r3, [r4, r3]\n\ - bl FormatDecimalTime\n\ - mov r1, #0x3c\n\ - add r1, r1, r6\n\ - mov r8, r1\n\ - mov r2, #0x0\n\ - ldsh r1, [r4, r2]\n\ - mov r0, r8\n\ - mov r2, #0x1\n\ - mov r3, #0x4\n\ - bl ConvertIntToDecimalStringN\n\ - ldr r0, ._163 + 4 @ gSaveBlock2\n\ - ldrb r0, [r0, #0x12]\n\ - cmp r0, #0\n\ - bne ._160 @cond_branch\n\ - add r0, r6, #0\n\ - mov r1, #0x14\n\ - mov r2, #0xe\n\ - bl Menu_PrintText\n\ - mov r0, r9\n\ - mov r1, #0xc\n\ - mov r2, #0xe\n\ - bl Menu_PrintText\n\ - mov r0, sl\n\ - mov r1, #0x14\n\ - mov r2, #0x10\n\ - bl Menu_PrintText\n\ - mov r0, r8\n\ - mov r1, #0xc\n\ - mov r2, #0x10\n\ - bl Menu_PrintText\n\ -._160:\n\ - ldrh r1, [r5, #0x2]\n\ - mov r2, #0x2\n\ - ldsh r0, [r5, r2]\n\ - cmp r0, #0x13\n\ - ble ._161 @cond_branch\n\ - add r0, r1, #1\n\ - strh r0, [r5, #0x2]\n\ - b ._165\n\ -._164:\n\ - .align 2, 0\n\ -._163:\n\ - .word gLocalTime\n\ - .word gSaveBlock2\n\ -._161:\n\ - ldr r0, ._166 @ gMain\n\ - ldrh r1, [r0, #0x2e]\n\ - mov r0, #0x1\n\ - and r0, r0, r1\n\ - cmp r0, #0\n\ - beq ._165 @cond_branch\n\ - bl Menu_EraseScreen\n\ - add r0, r7, #0\n\ - bl DestroyTask\n\ - bl ScriptContext2_Disable\n\ -._165:\n\ - pop {r3, r4, r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov sl, r5\n\ - pop {r4, r5, r6, r7}\n\ - pop {r0}\n\ - bx r0\n\ -._167:\n\ - .align 2, 0\n\ -._166:\n\ - .word gMain"); +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 |