This is a deviation from the reference time zone implementation. The
actual code will set a pointer to the time zone name here, but for us we
have a limited number of characters to work with, and the name of the
time zone here could be larger than 8 characters.
We can make the assumption that time zone names greater than five
characters in length include a comma that denotes more data. Nintendo
just truncates that data for the name, so we can do the same.
time_zone_manager: Check for length of array
Just to be double sure that we never break past the array length,
directly compare against it.
Reference implementation does not compare the booleans as we had them.
Use the correct ones as in the reference.
Also adds an assert. I have been made aware of a crash here and am
not able to reproduce currently.
Previously, we were mixing the raw CPU frequency and CNTFRQ.
The raw CPU frequency (1020 MHz) should've never been used as CNTPCT (whose frequency is CNTFRQ) is the only counter available.
Adds the basic time zone data for the system archive.
time_zone_binary: Implement full system archive
time_zone_binary: Remove unneeded template
tz_binary: Make GenerateFiles static
This causes the emulated system's universal time to be on the user's clock, and the user time to
be off if they set a time zone.
time_manager: Remove GetExternalRtcTime
Uses C++20 tzdb to determine the system timezone. The switch uses the
597 posix time zones, so this needs tests if the system time zone isn't
posix-compliant.