Banner

Intro

Although my first computer was an Apple II, I never was a Macintosh user, as my family switched afterwards to the PC. But reading the magazines made me familiar with this family of computers and I wanted to add a pre-OSX Macintosh to my collection for some time. The only things that refrained me were that most Macs use esoteric plugs and that I did not have the space.

Until I stumbled on a YouTube video claiming that the Mac Mini G4 was one of the best machines to play pre-2000 games. It is indeed one very last PowerPC machine commercialized by Apple and the community modded Mac OS 9 to support it. The Mini G4 is built around a G4 CPU running at least at 1.25GHz. While modest by 2005 standards, this is more than twice the clock-speed of the first PowerMac G4 which was touted as a “Super-computer” when it was commercialized in 1999.

The machine promised to have enough power to run almost every game from the last century packed in the smallest space possible. This was the model I had to collect!

This article will summarize the PowerPC developments leading to the G4, explain why a 2005 machine should be able to range 20 years worth of Mac games, then present the Mini G4 and explain how to install Mac OS 9. But if you’re only here to see the games, you can jump straight to the end.

The road to the PowerPC G4

Apple must hold the record of different CPU architectures used in the same family of computers. Through the years, “Macs” were powered by the 68000 family, then by PowerPC CPUs, then by Intel’s and finally by ARM based “Apple Silicon”.

The G4, the heart of the Mac Mini, is one of the last PowerPC used in Apple computers.

The AIM alliance

When Motorola introduced its 68000 in 1979, this was the bomb. The CPU was very powerful and prepared a bright future with 32-bit characteristics that promised to give birth to full 32-bit successors. The 68000 was a tremendous success and won a lot of designs, from home computers to UNIX Workstations. But it did not win the most important of all: the IBM PC. Excluded from the huge volumes of IBM and its clones, Motorola CPU division relied on relatively high margins from Apple and the Workstations to stay in the game.
But in the mid-80s, all was compromised by the new buzzword: RISC.

The RISC paradigm allowed the workstation integrators, such as SUN, to design a CPU tailored for their needs for a relatively modest price. And the cherry on the cake: they smoked their CISC contemporaries performance-wise.

Motorola reacted by introducing its own RISC architecture, the 88000. But the design did not sell well. With the Workstation market lost, Motorola feared to become too dependent on the success of Apple which was its last major client for the more modern members of the 68K family.

Meanwhile, Apple could see that the future of the 68K family was not assured and began to consider alternatives, including the 88000 from Motorola. But nothing on the market was truly satisfying until IBM proposed a deal.

Of course, IBM was the major player in the PC market, the PC CPUs were provided by Intel and AMD. In the meantime, IBM was doing very well with its RS/6000 line of computers that were powered by a brand new multi-chip RISC CPU named POWER. With the desire to expand its architecture to the desktop market IBM reached Apple and proposed them an alliance. Apple introduced Motorola to the deal as they had more experience producing CPUs in high quantity and for a low price: the AIM, Apple-IBM-Motorola, alliance was born in 1991. Among its goals: introduce a POWER compatible single chip CPU that would serve the needs of Apple and others in the desktop market. They called it the PowerPC.

The 600 family

The AIM alliance gathered engineers from Motorola and IBM at the Somerset facility in Texas with the goal to produce a coherent family. The 601 was to be introduced as soon as 1993 while two new chips were to be designed in parallel and marketed one year later. The 603 was to target relatively low powered devices such as laptops and the 604, more powerful, aimed for workstation. And a few months later, AIM hoped to produce the 620, the first 64-bit PowerPC.

If the instruction set was based on IBM’s POWER, Motorola provided the 60x bus, derived from its 88110. It had the advantage of reducing the engineering effort and costs for both the first PowerPC CPU and its motherboards.

601

Based on prior works from IBM to produce a one-chip POWER CPU, the very first PowerPC, christened 601, was engineered in only one year! The first samples were available in October 1992 and the volume production started in mid-1993, with IBM introducing the RS/6000 model 250, equipped with a 66MHz PPC 601 in October.

