private void UpdateTimeDisplay() { if (!InteropEmu.IsNsf()) { return; } UInt32 elapsedFrames = InteropEmu.NsfGetFrameCount(); NsfHeader header = InteropEmu.NsfGetHeader(); int currentTrack = InteropEmu.NsfGetCurrentTrack(); if (currentTrack != cboTrack.SelectedIndex) { cboTrack.SelectedIndexChanged -= cboTrack_SelectedIndexChanged; cboTrack.SelectedIndex = currentTrack; cboTrack.SelectedIndexChanged += cboTrack_SelectedIndexChanged; } TimeSpan time = TimeSpan.FromSeconds((double)elapsedFrames / ((header.Flags & 0x01) == 0x01 ? 50.006978 : 60.098812)); string label = time.ToString(time.TotalHours < 1 ? @"mm\:ss" : @"hh\:mm\:ss"); TimeSpan trackTime = GetTrackLength(header, currentTrack); if (trackTime.Ticks > 0) { label += " / " + trackTime.ToString(trackTime.TotalHours < 1 ? @"mm\:ss" : @"hh\:mm\:ss"); } string[] trackNames = header.GetTrackNames(); if (trackNames.Length > 1 && trackNames.Length > currentTrack) { label += Environment.NewLine + (string.IsNullOrWhiteSpace(trackNames[currentTrack]) ? ResourceHelper.GetMessage("NsfUnnamedTrack") : trackNames[currentTrack]); } bool rewinding = InteropEmu.IsRewinding(); lblRecording.Visible = lblRecordingDot.Visible = InteropEmu.WaveIsRecording(); lblRewinding.Visible = lblRewindIcon.Visible = rewinding; lblFastForward.Visible = lblFastForwardIcon.Visible = (InteropEmu.GetEmulationSpeed() > 100 || InteropEmu.GetEmulationSpeed() == 0 || InteropEmu.CheckFlag(EmulationFlags.Turbo)) && !rewinding; lblSlowMotion.Visible = lblSlowMotionIcon.Visible = InteropEmu.GetEmulationSpeed() < 100 && InteropEmu.GetEmulationSpeed() > 0 && !InteropEmu.CheckFlag(EmulationFlags.Turbo) && !rewinding; lblTime.Text = label; }
private void UpdateTimeDisplay(int frameCount) { if (!InteropEmu.IsNsf()) { _frameCount = 0; return; } NsfHeader header = InteropEmu.NsfGetHeader(); int currentTrack = InteropEmu.NsfGetCurrentTrack(); TimeSpan time = TimeSpan.FromSeconds((double)frameCount / ((header.Flags & 0x01) == 0x01 ? 50.006978 : 60.098812)); string label = time.ToString(time.TotalHours < 1 ? @"mm\:ss" : @"hh\:mm\:ss"); TimeSpan trackTime = GetTrackLength(header, currentTrack); if (trackTime.Ticks > 0) { label += " / " + trackTime.ToString(trackTime.TotalHours < 1 ? @"mm\:ss" : @"hh\:mm\:ss"); } string[] trackNames = header.GetTrackNames(); if (trackNames.Length > 1 && trackNames.Length > currentTrack) { label += Environment.NewLine + (string.IsNullOrWhiteSpace(trackNames[currentTrack]) ? ResourceHelper.GetMessage("NsfUnnamedTrack") : trackNames[currentTrack]); } lblRecording.Visible = lblRecordingDot.Visible = InteropEmu.WaveIsRecording(); lblFastForward.Visible = lblFastForwardIcon.Visible = InteropEmu.GetEmulationSpeed() > 100 || InteropEmu.GetEmulationSpeed() == 0 || InteropEmu.CheckFlag(EmulationFlags.Turbo); lblSlowMotion.Visible = lblSlowMotionIcon.Visible = InteropEmu.GetEmulationSpeed() < 100 && InteropEmu.GetEmulationSpeed() > 0 && !InteropEmu.CheckFlag(EmulationFlags.Turbo); lblTime.Text = label; }