Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

macintologist

macrumors 6502a
Original poster
May 3, 2004
646
890
Let's imagine someone in the future releases a Windows or Linux x86 emulator that can run 32 bit binaries. Would it be possible to use that environment to run 3d games that are hardware accelerated?

Or will I need to hold on to my old Mac running Mojave (or Windows) to run 32 bit games like Unreal Tournament 2004?
 

velocityg4

macrumors 604
Dec 19, 2004
7,336
4,726
Georgia
It may be possible. But emulation probably won't be as good as the real thing. As it usually isn't.

Although 68K emulation has gotten to the point where emulation is way faster than the original.

I haven't messed much with PowerPC emulation. But it seems people are playing at least some 3D games under QEMU. There's also all sorts of emulation of consoles for 3D gaming. So, it seems reasonable that at some point there could be fast enough emulation for x86 gaming that needs a GPU. I'd expect that sort of emulation will be better for Windows gaming than Intel Mac gaming. Just bear in mind there is usually a long gap between hardware releases and decent emulation of that hardware.

I'll expect the first emulation will be the same emulators which exist now. Just ported to ARM or x86/ARM binaries. Especially the open source stuff that already runs on basically every platform.
 

ChrisA

macrumors G5
Jan 5, 2006
12,917
2,169
Redondo Beach, California
Or will I need to hold on to my old Mac running Mojave (or Windows) to run 32 bit games like Unreal Tournament 2004?

It will be quite a long time before an ARM CPU is able to run an X86 emulator as fast as a real X86 chip from 2004. Also, the emulation of 2004 vintage 3D hardware might never happen.

Your best bet is to keep a real computer around that can run this all native.

I really do expect there will be an X86 virtual machine emulator for Apple Silicon at some point. But I don't expect native performance wich is OK, except for games and media editing
 

Fomalhaut

macrumors 68000
Oct 6, 2020
1,993
1,724
It will be quite a long time before an ARM CPU is able to run an X86 emulator as fast as a real X86 chip from 2004. Also, the emulation of 2004 vintage 3D hardware might never happen.

Huh? Isn't the DTK with Rosetta 2 already able to run x86 applications and the same performance level as mid-level 2017 Intel laptops? I appreciate that Rosetta 2 is doing up-front translation in most cases, rather than on-the-fly emulation, but it still appears to be quite capable.

Where are you getting your data from?
 
  • Like
Reactions: MevetS

ww1971

macrumors regular
Jul 15, 2011
141
44
Let's imagine someone in the future releases a Windows or Linux x86 emulator that can run 32 bit binaries. Would it be possible to use that environment to run 3d games that are hardware accelerated?

Or will I need to hold on to my old Mac running Mojave (or Windows) to run 32 bit games like Unreal Tournament 2004?

i believe that a intel Mac is more compatible with those software mentioned above and I believe that macs with silicon chips will only accept arm 64 bit versions of the software
 

ChrisA

macrumors G5
Jan 5, 2006
12,917
2,169
Redondo Beach, California
Huh? Isn't the DTK with Rosetta 2 already able to run x86 applications and the same performance level as mid-level 2017 Intel laptops? I appreciate that Rosetta 2 is doing up-front translation in most cases, rather than on-the-fly emulation, but it still appears to be quite capable.

Where are you getting your data from?

Rosetta is doing something different. It is emulating a MacOS Intel environment on an ARM Mac. This is a MUCH easier job and it can be fast. One thing Rosetta can do is when the Intel app makes a system call, Rosetta can run the system call native because the ARM Mac has that function available. So all the file I/O, networking, and graphics are not emulated in Rosetta

But to run Windows apps on a Mac, you need a copy of Windows and you need to emulate the base machine on which Windows expects to run on. This means you can not run anything at all native. All privileged CU instructions have to be emulated

Rosetta works at a higher level of abstraction than does a true virtual machine
 
  • Like
Reactions: MevetS

macintologist

macrumors 6502a
Original poster
May 3, 2004
646
890
Here's a follow up question: What about running ARM version of Windows but relying on ARM Windows to emulate 32bit x86 Windows games?
 

ChrisA

macrumors G5
Jan 5, 2006
12,917
2,169
Redondo Beach, California
Here's a follow up question: What about running ARM version of Windows but relying on ARM Windows to emulate 32bit x86 Windows games?
Windows emulators are notoriously hard to write because many Windows apps make calls to undocumented features inside Windows. Microsoft kept much of the interface secret or at least never bothered to tell anyone.

Apple is in a unique position to Rosetta in that they control the entire environment and can change MacOS if that is needed to make Rosetta work

Wine is a good example of a Windows emulation. It emulates the publishes Windows interface. But it does not always work. To be 100% sure you need a copy of Windows and emulate the hardware at a low level.

The good news is that a computer from 2004 is cheap. you can find 16-year-old PCs for free and you should not have to buy one.
 

mr_roboto

macrumors 6502a
Sep 30, 2020
856
1,866
Huh? Isn't the DTK with Rosetta 2 already able to run x86 applications and the same performance level as mid-level 2017 Intel laptops? I appreciate that Rosetta 2 is doing up-front translation in most cases, rather than on-the-fly emulation, but it still appears to be quite capable.

One problem is that the up-front translation in Rosetta 2 seems unlikely to work at the scale of a whole operating system. Too much code to translate, and too many cases where it's difficult or impossible to do it up front. So it's going to just be a JIT.