The first Power Macintosh appeared in March 1994. The production volume allowed by Apple was very high compared to other RISC architectures and allowed Motorola to price the PowerPC 601 aggressively.

But the 601 was not perfect: its architecture comprised only one Arithmetic and Logic Unit (ALU) that was used both for integer operations and address calculation. This was a heavy burden that would be alleviated in subsequent designs. Branch prediction was also more simplistic than on the Pentium.

PowerPC 601 block diagram PowerPC 601 block diagram (MPR 19921028)

Nevertheless, without the need to decode the cumbersome x86 instructions, the 601 could use its transistor budget to provide a very generous 32-KB unified cache. It fared favorably against the Pentium in benchmark, especially when operating on floating point numbers. And with only 2.8 million transistors, it was cheaper to produce.

Starting with the 601, each generation, Motorola will try to price its PowerPC at half the price of a comparable Pentium Starting with the 601, each generation, Motorola will try to price its PowerPC at half the price of a comparable Pentium (source: MPR 1993-05-10)

The first reviews of the Power Macintosh were enthusiastic. Legacy 68K software ran through a very capable emulation layer at the speed of a mid-range 68040, while the software recompiled to take advantage of the chip were faster than on a PC, especially if they made use of the floating point unit. The 68000 emulation techniques will be discussed later on.

603

The PowerPC 603 was introduced in May 1995 and was the first PowerPC designed from a clean sheet and was focused on low-cost and low-power, dissipating only around 2.5W at 66MHz, less than one third of the 601 at the same clock-speed.

Its architecture introduced a dedicated Load/Store Unit, speeding integer operations and had limited instruction reordering capabilities. In order to help cut costs and reduce power consumption, the 603’s cache was half the size of the 601’s and separated data from instructions.

Thanks to the architectural improvements, the 603 was around as powerful as the 601 at a given clock-speed. Alas, the data cache was now too small for the 68000 emulation. As most of the code running on the Macintosh still required to be emulated, the PowerPC 603 gained the bad reputation of being slow.

The 603 architecture feature the dedicated branch and load/store units The 603 architecture feature the dedicated branch and load/store units (source: MPR 19931025)

Keys differences between the 601 and the 603 Keys differences between the 601 and the 603 (sour: MPR 1993-10-25)

Less than 6-months later, in October 1995, an enhanced 603e version was launched, doubling the amount of cache, at the cost of adding 1 million transistors.

604

The 604 architecture was not a derivative of the 603’ as the two chips were designed in parallel. From the beginning, the 604 was planned to focus on sheer performance, demonstrating the full potential of the PowerPC. It came with almost everything bigger and more plentiful than on the 603. At the cost, of course, of being larger and more expensive to produce.

The 604 had no less than three ALUs, one dedicated to complex operations such as multiplication and division and two dedicated to more typical single-cycle operations. In order to help keep all those ALUs busy, the instruction reordering capabilities were boosted as was the branch prediction circuitry which became fully dynamic. The 604 was the first PowerPC chip to implement a full double-precision floating-point unit. Other PowerPC designs only used a single-precision FPU that took less die area but required more time for double-precision operations. Finally the 604’ cache was bigger and more sophisticated than on the 603.

PowerPC 604 block diagram PowerPC 604 block diagram (source: MPR 19940418)

When it was introduced to the market, in early 1995, the PowerPC 604 had no equivalent in the PC market. The Microprocessor Report went so far as to declare “PPC 604 Powers Past Pentium - PowerPC Chip Will Open Performance Gap, Possibly Permanently”.

The 600 family covered a wide range of performance and prices The 600 family covered a wide range of performance and prices (MPR 19940418)

But of course the Pentium, then the Pentium Pro, evolved quickly and a more performant revision, the 604e, was introduced in July 1996. Cache was doubled and a new functional unit was introduced to handle the condition registers.

620

