forked from Mirror/Ryujinx
[HLE/Service] Fix ToCalendarTimeWithMyRule
This commit is contained in:
parent
cb29b4303c
commit
29a4fb6a57
2 changed files with 11 additions and 18 deletions
|
@ -10,7 +10,7 @@ namespace Ryujinx.Core.OsHle.Services.Time
|
||||||
|
|
||||||
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => m_Commands;
|
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => m_Commands;
|
||||||
|
|
||||||
private static DateTime Epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
|
private static readonly DateTime Epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
|
||||||
|
|
||||||
private SystemClockType ClockType;
|
private SystemClockType ClockType;
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ namespace Ryujinx.Core.OsHle.Services.Time
|
||||||
|
|
||||||
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => m_Commands;
|
public override IReadOnlyDictionary<int, ServiceProcessRequest> Commands => m_Commands;
|
||||||
|
|
||||||
private static DateTime Epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Local);
|
private static readonly DateTime Epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
|
||||||
|
|
||||||
public ITimeZoneService()
|
public ITimeZoneService()
|
||||||
{
|
{
|
||||||
|
@ -20,25 +20,13 @@ namespace Ryujinx.Core.OsHle.Services.Time
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
//(nn::time::PosixTime)-> (nn::time::CalendarTime, nn::time::sf::CalendarAdditionalInfo)
|
|
||||||
public long ToCalendarTimeWithMyRule(ServiceCtx Context)
|
public long ToCalendarTimeWithMyRule(ServiceCtx Context)
|
||||||
{
|
{
|
||||||
long PosixTime = Context.RequestData.ReadInt64();
|
long PosixTime = Context.RequestData.ReadInt64();
|
||||||
|
|
||||||
Epoch = Epoch.AddSeconds(PosixTime).ToLocalTime();
|
DateTime CurrentTime = Epoch.AddSeconds(PosixTime).ToLocalTime();
|
||||||
|
|
||||||
/*
|
Context.ResponseData.Write((ushort)Epoch.Year);
|
||||||
struct CalendarTime {
|
|
||||||
u16_le year;
|
|
||||||
u8 month; // Starts at 1
|
|
||||||
u8 day; // Starts at 1
|
|
||||||
u8 hour;
|
|
||||||
u8 minute;
|
|
||||||
u8 second;
|
|
||||||
INSERT_PADDING_BYTES(1);
|
|
||||||
};
|
|
||||||
*/
|
|
||||||
Context.ResponseData.Write((short)Epoch.Year);
|
|
||||||
Context.ResponseData.Write((byte)Epoch.Month);
|
Context.ResponseData.Write((byte)Epoch.Month);
|
||||||
Context.ResponseData.Write((byte)Epoch.Day);
|
Context.ResponseData.Write((byte)Epoch.Day);
|
||||||
Context.ResponseData.Write((byte)Epoch.Hour);
|
Context.ResponseData.Write((byte)Epoch.Hour);
|
||||||
|
@ -58,10 +46,15 @@ namespace Ryujinx.Core.OsHle.Services.Time
|
||||||
};
|
};
|
||||||
*/
|
*/
|
||||||
Context.ResponseData.Write((int)Epoch.DayOfWeek);
|
Context.ResponseData.Write((int)Epoch.DayOfWeek);
|
||||||
|
|
||||||
Context.ResponseData.Write(Epoch.DayOfYear);
|
Context.ResponseData.Write(Epoch.DayOfYear);
|
||||||
|
|
||||||
|
//TODO: Find out the names used.
|
||||||
Context.ResponseData.Write(new byte[8]);
|
Context.ResponseData.Write(new byte[8]);
|
||||||
Context.ResponseData.Write(Convert.ToByte(Epoch.IsDaylightSavingTime()));
|
|
||||||
Context.ResponseData.Write(0);
|
Context.ResponseData.Write((byte)(Epoch.IsDaylightSavingTime() ? 1 : 0));
|
||||||
|
|
||||||
|
Context.ResponseData.Write((int)TimeZoneInfo.Local.GetUtcOffset(Epoch).TotalSeconds);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue