WinDooM on SoftPC, on SheepShaver

So I was hammering out something with SheepShaver (more on that later!) and I thought a quick test of just how fast SheepShaver is vs a real PowerMAC would be interesting.  So I was playing with my old copy of SoftPC, which is 68000 based, but There were PowerPC versions, years ago when I bought a G4 to run OS X to only find out that it wasn’t supported (the dark days of OS X Server 1.0, before the 10.0 public beta) I used to run Windows NT 4.0 on SoftPC on MacOS 8.6.  Ugh, dark times indeed!

So with some luck, I got SoftPC 3.0 up and running on MacOS 7.5.3 using SheepShaver for Windows. Then I noticed that unlike SoftPC for the 68000, SoftPC for the PowerPC emulates a 486!  So how does DooM run?  A little slow, it’s kind of dream like.

But since there is Windows and a 32bit processor, I thought this would be a great time to load up Win32s, Video for Windows, WinG, and WinDooM!

WinDoom on SoftPC
WinDoom on SoftPC

And much to my amazement it runs!  And I was further impressed that there is a shim sound driver, and it works!

So I made a quick video to compare DooM for Windows vs DooM for MS-DOS on this setup.

Yes it’s pointless, but I kinda think it’s really cool.

As a bonus, here is E1M1 under MacOS 8.0.  The MIDI support in 8.0 is MUCH more stronger than 7.5.3!  And I should add, it actually feels faster on 8.0 than 7.5.3

SheepShaver with pcap support

It "works", just incredibly slowly
It “works”, just incredibly slowly

so I got it to “work” on OS X….. well 10.6 in VMWare. I have no idea if this means it will work on your setup.

  • If AppleTalk packets get passed early in the boot stage, it will crash.
  • If JIT is enabled, it will crash
  • Performance is horrible, I’m getting 150k/sec on my LAN, Basilisk II with no JIT blows this thing away.
Honestly I feel kind of hesitant releasing this, but I know it was desired, and I guess it’ll help someone somewhere being able to have an easier conversation… So I’m going to upload my source tree, including binaries built with GCC 4.0 & 4.2 with either O2 or Os flags. I’m not sure which is more stable/faster…So here is my source tree. Sorry you still have to deal with the changing password thing, but cancel it, and it’ll tell you the password.Other lessons learned… SheepShaver’s segfault model only works when the CPU thread is the main thread. Even though you “can” stuff the CPU into a subordinate thread, it doesn’t play nice once it segfaults, it’ll just spin waiting for something that clearly isn’t going to happen.In config.h I added in USEGLOBALvideo as a way for main to call the screen update to end the vast majority of pool leakage. I also added SHEEPSHAVER_CURSOR to enable the hardware cursor. I was having some issues installing OS 8.x when the ‘hand’ was drumming the fingers waiting for the OS to install it crashed many times, while disabling the hardware cursor made it play nicer. Maybe it’s my setup, I’m not sure.

Also in this version I don’t read .sheepshaver_prefs but rather sheepshaver_prefs in the current working directory. I didn’t want to trash any other prefs. I have to test again but I think this should work on 10.10 … As I found out the hard way x86_64 binaries can no longer mess with the zero page, so this is a 32bit only build, but I was running it with my SLiRP fixes ok on my macbook air.

This hasn’t been extensively tested. I hate to even call it tested, I just copied a few MB of stuff over an NT server running AppleTalk,a nd viewed some flash video with Internet Explorer 5.1 …. I’m sure there are PLENTY of things broken. JIT should work with these binaries (Quake 1 is quite playable), but DOOM crashes hard (isn’t it a 68k binary?). DOOM runs ok on Basilisk II so does it matter?

If you want speed, JIT + SLiRP is the way to go. Since this is basically the same as the version I was using with BasiliskII I think it’s more stable than the generic version as I could at least run all kinds of programs with some of my fixes vs the ‘stock’ github version.

I should add that I’ve been primarily testing with that PowerMac 9500 v1 ROM, along with MacOS 8.6. I found 8.0 and 8.1 too unstable, 7.x & 9.0.4 uninteresting.

To get around the early crashing while booting 8.6, I rigged it to drop the first 30 packets. I’ve successfully booted 10/10 times, so I’m almost OK with that. I’d rather know when the OS is ok, and go with that, but I’m not sure. I thought about a timer, and say ignore the network for the first 30 seconds, and maybe that is the better way to go. When you launch this you’ll see some message updating about packets and “wait for 30->” and a number… once it reads “wait for 30->30” , the message will no longer update, and it’ll start to forward packets into the machine. You probably will have to disable and re-enable AppleTalk from the chooser to see the network (or I had to). You may have to get creative to generate the needed packets on your network to get it over 30, as those are packets received. Broadcast packets work too, so maybe you can work with that… As long as Sheep Shaver isn’t alone something should be looking for other devices.

