schellingb / dosbox-pure

DOSBox Pure is a new fork of DOSBox built for RetroArch/Libretro aiming for simplicity and ease of use.
GNU General Public License v2.0
731 stars 61 forks source link

More cycles on guest OS = capped speed? #484

Open Xbox-Series-X-User opened 3 months ago

Xbox-Series-X-User commented 3 months ago

I'm running Windows 98 SE (issue is still there when not running anything just the core by itself) and it seems anything passed 300mhz gets limited.( 1.2 ghz athelon goes ~7-15fps, Pentium III 600mhz goes ~30) I can use the fast forward function on retroarch to maintain 60+ fps (200+ unlimited fast forward speed) but if it can reach a stable 60 with fast forward on, why isn't it by default? Also I have been unable to figure out how to get networking to work on the latest nightly build of retroarch (Xbox only issue?) but the performance is what I'm curious about. Thanks for the awesome user friendly core. I hope you keep up the amazing work and have a great day.

Xbox-Series-X-User commented 3 months ago

(Without fast forward) 17105752408506445437488547688045 Sorry if the pictures are a bit blurry taking screenshots in retroarch doesn't show the performance information (With fast forward enabled) 17105757492611591037223643810163 I noticed while taking these photos that the cycle count drops to 10000 instead of 1000000 when fast forwarding. That is what is causing the speed increases I presume.

(Side note) While in the start menu it seems 13400 cycles gives me 100% speed, while sitting in the desktop of Windows 98 SE I can go up to 240000 cycles and fast forwarding lowers it to 30000

schellingb commented 3 months ago

Once you ask DOSBox to emulate more cycles than your host system can manage to calculate in real-time, things will get very bad. So if you see "Speed: 10%" this basically means you are trying to emulate 10 times more the CPU cycles than the host system can handle.

During fast forwarding, the emulated cycles are set to a fixed rate. 10000 while in real mode and 30000 while in protected mode. Protected mode is a different operational mode supported fully by Intel 386 and newer CPUs. Most DOS games made after 1993 or so use this, and so do all Windows since 3.1. While fast forwarding, I chose those fixed cycle counts because it gave the best results with a few tests I did. If one fast forwards with too many emulated cycles, an older game might take a long time to actually draw a frame because so much time is spent emulating the CPU essentially doing nothing. The goal of fast forwarding certainly isn't to make the cycles number go high, it is to make an emulated game run as fast as possible. For most DOS games this means keeping the count low but ignore the frequency of the emulated monitor and just let it run and draw frames as fast as possible.

Xbox-Series-X-User commented 3 months ago

Thanks for your response. Another question though with the networking ne2000 tcp/ip is it possible to play games with dedicated servers or connect to the lan for ftp so i can stop just putting everything into iso's to add applications for example? And if it is possible, after configuring the irq to 10 and I/o address range to 300 - 31f (or is that irq and I/o range i have set incorrect?) what else would i need to do to ensure connectivity? Or is it not possible without Npcap ( which I'm guessing is the problem ) maybe retroarch passes the Internet connectivity somehow which is how the net play works?

schellingb commented 1 month ago

DOSBox Pure's networking (Modem, IPX and NE2000 Ethernet) is limited between multiple instances of DOSBox Pure running in RetroArch connected via RetroArch's NetPlay. There is no connectivity to anywhere else like the actual internet.