Banner

Intro

Although my first computer was an Apple II, I was never a Macintosh user, since my family later switched to the PC. However, reading magazines made me familiar with this family of computers, and for some time I had wanted to add a pre-OS X Macintosh to my collection. The only things that held me back were that most Macs used unusual connectors and that I didn’t have the space at home.

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

The machine promised enough power to run almost every game from the previous century, all packed into the smallest space possible. This was the model I had to add to my collection!

This article will summarize the PowerPC developments leading to the G4, explain why a 2005 machine should be able to run 20 years’ worth of Mac games, then present the Mini G4 and show how to install Mac OS 9.

And if you’re only here for the games, feel free jump straight to the end.

The road to the PowerPC G4

Apple must hold the record for the number of different CPU architectures used within the same family of computers. Over the years, Macs were powered first by the 68000 family, then by PowerPC CPUs, later by Intel’s, and finally by ARM-based Apple Silicon.

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

The AIM alliance

When Motorola introduced its 68000 in 1979, this was the bomb. The CPU was very powerful and pointed toward a bright future, with 32-bit features that promised to lead to fully 32-bit successors. The 68000 was a tremendous success and was adopted in many designs, from home computers to UNIX workstations. But it failed to win the most important design of all: the IBM PC. Shut out of the massive IBM PC market and its clones, Motorola’s CPU division relied on relatively high margins from Apple and from workstation vendors to stay in the game.
But in the mid-1980s, everything was shaken up by a new buzzword: RISC.

The RISC paradigm allowed workstation makers, such as Sun, to design CPUs tailored to their needs at a relatively modest cost. And the icing on the cake: they outperformed their CISC contemporaries by a wide margin.

Motorola responded by introducing its own RISC architecture, the 88000, but it failed to sell well. With the workstation market lost, Motorola feared becoming too dependent on Apple, its last major customer for the more advanced members of the 68K family.

Meanwhile, Apple realized that the future of the 68K family was uncertain and began considering alternatives, including Motorola’s 88000. But nothing on the market was truly satisfactory—until IBM proposed a deal.

At the time, IBM was the major player in the PC market, where CPUs were supplied 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. Eager to expand its architecture into the desktop market, IBM approached Apple and proposed an alliance. Apple brought Motorola into the deal, since it had more experience producing CPUs in large volumes at low cost. Thus, the AIM alliance—Apple, IBM, and Motorola—was born in 1991. Among its goals was to 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 brought together engineers from Motorola and IBM at the Somerset facility in Texas, with the goal of producing a coherent family of processors. The 601 was scheduled for release as early as 1993, while two new chips were to be designed in parallel and marketed a year later. The 603 was intended for relatively low-powered devices such as laptops, while the more powerful 604 was aimed at workstations. A few months later, AIM hoped to release the 620, the first 64-bit PowerPC.

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

601

Based on IBM’s earlier work to produce a single-chip POWER CPU, the first PowerPC—christened the 601—was engineered in just one year. The first samples appeared in October 1992, and volume production began in mid-1993, when IBM introduced the RS/6000 Model 250, equipped with a 66 MHz PPC 601.

The first Power Macintosh was released in March 1994. The high production volumes authorized by Apple, compared to other RISC architectures, allowed Motorola to price the PowerPC 601 aggressively.

However, the 601 was not perfect: its architecture included only one Arithmetic Logic Unit (ALU), which handled both integer operations and address calculations. This was a significant limitation that was alleviated in subsequent designs. Branch prediction was also more simplistic than that of 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 devote its transistor budget to a very generous 32 KB unified cache. It fared favorably against the Pentium in benchmarks, especially when operating on floating point numbers. And with only 2.8 million transistors, it was also cheaper to manufacture.

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 highly enthusiastic. Legacy 68K software ran through a very capable emulation layer, performing at the level of a mid-range 68040. Meanwhile, software recompiled to take advantage of the new chip ran faster than on a PC, especially when using the floating-point unit. The 68000 emulation techniques will be discussed later on.

603

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

Its architecture introduced a dedicated Load/Store Unit to accelerate integer operations, and it included limited instruction reordering capabilities. To help cut costs and reduce power consumption, the 603’s cache was half the size of the 601’s, with separate caches for data and instructions.

Thanks to these architectural improvements, the 603 was roughly as powerful as the 601 at a given clock speed. Unfortunately, the data cache was too small for efficient 68000 emulation. Since most Macintosh code still required emulation, the PowerPC 603 quickly gained a reputation for being slow.

The 603 architecture features the dedicated branch and load/store units The 603 architecture features 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 six months later, in October 1995, an enhanced 603e version was launched, doubling the cache size at the cost of an additional one million transistors

604

The 604 architecture was not a derivative of the 603, as the two chips were designed in parallel. From the outset, the 604 was designed to focus on sheer performance, demonstrating the full potential of the PowerPC. It featured almost everything bigger and more plentiful than on the 603—at the cost, of course, of being larger and more expensive to manufacture.

The 604 had no fewer than three ALUs: one dedicated to complex operations such as multiplication and division, and two for more typical single-cycle operations. To help keep all those ALUs busy, instruction reordering was enhanced, 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. Earlier PowerPC designs had only a single-precision FPU, which consumed less die area but required more time for double-precision operations. Finally, the 604’s cache was larger and more sophisticated than that of the 603.

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

When it was introduced in early 1995, the PowerPC 604 had no equivalent in the PC market. The Microprocessor Report even declared: “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—and later the Pentium Pro—evolved quickly, and a more powerful revision, the 604e, was introduced in July 1996. The cache was doubled, and a new functional unit was added to handle the condition registers.

620

When the AIM alliance announced its plans in 1991, the PowerPC 620 was intended to be the pinnacle of the family. Targeting the highest end of the market, it was meant to be more powerful than even the 604 and to become the first 64-bit PowerPC.

Compared to other RISC designs, PowerPC chips were inexpensive to manufacture but delivered only average performance. The 620 was the first PowerPC intended to compete with the best RISC processors of its time and was originally scheduled for introduction in 1995. But things didn’t go as planned, and the 620 was not introduced until late 1997. By then, it was already outdated, and even the 604e could outperform it.

The 620 was quickly abandoned, with very few units sold—and 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—better known as the G3—was based on the 603 and improved upon it in every respect. Since the main market for the chip was Mac OS, its designers optimized it to better fit Apple’s ecosystem. The G3 added a second ALU dedicated to simple operations, borrowed and enhanced the 604’s dynamic branch prediction, and optimized the TLB for Mac OS. The floating-point unit was improved, but as on the 603, it could not process double-precision numbers as quickly as single-precision ones. The biggest performance gains, however, came from the caches. The L1 cache was doubled, and the L2 cache was accessed through a dedicated backside bus running at half or one-third of the CPU frequency. Since the G3 integrated all the cache controller logic, only the SRAM chips needed to be placed on the motherboard. This design was very similar to the Pentium II, although the cache still resided on the motherboard rather than in the same package as the CPU.

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

These improvements made the G3 highly competitive with the Pentium II, while remaining small and inexpensive to manufacture. Furthermore, its maximum power consumption was only around 5 W, 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 60x processors in Apple’s product line.

G4

The G3 was impressive, but it lacked something important compared to Intel’s processors: SIMD instructions instructions. These “vector” instructions can process multiple data elements simultaneously, accelerating algorithms used in video and audio processing. Multimedia was all the rage at the time. Intel introduced MMX with great fanfare in a revision of the Pentium in 1996. Restricted to integers only, they were of limited use outside multimedia applications, but Intel’s marketing promoted them as a huge advantage. As Intel prepared to introduce MMX2—later renamed SSE, with the Pentium III, Motorola responded by announcing AltiVec, its own SIMD extension, to debut with the PowerPC 7400, also known as the G4.

AltiVec—or “Velocity Engine,” as Apple branded it—was the real star of the G4. Apart from the addition of this vector unit, the G4 was essentially an enhanced G3; the only other significant difference was that its standard floating-point unit could finally process double-precision numbers at full speed. But AltiVec was far more ambitious. At first glance, it might have seemed that it merely allowed the PowerPC to catch up with x86. Like SSE on the Pentium III, it was a SIMD instruction set operating on 128-bit floating-point vectors, allowing a single instruction to process four 32-bit floats at once.

