Skip to content

DIRECTOR: Fixes for transitions and sprite updates #6648

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 14 commits into from
Jun 3, 2025

Conversation

moralrecordings
Copy link
Contributor

No description provided.

Transitions can run over almost any time frame. This creates an issue
when xStepSize and yStepSize are used as increments; they are ints which
strip out fractions of a pixel, and the error will be compounded by the
number of steps. This is visible as e.g. sweep transitions stopping at the
3/4 mark.

An option would be to change xStepSize and yStepSize into floats,
but instead we do the cheaper calculation of premultiplying
xStepSize and yStepSize by TSTEP_FRAC to give 10 bits of precision.
It's possible for a developer to make an exitFrame handler that checks
for a condition (e.g. rollOver), then changes a sprite member without
setting the puppet flag, then calls updateStage().

The result is the new graphic shows up while the condition is true, then
reverts back to whatever was in the frame when the condition goes false.

Fixes the cooked main menu screen in kidsbiblepaul.
Fixes the menu system in kyoto.
Needed for 77365ba to work properly.

Fixes palette regressions in The Seven Colors.
Fixes wrongly-repeating animations in tkkg1.
Real Director doesn't seem to care about surrounding
whitespace characters.

Fixes savegame parsing in Cracking the Conspiracy.
The original XObj version of FileIO will dispose of the object if
m_delete is called. The Xtra version does not.

Fixes savegame handler in Cracking the Conspiracy.
Window::loadNextMovie will get called if you create a new Window with
Lingo and then set it to visible. In this case, you don't want to call
setCurrentWindow; if you do, the current script will keep running but
in the context of the new Window, which collapses pretty quickly.

The main loop will call DirectorEngine::setCurrentWindow when
appropriate, so it's unlikely we need this.

Fixes opening the PDA in Cracking the Conspiracy.
@sev-
Copy link
Member

sev- commented Jun 3, 2025

Thank you!

@sev- sev- merged commit b560e61 into scummvm:master Jun 3, 2025
7 of 8 checks passed
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