Interesting, I am not able to play HL2 on Steam because macOS no longer has 32-bit support and Valve never compiled if for 64-bit but here we are, it’s playable on the same OS in the browser.
BTW IIRC there was some method to convert the 32-bit game binaries to make them run on recent macs. I remember doing it.
How is that possible? 32 bits should be compatible with a 64 bit machine. You can always use less bits for your memory addresses.
Are there any other architecture changes that are preventing 32 bits binaries from running? Does that also mean that old software no longer runs unless there is a 64 bit version?
In windows you can run x32 and x64 executables in a 64 bits machine
Monsieur, on Windows this problem was solved with a large development effort, that's why it goes unnoticed on you. Note that CPU level instruction emulation is literally the easiest problem of emulation. (Why do you think you can't just go and execute Nintendo Switch binaries on your Mac M1? Both run ARM64.)
On Windows, this was is implemented as SysWOW64. WOW64 means Windows on Windows 64. It makes the userland emulation and pretends towards the process that everything around him (incl. drivers) are the 32-bit ones.
Source: Microsoft.
https://devblogs.microsoft.com/oldnewthing/20081222-00/?p=19...
One of the big things here is that Intel and ARM processors are backwards-compatible with 32-bit instructions, even if they are 64-bit processors. Apple Silicon on the other hand is not, which is why Apple completely dropped support before switching.
WOW64 is not emulation, it's just a second set of libraries exactly like the ia32-libs package on linux. OSX used to have this too but i guess apple got tired of maintaining it
Only the very first few models of Intel Macs had strictly 32-bit processors (the 2006 iMac and Mac minis with Core Solo/Core Duo processors), and none of them were realistically capable of playing Half-Life 2. Apple is guilty of many sins, but this isn't one of them. Valve should never have shipped a 32-bit application in the first place. The binary was already obsolete before it even left Bellevue.
> Valve should never have shipped a 32-bit application in the first place.
It's literally a 2004 game! That's ridiculous. A handful of opterons existed in the market, but Intel wouldn't get there for years still and it was well over a decade until x86_64 crossed 50% market share in consumer stuff.
Good grief, as it were.
In 2004, sure, but Valve didn't (publicly) ship Mac OS X software before 2010.
I hear what you're saying, but keep in mind that Bethesda shipped Skyrim as 32-bit in 2011. It wasn't until the Special Edition release in 2016 that it was updated to 64. Now, obviously, we could chalk that up to it just being Bethesda.
That’s because the 64bit upgrade to Creation Engine happened with the Fallout 4 development cycle when 64bit was widespread. Skyrim was also targeting Xbox 360 and PS3 which were still 32bit. FO4 is when the calculus changed for all the target platforms so thats when the engine was upgraded.
They didn't develop it from scratch though! The 2010 Mac HL2 binaries are a port of the existing 32 bit Windows product, with all the word size and alignment issues you'd expect for C++ code of that vintage. You don't magically wave a wand and expect high performance code to work when sizeof(void*) changes, and the effort to do that needs to be weighed against the perceived value and the size of the market.
Needless to say, annoying a bunch of HN nerds a quarter century in the future wasn't on Valve's radar. They just wanted some Mac revenue and picked the low hanging fruit.
> Only the very first few models of Intel Macs had strictly 32-bit processors (the 2006 iMac and Mac minis with Core Solo/Core Duo processors), and none of them were realistically capable of playing Half-Life 2.
What? First, those chips were plenty powerful to run HL2 (the game predates them). And second, all x86_64 chips can run older x86 32-bit code unmodified.
The reason macOS stopped supporting 32-bit code has nothing to do with the processors but more about them wanting to remove support for 32-bit binaries from the kernel and from all user-space libraries. To run a 32-bit binary, you need itself and all libraries it depends on to be 32-bit too, including the syscall boundary, which is "fine" (both Windows and Linux do this just fine, so it's really on Apple to have removed this). And I suppose Apple removed those because it was building towards a 64-bit-only world to simplify the Apple Silicon transition.
The CPUs were powerful enough, sure. The GPUs (Intel GMA950) absolutely weren't. Even on Windows with better drivers, Half-Life 2 is a slideshow on that class of hardware.
Depends a LOT on the res.
E.x. notebookcheck indicates that FEAR (released a yearish later) could get 20-30ish FPS at 640x480 but chokes at 1024x768 (at numbers matching the HL2 lost coast demo slideshow at 1024x768).
Gotta remember a lot of mac people were just happy to play something more modern than Marathon or Giants CK
Apple goes way out of their way every few years to ensure old games stop working
Lest we forget how they snubbed Bungie...
The don’t let backwards compatibility stop them from doing anything, but I don’t think they go out of their way to target games. That doesn’t make any sense to me.
All 32-bit support got dropped, so you're totally right. It might appear to target games because games are disproportionately likely to not get updated to new archs and to be run long after they were introduced. Nobody is going back to run some 32-bit-only RSS reader or text editor from 2007 even though there surely were some.
In the case of hl2 the source code for the engine has leaked, so you can recompile it for your target platform of choice, no "conversion" needed. I got it running natively on aarch64 linux a while back, with no issues.
So why can’t Valve do it?
Not a priority I guess.
Everything in the process has to agree on how big the pointers are, or you need code to convert between the formats at the boundary. That means you either need 32-bit versions of all OS libraries, or you need a complicated shim layer. Apple went for having 32-bit versions of all OS libraries. But this isn't free to maintain, and they dropped them after a few years.
There's a way to compile HL2 on ARM Macs, I've written a guide here: https://rakhim.exotext.com/how-to-play-half-life-2-on-mchip-...
Disheartening. macOS seems to get less and less support in a way. For example some of the Blizzard remakes don't run on macOS but the originals do.
I knew Blizzard was abandoning macOS when Overwatch didn't ship for it. I assume there must be a decent amount of Mac users playing WoW seeing as it still works on macOS and transitioned to ARM. Diablo 3 only ever got an ARM build because, apparently, Blizzard they replaced the 2010(?) Mac Pro that they were using to test Mac builds of the game with a Studio.
I admit that Valve’s approach to Steam on macOS has never made sense to me.
I think Apple may have burned a lot of developer bridges with Metal, deprecating OpenGL, and ignoring Vulkan.
To be fair Microsoft ignored Vulkan with Windows leaving it up to 3P to implement.
I don't think Valve funded Proton and Linux development by accident.
Microsoft is not a GPU manufacturer, Apple is. The 3rd parties Microsoft left it up to are the GPU manufacturers.
How is that "fair"?
they're not saying it's fair to consumers, they're saying "it's not just apple, microsoft does it too", i.e. that judgement on apple should be made in the context of how its competitors behaved
I think they are saying the fair comparison should be what another 1st party GPU maker supports in their 1st party drivers, not whether or not Windows provides 1st party Vulkan implementation for 3rd party hardware.
Microsoft has the OpenCL, OpenGL, Vulkan compatibility pack. Major issue is that it's just Mesa compiled to a D3D12 GPU backend, so if you have anything but Snapdragon it's basically useless.
This was more Apple's doing rather than Valve's.
Valve wanted steam to co-exist on the mac in the early days and John Sculley of Apple didn't want Apple to be seen as a gaming device or a "personal home computer". So they ceased contact with Valve and the rest is history. https://www.youtube.com/watch?v=lPTLPXNtb2I
Apple refused to license joysticks so they could prevent customers from considering early mac's as game machines and deliberately refused to support games on the machine. Myst was only few that were exclusive to the Mac; that they then ported to PC.
Your timeline doesn't make sense. Steam launched in 2003. Scully was forced out of Apple in 1993.
Most valve games are 32bit macos binaries I assume for powerpc or Intel or something but they flat out refuse to run on modern ox
If they were Intel 64bit binaries they'd still run due to Rosetta 2, however the majority of their games did not get a 64bit upgrade on macOS.
So, your right. But the still holds true, that seed was what was sown not to encourage games for the Mac.
If you watch the YT video they go in to depth that they attempted to port the game and was axed by apple.
Apple runs a gaming subscription service which goes so far as to pay developers for timed exclusivity to Apple platforms. It may be true that in the early days of the Mac, Apple decided games were bad for their brand. This clearly is not true today.
Apple is so obsessed with how their product is marketed and perceived that they all but eliminated gaming on the platform. It's hard to argue that it hasn't been effective, but I'll never understand why people accept that the people who make the computer should decide how you use it.
I wouldn't say 'eliminated gaming', they just have they've put a lot of encouragement into Mac gaming in recent years to the point that they're maintaining Rosetta 2 for game ports (via Crossover/Wine/Proton) even after its broader deprecation.
The main issue IMO is the Apple hardware itself isn't focused on raw performance, it's on energy efficiency and mobility. You'd need a MacBook Pro or Mac Studio at least to have the GPU cores & RAM to play the most recent PC games. And so they just tend to lead with casual games, live service games, and second run AAA games. Technically Apple maintains the world's largest gaming platform (by users & revenue) in iOS.
And plenty of AAA games have been ported to macOS like Cyberpunk 2077, the last few Assassin Creeds (Shadows, Mirage), or even iOS/iPadOS/visionOS like Control & Death Stranding, the recent Assassin's Creeds, Resident Evil 2 & 4 Remakes, RE 7 & 8, Civ 6 & Civ 7, etc.
It's weird, they still try to market it as a machine you can play games on. They make sure a lot of games make it over. It's just never the new cool ones, it's always stuff like a resident evil game from a few years ago or death stranding
It's because the hardware can't really handle the latest and greatest games unless you get the top end hardware. Their GPU innovation is on letting you run an AAA game from 5 years ago on a tablet.
On paper qemu should be able to do this. The hard part is hardware acceleration for the GPU. Without Apple putting effort into supporting this with e.g. documentation, that's a bit hard. That's also holding back linux support on Apple hardware. But it's a fixable problem that will only get easier as hw gets better and faster over time.
> The hard part is hardware acceleration for the GPU
Is it, though?
How Hard Can It Possibly Be to just do a software GL renderer that emulates a mid-2000s Radeon, these days?
At what resolution. You're not going to software render 4K120FPS even with 2000s graphics. But you also don't need a software implementation since translating to a host API isn't really any harder than that (and often much easier). And this already exists in Wine.
MacOS removing 32bit support was a massive pain. A bunch of Ambrosia Software games no longer work too (e.g. Escape Velocity Nova, Apeiron).
I know it's not a remake, but Endless Sky[0] seems to be a pretty faithful "reimagining" of the EV series. Even has an Android port on F-Droid. I haven't played through much of it, but the first few minutes gave me immediate nostalgia.
[0] https://endless-sky.github.io/
Wine 11 for Mac will run 32 bit binaries without neeeding 32 bit libraries.
wine?