joncampbell123 / dosbox-x

DOSBox-X fork of the DOSBox project
GNU General Public License v2.0
2.55k stars 372 forks source link

Windows 98 games too slow or not working #2032

Open FreeMediaKids opened 3 years ago

FreeMediaKids commented 3 years ago

One of the great things that DOSBox-X can do is to basically emulate Windows 9x operating systems and their applications. Here is hoping that I have found a solution with adequate documentation for that purpose, especially if the software cannot run on newer Windows versions, and my hopes neither are quite satisfactory nor have fully disappeared. Having followed the guide to installing Windows 98 Second Edition, I can confirm that emulating Windows 98 SE is practical. However, I am having trouble getting games requiring 3D acceleration to be playable.

Specifically, I tested two games, one for my youngest sister and one for myself and my curiosity. The first game I tested was for my sister, Monsters, Inc. Scream Team, which she has been wanting to play since I upgraded what used to be my laptop before I gave it to her permanently from Windows Vista to Windows 10. Windows Vista could run the title, but not Windows 10, and my sister has since used a newer, better laptop that also uses Windows 10. Now talking about my own problems, I learned that I could not install Monsters, Inc. Scream Team on virtual Windows 98 because the virtual system did not meet the game's system requirements. Specifically, my system speed was far too slow (which I will discuss when I talk about the second game), and my emulated graphics card was substandard. It had only 3 megabytes of memory instead of the needed 8, and also lacked 3D acceleration. This is strange, because I set my dosbox.conf value for vmemsize to 32, and I have 3Dfx Voodoo graphics enabled. I can even view settings for those graphics in the Display Properties window, with Enable Direct3D Hardware Acceleration checked.

Out of ideas, I decided to test a different game to see whether I would have any success or similar difficulties. The second game that I tested was Star Wars: Episode I – The Phantom Menace, which in my unpublished IMDb review is a rather mediocre game that is enjoyable like the film anyway. I managed to install the game virtually, and to my relief, I discovered that the game will run. The graphics even look better there than if I were running it directly on Windows 10, which surprisingly works. Sadly, I did have problems with its horrendously sluggish performance, and one of its own system requirements indeed states that the game needs far more cycles than the number available. This is about time that I tell you that the problem with speed is complicated. This game requires a Pentium 200 or better, and 70,000 cycles is far to few to meet the requirement. Worse, although I could trick it into detecting more cycles by adding more cycles to DOSBox, it causes the entire emulation to lag. Regardless of the number of cycles, The Phantom Menace will always run unsurprisingly slow. My last hope would be to emulate a much better CPU, and the highest I could get without causing any problems is the Pentium MMX.

I figured that attempting to emulate a much better CPU is futile, but the fact that I could get one of the two games running inspired hope that running Windows 98 games that will not work on Windows 10 could work. My last hope was to take this issue to GitHub. I am hoping to get answers about what I am missing, what I may have done wrong, or anything. If you are curious in what my DOSBox configuration looks like, here is the attachment containing all of what I used to run it except for the AUTOEXEC code, used to mount image files and run Windows 98:

dosbox-x.zip

rderooy commented 3 years ago

@FreeMediaKids your right, DOSBox-X is often sluggish running more demanding titles in Win9x. Part of that is due to the emulation core being used. If the dynamic core would work with Win9x, it should work much better, but unfortunately the Dynamic core right now is only good for getting General Protection Faults and the like with Win9x.

I also experienced the issue where if you give it too much cycles that Win9x just becomes laggy. I'm not sure what causes this, but I suspect some kind of interplay between the CPU and GPU emulation.

As to vmemsize, setting it to more than 8MB is pointless. And even that value is already more than the Win9x s3trio64 drivers will use. The s3trio64 drivers will only support up to 4MB. The only way to use 8MB is to use VESA drivers, which are even slower.

The only solution to this issue would be if DOSBox-X where to emulate a later model video card with support for more memory. There is some code (not merged) to emulate the slightly later s3virge card, but that only helps to support the (rarely used) S3D 3D video acceleration that a handful of games support as the drivers still limit it to 4MB.

rderooy commented 3 years ago

@FreeMediaKids Could you try the latest code from github? A fix was merged to the dynamic core which may allow it to run more stable for Win98. It would be great to get some feedback.

FreeMediaKids commented 3 years ago

Sorry that I did not respond to your comment in a timely manner. I saw it in my email account's inbox, but did not feel like dealing with it right away, at least until now. Anyway, yes, I will take a look at the code from GitHub. I am guessing that I need to download the latest version of DOSBox-X, is that right? If so, I will do just that. Otherwise, please tell me how to test the code. I will come back with the results later this week, and hopefully then can I impress my sister with this solution, which looks as if it may really work.

rderooy commented 3 years ago

No, the code has not been merged yet. It is in a separate PR. @Wengier may have an build for Windows with it enabled, otherwise you need to build it yourself for now. Hopefully this can be merged before the next release.

Wengier commented 3 years ago

I think @koolkdev has uploaded 32-bit and 64-bit Windows builds for the code recently:

FreeMediaKids commented 3 years ago

I apologize for not posting an update within a week as I said I would, for I had completely forgotten about it.

Anyway, looking at the latest version of DOSBox-X, v0.83.10, and my earlier posts, I feel that I forgot to mention one of the important details of my troubles. I am indeed using a VESA driver, which is installed right inside the image file containing Windows 98 and its contents, yet even in the current version of DOSBox-X, it still reports the video memory to be at 2.5 megabytes. I also realized that v0.83.7, the version I tested that led me to post this issue, did have an option for the dynamic_x86 core, of which I was previously unaware. I will say that earlier today, before learning about the latest version, I looked at v0.83.9 and used the dynamic_x86 setting to test The Phantom Menace, and while the graphics were still stuttery, it was at least twice as smooth as it was before, making the game at least somewhat playable. Testing v0.83.10 using dynamic_x86, I feel that it is important to note that Scream Team still fails to install for one of the reasons being that 70,000 cycles is below the requirement, though that can be worked around by increasing the number of cycles of DOSBox-X. I will do some more testing of the current version later to see how much better The Phantom Menace will run.

rderooy commented 3 years ago

@FreeMediaKids dynamic_x86 should not be enabled with Win9x unless your running 0.83.10. There have been numerous fixes made by @koolkdev to make it run better. But even with the fixes, there are still a few corner cases where you may still have to use core=normal for it to run stable. The installation instructions have been updated accordingly.

You can also set cycles=max (or just leave the default cycles=auto) which should improve matters.

FreeMediaKids commented 3 years ago

Well, this is unfortunate. The Phantom Menace is no longer playable, as it seems impossible to get past the level loading screen, and switching between the two values for core made practically no difference. This was testing the latest version of DOSBox-X, v0.83.10. I was hoping to see there be a change, and version would be saying, "Here is the change. You asked for it, and I delivered." Do you ever have it where you ask for something and then get it, but become unsure what it is exactly that you were asking for? In this case, that basically describes me. Of course, this is not meant to criticize the project, but rather point out the regression I noticed when updating the emulator.

Looking at the cycles parameter, I used both the auto and max settings and found that the emulator would still run slowly on the main menu of The Phantom Menace, and the auto setting would make the DOSBox-X determine that it needs 3,000 cycles per millisecond—that, needless to say, is nightmarishly slow. The max value was obviously better, but just not good enough to help get past the level loading screen. As an interesting note, setting the parameter to max will lead to the system checker of Monsters, Inc. Scream Team declaring that my emulated computer speed is still far short of the 200-thousand-megahertz-per-second requirement, at 70,000 cycles per millisecond. The same applies to the system checker for The Phantom Menace. However, just as before, that can easily be circumvented by incrementing the number of cycles.

I have run out of ideas as to what I could be doing wrong or what I could be missing, so once again, I have come here to report the above results, and I hope to get some answers or solutions.