mirror of
https://github.com/RetroPortingToolKit/psxrecomp
synced 2026-10-26 02:11:36 -04:00
Dynres: hold through a savestate load, no fast descent
A load's first frames re-stage VRAM, the HD cache and pacing; treating them as a heavy scene dropped 18x -> 11x within a second of every load and the level climbed back slowly. Hold for the whole 2 s request and do not arm fast descent on a load. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -10694,7 +10694,10 @@ static void dynres_tick(void) {
|
||||
* load re-anchors pacing, the game's first seconds). */
|
||||
bool soft_tail = !held && tail > 0.0 && why && std::strcmp(why, "game entry") == 0;
|
||||
if (g_dynres.hold_request_s > 0.0) {
|
||||
if (g_dynres.hold_request_s > tail) { tail = g_dynres.hold_request_s; soft_tail = !held; }
|
||||
/* A load is not a heavy scene: its first frames re-stage VRAM, the
|
||||
* HD cache and pacing. Hold the level for the whole request (hard),
|
||||
* so that transient does not drop the resolution for seconds. */
|
||||
if (g_dynres.hold_request_s > tail) { tail = g_dynres.hold_request_s; soft_tail = false; }
|
||||
why = "savestate load";
|
||||
g_dynres.hold_request_s = 0.0;
|
||||
}
|
||||
@@ -10735,8 +10738,7 @@ static void dynres_tick(void) {
|
||||
/* A new scene: let the first sustained overrun jump several levels
|
||||
* (fast descent, dynamic_resolution.h). Render-thread start and a
|
||||
* new resolution re-initialize, which arms too. */
|
||||
if (why && (std::strcmp(why, "savestate load") == 0 ||
|
||||
std::strcmp(why, "game entry") == 0 ||
|
||||
if (why && (std::strcmp(why, "game entry") == 0 ||
|
||||
std::strcmp(why, "window resize") == 0))
|
||||
dynrt_arm_descent(&g_dynres.rt);
|
||||
dynres_tick_rt(now_s, wall, period, held, tail, why);
|
||||
|
||||
Reference in New Issue
Block a user