VOGONS


First post, by bLUEbYTE11

User metadata
Rank Newbie
Rank
Newbie

Hi,
I am trying to get dosbox 0.65 running on linux, without the X server. The reason for this is because X is slow; I want good response latency. In my system X is not even installed.
As you might know, SDL can supposedly use one of the numerous video output drivers, svgalib, directfb, fbcon etc, using the SDL_VIDEODRIVER environment variable.

So, I began trying a few video drivers, namely fbcon, diretfb, svgalib and ggi, since these seem to be good candidates for my aim (especially svgalib and fbcon). directfb and ggi did not work at all no matter what I did, always giving some absurd error.

And something amazing happened. Svgalib made dosbox run in native dos VGA resolution (my montitor shows as 720x400@70hz). And I immediately felt in love with it. BUT, something bad was got to happed, and it did, my keyboard keys layout was completely screwed...

It was like keys were shifted to the left, and up. Speaking based on an US keyboard, [ printed e, q and w some numbers (7 and 8 IIRC), hope you get the idea.
Later I got it working with fbcon too, but exactly the same problem...

I tried it with two different linux distros and kernels (2.6.12 & 2.6.16) and it's the same.

Of course I can't use keymapper, because I cannot do ctrl+f1. Moreover, pressing some of the keys immediately crashes dosbox. I think this is because the key codes are shifted, some keys correspond to invalid codes and crashes it.

So it is almost certainly not a svgalib problem, but it seems that something bad happens with keyboard key mappings when svgalib or fbcon was used as the SDL video driver...

Please help, if you have any idea, as I want to run dosbox with svgalib so badly! Thanks in advance

Reply 1 of 9, by bLUEbYTE11

User metadata
Rank Newbie
Rank
Newbie

I'm examining keyboard.cpp now, and realized that there is a shift by 8 values.
for example:

case KBD_enter:ret=28;break;
...
case KBD_j:ret=36;break;

seems like there is 8-shift in codes between SDL and svgalib.
I will try fixing this by adding /removing 8 from ret values.
Any advice appreciated.

Reply 2 of 9, by Qbix

User metadata
Rank DOSBox Author
Rank
DOSBox Author

hmm I though we add 8 to certain keys because of the same problem.
that would be happening in the mapper (src/gui/sdl_mapper.cpp)

Alternatively you can try setting usescancodes to false:
DOSBOX_SDL_USESCANCODES=false ./dosbox

Water flows down the stream
How to ask questions the smart way!

Reply 3 of 9, by bLUEbYTE11

User metadata
Rank Newbie
Rank
Newbie

Oh, didn't know there existed such an environment var.
Thanks Qbix

Reply 4 of 9, by Qbix

User metadata
Rank DOSBox Author
Rank
DOSBox Author

well it's a configuration file setting of DOSBox.
but all settings can be set using the enviroment as well.
It's just a matter of preference.

Water flows down the stream
How to ask questions the smart way!

Reply 5 of 9, by wd

User metadata
Rank DOSBox Author
Rank
DOSBox Author

In the file mentioned by Qbix, there's an adjustment for linux scancode
keys (search for key-=8; ).
Maybe that depends on xwindows though, if you're compiling the sources
you can just remove that -=8. At least if you want/need it to be working
with usescancodes=true as well.

Reply 6 of 9, by bLUEbYTE11

User metadata
Rank Newbie
Rank
Newbie

Since I couldn't get it run properly, I couldn't issue writeconfig command from dosbox, and therefore I didn't have a config file.
If one of you can post a linux config file, that'll be appreciated.

Reply 7 of 9, by Qbix

User metadata
Rank DOSBox Author
Rank
DOSBox Author
dosbox -c "config -writeconf /tmp/dosbox.conf" -c "exit"

Should create one.
rename it ~/.dosboxrc to make it your default configfile

here is the default configuration file:

[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.
# 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=false
fulldouble=false
fullresolution=original
windowresolution=original
output=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,advinterp2x,advinterp3x,tv2x,tv3x,rgb2x,rgb3x,scan2x,scan3x.

frameskip=0
aspect=false
scaler=normal2x

[cpu]
# core -- CPU Core used in emulation: simple,normal,full,dynamic.
# cycles -- Amount of instructions dosbox tries to emulate each millisecond.
# Setting this higher than your machine can handle is bad!
# You can also let DOSBox guess the correct value by setting it to auto.
# Please note that this guessing feature is still experimental.
# cycleup -- Amount of cycles to increase/decrease with keycombo.
# cycledown Setting it lower than 100 will be a percentage.

core=normal
cycles=3000
cycleup=500
cycledown=20
Show last 118 lines

[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.

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

[bios]
# joysticktype -- Type of joystick to emulate: none, 2axis, 4axis,
# fcs (Thrustmaster) ,ch (CH Flightstick).
# none disables joystick emulation.
# 2axis is the default and supports two joysticks.

joysticktype=2axis

[serial]
# serial1-4 -- set type of device connected to com port.
# Can be disabled, dummy, modem, directserial.
# Additional parameters must be in the same line in the form of
# parameter:value. Parameters for all types are irq, startbps, bytesize,
# stopbits, parity (all optional).
# for directserial: realport (required).
# for modem: listenport (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 (false,true,max).

xms=true
ems=true
umb=true

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

ipx=false

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


Water flows down the stream
How to ask questions the smart way!

Reply 8 of 9, by bLUEbYTE11

User metadata
Rank Newbie
Rank
Newbie

Thanks again everyone
Cheers

P.S I thought the linux config file differed somewhat from the windows one.

Reply 9 of 9, by Qbix

User metadata
Rank DOSBox Author
Rank
DOSBox Author

linux dosbox.conf doesn't have ddraw as output option

Water flows down the stream
How to ask questions the smart way!