Games with joystick problems with high cycle counts

Here you can discuss the development of patches.

Re: Wing Commander III (and possibly other games) joystick problem at high cycle counts

Postby DosFreak » 2006-9-22 @ 14:10

USB joysticks have always been the recommended joystick for DosBox.
Game Acronym List
DosBox CVS Builds
DosBox Feature Request Thread
DosBox FAQ
PC Game Compatibility List
"Who's got time to read all the way down to the bottom of an email?"
User avatar
DosFreak
l33t++
 
Posts: 9573
Joined: 2002-6-30 @ 16:35
Location: Your Head

Re: Wing Commander III (and possibly other games) joystick problem at high cycle counts

Postby Darkknight2280 » 2006-9-22 @ 14:22

Cool.. Again i am new to DOSbox...been using it for 3 days now.. Feel I have a good grasp on it so far. Since I was able to fix Privateer's jumpey graphics and sound issues on my own. Just not up to speed on info like this. But I appreciate all your guys help. Thanks :)
GB Money
User avatar
Darkknight2280
Newbie
 
Posts: 13
Joined: 2006-9-21 @ 15:19
Location: Grove City, Ohio USA

Re: Wing Commander III (and possibly other games) joystick problem at high cycle counts

Postby h-a-l-9000 » 2006-9-22 @ 17:05

I think JOY_NONE should be better respected:

Code: Select all
if(joytype!=JOY_NONE) {
   ReadHandler.Install(0x201,read_p201,IO_MB);
   WriteHandler.Install(0x201,write_p201,IO_MB);
}


Or else there will still be a joystick that has one position all the time.
h-a-l-9000
DOSBox Author
 
Posts: 4512
Joined: 2005-2-23 @ 00:14

Re: Wing Commander III (and possibly other games) joystick problem at high cycle counts

Postby Darkknight2280 » 2006-9-22 @ 17:10

So I would still need to use JOY_NONE no matter what for Privateer?
GB Money
User avatar
Darkknight2280
Newbie
 
Posts: 13
Joined: 2006-9-21 @ 15:19
Location: Grove City, Ohio USA

Re: Wing Commander III (and possibly other games) joystick problem at high cycle counts

Postby wd » 2006-9-22 @ 17:30

> Or else there will still be a joystick that has one position all the time.

Didn't look too close, but stick0/1.enabled is always false in that case,
so it'll return 0xff all the time??
wd
DOSBox Author
 
Posts: 10818
Joined: 2003-12-03 @ 21:23

Re: Wing Commander III (and possibly other games) joystick problem at high cycle counts

Postby Darkknight2280 » 2006-9-22 @ 17:55

I see.. Well i will make sure I add that once i buy my USB Joystick tonight.
GB Money
User avatar
Darkknight2280
Newbie
 
Posts: 13
Joined: 2006-9-21 @ 15:19
Location: Grove City, Ohio USA

Re: Wing Commander III (and possibly other games) joystick problem at high cycle counts

Postby h-a-l-9000 » 2006-9-22 @ 17:58

Whoops, sorry, you're right.
1+1=10
h-a-l-9000
DOSBox Author
 
Posts: 4512
Joined: 2005-2-23 @ 00:14

Re: Games with joystick problems with high cycle counts

Postby OSH » 2008-12-19 @ 12:12

I have one problem...
I have a game Flying Corps Gold. And this game has big problem with properly calibrating my USB joystick. Only under version compiled by rcblanke, with joystick patch by h-a-l-9000 I can calibrate joystick properly. But when I've downloaded Megabuild version with all patches by h-a-l-9000, a properly joystick calibrating is impossible. H-a-l-9000, did you deleted this patch from your build ?? here's my DOSBOX configuration:


Code: Select all
# This is the configurationfile for DOSBox 0.72.
# 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 video system to use for output.
#                   Possible values: surface, overlay, opengl, openglnb, ddraw
#         autolock: Mouse will automatically lock, if you click on the screen.
#      sensitivity: Mouse sensitivity.
#      waitonerror: Wait before closing the console if dosbox has an error.
#         priority: Priority levels for dosbox. Second entry behind the comma is for when dosbox is not focused/minimized. (pause is only valid for the second entry)
#                   Possible values: lowest, lower, normal, higher, highest, pause
#       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.
#  machine: The type of machine tries to emulate.
#           Possible values: hercules, cga, tandy, pcjr, ega, vgaonly, svga_s3, svga_et3000, svga_et4000, svga_paradise, vesa_nolfb, vesa_oldvbe
# captures: Directory where things like wave, midi, screenshot get captured.
#  memsize: Amount of memory DOSBox has in megabytes.

