Index: lib/framework/frame.h =================================================================== --- lib/framework/frame.h (revision 4564) +++ lib/framework/frame.h (working copy) @@ -42,6 +42,14 @@ extern UDWORD selectedPlayer; #define MAX_PLAYERS 8 /**< Maximum number of players in the game. */ +/* Frame limit for multiplayer games (excluding skirmish and campaign) */ +#define MP_FRAME_LIMIT 45 + +/* Default frame limit for single player: skirmish ans campaign */ +#define SP_FRAME_LIMIT 60 + +extern SDWORD spFrameLimit; + /** Initialise the frame work library */ extern BOOL frameInitialise( const char *pWindowName,// The text to appear in the window title bar Index: src/configuration.c =================================================================== --- src/configuration.c (revision 4564) +++ src/configuration.c (working copy) @@ -62,6 +62,8 @@ extern void registry_clear(void); // from configfile.c +// current frame limit for single player modes +SDWORD spFrameLimit = SP_FRAME_LIMIT; // //////////////////////////////////////////////////////////////////////////// BOOL loadConfig(void) @@ -120,14 +122,15 @@ setWarzoneKeyNumeric("debugmode", bAllowDebugMode); } - if (getWarzoneKeyNumeric("framerate", &val)) + if (getWarzoneKeyNumeric("SinglePlayerFPS", &val)) { - setFramerateLimit(val); + spFrameLimit = val; + setFramerateLimit(spFrameLimit); } else { - setFramerateLimit(60); - setWarzoneKeyNumeric("framerate", 60); + setFramerateLimit(spFrameLimit); + setWarzoneKeyNumeric("SinglePlayerFPS", spFrameLimit); } if (getWarzoneKeyString("language", sBuf)) Index: src/frontend.c =================================================================== --- src/frontend.c (revision 4564) +++ src/frontend.c (working copy) @@ -100,6 +100,7 @@ static void displayTitleBitmap (WIDGET *psWidget, UDWORD xOffset, UDWORD yOffset, PIELIGHT *pColours); void displayTextAt270 (WIDGET *psWidget, UDWORD xOffset, UDWORD yOffset, PIELIGHT *pColours); static void displayBigSlider (WIDGET *psWidget, UDWORD xOffset, UDWORD yOffset, PIELIGHT *pColours); +static void setDefaultFrameRateLimit(void); @@ -219,9 +220,23 @@ break; } + /* Set default frame rate limit */ + setDefaultFrameRateLimit(); + return; } +static void setDefaultFrameRateLimit(void) +{ + if(bMultiPlayer && NetPlay.bComms) + { + setFramerateLimit(MP_FRAME_LIMIT); // true multiplayer + } + else + { + setFramerateLimit(spFrameLimit); // single player + } +} // //////////////////////////////////////////////////////////////////////////// // Title Screen