Hacker News new | past | comments | ask | show | jobs | submit login
Windows NT for GameCube/Wii (github.com/wack0)
255 points by zdw 50 days ago | hide | past | favorite | 86 comments



The same person did NT for PowerMacs[0], which was discussed earlier[1].

[0] https://github.com/Wack0/maciNTosh

[1] Windows NT for Power Macintosh (github.com/wack0)

298 points by TazeTSchnitzel 7 months ago | hide | past | favorite | 215 comments

https://news.ycombinator.com/item?id=40945076


It seems that Windows NT naitively supported IBM's PowerPC processors (in addition to IA-32/x86). The "PowerPC Edition" did not sell much, so Micorosft discontinued the support in 1997.

Because Wii and GameCube were PowerPC-based, both can technically run Windows NT. This seems to be the main reason why this project was doable.

I think we are witnessing a historical accident materialized by obscure hardware legacies.


> The "PowerPC Edition" did not sell much

NT4 included all the supported architectures on the cd-rom. You didn't buy an x86 version or a PPC version or a MIPS version or an Alpha version... You just bought NT4 client or server and it was all there. Microsoft may have had analytics of use on ppc, but not specifically sales. OEM sales, sure.

More likely, no PPC oems were interested in selling NT5 (Windows 2000) bundled with their hardware, and so Microsoft gave up on that. Alpha was supported into the release candidates (and I've seen comments that builds continued but were no longer distributed outside Microsoft), but Alpha imploded during the release time frame.


Worse than that: other than Apple and the clones, there were hardly any PPC OEMs at all, and Old World Power Mac hardware wasn't PReP (which is why it couldn't run it). Largely only IBM's hardware could, like the rare as hen's teeth Power Series ThinkPads, or the unobtainium Power Series workstations, and some of Motorola's equally rare stuff. Those landed with a thud in the market and were extremely expensive, and it made sense for Microsoft to jettison it.

Apple was going to get NT on at least the Apple Network Server (Ellen Hancock once claimed there would be upgrade ROMs that could boot it), but that never happened.

Alpha, at least, had vendors, and existed in some numbers. My AlphaPC 164LX [0] was made by Samsung.

[0] http://oldvcr.blogspot.com/2023/03/refurb-weekend-dec-alphap...


FWIW I had one of those IBM Power Series workstations, and Windows NT was installable via CD-ROM.

Considering I had no idea how to use AIX then it was nice to have a machine with a Sound Recorder application (probably to hook up to a cd player and play to a tape recorder), the ability to play canyon.mid, run MS Paint, and change the cursor to an animated horse. That's what workstations are for right?


After Compaq decided they wouldn't support Windows on Alpha, Microsoft continued using the hardware for developing 64-bit Windows (the previous Alpha releases were all 32-bit) until Itanium hardware became available. Here's a blogpost where someone goes over an Alpha 64-bit version of Windows 2000: https://virtuallyfun.com/2023/05/15/windows-2000-64-bit-for-...


> After Compaq decided they wouldn't support Windows on Alpha, Microsoft continued using the hardware for developing 64-bit Windows

I seem to recall hearing that Linux also developed its 64-bit support on Alpha.


A (dual?) Alpha workstation was Linus’ daily driver for a while, IIRC.


2210 isn't a Windows 2000 build even, but a Windows XP prerelease


yeah, but 64bit versions are called "Windows 2000" in the moment. see https://msfn.org/board/topic/183599-windows-2000-x64/ for screenshots.


There was also Windows NT for Alpha and RISC, neither were popular. And now we have yet again Windows for ARM. Everything old is new again :-)


The NT PE executable format supports quite a few processors families.

https://learn.microsoft.com/en-us/windows/win32/debug/pe-for...

I just like the valid MSDOS stub header executable on the front of every DLL and executable.


And why? We can see that a number of those architectures eventually got a WindowsCE release.

Notably the Dreamcast ran WinCE on SH4 CPU.


Internally, NT first targeted Intel i860, not x86. This was a deliberate decision to break old assumptions. It was designed to be multiplatform from the beginning. The fact that it had an NT syscall layer but also a Win32 one, then formerly an OS/2 subsystem, also reflected this heritage of adaptability, multi-platform, portability etc.


Mostly because that format is not strictly speaking Windows-specific but comes from Unix System V release 4. Also various oddball embedded platforms use the full NT-style PE COFF as their native object/image format (but these usually either specify i386 as machine type or place some invalid value there).


