VOGONS


DOSBox and Xargon

Topic actions

First post, by Thuderbird

User metadata
Rank Newbie
Rank
Newbie

The game runs quite well in DOSBox, except for one detail: Most of the controls will become inoperable after a period of time when using keyboard controls. The controls are CTRL/ALT (either one) for jump and space for fire. After awhile, the fire button is inoperable, and anything else other than jumping will not respond either. I tried keeping one of the two jump keys exclusive (only using ALT, or only using CTRL), but it does this with both.

I solved this in Windows by using my gamepad with the game (though the thing's button mappings to Xargon are rather odd, at least compared to what I usually use). However, DOSBox doesn't detect my joystick in Linux (and I'm guessing Linux doesn't see it either), so this doesn't work here. Any suggestions?

Note that I'm not actually sure which version of DOSBox I'm currently using (CVS or plain) at the moment on Linux (I've installed both at different times). I'm using the stable one on Windows, however.

Reply 1 of 6, by Guest

User metadata

I found the same problem with keys locking in NovaStorm;
You could try give the international keyhandler a go ..
(See developers forum on this site);
it uses a different mapping method.

It might also be a bug in the keybuffer mechanism; will look into
it a bit later.

Reply 2 of 6, by Alkarion

User metadata
Rank Member
Rank
Member

I experienced the same problem in Prince of Persia 2 some time ago. If I remember it correctly the ctrl-key didn't work anymore after some time.

Reply 3 of 6, by Srecko

User metadata
Rank Member
Rank
Member

Jill of the Jungle and Xargon.
I also thought that this was solved recently but it wasn't.

Reply 4 of 6, by taiken7

User metadata
Rank Member
Rank
Member

Might be the array declaration not leaving free space;
Arrays are declared as 1 based, and indexed as 0 based;
also if we step out of the array the keyboard freezes as experienced;

try the following modification to keyboard.cpp
(line 62):
struct KeyBlock {
........struct {
-- ................KeyCode code[KEYBUFSIZE];
++................KeyCode code[KEYBUFSIZE*2];
................Bitu used;
................Bitu pos;
................KeyStates state;
................} buf;

... etc.

Note that this will drop keys that exceed the keybuffer size,
but shouldnt "ice" the keyboard in the process.

Reply 5 of 6, by Laglover

User metadata

@Talken7:
thanks for the code!

I had also problems running Novastorm which in my opinion is one of the best games ever.

now i could finally give my old 486DX-2 to a museum;)

Kristian

Reply 6 of 6, by alvaro84

User metadata
Rank Member
Rank
Member

Yesterday I tried to play with this game and I found that it simply does not start in the latest CVS (0.70.2007.04.10) by Ykhwong. It does not give any error messages and it does not kill DosBox, just exits to DosBox CLI immediately.
But to my surprise it could run under 0.61 (with sound and music!). I tried many things to revive it under the new dosbox (I like its d3d output much better), including trying all the cores, speeding up/slowing down the emulated CPU, disabling/enabling ems,xms,umb, disabling the emulated sb/gus, decreasing the memory size to 4 megs (normally it's 32 megs in my config) but the did not help. I even tried it on two different PCs (an AthlonXP and a Core2 based rig) without success. OS was xp sp2 in both cases. Unfortunately I don't have 0.63, 0.65 or official 0.70 on my system to check when xargon went wrong, nor I have my dosbox.conf here with me (now I'm at my workplace) so I can not provide with more details at the moment, sorry for that 🤐

(two days later)

Here's my dosbox.conf, just in case:

[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,openglhq,ddraw,direct3d.
# 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.
# pixelshader (direct3d) -- Pixelshader program to use for resizing: none,point.fx,bilinear.fx,scale2x.fx,2xsai.fx,
# 2xSaI_sRGB.fx,Cartoon.fx,GS2x.fx,GS4x.fx,GS4xColor.fx,GS4xColorFilter.fx,GS4xColorScale.fx,
# GS4xFilter.fx,GS4xScale.fx,Matrix.fx,MCGreen.fx,MCOrange.fx,scale2x_ps14.fx,Sketch.fx.
# usescancodes -- Avoid usage of symkeys, might not work on all operating systems.
# overscan -- Width of overscan border.

fullscreen=false
fulldouble=false
sdlresize=false
fullresolution=1920x1200
windowresolution=original
output=direct3d
autolock=true
sensitivity=100
waitonerror=true
priority=normal,normal
mapperfile=mapper.txt
pixelshader=GS4xHqFilter.fx
usescancodes=true
overscan=0

[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=32

[log]
# Message not Found!

logfile=
vga=true
vgagfx=true
vgamisc=true
int10=true
sblaster=true
dma=true
fpu=true
cpu=true
paging=true
fcb=true
files=true
ioctl=true
Show last 239 lines
exec=true
dosmisc=true
pit=true
keyboard=true
pic=true
mouse=true
bios=true
gui=true
misc=true
io=true

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

frameskip=0
aspect=true
scaler=none

[vsync]
# vsyncmode -- Synchronize vsync timing to the host display. Requires calibration within dosbox.
# Supported are off,on,force.
# vsyncrate -- Vsync rate used if vsync is enabled.

vsyncmode=off
vsyncrate=75.023426

[cpu]
# core -- CPU Core used in emulation: normal,full,dynamic,force_normal,auto.
# auto switches from normal to dynamic if appropriate.
# cycles -- Amount of instructions dosbox tries to emulate each millisecond.
# Setting this higher than your machine can handle is bad! (unless timesynched is set)
# 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.
# timesynched -- Do not emulate more cycles than possible.

core=dynamic
cycles=12000
cycleup=10
cycledown=10
timesynched=false

[vga]
# svgachipset -- Select one of the following supported SVGA chipsets:
# s3 (default), et4000, et4000new, et3000, pvga1a, or none.
# Full chipset name (like 'Tseng ET4000') will also work
# as long as it contains one of the strings above.
# videoram -- Amount of video memory on emulated SVGA. Not all emulated
# chipsets support this setting.

svgachipset=s3
videoram=2048

[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=48000
blocksize=2048
prebuffer=10

[printer]
# printer -- Enable printer emulation. (turn off disney)
# dpi -- Resolution of printer (default 360).
# width -- Width of paper in 1/10 inch (default 85 = 8.5'').
# height -- Height of paper in 1/10 inch (default 110 = 11.0'').
# printoutput -- Output method for finished pages:
# png : Creates PNG images in the DOSBOX directory
# ps : Creates Postscript documents in the DOSBOX directory (default)
# bmp : Creates BMP images (very huge files, not recommend)
# printer : Send to an actual printer (Print dialog will appear)
# multipage -- Adds all pages to one Postscript file or printer job until CTRL-F2 is pressed.

printer=false
dpi=360
width=85
height=110
printoutput=ps
multipage=false

[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,mt32,none.
# mt32rate -- Sample rate of MT32 emulation
# 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
mt32rate=48000
config=

[debug]
# Debugger related options.


[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=48000

[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=48000
gusbase=240
irq1=5
irq2=5
dma1=3
dma2=3
ultradir=C:\GUS2

[innova]
# innova -- Enable the Innovation SSI-2001 emulation.
# samplerate -- Sample rate of Innovation SSI-2001 emulation.
# sidbase -- SID base port (typically 280h).
# quality -- Set SID emulation quality level (0 to 3).

innova=false
samplerate=22050
sidbase=280
quality=0

[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.
# innova -- Enable Innovation SSI-2001 emulation.
# innovabase -- Base port for Innovation SSI-2001 emulation.

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

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

joysticktype=none
timed=true
autofire=false
swap34=false

[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

[glide]
# glide - Enable glide emulation: true,false.
# port - I/O port to use with host communication.

glide=false
port=300

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

mount c: c:\
mount d: d:\
mount e: e:\
mount f: f:\
mount g: q:\sound\
set path=c:\vc;c:\utils;c:\packers;c:\gus2;z:\;c:\sound\players
c:
cd tmp\!demo
kbfast
mixer master 33:33

Shame on us, doomed from the start
May God have mercy on our dirty little hearts