Anti Time-Travel

From 3dbrew
Revision as of 22:21, 18 April 2016 by Ryccardo (talk | contribs) (Clock software stack documentation)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Many commercial games, such as Tomodachi Life, all Pokèmon games, etc are capable of telling whether the clock was adjusted while they weren't running, even for realistic progress of time (new setting in the future from last save).

This is achieved through a peculiarity in the implementation of the real time clock.

The hardware RTC can count between (at least) 2001-1-1 and 2050-12-31.

When the time is normally set, the date in the RTC is set to the start of 2001 (and so is the time?), and the console saves to NAND (where?) the time and date difference between the programmed time and the hardware one.

This also explains the apparently random setting of the date after removing the battery, and why adjusting the clock in multiboot scenarios often results in incorrect values in other OS instances.

Most likely, software disturbed by clock adjustments saves the raw RTC value and, on load, checks whether it has advanced. CONFIG can directly adjust the ahrdware clock, thus avoiding associated problems.