#120 Blended overscan borders

Vasyl Tsvirkunov

With this patch the non-default overscan color will be
blended into narrow border around the screen. The
screen area remains unchanged.
The implementation is conditional -- must have
C_OVERSCAN set to 1 in config.h. I've modified
configure.in but I have no means to test it -- please
test and let me know if that one is correct.
Overscan width and strength is controlled through
dosbox.conf or command line. In dosbox.conf use section
[render]. Set "overscan=<width>" to control how wide
the overscan border is going to be, "overscan=0" will
disable the border completely.
"overscanstrength=<value>" controls how much of
overscan color is going to be blended in with game
pixel color. Values 1 through 10 are accepted, 2
through 3 produce the best results, ymmv. Similarly,
command line can include "-overscan <width>" or
"-overscanstrength=<value>" to override these settings.
Overscan border works with all scalers in all modes.
There is practically no performance hit for having it
enabled but not drawn, slight performance hit when it's
drawn. Most games never bother with overscan so it
won't appear. Good test case: Crystal Caves -- the
overscan color is actually important gameplay element.
The patch is current with CVS as of 20050822 aroudn
10pm PST.


  • Logged In: YES

    The updated version works in fullscreen mode but the border
    is opaque. I don't see a good way to do color blending in 8
    bpp modes.

  • Logged In: YES

    More advanced version, attempting to actually do blending in
    palette mode or stippling. Depending on situation it may
    produce good or bad visuals. Crystal Caves seem to work best
    with "overscanstrength=2", other games may require different
    There is also a special case. If overscanstrength is set to
    10 this implementation will do 1:1 stippling instead of
    blend. It is very fast and looks pretty good.

  • Another version with palette mode blend and stipple

  • Logged In: YES

    The old version is not working that well with new render
    implementation. Here's completely new approach. It's not
    blended border anymore. It is not as universal as the old
    version -- currently works only with output=surface, it also
    requires forcing fullscreen size to be bigger than video
    mode used by game (no such limitation for window mode).
    While it is less universal than the old one it does look better.
    The controlling option in dosbox.conf is different. Use
    overscan=<width> in [sdl] section.
    This implementation is much cheaper and simpler than the old
    one, near zero performance cost even with frequent border
    color changes. For this reason it is compiled
    unconditionally - C_OVERSCAN is not used anymore.