When the AIM alliance announced its plans in 1991, the PowerPC 620 was to be the pinnacle of the family. Targeting the uppermost segment of the market, it would be more powerful than even the 604 and would be the first 64-bit PowerPC.
Compared to other RISC designs, PowerPC chips were very cheap to produce, but average performers. The 620 was the first intended to compete with the best RISC of its time when introduced in 1995. But things didn’t go as intended and the 620 was introduced in late-1997! At that time it was outdated and even the 604e could be faster.

The 620 was quickly trashed and very few units sold, none to Apple.

The PowerPC 600 family against Intel CPUs The situation in mid-1994. Light grey CPUs were scheduled for 1995 and the 620 would allow the PowerPC to keep its price performance advantage. But it was 2-year late. (source: MPR 19940418)

The next generation

G3

Introduced in November 1997, the PowerPC 750, or G3, used the 603 as a basis and improved it in every regard. As the main market for such a chip was Mac OS, its designers tuned it to better fit Apple’s ecosystem. The G3 introduced a second ALU dedicated to simple operations, borrowed (and enhanced) the dynamic branch prediction capabilities of the 604 and tuned the TLB for Mac OS.
The floating point unit was improved but, as on the 603, was not able to process full precision numbers as fast as half-precision ones.
But the biggest performance improvement came from the caches. The L1 cache was doubled and the L2 cache was accessed by a dedicated backside bus, running at half or one third of the CPU frequency. As the G3 embedded every cache support chip, only the SRAM chips had to be added to the motherboard. This was a design that is very close to the Pentium II, but the cache still laid on the motherboard instead of being in the same package as the CPU.

The G3 block diagram The G3 block diagram (source: MPR 19970217)

All these improvements allowed the G3 to be quite competitive with the Pentium II while remaining small and cheap to produce. Furthermore, its max power requirement was only around 5W which made it suitable for notebooks from day one.

G3 models compared to Intel Pentium III The G3 was still competitive against the Pentium II. But the days of providing the same performance for half the price were gone. (MPR 19980824)

The G3 quickly replaced all the 60x in Apple machines.

G4

The G3 was really nice but it missed something important compared to the Intel family: SIMD instructions.

Those “vector” instructions can process multiple data at the same time and can speed up the algorithm used in video and audio processing. Multimedia was all the rage at the time! Intel introduced MMX with great fanfare on a revision of the Pentium in 1996. Restricted to integer only they were not very useful outside of some of these multimedia applications but were sold by the marketing as a huge advantage. As Intel was about to introduce MMX2, later renamed SSE, with the Pentium III, Motorola reacted by announcing Altivec: SIMD instructions coming with the PowerPC 7400, a.k.a G4.

Altivec, or “Velocity Engine” according to Apple, was really the star of the show concerning the G4. Outside the addition of this vector unit, the G4 was only an enhanced G3 ; the only significant difference being that its regular floating point unit was at last able to process double precision floating point at full speed.
But Altivec was very ambitious. At a glance, it could seem that it only allowed the PowerPC to catch up with x86. Just like the SSE on the Pentium III, it was a SIMD instruction set manipulating 128-bit wide floating point vectors. A single instruction could be used to process four 32-bit floats at once.

But far more transistors were dedicated on the G4 than on the Pentium III or any other architecture.

Altivec compared to other SIMD instruction sets of the time Altivec was late in the game, but was more advanced than other SIMD instruction sets. (source: MPR 19980511)

Firstly, its instruction set was designed to be as clean and generalist as possible and not tuned to help a particular set of algorithms, while on the Intel side MMX and its first revision of SSE were not as powerful and flexible.
In particular, Altivec provided an fmac instruction. This instruction is at the heart of many signal processing algorithms and could be processed way faster on the G4 than on the PIII. Furthermore Altivec provided a completely arbitrary permute instruction: very useful to reorder a data set between operations.

