Example #1
0
 /// <summary>
 /// Latch input from the input log, if available
 /// </summary>
 public void LatchInputFromLog()
 {
     if (Global.Emulator.Frame < Movie.InputLogLength - (Global.Config.MovieEndAction == MovieEndAction.Pause ? 1 : 0))             // Pause logic is a hack for now
     {
         var input = Movie.GetInputState(Global.Emulator.Frame);
         MovieControllerAdapter.LatchFromSource(input);
     }
     else
     {
         HandlePlaybackEnd();
     }
 }
Example #2
0
        /// <summary>
        /// Latch input from the input log, if available
        /// </summary>
        public void LatchInputFromLog()
        {
            var input = Movie.GetInputState(Global.Emulator.Frame);

            if (Global.Emulator.Frame == 0)             // Hacky
            {
                HandleMovieAfterFrameLoop();            // Frame 0 needs to be handled.
            }
            MovieControllerAdapter.LatchFromSource(input);
            if (MultiTrack.IsActive)
            {
                Global.MultitrackRewiringAdapter.Source = MovieControllerAdapter;
            }
        }
Example #3
0
        public void LatchMultitrackPlayerInput(IController playerSource, MultitrackRewiringControllerAdapter rewiredSource)
        {
            if (_multiTrack.IsActive)
            {
                rewiredSource.PlayerSource     = 1;
                rewiredSource.PlayerTargetMask = 1 << _multiTrack.CurrentPlayer;
                if (_multiTrack.RecordAll)
                {
                    rewiredSource.PlayerTargetMask = unchecked ((int)0xFFFFFFFF);
                }
            }
            else
            {
                rewiredSource.PlayerSource = -1;
            }

            MovieControllerAdapter.LatchPlayerFromSource(rewiredSource, _multiTrack.CurrentPlayer);
        }
Example #4
0
        private void LatchMultitrackPlayerInput(MultitrackRewiringControllerAdapter rewiredSource)
        {
            if (MultiTrack.IsActive)
            {
                rewiredSource.PlayerSource     = 1;
                rewiredSource.PlayerTargetMask = 1 << MultiTrack.CurrentPlayer;
                if (MultiTrack.RecordAll)
                {
                    rewiredSource.PlayerTargetMask = unchecked ((int)0xFFFFFFFF);
                }

                if (Movie.InputLogLength > Global.Emulator.Frame)
                {
                    var input = Movie.GetInputState(Global.Emulator.Frame);
                    MovieControllerAdapter.LatchFromSource(input);
                }

                MovieControllerAdapter.LatchPlayerFromSource(rewiredSource, MultiTrack.CurrentPlayer);
            }
        }
Example #5
0
        /// <summary>
        /// Latch input from the input log, if available
        /// </summary>
        public void LatchInputFromLog()
        {
            var input = Movie.GetInputState(Global.Emulator.Frame);

            // adelikat: TODO: this is likely the source of frame 0 TAStudio bugs, I think the intent is to check if the movie is 0 length?
            if (Global.Emulator.Frame == 0)             // Hacky
            {
                HandleMovieAfterFrameLoop();            // Frame 0 needs to be handled.
            }
            if (input == null)
            {
                HandleMovieAfterFrameLoop();
                return;
            }

            MovieControllerAdapter.LatchFromSource(input);
            if (MultiTrack.IsActive)
            {
                Global.MultitrackRewiringAdapter.Source = MovieControllerAdapter;
            }
        }
Example #6
0
        private void HandleFrameLoopForRecordMode()
        {
            // we don't want tasmovie to latch user input outside its internal recording mode, so limit it to autohold
            if (Movie is TasMovie && Movie.IsPlaying)
            {
                MovieControllerAdapter.LatchSticky();
            }
            else
            {
                if (MultiTrack.IsActive)
                {
                    LatchMultitrackPlayerInput(Global.MultitrackRewiringAdapter);
                }
                else
                {
                    LatchInputFromPlayer(Global.MovieInputSourceAdapter);
                }
            }

            // the movie session makes sure that the correct input has been read and merged to its MovieControllerAdapter;
            // this has been wired to Global.MovieOutputHardpoint in RewireInputChain
            Movie.RecordFrame(Global.Emulator.Frame, Global.MovieOutputHardpoint);
        }
Example #7
0
 public void LatchInputFromPlayer(IController source)
 {
     MovieControllerAdapter.LatchFromSource(source);
 }