diff options
| author | Anghelo Carvajal <angheloalf95@gmail.com> | 2023-10-22 02:52:40 -0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-10-22 16:52:40 +1100 |
| commit | ec86f10b0f933fd848036e149d1ef34f28571c37 (patch) | |
| tree | de4bcf58005c8f0d349de61c403e97d5aeaa72f6 /src/code | |
| parent | 425238fd5d0d6962e2c1c334c28a944593e91511 (diff) | |
`SCHEDULE_TIME` (#1438)
* SCHEDULE_CALC_TIME_ALT
* add s32 cast to avoid f32 -> u16 direct cast
* SCHEDULE_TIME
* remove the alts
* Update explanation about the script
Diffstat (limited to 'src/code')
| -rw-r--r-- | src/code/z_kankyo.c | 28 | ||||
| -rw-r--r-- | src/code/z_schedule.c | 70 |
2 files changed, 70 insertions, 28 deletions
diff --git a/src/code/z_kankyo.c b/src/code/z_kankyo.c index 30ea04e16..6dda9090d 100644 --- a/src/code/z_kankyo.c +++ b/src/code/z_kankyo.c @@ -702,9 +702,35 @@ s32 Environment_IsSceneUpsideDown(PlayState* play) { #pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/Environment_UpdateSun.s") +void func_800F88C4(u16 weekEventFlag); #pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800F88C4.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800F8970.s") +void func_800F8970(void) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_27_40) && (SCHEDULE_TIME_NOW >= SCHEDULE_TIME(9, 31))) { + SET_WEEKEVENTREG(WEEKEVENTREG_27_40); + func_800F88C4(WEEKEVENTREG_DEPOSITED_LETTER_TO_KAFEI_SOUTH_UPPER_CLOCKTOWN); + } + + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_27_80) && (SCHEDULE_TIME_NOW >= SCHEDULE_TIME(10, 3))) { + SET_WEEKEVENTREG(WEEKEVENTREG_27_80); + func_800F88C4(WEEKEVENTREG_DEPOSITED_LETTER_TO_KAFEI_NORTH_CLOCKTOWN); + } + + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_28_01) && (SCHEDULE_TIME_NOW >= SCHEDULE_TIME(10, 35))) { + SET_WEEKEVENTREG(WEEKEVENTREG_28_01); + func_800F88C4(WEEKEVENTREG_DEPOSITED_LETTER_TO_KAFEI_EAST_UPPER_CLOCKTOWN); + } + + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_28_02) && (SCHEDULE_TIME_NOW >= SCHEDULE_TIME(10, 53))) { + SET_WEEKEVENTREG(WEEKEVENTREG_28_02); + func_800F88C4(WEEKEVENTREG_DEPOSITED_LETTER_TO_KAFEI_EAST_LOWER_CLOCKTOWN); + } + + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_28_04) && (SCHEDULE_TIME_NOW >= SCHEDULE_TIME(11, 25))) { + SET_WEEKEVENTREG(WEEKEVENTREG_28_04); + func_800F88C4(WEEKEVENTREG_DEPOSITED_LETTER_TO_KAFEI_SOUTH_LOWER_CLOCKTOWN); + } +} #pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/Environment_UpdatePostmanEvents.s") diff --git a/src/code/z_schedule.c b/src/code/z_schedule.c index fdefb0f42..38bcb58c3 100644 --- a/src/code/z_schedule.c +++ b/src/code/z_schedule.c @@ -4,7 +4,7 @@ (temp) = (hour)*60.0f; \ (temp) += (minute); \ (dest) = (temp) * (0x10000 / 60 / 24.0f); \ - (dest) = SCHEDULE_CONVERT_TIME(dest); + (dest) = SCHEDULE_CONVERT_TIME(dest) s32 Schedule_CheckFlagS(PlayState* play, u8** script, ScheduleOutput* output) { ScheduleCmdCheckFlagS* cmd = (ScheduleCmdCheckFlagS*)*script; @@ -239,34 +239,50 @@ s32 Schedule_BranchL(PlayState* play, u8** script, ScheduleOutput* output) { return false; } -static s32 (*sScheduleCmdFuncs[])(PlayState*, u8**, ScheduleOutput*) = { - Schedule_CheckFlagS, Schedule_CheckFlagL, Schedule_CheckTimeRangeS, Schedule_CheckTimeRangeL, - Schedule_ReturnValueL, Schedule_ReturnNone, Schedule_ReturnEmpty, Schedule_Nop, - Schedule_CheckMiscS, Schedule_ReturnValueS, Schedule_CheckNotInSceneS, Schedule_CheckNotInSceneL, - Schedule_CheckNotInDayS, Schedule_CheckNotInDayL, Schedule_ReturnTime, Schedule_CheckBeforeTimeS, - Schedule_CheckBeforeTimeL, Schedule_BranchS, Schedule_BranchL, +typedef s32 (*ScheduleCmdFunc)(PlayState*, u8**, ScheduleOutput*); + +static ScheduleCmdFunc sScheduleCmdFuncs[] = { + Schedule_CheckFlagS, // SCHEDULE_CMD_ID_CHECK_FLAG_S + Schedule_CheckFlagL, // SCHEDULE_CMD_ID_CHECK_FLAG_L + Schedule_CheckTimeRangeS, // SCHEDULE_CMD_ID_CHECK_TIME_RANGE_S + Schedule_CheckTimeRangeL, // SCHEDULE_CMD_ID_CHECK_TIME_RANGE_L + Schedule_ReturnValueL, // SCHEDULE_CMD_ID_RET_VAL_L + Schedule_ReturnNone, // SCHEDULE_CMD_ID_RET_NONE + Schedule_ReturnEmpty, // SCHEDULE_CMD_ID_RET_EMPTY + Schedule_Nop, // SCHEDULE_CMD_ID_NOP + Schedule_CheckMiscS, // SCHEDULE_CMD_ID_CHECK_MISC_S + Schedule_ReturnValueS, // SCHEDULE_CMD_ID_RET_VAL_S + Schedule_CheckNotInSceneS, // SCHEDULE_CMD_ID_CHECK_NOT_IN_SCENE_S + Schedule_CheckNotInSceneL, // SCHEDULE_CMD_ID_CHECK_NOT_IN_SCENE_L + Schedule_CheckNotInDayS, // SCHEDULE_CMD_ID_CHECK_NOT_IN_DAY_S + Schedule_CheckNotInDayL, // SCHEDULE_CMD_ID_CHECK_NOT_IN_DAY_L + Schedule_ReturnTime, // SCHEDULE_CMD_ID_RET_TIME + Schedule_CheckBeforeTimeS, // SCHEDULE_CMD_ID_CHECK_BEFORE_TIME_S + Schedule_CheckBeforeTimeL, // SCHEDULE_CMD_ID_CHECK_BEFORE_TIME_L + Schedule_BranchS, // SCHEDULE_CMD_ID_BRANCH_S + Schedule_BranchL, // SCHEDULE_CMD_ID_BRANCH_L }; static u8 sScheduleCmdSizes[] = { - sizeof(ScheduleCmdCheckFlagS), - sizeof(ScheduleCmdCheckFlagL), - sizeof(ScheduleCmdCheckTimeRangeS), - sizeof(ScheduleCmdCheckTimeRangeL), - sizeof(ScheduleCmdReturnValueL), - sizeof(ScheduleCmdBase), - sizeof(ScheduleCmdBase), - sizeof(ScheduleCmdNop), - sizeof(ScheduleCmdCheckMiscS), - sizeof(ScheduleCmdReturnValueS), - sizeof(ScheduleCmdCheckNotInSceneS), - sizeof(ScheduleCmdCheckNotInSceneL), - sizeof(ScheduleCmdCheckNotInDayS), - sizeof(ScheduleCmdCheckNotInDayL), - sizeof(ScheduleCmdReturnTime), - sizeof(ScheduleCmdCheckBeforeTimeS), - sizeof(ScheduleCmdCheckBeforeTimeL), - sizeof(ScheduleCmdBranchS), - sizeof(ScheduleCmdBranchL), + sizeof(ScheduleCmdCheckFlagS), // SCHEDULE_CMD_ID_CHECK_FLAG_S + sizeof(ScheduleCmdCheckFlagL), // SCHEDULE_CMD_ID_CHECK_FLAG_L + sizeof(ScheduleCmdCheckTimeRangeS), // SCHEDULE_CMD_ID_CHECK_TIME_RANGE_S + sizeof(ScheduleCmdCheckTimeRangeL), // SCHEDULE_CMD_ID_CHECK_TIME_RANGE_L + sizeof(ScheduleCmdReturnValueL), // SCHEDULE_CMD_ID_RET_VAL_L + sizeof(ScheduleCmdBase), // SCHEDULE_CMD_ID_RET_NONE + sizeof(ScheduleCmdBase), // SCHEDULE_CMD_ID_RET_EMPTY + sizeof(ScheduleCmdNop), // SCHEDULE_CMD_ID_NOP + sizeof(ScheduleCmdCheckMiscS), // SCHEDULE_CMD_ID_CHECK_MISC_S + sizeof(ScheduleCmdReturnValueS), // SCHEDULE_CMD_ID_RET_VAL_S + sizeof(ScheduleCmdCheckNotInSceneS), // SCHEDULE_CMD_ID_CHECK_NOT_IN_SCENE_S + sizeof(ScheduleCmdCheckNotInSceneL), // SCHEDULE_CMD_ID_CHECK_NOT_IN_SCENE_L + sizeof(ScheduleCmdCheckNotInDayS), // SCHEDULE_CMD_ID_CHECK_NOT_IN_DAY_S + sizeof(ScheduleCmdCheckNotInDayL), // SCHEDULE_CMD_ID_CHECK_NOT_IN_DAY_L + sizeof(ScheduleCmdReturnTime), // SCHEDULE_CMD_ID_RET_TIME + sizeof(ScheduleCmdCheckBeforeTimeS), // SCHEDULE_CMD_ID_CHECK_BEFORE_TIME_S + sizeof(ScheduleCmdCheckBeforeTimeL), // SCHEDULE_CMD_ID_CHECK_BEFORE_TIME_L + sizeof(ScheduleCmdBranchS), // SCHEDULE_CMD_ID_BRANCH_S + sizeof(ScheduleCmdBranchL), // SCHEDULE_CMD_ID_BRANCH_L }; s32 Schedule_RunScript(PlayState* play, u8* script, ScheduleOutput* output) { @@ -275,7 +291,7 @@ s32 Schedule_RunScript(PlayState* play, u8* script, ScheduleOutput* output) { do { size = sScheduleCmdSizes[*script]; - stop = (*sScheduleCmdFuncs[*script])(play, &script, output); + stop = sScheduleCmdFuncs[*script](play, &script, output); script += size; } while (!stop); |