That is controlled by this bit in the subsystem field. https://learn.microsoft.com/en-us/windows/win32/debug/pe-for...

Subsystems https://learn.microsoft.com/en-us/windows/win32/debug/pe-for...

There are also a few others usually NE for older win16 and LE for OS2 and other interesting win16 overlay types.


Wait, does that mean there's a risc-v version of windows?


If there is, it isn't public. .NET does apparently have RISC-V architecture support in some sense due to a pull request by a Samsung engineer.

https://github.com/dotnet/runtime/pull/82382

From a technical standpoint, there's no reason Windows couldn't be brought to RISC-V in some form or fashion. It's designed for that portability.


It was almost certainly added in order to support EFI which uses PE/COFF format binaries.


Windows NT for Alpha was quite popular, second only to Windows NT for x86


500Mzh vs 233Mhz, if you could afford the cooling. Maybe exaggerating the gap, but I think it was pretty big which contributed to the enthusiasm for DEC alpha.


That or more was the gap.

Also, "cooling" is relative - the highest power draw of a 21164 Alpha is around 40-60w, which is normal to low these days, but was huge back then.


I remember a law firm I worked at buying an Alpha server running NT to host a SQL Server database system in the mid-90s. I was network admin, but we ran Netware at the time an I didn't touch that machine, we had an Alpha sysadmin/dba for it. I left a few months later to a firm that was already running NT on its servers; learning a new network OS in a stable environment was much preferable to converting from Netware to NT.


People forget the excitement around alpha from the mid 90s. It was the first Linux port to non-x86 for example. It was a little bit before the AMD vs Intel wars and race to 1ghz kicked off, so it represented a challenge to Intel's monopoly.


IIRC: There was a bonanza of DEC Multia Alpha's[1] that made it's way to some salvage seller in the late 90's for like $100-ish. The catch was they didn't include RAM and it had to be True Parity RAM which was fairly expensive.

[1] http://www.obsolyte.com/dec/multia/


I remember my first job in 2000, straight out of 1.5 years of college, getting to play directly with Digital UNIX and Alpha processors! The Alpha 21264 was a beast at the time.


Iirc MIPS was on the installation CD and possibly what the team used. There was also a pa-risc port that never shipped…

https://www.osnews.com/story/139479/windows-nt-and-netware-o...


NT was designed to be CPU and OS level API independent, of course mainly being used with closed source software meant hardly anything supported non x86 CPUs, and if you wanted Unix you could just run Linux by then


At the time it was in no way certain that x86 was long for the world, let alone that it would take the world by storm and eat almost every other CPU architecture.

The OS-level was much more CPU agnostic at the time and programs would aim for an OS rather than an OS/CPU combo.

Linux preserved that for much, much longer than many others (the only other big name was NeXT into MacOS).

Now with ARM finally "catching up" we see it growing again; nothing is new.


Did MSFT use this as a basis for The Xbox360 kernel?


ChatGPT confirms my recollection: No, Microsoft developed a novel kernel and hypervisor for the 360, before moving back to a Windows kernel for the Xbox One.


At some point, the people like me will stop answering you dumb-dumbs who insist on trusting a machine whose purpose is spouting believable nonsense. Today is not that day, for it took me two minutes to get an answer, but instead of the couple of seconds yours took, mine is fucking RIGHT: The Xbox 360 is a heavily modified Windows 2000 kernel.

https://en.wikipedia.org/wiki/Xbox_system_software#Xbox_360_...


It blows my mind that somebody would get an answer from ChatGPT and post it here as a fact without doing the bare minimum to verify that it is actually true. It's insane, thanks for correcting them.


Gaming history is already filled with half-truths and straight up misunderstood things turned into lies because no one cares to write about anything but the players' perspective. Of fucking course the useless LLMs are going to start hallucinating bullshit when they try to navigate that.


The question was whether Microsoft reused their NT 3.5 era PowerPC kernel (& presumably some modification of the HAL).

If you can find evidence that’s the case, I’m intrigued.


> If you can find evidence that’s the case, I’m intrigued.

If you can find evidence supporting the useless information you posted, I'm intrigued.

LLMs are not sources of information and never will be. No one cares what ChatGPT thinks about anything. It's not helpful to post that, and especially not to then act like it's correct unless someone else has proof otherwise.


