This page is a wiki. Please login or create an account to begin editing.


13 posts / 0 new
Last post
Jatoba's picture
Offline
Joined: 2018 Apr 16
Jaguar Classic on Tiger

So, as some may already know, Mac OS X 10.2.8 Jaguar (and earlier) had a better Classic environment to run traditional Mac OS apps than 10.3.x Panther and 10.4.x Tiger. That being the case, I decided to give bringing 10.2.8 Jaguar's Classic to 10.4.11 Tiger a try. Considering how this was allegedly done with not 10.2 Jaguar, but 10.3 Panther instead, I figured it might as well be worth the attempt.

Following the same instructions that are successfully used to bring Classic to Tiger Server Universal, which is essentially copying "Classic Startup.app" and "Classic.prefPane" to where they belong, "sudo chown -R root:wheel" them and "sudo chmod 4755" on "Classic Startup.app/Contents/Resources/TruBlueEnvironment", I obtained the following results:

The actual Classic preference pane from Jaguar surprisingly runs normally: it's visually different from the one that comes stock with Tiger, so the changes have taken effect. However, after choosing a Mac OS 9.2.2 System Folder to boot via Classic and then clicking "Start", I get an error from which I was simply not able to escape:

The Classic Mac OS ROM file is missing or damaged.

This file is needed to run Classic. Please reinstall your Mac OS X System Software to get a new copy.

Now, that is a bit strange, because this error appears under all of the following scenarios:
- Clean Mac OS 9.2.2 System Folder that has never been used to run Classic before;
- Mac OS 9.2.2 System Folder that had been previously run with Tiger Classic successfully (on Tiger);
- Mac OS 9.2.2 System Folder that had been previously run with Jaguar Classic successfully (on Jaguar);

So it seems this error is not specifically related to the state in which the Mac OS 9 System Folder was in. So at that point, I went looking for where, on the Mac OS X side of things, the "Mac OS ROM file" could be located at, and then see what's up.

It turns out, at least as far as I could see, it's nowhere in the system, except in the files that are contained within the "Classic Startup.app" package. Because it's a package, you can browse around it much like a typical folder. Within the "Resources" folder, we have a file named "MacOSROM". So to get around the issue, I then also tried the following:

