#9947 closed defect (fixed)

MOHAWK: Riven: Screen Transition at beginning could be Smoother

Reported by: dafioram Owned by: bgK
Priority: low Component: Engine: Mohawk
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 22 months ago.
Screen grab halfway between two scenes.
Capture d'écran de 2017-07-12 08-00-22.png (385.1 KB) - added by bgK 22 months ago.
Optimized build
riven-018.rvn (22.9 KB) - added by macca8 22 months ago.
Pan up

Download all attachments as: .zip

Change History (13)

Changed 22 months ago by dafioram

Attachment: Untitled.png added

Screen grab halfway between two scenes.

Changed 22 months ago by bgK

Optimized build

comment:1 Changed 22 months ago by bgK

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 Changed 22 months ago by bgK

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 Changed 22 months ago by dafioram

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

comment:4 Changed 22 months ago by bgK

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 Changed 22 months ago by dafioram

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 Changed 22 months ago by bgK

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 Changed 22 months ago by bgK

Resolution: fixed
Status: newclosed

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

Changed 22 months ago by macca8

Attachment: riven-018.rvn added

Pan up

comment:8 Changed 22 months ago by macca8

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 Changed 22 months ago by macca8

Resolution: fixed
Status: closednew

comment:10 Changed 22 months ago by bgK

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.