But, far more transistors were devoted to AltiVec on the G4 than to SIMD units on the Pentium III—or on any other contemporary 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)

First, its instruction set was designed to be as clean and general-purpose as possible, rather than tuned for a specific set of algorithms. By contrast, Intel’s MMX and the first revision of SSE were less powerful and less flexible. In particular, AltiVec included an fmac instruction. This operation is central to many signal-processing algorithms and could be executed much faster on the G4 than on the Pentium III. Furthermore, AltiVec offered a fully arbitrary permute instruction, which was extremely useful for reordering data sets between operations.

Second, the G4 vector unit featured 32 dedicated 128-bit registers for vector operations, supporting both integer and floating-point data. By comparison, the Pentium III’s SSE provided only 8 128-bit registers for floating-point operations, and its instruction set was “two-operand,” meaning that one of the source registers also had to hold the result. This placed heavy pressure on the already limited 8-register set.

For integer operations, MMX “borrowed” the register set of the standard floating-point unit. These registers were only 64 bits wide, and switching between floating-point mode and MMX carried a performance penalty. On the G4, by contrast, there was no such penalty for mixing AltiVec, integer, and floating-point 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 conventional code and far ahead with vectorized code, which Apple naturally promoted heavily. As usual, it was inexpensive to produce and efficient enough to fit into laptops.

There was, however, one caveat. Because it was built on the G3 core, the G4 inherited its short pipeline. Longer pipelines allow higher clock frequencies, but at the cost of harsher penalties on branch mispredictions. With only a four-stage pipeline, the G4 was stuck for too long around 500 MHz, while Intel and AMD were already racing toward the gigahertz mark.

To address this, in January 2001 Motorola shipped the PowerPC 7450—sometimes referred to as the G4e. In reality, the internal changes were so extensive that it could almost have been marketed as the G5. Two new integer units were added, and the vector units were redesigned for higher performance. The L2 cache was now embedded directly on the die, while dedicated circuitry remained to support an external L3 cache on a separate bus. Finally, to mitigate the effects of the longer pipeline, the branch predictor was greatly improved.

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

Because the true G5, the PowerPC 970 from IBM, generated too much heat to be used in laptops or smaller form factors, Apple continued to ship computers with the G4e until the end of its PowerPC line. This is why the Mac Mini G4 was introduced in 2005 with a 1.25 or 1.42 GHz G4e—a perfect match for an affordable, compact, and quiet Macintosh.

We can now see the whole evolution of the PowerPC CPUs that led 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

As we saw earlier, the G4 that powered the Mini was the result of a long line of fully compatible PowerPC CPUs. But before their introduction in 1994, all Macintosh models relied on the 68K architecture—a radically different and incompatible design.

Here, I will discuss how the 2005 Mac Mini running Mac OS 9 could run 20-year-old software originally targeting that older architecture and machines with very different sound and graphics capabilities.

Running 68K software

In 1994, while the 68K family had reached a dead end, the PowerPC represented a clear path toward the future for the Macintosh line. But there was a problem: the entire Macintosh software base, including the System itself, was written to run on a 68000 CPU, and the PowerPC offered no backward compatibility. Without it, buying a new PowerPC Macintosh would have offered little benefit. For most Apple customers, it would have been no better than switching to a Pentium PC.

Fortunately, there was a solution: emulation.

Emulating legacy software when introducing a new computer architecture was nothing new. IBM had already done it in 1964 so that its new System/360 could run programs written for the IBM 1401. The downside, however, is that emulating another CPU is computationally intensive, and programs typically run more slowly than on the original processor. A tricky problem for Apple: who would buy a brand new and expensive Macintosh only to find their programs running more slowly?

However, Apple did not start from scratch. Once it became clear that the 68000 was losing steam, Apple began exploring ways to use a RISC processor in a Mac OS machine—more than a year before the AIM alliance was announced.

Early Research with RISC CPUs

At first, Apple tried running an AMD 29000 alongside the 68000, with 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 promised to dramatically accelerate the system. According to the well-known “80/20 rule,” most programs spent around 80% of their time executing just 20% of the code—mainly those libraries.

