Skip to content

Faster Scene Transitions#2147

Draft
t0mtee wants to merge 10 commits into
TwilitRealm:mainfrom
t0mtee:faster-scene-transitions
Draft

Faster Scene Transitions#2147
t0mtee wants to merge 10 commits into
TwilitRealm:mainfrom
t0mtee:faster-scene-transitions

Conversation

@t0mtee

@t0mtee t0mtee commented Jun 28, 2026

Copy link
Copy Markdown

Adds a gameplay QoL setting to remove the hardcoded 3 second delay during scene transitions.

This hasn't been thoroughly tested - I'm putting it up in case others want to try it out, but for what it's worth I don't see this causing any really bad issues. I aim to use this on my current playthrough (which I'm only about 3 hours through in) so I will update this if I find any issues (or if I don't).

Should this be enabled by default in any presets?

Closes #1199 and #1740.

@MelonSpeedruns MelonSpeedruns left a comment

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.

Looks good to me! Just some stuff needs to be changed or removed!

Also I will discuss with the team and see if we're good with adding it into the "dusk" preset.

Comment thread src/d/d_ovlp_fade3.cpp Outdated
#include "m_Do/m_Do_audio.h"
#include "m_Do/m_Do_graphic.h"

#include "dusk/logging.h"

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.

Remove all logging

Comment thread src/d/d_ovlp_fade3.cpp Outdated

mTimer = 2;
field_0x11f = dComIfGp_getNextStageWipeSpeed();
DuskLog.debug("Wipe speed: {}", field_0x11f);

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.

Remove logging

Comment thread src/d/d_ovlp_fade3.cpp Outdated

dCam_getBody()->Stop();
mDoGph_gInf_c::startFadeOut(XREG_S(3) + (field_0x11f >> 1) + 90);
mDoGph_gInf_c::startFadeOut((field_0x11f >> 1) + (dusk::getSettings().game.fasterSceneTransitions.getValue() ? 0 : 90));

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.

Replace with:

    #if TARGET_PC
    int time = 90;
    if (dusk::getSettings().game.fasterSceneTransitions) {
        time = 0;
    }
    mDoGph_gInf_c::startFadeOut(XREG_S(3) + (field_0x11f >> 1) + time);
    #else
    mDoGph_gInf_c::startFadeOut(XREG_S(3) + (field_0x11f >> 1) + 90);
    #endif

Comment thread src/d/d_ovlp_fade3.cpp
Comment thread src/d/d_s_play.cpp Outdated
#include "d/d_cursor_mng.h"
#endif

#include "dusk/logging.h"

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.

Remove Logging

Comment thread src/d/d_s_play.cpp Outdated
}

static int phase_5(dScnPly_c* i_this) {
DuskLog.debug("dScnPly_c: phase_5");

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.

Remove Logging

Comment thread src/d/d_s_play.cpp Outdated
}

static int phase_6(dScnPly_c* i_this) {
DuskLog.debug("dScnPly_c: phase_6");

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.

Remove Logging

Comment thread src/dusk/ui/settings.cpp Outdated
"Wallet sizes are like in the HD version. (500, 1000, 2000)");
addOption("Disable Rupee Cutscenes", getSettings().game.disableRupeeCutscenes,
"Rupees will not play cutscenes after you have collected them the first time.");
addOption("Faster Scene Transitions", getSettings().game.fasterSceneTransitions,

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.

Replace description with: Reduces how long the transitions take when changing maps.

Comment thread src/Z2AudioLib/Z2SceneMgr.cpp Outdated
Z2GetSeMgr()->seMoveVolumeAll(0.0f, 33);
Z2GetSeqMgr()->setBattleBgmOff(true);
load1stWait = 40;
load1stWait = dusk::getSettings().game.fasterSceneTransitions.getValue() ? 1 : 40;

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.

Replace with:

    #if TARGET_PC
    if (dusk::getSettings().game.fastTransitions) {
        load1stWait = 1;
    } else {
        load1stWait = 40;
    }
    #else
    load1stWait = 40;
    #endif

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.

Using a ternary was fine, just needed the TARGET_PC

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

@Irastris Would you like me to go back through and re-add the ternaries? Just removed them for Melon's code snippets in the most recent commits.

@Irastris Irastris Jun 28, 2026

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.

Nah it's chill, was more meant toward Melon, didn't realize these comments would technically start a review of my own. I think the actual approval still lies on Melon though

Comment thread src/Z2AudioLib/Z2SceneMgr.cpp Outdated
OS_REPORT("[Z2SceneMgr::load1stDynamicWave]bgm StopCount = %d\n", 15);
Z2GetSeqMgr()->bgmStop(15, 0);
load1stWait = -15;
load1stWait = dusk::getSettings().game.fasterSceneTransitions.getValue() ? -1 : -15;

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.

Replace with:

    #if TARGET_PC
    if (dusk::getSettings().game.fastTransitions) {
        load1stWait = -1;
    } else {
        load1stWait = -15;
    }
    #else
    load1stWait = -15;
    #endif

@t0mtee

t0mtee commented Jun 28, 2026

Copy link
Copy Markdown
Author

Looks good to me! Just some stuff needs to be changed or removed!

Also I will discuss with the team and see if we're good with adding it into the "dusk" preset.

Addressed your comments :)

@Abzol

Abzol commented Jun 28, 2026

Copy link
Copy Markdown
Contributor

side note but the setting in this pr is fasterSceneTransitions, while all other settings in dusklight is fastSomething to the point where both melon and ira's comments use the dusklight-style naming seemingly out of habit

@Abzol

Abzol commented Jun 28, 2026

Copy link
Copy Markdown
Contributor

Also this affects timing so should be forced off for speedrun mode

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.

Faster area transitions?

4 participants