- Use Jaguar Classic, but replace its "MacOSROM" file with the one from Tiger's, then "sudo chown -R root:wheel" it again;
- Use Tiger Classic, but replace "TruBlueEnvironment" (it's in the same folder) with Jaguar's, then "sudo chown -R root:wheel" and "sudo chmod 4755" it again.

Neither of the two attempts changed that outcome. I also considered putting both "MacOSROM" and "TruBlueEnvironment" from Jaguar's Classic into Tiger's, but we already had seen the pure Jaguar Classic (which contains these two) had already the same error message thrown.

So... Ideas? For the record, when I restore Tiger's Classic to Tiger using the same methods, Classic resumes working perfectly (well, as "perfect" as Panther/Tiger's crippled Classic can get). No rebooting required, even. (I also attempted rebooting in the cases above to see if the error would go away. It didn't.)

As a reminder, with this, the highest end G5s, like the 2.5GHz Quad G5 and the 2.7GHz Dual G5, would finally be able to run Mac OS software from the 80s and 90s basically as smoothly, or nearly as smoothly, as natively-booted traditional Mac OS.

Comments

Duality's picture
Offline
Joined: 2014 Mar 1

I'll admit that I don't recall how to usefully pick around the Mac OS X kernel or see what files have been modified before Leopard.

Leopard was the last hurrah for Sun co-branded bits in Apple software. One incredibly good contribution was DTrace with kernel observing scripting capabilities, including a very useful set of bundled scripts. With that, you could see exactly when any bit in the file system was being modified in real time, what short lived processes are taking the most resources, and so on.

That detour aside, I only know why Classic mode changed for 10.3. Expose required windows to be rendered as a series of intermediate textures for the GPU to combine into a final, rendered image, rather than a single giant, screen-sized texture, for smooth animations and rearranging. To do this in the classic Mac OS environment, they had to render twice to GPU friendly textures, "double-buffering" the results and making the visual result a tick behind the final rendered state you see from your GPU.

It's possible that the error message is misleading, and there's some component of the new window rendering logic in 10.3+ that's demanding something of 10.2 Classic that it doesn't have.

Jatoba's picture
Offline
Joined: 2018 Apr 16

It's possible that the error message is misleading, and there's some component of the new window rendering logic in 10.3+ that's demanding something of 10.2 Classic that it doesn't have.

Possible. And it could very well be a showstopper, like in your example. I never knew Expose was the canonical reason for the change, and what people really meant with "double-buffered"; That was interesting to learn about with your input.

For the record, I also just tried 10.3.9 Panther's Classic on Tiger, and while I did not have any error message thrown at me, and Classic did start booting Mac OS 9, it silently halts and cancels the process in the middle, for some reason. It's like a crash that closes the Blue Box, but not the Classic prefPane. So even for Panther, it seems like I'm still missing something in the steps I'm taking above, again assuming someone else indeed was able to pull it off. Wish the uploader had elaborated on the steps.

However, of course, even if I get it going with Panther Classic, that doesn't necessarily mean it would advance progress for the same with Jaguar. In any case, the search and investigation continue...

Jatoba's picture
Offline
Joined: 2018 Apr 16

Incidentally, below is the Console.app feedback on the Panther Classic crash:

melomac's picture
Offline
Joined: 2018 Feb 26

Hey, that's a very interesting story.

I initially thought you ran into a data fork / resource fork copy issue but you seem well aware of macOS and its internals.

I unfortunately don't have the hardware to repro your setup, but I'd love to have a look at the binary that loads the MacOSROM file and the MacOSROM file, should you please be kind enough to provide me a direct download link.

✌️

Jatoba's picture
Offline
Joined: 2018 Apr 16

Sure, that would be Classic itself: "Classic Startup.app" is the app in question, which also contains the MacOSROM file, in the same path as TruBlueEnvironment.

Here are all 3 relevant Classic versions: http://s000.tinyupload.com/?file_id=26252153482016273270 (10.2.8 Jaguar, 10.3.9 Panther, 10.4.11 Tiger)

The 7Zip file was generated using Keka (the only PPC version), but should decompress with essentially any 7Zip unzipper under Mac OS X.

If you are willing to, it's possible to somewhat replicate my setup via QEMU and installing Jaguar/Panther/Tiger, too. (Of course, doing so in itself takes some time.)

SkyCapt's picture
Online
Joined: 2017 Jan 11

I been studying this for years. Haven't considered Expose before. I'd gladly make Classic excluded from Expose if that'd make it work right in Panther+Tiger. But I checked and, Classic windows are excluded from Expose in Tiger Server, checked Tiger Client too excludes Classic windows in the Expose view. Rewind:

Classic environment, *even in Jaguar, takes a monumental performance hit, due to the implementation of Protective Memory which is not present in native OS9. An example is SimCity3000, it takes almost half an hour to open a large saved city, once open it plays sorta ok, takes over two minutes to complete "quiting", it does this and plays the same bad way in both Jaguar and Tiger. SimCity3000 obviously makes inefficient use of malloc/dealloc calls, probably every gametile opens/closes/changes with at least one malloc call. Most Classic software however does not become vulnerable to this precise showstopper.

Next, there are two types of software that will play smooth already in Tiger Classic env. First, if the magnitude of graphical manipulation is so relatively small, it will play smooth, on fast G4s, no examples necessary. Big problem however, when the graphics cpu activity is heavy, is not only very low frame rate (in Panther+Tiger not in Jaguar) but also very low reception and coordination of Input (keys etc.) such that programs end up unplayable separate/in addition to unwatchable.

But the best Classic software already runs smooth in Tiger Classic env, and these have some of the heaviest loads, and it might be what they have in common is GPU rendering not CPU. Star Wars Pod Racer, Deus Ex, Asteroids 2000, Tanaka, Vortex Next Generation, MDK? Some of these games have "menus" which stutter over poor input reception, and then play smooth in-game during 3D immersion.

In no way does every 3D game play smooth in Tiger, but there are some real winners not hindered.

Anyway, there's a big likelihood that what slows down the Classic env in Panther+Tiger relative to Jaguar isn't in the Classic software, but elsewhere in the OS in a place like display compositing.

Jatoba's picture
Offline
Joined: 2018 Apr 16

For the record, I just tried running Jaguar Classic with Tiger's "TruBlueEnvironment", and it doesn't complain about the Mac OS ROM anymore, and at least tries to start Classic. It hangs on a white screen before it can, though.

I also tested running Tiger Classic using Jaguar Classic's prefPane. Works normally (normally-crippled).

@SkyCapt I think you are right about 3D rendering done on CPU vs. GPU. For example, I always bring up Hexen for the sake of simplicity when discussing things, and I, too, am convinced Hexen is so broken on Panther+Tiger, but OS-9-ish-butter-smooth in Jaguar, because it renders all the 3D graphics on the CPU side. In fact, when it displays the logos of the companies behind the game before it properly starts, that part is considerably smooth.

Did you ever try putting Panther's Classic on Tiger, @SkyCapt?

I will stress out, though, the fact that even things that run "smoothly" under Panther+Tiger Classic are still not smooth enough. Any app. Even a text editor. You can see that by clicking on the menu items at the top, which causes one of them to be highlighted with a blue background color, and then you keep moving the mouse along the options. Do this on Jaguar, and it's seemingly as smooth as or nearly as smooth as doing so in native OS 9, but it's chopped-ish on Panther and Tiger. There is no escaping deprivation in Panther+Tiger Classic, no matter the app. If it moves, if it blinks, it's already compromised.

SkyCapt's picture
Online
Joined: 2017 Jan 11

No, I didn't try the Panther files in Tiger. I already knew the divide, on my personal hardware, is 10.2.8 or older: good, and 10.3.0 thru 10.4.11 the last version: bad.

Check this out though: if it's an issue with or involving the OS routines for Compositing, then take notice that Apple also hail mary'd a change in Compositing across OS X versions 10.2.6 to 10.2.8

Maybe using the 10.2.6 Classic files will work where the 10.2.8 do not? I'm not sure where 10.2.7 falls along in this story, I promise to look into it soon. Example: SimCity4 on CD v1.0 created before 10.2.7/10.2.8 - works right in 10.2.6 but skewers the Compositing when played on 10.2.8 or higher including 10.3

Note that 10.2.6 doesn't have USB2. 10.2.7 does have USB2 and if SimCity4 CD plays then 10.2.7 will become an interesting OS to fool with.

Jatoba's picture
Offline
Joined: 2018 Apr 16

Interesting, I will give 10.2.6 a try on my spare MDD (the only machine I have that is 10.2.6-capable -- even my other MDD can't boot any Jaguar anymore because it's Sonnet-upgraded with a single 1.8GHz 7447A, which Sonnet at least says won't work, and the minis can only semi-properly use 10.2.8, and only glitchily-boot into 10.2.7, but I'm not sure about 10.2.6).

I guess one could also always try putting 10.2.6 and 10.2.7 Classic versions on 10.2.8 for testing, too...

I will grab SimCity 4 to test against, too. One thing I do know is that Apple's changelog included in the 10.2.8 Combo Update package does mention changes were made to Classic, which checks out with your side of the tale.

I'll also poke at all those TruBlueEnvironment and MacOSROM versions with a nice hex editor to see if I can find out anything interesting...

SkyCapt's picture
Online
Joined: 2017 Jan 11

I'm already on it... running 10.2.7 and 10.2.6 on my MirrorDoor2003.

The diff is in 10.2.6 vs 10.2.7 because 10.2.8 and 10.2.7 behave similar whereas 10.2.6 has differences in Compositing. Another good test case is the game "Ghosts of Time". It works in OS9, Classicmode, and OSX 10.2 but fails in OSX 10.3+ due to what looks like broken Compositing. It by-no-coincidence performs noticibly faster in 10.2.6 slower in 10.2.7/10.2.8 especially the horizontal scrolling of the game map. Note there are 2 version of 10.2.7/10.2.8 they have G4 vs G5 editions, I'm testing both kinds.

Now I tried SimCity4 and it's backward from how it was last time I tried it. I installed from CD (2 disk set) without updating (because the updater fixes this problem) but today it is playing correctly in 10.4 10.3 10.2.8 10.2.7 but unplayably slow in 10.2.6 - this is unmistakably the reverse than before. It has played right in 10.2.6 (the latest OS it was built for when they made it) then it had compositing errors in 10.2.8 and became unplayably slow in 10.3+

Totally backwards SimCity4. My hardware has changed since those last tests. Probably my screen aspect ratio went from 1920x1080 to 1920x1200 today, and, I am using more than 2GB RAM now in my G4 which I've already concluded has caused changes in compositing.

So 10.2.6 plays Ghosts of Time with smoother map scrolling than 10.2.8 - maybe 10.2.6 can be a better gaming rig than 10.2.8 on a real G4. My G4 however is actually an undercover G5 and I need 10.2.7/10.2.8 to have my G5 related acceleration.

My hardware is different than yours, I'm essentially G5 or better (AGP 8x/16x plus DDR RAM enabled). I don't get any significant slowdown in the menubar when using Classicmode. I also catch "waves" of smooth Classicmode gaming in Panther+Tiger. I think Compositing is the right concern. Ghosts of Time (GoT) doesn't play in Panther+Tiger (OSX mode) but when I tick the force-Classicmode button in GoT fileinfo, then it plays.

I played for about two whole minutes in OSX 10.3.5 until it gradually became rougher and so rough as to be unplayable. Two minutes where is had played smooth for me. Then some kind of internal timing had brokendown worsening over more time.

I feel like I could get perfectly smooth Classicmode in Tiger by having MirrorDoor2003 hardware, overclocked, just throwing brute force physical increases at the problem, plus maybe modifying the Classic System Folder is all, not necessarily modifying the Classic OS software.

SkyCapt's picture
Online
Joined: 2017 Jan 11

Oops, Ghosts of Time probably scrolls the same in your 10.2.6 and your 10.2.8 because it's only the G5 version of 10.2.8 which slows here, even though the G5 version draws things 2x faster than the G4 10.2.8 apparently only "polite" software will draw faster, and some stuff like GoT which violates compositing drawing for OSX 10.3 ends up slower in G5 10.2.8 than in 10.2.6

Turns out GoT has a family of titles that behave the same, because they're all created by the same "engine" called Coldstone by Ambrosia/Beenox. "The Decider" and "Cosmic Memory" are 2 more of these games that run OSX native in 10.2 but not 10.3+ and then can run in Classicmode too. Cosmic Memory is so simple graphically I can play it in Tiger Classicmode with almost zero slowdown nor input interference. GoT looks like a great piece to test the Classicmode, since I already seen it's capable of smooth (intervals so far) and it launches quickly.

Jatoba's picture
Offline
Joined: 2018 Apr 16

I will put this task down for now so I can work better on other things, but if there is one thing I learned from all this is: we need a complete Classic Archive Collection. I'm talking getting every accursed binary in existence of Classic and Blue Box, from Rhapsody DP1 till 10.4.11 Server PPC, zipped up and made available here, for anyone else loony like me. Might as well even setup QEMU images of each and every one of those Classic-containing OS X iterations, in pristine and untouched forms, for investigation beyond the app itself, as some hinted (i.e. other related system components), with all variations included (Client, Server, G5, non-G5, Public Beta, Developer Preview etc.).

But that will be madness for another day. Now I will leave my PowerBook G4 as the silent, beautiful, sleek, sleepless server it was always destined to be.