language=
machine=svga_s3
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!.
#  linewise: Draw the display line by line. Needed for certain special graphics effects in games and demos. Can be changed at runtime but will be put in effect at the next mode switch.
# multiscan: Set this value to true to allow zooming gfx effects used in demos. It will disable several options such as scalers though.
#    scaler: Scaler used to enlarge/enhance low resolution modes. If 'forced' is appended,the scaler will be used even if the result might not be desired.
#            Possible values: none, normal2x, normal3x, advmame2x, advmame3x, advinterp2x, advinterp3x, hq2x, hq3x, 2xsai, super2xsai, supereagle, tv2x, tv3x, rgb2x, rgb3x, scan2x, scan3x

frameskip=0
aspect=false
linewise=false
multiscan=false
scaler=normal2x

[cpu]
#      core: CPU Core used in emulation. auto will switch to dynamic if available and appropriate.
#            Possible values: auto, dynamic, normal, simple
#   cputype: CPU Type used in emulation. auto is the fastest choice.
#            Possible values: auto, 386, 386_slow, 486_slow, pentium_slow, 386_prefetch
#    cycles: Amount of instructions DOSBox tries to emulate each millisecond. Setting this value too high results in sound dropouts and lags. Cycles can be set in 3 ways:
#              'auto'          tries to guess what a game needs.
#                              It usually works, but can fail for certain games.
#              'fixed #number' will set a fixed amount of cycles. This is what you usually need if 'auto' fails.
#                              (Example: fixed 4000)
#              'max'           will allocate as much cycles as your computer is able to handle
#           
#            Possible values: auto, fixed, max, %u
#   cycleup: Amount of cycles to increase/decrease with keycombo.
# cycledown: Setting it lower than 100 will be a percentage.

core=dynamic
cputype=486_slow
cycles=fixed #5000
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.
#            Possible values: 22050, 44100, 48000, 32000, 16000, 11025, 8000
# blocksize: Mixer block size, larger blocks might help sound stuttering but sound will also be more lagged.
#            Possible values: 2048, 4096, 8192, 1024, 512, 256
# 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.
#         Possible values: intelligent, uart, none
# device: Device that will receive the MIDI data from MPU-401.
#         Possible values: default, win32, alsa, oss, coreaudio, coremidi, none
# config: Special configuration options for the device driver. This is usually 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.
#               Possible values: sb1, sb2, sbpro1, sbpro2, sb16, none
#       sbbase: The IO address of the soundblaster.
#               Possible values: 220, 240, 260, 280, 2a0, 2c0, 2e0, 300
#          irq: The IRQ number of the soundblaster.
#               Possible values: 7, 5, 3, 9, 10, 11, 12
#          dma: The DMA number of the soundblaster.
#               Possible values: 1, 5, 0, 3, 6, 7
#         hdma: The High DMA number of the soundblaster.
#               Possible values: 1, 5, 0, 3, 6, 7
#        mixer: Allow the soundblaster mixer to modify the DOSBox mixer.
#      oplmode: Type of OPL emulation. On 'auto' the mode is determined by sblaster type. All OPL modes are Adlib-compatible, except for 'cms'.
#               Possible values: auto, cms, opl2, dualopl2, opl3, none, hardware
#      oplrate: Sample rate of OPL music emulation.
#               Possible values: 22050, 44100, 48000, 32000, 16000, 11025, 8000
# hardwarebase: base address of the real hardware soundblaster:
#               210,220,230,240,250,260,280

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

[gus]
#      gus: Enable the Gravis Ultrasound emulation.
#  gusrate: Sample rate of Ultrasound emulation.
#           Possible values: 22050, 44100, 48000, 32000, 16000, 11025, 8000
#  gusbase: The IO addresses of the Gravis Ultrasound.
#           Possible values: 220, 240, 260, 280, 2a0, 2c0, 2e0, 300
#     irq1: The first IRQ number of the Gravis Ultrasound. (Same IRQs are OK.)
#           Possible values: 3, 5, 7, 9, 10, 11, 12
#     irq2: The second IRQ number of the Gravis Ultrasound. (Same IRQs are OK.)
#           Possible values: 3, 5, 7, 9, 10, 11, 12
#     dma1: The first DMA addresses of the Gravis Ultrasound. (Same DMAs are OK.)
#           Possible values: 0, 1, 3, 5, 6, 7
#     dma2: The second DMA addresses of the Gravis Ultrasound. (Same DMAs are OK.)
#           Possible values: 0, 1, 3, 5, 6, 7
# 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.
#            Possible values: 22050, 44100, 48000, 32000, 16000, 11025, 8000
#     tandy: Enable Tandy Sound System emulation. For 'auto', emulation is present only if machine is set to 'tandy'.
#            Possible values: auto, on, off
# tandyrate: Sample rate of the Tandy 3-Voice generation.
#            Possible values: 22050, 44100, 48000, 32000, 16000, 11025, 8000
#    disney: Enable Disney Sound Source emulation. (Covox Voice Master and Speech Thing compatible).

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