At some point this question arose: “Would it be possible to emulate the 68000 on the RISC CPU?” This idea would pave the way for a simpler hardware design with a single CPU.

The research team also considered other RISC options before finally settling on the Motorola 88000. A prototype machine was even built, housing an 88100 CPU paired with two 88200 cache/MMU units inside the case of a Macintosh LC. Remarkably, it could boot and run the Macintosh ROM unmodified, using an emulator written by Gary Davidian as a one-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 received an “RSC,” a one-chip POWER CPU development board that could be plugged into a Mac. Finally, around September 1992, they obtained 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 unit 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. This was not critical, because in 1994 very few applications made use of the FPU. Those that did were professional, domain-specific programs that were natural candidates to be rewritten for the PowerPC to benefit from its performance. Furthermore, many existing Mac applications performed their floating-point calculations 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.

With the new architecture, the System team set the following goals:

  • Boot and run System 7 on PowerPC
  • Execute legacy 68000 code with excellent compatibility and adequate performance
  • Run new applications, some libraries, and parts of the system natively on the PowerPC

The PowerPC version of System 7 was re-architected around a NanoKernel and the tightly coupled 68K emulator. The NanoKernel was responsible for low-level operations requiring PowerPC native code, while the 68K emulator ran all non-native code. To maximize performance, the NanoKernel itself was optimized to serve the emulator quickly in specific but common scenarios, such as when a 68K application performed a system call that triggered its equivalent in the NanoKernel.

When the first PowerPC machines shipped with System 7.1.2, most of the System 7 code was still running as 68K code. To make PowerPC and 68K code interoperate, Apple introduced the Mixed Mode Manager, which allowed functions in the PowerPC ISA to call functions in the 68K ISA and vice versa. This was a significant achievement, as the 68K calling convention depended on the programming language used. This was obviously costly. Consequently, some programs could incur substantial overhead when, for instance, calling from a native function to a system function still in 68K, then 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 driven to port an increasing number of functions to PowerPC in each Mac OS release. The goal of a fully PowerPC Mac OS was likely achieved around October 1998, when Mac OS 8.5 became the first version to require a PowerPC processor.

Furthermore, the emulator, and with it the ability to run 68K code, improved with each classic Mac OS release and remained present until the final version, Mac OS 9.2.2.

Performance

The following benchmark was published in the May 1994 issue of MacWorld. They were obtained 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, PowerPC machines perform worse than a low-end 68040. However, the results are much better when measuring the speed of the video subsystem, since QuickDraw ran largely as native code.

Even if overall performance was not stellar, it was good enough. PowerPC models were sold on the promise of delivering greater performance with future PowerPC-aware applications—and they did.

Graphics

The original 128K Macintosh and subsequent 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 its introduction, as it was entirely mouse-driven and provided a rich set of APIs so programmers did not have to deal with too many low-level details.

QuickDraw was dedicated to producing and displaying custom 2D graphics. However, some programmers believed they could achieve better performance by directly accessing the framebuffer. Since modern GPUs do not operate in the same way and do not support pure black-and-white modes, this approach creates compatibility problems.

Fortunately, starting with the introduction of the Macintosh II in 1987, the System had to handle 16- and 256-color displays. QuickDraw was modified to provide more abstraction: applications could allocate a 1-bit, 4-bit, or 8-bit framebuffer, while QuickDraw managed the low-level details. It also did its best to ensure compatibility with existing programs.

Therefore, if a game conformed to the QuickDraw API, it should still work on the Mac Mini—even if it was originally designed in pure black and white.

Sound

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

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 hardware assistance, very CPU-intensive.
On the Macintosh, however, hardware facilities were provided. At the end of each raster line, one byte from a small buffer was read by a DMA and sent to a Pulse-Width Modulator. This could approximate the playback of monaural 8-bit, 22.25-kHz sampled sound. Finally, an 8-step attenuation could be applied to the final output level to control the volume.

Of course, a friendly API was provided: the Sound Driver. It could produce square-wave sound, 4-tone synthesized sound, or play supplied samples. Behind the scenes, the Sound Driver computed the appropriate samples and populated the buffer. While handling square waves and supplied samples was relatively simple, computing 4-tone synthesis could consume up to 50% of the 8-MHz 68000’s processing time!

