Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Win95 FAQ Part 12 of 14: MS-DOS Games

0 views
Skip to first unread message

gor...@intouch.bc.ca

unread,
Nov 8, 1998, 3:00:00 AM11/8/98
to
Archive-name: windows/win95/faq/part12
Last-Modified: 1998/11/08
Posting-Frequency: Every two months
URL: http://www.orca.bc.ca/win95/faq12.htm

Subject: 12. Running MS-DOS games

* 12.1. Why you should run your DOS games in DOS sessions under
Windows 95
+ 12.1.1. I only get 540 KB free and I have no CONFIG.SYS or
AUTOEXEC.BAT. Are you lying to me?
* 12.2. Quick lesson on PIF files
+ 12.2.1. I installed DirectX 3 and now my DOS games won't
run in a DOS session... why?
* 12.3. How do I use upper memory in Windows 95?
+ 12.3.1. Why you should run your DOS games in DOS sessions
under Windows 95
* 12.4. How do I use EMS or XMS memory?
* 12.5. How do I use DPMI memory and DPMI programs?
+ 12.5.1. How come Strike Commander (tm) doesn't work? (And
other VCPI games)
* 12.6. How do I speed up this DOS game?
* 12.7. Why do DOS programs "stutter" in a DOS session?
* 12.8. Why shouldn't I use EMM386 (or other memory manager)?
+ 12.8.1. Why you should run your DOS games in DOS sessions
under Windows 95
* 12.9. How do I set up network games?
+ 12.9.1. How to set up your network card
+ 12.9.2. Why you should run your DOS games in DOS sessions
under Windows 95
* 12.10. Why do you keep telling me to run my games under Win95?
+ 12.10.1. Why you should run your DOS games in DOS
sessions under Windows 95
* 12.11. But this game won't run under Win95! How can I get it
to work?
+ 12.11.1. How you can do away with "boot disks" forever!
+ 12.11.2. How to make network games work without running
Win95
+ 12.11.3. When (and when not) to use Intel's Configuration
Manager in Single Mode DOS

------------------------------

Subject: 12.1. Why you should run your DOS games in DOS sessions under Windows 95

The big speech... here it comes. Skip it if you don't want to read
about it.

Win95 does all of its hardware control, its network control, its
drivers, its protocols, whatever, in '386 protected mode, so none of
its software really needs to run in conventional memory, or in upper
memory. You get minimum 604 KB free conventional memory, no matter
what hardware or drivers for Win95 you have loaded.

In addition to this, all of the MS-DOS software interrupts, hardware
interrupts, function hooks, etc operate in protected mode also. This
means that DOS programs can still work, even though there aren't any
DOS drivers handling the hooks. Win95 only provides a basic real mode
driver set for basic compatibility (HIMEM, SETVER, IFSHLP, COMMAND);
everything else runs outside of the DOS session. The protected mode
hooks are re-entrant, so multiple DOS sessions can use them. They are
also faster in many cases; CD-ROM performance greatly improves, for
example.

Win95 will also virtualize I/O spaces, if you enable that feature in a
DOS program's properties. This is similar to what Windows NT does, but
not as robust. This will prevent the programs from accessing the
hardware directly. If a "protected" DOS program crashes, it won't take
the rest of the system with it. "Protection" will, however, add to the
CPU overhead and may cause a program not to run at all, which is why
it's an option.

NOTE: Don't confuse this direct hardware access with the DirectX API;
DirectX programs run in protected Win32 sessions by design, and access
the hardware through an absolute minimal API. DirectX has nothing to
do with DOS programs accessing hardware directly.

So, with all this benefit, and not eating any conventional memory and
still providing a nice compatible DOS box, you should run your DOS
games in DOS sessions in Win95.

So, hide or delete your CONFIG.SYS, remove all TSRs in AUTOEXEC.BAT,
get Win95 drivers for all your hardware, and read on.

* 12.1.1. I only get 540 KB free and I have no CONFIG.SYS or
AUTOEXEC.BAT. Are you lying to me?

Well, no. It's just when I wrote this thing it was before 4.00.950B
(OSR2). Apparently, 950B likes to add a few things to MSDOS.SYS: now a
configuration file instead of program code.

The [options] section of MSDOS.SYS has these and probably many more
switches that affect conventional memory usage:

[Options]
DoubleBuffer=
Drvspace=
Dblspace=

These cause extra modules, named DBLBUF and DRVSPACE, to load into
conventional memory.

DBLBUF is a module that uses conventional memory as a read and write
buffer for old devices like 8-bit SCSI adapters. If you use IDE or PCI
SCSI you can remove DBLBUF=1 entirely or set it to zero.

DRVSPACE is the real mode DriveSpace driver, needed to read compressed
drives in real mode. Normally, this loads as part of the MSDOS module
so Win95 can unload it when it starts, but this switch loads
DRVSPACE.SYS explicitly, wether you use compressed drives ir not.
Removing these lines causes the system to load DRVSPACE.SYS as part of
MSDOS (as it should) ONLY if compressed drives exist.

To properly edit MSDOS.SYS, go to a DOS prompt and type:

attrib -h -s -r msdos.sys

You may then edit this file with Notepad or EDIT.COM or whatever.

------------------------------

Subject: 12.2. Quick lesson on PIF files

You can maximize a game's performance in a DOS session by fine tuning
its session settings. Right-click on the executable that runs the game
(batch file, COM file, EXE file, whatever), and select Properties. Hit
the "Program" tab and, if necessary, change the command line used to
run the game. Insert any parameters it needs, change the working
directory, whatever. Hit the "Advanced" button and quickly see the
"Prevent MS-DOS programs from detecting Windows" switch. If a game
claims it can't run under Windows, turn on this switch. Now the game
will think it's running in DOS. Hah, sucker! Ignore the rest of this
window for now; hopefully we won't have to resort to the rest of the
stuff here.

Have a look at the other tabs; I'll cover them each in turn with each
question.

Win95 will save the changes you make here in a PIF file, or a
"Shortcut to MS-DOS Program". Whenever you bring up properties for the
program, it will bring up its PIF file.

* 12.2.1. I installed DirectX 3 and now my DOS games won't run in a
DOS session. Why?

I had a whole e-mail quoted to me regarding this... here it is in its
entirety:

From: Paul Grillo <PGr...@Relay.com>
Subject: Re: your FAQ

Thanks for the tip on the PIF fix. Attached is a note confirming that the
problem stems from directx3, and a kind of rude fix to it. In case you're
interested.

I found the solution to this problem. (thanks to Stefano
dac...@mbox.vol.it)

> ------------------------------------------------------------------
> Sure, no problem. It's a rather odd fix, but it works, got it from
> some DirectX dude at Microsoft. Find the file VJOYD.VXD from DirectX2
> or your original Win95 disks/CD/whatever and overwrite the one that
> DirectX3 installs. This will fix the problem. The Microsoft guy says
> you sacrifice some accuracy with the joystick, but I don't see any
> difference.
> ------------------------------------------------------------------

To extract VJOYD.VXD from Win95 cd use command "extract.exe /a /l
c:\windows\system win95_02.cab vjoyd.vxd"

(I put this solution on the news writing an answer to my question, but
in a few days that answer has been expired)

REMEMBER TO REBOOT AFTER SUBSTITUTING THAT FILE.

Bye

Basically, the VJOYD.VXD from DirectX 3 is broken. When you replace it
with the VJOYD from DirectX 2 or earlier, or even with the original
Win95 version, Win95 will let you run DOS games in a DOS session
again. Strange. DirectX 5 corrects this problem too.

------------------------------

Subject: 12.3. How do I use upper memory?

There's no such thing as "upper memory" under Win95, and no need to
worry about it either, if you have Win95 drivers for all your stuff
and run your games under Win95.

I cover how to use upper memory in Single Mode MS-DOS later.

------------------------------

Subject: 12.4. How do I use EMS or XMS memory?

In the program's properties, hit the Memory tab. You'll notice the
defaults for these settings is "Auto"; this means Win95 will allocate
memory as needed for this program to run. This can cause a lot of
extra disk swapping, so you should find out what the game needs (Check
its manual) and set the EMS and XMS values to match.

Example 1: TIE Fighter (TM) (Floppy version) by LucasArts: TIE
requires 2048 KB of EMS memory (Expanded memory), so set the EMS value
to 2048 KB, and set XMS to None.

Example 2: The Seventh Guest (TM) by Virgin/Trilobyte: T7G needs 4096
KB of XMS memory (Extended memory), so set its XMS setting to 4096 and
its EMS setting to None.

Example 3: DOOM (TM) by id Software: DOOM doesn't use EMS or XMS
memory, so set both of these values to None. Leave the DPMI (DOS
protected mode interface) memory on Auto.

