old-www/HOWTO/Linux-Gamers-HOWTO/x809.html

642 lines
18 KiB
HTML
Raw Permalink Blame History

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML
><HEAD
><TITLE
>Emulation and Virtual Machines</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
REL="HOME"
TITLE="The Linux Gamers' HOWTO"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Miscellaneous Problems"
HREF="x762.html"><LINK
REL="NEXT"
TITLE="Interpreters"
HREF="interpreters.html"></HEAD
><BODY
CLASS="SECT1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The Linux Gamers' HOWTO</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x762.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="interpreters.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="AEN809"
></A
>10. Emulation and Virtual Machines</H1
><P
>Linux gets ragged on a lot because we don't have the wealth of games that other platforms
have. Frankly, there's enough games for me, although it would be really nice to have some of the
bleeding edge games and classics like Half-life and Carmageddon. Fortunately, we have more
emulators than you can shake a stick at. Although playing an emulated game is sometimes not quite
as fun as playing it on the native machine, and getting some of the emulators to work well can be
a difficult task, they're here, and there's alot of them!</P
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN812"
></A
>10.1. What is a virtual machine?</H2
><P
><A
NAME="VM"
></A
>A "real computer" provides an operating system many things, including a
CPU, I/O channels, memory, a BIOS to provide low level access to motherboard and I/O
resources, etc. When an operating system wants to write to a hard drive, it communicates
through a device driver that interfaces directly with the hardware device memory.</P
><P
>However, it's possible to give a program all the hardware resources it needs. When it
wants to access a hard drive, give it some memory to write to. When it wants to set an IRQ,
give it some bogus instructions that lets it think it set an IRQ. If you do this correctly,
then in principle, there's no way for the poor application to know whether it's really
accessing hardware or tricked by being given resources which simulate hardware. A virtual
machine is the environment which tricks applications into believing they're running on a real
computer. It provides all the services that a real computer would provide.</P
><P
>VM's were used initially in the 1960's to emulate time shared operating systems, but
these days we use them to run software which was written for foreign operating systems, or
more commonly, an entire operating system. Because of the nature of the VM, the foreign OS
can't tell the difference between operating in a VM or in a "real" machine.</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN818"
></A
>10.2. Apple 8-bit</H2
><P
>All the 8-bit Apple ][ emulators require a copy of the original ROM, for whichever
system you want to emulate, in a file. If you search hard enough, you can find file copies of
the ROMs for the Apple ][, ][+, ][e, ][c and //gs. They are still copyrighted by Apple, and
you can only use them legally if you actually own one of these computers.</P
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN821"
></A
>10.2.1. KEGS</H3
><P
>KEGS is an Apple II emulator written by Kent Dickey <TT
CLASS="EMAIL"
>&#60;<A
HREF="mailto:kentd(at)cup(dot)hp(dot)com"
>kentd(at)cup(dot)hp(dot)com</A
>&#62;</TT
>
which was originally written for HP-UX, but improved and customized for Linux. It runs
under X at any color depth, and supports changeable memory sizes, joysticks, and sound.
KEGS boots all Apple II variants, and supports all of the Apple ]['s graphics modes. I
can't find a working homepage for this application.</P
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN825"
></A
>10.2.2. apple2 and xapple2</H3
><P
>The SVGAlib based <TT
CLASS="FILENAME"
>apple2</TT
> and X based <TT
CLASS="FILENAME"
>xapple2</TT
>
can emulate any Apple ][ variant except for the //gs. The interface is a bit funky, but
usable. Configuration is also a bit funky; this emulator would benefit from an SVGA or X
based configuration tool. It supports the undocumented portion of the 6502 instruction set
which some games rely on. <TT
CLASS="FILENAME"
>apple2</TT
> is currently being maintained by
Michael Deutschmann <TT
CLASS="EMAIL"
>&#60;<A
HREF="mailto:michael(at)talamasca(dot)ocis(dot)net"
>michael(at)talamasca(dot)ocis(dot)net</A
>&#62;</TT
> and seems to be
developed at a slow but constant pace. I don't think this application has a
homepage.</P
></DIV
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN832"
></A
>10.3. DOS</H2
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="DOSEMU"
></A
>10.3.1. <SPAN
CLASS="APPLICATION"
>dosemu</SPAN
></H3
><P
>dosemu &#60;<A
HREF="http://www.dosemu.org"
TARGET="_top"
>http://www.dosemu.org</A
>&#62; is the canonical DOS
emulator on Linux. When you think of DOS, don't think of things like PROCOM PLUS OR OTHER
PROGRA~1 WHICH HAVE SHORT NAMES AND ARE IN ALL CAPS. There are some real classics that were
written for DOS like Carmageddon, Redneck Rampage and Tomb Raider. dosemu can run these.
Unfortunately, it can take alot of effort to get dosemu to work, and of Jan 2002, the sound
code is somewhat broken. Not a big deal when you're trying to run Wordperfect or an old
database application. It's an absolute show stopper for gaming. Getting dosemu to work
well is not easy, but unfortunately, for DOS games it's the best avenue. Good luck. If you
have success using dosemu, I would like to hear from you. </P
></DIV
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN839"
></A
>10.4. Win16</H2
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN841"
></A
>10.4.1. Wabi</H3
><P
><SPAN
CLASS="APPLICATION"
>Wabi</SPAN
> is a commercial Win16 emulator. That is, it'll run
Windows 16-bit applications from a Windows 3.1, Windows 3.11 or Windows for Workgroups
3.11 environment. <SPAN
CLASS="APPLICATION"
>Wabi</SPAN
> was originally created by SCO Unix a
long time ago and then was purchased by Caldera sometime in mid year 2001.</P
><P
>Wabi is fast and does a good job for what it does, although I've heard it said that
wabi for Solaris is more stable than Linux. It might be useful for playing older Win16
games, but there are three problems:</P
><P
></P
><UL
><LI
><P
>You must have a licensed copy of Windows 3.1/3.11 or WfW
3.11.</P
></LI
><LI
><P
>Wabi is awfully expensive for what it does.</P
></LI
><LI
><P
>Wabi doesn't work under 32bpp or 24bpp color.</P
></LI
></UL
><P
>Wabi does NOT do DOS itself, but it looks like it can use a DOS emulator as a
backend for running DOS programs. There was talk about Wabi 3.0 which would've done
Win32 emulation, but AFAIK, this project was shelved indefinitely. I think Wabi will run
under Linux on all architectures (can someone verify this?)</P
></DIV
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="WIN32"
></A
>10.5. Win32</H2
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="WINE"
></A
>10.5.1. <SPAN
CLASS="APPLICATION"
>wine</SPAN
></H3
><P
>Wine &#60;<A
HREF="http://www.winehq.com"
TARGET="_top"
>http://www.winehq.com</A
>&#62;, which bears the GNUish
acronym "Wine Is Not An Emulator" is a non-commercial implementation of the Win32 API.
The reason why it's not an emulator is subtle and not of much interest to most non
computer scientists, so we'll call it an emulator here (it really does run-time
translation of calls to the Win32 API to POSIX/X11 calls). Wine has come a long way, and
is capable of emulating many important programs, which is great news for Linux users who
want this sort of stuff.</P
><P
>Wine does <TT
CLASS="LITERAL"
>not</TT
> provide the DOS API, so you can't use it
to run DOS applications. For that, you should look at dosemu (<A
HREF="x809.html#DOSEMU"
>Section 10.3.1</A
>).
Wine has never been too good at implementing DirectX, although a number of games are known
to work under wine. For gaming you might want to look at winex (<A
HREF="x809.html#WINEX"
>Section 10.5.3</A
>).</P
><P
>In addition to run-time translation of the Win32 API to POSIX/X11 (it runs Windows
applications on Linux), wine also does compile-time tranlation of the Win32 API to
POSIX/X11 (it compiles Windows application source code on Linux). In this sense, wine is
a Windows-to-Linux porting utility. The x86 architecture isn't required, but is
recommended since it allows actual x86 binary execution as well as direct DLL
usage).</P
><P
>You can use wine `with Windows', which means that wine uses libraries that actually
come with Microsoft Windows itself. This is legal only if you own a copy of Windows which
isn't currently being used on a computer. It's said that wine has the best success when
run with Windows. You can also run wine without Windows. The people at <A
HREF="http://www.winehq.com"
TARGET="_top"
>winehq</A
> are writing their own set of libraries called
<TT
CLASS="LITERAL"
>libwine</TT
> which implements the Win32 API with no Microsoft code at
all.</P
><P
><A
NAME="WINELICENSE"
></A
>Wine was originally licenced under the MIT/X11 license, so
it could be used for both commercial and non-commercial purposes. In mid 2002, parts of
wine were re-licensed under the LGPL so that it could only be used for non-commercial
puposes. This presents a problem for companies like Transgaming (<A
HREF="x809.html#WINEX"
>Section 10.5.3</A
>)
and prompted a fork of wine called ReWind (<A
HREF="x809.html#REWIND"
>Section 10.5.2</A
>).</P
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="REWIND"
></A
>10.5.2. <SPAN
CLASS="APPLICATION"
>rewind</SPAN
></H3
><P
>Rewind &#60;<A
HREF="http://rewind.sourceforge.net/"
TARGET="_top"
>http://rewind.sourceforge.net/</A
>&#62; was started by
Eric Pouech (a wine developer) and Ove K<>ven (a winex developer) in response to <A
HREF="x809.html#WINELICENSE"
>wine's license change</A
>). It started out life as a snapshot of
the last version of wine which was completely licensed under the MIT/X11 license. The aim
is to keep rewind MIT/X11 based so that companies like Transgaming can offer wine based
products.</P
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="WINEX"
></A
>10.5.3. <SPAN
CLASS="APPLICATION"
>winex</SPAN
></H3
><P
>Winex is released by a company called Transgaming &#60;<A
HREF="http://www.transgaming.com"
TARGET="_top"
>http://www.transgaming.com</A
>&#62;. The developers take wine (see <A
HREF="x809.html#WINE"
>Section 10.5.1</A
>) and add DirectX / DirectDraw support. Although winex is commercial, they
have an interesting business model.</P
><P
>The end user (you) can download the source code for free. However, for 5 US dollars
per month, you can become a subscriber of Transgaming. Being a subscriber of Transgaming
gives three major benefits:</P
><P
></P
><UL
><LI
><P
>Subscribers can download convenient packaged versions of winex in deb, rpm
or tar.gz format whenever they want, including updates. They have also more functionality
than the publicly available tarball: the latter is an older version which lacks some of
the newest features, like support for copy protected programs.</P
></LI
><LI
><P
>There are monthly polls where subscribed users can take votes on what they
want winex developers to work on. For instance, they can vote for things like "Improve
support for copy protected programs", "Better Installshield support" or "Improve DirectX
8.0 support". As far as I can see, the developers really do listen to the subscriber
polls.</P
></LI
><LI
><P
>The Transgaming website has a few user support forums. On one hand, they
use the most godawful, horrible, confusing, wasteful, moronic format I've ever seen and I
hope to god I never see a forum with a format as bad as Transgaming's. On the other hand,
you can ask for help and the developers are VERY good about getting around to your answer;
their vigilance is quite impressive. Non-subscribers can browse the forums, but only
subscribers can post (and therefore, ask for support).</P
></LI
></UL
><P
>The developers of winex were going to release their Installshield, DirectX and
DirectDraw enhancements to wine "every so often". In return, as wine maturation improved,
the winex developers were going to take the new versions of wine and use them for winex.
However, since the birth of Transgaming, parts of wine have been re-licensed under the
more restrictive GNU LGPL license (<A
HREF="x809.html#WINE"
>Section 10.5.1</A
>). This basically means that
versions of wine that are released past the date of the re-licensing can no longer be used
by winex. Therefore, winex will now be based on rewind (<A
HREF="x809.html#REWIND"
>Section 10.5.2</A
>).</P
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="WIN4LIN"
></A
>10.5.4. Win4Lin</H3
><P
>Win4Lin &#60;<A
HREF="http://www.netraverse.com"
TARGET="_top"
>http://www.netraverse.com</A
>&#62; is a commercial
product by Netraverse. Like vmware (<A
HREF="x809.html#VMWARE"
>Section 10.5.5</A
>) it uses the virtual machine
approach to running Windows applications, so you'll get a big window from which you can
boot Windows and run all kinds of Windows applications. Unlike vmware, Win4Lin only does
Windows 95/98/ME, but this turns out to be better for gamers. Because Win4Lin
concentrates on these operating systems, reports say that it's faster and does a better
job at running games under these operating system than vmware. It's also much cheaper
than vmware. The most recent version of Win4Lin as of June 2003 is 5.0. It suffers
nevertheless from some limitations:</P
><P
></P
><UL
><LI
><P
>It does not support DirectX or DirectDraw, while vmware has "limited"
support for DirectX.</P
></LI
><LI
><P
>It only supports serial and parallel devices. This is important for
people who use USB joysticks. Note that vmware supports up to 2 USB devices.</P
></LI
><LI
><P
>As of June 2003, expect to pay $89.99 without printed docs and $99.99 with
printed docs. In addition, there isn't an evaluation copy available, although you get a
30 day money back guarantee. However, since it's commercial you do get tech support.
vmware is considerably more expensive.</P
></LI
><LI
><P
>Like vmware, you're required to have a licensed copy of Win95 or Win98.
Win4Lin cannot use an existing Windows installation the way wine can.</P
></LI
><LI
><P
>It only runs on x86 architectures.</P
></LI
></UL
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="VMWARE"
></A
>10.5.5. VMWare</H3
><P
><A
HREF="http://www.vmware.com"
TARGET="_top"
><SPAN
CLASS="APPLICATION"
>VMWare</SPAN
></A
> is a
virtual machine that runs multiple operating systems simultaneously on a standard PC:
supported OSes include Microsoft ones, Linux, Novell Netware and FreeBSD. You can among
others use it to run a MS Windows OS and launch your favourite game there. You can even
run another Linux under Linux; useful is you want to test another distro for instance.
Amazing! Now for the bad sides. You should definitely have a good configuration in order
to run it; they claim the minimum is a 500MHz x86 CPU with 128MB RAM, but a faster
processor and at least 256MB RAM seem to be the bare minimum if you want reasonable
performance. Not all Linux distributions are supported: newest RedHat's, Mandrake's and
Suse's are, but you're out of luck if you have an other version and/or distribution (like
Debian). Moreover, <SPAN
CLASS="APPLICATION"
>vmware</SPAN
> has only limited support for DirectX,
and you might not be able to play recent games.</P
><P
>See <A
HREF="http://www.vmware.com"
TARGET="_top"
>http://www.vmware.com</A
> for more information. It's not very
cheap (about 300$ for the Workstation version), but you can get a 30 day evaluation
copy.</P
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN921"
></A
>10.5.6. What should I choose?</H3
><P
>First of all, you should try an emulator. Although some games may work with <A
HREF="x809.html#WINE"
>wine</A
>, you'll probably get the most success with <A
HREF="x809.html#WINEX"
>winex</A
>: its DirectX support is constantly improving. As of version
3.1, the DirectX 8 support is nearly complete, but this may not be the case with older
DirectX versions (are consequently older games).</P
><P
>You might also try a virtual machine like <A
HREF="x809.html#WIN4LIN"
>Win4Lin</A
> or
<A
HREF="x809.html#VMWARE"
>VMWare</A
> instead of an emulator. If your goal is to run
Win95/98/ME applications on Linux, without USB and on the x86 architecture, Win4Lin's cost
and focus on Win95 type OS's make it a better choice than vmware. However, if you must
have USB support or run Linux on a platform other than x86, vmware is your only
option.</P
><P
>Now if your goal is to run Win95 type OS games under Linux, Win4Lin almost seems
better than vmware. The show-stopper is the fact that vmware has limited DirectX support
while Win4Lin has none. This fact alone makes both Win4Lin and vmware unsuitable for most
hardcore gaming purposes. But if you're going to give it a try, you're more likely to
have success with vmware.</P
></DIV
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="x762.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="interpreters.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Miscellaneous Problems</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Interpreters</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>