Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.
Mostly finished with my Xash3d port, here is Half-Life fully playable on Leopard, with great performance on the G4s and G5s I tested. Menus, multiplayer, Uplink demo, everything is functional.

Working on fixing a known issue with some Radeon cards. The 9200 on my G5 and Mobility 9200 on my iBook G4 both work fine, but it's been reported that X1900 series cards have broken rendering and performance issues.

Tiger (and probably earlier) support coming soon too.

Mac Garden link: https://macintoshgarden.org/games/half-life-xash3d-ppc

1775429948955.png
 
Mostly finished with my Xash3d port, here is Half-Life fully playable on Leopard, with great performance on the G4s and G5s I tested. Menus, multiplayer, Uplink demo, everything is functional.

Working on fixing a known issue with some Radeon cards. The 9200 on my G5 and Mobility 9200 on my iBook G4 both work fine, but it's been reported that X1900 series cards have broken rendering and performance issues.

Tiger (and probably earlier) support coming soon too.

Mac Garden link: https://macintoshgarden.org/games/half-life-xash3d-ppc

View attachment 2620115
One of my favorite pc gaming franchises 🙂 Can’t wait to give it a whirl.

Thanks 🙂
 
  • Like
  • Love
Reactions: eastone and srp
So I also did a thing and now OpenMW is "in-game" status.. still some work to be done as it's kinda crashy and doesn't run very well. Hopefully I should be able to finish this up and release this in the next couple of days.


1775454033003.png
 
I'm putting this here because although my Cinema Displays are all attached to my Mac Pro, they were released during the PowerPC era.

It's not a big deal though. Just replaced one of the power supply bricks for one of my CDs. The old one is not dead yet, but it's flaky. Periodically the display will just shut off. Replugging the display cable or pressing the power button turns the display right back on. But there were days where this was a battle, with the display switching off every two minutes or so. I could mitigate things a bit by reducing the brightness, but I really do not care for that.

So far the new power brick seems to be keeping it steady at full brightness. Going to keep the old brick as a backup/spare because it's not fully dead yet.

That makes three power bricks replaced for three CDs in the last year.
 
Let's see, over the last two days I found an SSD that works for my 1.8ghz iMac G5, installed 10.4, then created a firewire image to install 10.5, updated via ethernet to 10.5.8 (which got the Airport working on my WiFi) and finally installed srp's Half-Life build, which in just a couple min of playthrough runs beautifully.
 
Let's see, over the last two days I found an SSD that works for my 1.8ghz iMac G5, installed 10.4, then created a firewire image to install 10.5, updated via ethernet to 10.5.8 (which got the Airport working on my WiFi) and finally installed srp's Half-Life build, which in just a couple min of playthrough runs beautifully.
Cool! Glad it's working well for you.

I'm polishing up Counter-Strike 1.6 and I'll have an update for Half-Life to go with its release.

With CS1.6 I'm mainly just finishing up the single player experience. I am also adding an option to move from ReGameDLL bots to yapb bots, which are very realistic bots with great pathfinding and procedurally generated VOIP lines and names that look and feel an awful lot like real players.

This update will add a bot gamemode to Half-Life's multiplayer, fix an issue with some ATI cards, and move the windowing layer to SDL3 for better performance and stability.

All of the Counter-Strike maps are included and I've also added the HD model packs in for both games while also reducing the total size of both apps.

1775920838943.png


Are there any other maps or features people would like to see included in this Counter-Strike build? I can work on a release of Condition Zero too if there's enough interest.
 
  • Like
Reactions: z970
Cool! Glad it's working well for you.

I'm polishing up Counter-Strike 1.6 and I'll have an update for Half-Life to go with its release.

With CS1.6 I'm mainly just finishing up the single player experience. I am also adding an option to move from ReGameDLL bots to yapb bots, which are very realistic bots with great pathfinding and procedurally generated VOIP lines and names that look and feel an awful lot like real players.

This update will add a bot gamemode to Half-Life's multiplayer, fix an issue with some ATI cards, and move the windowing layer to SDL3 for better performance and stability.

All of the Counter-Strike maps are included and I've also added the HD model packs in for both games while also reducing the total size of both apps.

View attachment 2621595

Are there any other maps or features people would like to see included in this Counter-Strike build? I can work on a release of Condition Zero too if there's enough interest.
I don't even have a PPC and I'm grateful for this. Thank you for keeping these amazing games alive!
 
  • Love
