mirror of https://github.com/pret/pokeemerald.git
Added info on how to still update daily events even if the battery is dead.
parent
50ce8e8198
commit
8fff4da9ee
|
@ -28,4 +28,51 @@ static void Task_MainMenuCheckBattery(u8 taskId)
|
|||
- }
|
||||
}
|
||||
}
|
||||
```
|
||||
```
|
||||
|
||||
|
||||
## Extra: Update Daily Events and Berries Still Grow When Playing without a RTC
|
||||
**Goal:** Make it so we grow the berries and update daily events by a set amountevery time we load the game if there is an RTC failure.
|
||||
|
||||
In `clock.c` add the folowing function at the bottom.:
|
||||
```diff
|
||||
void FastForwardTime(s16 daysToUpdateDay, s16 hoursToGrowBerries){
|
||||
// Runs the UpdatePerDay function as if daysToUpdateDay days have passed and grows the berries by hoursToGrowBerries
|
||||
s16 daysBerry = hoursToGrowBerries / 24;
|
||||
s8 hoursBerry = hoursToGrowBerries % 24;
|
||||
struct Time localTimeOffset;
|
||||
localTimeOffset.days = *GetVarPointer(VAR_DAYS) + daysToUpdateDay;
|
||||
UpdatePerDay(&localTimeOffset);
|
||||
localTimeOffset = gSaveBlock2Ptr->lastBerryTreeUpdate;
|
||||
localTimeOffset.days += daysBerry;
|
||||
localTimeOffset.hours += hoursBerry;
|
||||
UpdatePerMinute(&localTimeOffset);
|
||||
}
|
||||
```
|
||||
|
||||
In `clock.h`:
|
||||
```diff
|
||||
void DoTimeBasedEvents(void);
|
||||
+void FastForwardTime(s16, s16);
|
||||
```
|
||||
|
||||
Finally, back in `main_menu.c`:
|
||||
```diff
|
||||
static void Task_MainMenuCheckBattery(u8 taskId)
|
||||
{
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
SetGpuReg(REG_OFFSET_WIN0H, 0);
|
||||
SetGpuReg(REG_OFFSET_WIN0V, 0);
|
||||
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG0 | WININ_WIN0_OBJ);
|
||||
SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_DARKEN | BLDCNT_TGT1_BG0);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDY, 7);
|
||||
+ if (RtcGetErrorStatus() & RTC_ERR_FLAG_MASK)
|
||||
+ FastForwardTime(2, 4);
|
||||
gTasks[taskId].func = Task_DisplayMainMenu;
|
||||
}
|
||||
}
|
||||
```
|
||||
In the example above, we'll grow the berries by 4 hours and update daily events as if 2 days have passed every time we load the game.
|
Loading…
Reference in New Issue