alinebee / Boxer

The DOS game emulator that's fit for your Mac.
http://boxerapp.com/
773 stars 139 forks source link

Fullscreen performance running 1.2 on Lion #3

Closed jbartee closed 12 years ago

jbartee commented 12 years ago

I'm having a virtually identical problem to the one previously reported as issue #107 (https://bitbucket.org/alunbestor/boxer/issue/107/slowdown-in-lion-fullscreen), but I'm running 1.2.

Performance is fine in windowed mode (even when maximized), massive slow down occurs in full screen mode. Everything was fine under Snow Leopard.

OS version is 10.7.2 on a intel core 2 duo macbook pro, mid 2009. Problem occurs on both the 9400M and the 9600GT to some extent, though definitely less pronounced on the 9600GT.

Tried to reinstalling boxer post OS upgrade to no avail.

alinebee commented 12 years ago

Thanks for bringing this to my attention, and sorry for the slow reply! Which particular games are you experiencing this with? Do you get differing results with different game resolutions, e.g., does a 640x480 game behave differently in fullscreen from a 320x200 one?

Also, are you able to build Boxer from source? If you can, then I'll suggest certain code tweaks to try that will help diagnose the problem - otherwise, I'll make test builds and upload them for you to try, which will be slower.

jbartee commented 12 years ago

Here are a few games that exhibit the issue severely:

Little Big Adventure 1 and 2: These are practically unplayable in full screen because the fps is so erratic. Smooth as butter when windowed.

Zork Nemesis: Video playback is flawless, but panning is impossibly glitchy. Again, the problem disappears when windowed.

On the other hand, some games appear to be unaffected... The Edler Scrolls: Arena runs fine in fullscreen, as does Prince of Persia.

Building from source is no problem, though I can't promise any expediency. I'm happy to help out though if you can live with the ups/downs of my schedule.

alinebee commented 12 years ago

Ahh, that's very illuminating! That the problem occurs under some gameplay conditions but not others in the same game indicates that it's linked somehow to the rate and timing with which new frames are delivered for rendering.

This won't be a simple matter of tweaking variables here and there, so I may have to prepare you a test build myself in any case.

jbartee commented 12 years ago

Interesting! I just checked out LBA again, and it behaves the same as Zork; cutscene video plays fine, but actual gameplay is borked.

Some more potentially helpful info:

In LBA the fps isn't consistent -it ratchets up and down wildly. It will even occasionally appear to be normal for 30 seconds or so before breaking up again, especially when a new graphical element is introduced (like a new npc) or when transitioning to a new screen.

Also -and this is consistent across more or less my whole game library- full screen transitions like dissolves, wipes, fades, etc. are particularly effected by this, even in games that otherwise run fine (Elder Scrolls has this problem). These transitions run fine in windowed mode.

alinebee commented 12 years ago

OK, here's a build with some changes to the timing of Boxer's rendering:

http://dl.dropbox.com/u/115173/boxer-1.2.1pre-20120105.1.zip

How does this perform?

jbartee commented 12 years ago

Flawless victory. This version completely resolves the problem for me.

Thanks!

alinebee commented 12 years ago

Huh! This solution isn't ideal - I removed an optimisation that I'd like to put back in - so I may try you on different builds later after I've done some tinkering. Let me know also if you notice any increase (or decrease) in screen-tearing using this build, in windowed or fullscreen modes (I realise it'll be hard to judge in fullscreen of course).

alinebee commented 12 years ago

OK, I have made some significant changes to the renderer now which eliminate screen-tearing and will impact fullscreen performance. Could you download this new build and try it out:

http://dl.dropbox.com/u/115173/boxer-1.2.1pre-20110106.1.zip

Please let me know how performance seems in this new version, and especially if you notice slowdowns or dropped frames.

jbartee commented 12 years ago

This version causes the problem to return for me -exact same symptoms.

alinebee commented 12 years ago

Well damn! Ok, I've done a bunch more renderer rewrites, and have another build for you to test: http://dl.dropbox.com/u/115173/boxer-1.2.1pre-20120108.1.zip

If you find you have the same symptoms in this build, could you run the following command at the OS X Terminal and try it again:

defaults write net.washboardabs.boxer useVSync -bool false

That will disable vsyncing, which may be the culprit here. You can turn it back on to compare by running the command again but with "true" instead of "false".

jbartee commented 12 years ago

Success! No need to mess with the defaults, this version eliminates the symptoms for me.

alinebee commented 12 years ago

Excellent! Very glad to hear that and thank you for your testing assistance. As a result of these changes, Boxer's renderer should now be better-behaved for everybody.