Why would I engage with you? You trust Large Language Models! I gave you a bit of time earlier, but that was more than enough. I don't suffer fools twice.


I dunno, this write-up both seems a lot more detailed than Wikipedia re: the hypervisor & kernel and agrees with my recollection as foolishly confirmed by an LLM:

https://www.copetti.org/writings/consoles/xbox-360/#operatin...

Appreciatively discussed on hn!

https://news.ycombinator.com/item?id=31678045

Doesn’t sound at all like the NT/2000 kernel/HAL/Executive.


crazy no image in the readmes


You can always submit a pull request


Nobody asked for that, I love it, this is brilliant, and like art.


I think not just like art, it is art. Making something for the sake of making it, not because it serves a practical need or purpose. Perhaps even because it doesn't.



Heard about this recently. Extremely fun and interesting. Would really like to try it, not sure if I should try it on a GameCube or Wii.

I believe non-x86 versions of Windows NT came with MS-DOS emulation in the form of SoftPC, at least in NT4. If anyone happens to have an appropriate copy of SoftWindows to try, that sounds like potentially even more fun.


One other cool project is that someone ported the SoftPC MS-DOS emulation layer to x86, allowing for 64-bit Windows to run 16-bit DOS software (it couldn't do this without emulation because x86-64 doesn't have access to virtual 8086 mode). Obviously there's DOSBox as well but that doesn't allow for integration into the Windows CLI like this does, so for example you can't pipe the output of a Windows program into a DOS program. https://github.com/leecher1337/ntvdmx64


I would bet you're already aware of this, but just in case you're not there was also already a Wine NTVDM port to Windows, too. It's not as interesting, but it uses no illegally-acquired code, so there is that.


DEC made fx!32 to allow x86 emulation on alpha only. They didn’t tackle ppc or mips.

https://en.wikipedia.org/wiki/FX!32


All 32 bit versions of NT had support for x86 DOS and Win16 programs, which on non-x86 systems was implemented with an emulator. FX!32 was for x86 Win32 apps, which was indeed a DEC specific thing, they seemed to be far more interested in pushing NT than IBM or SGI/MIPS, and clearly realised that they needed to run all this software being written for Windows 95 to be taken seriously as a Windows system.


DEC was one of the few vendors who built hardware designed to run multiple operating systems from day one. Alpha had VMS, OSF/1 (aka Tru64, aka Digital UNIX) and NT. VAX had VMS and Ultrix. The short MIPS era also had Ultrix. PDP-11 had RSTS/E, RSX-11, RT-11, and some early primitive OSes, and late in the game, Ultrix.

FX!32 was really cool. The Alpha systems were crazy fast compared to the Pentium systems of its time, so even using the translation layer, x86 Windows NT apps performed reasonably well under FX!32. The intent was to have that be a stop-gap until third-party software vendors made native Alpha builds of their NT apps.


Both DEC and HP were pushing for NT. (I interned at dec and worked briefly at HP while both were still pushing Alpha and PA)

HP foodnote: HP had this vision of NT at the desktop and HP/UX server iron. Folks preferred Solaris over HP/UX so that was their idea to adopt windows. The guy at hp pushing that agenda, Belluzo, eventually left and went to Microsoft.



That seems to be a version for Mac. However, the Windows NT version does seem to be on Archive.org at least:

https://archive.org/details/softwindows-32-powerpc-v1.01


I can finally live my dream of running a domain controller on my gamecube


I would guess Linux + samba4 will be a much more full featured domain controller than any copy of NT anything. So, in that way, you always could


Possible HN bug here. This URL was posted 3 times[1]. Aren't reposts normally marked automatically as duplicates?

[1] https://hn.algolia.com/?query=Windows%20NT%20for%20GameCube%...


You/I wish; no, it's just some posts that win the front-page lottery and the rest get flagged, and if flagged enough times (or by enough karma?) they get marked [dupe] by (presumably) dang

In the case of split lottery, someone emails hn@ycombinator.com and one setq [or update statement] later the threads get merged


This is an insane amount of work, holy crap


It's amusing to me that I am reading this readme and I know just what they mean about this not working with NT build 944, but then I wonder whether when they say "RTM" it would work with the build 1037 that was common warez are the time. It was the version everyone had, and if I had to rummage through closets I am sure that is the only CD I would find.


Did they implement the whole USB stack? If I remember correctly NT4 had no usb stack - USB was one of the new things in Windows 2000.


