First post, by dbarton

User metadata
Rank Member

I'm using a music sequencer under DOSbox.

If I set CPU cycles to 6000, it works.
If I set higher CP use goes up, but not much, BUT the tempo slows down a lot. If I set CPU cycles very low, tempo goes slows down a lot.

I'm a bit confused as to why it happens in both directions, and where I want to be for the very best timing.

Also, core= normal ok?

cycles=fixed 6000

Reply 1 of 12, by ih8registrations

User metadata
Rank Oldbie

The higher cycle slow down suggests your system can't handle the load, the lower cycle slow down is too few cycles emulated. Changing core to dynamic will help but it sounds like you don't have a fast machine if it's topping out at a little more than 6k cycles.

Reply 7 of 12, by Qbix

User metadata
Rank DOSBox Author
DOSBox Author

well timing with outside stuff can be tricky. I think if 6000 works the best you should just stick to it and be happy.

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

Reply 9 of 12, by HunterZ

User metadata
Rank l33t++

The cycles setting tells DOSBox how many emulated CPU instructions to (attempt to) process per second. Generally a lower number will make games run as they would on a slower real CPU and a higher number would make them behave as if they were running on a faster real CPU. If you set the cycles value too high, however, your real CPU may not be fast enough to comply, and DOSBox may start sacrificing accurate emulation of things like sound in order to try to keep up.

cycles=max will make DOSBox automatically and continually adjust the cycle count to be as high as it can without starving itself of resources needed to do things other than just CPU emulation.

cycles=max limit somenumber is similar, except that it will not go higher than the specified limit (good for games like Daggerfall that need a good amount of cycles but that get flaky at super high CPU speeds). This option wasn't well documented in DOSBox's readme.txt last time I checked.

The core setting tells DOSBox which method of CPU emulation you'd like it to use. core=normal will emulate every CPU instruction purely in software, which is very stable and portable but can be slow. This setting is recommended for older DOS games because of the greater stability and because they tend to be more sensitive to speed issues.

core=dynamic tells DOSBox to use a technique called dynamic recompilation to try to speed things up, but note that it can cause stability issues in some games and may be supported on some systems. This setting is highly recommended for later DOS games because they tend to be more demanding in terms of CPU requirements.

core=auto will let DOSBox try to choose either normal or dynamic. With this setting DOSBox will generally use normal unless it detects that a game is running in 32-bit protected mode, since many later DOS games work that way.

Reply 11 of 12, by MiniMax

User metadata
Rank Moderator

Errors in the dynamic core emulation is usually quite evident (crashes, dumps, ...) and it is much, much faster than normal. So unless you see crashes, use dynamic.

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 12 of 12, by HunterZ

User metadata
Rank l33t++

Yeah, don't get me wrong: the dynamic core is quite stable and fast. If you need a lot of cycles then it's definitely worth trying (I usually try core=dynamic for anything that needs more than 8-10K cycles on core=normal).

Note that you can change the core type and cycle count at the DOSBox command line by typing things like the following as if they were DOS commands:

core dynamic
core normal
core auto
cycles auto
cycles max
cycles 5000

Oh, also I think cycles=auto will use something like a fixed 3000 cycles when the normal core is used, and max cycles when the dynamic core is used. I could be wrong though.