With the introduction of the Macintosh II, a more modern API was provided: the Sound Manager. The Macintosh II’s audio hardware had little in common with its predecessor. It was based on a true codec capable of playing 8-bit stereo sound sampled at 44.1 kHz, along with a 4-channel wavetable synthesizer. Furthermore, by this time it was becoming common for computers to connect to external synthesizers through MIDI or to record audio.
The Sound Manager offered a more flexible abstraction over the underlying hardware while still supporting the old Sound Driver functions for compatibility. To produce sound with the new interface, applications supplied “channels” of commands to a “synthesizer,” which could be one of three kinds:

  • wavetable synthesizer
  • sample player
  • external MIDI player

These commands could pass through “modifiers” before being fed to the chosen synthesizer—for example, to add an effect or change the pitch. Each synthesizer could handle several channels, which were mixed together to produce complex sounds and music, all independently of the underlying hardware.

This is why the Mac Mini G4 should be able to play sound even though it is equipped with a standard audio codec, similar to the majority of PCs of the time: Mac OS 9’s Sound Manager should handle whatever is required to play sounds according to the commands it receives.

This contrasts with the situation on PCs, where MS-DOS games had to communicate directly with the hardware and often provided separate drivers for the most popular sound cards of the era. While Sound Blaster eventually became dominant, clones had to be compatible at the hardware level—and today, there is no single card that can perfectly cover every MS-DOS game.

Unfortunately, Sound Driver was already marked as obsolete by the time of System 7 in 1991. While System 7 maintained compatibility, it is unclear whether this remained true by the time of Mac OS 9.

In conclusion, sound compatibility should be excellent for games that followed Apple’s guidelines and used the Sound Manager starting around 1987. For those relying on the older Sound Driver, compatibility is less certain.

The Mac Mini G4

The Mac Mini G4 was introduced in January 2005 at a starting price of $499. As Steve Jobs stated 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 work with any standard keyboard, mouse, and display. It was equipped with widely supported ports—USB, Ethernet, and DVI/VGA—making it straightforward to connect to existing peripherals. The Mac Mini G4 remains easy to set up and use even today.

"Rear view of the Mac Mini G4, showing its ports" Most of the ports are still usable nowadays

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 discussed earlier, even a 1.25-GHz CPU is quite powerful for our objective: running Mac OS applications and games up to the early 2000s. The base memory configuration of 256 MB is somewhat limited for Mac OS X, but more than sufficient for our purpose. Moreover, the memory module is easy to replace.

The GPU deserves a closer look. The ATI Radeon 9200 was an entry-level card. Despite its name, it had little in common with the more powerful Radeon 9700, commercialized at the same time. The 9200 was essentially a stripped-down Radeon 8500. As such, it was a DirectX 8.1-class GPU, with capabilities comparable to a GeForce3 or the GPU in the original Xbox.

In the Mini G4, the 9200 is paired with only 32 MB of VRAM which, even by 2005 standards, was clearly insufficient. This was the amount of memory typically found in 1999 PC GPUs such as an NVIDIA TNT2 or a first-generation GeForce. Graphics are therefore the weakest aspect of the machine. It cannot be expected to run 3D games at high resolutions, and performance limitations can even be felt when opening multiple windows in Mac OS X.

However, for the purpose outlined here—running older games and applications—the GPU is adequate. The ATI driver provides solid support, notably for OpenGL, even under Mac OS 9. As a result, 3D titles such as Quake III run smoothly.

Finally, the Mac Mini can be opened relatively easily to upgrade the RAM and replace the slow mechanical hard drive with an SSD connected through a PATA adapter.

How to install Mac OS 9

The Mac Mini G4 shipped with Mac OS X 10.3 “Panther.” It could run pre-OS X applications through Classic Mode, which was essentially a complete Mac OS 9 instance running in a virtualized environment. This provided broad compatibility with many programs, but software attempting to access hardware directly would not function.

Running the native system is preferable, even though Mac OS 9 was never officially supported on the Mini.