Reactions: srp
Okay, Counter-Strike 1.6 is available on Mac Garden now: https://macintoshgarden.org/games/counter-strike-16-xash3d-ppc-mods-custom-content

I also updated Half-Life to provide several quality of life fixes and resolve an issue that was identified with ATI Radeon cards. NVIDIA cards should be unaffected.

Blue Shift and Opposing Force DLCs have also been added as standalone downloads: https://macintoshgarden.org/games/half-life-xash3d-ppc

You sir, are a legend. Looking forward to the Tiger builds with great anticipation. 🙂
 
Cool! Glad it's working well for you.

I'm polishing up Counter-Strike 1.6 and I'll have an update for Half-Life to go with its release.

With CS1.6 I'm mainly just finishing up the single player experience. I am also adding an option to move from ReGameDLL bots to yapb bots, which are very realistic bots with great pathfinding and procedurally generated VOIP lines and names that look and feel an awful lot like real players.

This update will add a bot gamemode to Half-Life's multiplayer, fix an issue with some ATI cards, and move the windowing layer to SDL3 for better performance and stability.

All of the Counter-Strike maps are included and I've also added the HD model packs in for both games while also reducing the total size of both apps.

View attachment 2621595

Are there any other maps or features people would like to see included in this Counter-Strike build? I can work on a release of Condition Zero too if there's enough interest.
I mean, I love CZ personally, but really I think getting the whole Platinum Collection is "enough". Would not focus on CZ but rather Team Fortress Classic. That would round out the box set and you can make a release on Mac Garden that way. People still play TFC online too.

The GoldSource games are kinda grails for the community, so to see them finally working is truly awesome.
 
LOL Im so bummed right now because I want to run this HL port on one of my powermac G5s but I have my entire office (where I house and run all my PowerPC Macs from) is packed out and in boxes, bags and big stacks of Macs and all the junk goodness that comes with it while I repaint and carpet it and its neighboring bedroom. This is going to take a few weeks due to the carpet installers schedule too which is what it is I guess haha.

Huh, maybe I'll try this on my iBook G4. I can grab that from the mess of retro pc stuff or maybe my Powerbook 17. Where did I pack those up to lol? 😛
 
  • Like
Reactions: MarkC426
I mean, I love CZ personally, but really I think getting the whole Platinum Collection is "enough". Would not focus on CZ but rather Team Fortress Classic. That would round out the box set and you can make a release on Mac Garden that way. People still play TFC online too.

The GoldSource games are kinda grails for the community, so to see them finally working is truly awesome.
TFC is mostly playable at this point, I just need to setup a bot plugin like with CS 1.6.

I'm inclined to agree with you re: CZ and Day of Defeat - these aren't even officially supported by Xash3d so there would be quite a bit of work involved.

I want to save the release of TFC for the Tiger milestone - that's up next.
 
TFC is mostly playable at this point, I just need to setup a bot plugin like with CS 1.6.

I'm inclined to agree with you re: CZ and Day of Defeat - these aren't even officially supported by Xash3d so there would be quite a bit of work involved.

I want to save the release of TFC for the Tiger milestone - that's up next.
Well then I support that road map. CZ's cut campaign just sucks so much, so I wouldn't bother with Deleted Scenes. The maps in the main game are pretty cool though so I think CZ is worth doing down the road.

Now that 1.6 is coming out, this is the time to set up some servers and see how we can get ppl playing. I think these titles + PowerFox + MacPorts are going to be crucial in spurring development interest on Mac OS X PowerPC. When people see what is possible and happening right now, they will be more emboldened to jump in.
 
Well then I support that road map. CZ's cut campaign just sucks so much, so I wouldn't bother with Deleted Scenes. The maps in the main game are pretty cool though so I think CZ is worth doing down the road.

Now that 1.6 is coming out, this is the time to set up some servers and see how we can get ppl playing. I think these titles + PowerFox + MacPorts are going to be crucial in spurring development interest on Mac OS X PowerPC. When people see what is possible and happening right now, they will be more emboldened to jump in.
Speaking of "what's happening now", not to drum up the hype train or anything but I'm making some solid progress with the Source engine. I think it'll still be a while before I can boot into game or actually play anything.

1776205370242.png

1776205376111.png


I'm very excited to see what the state of PowerPC development looks like a year from now. I think there are going to be a lot of changes and new developments happening in a very short span of time. I have had a blast learning about this platform over the past ~4 months, and finally giving my Macs a reason to get off of the shelf and actually serve a purpose again.
 
Speaking of "what's happening now", not to drum up the hype train or anything but I'm making some solid progress with the Source engine. I think it'll still be a while before I can boot into game or actually play anything.

View attachment 2622405
View attachment 2622406

I'm very excited to see what the state of PowerPC development looks like a year from now. I think there are going to be a lot of changes and new developments happening in a very short span of time. I have had a blast learning about this platform over the past ~4 months, and finally giving my Macs a reason to get off of the shelf and actually serve a purpose again.
I think it's great when people revitalize old tech and find new uses for it. Nice job with the Source work. Can't wait to see you boot into Half-Life 2 or Left 4 Dead or something!
 
Technically this was yesterday evening, but I swapped out the original stock 80 GB system hard drive on my 2003 PowerMac G4 MDD for a 160 GB hard drive...
92EA5365-66DE-499A-BB3E-E562052E4F13_1_201_a.jpeg

Using Carbon Copy Cloner to efficiently clone the system onto the new drive connected via USB 2.0 (as I put a USB 2.0 PCI card in the back).

5B7ED4E2-75EC-4501-BC2D-DECEA1A26BEF.jpeg

The MDD G4 was definitely one of the most expandable Macs ever built. I'm going to really miss this age, now that the Mac Pro was killed off.

CF5EB9B3-0656-4627-BF39-8AE8DD1B68C5_1_201_a.jpeg

The new drive is all set! It helps that before I used Carbon Copy Cloner, I formatted said drive in the Mac OS Extended Journal file system with OS 9 drivers, so it can still boot into Mac OS 9.2.2 in addition to Mac OS X 10.4.11 Tiger.
 
Portal is stable enough to get "in-game". Some of the graphical issues are just settings I've intentionally turned down, although there are some real issues with drawing.

I can only load a few levels without crashing. UserCmd input is unstable and causes crashes. Entity rendering is broken (player, cubes, buttons) and quite a few material types are broken or don't load. Viewmodel data is missing. Music and some sfx work, voices and captions don't. Localization data doesn't load. Performance is pretty awful, although that's mostly expected at this point in development. It has taken a LOT of work just to get to this point.

1776635866802.png

1776560524443.png

1776621973109.png

1776635549083.png

1776635566570.png

1776635972589.png

Resolution scaling works pretty decent - these screenshots are all in 2560x1600 on my G5 Quad.

Before I can release this, I need to do some serious bug fixing and optimization. It's pretty much the same situation with OpenMW as well. One step closer to making this happen.
 
@srp Just the fact you've made it this far so quickly is monumental. Portal is one of my favorite games ever, and to see it running on the best architecture ever (decoupled from Steam, no less!) would be a thing of dreams. You're really filling in for all of the few major PC-exclusives from the early / mid 2000s that never made it to our venerable G4 and G5 Macs. Unexpectedly, 2026 is definitely turning out to be one of the absolute best years for this platform in a very long time.

Out of curiosity for the development process, how exactly are ports such as this and Half-Life / CS made? What does it take to bring these things that were originally designed for completely different OS platforms and instruction sets into PPC OS X, if you don't mind my asking?
 
Last edited:
What does it take to bring these things that were originally designed for completely different OS platforms and instruction sets into PPC OS X, if you don't mind my asking?
Having a working and modern development environment is a huge part of what makes this possible. Barracuda's PPCPorts project and Iain Sandoe's work on gcc14 + darwin-xtools were pretty much required to do any of this.

When I'm not stuck on a 20 year old compiler and having to cut out or rewrite entire parts of a codebase, the amount of work involved shrinks quite a bit. There are still a number of challenges:

- Endianness: this is a problem that scales with the size and complexity of the codebase. If you take a 32 bit hex value like `0x12345678`, big endian will store that value in memory as `12 34 56 78`. Little endian stores it as `78 56 34 12`. This makes huge sections of code instantly suspect - you now need to comb through every single case where integers, files, network protocols and raw memory are being handled and ensure that byte order is being fed correctly. In a small game engine, this may be 2-10 different patches, like changing a texture loading function to byteswap a little-endian texture file at runtime. In a large game engine (like Source) this is often tens or hundreds of small patches, combined with lots of debugging, instrumentation, and watching for very subtle behavior issues.