Notice that all games use one kind of extra memory or another, but not
two at once. You can always set one and turn the other off. This will
ease Win95's job of guessing what the game needs. Of course, if a game
runs completely in conventional memory, turn off everything BUT
conventional memory.

Oh yeah, that "Protected" switch is in here; turn it on if you think
this program causes Win95 to crash. That switch can make LINKS 386
operate in a DOS session where it otherwise wouldn't, for example.

------------------------------

Subject: 12.5. How do I use DPMI memory and DPMI programs?

If a program doesn't claim to use XMS or EMS memory, chances are it's
a protected mode program. DOOM by id and Descent (TM) by InterPlay are
two such programs.

In this program's Memory tab, turn off EMS and XMS memory, and set
DPMI to whatever the game requires, or leave it on Auto. Auto mode
will make Win95 allocate more RAM to the game as needed, but it will
cause extra disk swapping. Set this to the game's recommended value,
no higher than your total memory actually installed in the computer.

If the game does its own disk swapping (like Descent does), fix the
DPMI memory value to the game's recommended value and don't use Auto.
There's no point in having Win95 and the game do swapping at the same
time.

Some DPMI games do bizarre stuff and may crash Win95 the first time
running. If so, turn on the "Protected" switch just below the
conventional memory setting. This will virtualize most of the I/O
space in that game's DOS session. Turning on "Prevent DOS programs
from detecting Windows" might help too. If the game does hardware
detection, try by-passing it and specifying your video and sound card
properties in the game manually. Descent has troubles detecting sound
cards in a DOS session, for example.

* 12.5.1. How come Strike Commander (TM) doesn't work? (And other
VCPI programs)

Breidavick Gistiheimili told me that Strike Commander wouldn't run in
a DOS Session because it couldn't communicate with the "EMS Memory
Manager". In reality, SC requires VCPI services. Win95 DOS sessions
don't support VCPI unfortunately. EMM386 normally provides VCPI
services in real mode.

If you run a game in a DOS session and get a mysterious message to the
effect that it wants EMM386, it's most likely that it wants VCPI
memory. You will have to resort to the Single mode DOS techniques
below to make the game run.

------------------------------

Subject: 12.6. How do I speed up this DOS game?

The first time you try running a "standard" DOS game, it will try to
run in a window on your desktop. Type ALT-ENTER to switch it to a full
screen.

To fix that setting in place, bring up the program's properties, hit
the Screen tab, and set the screen usage to Full Screen. There are
other screen controls here:

"Fast ROM Emulation" works if the video driver emulates its BIOS in
protected mode. Newest drivers from Cirrus Logic, for example, emulate
their BIOSes in 32-bit DLLs. Try turning it off if you can't get VESA
games working, though a properly written Win95 video driver should
emulate VESA video modes in protected mode.

"Dynamic memory allocation" specifies that Win95 will grab system
memory as needed to update the game's display. Try turning this off if
the display jitters, or the hard drive goes crazy as the display
updates itself.

------------------------------

Subject: 12.7. Why do DOS programs "stutter" in a DOS session?

DOOM will freeze on occasion, precisely four times, then continue on
normally.

John Goulden enlightened me on this behaviour. I used to think it had
something to do with the VGA BIOS emulation or such stuff, but when I
saw games like System Shock still animating some parts while freezing
during game play, I thought it had to be something else. John says:

This will also happen if network drivers are loaded but no network is
connected. If the 'stutter' occurs four times in rapid succession, at
intervals of precisely ten minutes, it is very likely Windows 95 polling
for the nonexistent network. Remove the unneeded drivers and the problem
goes away.

I wondered why this didn't happen on a non-networked machine.

Specifically, it seems to happen on systems that run Client for
NetWare. The pausing might come from the client trying to reconnect to
disconnected servers, or otherwise polling for a nonexistent network
or server. Likewise, this pausing won't happen if you only have the
Dial-up Adapter and TCP/IP protocol (No clients or services).

This problem only seems to happen with DPMI games; particularly those
that use the DOS4GW extender.

------------------------------

Subject: 12.8. Why shouldn't I use EMM386 (or other memory manager)?

A real mode memory manager will interfere with Win95's protected mode
memory management. If you include NOEMS in CONFIG.SYS, for example, no
program in a DOS session can access EMS memory. Delete or hide your
CONFIG.SYS and let Win95 provide EMS memory in DOS sessions.

For those of you who paid money for Quarterdeck's QEMM 8.0: SUCKERS!
Take it back and get your money back!

------------------------------

Subject: 12.9. How do I set up network games?

