diff --git a/osu.Game/Beatmaps/Beatmap.cs b/osu.Game/Beatmaps/Beatmap.cs index d0ce290bad..af55caf3b7 100644 --- a/osu.Game/Beatmaps/Beatmap.cs +++ b/osu.Game/Beatmaps/Beatmap.cs @@ -39,6 +39,7 @@ namespace osu.Game.Beatmaps ControlPoint timingPoint = null; foreach (var controlPoint in ControlPoints) + { if (controlPoint.Time <= time) { if (controlPoint.TimingChange) @@ -48,7 +49,17 @@ namespace osu.Game.Beatmaps } else overridePoint = controlPoint; } - else break; + // Some beatmaps have the first timingPoint (accidentally) start after the first HitObject(s). + // This branch makes it so that the first ControlPoint that makes a timing change is used as the timingPoint for the HitObject(s). + else if (timingPoint == null && controlPoint.TimingChange) + { + timingPoint = controlPoint; + } + else + { + break; + } + } return timingPoint; }