Phase one on a SheepShaver rebuild complete

SheepShaver on Linux
SheepShaver on Linux

Only because people were asking for it.  The first thing I did for Basilisk II was to get it building on Linux, so here we are.  I only tweaked the config process to let me build it with GCC 4.7.2 .

So this will be in the same effort of removing features, and trying to place in my SDL drivers, network and SCSI stuff.

Im starting with SheepShaver v2.2, which is pretty old.  But 700kb compressed is a good starting point.  As you can see it boots MacOS 8.0 which is also good enough for me.

The other questions will be, can this build under Windows with MinGW configured like this, and can it build with OS X.  It looks like all the stuff is there so this may be kind of easy. I hope.

Also SheepShaver does something funky with it’s memory space, it does some direct mapping to the user area.  I’ll have to see if I can disable that, performance be damned (well I turned off JIT as it won’t compile with 4.7 either) so this won’t be fast, but I’m just patching stuff up, not re-implementing the wheel here.

Sheepshaver

SheepShaver on Windows
SheepShaver on Windows

I was hoping for this to be a full featured review but alas there are a few major issues to prevent wide spread use of this emulator…

First you really need access to a Power Macintosh of some kind to use this. You’ll need a ROM and a version of the OS that isn’t for free on Apple’s site. Right now I’m using my 7.6.1 CD to run stuff, and it works great. Honestly its way better than the real deal.. Unless you are running something CPU intensive… Like SIMH on MiNT (all 68000 code) on Sheepshaver (PowerPC emulator)… it can be quirky at times.

However let me say if you do have MacOS 7.6 – 9 you’ll love Sheepshaver. If you feel left out from the PowerPC to Intel transition and feel you need this old clunker around to run some 68000 apps or even PowerPC system 7-9 applications that are not carbon compatible, sheepshaver is freaking AWESOME.

I’m still running Vista x86_64 on my laptop where I do most of my work, so for me I needed to download Sheepshaver. Now it does mention it can run MacOS 7.5.2 however the copy on apple’s site is a massive disk image… So you’ll need a Mac to extract it… Yeah I know.  I did make an ISO image to help those who need/want it.

I haven’t tried it, however I do know that 7.5.2 did *NOT* work on my 5400. The good news is that the disk images work between MiniVmac & Sheepshaver. This has saved my sanity (perhaps yours as well!) This does mean that you can also use HFVExplorer to move files in/out of Sheepshaver. A word of caution, the SLiRP networking causes my setup to crash… I really don’t know if it’s Vista 64, and I’m not in the mood to test within Virtual PC… emulating within an emulator is a recipe for disaster.

Another thing you’ll need is the GTK+ runtime for the gui configuration… I found mine by googling the term “gtk-2.12.9-win32-2.exe” … For some reason sourceforge seems to have issues at the moment with its projects unless you know exactly what you are looking for.

That being said I love sheepshaver. I run it full screen at my laptops native resolution (1280×800) and with the sound on, and it FEELS like a Macintosh Laptop. Even my 1.8Ghz laptop feels snappier than the 120Mhz PowerPC.. But from the Sheepshaver site, they do say to expect to run at 1/8th the speed.. So my laptop “feels” like it’s 225Mhz. A SCREAMER! Of course this would be horrible for people expecting to run photoshop & friends.

There is no doubt about it, Sheepshaver is great for running old games and applications.

A few tips though. Turn off Virtual memory in Sheepshaver. There is no need for it, as it’s far better to allow Sheepshaver to just have more memory.. In this day & age odds are you can easily allow it to have 64 – 256 megabytes. While you are unable to turn off the disk cache, you should tune it down to 64kb. Although the CPU isn’t much faster than many of the Power Mac’s, the disk IO of a modern computer far exceeds it. Most computers are actually IO bound, so running older systems with faster IO gives the appearance of them running substantially faster. It’s only nested emulation that brings it out how slow it is.

I’ve also found that older version of the OS support more software, and run better.  That is 7.5.3, 7.6, 8.0 and 8.1.  8.5, 8.6 and 9.0 have more PowerPC hooks in them, and SheepShaver hooks the 68000 code to do it’s paravirtualization (it doesn’t emulate any hardware), and the more older tied to the 68000 code tend to be more stable.

That being said, running Mathematica, SoftPC, and Photoshop would not be a “good idea” if you are expecting faster performance. But at the same time, it’s great being able to run old software that you’ve purchased throughout the years.