Secondly, the G4 vector unit hosted 32 128-bit dedicated registers vector operations, integer of floating point. Meanwhile, the Pentium III SSE only offered 8 128-bit registers for floating point and the instruction set was “2-operands”, meaning that one of the registers had to be used as the result destination. The resulting pressure on the meager 8-register set was very high.
Concerning the integral operations, MMX “borrowed” the registers set of the regular floating point unit. Those were only 64-bit wide and switching from regular floating point mode to MMX had a cost, while on the G4 there was no penalty for mixing AltiVec, integer, and FP instructions.

The G4 block diagram The G4 block diagram (source: MPR 19981116)

Zoom on the Altivec Unit Zoom on the Altivec Unit (source: MPR 19981116)

The G4 was competitive with regular code and was far ahead with vectored code, which was of course heavily supported by Apple. And as always, it was cheap to produce and cool enough to fit into laptops.

But there was one caveat. Built on the G3, the G4 inherited its short pipeline. Longer pipelines help to boost the frequency at the cost of penalizing the performance in case of branch mis-predictions. Equipped with a 4 stage pipeline, the G4 was stuck for too long around 500MHz while Intel and AMD were racing toward the GHz.

That is why in January 2001 Motorola shipped a 7-stage PowerPC 7450, which was sometimes called G4e. But other internal changes were so numerous that it could have been called the G5.

Two new integer units were added and the vector units were also revamped for better performance. The L2 cache became embedded on the chip while circuitries were kept to support an external cache on a dedicated bus: the L3.

Finally, in order to compensate for the longer pipeline, the branch predictor was greatly enhanced.

The G4e block diagram More than just a longer pipeline, the 74xx brought a lot of changes (Source: MPR 19991025)

As the true G5, the PowerPC 970 from IBM, was too hot to be used in laptops and small form factors, Apple continued to ship computers with the G4e until the demise of its PowerPC line of computers.

And that is why the Mac Mini G4 came to the market with a 1.25GHz or a 1.42GHz G4e as late as 2005. A perfect match for a cheap, small and silent Macintosh!

Now we can see the whole evolution of the PowerPC CPUs that lead to the G4e

The evolution of PowerPC leading to the G4e The evolution of the PowerPC leading to the G4e (Source: MPR 19991025)

Compatibility with older applications

We just saw that the G4 powering the Mini was the result of a long line of PowerPC CPUs, all compatible. But the Mac platform history evolved during the years, and its CPU which was 68K based until 1995.

I will discuss here how the 2005 Mini on Mac OS 9 should be able to run some 20 year older software, targeting another CPU family and a machine with different Sound and Graphical abilities.

Running 68K software

In 1994, while the 68K family was a dead end, the PowerPC was a clear path towards the future for the Macintosh line of computers. But there was a problem: all Macintosh softwares, including its System, were written to be run on a 68000 CPU and the PowerPC provided no backward compatibility. Without it, buying a new PPC Macintosh would have little more value than switching to a Pentium PC for most Apple customers.

Fortunately, there is a way to run software written for other incompatible CPUs: emulation.

Emulating “legacy software” when a new computer architecture was introduced was nothing new. IBM did it in 1964 in order for its then new System/360 to run programs written for the IBM 1401. The downside is that emulating another CPU is very intensive and emulated programs run slower than it would on its original processor. A tricky problem for Apple: who would buy a brand new and expensive Macintosh only to discover that his programs run slower?

Fortunately, Apple did not start from a blank sheet. When it was clear that the 68000 was losing steam, Apple explored ways to use a RISC processor in a Mac OS machine, more -than a year prior to the AIM alliance announcement.

First researches with RISC CPUS

At first Apple tried to run an AMD 29000 alongside the 68000, both sharing memory, in order to accelerate parts of the OS that were heavily used by every application. Running Quickdraw and the Toolbox on the RISC chip would dramatically accelerate the system. Indeed, according to the “80/20 rule”, most programs spent around 80% of their time executing 20% of the code, mainly those libraries.
And at some point this question arose:
    ”Would it be possible to emulate the 68000 on the RISC CPU?”
