HI version is available. Content is displayed in original English for accuracy.
Advertisement
Advertisement
⚡ Community Insights
Discussion Sentiment
88% Positive
Analyzed from 7071 words in the discussion.
Trending Topics
#wii#more#project#https#macos#great#mac#used#love#com

Discussion (327 Comments)Read Original on HackerNews
> At this point, the system was trying to find a framebuffer driver so that the Mac OS X GUI could be shown. As indicated in the logs, WindowServer was not happy - to fix this, I’d need to write my own framebuffer driver.
I'm surprised by how well abstracted MacOS is (was). The I/O Kit abstraction layers seemed to actually do what they said. A little kudos to the NeXT developers for that.
With that said, I haven't developed drivers for any other platforms, so I really can't say if the abstraction is good compared to what's used by modern systems.
That said, indeed, the abstraction layer here is delightful! I know that some NetBSD devs managed to get PPC Darwin running under a Mach/IOKit compatibility layer back in the day, up to running Xquartz on NetBSD! With NetBSD translating IOKit calls. :-)
Steve was not a developer but he made it his business to care about what they cared about.
For some reason, though, it means that people overlook how NeXT’s hardware was _very_ far from fast. You weren’t going to get SGI level oomph from m68k and MO disks.
But that's a hazy, 20 year old memory.
I had been under the impression that DriverKit drivers were quite a different beast, but they're really not. Here's the layout of a NS ".config" bundle:
The driver itself is a Mach-O MH_OBJECT image, flagged with MH_NOUNDEFS. (except for the _reloc images, which are MH_PRELOAD. No clue how these two files relate/interact!)Now, on OS X:
OS X added a dedicated image type (MH_KEXT_BUNDLE) and they cleaned up a bit, standardized on plists instead of the "INI-esque" .table files, but yeah, basically the same.https://news.ycombinator.com/item?id=10006411
"At some stage in the future we may be able to move IOKit over to a good programming language"
When those fears proved not true, and devs were actually welcoming Objective-C, it was when they dropped Java and the whole Java/Objective-C runtime interop.
This isn't that ironic - reusing old names where the trademarks are already owned etc is a pretty common thing.
Usually the difference between something being well-abstracted vs poorly-abstracted is how well it's explained.
You might also be interested in this similar work: Installing Mac OS on the Nintendo Wii [video] (123pts, 37cmts): (https://news.ycombinator.com/item?id=37306018)
The author has mentioned earlier attempts to port other OSes to the Wii but it appears these works didn't get much traction here on HN except for Windows:
Lastly, since we are in the context of turning the Wii into a computer, I'd like to honorable mention: Hosting a blog on the Wii (622pts, 104cmts): (https://news.ycombinator.com/item?id=43754953)I can't imagine trying to program on a laptop with an external device, even something as portable and small as a phone, on a plane. I expect my frustration and frequently bumping things about would mean I'd get nothing done aside from having a bad time.
Although if it were me I'd probably annoy the heck out of him asking why he had a Wii on the airplane!
Can’t wait for his sequel “I received a Cease and Desist Letter from Apple; Feeling encouraged, I registered the trademark ‘Wii subsystem for macOS’”.
I mean, you need WiFi, and that's definitely a roll of the die on flights. But the last flight I had had WiFi, and the gal who sat next to me was vibe coding something.
Meanwhile I was taking photos of the seat back infotainment system's map, which showed our ETA as being before we left. Sadly, we did not time travel.
There are definitely no buses that wide.
That being said, that is absolutely amazing they brought a wii where ever they were going to write and debug this while traveling! That is dedication!
EDIT: nvm, there are multiple pictures of them traveling. First one looks bus like, second one look like an airplane.
Once he showed he went to Hawaii my idea made slightly less sense.
https://youtu.be/LQWjxAdSsHE
But man, this is way ahead of what I could do. What this dude accomplished blew my mind. Not only the output (running MacOS on a Wii), but the detailed post itself. A-MA-ZING.
> There is a zero percent chance of this ever happening.
Feeling encouraged, I started with the basics"
dude this absolutely sent me lmfao
TIL Wii has only 88MB of RAM. Fortunately games weren't electron-based.
We truly had to get away with less back then. These days it feels like there is a bit more headroom where 8 GB is on the downtrend, 16 GB is becoming the most common, and the user's apps are enjoying the extra fat.
At $349, it was almost a fully functional laptop that runs on Mac OS X (comparing to over $1000+ MacBooks or $1599 MacBook Pros)
Two friends of mine literally working remotely in an Africa trip with Dell Mini 9 and mobile hotspots and were doing video conferencing with Skype (on Wi-Fi).
[1] https://en.wikipedia.org/wiki/Dell_Inspiron_Mini_Series
[2] https://en.wikipedia.org/wiki/Hackintosh
While the updates would break things, it was not more complicated than a Linux of the mid 90s to set up, especially with “hackintosh distros” like iDeneb. Surprisingly ok, given the anemic machine!
My favorite was “it’s impossible to know which DB is failing from a stack trace”. I created STAIN (stack traces and instance names): a ruby library that would wrap an object in a viral proxy (all returns from all methods are themselves proxies) that would intercept all exceptions and annotate the call stack with the “stain”ed tag.
They've also been useful more than once, e.g. you can do that to know what iteration of a loop failed. There are of course other ways to do this, but it's hard to beat "stupid, simple, and works everywhere" when normal options (e.g. logs) stop working.
Funny enough about the Dropbox comment, it caught so much flak that it’s gone full circle and I’ve often found people defending it saying what the guy said made sense at the time etc
I guess Reddit is just less empathetic than HN
Impressive work! Now run Dolphin on it. ;)
[1] https://xdaforums.com/t/how-do-i-port-pocos-miui-camera-to-c...
[2] https://xdaforums.com/t/anxcamera-closed-on-xda-only-16th-fe...
To me, it was obviously possible, and I was determined to prove them wrong.
Anyway, this now exists because of that: https://github.com/bfirsh/jsnes
> - Everything is magenta.
was fun too
My favorite part of our online world.
Plus the internet basically equates cynicism with intelligence
There is somehow no concept of "ignorant cynicism"
This is a generally known phenomenon in psychology. If you leave a book review saying that you liked a book, people are biased to believe you are stupid. If you criticize a book negatively people are biased to believe you are smart.
[1] https://github.com/acidanthera/CryptexFixup
>Go ahead and downvote me. I am correct on every single thing I said
> The Wii uses a PowerPC 750CL processor - an evolution of the PowerPC 750CXe that was used in G3 iBooks and some G3 iMacs.
Hilarious.
Back in the old days, it was REALLY easy to initialize VGA and throw pixels around in ASM, C, or C++. The 6502 and related chips were relatively easy chips to build stuff for, even though tooling was non-existent. Shoot, you could do some really awesome things on a Tandy CoCo2 and BASIC of all things.
It feels like engineering has made this type of thing inaccessible. Most systems require a ton of knowledge and expertise. There is no easy 'in' for someone with a special interest in development. Even worse, AI is artificially dumbing things down, while making things even more inaccessible.
Godspeed.
Are there one or two instructions that aren't available ?
I guess it might be possible to trap and emulate those?
A side note: you embedded .mov videos inside <img> tags. This is not compatible with all browsers (notably Chrome and Firefox), which won't load the videos.
[ ](image_url.png)
(Of course, I can also right-click and do "Open image in new tab", but that's one click extra...)
Congrats on the awesome project, BTW! You were lucky that I wasn't sitting next to you on the plane. I would have wasted so much of your time asking dumb questions.
It’s interesting because we don’t often think about OS-level abstractions in the same way anymore — but projects like this really show how powerful they are when they’re done right.
Makes me wonder how feasible something like this would be with modern systems, where things feel more tightly coupled and security constraints are much stricter.
Amazing writeup, love this types of blog posts and hope the hawaii trip was enjoyable
Xcode is definitely not perfect, but it's IDE I'm most used to, so I ended up doing my most of my editing in it.
Now that the MacBook Neo has an A18, I wonder if you could get MacOS running on an iPhone? :)
[0]: https://x.com/khanhduytran0/status/1954724636727587237
> In the end, I learned (and accomplished) far more than I ever expected - and perhaps more importantly, I was reminded that the projects that seem just out of reach are exactly the ones worth pursuing.
Couldn't agree more. I've had my own experience porting something that seemed like an intractable problem (https://news.ycombinator.com/item?id=31251004), and when it finally comes together the feeling of accomplishment (and relief!) is great.
If you like this story, you might also like the story of how Mac OS X was ported to Intel as well.
https://news.ycombinator.com/item?id=4091216
I remember reading this back then. Amazing story. All the secrecy, and needing to be a very small team.
Not to distract too much from the main topic, but what do you think about the Hopper disassembler? I have only used Radare2, IDA Pro, and Ghidra. Though, I haven't used the latter two on MacOS. What do you prefer about Hopper? I have been hesitant to purchase a license because I was never sure if it was worth the money compared to the alternatives.
I like using it for disassembling UIKit (for my day job working on iOS apps), and overall, I like the UI/UX and how it feels like a native Mac app.
I've tried Ghidra, and while extremely impressive and capable, it might be the most Java-feeling app I've ever used. I'd love for someone to whip up an AppKit + SwiftUI shell for it.
You are correct about the UI/UX. I do think Hopper is ahead of others in that regard. Though, Radare2 being a CLI tool is nice as well. Though, I haven't attempted to use Radare2 for MacOS/iOS disassembly. Though I must ask, why are you disassembling UIKit? Looking for private API behavior or working around bugs? I've been learning more about iOS in my spare time, because despite my love for Swift, I have never used it for iOS. I only have used Swift for MacOS automation, i.e., AppleScript replacement via the Accessibility, Core Foundation, AppKit, etc..
> Ghidra, and while extremely impressive and capable, it might be the most Java-feeling app
I chuckled while reading this because I had the exact same thought when I first used Ghidra. I haven't tried Ghidra on MacOS because I will not taint my machines with the impurities of Java. I also do not want to enable Rosetta, so that was another obstacle in trying Ghidra on MacOS. In Ghidra's defense, using Java was a pragmatic choice. The "write once, run anywhere" promise of Java is likely a near-necessity for a disassembler for government operations.
Exactly this!
Surely, it must be a better option than Linux if you want to get the most out of a PC computer? At least for 10 more years.
https://www.reddit.com/r/hackintosh/
I'm not sure why it would. Why would anyone want to hack on different proprietary software with no supplier support and whose days are clearly numbered (Apple's move to ARM)?
For usability I mean. It's clearly an interesting technical feat.
So to have a fully fledged and more usable computer, for those who don't want to purchase the Apple hardware.
And the latest Mac OS still supports Intel, so you'll get many more years out of a machine. For what I know, the last 10 versions of MacOS are still very usable.
I dual-booted Mojave on 2 Wintel machines back during the Clover bootloader days, I could only tolerate it for ~2 weeks before giving up. Spoofing OEM Apple hardware is basically impossible, even with configuration-matched CPUs your motherboard will still mismatch the ACPI overrides that macOS expects. Any variety of modern GPU is basically forfeit, hardware acceleration is flaky, Metal is inhumane (with or without Hackintosh), CUDA is unsupported, Vulkan is MIA, filesystem support is a joke, and OTA updates have to be disabled or else your system volume will overwrite the partition table and erase everything that's installed. Reinstalling from scratch can take multiple days if you don't back up your EFI configuration, so you really want to avoid bricking your install while you tweak the configs to stop being broken.
Even as a developer, using a Hackintosh was a waste of my time back in 2018 when "everything was supported". In 2026, I cannot comprehend a single objective reason why you would use an x86 Hackintosh instead of a better-supported and more fully-featured Linux or WSL installation. x86_64-apple-darwin is a partially depreciated target triple that's not suitable for any macOS or Linux development work, and for prosumers the architecture is already unsupported by many professional apps. Hackintosh is a museum piece now, even OpenCore can't save it: https://blog.greggant.com/posts/2025/07/16/open-core-is-dead...
Honestly, I would have said the same. Great work!
I've never seen a device with a YUV frame buffer before. What else has one?
I wonder if the YUV conversion could be offloaded somehow to the ARM inside the Hollywood or somehow using a shader (or equivalent) if the graphics were accelerated - though maybe this is way way too much.
YUV appears to be a PAL-specific color space. I wonder how off an NTSC Wii would be. Presumably it would have the wrong color space until an equivalent conversion scheme was devised for NTSC.
I was surprised to see regional color spaces leak into the project, but I presume that Nintendo's iOS (the coincidentally-named system this is replacing) could handle that abstraction for game developers.
The Wii seems to actually use "YUV422" internally, so 4:2:2 chroma subsampling, where the chroma is only halved in one dimension. The conversion to analog NTSC or PAL signals happens later in the process. The repository here actually looks like it sets up the Wii's video interface to output NTSC progressive by default, but lets you configure for PAL with a config file.
> There is a zero percent chance of this ever happening.
Kudos to the author for being able to do make real progress in such a hostile (IMHO) environment.
Thank you for all that you do.
Much easier to do, because of the superior, more modern architecture of Windows NT. (It's not based on Apollo-era OS like OSX is.)
Always great when your debugging feedback is via a led xD
https://web.archive.org/web/20050828114013/http://www.ipodli...
EDIT: also, I just noticed on a second pass the system is addressing 78mb of ram, potentially meaning the ram spans the gddr3 and sram, I'm amazed this works as well as it does with seemingly heterogeneous memory
I kind of want to try some project like this sometime, but I wouldn't even know where to start...
As for which part was the most challenging... probably understanding the IOKit driver model. I really would have benefitted from having an expert explain some of the concepts to me, and give me some advice about how to structure my own drivers.
Yes, I know about Ardi Executor being libre and enhanced now, but that's not the point.
I'd love to spawn MiniVMAC with a free system ROM replacement and a free Mac OS 7 reimplementation.
Frustratingly, though, they haven't released any source code yet.
https://www.v68k.org/advanced-mac-substitute/
What I would like to see it's the full OS reimplementation a la AROS m68k.
There are Minivmac ports for 9front. Exegutor it's made in C++, so no way to compile it with NPE (micro-POSIX compat layer for 9front). If anyone had that under MiniVmac, it could run everywhere.
On Advanced Mac Substitute, as it has an SDL2 interface, it can be almost done unless it's written in C++. If it's ANSI C or C99, it might run under 9front.
https://github.com/Wack0/entii-for-workcubes
See also: https://gbatemp.net/threads/windows-nt-ported-to-wii.667959/
EDIT: Oh interesting, the final paragraph says NT has been ported, didn't know that. Sadly, no pun is mentioned in that project.
Maybe it was a legal worry.
That's the hacker spirit.
This is exceptional work. Unlike the low-effort slop posts I see here on "Show HN".
The build-in-public era of hacking has really turned this field into an influencer economy.
Similarly, "zero mention of AI" is just a surface-level observation that says nothing about how the project was completed and everything about your own insecurities defining the word hacker.
I'm not an LLM post hater, but it definitely has been a bit draining lately. This is exactly what I love to see here.
Well, okay, that's almost cheating.