The bigger performance problem is that Rosetta 2 gains a lot from only emulating userspace. A whole-machine emulator (which is what you'd need to boot Windows) has to support all the weird odds and ends only available in the privileged (kernel) operating modes of x86. It also has to emulate I/O peripherals. I/O can be accelerated somewhat by borrowing some paravirtualization tricks, but it's still a lot slower than what happens in Rosetta 2.

https://github.com/ptitSeb/box86 and https://twisteros.com might be of interest.
Two potential issues for AS:
- 32-bit ARM support. I have no idea if it is present in the CPU/SoC.
- GPU in VM.

That's roughly equivalent in scope to Rosetta 2, not a whole-machine emulator. "Box86 lets you run x86 Linux programs (such as games) on non-x86 Linux, like ARM (host system needs to be 32bit little-endian)." I don't think any of it will be relevant to ARM Mac.
 

leman

macrumors Core
Oct 14, 2008
19,517
19,664
But to run Windows apps on a Mac, you need a copy of Windows and you need to emulate the base machine on which Windows expects to run on. This means you can not run anything at all native. All privileged CU instructions have to be emulated

This is what WINE does. In combination with Rosetta it should run all applications it is able to run currently. Bigger issue is support for 32 bit code... one would need a Rosetta-like translator or at least 32 bit to 64 but translator.
 

deconstruct60

macrumors G5
Mar 10, 2009
12,493
4,053
Let's imagine someone in the future releases a Windows or Linux x86 emulator that can run 32 bit binaries. Would it be possible to use that environment to run 3d games that are hardware accelerated?

Or will I need to hold on to my old Mac running Mojave (or Windows) to run 32 bit games like Unreal Tournament 2004?

It would probably suck not so much because of GPU emulation but because of 32 bit code emulation. However, the 32 bit app would be running against a emulated GPU ( will extremely likley be running inside of VMware or Parallels. ). That emulated GPU will try to pass along hardware calls with minimal overhead , but here will be overhead. Bigger issue is that is appears that Apple has dropped 32 arm support in their SoC. So there is no 32-bit hardware to run your app against. Whch means that 32-bit-ness has to be emulated in software. That will be a bigger hit to the driver of GPU calls (which are also going through a layer).

It will probably run. But pretty good chance some much more affordable x86 box (with a 2020-2021 Intel or AMD CPU) with a future GPU will run circles around it.
 

deconstruct60

macrumors G5
Mar 10, 2009
12,493
4,053
Huh? Isn't the DTK with Rosetta 2 already able to run x86 applications and the same performance level as mid-level 2017 Intel laptops?

No. The DTK can only run x86-64 apps. And only inside of macOS. Rosetta doesn't even try to run 32 bit apps at all ( which is technically is x86. )
 

Fomalhaut

macrumors 68000
Oct 6, 2020
1,993
1,724
No. The DTK can only run x86-64 apps. And only inside of macOS. Rosetta doesn't even try to run 32 bit apps at all ( which is technically is x86. )

Ah, OK. I read "x86" as x86-64 - I wasn't paying attention to the title of the thread :)
 

mr_roboto

macrumors 6502a
Sep 30, 2020
856
1,866
Bigger issue is that is appears that Apple has dropped 32 arm support in their SoC. So there is no 32-bit hardware to run your app against. Whch means that 32-bit-ness has to be emulated in software. That will be a bigger hit to the driver of GPU calls (which are also going through a layer).

I fully agree that GPU and other hardware driver overhead would doom the high performance of a full system emulator, but 32-bitness isn't a problem with AArch64. There's zero-overhead support for 32-bit operations baked into the 64-bit ISA; most integer instructions have a 32-bit and a 64-bit form. That should make it easy to emulate a 32-bit CPU. (Where by "easy" I mean no harder than doing it on a 32-bit ISA.)

What Apple dropped is support for the legacy 32-bit only AArch32 instruction set. (which is a retronym for what had been the only ARM instruction set until about 2011.)
 

sanfrancisofont1984

macrumors regular
Aug 5, 2020
237
67
That's roughly equivalent in scope to Rosetta 2, not a whole-machine emulator. "Box86 lets you run x86 Linux programs (such as games) on non-x86 Linux, like ARM (host system needs to be 32bit little-endian)." I don't think any of it will be relevant to ARM Mac.

Rosetta 2 is 64 bit only while box86 is 32 bit only. VM might be the only way to run 32 bit code on late Macs?
 

Mikael H

macrumors 6502a
Sep 3, 2014
864
539
Rosetta 2 is 64 bit only while box86 is 32 bit only. VM might be the only way to run 32 bit code on late Macs?
A VM will only run code supported by the CPU of the host.
Emulation is the way, and as stated in a bunch of threads here in this sub forum that is unlikely to be performant enough in the short term.
 

theSeb

macrumors 604
Aug 10, 2010
7,466
1,893
none
I would love to play Crusader:No Remorse again like this.
 
Last edited:

mr_roboto

macrumors 6502a
Sep 30, 2020
856
1,866
If I am not mistaken, Pi 4 has native geekbench 5 single core at about 200.

Since you're still posting about it, I'm not sure if you understood that box86 will not be useful on ARM Macintosh.
It's similar to Rosetta: Rosetta runs x86 Mac programs on ARM Macs, box86 runs x86 Linux programs on ARM Linux.
 

sanfrancisofont1984

macrumors regular
Aug 5, 2020
237
67
I thought one could run arm Linux in a vm? If my physical Pentium 4 box can run a game. Can I expect the same game to run inside a vm on top of an i9?
 

sanfrancisofont1984

macrumors regular
Aug 5, 2020
237
67
I do agree that keeping/buying some old x86 hardware is a better approach for most users. But I also think VM on ARM Macs might act as a fast RPi just fine. I mentioned potential difficulties already.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.