This would pave the way to a more simple hardware design with a single CPU.

The research team considered other RISC alternatives and finally settled on the Motorola 88000. A machine was even prototyped with an 88100 CPU plus two 88200 cache MMU units, plugged into the case of a Macintosh LC. It could boot and run the Macintosh ROM unmodified on an emulator written by Gary Davidian, as a single-person project.

The prototype of a Macintosh based on an 88100 The prototype of a Macintosh based on an 88100 (Source: computerhistory.org)

Then, around October 1991 the PowerPC was announced: the future of the Macintosh became clear.

But at the time of the announcement, there was no PowerPC yet to develop on. So the newly formed team developed on RS/6000 computers then got a “RSC”, a one chip POWER CPU, development board that could be plugged into a Mac. And finally around September 1992, a proper PowerPC 601. Thanks to all the work done for the 88000, the emulator running on the PowerPC could be developed quickly and was even better.

Running legacy code on System 7

The emulator could simulate the user space of a 68LC040 plus the exception stack frames of a 68020. The Motorola floating point was not emulated as 80-bit floats could not be directly manipulated by the PowerPC FPU, and even 32-bit and 64-bit floats did not behave exactly the same on both processors. But this was not very important because, in 1994, very few applications made use of the FPU. Those which did were professional and domain specific programs that were natural candidates to be rewritten for the PowerPC to benefit from its performance. Furthermore, many other existing Mac applications performed their floating point calculus using the SANE (Standard Apple Numerics Environment) library, which was optimized for the PowerPC and ran better in the emulator than on a 68040 Macintosh.

So with the new architecture, the System team had the following goals:

  • Boot and run System 7 on PowerPC,
  • Execute legacy 68000 with excellent compatibility and good enough performance,
  • Run new applications, some libraries and part of the system natively for the PowerPC

The PowerPC version of System 7 was re-architectured around a NanoKernel and the tightly coupled 68000 emulator. The NanoKernel was responsible for the low level stuff requiring PowerPC native code. The 68K emulator would of course run all non-native code. In order to make it as fast as possible, the NanoKernel itself was optimized to serve the emulator very quickly for specific but common scenarios such as when a 68K application did a system call that would trigger its equivalent in the NanoKernel.

When the first PowerPC machines shipped with the new System 7.1.2, most of the System 7 itself was not ported to PowerPC and was still running 68K code. In order to make disparate PowerPC code and 68K code work together, Apple introduced the Mixed Mode Manager. It allowed functions in the PowerPC ISA to call functions in the 68K ISA and vice versa. Which was not a small achievement, as the 68K calling convention depended on the programming language used. This was obviously costly. That is why some programs could pay a heavy price when going, from instance from a native function to a System function still in 68k then maybe to another System function ported to PowerPC and so on…

Architecture of the System Software Architecture of the System Software

For performance reasons, Apple was incited to port more and more functions to PowerPC in each Mac OS release. We can guess that the goal of having a 100% PowerPC Mac OS was achieved around October 1998, when Mac OS 8.5 was the first to require a PowerPC to run.

Furthermore, the emulator itself, and with it the ability to run 68K code, became better and faster with each “classical” Mac OS version and was present until the very last version: Mac OS 9.2.2.

Performance

The following benchmark was published in the May 1994 issue of MacWorld. They were by measuring the running execution time of various tasks in real world 68K applications. FPU tests did not run on a true FPU: they were emulated by integer functions, even on the Quadra 800.

All times are in seconds.

Model CPU Integer Float Video
Power Mac 8100 PPC 601 80MHz 256 187 73
Power Mac 7100 PPC 601 66MHz 335 242 78
Power Mac 6100 PPC 601 60MHz 380 377 116
Quadra 800 68040 33MHz 129 70 52
Centris 650 68LC040 25MHz 162 88 65
Centris 610 68LC040 20MHz 201 108 77

