Example #1
0
        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;
        }
Example #2
0
        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;
        }