Most of the net games use IPX protocol to communicate between several
game computers on the network. Microsoft's "IPX/SPX Compatible"
protocol works with these games.

First, install your network card and load a Win95 driver for it. Then
add IPX/SPX Protocol. If all you're doing is playing network games you
can remove all other network components, such as Clients. If
necessary, read up on How to set up a network card.

Then run the game in its DOS session and set it up to use the network.
It should find the hooks needed to use IPX and play normally, as
though you loaded an IPX.COM driver. If not, complain to the game
maker.

A handful of old network games use NetBIOS to work with more networks.
In this case you can use any network protocol, such as NetBEUI, to
link the machines together. All the real mode NetBIOS hooks are there
as well. To use both IPX and NetBIOS games, use the IPX/SPX protocol
and turn on "I want to run NetBIOS over IPX" in IPX/SPX Properties.

Modem games work by using the COM devices from DOS, so you don't need
to use Dial-up Networking just to play a game over the modem. If,
however, the game doesn't support modeming but DOES support IPX
networking, you could try using IPX over the dial-up adapter, and rig
one computer as a dial-up server. This is a bit extreme, as IPX over
PPP is quite slow.

------------------------------

Subject: 12.10. Why do you keep telling me to run my games under Win95?

I thought I answered this question at the top of this section! So
you can save yourself the hassles of multi-config, loading crap high,
running out of conventional memory, boot disks, whatever!

Win95 can do DOS's jobs a lot quicker and with a lot less overhead.
Yes, everything works. Yes, CD-ROM drives work. Yes, network cards
work. Yes, you can do EMS/XMS/DPMI. Yes, sound cards work. Get a sound
card that has Win95 drivers for it. Yes, visit Advanced Gravis for
a Win95 driver. Or just trade your hardware in for hardware with Win95
support.

------------------------------

Subject: 12.11. But this game won't run under Win95! How can I get it to work?

OK ok ok ok... so you can't live without playing this game (Star Trek:
A Final Unity (TM) by Spectrum Holobyte falls into this category) and
you can't run it in a DOS session. Or maybe you can; bring up the
program's properties, hit the Program tab, hit "Advanced", and hit
"Prevent DOS programs from detecting Windows". This'll make the
"smarty" programs run in a DOS session.

If that didn't work, read on.

* 12.11.1. How to make a special DOS setup for this program that
won't run in Win95:

1. Bring up properties for its start-up program again, and hit the
Program tab.
2. Hit Advanced, and turn on MS-DOS mode. This will make Win95 exit
before running the game. And since all the Win95 CD-ROM, netcard,
etc drivers will unload when you run this:
3. Hit "Specify a new MS-DOS Configuration". This will activate the
two text boxes below, so you can feed a special CONFIG.SYS and
AUTOEXEC.BAT for this program.
4. Fill in the empty spaces for CONFIG.SYS and AUTOEXEC.BAT. All your
normal DOS drivers, memory managers, and TSRs should go in here.
You can also copy from your CONFIG.DOS, and press CTRL-V (Paste)
to copy it here; that does work. Be sure you use Win95 versions of
HIMEM and EMM386, and other DOS version-specific drivers.
5. Save your changes and run the program. You should get a warning
that you're about to enter MS-DOS mode. If you OK it, Win95 will
re-boot your computer and run your special CONFIG.SYS and
AUTOEXEC.BAT. When you exit the game, the system will re-boot into
Win95 using the original DOS configuration (which should be
empty!)

With this setup, you can specify a DOS configuration just for this
program without polluting your Win95 configuration. You will have to
load all the real mode components necessary to make your hardware
work, including real mode sound card and CD-ROM drivers. Net cards
I'll cover later.

Some useful stuff to include in these files are:
* HIMEM.SYS and EMM386.EXE: Yes, definitely include that in the
special CONFIG.SYS you make. Use the Win95 versions.
* SMARTDRV.EXE: You should have real mode disk caching here. Again,
Win95 comes with its own version of SmartDrive.
* PAUSE: Put this at the end of the special AUTOEXEC.BAT so you can
prevent your game from starting right away. You can always press
CTRL-C here and fine-tune the CONFIG.SYS and AUTOEXEC.BAT, and
re-boot to try again. When Win95 finally re-starts, it will copy
your changes to the program's properties. Now that's cool.
* LOCK C: If you want to run Windows 3.1 this way (Yes it is
possible) and you want 32-bit disk/file access, include this
command. LOCK will allow direct disk writes by DOS programs,
including Win 3.1's memory manager and FASTDISK drivers. Some DOS
games that do disk swapping may also require this command. Use
this with caution; it also allows viruses to do their dirty work.
* MSCDEX.EXE: If you use a real mode CD-ROM driver, you obviously
need MSCDEX to mount it and run it. Load MSCDEX before SmartDrive,
so SmartDrive can cache CD-ROM reads. Save on conventional memory
this way by specifying /M:4 (minimal buffer size). Win95 keeps
this file in %WINDIR%\COMMAND.
* MOUSE.EXE or MOUSE.COM: A must for mouse driven games.