[joystick]
# joysticktype: Type of joystick to emulate: auto (default), none,
#               2axis (supports two joysticks),
#               4axis (supports one joystick, first joystick used),
#               4axis_2 (supports one joystick, second joystick used),
#               fcs (Thrustmaster), ch (CH Flightstick).
#               none disables joystick emulation.
#               auto chooses emulation depending on real joystick(s).
#               Possible values: auto, 2axis, 4axis, 4axis_2, fcs, ch, none
#        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=2axis
timed=true
autofire=false
swap34=false
buttonwrap=true

[serial]
# serial1: 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).
#                           (realport:COM1 realport:ttyS0).
#          for modem: listenport (optional).
#          for nullmodem: server, rxdelay, txdelay, telnet, usedtr,
#                         transparent, port, inhsocket (all optional).
#          Example: serial1=modem listenport:5000
#          Possible values: dummy, disabled, modem, nullmodem, directserial
# serial2: see serial1
#          Possible values: dummy, disabled, modem, nullmodem, directserial
# serial3: see serial1
#          Possible values: dummy, disabled, modem, nullmodem, directserial
# serial4: see serial1
#          Possible values: dummy, disabled, modem, nullmodem, directserial

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

[printer]
#     printer: Enable printer emulation.
#         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 (default)
#                ps      : Creates Postscript
#                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.
#     docpath: The path where the output files are stored.
#     timeout: (in milliseconds) if nonzero: the time the page will
#              be ejected automatically after when no more data
#              arrives at the printer.

printer=true
dpi=360
width=85
height=110
printoutput=png
multipage=false
docpath=.
timeout=0

[parallel]
# parallel1: parallel1-3 -- set type of device connected to lpt port.
#            Can be:
#               reallpt (direct parallel port passthrough using Porttalk),
#               printer (virtual dot-matrix printer, see [printer] section)
#            Additional parameters must be in the same line in the form of
#            parameter:value.
#              for reallpt:
#                Windows: realbase (the base address of your real parallel port).
#                  Standard ports are 378, 278 and 3BC. The first two can be ECP ports.
#                  PCI add-on cards may use nonstandard ports, look them up in the device manager.
#                  Default: 378
#                  You have to install the PortTalk driver from
#                  http://www.beyondlogic.org/porttalk/porttalk.htm first.
#                Linux: realport (the parallel port device i.e. /dev/parport0).
#              for printer:
#                printer still has it's own configuration section above.
# parallel2: see parallel1
# parallel3: see parallel1

parallel1=disabled
parallel2=disabled
parallel3=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

[ne2000]
#  ne2000: Enable Ethernet passthrough. Requires [Win]Pcap.
# nicbase: The base address of the NE2000 board.
#  nicirq: The interrupt it uses. Note serial2 uses IRQ3 as default.
# macaddr: The physical address the emulator will use on your network.
#          If you have multiple DOSBoxes running on your network,
#          this has to be changed for each. AC:DE:48 is an address range reserved for
#          private use, so modify the last three number blocks.
#          I.e. AC:DE:48:88:99:AB.
# realnic: Specifies which of your network interfaces is used.
#          Write 'list' here to see the list of devices in the
#          Status Window. Then make your choice and put either the
#          interface number (2 or something) or a part of your adapters
#          name, e.g. VIA here.

ne2000=true
nicbase=300
nicirq=3
macaddr=AC:DE:48:88:99:AA
realnic=list

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

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

#mixer master 30:30
#mixer sb 30:30
#mixer gus d-20
mixer cdaudio 50:50
#mount a "D:\Gry\test\jonny" -t floppy -label DISK1
#mount b "D:\Gry\test\jonny" -t floppy -label DISK2
mount C D:\Emulatory\PC\DOS\DOSBox-0.72\DOSBOXCVSykhwong -freesize 900
mount D D:\Gry

c:
cd..
cd nc
nc.exe



And something one:
when I set timed=true, test cursor jittert, and I can't stop it. When I set timed=false, cursor stands, but when I move joystick to left, cursor goies left, and appears from RIGHT side (?!). And when I move joystick up (cursor goes up, and then appears from DOWN (?!). I can't understand this...
User avatar
OSH
Member
 
Posts: 173
Joined: 2007-10-28 @ 23:34

Re: Games with joystick problems with high cycle counts

Postby h-a-l-9000 » 2008-12-19 @ 14:32

> cycles=fixed #5000

does not look so good
1+1=10
h-a-l-9000
DOSBox Author
 
Posts: 4512
Joined: 2005-2-23 @ 00:14

Re: Games with joystick problems with high cycle counts

Postby OSH » 2008-12-19 @ 14:54

Is too high or ?
User avatar
OSH
Member
 
Posts: 173
Joined: 2007-10-28 @ 23:34

Re: Games with joystick problems with high cycle counts

