BHTY / EmuWoW

RISC NT apps on x86 NT
51 stars 3 forks source link

Port to Windows on ARM (ARM32/ARM64) #1

Closed RetroSoftwareRepository closed 4 months ago

RetroSoftwareRepository commented 4 months ago

Would love to see this being ported to devices like the Surface RT, which would open up the possibility of running more apps than just ARM32 native apps or basic x86 apps (via the now defunct x86node)

admin-elvistrujanovic commented 4 months ago

Yes - could we have multi-architecture support with this that will natively translate any PE binary/execution architecture in real time allowing for example Intel/AMD CPUs to run arm64, PowePC, arm and many more architectures without getting Machine Type mismatch error on Windows. That would also include seeing an loader.exe that will be executed during boot enabling Windows to recognize it during boot and use it automatically when an unsupported architecture for an execution is detected

Or we can see an bootloader emulation project that will allows us to run any Windows boot manager for any architecture just booting from an UEFI bootloader that will emulate architecture for the selected Windows bootloader (Boot Manager)

In that way we can basically run Windows On ARM OS on Intel/AMD machines.

BHTY commented 4 months ago

Doing a port to WOA (either Windows RT/ARM32 or ARM64) would absolutely be feasible, but I don't have the hardware or much interest since it'd take more work than just recompiling. Most of the app doesn't depend on running on the x86 processor, but there are a few bits in assembly and a few bits that directly reference IA-32 registers. Shouldn't be too tough to replace, though. The main issue is that I can't imagine there's a ton of people clamoring to run MIPS and Alpha apps on a Surface RT (and they probably wouldn't run all they fast). EmuWoW can't run x86 apps (it's designed to run RISC apps on x86); that's not to say I couldn't add a 386 emulator core, I actually wrote one during the earlier days of the project (though it's bad so I'd just lift one from mame or something), but I don't have much interest in doing so (I mostly only wrote the one I did as a proof of concept, and since it was the first core I wrote). I also don't have much personal interest in expanding EmuWoW to run ARM apps at this time, but I'd be open to someone else giving it a shot; it'd certainly be pretty cool and definitely possible.

admin-elvistrujanovic commented 4 months ago

Doing a port to WOA (either Windows RT/ARM32 or ARM64) would absolutely be feasible, but I don't have the hardware or much interest since it'd take more work than just recompiling. Most of the app doesn't depend on running on the x86 processor, but there are a few bits in assembly and a few bits that directly reference IA-32 registers. Shouldn't be too tough to replace, though. The main issue is that I can't imagine there's a ton of people clamoring to run MIPS and Alpha apps on a Surface RT (and they probably wouldn't run all they fast). EmuWoW can't run x86 apps (it's designed to run RISC apps on x86); that's not to say I couldn't add a 386 emulator core, I actually wrote one during the earlier days of the project (though it's bad so I'd just lift one from mame or something), but I don't have much interest in doing so (I mostly only wrote the one I did as a proof of concept, and since it was the first core I wrote). I also don't have much personal interest in expanding EmuWoW to run ARM apps at this time, but I'd be open to someone else giving it a shot; it'd certainly be pretty cool and definitely possible.

To most people doing similar projects I've asked the same and most of them ignored or just says that they cannot do it for some reasons and that is not their plan for their projects to expand support to that level so I was redirected to this repo and hoped for an good news. If no one else will not even try to do something like that, the only hope we can have is you - if you don't want it and you're not capable of making it, it's ok at least we can hope that you or anyone will get an will and interest, hardware and skills to do this thing.

Thank you for taking your time for us to read all of this, I wish you all the best!

BHTY commented 4 months ago

Yeah, of course. That said, your idea of a bootloader emulation project is probably not going to see much uptake in my view. EmuWoW at least is designed for application-level compatibility to run Alpha and MIPS Win32 programs, it doesn't actually run full fat Windows NT, it thunks API calls to the host. And QEMU already allows you to boot Windows NT for MIPS, ARM32, and ARM64. Running the entire WOA OS isn't really going to happen in any other way. My focus, once again, skews far more towards the retro side of things, so ARM doesn't really hold much interest for me, compared to Alpha (I mainly did MIPS as a baseline, because we have full system emulators for it and because it's easier/simpler to emulate). It's worth mentioning that while I am eagerly awaiting progress on emulating the Alpha version of Windows NT (which is ongoing by the way!), writing a full system emulator is a bit out of my wheelhouse at the moment. Not to say I won't try my hand at such a project in the future, but for now, this is my niche (fundamentally, I wanted to be able to run Alpha apps and app-level compat is easier than emulating a full system - different approaches with some overlap in result).

RetroSoftwareRepository commented 4 months ago

I mean there was x86node for x86 on WoA… it was abandoned pretty quick though because the developer no longer had access to a Windows RT/Windows 10 15035 device. Would be nice if someone picked that up and improved it. Sent from my iPad

On Feb 21, 2024, at 8:39 PM, BHTY @.***> wrote:



Yeah, of course. That said, your idea of a bootloader emulation project is probably not going to see much uptake in my view. EmuWoW at least is designed for application-level compatibility to run Alpha and MIPS Win32 programs, it doesn't actually run full fat Windows NT, it thunks API calls to the host. And QEMU already allows you to boot Windows NT for MIPS, ARM32, and ARM64. Running the entire WOA OS isn't really going to happen in any other way. My focus, once again, skews far more towards the retro side of things, so ARM doesn't really hold much interest for me, compared to Alpha (I mainly did MIPS as a baseline, because we have full system emulators for it and because it's easier/simpler to emulate). It's worth mentioning that while I am eagerly awaiting progress on emulating the Alpha version of Windows NT (which is ongoing by the way!), writing a full system emulator is a bit out of my wheelhouse at the moment. Not to say I won't try my hand at such a project in the future, but for now, this is my niche (fundamentally, I wanted to be able to run Alpha apps and app-level compat is easier than emulating a full system - different approaches with some overlap in result).

— Reply to this email directly, view it on GitHubhttps://github.com/BHTY/EmuWoW/issues/1#issuecomment-1958504908, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ACBGMUUJ433QPOWB4QXVV2DYU2OVZAVCNFSM6AAAAABDOKQU3WVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNJYGUYDIOJQHA. You are receiving this because you authored the thread.Message ID: @.***>

BHTY commented 4 months ago

I mean there was x86node for x86 on WoA… it was abandoned pretty quick though because the developer no longer had access to a Windows RT/Windows 10 15035 device. Would be nice if someone picked that up and improved it.

Yeah I do remember hearing about that, and again, this project is theoretically capable of doing something similar, it's just not my sort of project.

Torinde commented 2 months ago

Is the reverse in scope? Allowing ARM32 and ARM64 binaries to run on x86?

BHTY commented 2 months ago

Is the reverse in scope? Allowing ARM32 and ARM64 binaries to run on x86?

The reverse is absolutely in scope. I don't know if it's something I'll take on in the forseeable future, but ARM32 is definitely in scope. ARM64 I'm less certain of because I don't currently support any 64-bit emulated architectures (yes, I know that the Alpha is 64-bit but that's complicated and pointers are 32-bit as per the NT ABI), but it could happen down the road.