Keep in mind, that "MS-DOS Mode", or "Single Mode MS-DOS" is MS-DOS
through and through, except for the LOCK and the direct disk access
inhibitor. You can use all the MS-DOS memory management techniques you
learned back in DOS 5.0. You might also want to disable the
DriveSpace Driver if you use disk compression, and you can't get
enough conventional memory. You could also try running MEMMAKER, if
you're really desperate, in this configuration; add the old DOS
utilities from OTHER\OLDMSDOS, then while you're in a special DOS
configuration, run MEMMAKER. As long as you keep Win95 booting in this
mode (where it says "Win95 is now starting your MS-DOS based
program..."); the changes that MEMMAKER makes will only affect this
particular configuration; it won't affect your normal Win95
configuration.

This above technique replaces boot disks and Multi-Boot entirely! If
you use PIF files that specify MS-DOS mode, you can throw away all
your boot disks and your multi-boot CONFIG.SYS file. You can even set
up multiple PIFs for the same program; re-name the PIF file that the
Properties sheet made up, and bring up Properties for the program
again; it will build a new PIF file.

Another cool trick is to look for an "Exit to DOS" file in your Win95
directory, bring up its properties, and set it up to use a new MS-DOS
configuration. This way, whenever you "Restart computer in MS-DOS
mode", you will run this configuration. Real handy for running a bunch
of games without having to make a special configuration for each. In
this mode, type EXIT or WIN to return to Win95. You can also edit the
custom startup files within DOS mode; when Win95 finally re-starts, it
will update the .PIF file with the changes you made.

* 12.11.2. How to make network games work without running Win95

Network Setup not only installs protected mode drivers for your card;
it also installs NDIS 2.0 real mode components specifically for MS-DOS
mode. You will need to install a Win95 net card driver and IPX/SPX
Protocol for this to work.

In the special AUTOEXEC.BAT you make for MS-DOS mode games, include:

NET START NWLINK

This will load a real mode protocol manager, net card driver, and
Microsoft's IPX compatible protocol. You can go a step further and
type NET START NWREDIR to load a NETX compatible client for NetWare,
if you need to get to your games stored on the NetWare server, and you
installed Microsoft's Client for NetWare. These components will try to
load high if you have upper memory available. Put this at the
beginning of the special AUTOEXEC.BAT, to improve upper memory usage.

* 12.11.3. When (and when not) to use Intel's Configuration Manager
in Single Mode DOS

If you use a PnP sound card and you want to use Single Mode DOS to run
those pesky games, you may need to add this line in your special
config.sys:

device=C:\(whatever)\dwmcfg.sys

This line performs the same PnP magic that Win95 does when it normally
starts. You MUST include it BEFORE EMM386.EXE so it doesn't interfere
with EMS memory and upper memory. Don't worry; it doesn't stay in
memory so no need to load it high.

However, systems with PnP BIOSes may NOT need this. Depending on how
well your PnP BIOS configures your cards, you can get away with just
loading your normal sound card drivers (SB16.SYS and CTMMSYS.SYS for
example) and it will use the I/O, IRQ, and DMA settings you chose in
Win95's Device Manager. This works because the BIOS and Win95 store
this config info in the NVRAM on your system board.

So, for PnP sound cards in Single mode DOS, you CAN use DWMCFG but
load it BEFORE HIMEM.SYS and EMM386.EXE. Use it only if you HAVE to;
Non-PnP systems will need it, but most PnP systems will not.

--
==============================================================================
= I am Gordon of Winterpeg. Junk mail is futile. Post MakeMoneyFast =
= Find out why: http://spam.abuse.net/spam/ Or eat pink meat from a can =
= World's best computer: http://www.amiga.de/ they're both the same =
= Windows 95 FAQ: http://www.orca.bc.ca/win95/ http://ga.to/mmf/ =
==============================================================================


0 new messages