Postby h-a-l-9000 » 2008-12-19 @ 14:59

cycles=fixed 5000
not #5000
1+1=10
h-a-l-9000
DOSBox Author
 
Posts: 4512
Joined: 2005-2-23 @ 00:14

Re: Games with joystick problems with high cycle counts

Postby OSH » 2008-12-19 @ 18:23

But removing "#" doesn't help. Why in version, compiled by rcblanke joystick is properly calibrated, and in your newest build - not ? Even when I set very high cycles (above 38000) everything works. But this version is 0.65. Your version is 0.72...
User avatar
OSH
Member
 
Posts: 173
Joined: 2007-10-28 @ 23:34

Re: Games with joystick problems with high cycle counts

Postby h-a-l-9000 » 2008-12-19 @ 18:51

Rcblake's build has the patch from Justice, I've made my changes later. Might be the 'RANGE' thing which is different for these two sources. Also could be some sort of regression.
1+1=10
h-a-l-9000
DOSBox Author
 
Posts: 4512
Joined: 2005-2-23 @ 00:14

Re: Games with joystick problems with high cycle counts

Postby OSH » 2008-12-19 @ 21:33

Ok, but what next? I'm not a programmer to simply compile source of gulikoza'a CVS version of 0.72 with the patch of Justice...
User avatar
OSH
Member
 
Posts: 173
Joined: 2007-10-28 @ 23:34

Re: Games with joystick problems with high cycle counts

Postby h-a-l-9000 » 2008-12-20 @ 02:46

We'd need a developer who has the game and is willing to do some debugging...
1+1=10
h-a-l-9000
DOSBox Author
 
Posts: 4512
Joined: 2005-2-23 @ 00:14

Re: Games with joystick problems with high cycle counts

Postby rcblanke » 2008-12-21 @ 17:17

For me, Flying Corps Gold is playable using an USB joypad on DOSBox v0.72 when using timed emulation, with fixed cycles (auto cycles make calibration very hard). cycles=60000 work well here, 5000 is really WAY too slow, I really don't understand why you had that configured OSH?

But I can confirm the fact that calibration is truly rock-solid using the older DOSBox build OSH was talking about, when comparing that to more recent builds where the joystick continuously jumps a bit.

So I was wondering; as it seems that Justice's patch made in into CVS way back in January 2007, whatever happened to HAL's timer2 patch? Was is ever committed into CVS? Is the patch still available for download (as I couldn't find it anywhere)?
User avatar
rcblanke
Oldbie
 
Posts: 1308
Joined: 2005-4-01 @ 09:44
Location: Round 42

Re: Games with joystick problems with high cycle counts

Postby h-a-l-9000 » 2008-12-21 @ 17:30

Yes, the timer2 patch has been accepted into CVS.

Maybe change the OHMS in joystick.cpp and see if it makes a difference?
1+1=10
h-a-l-9000
DOSBox Author
 
Posts: 4512
Joined: 2005-2-23 @ 00:14

Re: Games with joystick problems with high cycle counts

Postby rcblanke » 2008-12-21 @ 21:40

Ah, ok. I tried a couple of different values, ranging from 30.000 to 2.000.000 without much success unfortunately. Even rolling back joystick.cpp to the 0.65 version and reapplying justice's patch didn't work, so it appears to be something else. Could the change in sdl_mapper.cpp from 07/22/06
implement different joystick querying, reduce polling intervall (thanks hal for the ideas)
be related? I tried to undefine REDUCE_JOYSTICK_POLLING in video.h, but that broke compilation. It seems that line 2219 in sdl_mapper.cpp contains an old variable 'numsticks' , which I think should be 'mapper.sticks.num' ?! That fix makes it compile but crashes DOSBox in the game's joystick calibration screen :disapproving: .
User avatar
rcblanke
Oldbie
 
Posts: 1308
Joined: 2005-4-01 @ 09:44
Location: Round 42

Re: Games with joystick problems with high cycle counts

Postby wd » 2008-12-21 @ 22:01

The different joystick polling stuff is quite old, the old code should really not be used.

Check out GFX_Events() and reduce the interval there if you think the delay
between two joystick queries might be too large, though it's unlikely to have
that effect.
wd
DOSBox Author
 
Posts: 10818
Joined: 2003-12-03 @ 21:23

Re: Games with joystick problems with high cycle counts

Postby h-a-l-9000 » 2008-12-21 @ 22:08

I doubt this has to do with it as it only changes the speed at which the joystick values are updated.

Does it behave like that with all cores? Are there timer debug messages?
Are the old changelogs availible somewhere?
1+1=10
h-a-l-9000
DOSBox Author
 
Posts: 4512
Joined: 2005-2-23 @ 00:14

PreviousNext

Return to DOSBox Patches

Who is online

Users browsing this forum: No registered users and 1 guest