On the Wii I believe USB is mostly handled by the ARM "starlet" processor and it's IOS software, rather than the PowerPC.


I know what I'm doing later today!


Has anyone tried this on real hardware? I've searched for videos on YouTube but haven't found any.

Would love to see it running before I go searching for my old GameCube to try it myself :)


To answer my own question: This looks like it is being run on real hardware (with some sort of SD card adapter/loader):

https://www.youtube.com/watch?v=BrcZ2-I0CbQ


It doesn't work on Dolphin—probably won't for quite a while https://github.com/dolphin-emu/dolphin/pull/12426


This is pretty awesome


Great work!


why


Not the person who made this, but I suspect the reason is "because it's cool". I personally think that's a perfectly valid reason to do anything.

Why does everything we do with coding have to be for a practical purpose? When I play a video game for fun, it's not like I'm getting anything out of it. Sometimes it's fun to code up something just because you can.


cause


[flagged]


Hackers got to hack?

While my technical exploits are no where near this - I love reading about people doing odd and difficult things for fun.

(As a young teen who was obsessed with Road Rash on the Sega Game Gear, I wrote down every single save code, after every game I played, along with what I had (bike, level and cash) - after a week or so of doing this I worked out the save code and was able to give myself any level, bike or money by manually tweaking the code. I am sure that I am not the only person that discovered this, but at the time I felt like a god and enjoyed racing the later levels with the worst bikes etc. - sometimes it's just fun to do something because you can.)


See, that's what I actually mean :)

I expanded in a sub-comment: I am not challenging that it was done, I would like to hear about the motivation to do it.

There's no purpose for the result described on Github, and also no background why it was done.

I have no value to run Windows NT on a Gamecube, but I would surely enjoy the story on why it came to be :)


To port advanced new games like Minesweeper and Solitaire to their Gamecube. Freecell is indispensable of course.


How could you forget about Pinball?!?


Because they could


And I like that, I'm just literally missing a small intro on the motivation at the GitHub page.

Either way, always nice to read the chain of thought which drove someone to do something- :)


To run Office 4.2 and browse the web in Internet Explorer?


There were native builds of Word and Excel for Alpha that came with 4.2 and 97, but nothing else non-x86 except for the 'pocket' versions that came with Windows CE.


unless.. HTTPS everywhere x D


There are proxies for that.

The page doesn't seem to mention the Gamecube Ethernet card or the Wii's Wi-Fi support, so it might not have any working networking, so that might be a more important issue.


<but-why.gif>

For those that don't remember the Dreamcast, it was Sega's final system before they left the hardware business. It was based on Windows CE, another Microsoft OS without the NT kernel.


This isn't quite accurate... some games were based on Windows NT, but many others did not use that abstraction layer. The console itself didn't have an OS in the 'Windows' sense of the word.


Here's the list of Windows CE games on Dreamcast:

https://gamefaqs.gamespot.com/boards/916412-dreamcast/794530...

A short list out of 556 games developed for the console per https://www.mobygames.com/platform/dreamcast/.


I got a Dreamcast a few months ago and fired up Ducati World with great anticipation. The coolest part of the game ended up being the Windows CE logo on the boot screen... Moto Racer it certainly ain't. I immediately fired up Rez for some EDM-scored mainframe hacking to wash away the disappointment :-D


I'm surprised it's a relatively low percentage, considering the thing came with a Windows sticker (and might have shown the logo while it turned on).


The wince logo showed up while booting a wince game. There's a field in the boot file where you can drop a logo that gets inserted in the boot splash animation. Of Sega licensed games, I think it's just blank or WinCE; but for unlicensed games there's more variation, it's a nice place to acknowledge the developer OS you used.

A sticker on the front is just branding. Image search says it shows 'compatible with Windows CE' which is true. Doesn't mean it was built around it, and doesn't mean it was a good idea, but certainly some games used it. I'm sure Microsoft could have put together Windows CE for gamecube or ps2 if they wanted to, and wouldn't have needed a sticker on the front... ps1 and saturn could probably swing it too; you really just need to put drivers around the hardware and the bios functions, and maybe structure memory properly if bios functions make assumptions.


CE came on the game disc rather than the console and developers mostly preferred Sega's tooling/API.

This is a decent review of what happened with CE on Dreamcast:

https://www.youtube.com/watch?v=QKHSlBi5qok




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: