[Scummvm-git-logs] scummvm master -> 2e395838d9a5e9eb5f579e1ceb7bc4318149c408
neuromancer
noreply at scummvm.org
Tue Jun 2 17:26:26 UTC 2026
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
2e395838d9 SCUMM: RA: Default framerate is 15fps
Commit: 2e395838d9a5e9eb5f579e1ceb7bc4318149c408
https://github.com/scummvm/scummvm/commit/2e395838d9a5e9eb5f579e1ceb7bc4318149c408
Author: Manuel Lauss (manuel.lauss at gmail.com)
Date: 2026-06-02T19:26:22+02:00
Commit Message:
SCUMM: RA: Default framerate is 15fps
The default frame rate for all RA1 ANM and RA2 SAN files is 15fps.
Changed paths:
engines/scumm/insane/rebel1/runlevels.cpp
engines/scumm/insane/rebel2/levels.cpp
engines/scumm/insane/rebel2/menu.cpp
engines/scumm/insane/rebel2/runlevels.cpp
diff --git a/engines/scumm/insane/rebel1/runlevels.cpp b/engines/scumm/insane/rebel1/runlevels.cpp
index 1a61b7ff307..3623029abfb 100644
--- a/engines/scumm/insane/rebel1/runlevels.cpp
+++ b/engines/scumm/insane/rebel1/runlevels.cpp
@@ -159,7 +159,7 @@ void InsaneRebel1::playCinematic(const char *filename, int32 startFrame) {
splayer->setCurVideoFlags(0x28); // Cinematic mode + buffer preserve
splayer->setFastForwardFromFrame(0);
splayer->setFastForwardToFrame(startFrame > 0 ? startFrame : 0);
- splayer->play(filename, 12);
+ splayer->play(filename, 15);
// Level-title text is only meant for the intro cinematic that armed it.
// Clear it even when the movie ended through ESC, so it cannot leak into
@@ -1693,7 +1693,7 @@ void InsaneRebel1::releaseInteractiveVideoInput() {
}
void InsaneRebel1::playInteractiveVideoFile(const char *filename, int32 videoOffset, int32 videoStartFrame) {
- _vm->_splayer->play(filename, 12, videoOffset, videoStartFrame);
+ _vm->_splayer->play(filename, 15, videoOffset, videoStartFrame);
restoreInteractiveVideoAudioState();
_interactiveVideoActive = false;
}
diff --git a/engines/scumm/insane/rebel2/levels.cpp b/engines/scumm/insane/rebel2/levels.cpp
index ad3f32077be..63d49134bba 100644
--- a/engines/scumm/insane/rebel2/levels.cpp
+++ b/engines/scumm/insane/rebel2/levels.cpp
@@ -59,7 +59,7 @@ void InsaneRebel2::runGame() {
// Demo: just play the demo video and return
if (_vm->_game.features & GF_DEMO) {
- splayer->play("OPEN/O_DEMO.SAN", 12);
+ splayer->play("OPEN/O_DEMO.SAN", 15);
return;
}
@@ -147,7 +147,7 @@ void InsaneRebel2::playIntroSequence() {
// Original: FUN_0041f4d0("OPEN/O_OPEN_A.SAN", 0x28, 0xffff, 0xffff, 0)
debug("Rebel2: Playing main intro (O_OPEN_A.SAN)");
splayer->setCurVideoFlags(0x28);
- splayer->play("OPEN/O_OPEN_A.SAN", 12);
+ splayer->play("OPEN/O_OPEN_A.SAN", 15);
if (_vm->shouldQuit())
return;
@@ -157,7 +157,7 @@ void InsaneRebel2::playIntroSequence() {
// We play unconditionally (matches "Continue Intro" menu behavior)
debug("Rebel2: Playing additional intro (O_OPEN_B.SAN)");
splayer->setCurVideoFlags(0x28);
- splayer->play("OPEN/O_OPEN_B.SAN", 12);
+ splayer->play("OPEN/O_OPEN_B.SAN", 15);
}
// playMissionBriefing -- Mission briefing screen (FUN_00415CF8).
@@ -167,7 +167,7 @@ void InsaneRebel2::playMissionBriefing() {
SmushPlayer *splayer = ((ScummEngine_v7 *)_vm)->_splayer;
splayer->setCurVideoFlags(0x08); // Briefing mode flag
- splayer->play("OPEN/O_LEVEL.SAN", 12);
+ splayer->play("OPEN/O_LEVEL.SAN", 15);
}
// playCinematic -- Play a cinematic/cutscene video.
@@ -179,7 +179,7 @@ void InsaneRebel2::playCinematic(const char *filename) {
SmushPlayer *splayer = ((ScummEngine_v7 *)_vm)->_splayer;
splayer->setCurVideoFlags(0x28); // Cinematic mode + buffer preserve (0x20 | 0x08)
- splayer->play(filename, 12);
+ splayer->play(filename, 15);
}
// playVideoWithText -- Video with progressive text overlay (FUN_004171c5).
@@ -201,7 +201,7 @@ void InsaneRebel2::playVideoWithText(const char *filename, int textID, int textX
SmushPlayer *splayer = ((ScummEngine_v7 *)_vm)->_splayer;
splayer->setCurVideoFlags(0x28);
- splayer->play(filename, 12);
+ splayer->play(filename, 15);
_textOverlayActive = false;
}
@@ -270,7 +270,7 @@ void InsaneRebel2::playLevelEnd(int levelId) {
SmushPlayer *splayer = ((ScummEngine_v7 *)_vm)->_splayer;
// Original: FUN_00417327 adds | 8, so flags = 0x20 | 0x08 = 0x28
splayer->setCurVideoFlags(0x28);
- splayer->play(filename.c_str(), 12);
+ splayer->play(filename.c_str(), 15);
}
// playLevelRetry -- Retry prompt video (LEVXX/XXRETRY.SAN, FUN_00417168).
@@ -288,7 +288,7 @@ void InsaneRebel2::playLevelRetry(int levelId) {
SmushPlayer *splayer = ((ScummEngine_v7 *)_vm)->_splayer;
// Original: FUN_00417168 adds | 8, so flags = 0x20 | 0x08 = 0x28
splayer->setCurVideoFlags(0x28);
- splayer->play(filename.c_str(), 12);
+ splayer->play(filename.c_str(), 15);
}
// playLevelGameOver -- Game over video (FUN_00417ab2).
@@ -306,7 +306,7 @@ void InsaneRebel2::playLevelGameOver(int levelId) {
SmushPlayer *splayer = ((ScummEngine_v7 *)_vm)->_splayer;
// Original: FUN_00417ab2 adds | 8, so flags = 0x20 | 0x08 = 0x28
splayer->setCurVideoFlags(0x28);
- splayer->play(filename.c_str(), 12);
+ splayer->play(filename.c_str(), 15);
}
// playEndingSequence -- Finale + credits + epilogue (FUN_0041bbe8).
@@ -363,7 +363,7 @@ void InsaneRebel2::playCreditsSequence() {
SmushPlayer *splayer = ((ScummEngine_v7 *)_vm)->_splayer;
splayer->setCurVideoFlags(0x20);
- splayer->play("OPEN/O_CREDIT.SAN", 12);
+ splayer->play("OPEN/O_CREDIT.SAN", 15);
}
void InsaneRebel2::centerGameplayAim() {
@@ -697,7 +697,7 @@ void InsaneRebel2::playLevelDeathVariant(int levelId, int phase, int frame) {
SmushPlayer *splayer = ((ScummEngine_v7 *)_vm)->_splayer;
// Original: FUN_00417168 adds | 8, so flags = 0x20 | 0x08 = 0x28
splayer->setCurVideoFlags(0x28);
- splayer->play(filename.c_str(), 12);
+ splayer->play(filename.c_str(), 15);
}
// playLevelRetryVariant -- Phase-specific retry video.
@@ -723,7 +723,7 @@ void InsaneRebel2::playLevelRetryVariant(int levelId, int phase) {
SmushPlayer *splayer = ((ScummEngine_v7 *)_vm)->_splayer;
// Original: FUN_00417168 adds | 8, so flags = 0x20 | 0x08 = 0x28
splayer->setCurVideoFlags(0x28);
- splayer->play(filename.c_str(), 12);
+ splayer->play(filename.c_str(), 15);
}
diff --git a/engines/scumm/insane/rebel2/menu.cpp b/engines/scumm/insane/rebel2/menu.cpp
index f785cd7159c..83a5f178ebb 100644
--- a/engines/scumm/insane/rebel2/menu.cpp
+++ b/engines/scumm/insane/rebel2/menu.cpp
@@ -622,7 +622,7 @@ int InsaneRebel2::runMainMenu() {
// Play the menu video
// Input is processed in procPostRendering during playback
// When user confirms selection, _vm->_smushVideoShouldFinish is set
- splayer->play(menuVideo.c_str(), 12);
+ splayer->play(menuVideo.c_str(), 15);
// Check for quit
if (_vm->shouldQuit()) {
@@ -678,9 +678,9 @@ int InsaneRebel2::runMainMenu() {
_menuInputActive = false;
// Play intro sequence again (O_OPEN_A/B)
splayer->setCurVideoFlags(0x20);
- splayer->play("OPEN/O_OPEN_A.SAN", 12);
+ splayer->play("OPEN/O_OPEN_A.SAN", 15);
if (!_vm->shouldQuit()) {
- splayer->play("OPEN/O_OPEN_B.SAN", 12);
+ splayer->play("OPEN/O_OPEN_B.SAN", 15);
}
// Restore menu state
_gameState = kStateMainMenu;
@@ -697,7 +697,7 @@ int InsaneRebel2::runMainMenu() {
_gameState = kStateCredits;
_menuInputActive = false;
splayer->setCurVideoFlags(0x20);
- splayer->play("OPEN/O_CREDIT.SAN", 12);
+ splayer->play("OPEN/O_CREDIT.SAN", 15);
_gameState = kStateMainMenu;
_menuInputActive = true;
// Returns 1 in original -> stays at stage 1 (main menu)
@@ -780,7 +780,7 @@ int InsaneRebel2::runChapterSelect() {
splayer->setCurVideoFlags(0x28);
// Play O_LEVEL.SAN â preview thumbnails are rendered by FOBJ offset
- splayer->play("OPEN/O_LEVEL.SAN", 12);
+ splayer->play("OPEN/O_LEVEL.SAN", 15);
if (_vm->shouldQuit()) {
setVirtualKeyboardVisible(false);
@@ -1233,7 +1233,7 @@ int InsaneRebel2::runLevelSelect() {
Common::String menuVideo = getRandomMenuVideo();
splayer->setCurVideoFlags(0x20);
- splayer->play(menuVideo.c_str(), 12);
+ splayer->play(menuVideo.c_str(), 15);
if (_vm->shouldQuit()) {
setVirtualKeyboardVisible(false);
@@ -1732,7 +1732,7 @@ void InsaneRebel2::showTopPilots() {
Common::String menuVideo = getRandomMenuVideo();
splayer->setCurVideoFlags(0x20);
- splayer->play(menuVideo.c_str(), 12);
+ splayer->play(menuVideo.c_str(), 15);
_gameState = kStateMainMenu;
_menuInputActive = true;
@@ -1839,7 +1839,7 @@ void InsaneRebel2::showOptionsMenu() {
Common::String menuVideo = getRandomMenuVideo();
splayer->setCurVideoFlags(0x20);
- splayer->play(menuVideo.c_str(), 12);
+ splayer->play(menuVideo.c_str(), 15);
}
_gameState = kStateMainMenu;
diff --git a/engines/scumm/insane/rebel2/runlevels.cpp b/engines/scumm/insane/rebel2/runlevels.cpp
index ba3abf80298..a71a39285c5 100644
--- a/engines/scumm/insane/rebel2/runlevels.cpp
+++ b/engines/scumm/insane/rebel2/runlevels.cpp
@@ -198,7 +198,7 @@ bool InsaneRebel2::playLevelSegment(const char *filename, uint16 flags, bool rec
centerGameplayAim();
splayer->setCurVideoFlags(flags);
- splayer->play(filename, 12);
+ splayer->play(filename, 15);
if (recordFrame)
_deathFrame = splayer->_frame;
return !_vm->shouldQuit();
More information about the Scummvm-git-logs
mailing list