We can see that when emphasis is placed on pure 68K execution speed, the PowerPC machines fare less well than a low-end 68040. But the result is way better when the speed of the video subsystem is measured, as Quickdraw ran a lot of native code.

Even if the performances were not stellar, they were good enough. The PowerPC models sold on the promise of delivering more performance with future PowerPC aware applications. And they did.

Graphics

The original 128K Macintosh and the following models could display 512 × 342 bitmap graphics in pure black and white. It is well known that the machine was revolutionary at the time of it introduction, for it was entirely mouse driven and provided a rich set of APIs so the programmer had not to bother with too much of low-level details.

QuickDraw was dedicated to producing and displaying custom 2D graphics. But some programmers thought they could do a better job and directly accessed the framebuffer. As modern GPUs do not work the same way and do not offer pure black and white capabilities, it will pose compatibility problems.

Fortunately, starting with the Macintosh II introduction in 1987, the System had to handle 16 ou 256-color displays. QuickDraw had to be modified to offer more abstraction: the application could allocate a 1-bit, 4-bit or 8-bit framebuffer and QuickDraw hid the ugly details. It also did its best to assure compatibility with existing programs.

So if a game conformed to the QuickDraw API, it should work on the Mini, even if it is antique and in pure black and white.

Sound

The sound capabilities of the 1984 Macintosh were quite good for its time. As the IBM PC, it was equipped with a speaker driven by a timer and able to produce square-waves. However, it could also produce complex sounds using hardware assisted Pulse-Width Modulation. This is a technique that can approximate “normal” waveforms using only amplitude-fixed squares.

Top-side of the motherboard The red waveform can be approximated by a speaker driven by the blue pulses (Source: Wikipedia)

Some rare PC, or even Apple II, games used the same technique. But it was not trivial and, without any hardware assistance, very CPU intensive.
But on Macintosh, there were some hardware facilities. At each end of each rasterline, one byte from a small buffer was read by a DMA and provided to a Pulse-Width modulator. This could approximate the rendition of a monoral 8-bit 22.25-KHz sampled sound. Finally a 8-step attenuation could be applied to the final level as a way to control the volume.

Of course, a friendly API was provided: the Sound Driver. It could produce squared sound, 4-tone synthesized sound, or play provided samples. Behind the stage, the Sound Driver computed the appropriate samples and populated the buffer. If square and given-samples were somewhat easy to handle, computing the 4-tone synthesis could occupy up to 50% of the 8-MHz 68000 time!

With the introduction of the Macintosh II, a more modern API was provided: the Sound Manager. Indeed, the Macintosh II audio hardware had little in common with its older sibling. It was based on a true codec able to play 8-bit stereo sound sampled at 44.1-KHz and a 4-channel wavetable synthesizer. Furthermore, it was now common for computers to connect to external synthesizers through MIDI or record sounds.
The Sound Manager had to offer a more flexible abstraction to the underlying hardware. But it was also supporting the old Sound Driver functions for compatibility purposes. In order to produce sound with the new interface, the application provided “channels” of commands to a “synthesizer” which could be one of three sort:

  • wave-table synthesizer
  • sample player
  • external midi player

Those commands could go to “modifier” before being fed to the selected synthesizer, for instance to add an effect or change the pitch. Each synthesizer could handle several channels, mixed together leading to the production of complex sound and melody. All of this independently to the underlying hardware.

That is why the Mac Mini G4 should be able to play sound, even if it is equipped with a standard audio codec, as were the majority of PCs of the time: MacOS9 Sound Manager should do whatever is required to play sounds according to the commands.

It contrasts with the situation on PC, where at the time of MS DOS games had to directly speak to the hardware and provided several drivers for the most popular sound cards of the time. Of course, Sound Blaster prevailed, but the clone had to be compatible at the hardware level and you won’t find a card today that is the perfect solution to cover every MS DOS game.

Unfortunately, Sound Driver was marked as obsolete at the time of System 7, in 1991. System 7 continued to be compatible, but I don’t know if it was still the case at the time of Mac OS 9. I hope so 😅.

So to conclude about sound compatibility. It ought to be excellent for games that followed Apple’s guidelines and used Sound Manager, starting around 1987. For those which used the older Sound Driver: 🤞

The Mac Mini G4

The Mac Mini G4 was introduced in January 2005 at a starting point of $499. As stated by Steve Jobs on stage, its main purpose was that “people that are thinking of switching will have no more excuses”. In addition to being the cheapest Mac ever, the Mac Mini was designed to have a very small footprint, run cool and silent, and be used along any standard keyboard, mouse and display. Thus, it came with many standard ports that are still supported nowadays: USB, Ethernet and DVI/VGA. The Mac Mini G4 is still quite easy to plug and interact with 🙂.

The hardware configuration of the $499 Mac Mini G4 was as follow:

CPU Single 1.25-GHz PowerPC 7447a (G4)
Cache 512-KB on-chip L2
FSB 167 MHz
Memory PC2700 DDR SDRAM (333MHz) up to 1 GB
GPU ATI Radeon 9200 – AGP 4x
VRAM 32-MB DDR SDRAM
HDD 2.5” 4200 RPM 40GB
Dimensions 16.51cm × 16.51cm × 5.08cm
Weight 1.32 kg

A beefier model with a 1.42-GHz CPU and an 80-GB hard-drive was also sold for $100 more.

Top-side of the motherboard Top-side of the motherboard

Top-side of the motherboard Bottom-side of the motherboard. The GPU does not even need a heat-sink.

Considering the PowerPC retrospective exposed earlier, even a 1.25-GHz is a quite powerful CPU for our objective: running Mac OS applications and games up to the very early 00s. The lowest amount of memory, 256-MB, is a bit short for Mac OS X, but is plenty for our purpose. And it is easy to replace the memory module.

The GPU needs a little presentation of its own. The ATI Radeon 9200 was an entry-level card. Despite its name, it had not much in common with the powerful Radeon 9700 that was commercialized at the same time. The 9200 was a kind of a stripped down Radeon 8500. As such it was a DirectX 8.1 class GPU, whose capabilities were comparable to a Geforce3/Geforce4 or the GPU in the original Xbox.

In the Mini G4, the 9200 is paired with only 32-MB of VRAM which by 2005, when the machine shipped, was frankly ridiculous. This was the amount of memory that shipped with 1999 PC GPUs such as a NVIDIA TNT2 or a first generation of Geforce.

Graphics are clearly the weak point of the machine. Don’t expect the Mini to be able to run 3D games in extra high resolutions. You can even feel it when opening more than a few windows in Mac OS X.

But once again, the purpose exposed here is to run older games and programs. The ATI driver is good, notably concerning OpenGl support, even on Mac OS 9. We will see that 3D games such as Quake 3 run smoothly 😊.

How to install Mac OS 9

The Mac Mini G4 shipped with Mac OS X 10.3 “Panther”. It could run pre-OSX applications through the Classic Mode, a complete OS 9 running in some kind of VM. It allowed a good amount of compatibility with many programs, but anything trying to directly access the hardware would fail.

It is better to run the real thing, even if Mac OS 9 was never officially supported on the Mini.

Fortunately, the community hacked an official version from a close hardware configuration and managed to port Mac OS 9.2.2 to the Mac Mini G4! The only caveats are that the internal speaker is not supported and the sound level is fixed at around 33% when using the line output. This can be cumbersome, but if you are using an external amplifier, it is a minor annoyance.

The first step is to get the ISO dedicated to the Mac Mini G4.

If you need a Mac OS X ISO but do not have the disc that came with your Mini you will be able to find them on specialized websites.

In order to boot on a Mac OS install disc, press Option (alt on a PC keyboard) when you hear the chime at the very beginning of the boot process. A menu will allow you to choose your boot medium.

The boot screen The boot selection screen

