/// <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(); } }
/// <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; } }
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); }
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); } }
/// <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; } }
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); }
public void LatchInputFromPlayer(IController source) { MovieControllerAdapter.LatchFromSource(source); }