Is there any reason (like uncooperative timer system calls) not to change the "very slow" speed to 28.5ms, exactly matching this game's desire?
Currently the reason is trying to be user friendly with the speed settings -- here's a snippet from the current code:
Code: Select all
#if 1
{ 30, "Very Slow" },
{ 25, "Slow" },
{ 20, "Normal" },
{ 15, "Fast" },
{ 10, "Very Fast" },
#else
{ 1000, "1/1s (Extremely Slow)" },
{ 500, "1/2s" },
{ 200, "1/5s" },
{ 100, "1/10s" },
{ 50, "1/20s" },
{ 29, "1/35s (Original Supaplex)" },
{ 25, "1/40s" },
{ 20, "1/50s (Normal Speed)" },
{ 14, "1/70s (Maximum Supaplex)" },
{ 10, "1/100s" },
{ 5, "1/200s" },
{ 2, "1/500s" },
{ 1, "1/1000s (Extremely Fast)" },
#endif
Maybe I should add an "expert mode" switch to toggle between the two versions...
In fact, possibly, make that change only when running the Supaplex engine?
Changing the game speed depending on the game engine of the current level has the disadvantage that it would be harder (and/or less transparent to the user) to choose a game speed that differs from the "optimal" game speed (like people who want to play levels at a higher or lower speed, including Supaplex levels).
Another related thing is that it may be desirable to change the default game speed from 50 fps to 60 fps to match current displays. (This may even change again in the future, as displays and graphics cards seem to gain more popularity that allow for display refresh rates other than 50 frames per second.)
On Android and iOS, there's another issue, as it seems that they always use VSYNC by default, making any speed over 60 fps pointless anyway (try it with the Android and/or iOS version). But it should be possible to change this when doing SDL video initialization, so I could add another setup option "use vsync: on/off"...