Opened 7 years ago

Closed 7 years ago

#9947 closed defect (fixed)

MOHAWK: Riven: Screen Transition at beginning could be Smoother

Reported by: dafioram Owned by: bgK
Priority: low Component: Engine: Mohawk
Version: Keywords:
Cc: Game: Riven

Description

ScummVM: 1.10.0git-3766-gb0ecbc9
Tester OS: Win7-64
Game: Riven DVD/Windows/v1.2

Sometimes when moving between screens the transition doesn't look good. This example is at the beginning of the game. It looks like two different pictures rather than someone just looking up.

I have videos show the differences scummvm/original for DVD.

ScummVM DVD: https://streamable.com/ikjj0
XP Pro DVD: https://streamable.com/8fekb

There may be quite a few of these.

Attachments (3)

Untitled.png (184.8 KB ) - added by dafioram 7 years ago.
Screen grab halfway between two scenes.
Capture d'écran de 2017-07-12 08-00-22.png (385.1 KB ) - added by bgK 7 years ago.
Optimized build
riven-018.rvn (22.9 KB ) - added by macca8 7 years ago.
Pan up

Download all attachments as: .zip

Change History (13)

by dafioram, 7 years ago

Attachment: Untitled.png added

Screen grab halfway between two scenes.

by bgK, 7 years ago

Optimized build

comment:1 by bgK, 7 years ago

Yes, the transitions are not very smooth in the daily build because those have the compiler optimizations disabled. Release mode builds are fine though.

I'm leaving this open because I might improve the frame limiting code to leave more time to the game to draw its frames when needed instead of blindly delaying for a fixed amount of time.

comment:2 by bgK, 7 years ago

Owner: set to bgK
Resolution: wontfix
Status: newpending

I tried adding better frame limiting to Riven, but it did not bring much improvement. I'll probably leave it as is.

I've made a Windows release build so you can check the transitions are smooth for you when using an optimized build:
https://filenurse.com/download/86d8813e32e86580bcde66888332f1e7.html

comment:3 by dafioram, 7 years ago

The behavior in the optimized version is identical to the debug version.

comment:4 by bgK, 7 years ago

Ok. Here are two other test versions of ScummVM: http://ge.tt/2rry1ml2

One with an improved frame rate limiter. It does its best to render at 60 fps.
One that enables vertical refresh synchronization (vsync) and relies on it for frame pacing.
Please report if one of those behave better for you.
Also please check your video recording software is not slowing down the game. On my system, if I enable screen recording the transitions become laggy in Riven.

comment:5 by dafioram, 7 years ago

It is safe to assume that neither scummvm nor my screen recording software is being limited by my cpu/gpu.

The behavior of both the vsync and the framelimiter version is the same as the debug version. I don't believe the problem is that of speed, but how scummvm is connecting the bottom and top picture of the two different screens. Namely, that it is not interpolating the frames in between or that scummvm is just skipping the frames in between. The scummvm playthrough at this spot in the game looks like a slide show.

comment:6 by bgK, 7 years ago

Resolution: wontfix
Status: pendingnew

Oh, right, my mistake. Hotspots have a transition offset that controls how the current and next views overlap during a transition. I had it reverse engineered by forgot to implement it.

comment:7 by bgK, 7 years ago

Resolution: fixed
Status: newclosed

Thanks for your report, this is now fixed (Commit ef42fd3476).

by macca8, 7 years ago

Attachment: riven-018.rvn added

Pan up

comment:8 by macca8, 7 years ago

Unfortunately this fix doesn't work on Mac OS X 10.6.8. The game crashes immediately the example described above is attempted.

Mac OS X console report:

  • [0x0-0x3e03e].org.scummvm.scummvm[xxx] ../../src-master/src/backends/graphics/surfacesdl/surfacesdl-graphics.cpp:1445: failed assertion `h > 0 && y + h <= _videoMode.screenHeight'

comment:9 by macca8, 7 years ago

Resolution: fixed
Status: closednew

comment:10 by bgK, 7 years ago

Resolution: fixed
Status: newclosed

Sorry about that. This is now fixed by commit a7900f5.

The OpenGL renderer still works fine.

Note: See TracTickets for help on using tickets.