Using Voodoo 2 emulation with PCem / 86Box

I’ve never had a Voodoo card before, I had was the Sierra Screamin’3D Rendition Verite 1000, which came with it’s own drivers that set the whole thing up. As always work got in the way of fun, and I missed out on the whole Direct X thing on Windows 95, as I was busy working on MS SQL on Windows NT, where hardware OpenGL cards were the way to go.

But thanks to emulation we can re-live the pain!

I setup emulation for an Intel Advanced/EV board, with an Intel Pentium Overdrive CPU at 166Mhz (my machine can handle that easily with the new builds!), 32MB of RAM, and a Phoenix S3 Trio32 video card set as Fast VLB/PCI.  After that toogle Voodoo Graphics, set the card model to the Voodoo2 , and bump up the RAM to 4MB, because we live in the future!

Also I should mention, that much like real hardware, it is best to go into the BIOS (F1 to enter BIOS setup) and make some changes, disable the built in audio card, serial and parallel ports.

And make sure the board is set to use the ICU with Windows 95 Plug & Play support.

To go from old, I installed Windows 95 from virtual floppies.  Its the oldest/smallest retail version of Windows 95, so I know if it’ll work here, it’ll work on much newer versions.

For me the S3 card is picked up by Windows on it’s own.  Now for the fun with better graphics.  As a test I’m using Wipeout 2097 / XL for the PC.  Although the game comes with Direct X version 3, I have found that the video emulation has major issues with the updated Direct X v3 drivers.  I did find that the Direct X 7a drivers work fine, along with the last reference  driver for Windows 9x.  Now I know you’ll want to know where to find ancient software like this, and it’s all on this great site falconfly.de

In my case, I found it easier to install Direct X 7, then expand the Voodoo driver, and in the hardware manager, find the ‘unknown’ device, and point it to the voodoo driver, reboot and you should be now set!

You can verify the installation by running dxdiag

3dfxV2.drv

One thing of note, is that all 3D accelerated options are “full screen”.  Which I don’t think really matters as by default PCem runs in a window.  If you are multitasking odds are you aren’t trying to multitask with Windows 95….

Wipeout XL

And I have to say, it looks GREAT!

PCem v12 released

PCem v12 released. Changes from v11 :

  • New machines added – AMI 386DX, MR 386DX
  • New graphics cards – Plantronics ColorPlus, Wyse WY-700, Obsidian SB50, Voodoo 2
  • CPU optimisations – up to 50% speedup seen
  • 3DFX optimisations
  • Improved joystick emulation – analogue joystick up to 8 buttons, CH Flightstick Pro, ThrustMaster FCS, SideWinder pad(s)
  • Mouse can be selected between serial, PS/2, and IntelliMouse
  • Basic 286/386 prefetch emulation – 286 & 386 performance much closer to real systems
  • Improved CGA/PCjr/Tandy composite emulation
  • Various bug fixes

Thanks to Battler, leilei, John Elliott, Mahod, basic2004 and ecksemmess for contributions towards this release.

http://pcem-emulator.co.uk/

As requested, PCem v11 with networking

via SLiRP

via SLiRP

injecting networking was no more difficult than it was in version 10.  It’s only a few changes to pc.c, if you look at the USENETWORKING define you’ll see them.  The best notes are on the forum.

I haven’t changed or improved anything it still requires manual configuration.

Downloads are available on my site as pcem_v11_networking.7z.  You’ll have to defeat the password protection, as always.  I included the source, it ought to be trivial to rebuild.

*For anyone using an old version the ‘nvr’ directory is missing, so PC-em is unable to create new non volatile ram save files, meaning you always loose your BIOS settings.  Sorry I missed that one.

PCem v11 released

I haven’t had time to follow it, but great news!

PCem v11 released. Changes from v10.1 :

  • New machines added – Tandy 1000HX, Tandy 1000SL/2, Award 286 clone, IBM PS/1 model 2121
  • New graphics card – Hercules InColor
  • 3DFX recompiler – 2-4x speedup over previous emulation
  • Added Cyrix 6×86 emulation
  • Some optimisations to dynamic recompiler – typically around 10-15% improvement over v10, more when MMX used
  • Fixed broken 8088/8086 timing
  • Fixes to Mach64 and ViRGE 2D blitters
  • XT machines can now have less than 640kb RAM
  • Added IBM PS/1 audio card emulation
  • Added Adlib Gold surround module emulation
  • Fixes to PCjr/Tandy PSG emulation
  • GUS now in stereo
  • Numerous FDC changes – more drive types, FIFO emulation, better support of XDF images, better FDI support
  • CD-ROM changes – CD-ROM IDE channel now configurable, improved disc change handling, better volume control support
  • Now directly supports .ISO format for CD-ROM emulation
  • Fixed crash when using Direct3D output on Intel HD graphics
  • Various other fixes

