Skip to content

Turbo fix#4743

Open
SuuperW wants to merge 2 commits into
masterfrom
turbo_fix
Open

Turbo fix#4743
SuuperW wants to merge 2 commits into
masterfrom
turbo_fix

Conversation

@SuuperW
Copy link
Copy Markdown
Contributor

@SuuperW SuuperW commented May 20, 2026

I decided to go with the option of turning TAStudio's _seekingTo into a property backed by MainForm.PauseOnFrame. I avoided the issue of using MainForm's end-of-seek logic by having it update tools at the end of a turbo seek, in the normal place (which happens before end-of-seek logic) instead of in the end-of-seek logic. Cancelling a seek by setting PauseOnFrame to null no longer updates tools, because (a) this isn't needed anymore when a seek ends; and (b) that logic was unable to have the core render a frame, so it only did part of what needs to happen when a seek is cancelled.

In order to properly cancel a turbo seek, we need to emulate one more frame. So TAStudio's StopSeeking has additional logic for that now.

Clicking the icon at the bottom of the main form to "stop seeking" does not actually set PauseOnFrame, it just pauses. So issues still exist there. I decided against fixing that because it's a separate issue and isn't trivial to fix. (setting PauseOnFrame there would break the pause at end of movie feature for regular movies)

Pausing during a turbo seek will not result in rendering or tools updating. This maybe should be changed, but that also is a separate issue.

Check if completed:

SuuperW added 2 commits May 20, 2026 01:50
We don't need to update tools in the `PauseOnFrame` setter, we can do that in the normal flow. And that logic wasn't able to handler rendering anyway so it was only doing part of what needs to happen.
@SuuperW SuuperW mentioned this pull request May 20, 2026
2 tasks
{
// Turbo seek does various things, including telling the core to skip rendering most frames.
// Thus, we need the seek to end naturally.
SeekingTo = Emulator.Frame + 1;
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I understand the intention behind this but it doesn't seem to really work when the emulator is paused. Canceling a seek will just look like it didn't work because the seek will only be finished on the next frame. And emulating a frame in response to a cancel seek request doesn't seem right either. It's probably easier to just not do this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants