VOGONS

Common searches


First post, by RedNifre

User metadata
Rank Newbie
Rank
Newbie

Hello!

I just started using dosbox today, it is really awesome. I'm currently playing "X-Com: Ufo Defense", an old game with 320x200 pixels. I'm using it on my laptop, which has 1280x800 pixels, which just happens to be exactly 4 times the width and height of the 320x200 resolution.
I tried to get it to fill the screen, but pressing ALT+ENTER just switches to a black full screen with the game in the center. I also modified the dosbox.conf file, but only got so far to change the filter to "normal3x". This results in 960x600 with a large black border, which is enough to play the game, but still not "real" fullscreen.
Is there a guide for total beginners how to configure it to do 1280x800 with sharp pixels? Or is there a "normal4x" filter planned for the next release?

Thank you for reading!

Reply 1 of 12, by MiniMax

User metadata
Rank Moderator
Rank
Moderator

You should keep trying the ALT-ENTER stuff, but combine it with different output methods.

You can also try to explicitly set fullresolution=1280x800

DOSBox 60 seconds guide | How to ask questions
_________________
Lenovo M58p | Core 2 Quad Q8400 @ 2.66 GHz | Radeon R7 240 | LG HL-DT-ST DVDRAM GH40N | Fedora 32

Reply 2 of 12, by ADDiCT

User metadata
Rank Oldbie
Rank
Oldbie