If you want to dual boot Mac OS 9 and Mac OS X, boot on the Mac OS X disc. Then use the Disk Utility to split the existing partition into two new ones. I called mine Mac OS 9 and Mac OS X. Then install OS X into its partition.

The Disk Utility menu

Partition the disk

Restart the computer but this time, boot with the OS 9 disc. It will automatically display a text file containing the proper install instructions. Basically, it consists of restoring the image that is contained on the CD to your partition of choice.

MacOS9 boot screen

Et voilà!

MacOS9 boot screen

The Mac Mini G4 can now boot on either OS 😎

Just be aware that OpenFirmware, the first stage of the boot process can be a little picky concerning the keyboard and the mouse that are plugged. In my case, I was not pleased by my Logitech USB keyboard and refused to display any other bootable medium than the regular OS X hard-drive that came pre-installed in the machine. It took me many hours of trials before I finally swapped the keyboard…

Once Mac OS is booted, everything works as expected… except for the internal speaker which remains silent! And unfortunately the line sound output is fixed at around 40% of the max level and cannot be set otherwise. But if you have an external amplifier, it is no problem.

If you are used to Windows, you will be disturbed by the lack of right-click support, even if you plugged a standard PC mouse. You can download drivers corresponding to the manufacturer to alleviate this problem. Here is a link to Logitech drivers.

Show me the result!

Benchmarks

SpeedOMeter 4.02 running in native PowerPC mode SpeedOMeter 4.02 running in native PowerPC mode

The Mac Mini G4 is three times faster than a PowerPC G4 400. The computer that was bragged as a Supercomputer by Steve Jobs. Despite the fact that this bench is entirely synthetic and a bit too old, it indicates that the CPU power should be plenty enough to run any power-hungry game or applica tion from the late 1990s.

SpeedOMeter 4.02 running in the 68K emulator SpeedOMeter 4.02 running in the 68K emulator

And equally important, even when emulating a 680x0 to run legacy software, the Mini is far more powerful than a Quadra 950, one of the most powerful 68K Macintosh ever released by Apple. No legacy application will lack CPU.

Games in action

Until now, I affirmed that the Mac Mini G4 would be perfect to run most of the Macintosh library, backed by some history, technical facts and benchmark. But now it is the time to display some games running on the actual machine, covering a huge period of time.
All the captures were done with an USB capture card from the stream produced by a Retrotink upscaler reading the VGA output. 2D games ran with the display set to 640x480 while 3D games were set to render to 800x600.

Solitaire

1984 - 68K - Black and White

Solitaire

Dark Castle

1986 – 68K – Black and White

Crashes.

The Colony

1988 – 68K – Black and White

Crashes.

Shufflepuck Café

1988 – 68K – Black and White

The game can be played, but there is no sound. Some guys on the net affirm that the games cannot run properly on MacOS9, which could explain.

SpaceWard Ho!

1990 – 68K – Black and White

Prince of Persia

1992 – 68K – 256 colors

SimCity 2000

1993 – 68K – 256 colors

Marathon

1994 – 68K – 256 colors

Civilization II

1997 – PowerPC – 256 colors

Age of Empires II

1999 – PowerPC – 256 colors

Age of the Empire II

Age of the Empires II runs fine but could not be captured as video.

Quake 3 Arena

1999 – PowerPC – OpenGl

Deus Ex

2000 – PowerPC – QuickDraw 3D

Conclusion

As a conclusion, the compatibility of the Mac Mini G4 running Mac OS 9, while not 100% perfect, is quite good. Especially for games made after the Macintosh II introduction in the late 80s.

For my needs at last, it is the best Macintosh for retro-gaming: it can play titles from a large time-span, is so tiny that it can fit on top on my 486 machine and plugs in the same screen and amplifier 🙂

Age of the Empire II The Mac Mini G4 sitting on top of my 486 desktop

I would like to thank Hicks, SbM, Skeud and toomanyfred from the MO5.COM Discord server for their help.

Bibliography