- OpenGL 2.1-ish: Leopard's GPU drivers are very quirky and OpenGL 2.1 support is more like "best effort". I don't even want to think about Tiger. While glsl120 shaders will compile and are technically supported, they do not behave appropriately at all and the driver doesn't give you a true 2.1 context. I have personally encountered very strange behavior with FBO texture mipmapping, multithreaded contexts, framebuffer blitting, context creation, multisample antialiasing, NPOT textures, and render target presentation. This is the most annoying set of issues I have dealt with in Source/OpenMW. With enough work it's definitely possible to get an OpenGL3/4 renderer working in an OpenGL 2.0 context, but this is usually a slippery slope of alternative rendering paths that kill performance or sacrifice visual quality. Anything without OpenGL support, you're pretty much SOL or writing it yourself. We have no Vulkan and no DirectX.

- OS-specific: Leopard is pretty good about POSIX compliance, but there are still missing OS features and APIs that you'll need to work around - clock_gettime() is weird, threading can misbehave, you're still technically on a 32-bit OS so virtual memory ceilings are very real.. you're also missing a lot of modern conveniences (No built-in JSON support, outdated TLS/SSL)

- Hardware/time: Keeping my Quad in working order is a huge prerequisite! I don't have a working cross compilation environment yet (although I'd like to soon), and so a huge chunk of my work is "hurry up and wait for the compiler", lol.

- SIMD/PPC specific: Not really as many issues here as you'd think, just depends on the codebase. This is a real blocker for things like JIT recompilers or other SIMD heavy code (think emulators, web browsers) However, you'd be surprised how much stuff just compiles and works once you account for endianness and OS level jank.

There are a handful of edge cases with iains' darwin-xtools that cause crashes when linking or bad optimizations that can cause crashes, and I'd like to see those fixed, but for a completely volunteer effort it is damn impressive and I am so thankful that there are smart people out there who have put in some real work to even allow me to work on stuff like this.

All of this work is just for fun and challenge, and hopefully to give someone a reason to hang on to that old Mac. I try to keep my GitHub updated with patches as I make them and I hope people can find my code helpful and informative. There was a lot of trial-and-error along the way, so hopefully I can save someone else from making the same mistakes I did. 🙂
 
Having a working and modern development environment is a huge part of what makes this possible. Barracuda's PPCPorts project and Iain Sandoe's work on gcc14 + darwin-xtools were pretty much required to do any of this.

When I'm not stuck on a 20 year old compiler and having to cut out or rewrite entire parts of a codebase, the amount of work involved shrinks quite a bit. There are still a number of challenges:

- Endianness: this is a problem that scales with the size and complexity of the codebase. If you take a 32 bit hex value like `0x12345678`, big endian will store that value in memory as `12 34 56 78`. Little endian stores it as `78 56 34 12`. This makes huge sections of code instantly suspect - you now need to comb through every single case where integers, files, network protocols and raw memory are being handled and ensure that byte order is being fed correctly. In a small game engine, this may be 2-10 different patches, like changing a texture loading function to byteswap a little-endian texture file at runtime. In a large game engine (like Source) this is often tens or hundreds of small patches, combined with lots of debugging, instrumentation, and watching for very subtle behavior issues.

- OpenGL 2.1-ish: Leopard's GPU drivers are very quirky and OpenGL 2.1 support is more like "best effort". I don't even want to think about Tiger. While glsl120 shaders will compile and are technically supported, they do not behave appropriately at all and the driver doesn't give you a true 2.1 context. I have personally encountered very strange behavior with FBO texture mipmapping, multithreaded contexts, framebuffer blitting, context creation, multisample antialiasing, NPOT textures, and render target presentation. This is the most annoying set of issues I have dealt with in Source/OpenMW. With enough work it's definitely possible to get an OpenGL3/4 renderer working in an OpenGL 2.0 context, but this is usually a slippery slope of alternative rendering paths that kill performance or sacrifice visual quality. Anything without OpenGL support, you're pretty much SOL or writing it yourself. We have no Vulkan and no DirectX.

- OS-specific: Leopard is pretty good about POSIX compliance, but there are still missing OS features and APIs that you'll need to work around - clock_gettime() is weird, threading can misbehave, you're still technically on a 32-bit OS so virtual memory ceilings are very real.. you're also missing a lot of modern conveniences (No built-in JSON support, outdated TLS/SSL)

