VOGONS


First post, by Serious Callers Only

User metadata
Rank Member
Rank
Member

The game is Noir: A shadowy thriller. After the intro videos it has a mosaic fullscreen effect, where little 'pixels' which i suppose are 640x480 (the game resolution) are removed randomly (probably) and the underlying game image starts to appear.

The problem is this:
with
fullscreen=true
output=opengl
fullresolution=desktop (1366x768)

the image takes ≃ 7 minutes to appear

with
fullscreen=true
output=overlay
fullresolution=desktop (1366x768)

It takes ≃ 1 minute to appear

with
fullscreen=true
fullresolution=original (640x480)
output=overlay

it takes ≃ 1 minute (so the target resolution doesn't seem to affect it overmuch, unless the problem is that it's still not direct because of my monitor aspect ratio).

and finally with

fullscreen=false
output=overlay
it takes 7-8 seconds to appear!

Is emulating non direct resolutions direct pixel access so bad?

edit:
actually, i've experimented further and found that:
fullscreen=true
output=surface
fullresolution=original
is as fast as overlay in windowed mode. It's not ideal because the screen is distorted by changing my monitor to 640x480 from its native resolution of 1366x768

but better than nothing i guess. It's unexpected (to me) that the software mode is much faster than the hardware modes for this effect.

Reply 1 of 3, by ripa

User metadata
Rank Oldbie
Rank
Oldbie

What's your "fulldouble" setting? If you test it on fulldouble=false, how does it behave? How about frameskip=0, =1, 2, ... ? How about fixed cycles instead of auto-adjusting cycles?

Even at fulldouble=false, have you enabled some v-sync forcing parameters in your OS graphics settings?

The reason Dosbox can slow down immensely in full-screen mode is that the game may draw frames faster than your monitor can show (e.g., 70 Hz vs 60 Hz). Graphics output blocks for, say, up to 16.7 millisec (= one 60 Hz frame). Dosbox works at a "frame rate" of 1000 Hz (1 ms). When it detects comparatively large delays between frames, it dials down the amount of emulated CPU cycles per frame, which of course doesn't help very much, leading to even further deduction of emulated cycles, slowing the game down to a crawl. Workarounds:
1. fulldouble=false
2. fixed cycles
3. frameskip=1 or 2
4. somehow disable v-sync from graphics driver
5. "gaming monitor" with 120 Hz or larger refresh rate and/or FreeSync/GSync support
6. hack Dosbox to auto-skip frames or implement some kind of non-blocking graphics output

Reply 2 of 3, by Serious Callers Only

User metadata
Rank Member
Rank
Member

I tried fulldouble after the post but it didn't really help. The only thing that did help majorly (in fullscreen anyway) was 'surface' (overlay helps slightly as in the post). I'll have to try fixed cycles and frameskip. I'm actually on linux so i doubt i can affect vsync very easily.

It's good news to hear that next gen monitors will auto fluctuate framerate to game speed and that dosbox will be able to take advantage.

Reply 3 of 3, by Serious Callers Only

User metadata
Rank Member
Rank
Member

Hi, frameskip=1 took care of it like a charm... it's a bit embarrassing i wasn't able to think of it myself considering the other topic about Terra Nova really. Thanks for the kick in the pants.