It's also important to understand that numbers like "3x" or "4x" are not connected to a given resolution multiplied by x. The graphic filters are based on different algorithms to multiply the originals pixels, in order to get the resolution configured in your dosbox.conf. You choose the filters based on your visual preference, not based on resolution. I hope that makes sense, it's kinda hard to explain (;

In order to achieve "real" fullscreen, you should try the "ddraw" or "opengl" output methods. After that, configure your preferred resolution. In my opinion, it's more or less useless to use very high resolutions, as there are only so much pixels in the original image, and there's no way for DOSBox to increase the number of pixels - that's what the filters are for, to interpolate the target number of pixels from the original number of pixels, so to say. I'm using a maximum of 800x600 in fullscreen mode, for example. After that, try different filters until you're satisfied with the result. It's important to understand that the filters use the CPU for processing, thus slowing down DOSBox on a slow system. There are certain filter/output method combinations that use the GPU for scaling/filtering, which is less CPU intensive. I think other VOGONS users can explain this a bit better. There are DOSBox builds that support the "d3d" output method, which allows the use of "shaders". As far as i understand, shaders are pieces of code that run on the GPU, and scale the image according to different algorithms - kind of like "hardware filters". I'm currently using d3d with shaders, and i'm very pleased with the results.

Damn, i wish my english was better (;

Reply 3 of 12, by RedNifre

User metadata
Rank Newbie
Rank
Newbie

Thank you two for your answers!

I tried all that, but it has no effect.

I tried all different output methods and set the fullscreen resolution to 1280x800. Still the game is centered with a black border.

It's also important to understand that numbers like "3x" or "4x" are not connected to a given resolution multiplied by x. The graphic filters are based on different algorithms to multiply the originals pixels, in order to get the resolution configured in your dosbox.conf. You choose the filters based on your visual preference, not based on resolution. I hope that makes sense, it's kinda hard to explain (;

I don't understand that. If I choose "none" I get a tiny game surrounded by blackness (The game is 320x200 "game resolution" and appears exactly like that on the screen). If I choose "normal2x" I get a centered 640x400 (physical resolution). And "hq3x" gives me 960x600 (physical) with enhanced graphics (which I don't really like).
But 960x600 isn't enough, I want my tiny game (320x200) to fill the entire screen (1280x800 physical resolution, TFT).

What other ways are there I could try

Reply 4 of 12, by canadacow

User metadata
Rank Member
Rank
Member

1280x800, while being exactly 4 times the original 320x200 mode, isn't the same mode. DOSBox is correctly pillar boxing the game as you have a widescreen monitor. The aspect ratio of any 1280x800 screen made today is 16:10, where as when 320x200 was in standard use, all screens were the squareish 4:3. Pilar boxing for widescreen produces "virtual pixels" of the original width and height, where as if you fit the game to the entire screen you'd get pixels that were wider in ratio than they were historically.

Hope this makes sense.

Reply 5 of 12, by ADDiCT

User metadata
Rank Oldbie
Rank
Oldbie

You did set the "fullresolution" entry in dosbox.conf to the target resolution you want to to use, didn't you? If you do that, DOSBox will use the filter to stretch the image to that resolution. If that doesn't work, we need more info about your hardware, OS, system config (graphic card drivers, etc.), and DOSBox config (which output method, which filter, etc.). But i'd say that stretching (or "filtering") the image seems to work on your system, as you say you get different sized screens when trying different filters.

You can change DOSBox' aspect ratio behaviour with the "aspect" entry in dosbox.conf. When you set it to "false", the image should fill the full screen, but you'll get a skewed display, like canadacow explained. I'll say it again: you don't _have_ to use huge resolutions like 1280x800. You could also use any lower resolution, as long as your display supports it. In my case, my LCD supports up to 1280x1024, but still i'm using a maximum of 800x600 for DOSBox.

Of course you will get different sized screens when using "2x" or "3x". The algorithms for these filters basically work by multiplying the number of pixels in the original image by 2 or 3 respectively. Others filters use completely different algorithms. The intended use of the filters is that you should configure a target resolution via dosbox.conf, and DOSBox will use the filter you have configured to stretch the original image to the resolution you have configured. So it's not like "find the filter that will stretch the image to fill my screen", but rather "find a filter that looks good with the resolution i have configured".

Reply 6 of 12, by RedNifre

User metadata
Rank Newbie
Rank
Newbie

DOSBox is correctly pillar boxing the game as you have a widescreen monitor.

No, it does not. If I set aspect=true the game image gets higher, but still doesn't touch the upper and bottom end of the screen. Instead it is then 960x660 (using normal3x), so there is still a black border of 120 black pixels on top and below the game image.

I'm fully aware, that using aspect=false results in a slightly deformed game. But that's fine with me, the game looks okay when played with square pixels instead of "high" pixels.

You did set the "fullresolution" entry in dosbox.conf to the target resolution you want to to use, didn't you? If you do that, DOSBox will use the filter to stretch the image to that resolution. If that doesn't work, we need more info about your hardware, OS, system config (graphic card drivers, etc.), and DOSBox config (which output method, which filter, etc.).

Yes, I set the fullresolution to 1280x800 but it doesn't work.
I'm using Dosbox 0.71 on ubuntu 7.10 with Gnome 2.20.1. and an ATI Mobility Radeon. I got the right driver for the ATI-card (ATI provides a Linux driver) and I'm sure the driver is working, because I can use 3D-Desktop effects. I also turned off these effects to check if that might be the cause, but it does not change anything.
Here's my current dosbox.conf:

# This is the configurationfile for DOSBox 0.71.
# Lines starting with a # are commentlines.
# They are used to (briefly) document the effect of each option.

[sdl]
# fullscreen -- Start dosbox directly in fullscreen.
# fulldouble -- Use double buffering in fullscreen.
# fullresolution -- What resolution to use for fullscreen: original or fixed size (e.g. 1024x768).
# windowresolution -- Scale the window to this size IF the output device supports hardware scaling.
# output -- What to use for output: surface,overlay,opengl,openglnb.
# autolock -- Mouse will automatically lock, if you click on the screen.
# sensitiviy -- Mouse sensitivity.
# waitonerror -- Wait before closing the console if dosbox has an error.
# priority -- Priority levels for dosbox: lowest,lower,normal,higher,highest,pause (when not focussed).
# Second entry behind the comma is for when dosbox is not focused/minimized.
# mapperfile -- File used to load/save the key/event mappings from.
# usescancodes -- Avoid usage of symkeys, might not work on all operating systems.

fullscreen=true
fulldouble=false
fullresolution=1280x800
#original
windowresolution=640x400
#original
output=opengl #surface
autolock=true
sensitivity=100
waitonerror=true
priority=higher,normal
mapperfile=mapper.txt
usescancodes=true

[dosbox]
# language -- Select another language file.
# memsize -- Amount of memory dosbox has in megabytes.
# machine -- The type of machine tries to emulate:hercules,cga,tandy,pcjr,vga.
# captures -- Directory where things like wave,midi,screenshot get captured.

language=
machine=vga
captures=capture
memsize=16

[render]
# frameskip -- How many frames dosbox skips before drawing one.
# aspect -- Do aspect correction, if your output method doesn't support scaling this can slow things down!.
# scaler -- Scaler used to enlarge/enhance low resolution modes.
# Supported are none,normal2x,normal3x,advmame2x,advmame3x,hq2x,hq3x,
# 2xsai,super2xsai,supereagle,advinterp2x,advinterp3x,
# tv2x,tv3x,rgb2x,rgb3x,scan2x,scan3x.
# If forced is appended (like scaler=hq2x forced), the scaler will be used
# even if the result might not be desired.

frameskip=0
aspect=true
scaler=normal3x

[cpu]
# core -- CPU Core used in emulation: normal,simple,dynamic,auto.
# auto switches from normal to dynamic if appropriate.
Show last 140 lines
# cycles -- Amount of instructions dosbox tries to emulate each millisecond.
# Setting this value too high results in sound dropouts and lags.
# You can also let DOSBox guess the correct value by setting it to max.
# The default setting (auto) switches to max if appropriate.
# cycleup -- Amount of cycles to increase/decrease with keycombo.
# cycledown Setting it lower than 100 will be a percentage.

core=auto
cycles=auto
cycleup=500
cycledown=20

[mixer]
# nosound -- Enable silent mode, sound is still emulated though.
# rate -- Mixer sample rate, setting any devices higher than this will
# probably lower their sound quality.
# blocksize -- Mixer block size, larger blocks might help sound stuttering
# but sound will also be more lagged.
# prebuffer -- How many milliseconds of data to keep on top of the blocksize.

nosound=false
rate=22050
blocksize=2048
prebuffer=10

[midi]
# mpu401 -- Type of MPU-401 to emulate: none, uart or intelligent.
# device -- Device that will receive the MIDI data from MPU-401.
# This can be default,alsa,oss,win32,coreaudio,none.
# config -- Special configuration options for the device. In Windows put
# the id of the device you want to use. See README for details.

mpu401=intelligent
device=default
config=

[sblaster]
# sbtype -- Type of sblaster to emulate:none,sb1,sb2,sbpro1,sbpro2,sb16.
# sbbase,irq,dma,hdma -- The IO/IRQ/DMA/High DMA address of the soundblaster.
# mixer -- Allow the soundblaster mixer to modify the dosbox mixer.
# oplmode -- Type of OPL emulation: auto,cms,opl2,dualopl2,opl3.
# On auto the mode is determined by sblaster type.
# All OPL modes are 'Adlib', except for CMS.
# oplrate -- Sample rate of OPL music emulation.

sbtype=sb16
sbbase=220
irq=7
dma=1
hdma=5
mixer=true
oplmode=auto
oplrate=22050

[gus]
# gus -- Enable the Gravis Ultrasound emulation.
# gusbase,irq1,irq2,dma1,dma2 -- The IO/IRQ/DMA addresses of the
# Gravis Ultrasound. (Same IRQ's and DMA's are OK.)
# gusrate -- Sample rate of Ultrasound emulation.
# ultradir -- Path to Ultrasound directory. In this directory
# there should be a MIDI directory that contains
# the patch files for GUS playback. Patch sets used
# with Timidity should work fine.

gus=true
gusrate=22050
gusbase=240
irq1=5
irq2=5
dma1=3
dma2=3
ultradir=C:\ULTRASND

[speaker]
# pcspeaker -- Enable PC-Speaker emulation.
# pcrate -- Sample rate of the PC-Speaker sound generation.
# tandy -- Enable Tandy Sound System emulation (off,on,auto).
# For auto Tandysound emulation is present only if machine is set to tandy.
# tandyrate -- Sample rate of the Tandy 3-Voice generation.
# disney -- Enable Disney Sound Source emulation. Covox Voice Master and Speech Thing compatible.

pcspeaker=true
pcrate=22050
tandy=auto
tandyrate=22050
disney=true

[joystick]
# joysticktype -- Type of joystick to emulate: auto (default), none,
# 2axis (supports two joysticks), 4axis,
# fcs (Thrustmaster), ch (CH Flightstick).
# none disables joystick emulation.
# auto chooses emulation depending on real joystick(s).
# timed -- enable timed intervals for axis. (false is old style behaviour).
# autofire -- continuously fires as long as you keep the button pressed.
# swap34 -- swap the 3rd and the 4th axis. can be useful for certain joysticks.
# buttonwrap -- enable button wrapping at the number of emulated buttons.

joysticktype=auto
timed=true
autofire=false
swap34=false
buttonwrap=true

[serial]
# serial1-4 -- set type of device connected to com port.
# Can be disabled, dummy, modem, nullmodem, directserial.
# Additional parameters must be in the same line in the form of
# parameter:value. Parameter for all types is irq.
# for directserial: realport (required), rxdelay (optional).
# for modem: listenport (optional).
# for nullmodem: server, rxdelay, txdelay, telnet, usedtr,
# transparent, port, inhsocket (all optional).
# Example: serial1=modem listenport:5000

serial1=dummy
serial2=dummy
serial3=disabled
serial4=disabled

[dos]
# xms -- Enable XMS support.
# ems -- Enable EMS support.
# umb -- Enable UMB support.
# keyboardlayout -- Language code of the keyboard layout (or none).

xms=true
ems=true
umb=true
keyboardlayout=none

[ipx]
# ipx -- Enable ipx over UDP/IP emulation.

ipx=false

[autoexec]
# Lines in this section will be run at startup.

You can change DOSBox' aspect ratio behaviour with the "aspect" entry in dosbox.conf. When you set it to "false", the image should fill the full screen, but you'll get a skewed display, like canadacow explained. I'll say it again: you don't _have_ to use huge resolutions like 1280x800. You could also use any lower resolution, as long as your display supports it. In my case, my LCD supports up to 1280x1024, but still i'm using a maximum of 800x600 for DOSBox.

Aspect correction works, it makes the image higher by adding extra lines. But I don't want that, I prefer a skewed display that fills the whole screen.
As for the lower resolution: This results in a blurry image because the pixels get interpolated on my TFT. I prefer absolutely sharp pixels (one game pixel results in 16 identical screen pixels). A compromise is to use 960x600 with the normal3x filter. While this is relatively sharp it is still not perfect.

Of course you will get different sized screens when using "2x" or "3x". The algorithms for these filters basically work by multiplying the number of pixels in the original image by 2 or 3 respectively. Others filters use completely different algorithms. The intended use of the filters is that you should configure a target resolution via dosbox.conf, and DOSBox will use the filter you have configured to stretch the original image to the resolution you have configured. So it's not like "find the filter that will stretch the image to fill my screen", but rather "find a filter that looks good with the resolution i have configured".

Okay, then the problem is that the target resolution "fullresolution" has no effect whatsoever. But even if it had, would it result in interpolated pixels or sharp pixels? (I prefer sharp).

Reply 7 of 12, by MiniMax

User metadata
Rank Moderator
Rank
Moderator

I am not sure if this (output=opengl #surface) could be causing problems, but I suggest you remove the trailing comment (#surface). One would expect it to work, but I am not sure the configuration parser in DOSBox supports trailing comments like this. And in that case, it might fall-back to the default output method (which I think is surface).

Ohh - and you don't need to supply a complete config file to DOSBox. Just the sections and settings you want to change. Anything else will be the the built-in defaults.

DOSBox 60 seconds guide | How to ask questions
_________________
Lenovo M58p | Core 2 Quad Q8400 @ 2.66 GHz | Radeon R7 240 | LG HL-DT-ST DVDRAM GH40N | Fedora 32

Reply 8 of 12, by ripa

User metadata
Rank Oldbie
Rank
Oldbie

Try:
fullresolution=1280x800
output=openglnb
aspect=false
scaler=none

It stretches the image to 1280x800 without blurring and applying aspect ratio correction. I just tried it in Wolf3d and it worked fine (i.e. Dosbox didn't add any borders and the picture was 16:10 and sharp both in fullscreen and windowed). The "nb" in "openglnb" probably stands for "no blur".

If you use output=surface, dosbox will add borders to reach the desired fullresolution or windowresolution.

http://i32.tinypic.com/w7k7b8.png

Last edited by ripa on 2008-05-12, 18:02. Edited 1 time in total.

Reply 9 of 12, by MiniMax

User metadata
Rank Moderator
Rank
Moderator

> The "nb" in "openglnb" probably stands for "no blur".

No 😀 I think it is something to do with "no buffering".

Edit: ripa is right. It is no bilinear something (whatever this something is).

Edit2: http://en.wikipedia.org/wiki/Bilinear_filtering

Last edited by MiniMax on 2008-05-12, 18:14. Edited 2 times in total.

DOSBox 60 seconds guide | How to ask questions
_________________
Lenovo M58p | Core 2 Quad Q8400 @ 2.66 GHz | Radeon R7 240 | LG HL-DT-ST DVDRAM GH40N | Fedora 32

Reply 10 of 12, by ripa

User metadata
Rank Oldbie
Rank
Oldbie

"No I think it is something to do with "no buffering"."

Perhaps, but at least for me the difference between opengl and openglnb is that opengl uses bilinear interpolation for resizing and openglnb uses nearest neighbor (=blocky and sharp).

edit:
sdlmain.cpp: 1073-1079

#if C_OPENGL
} else if (!strcasecmp(output,"opengl")) {
sdl.desktop.want_type=SCREEN_OPENGL;
sdl.opengl.bilinear=true;
} else if (!strcasecmp(output,"openglnb")) {
sdl.desktop.want_type=SCREEN_OPENGL;
sdl.opengl.bilinear=false;

Reply 12 of 12, by KoiMaxx

User metadata
Rank Newbie
Rank
Newbie
RedNifre wrote:
Hello! […]
Show full quote

Hello!

I just started using dosbox today, it is really awesome. I'm currently playing "X-Com: Ufo Defense", an old game with 320x200 pixels. I'm using it on my laptop, which has 1280x800 pixels, which just happens to be exactly 4 times the width and height of the 320x200 resolution.
I tried to get it to fill the screen, but pressing ALT+ENTER just switches to a black full screen with the game in the center. I also modified the dosbox.conf file, but only got so far to change the filter to "normal3x". This results in 960x600 with a large black border, which is enough to play the game, but still not "real" fullscreen.
Is there a guide for total beginners how to configure it to do 1280x800 with sharp pixels? Or is there a "normal4x" filter planned for the next release?

Thank you for reading!

its probably your desktop video setting... try right-clicking on your desktop... you should probably see a "Graphic Options > Panel Fit" menu item. set it to either Full screen (with borders) or Full screen (maintain aspect ratio)

hope this helps...