- Hardware/time: Keeping my Quad in working order is a huge prerequisite! I don't have a working cross compilation environment yet (although I'd like to soon), and so a huge chunk of my work is "hurry up and wait for the compiler", lol.

- SIMD/PPC specific: Not really as many issues here as you'd think, just depends on the codebase. This iss a real blocker for things like JIT recompilers or other SIMD heavy code (think emulators, web browsers) However, you'd be surprised how much stuff just compiles and works once you account for endianness and OS level jank.

There are a handful of edge cases with iains' darwin-xtools that cause crashes when linking or bad optimizations that can cause crashes, and I'd like to see those fixed, but for a completely volunteer effort it is damn impressive and I am so thankful that there are smart people out there who have put in some real work to even allow me to work on stuff like this.

All of this work is just for fun and challenge, and hopefully to give someone a reason to hang on to that old Mac. I try to keep my GitHub updated with patches as I make them and I hope people can find my code helpful and informative. There was a lot of trial-and-error along the way, so hopefully I can save someone else from making the same mistakes I did. 🙂

Fascinating. My understanding is that the Snow Leopard beta currently available offers even better POSIX compliance / API support and thus a more compatible development environment for modern software that otherwise wouldn't be possible on Tiger and take comparatively more effort to get running in Leopard.

It begs the question then that if we can get the UX and driver support just as polished as Leopard, and besides the endianness issues that are still a factor regardless, would targeting these types of ambitious ports toward 10.6 instead be an easier undertaking than porting for 10.5 thanks to its newer libraries and kernel? Perhaps it could moreover open the door to importing an even broader variety of software for the same reasons?

Lastly, I am probably behind the times on something here, but isn't Portal (and the others) closed-source? How has it become possible to compile their codebases for PPC in the first place--provided that the compiler is sufficiently modern enough as you've explained?

Anyway, thank you for all you do. I for one am grateful there are smart people like you who decide to take on these projects in their spare time to further enrich and diversify this platform for the benefit of all of us. For whatever reason, this little niche of ours just keeps attracting the best people. 🙂

Come to think of it, maybe that's why I've always gravitated back... As a general ecosystem, there isn't really anywhere else quite like it. :apple:
 
Last edited:
Fascinating. My understanding is that the Snow Leopard beta currently available offers even better POSIX compliance / API support and thus a more compatible development environment for modern software that otherwise wouldn't be possible on Tiger and take comparatively more effort to get running in Leopard
Tiger is pretty challenging to develop for. Snow Leopard is a real improvement in some ways and a regression in others. I would use it as my primary platform if there weren't as many issues. I don't really know how some of those issues could ever be fixed without access to the source code. A lot of components of the operating system are open-source, but the really important stuff like NVIDIA and ATI drivers/system apps/most kexts/platform management code are all a black box.

I think the most realistic next step is to get the xnu kernel building from source and working on a G5. With the ability to deploy our own kernel, we can patch many CVEs, improve threading/memory management, and selectively port features and kernel patches from later versions of OS X. This is an issue right now because Apple's OSS repos don't contain the platform management code for G5s.

Lastly, I am probably behind the times on something here, but isn't Portal (and the others) closed-source? How has it become possible to compile their codebases for PPC in the first place--provided that the compiler is sufficiently modern enough as you've explained?
Most of what I've done so far is just porting decomp projects like Xash3D (GoldSrc) and OpenMW (Morrowind). Those brainiacs already did the hard part of rebuilding the game engine, and I just fix their code for PPC.

The Source port is based off of a leak of the 2017 engine. The repository showed up on GitHub in 2020 and has survived for the past few years with a mention that it's not for commercial purposes. I guess it's being used for Android ports? The engine itself is quite outdated and our use case is non-commercial and I think niche enough, although I don't condone piracy or using leaked code. You will also be required to provide your own legal copy of the game.
 
  • Like
Reactions: z970
I’ve been spending the last couple days fiddling around with Mac OS 9 in a VM in advance of trying to resurrect a mid-2002 iBook G3 that my Dad has lying around. I think the one he’s got has a dead HDD, since it powers on and eventually gets to the international NO symbol that a Mac OS X machine will show if there’s no bootable partition present. It’s nostalgic to experience the creaky jank of late-90s operating systems after 25 years in more modern environments. I kind of miss the flexible elegance of resource forks, but it’s also a nightmare trying to get anything in or out of this VM.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.