Thanks to Battler, SA1988, leilei, Greatpsycho, John Elliott, RichardG867, ecksemmess and cooprocks123e for contributions towards this release.

Downloads are available for Windows & Linux.

PCem version 10 is officially released!

 

  • New machines – AMI XT clone, DTK XT clone, VTech Laser Turbo XT, VTech Laser XT3, Phoenix XT clone, Juko XT clone, IBM PS/1 model 2011, Compaq Deskpro 386, DTK 386SX clone, Phoenix 386 clone, Intel Premiere/PCI, Intel Advanced/EV
  • New graphics cards – IBM VGA, 3DFX Voodoo Graphics
  • Experimental dynamic recompiler – up to 3x speedup
  • Pentium and Pentium MMX emulation
  • CPU fixes – fixed issues in Unreal, Half-Life, Final Fantasy VII, Little Big Adventure 2, Windows 9x setup, Coherent, BeOS and others
  • Improved FDC emulation – more accurate, supports FDI images, supports 1.2MB 5.25″ floppy drive emulation, supports write protect correctly
  • Internal timer improvements, fixes sound in some games (eg Lion King)
  • Added support for up to 4 IDE hard drives
  • MIDI OUT code now handles sysex commands correctly
  • CD-ROM code now no longer crashes Windows 9x when CD-ROM drive empty
  • Fixes to ViRGE, S3 Vision series, ATI Mach64 and OAK OTI-067 cards
  • Various other fixes/changes

Official download links:

PCem v10 for Windows
PCem v10 for Linux

 

I personally prefer PCem over DOSBox at the moment, as PCem runs the actual BIOS code, so it feels more like an actual vintage PC.  PCem does need a significantly more powerful machine to push it thought.

 

PCem networking update to build 335

Well after extensive testing of various CFLAGS settings it turns out that “-O2 -flto -ffast-math -mfpmath=387” gives the best overall settings for PCem.

So yeah me and leileilol went through a dozen+ iterations to arrive at this fun conclusion.

So I’ve only included 2 executables, a debug and the -O2 build.

You can download it here.

I haven’t made any changes to the networking code, and even with a LOT of fighting got OS/2 Warp 3.0 Connect to install.

Gopher

Gopher

Plus I fixed my gopher!

**EDIT

I made a mistake, and built both exe’s as debug.  I updated the archive, those who downloaded it, will want to do so again!

PCem networking update to build 334

You can download the build here: PCem-build-334-pcap-slirp.7z

This includes more different core binaries, and mostly fixes the NE2000 to no longer panic and fault out when something dumb tries to probe it, by writing the wrong values in the wrong places.

For the curious build 334 is right here.  We didn’t make the feature cut for version 10, so hopefully it’ll make 11.  I’ll provide an unofficial build once v10 is announced, along with hopefully better networking back end modules, expanding things from pcap & SLiRP.

More progress on PCem and networking

SLiRP tcp redirects now working

SLiRP tcp redirects now working

PCem is different from other emulators in that when it starts up, reboots it’ll tear itself apart, and re-kick all the components.  Normally other emulators do this once, and as a result I never noticed that slirp_exit doesn’t actually purge the socket state.  And calling the socket teardown call causes a mbuf explosion in the code.  Sadly GDB is pretty useless trying to debug it, since it’s claiming all the structure members don’t exist.  Very strange.

Luckily I could duplicate the debug feature to go though current socket redirects, and close the sockets on the Windows side with a simple closesocket.

In this version I’ve setup the following TCP port redirects:

ExternalPORT    Internal Port
42322                 22
42323                 23
42380                 80
42443                 443

I still haven’t messed with the rc file, so there is no GUI config, instead you have to do it in the text files.  I have some notes on the whole thing on the pcem forum here.

Download the executables and source here:

http://vpsland.superglobalmegacorp.com/install/pcem/PCem-0657320820ab-pcap-slirp.7z

And for those interested, the diff against mainline 328 is here.

Adding SLiRP to PCem

So PCem is an incredible emulator for the IBM PC platform.  One thing that has been missing, and really missed has been networking.  So a while ago, SA1988 came up with a patch that incorporated the BOCHS ne2k.cc into PCem.

So as requested, I took the copy of SLiRP I’ve used in SIMH, Cockatrice and Previous, and got it working in PCem.

Telnet

Telnet from MS-DOS

This has to be one of the easier ports since PCem doesn’t use threads.  But yes, it appears to work, although I haven’t done any major testing.

For those who want to experiment, here is a binary/source blob of the project.  Right now we are just past the OMG it compiled phase to OMG it SENT and RECEIVED data phase.

If anyone wants to play, the NE2000 is set to 0x300 IRQ 10.

And you need to manually add the following to your pcem.cfg file:

netinterface = 1
netcard = 1

And you should be good to go. I think.

QuakeWorld

QuakeWorld

And yes, it’ll run QuakeWorld!