Fortunately, the community adapted an official version from a closely related hardware configuration and succeeded in porting Mac OS 9.2.2 to the Mac Mini G4. The only limitations are that the internal speaker is unsupported, and the sound level is fixed at around 33% when using the line output. This can be inconvenient, but when using an external amplifier it becomes only a minor issue.

The first step is to obtain the Mac Mini G4-specific Mac OS 9.2.2 ISO. If you also need a Mac OS X ISO but no longer have the disc originally supplied with your Mini, it can be found on “specialized” websites.

To boot from a Mac OS install disc, press Option (Alt on a PC keyboard) for a few seconds immediately after hearing the startup chime. A menu will appear allowing you to choose the boot device.

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, this time booting from the OS 9 disc. The disc will automatically display a text file with the installation instructions. In essence, the process consists of restoring the image contained on the CD to the partition of your choice.

MacOS9 boot screen

Et voilà!

MacOS9 boot screen

The Mac Mini G4 can now boot into either operating system.

Be aware that OpenFirmware, the first stage of the boot process, can be finicky about which keyboard and mouse are connected. In my case, it did not work properly with my Logitech USB keyboard and failed to show any bootable device other than the pre-installed OS X hard drive. After many hours of troubleshooting, I finally solved the issue by swapping the keyboard.

Once Mac OS 9 is booted, everything works as expected—except for the internal speaker, which remains silent. In addition, the line-out sound level is fixed at about 40% of maximum volume and cannot be adjusted. If you have an external amplifier, however, this is only a minor inconvenience.

If you are accustomed to Windows, the lack of right-click support may feel disorienting, even when using a standard PC mouse. This limitation can be alleviated by installing manufacturer-provided drivers. 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 PowerMac G4 400—the model Steve Jobs once touted as a supercomputer. Although this benchmark is entirely synthetic and somewhat dated, it indicates that the CPU power is more than sufficient to handle even the most demanding games or applications from the late 1990s.

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

Equally important, even when emulating 68K code to run legacy software, the Mini is far more powerful than a Quadra 950—one of the most capable 68K Macintosh systems ever released by Apple. As a result, no legacy application will be constrained by CPU performance.

A Quake 3 benchmark is also provided below.

Games in action

Up to this point, I have argued that the Mac Mini G4 is an excellent machine for running most of the Macintosh software library, supported by history, technical details, and benchmarks. Now it is time to showcase some games running on the actual hardware, spanning a wide range of years.

All captures were made using a USB capture card, recording the signal from a Retrotink upscaler connected to the VGA output. For 2D games, the display was set to 640×480, while 3D titles were rendered at 800×600.

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 people on the net affirm that the games cannot run properly on Mac OS 9, which could explain why.

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


Benchmark

Quake 3 was configured with Texture High, Trilinear filtering and Lightmaps options. The Mac Mini G4 proves to be much faster than Apple’s 1999 flagship.

Performance appears to be bottlenecked by the CPU at around 80 FPS. At higher resolutions, the LoD algorithm draws slightly more geometry, which may explain the modest drop in frame rate. At 1024×768×32, the system is clearly GPU-limited, likely due to the limited VRAM bandwidth.

In any case, the takeaway is clear: the Mini is more than capable of running this demanding AAA title from 1999.

SpeedOMeter 4.02 running in the 68K emulator

Model Power Macintosh G4 400 AGP Mac Mini G4 1.25GHz
640x480x16bpp 29.9 FPS 87.2 FPS
640x480x32bpp 29.4 FPS 86.6 FPS
800x600x16bpp 26.2 FPS 86.2 FPS
800x600x32bpp 24.9 FPS 78.5 FPS
1024x768x16bpp 18.2 FPS 79.3 FPS
1024x768x16bpp 15.1 FPS 57.4 FPS

Deus Ex

2000 – PowerPC – QuickDraw 3D

Conclusion

In conclusion, the compatibility of the Mac Mini G4 running Mac OS 9 is very good, even if not perfect—particularly for games released after the introduction of the Macintosh II in the late 1980s.

For my needs at least, it is the best Macintosh for retro-gaming: it can run titles from a broad time span, is compact enough to sit on top of my 486 machine, and plugs into 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