I just read the release notes & notice that -
Kyrandia:
- Scrolling in the Kyrandia intro is less CPU intensive, at the cost of not being as smooth as before.
Whilst I've not downloaded/tried the new version, I politely ask the developers was it really necessary to make a slight degrade? Surely even really old comps can run ScummVM successfully (me thinking that ScummVM can't be that demanding).
Is this slight degrade temporary, i.e. are you going to improve it again in a future version?
On a positive note I'm very pleased & grateful for all the work done so far with this programme & congratulate all the team
ScummVM Build 0.9.1 - Changes
Moderator: ScummVM Team
- eriktorbjorn
- ScummVM Developer
- Posts: 3561
- Joined: Mon Oct 31, 2005 7:39 am
Re: ScummVM Build 0.9.1 - Changes
The Kyrandia engine measures time in "ticks", where one tick is one 60th of a second. The old scroller tried to move the screen one pixel every tick. If there was any time left after updating the screen, it would delay for the remainder of the tick.chas-g wrote: Whilst I've not downloaded/tried the new version, I politely ask the developers was it really necessary to make a slight degrade? Surely even really old comps can run ScummVM successfully (me thinking that ScummVM can't be that demanding).
When running this on my computer (450 MHz P3), unless I ran it with the 1x scaler, it would lag behind, and the game would be unresponsive until the scrolling had finished, i.e. no way of quitting, and the window would not repaint itself if you dragged another window across it, etc.
The rewritten scroller tries instead to do the scrolling in constant time instead: It checks how much the screen should have moved since the scrolling started, and once it has updated the screen it sleeps for 10 milliseconds (less than one tick). That means that on slower computers, it will scroll more than one pixel at a time, but on a faster one it should for the most part be as smooth as before.
I picked 10 milliseconds because that's the granularity guaranteed by SDL_Delay() which is what the SDL backend uses to implement ScummVM's delayMillis() function.
When ScummVM isn't doing anything else, it's usually sleeping for 10 milliseconds like that. If it didn't, it would use as much of your CPU as was available at all times, no matter how fast your computer is. Not a very nice thing to do in a multi-tasking system.