[HN Gopher] I ported Mac OS X to the Nintendo Wii
___________________________________________________________________
I ported Mac OS X to the Nintendo Wii
Author : blkhp19
Score : 1784 points
Date : 2026-04-08 15:40 UTC (1 days ago)
(HTM) web link (bryankeller.github.io)
(TXT) w3m dump (bryankeller.github.io)
| monkpit wrote:
| > There is a zero percent chance of this ever happening.
|
| Honestly, I would have said the same. Great work!
| lanyard-textile wrote:
| Absolutely atrocious. Congratulations!
|
| That's the hacker spirit.
| mghackerlady wrote:
| I'm pretty sure someones done this for the 360. Also, doesn't NT
| have a wii port?
| nticompass wrote:
| There was a PPC version of Windows NT, and yes someone put it
| on the Wii!
|
| https://github.com/Wack0/entii-for-workcubes
|
| See also: https://gbatemp.net/threads/windows-nt-ported-to-
| wii.667959/
| zymhan wrote:
| That was it, I knew someone ported an OS to a Wii recently,
| thank you
| hirvi74 wrote:
| Exceptional work. While it may not mean much, I am truly
| impressed. I like to toy with reverse engineering here and there,
| but such a port like this would take me multiple lifetimes.
|
| 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.
| blkhp19 wrote:
| Thank you for the kind words!
|
| 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.
| xandrius wrote:
| You made me curious: why would you need to disassemble UIKit
| for iOS as part of your day job?
| crazysim wrote:
| Sometimes things aren't documented and sometimes they could
| be documented wrong.
| blkhp19 wrote:
| There are bugs and undocumented behaviors that need to be
| understood in order to be worked around - I wish it wasn't
| the case but such is life developing for closed-source
| platforms.
| hirvi74 wrote:
| > _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._
|
| 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.
| blkhp19 wrote:
| > Looking for private API behavior or working around bugs?
|
| Exactly this!
| saagarjha wrote:
| I've had it on my list to do for a very long time but
| unfortunately it has never gotten much effort. Although at
| this point I'm not super happy with the design (I feel like
| it's built to be slow...) and I might build on top of
| something more modern like Binary Ninja instead.
| nticompass wrote:
| This is awesome! I can't wait to plug in my Wii and give it a try
| myself.
| MaxLeiter wrote:
| Great write-up. I love hardware running software it shouldn't
| support
| davenporten wrote:
| Hahaha! Yes! We need more of this in the world, love it!
| soci wrote:
| Back in the day I was a hardcore Mac nerd and became a
| professional at it too. My best reverse-engineering trophy was
| building one of the first "iOS" apps when there was not an
| official appstore for the iPhone.
|
| 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.
| blkhp19 wrote:
| Thank you for the kind words :)
| MarceliusK wrote:
| Pre-App Store iPhone stuff was its own kind of wild west
| swiftcoder wrote:
| Damn, that's some dedication! Congrats on getting it running
| serhack_ wrote:
| awesome, good to see some real content from pre-AI moment
| rvz wrote:
| The post is a work of an actual hacker who knows what they're
| doing. Zero mention of "I used Claude" or "Used AI" to understand
| what is needed for accomplish this task.
|
| This is exceptional work. Unlike the low-effort slop posts I see
| here on "Show HN".
| bigyabai wrote:
| Ah, the Procrustian definition of "real hacker", where using AI
| disqualifies you but using Github pages is considered only a
| minor infraction.
|
| The build-in-public era of hacking has really turned this field
| into an influencer economy.
| jasaldivara wrote:
| Whats wrong about Github pages?
| dewey wrote:
| A real hacker would obviously never use a Microsoft
| product, or worse, post on a VC funded web forum!
| bigyabai wrote:
| Absolutely nothing. People protest Github to virtue signal
| their anti-Microsoft sentiment and fill a hole in their
| personality.
|
| 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.
| blkhp19 wrote:
| I used plenty of non-agentic AI to help understand the XNU
| codebase, and also research various topics. It wasn't always
| correct, but it certainly helped at times! My philosophy for
| this project was to use it as a learning tool - since that was
| kind of the whole point of me attempting this :)
| dirasieb wrote:
| looks like they did use AI, swing and a miss for the luddites
| once again!
| xoxxala wrote:
| Very neat project and an extremely enjoyable read.
| tiffanyh wrote:
| Amazing work.
|
| 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
| dormento wrote:
| Oof linkrot :(((((
|
| I remember reading this back then. Amazing story. All the
| secrecy, and needing to be a very small team.
| jrmg wrote:
| https://web.archive.org/web/20141228042901/http://www.tuaw.c.
| ..
| bsimpson wrote:
| Blogspam about this Quora post from the founding engineer's
| wife: http://www.quora.com/Apple-Inc-2/How-does-Apple-keep-
| secrets...
| guyzero wrote:
| In addition to the incredible engineering work here the OP
| casually flexes by showing the development happening _in an
| economy class airplane seat_.
| nine_k wrote:
| This is the most incredible part. I cannot even use a laptop
| adequately in an economy class seat, I cannot position the
| screen so that I could see it, and the keyboard so that I could
| type on it, at the same time. (To say nothing of connecting a
| Wii.)
| lamasery wrote:
| I struggle so much to even comfortably _play_ a _handheld_
| video game system on a plane, let alone use a laptop (I have
| also tried that) that I 've mostly given up on even trying
| and just line up a few albums on my phone to listen to and
| close my eyes as much as possible.
|
| 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.
| weberer wrote:
| Get a pair of XR glasses. I bought some Viture glasses a few
| years ago and they have been perfect for flights.
| pa7ch wrote:
| I can't imagine concentrating on a complicated project like
| that on the go, but I went back to stare in awe at said picture
| and I think its a train or bus. Still a flex.
| badc0ffee wrote:
| Still looks like a plane to me, with rows of 2-3-2 seats.
|
| There are definitely no buses that wide.
| blkhp19 wrote:
| My Wii has been on many planes and trains - and yes, there
| is a photo of each in my post.
| jventura wrote:
| It seems a bus to me, just look at the size of the windows.
| Airplanes don't have windows like that..
| ooboe wrote:
| The picture with the black seats in on a train and the one
| with the green seats is on a plane.
| asimovDev wrote:
| because of the mix of boredom, very shoddy internet that
| drops constantly and ANC earbuds removing distractions, I
| often find myself getting in the zone while riding the train
| back home from the office. As the kids say, I lock in
| slackfan wrote:
| What's flex-worthy about this? There's a lot of dev work that
| goes on in economy class airplane seats. Or are VC valley
| programmers so rich they fly business everywhere?
| badc0ffee wrote:
| It's uncomfortable and awkward (the Wii was on his leg in the
| first shot), and often you need to break concentration and
| pack things up to let someone out of or into their seat.
| eastbound wrote:
| Which means no access to Claude.
|
| 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'".
| lamasery wrote:
| "I've now received my Cease and Desist letter from Nintendo
| over their Wii trademark. Feeling encouraged, I've written a
| full seven-world Super Mario Brothers sequel for macOS on the
| Wii that I've titled 'Newer Super Mario Brothers Wii
| Subsystem for macOS'"
| deathanatos wrote:
| Why would there be no access to Claude?
|
| 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.
| xp84 wrote:
| I was on a flight next to someone vibe coding on Cursor via
| Starlink the other day. It was my first flight with
| Starlink.
| varispeed wrote:
| Imagine if he was developing it on a laptop found at a refuse
| site that was still charged, just hiding in the hedge so that
| guards wouldn't see him.
| jedberg wrote:
| And the guy next to him is just staring at his phone, probably
| thinking, "I'm not even gonna ask".
|
| Although if it were me I'd probably annoy the heck out of him
| asking why he had a Wii on the airplane!
| hbn wrote:
| Looks like a Switch 2 actually.
| jedberg wrote:
| You're totally right, it's a Switch 2.
| xp84 wrote:
| I don't get it, how is he getting OS X running "on a Wii"
| on a Switch 2?
| saagarjha wrote:
| It's what the guy next to him has.
| dan353hehe wrote:
| I think it is a bus maybe? I can see out a window over some
| seats, and the overhead compartments don't really look like
| ones i've seen before.
|
| 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.
| MBCook wrote:
| At first I thought it might be a train. "Surely he's not
| doing that on a plane".
|
| Once he showed he went to Hawaii my idea made slightly less
| sense.
| easton wrote:
| Apple had a commercial about this a million years ago, where a
| guy decides to edit a video on a plane.
|
| https://youtu.be/LQWjxAdSsHE
| nxobject wrote:
| Huh - I know Apple's first PowerBook 100 had an ad with Shaq
| on a plane, and then later one with Yao Ming... I guess Apple
| really wanted to crack the "I'm working on a plane damn it"
| market?
| kilpikaarna wrote:
| That stood out to me as well. Specifically: how did he power
| the Wii?
| argsnd wrote:
| Many planes have AC power outlets, the Wii uses <20W.
| Thorrez wrote:
| In one of the pictures, the laptop is on his tray, and the wii
| is on the tray of the seat next to him, and that seat looks
| empty. So the wii got its own airplane seat?
| frakt0x90 wrote:
| If all the AI stories on this site were replaced with amazing
| stuff like this, the world would be a better place.
| kstrauser wrote:
| Get to submitting! Be the change you want to see.
| jjice wrote:
| I probably have rose colored glasses, but this is what I
| associate with Hacker News when I first started coming to this
| site. Truly absurd projects for no reason other than the love
| of the game and detailed write ups.
|
| 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.
| mech422 wrote:
| yeah - I wish the 'Hacker' part of 'HackerNews' got more
| attention. Last few years it often feels more like "VC-
| Buzzword-of-the-day-News" - AI is just the most recent cycle.
| raw_anon_1111 wrote:
| You realize who runs the site right?
| twoodfin wrote:
| I'm SOO happy but also wistfully sad when I open a post like
| this that I am desperately excited to read and it's not
| muddled-thinking- and LinkedInese-riddled slop.
| stavros wrote:
| This is excellent, though if you had chosen another OS, you could
| have called the project Wiindows.
|
| EDIT: Oh interesting, the final paragraph says NT has been
| ported, didn't know that. Sadly, no pun is mentioned in that
| project.
| snazz wrote:
| "entii-for-workcubes" is a pretty good pun!
| stavros wrote:
| I don't know man, "Wiindows" was right there and they chose
| "entii"? I weep for the missed opportunity more than
| anything.
|
| Maybe it was a legal worry.
| leonidasv wrote:
| Nice work and write-up!
|
| 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.
| efdee wrote:
| If it's not working on Chrome nor Firefox, it's safe to say
| it's incompatible with almost all browsers.
| leonidasv wrote:
| It works on Safari.
| blkhp19 wrote:
| I only tested on Safari - whoops! Fixed now.
| tverbeure wrote:
| Minor usability comment: the screenshots are too small to
| be readable. Whenever that's that case in my blog posts, I
| make those screenshots clickable and add _(Click to
| enlarge)_ below it, to make it easier for readers to see
| the image are original resolution. In markdown, I do that
| like this:
|
| [ ](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.
| blkhp19 wrote:
| Images now expand when clicked - thanks for the feedback!
| BLKNSLVR wrote:
| Only tested on Safari running on a Wii?
| tengbretson wrote:
| Works on Orion.
| blkhp19 wrote:
| Whoops, thanks! Fixed.
| c0_0p_ wrote:
| Fantastic work and a great write up.
| NetOpWibby wrote:
| Before figuring out how to tackle this project, I needed to know
| whether it would even be possible. According to a 2021 Reddit
| comment: There is a zero percent chance of this ever
| happening. Feeling encouraged, I started with the
| basics: what hardware is in the Wii, and how does it compare to
| the hardware used in real Macs from the era.
|
| I LOL'd
| nancyminusone wrote:
| Gotta love that particular Redditors follow up comment:
|
| >Go ahead and downvote me. I am correct on every single thing I
| said
| dpoloncsak wrote:
| Tempted to necro a 5 year old reddit post just to tell that
| guy he was wrong, honestly
| oceansky wrote:
| Comments are blocked there
| noman-land wrote:
| Make a new thread calling them out personally.
| lossyalgo wrote:
| Post a link so we can upvote for visibility :)
|
| Nevermind, wasn't hard to find: https://www.reddit.com/r/
| wii/comments/1sfzacl/porting_mac_os...
| Jeremy1026 wrote:
| User hasn't posted in 4 years. Sadly, they'd probably never
| see it.
| ErneX wrote:
| I wanted to, but no replies are allowed now :)
| LimeLimestone wrote:
| I tried messaging them and it says I'm not allowed to
| message them. Weird, never had that happen to me
| zamadatix wrote:
| This is why Reddit defaults to archiving posts (preventing
| new comments or votes) after 6 months.
| dfxm12 wrote:
| The comment score is 1. It doesn't even have a controversial
| flag. The gamification of social media is a mistake.
| arcfour wrote:
| The best part is the comment ranting about how the Wii's CPU
| is so fundamentally different, and then:
|
| > The Wii uses a PowerPC 750CL processor - an evolution of
| the PowerPC 750CXe that was used in G3 iBooks and some G3
| iMacs.
|
| Hilarious.
| glenstein wrote:
| I almost think such projects are worth it just to immortalize
| comments like these. There's a whole psychology of wrongness
| that centers on declaring that not-quite-impossible things will
| definitely _never_ happen, because it feels like principled
| skepticism.
| blkhp19 wrote:
| I'd be lying if I said it wasn't a very tiny part of my
| motivation :)
| bombcar wrote:
| It's a variation of "because it's there" when asked why
| would you climb some giant mountain.
|
| Impressive work! Now run Dolphin on it. ;)
| inlined wrote:
| That used to be my thing: wherever our ops manager declared
| something was impossible, I'd put my mind to proving her
| wrong. Even though we both knew she might declare something
| impossible prematurely to motivate me.
|
| 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.
| glenstein wrote:
| Well you're doing gods work as far as I'm concerned.
| Conflating difficulty in practice with impossibility in
| principle is, to my mind, a source of so much unnecessary
| cognitive error.
| xattt wrote:
| The declaration of an impossibility of a given task or
| goal is a reflection of the perceived barrier by the
| individual, rather than the task itself.
| itsamario wrote:
| Wise men speak when needed; fools because they want
| deathanatos wrote:
| https://fabiusmaximus.com/2017/12/27/arthur-c-clarke-
| hazards...
| prpl wrote:
| Adversarial software development is also when I do my best
| work
| whycome wrote:
| Adversarial personal development is definitely a thing
| too.
| Groxx wrote:
| I've seen more than one half-joke-half-serious chunk of
| code that would "encode" arbitrary info into stack traces
| simply by recursively calling `fn_a`, then `fn_s`, `fn_d`,
| and `fn_f` before continuing with the actual intended call,
| giving you a stack trace with (effectively) "asdf" in it.
|
| 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.
| 0x70dd wrote:
| Reminds me of https://github.com/jtolio/gls which
| implement a "thread local storage" in golang
| saagarjha wrote:
| Yeah, I've implemented this before as a protest against
| Apple stripping crash logs of information.
| alexchantavy wrote:
| The solution to every software problem is another layer of
| indirection :-)
| btown wrote:
| Similarly, one of the great things about Python (less so JS
| with the ecosystem's habit of shipping minified bundles) is
| that you can just edit source files in your site_packages
| once you know where they are. I've done things like add
| print statements around obscure Django errors as a poor
| imitation of instrumentation. Gets the job done!
| mlaretallack wrote:
| 100% agree, I find that sometimes I hit a dead end, but the
| things I build or learn on the way are usable at a later
| date.
| mikepurvis wrote:
| Love that it's actually linked as well; too bad that user
| isn't still active.
| Groxx wrote:
| They're kinda like high-effort shitposts. Which are my
| absolute favorite kind. The worse the effort/reward payoff,
| and the more it makes you ask "WHY??!!?", the better.
| pnptransistor wrote:
| Now tell me your opinion on P==NP being confirmed within 5
| years.
| Waterluvian wrote:
| P == NP && P !== NP
| jasomill wrote:
| Only in the very special case of N=1+e for infinitesimal
| values of e.
| dj68k wrote:
| I'm remindded of my favorite immortalized comment, "No
| wireless. Less space than a Nomad. Lame." Rob Malda of
| Slashdot, 2001, dunking on the iPod when it debuted.
| gxs wrote:
| So many. The Dropbox comment on HN
|
| 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
| gxs wrote:
| Yes, I've found at work that the best way to get me off my
| ass and work furiously is to tell me something isn't possible
| BlueRock-Jake wrote:
| Agreed. Also who doesn't like knocking a smug commenter down
| a peg
| MomsAVoxell wrote:
| The missile knows at all times where it is, by knowing at all
| times where it isn't.
| addybojangles wrote:
| So much has happened in the tech world because someone wrote at
| one point, "You can't do that"
|
| My favorite part of our online world.
| bsimpson wrote:
| > Readers with a keen eye might notice some issues:
|
| > - Everything is magenta.
|
| was fun too
| krylon wrote:
| I had the same reaction.
| wpm wrote:
| I have a project on my desk that started as a response to a
| line in the Adafruit docs for their RP2040 based MacroPad
| It is not possible to add BLE or WiFi at this time to the
| MacroPad.
|
| Oh yeah, really? There is a port hanging off the side that can
| be reconfigured for UART, are you sure Adafruit, what if I add
| an ESP32?
| bluedino wrote:
| Wasn't the old Linux joke, don't ask "how do I do X with Linux"
| (because you'd get ridiculed for not reading the docs) but
| instead, just state "X isn't possible with Linux" and then
| someone would show you how it's done?
| gbalduzzi wrote:
| Or eventually you could answer wrongly to a question without
| answers, triggering plenty of correct ones
| chrisweekly wrote:
| yeah, it's an interesting socio-psychological phenomenon
| gxs wrote:
| Ha so well known it has a name, Cunningham's law
| ex-aws-dude wrote:
| HN is not as bad but I think a lot of internet commenters do
| this because it gives them a little hit of superiority
|
| Plus the internet basically equates cynicism with intelligence
|
| There is somehow no concept of "ignorant cynicism"
| talkfold wrote:
| The "zero percent" guy definitely opened a browser tab to check
| after the post went live.
| 0xc133 wrote:
| I've never seen someone go to so much effort just to prove a
| random Redditor wrong, but I am impressed.
| xeonax wrote:
| Its a great motivator, happened with me too, I once asked a
| question about getting the original camera on custom rom and
| got this as a response [1]. This lead to 2 year long project
| [2] and an awesome time full of learnings and collaboration
|
| [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...
| userbinator wrote:
| Reminds me of the old saying "don't interrupt the one doing it,
| to tell him it can't be done."
| NetOpWibby wrote:
| I love this
| jasomill wrote:
| I thought the same thing about running macOS Ventura on pre-
| AVX2 Macs until this[1] showed up.
|
| [1] https://github.com/acidanthera/CryptexFixup
| bfirsh wrote:
| I got the idea of writing an emulator in JavaScript in the pre-
| Chrome era, circa 2007. I remember searching around trying to
| find whether somebody had done it before. It seemed not, and
| somebody on a forum declared "that's not possible".
|
| 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
| unanonymousanon wrote:
| This is extraordinary, not only pushing the limit but documenting
| everything so clearly to show people what can be accomplished
| with time and dedication. Thank you for such thorough
| documentation, and congrats on getting it done!
| eats_indigo wrote:
| honestly expected this port to be headed in the opposite
| direction
| zdware wrote:
| Fun post.
|
| Always great when your debugging feedback is via a led xD
| dpedu wrote:
| How about a piezoelectric buzzer? That's how the firmware on
| some iPods were first dumped.
|
| https://web.archive.org/web/20050828114013/http://www.ipodli...
| rayiner wrote:
| Not only is this an insanely cool project, the writeup is great.
| I was hooked the whole way through. I particularly love this
| part:
|
| > 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.
| geerlingguy wrote:
| And there are enough parallels to Linux's stack, I'm thinking
| about looking through the Linux on Wii project more and
| comparing how it handles fb issues in comparison. I loved
| reading this whole post, crazy how many OSes have now been run
| on the humble Wii!
| spijdar wrote:
| IOKit was actually built from the ground up for OS X! NeXT had
| a different driver model called DriverKit. I've never coded
| against either, but my understanding was they're pretty
| different beasts. (I could be wrong)
|
| 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.
| :-)
| erichocean wrote:
| As I remember it, they were basically the same--but IOKit is
| C++ (with restrictions) because 3rd party developers didn't
| want to learn Objective-C.
|
| But that's a hazy, 20 year old memory.
| steve1977 wrote:
| From here:
|
| 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"
| xenadu02 wrote:
| IOKit was almost done in Java; C++ was the engineering
| plan to stop that from happening.
|
| Remember: there was a short window of time where everyone
| thought Java was the future and Java support was featured
| heavily in some of the early OS X announcements.
|
| Also DriverKit's Objective-C model was not the same as
| userspace. As I recall the compiler resolved all message
| sends at compile time. It was much less dynamic.
| pjmlp wrote:
| Mostly because they thought Objective-C wasn't going to
| land well with the Object Pascal / C++ communities, given
| those were the languages on Mac OS previously.
|
| To note that Android Things did indeed use Java for
| writing drivers, and on Android since Project Treble, and
| the new userspace driver model since Android 8, that
| drivers are a mix of C++, Rust and some Java, all talking
| via Android IPC with the kernel.
| lukeh wrote:
| There was also the Java-like syntax for ObjC but I don't
| think that ever shipped.
| spijdar wrote:
| Yes, you're right! I'm just dolt who's never checked what a
| .kext on OS X actually is.
|
| 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:
| ./CG6FrameBuffer.config/English.lproj
| ./CG6FrameBuffer.config/English.lproj/Info.rtf
| ./CG6FrameBuffer.config/English.lproj/Localizable.strings
| ./CG6FrameBuffer.config/CG6FrameBuffer_reloc
| ./CG6FrameBuffer.config/Default.table
| ./CG6FrameBuffer.config/Display.modes
| ./CG6FrameBuffer.config/CG6FrameBuffer
|
| 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:
| ./AirPortAtheros40.kext/Contents
| ./AirPortAtheros40.kext/Contents/_CodeSignature ./Air
| PortAtheros40.kext/Contents/_CodeSignature/CodeResources
| ./AirPortAtheros40.kext/Contents/MacOS
| ./AirPortAtheros40.kext/Contents/MacOS/AirPortAtheros40
| ./AirPortAtheros40.kext/Contents/Info.plist
| ./AirPortAtheros40.kext/Contents/version.plist
|
| 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.
| pjmlp wrote:
| Yes, also the same reason why Java was originally
| introduced, Apple was afraid that the developer community
| educated in Object Pascal / C++, wasn't keen into learning
| Objective-C.
|
| 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.
| steve1977 wrote:
| Funnily enough, there is a (different) DriverKit in macOS
| again now ;)
| twoodfin wrote:
| There's a great video of a NeXT-era Steve Jobs keynote
| floating around--I think the one where he announces the x86
| port as NeXT was transitioning to a software-only company--
| where he specifically calls out DriverKit and how great it
| is.
|
| Steve was not a developer but he made it his business to care
| about what they cared about.
| nxobject wrote:
| Yeah - even from the start, I remember NeXT marketing was
| spending a disproportionate amount of their time selling
| NeXT's "object technology", AppKit and Interface Builder,
| DPS as an advanced graphics model. It was good hunch from
| Steve, given how how modern NeXTSTEP feels in retrospect.
|
| 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.
| lukeh wrote:
| Yup, even with a hard drive the m68k turbo slab was no
| speed demon. Wasn't too bad on HPPA though.
| pjmlp wrote:
| Driver Kit used Objective-C, and ironically it is back, as
| Apple gave the same name to the userspace driver model
| replacement for IO Kit.
| blkhp19 wrote:
| I felt similarly. The learning curve was a tad steep,
| especially since I had never written a driver before, but once
| I figured out how to structure things and saw the system come
| alive, I grew to appreciate the approach IOKit takes.
|
| 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.
| steve1977 wrote:
| I guess having targeted multiple architectures and in the case
| of OPENSTEP also operating systems early on certainly helped.
| phendrenad2 wrote:
| > I'm surprised by how well abstracted MacOS is (was).
|
| Usually the difference between something being well-abstracted
| vs poorly-abstracted is how well it's explained.
| shermantanktop wrote:
| I'd say it's more about how much explanation is needed. There
| are cool abstractions that require explanation because they
| aren't intuitive at first, and then it clicks. But usually if
| I find endless explanations of why indirection is better
| because it aligns with someone's conceptual model, that's to
| me a bad abstraction. Not because it's leaky, but because it
| resists understanding.
| MarceliusK wrote:
| Once he could satisfy the expected interfaces well enough, the
| rest of the system seems to have been surprisingly willing to
| play along
| bottlepalm wrote:
| And here I am shopping for Macs because getting a hackintosh
| working from a VM on Windows is too difficult for me.
| WorldPeas wrote:
| Given that the original Apple TV ran on a modified version of
| macos, what are the chances one could turn an old wii into an
| Apple TV..?
|
| 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
| zydeco wrote:
| I'd say there is a zero percent chance of this ever happening
| :D The original Apple TV was an Intel Core Solo with 256 MB of
| RAM and an nVidia GPU, running a modified Mac OS X 10.4 that
| booted into something similar to Front Row instead of Finder.
| WorldPeas wrote:
| Oh interesting, it looks like that geforce had an entire 64mb
| of gddr3 too, it'd still be fun to see if one could limbo
| that low, though I agree that save for upgrading the BGA ddr3
| of the wii to something more the size of the dev kit
| had(128mb GDDR3)
| CrazyStat wrote:
| Apple TV came after the switch to Intel processors, so you
| would have to have some kind of reverse-Rosetta layer to run it
| on a PowerPC Wii.
| zadikian wrote:
| Tiger had a native PPC version too
| vsgherzi wrote:
| This is some amazing work, a good reminder to dig more into
| operating systems for myself!
| rado wrote:
| Great, how about on iPhone?
| rdanieli wrote:
| nice!
| nickpeterson wrote:
| The one that really bugs me is the Apple TV. It would be a great
| little box to use for terminals/thin client style work and there
| are a ton of old cheap ones. Having a $50 dollar used box that
| was low power and could run OSX would be great.
| zadikian wrote:
| The original one does run a modified OS X Tiger. I jailbroke it
| a while ago to run custom stuff, but didn't do much with that.
| Just remember being able to VNC or SSH into it.
| wpm wrote:
| Good news, just today a bypass was released to allow any EFI
| bootloader to work on the original Apple TV
| https://github.com/DistroHopper39B/ATV1sm
| raw_anon_1111 wrote:
| Hell Apple's latest monitors have an A19 Pro chip in them which
| are more powerful than the MacBook Neo.
| Tepix wrote:
| They're more than $50 however.
| Tepix wrote:
| Aren't those Android boxes that you can get for less than $30
| and then flash Linux (Armbian etc) onto a much better option?
| kogasa240p wrote:
| Wonder if it can happen on the Wii U
| blkhp19 wrote:
| With the extra RAM, higher clock speed, and no need to waste
| CPU cycles converting YUV -> RGB framenbuffers - I bet it would
| be!
| mackid wrote:
| Congrats, great project and great writeup. That would have won
| MacHack back in the day.
|
| Now that the MacBook Neo has an A18, I wonder if you could get
| MacOS running on an iPhone? :)
| Xerox9213 wrote:
| Or better yet, an iPad!
| krsw wrote:
| There is a zero percent chance of that ever happening.
| gaudystead wrote:
| Are you willing to elaborate on the _why_ or is this a
| challenge comment, similar to the reddit comment that spurred
| this project? ;)
| xuki wrote:
| Go ahead and downvote krsw, he is correct on every single
| thing he said.
| LoganDark wrote:
| I wonder if you can place an A18 from a Neo onto an iPhone
| board, and then make that work somehow... You wouldn't be able
| to use the one originally from the iPhone because it's
| differently fused to only accept iOS images.
| circuit10 wrote:
| Is it possible that a jailbreak is found that could allow a
| "kexec" kind of thing to load a new OS? Of course it would be
| a huge amount of work even if theoretically possible
| dadoum wrote:
| marcan once said this was not possible on M1 macs. It was
| possible before, as coolbooter demonstrated, but it seems
| now that the hardware cannot be completely reinitialized
| without being power cycled (it was on Mastodon in 2024, he
| has since deleted his account so I cannot give you the
| exact quote). But you can do wizardry to load macOS'
| userspace on top of iOS' kernel [0] with a jailbreak.
|
| [0]: https://x.com/khanhduytran0/status/1954724636727587237
| saagarjha wrote:
| You can't reinitialize the hardware, but if whatever you
| are trying to load is compatible with what's going on,
| then it should work. In a sense you could consider kexec
| to be like booting on a kind of weird machine where your
| interface to talking to the hardware is whatever macOS
| initialized the devices to.
| msephton wrote:
| It's already been done
| https://www.reddit.com/r/jailbreak/comments/1mn7mk1/your_jai...
| k38f wrote:
| Debugging kernel panics on a Wii in an economy seat is a level of
| focus I can't even imagine. Most people can't read a book on a
| plane without losing their place every 5 minutes.
| zadikian wrote:
| My favorite part of this is the detour to ask for the IOUSBFamily
| src on IRC
| carlosjobim wrote:
| They are successfully porting Mac OS onto every kind of modern
| computer over at the hackintosh subreddit, and I can't understand
| why there is so little interest for this stuff in the "hacker"
| sphere.
|
| 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/
| nancyminusone wrote:
| >better option than Linux
|
| 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.
| carlosjobim wrote:
| Because it has all the advantages of Linux + all the
| advantages of Windows + many advantages of its own.
|
| 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.
| bigyabai wrote:
| Have you ever tried daily-driving a Hackintosh? It's
| nothing like using a Mac, or even a Windows/Linux machine
| for that matter.
|
| 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...
| carlosjobim wrote:
| System updates not working or being complicated is a
| given.
|
| About the other things you mention: What do they mean in
| practice? That video games don't work, or that
| photo/video editing doesn't work?
|
| How does filesystem support differ from MacOS installed
| on a Mac?
|
| From what I understand your comment is only from the
| perspective of a developer? But there are many other uses
| for a computer.
| bigyabai wrote:
| You didn't answer my question - have you tried making a
| Hackintosh yourself?
|
| I'm writing from the perspective of a tech-savvy Windows
| user that had triple-boot working on my desktop and
| laptop. I'm willing to deal with _some_ system
| configuration, but it took upwards of 12 hours to
| configure my EFI _for each_ unique device I wanted to
| Hackintosh. And it _still_ didn 't fix my iCloud or get
| my laptop trackpad working.
|
| That is an entirely unacceptable process for someone who
| isn't a developer. I cannot recommend anyone use an OS
| that blocks OTA security updates, let alone people that
| can't/don't/won't program.
| carlosjobim wrote:
| No I haven't, if I had I wouldn't have needed to make
| follow up questions.
|
| But if you follow a guide from somebody who has
| hackintoshed the exact same device you have, then it
| shouldn't take that long, or am I missing something? The
| posts in the hackintosh subreddit generally details what
| will work and not work.
| tombelieber wrote:
| This rules. It's exactly the kind of cursed side quest that
| sounds fake until you read the writeup and realize you actually
| did the work.
| lampiaio wrote:
| As someone who's been trying to do something VERY similar (port
| Mac OS 9 to the Nintendo Wii U), all I can say is I'm 1)
| absolutely impressed, and 2) absolutely encouraged, as my project
| keeps telling me "this is impossible" at every opportunity.
| blkhp19 wrote:
| Very cool! I'd love to learn more. That seems extra challenging
| considering Mac OS 9 is closed source!
| itomato wrote:
| You are at a slight disadvantage without XNU and Darwin
| sources, but you can have leaked System 7.1 source, Ghidra and
| MCP to help make up the difference.
|
| Godspeed.
| oliad1 wrote:
| Nice project! Love seeing emulators & ports
| spiderice wrote:
| I bet if me-20-years-ago knew that current me would have no
| fucking clue how to even begin to tackle a problem like this,
| me-20-years-ago would be very disappointed. Very jealous of your
| expertise. Awesome work!
| dejongh wrote:
| Great hack!
| postalcoder wrote:
| Sorry if off topic but I was struck by the view from your window.
| Were you in Hanalei Bay?
| blkhp19 wrote:
| I was - incredible views indeed!
| postalcoder wrote:
| Your post and pictures brightened up my day. Thanks!
| hassaanr wrote:
| In love with projects that are done solely because 'why the hell
| not'. Fantastic writeup and work.
| bredren wrote:
| It is satisfying to see someone hacking on deprecated hardware
| and software also is keen to look forward into Vision Pro.
| bsimpson wrote:
| This is excellent.
|
| 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.
| duskwuff wrote:
| YUV is a color model, akin to RGB or HSL; it's independent of
| video formats like NTSC or PAL.
| TazeTSchnitzel wrote:
| That's true in broad strokes, but looking into it, it turns
| out NTSC's variant of YUV is called YIQ, and SECAM's variant
| is called YDbDr. They are however all more or less the same
| thing, and the digital YUV used by the Wii hardware in this
| case is presumably independent of the video standard.
| zerocrates wrote:
| Some of this is just really widespread imprecise usage of
| terms: what really should be called "YCbCr" in digital contexts
| is frequently called "YUV." So-called "YUV" digital formats for
| video are really really common, and they're used for both NTSC
| and PAL. "YUV420," YCbCr using 4:2:0 chroma subsampling so the
| two color components are half the resolution in each dimension
| vs. the luma, in particular is super-common.
|
| 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.
| saagarjha wrote:
| Nit: Nintendo's thing is called IOS
| cyrialize wrote:
| The Wii is very moddable. I've modded my Wii in the past just for
| playing modded versions of Super Smash Brother Melee (mainly
| training packs, like flashing a red light when I miss an
| L-cancel).
| blkhp19 wrote:
| Yes - this project (and countless others) would not have been
| possible without the incredible work to hack the Wii from Team
| Twiizers (now fail0verflow) back in the day. The work they did
| was a huge inspiration for me getting into computer science
| when I was a teenager.
| dansalvato wrote:
| I wrote that L-cancel training code! Funny to see it come up
| out of nowhere. I too have always adored the Wii and its
| moddability. It'd be my go-to choice if I someday ever get the
| itch to write console homebrew software of my own.
| cyrialize wrote:
| Oh hi! I'm a huge fan of your work! I've watched so many
| videos breaking down Doki Doki Literature Club.
|
| Thank you for all that you do.
| raincole wrote:
| > As for RAM, the Wii has a unique configuration: 88 MB total
|
| TIL Wii has only 88MB of RAM. Fortunately games weren't electron-
| based.
| zamadatix wrote:
| Another funny history fact with the Wii is Windows Vista
| released the same month in North America. People were so upset
| that the minimum requirement for Vista said 512 MB (which was
| already more than the average existing home PC of the time had
| without an upgrade) but it ran like crap unless you had more.
|
| 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.
| vachanmn123 wrote:
| Recently I was ranting about this very thing, my work machine
| running win 11 has 16gb ram and Windows just sits at 8Gb on
| idle. My first laptop had 1 gig of ram... until I got my mac
| (16GB M1 Air) I used to manage with 4GB RAM while serving
| clients... Optimization seems to have been forgotten these
| days
| raw_anon_1111 wrote:
| I really wish this meme would die. Every modern operating
| system - macOS, Linux and Windows - use available memory
| for certain performance optimizations. It doesn't mean when
| needed, that memory isn't available for other applications
| and your computer just starts swapping.
| jaen wrote:
| I wish the "optimizations" meme would die as well, read
| my comment upthread on how that's generally inaccurate.
| raw_anon_1111 wrote:
| I can 100% guarantee you that if you have a computer with
| 8GB RAM, the computer wouldn't start swapping if you
| brought up a new process that needed 4 of those 8GB even
| though it says the operating system is using "8GB RAM"
| tiagod wrote:
| The reason it sits at 8GB on idle is... optimization. The
| memory is there to be used, so the OS will use it to
| improve performance until it's needed for more important
| tasks.
| jaen wrote:
| That's a blatant simplification, and does not match
| reality as far as I've seen.
|
| The OS only only has one large source of memory it uses
| "optimistically" - the file/buffer cache. But that's
| _tracked separately_ , so it doesn't show up in normal
| memory usage numbers (unless you _don 't know how to read
| them_).
|
| The other source of "extra" memory usage is memory mapped
| executable files, which can be unmapped and then read
| back on demand. That's quite small though.
|
| Everything else (mostly) is _actual_ memory usage caused
| by _actual_ drivers and programs (though it can be
| swapped, but that 's a major perf hit).
|
| The major reason for Windows memory bloat is the hundreds
| of inefficient services from both Microsoft and hardware
| vendors that run at startup. The "optimization" pool
| (let's not call it that way) is way smaller than that.
|
| eg. pre-loading an application is a _pessimization_ if
| there 's not enough memory - not only does it permanently
| eat away a portion of the total memory due to the
| intricacies of Windows working set memory management, it
| will need to be swapped out when actual demand for memory
| arises, competing with other disk access.
|
| The only actual "optimization" in Windows is Superfetch,
| and that _barely_ works these days.
| TazeTSchnitzel wrote:
| The Wii settings menu is an HTML webpage. Yes, even 2006 games
| consoles were not spared the web.
| johannes1234321 wrote:
| Well, Microsoft pioneered with that earlier. Win98, or was it
| 95b, merged the filesystem Explorer with Internet Explorer
| and came up with ActiveDesktop.
| tomashubelbauer wrote:
| Which was very cool and accessible as a kid, I have fond
| memories of it.
| HerbManic wrote:
| I was kind of ready to call BS on this, Nintendo is usually a
| little more careful with these things. But, you are
| absolutely correct.
| lunar_rover wrote:
| Nintendo uses web UI a lot. The Switch eShop is notoriously
| a web app running on WebKit without JIT. The Action Guide
| in Super Mario Odyssey is web despite everything else being
| native.
| msephton wrote:
| Wii and DS ran a version of Opera browser.
| guerrilla wrote:
| > The Wii uses a PowerPC 750CL
|
| Well, okay, that's almost cheating.
| delduca wrote:
| The best hack of the last 10 years.
| djsavvy wrote:
| I'm shocked that the Wii only has 88mb of RAM. The programmers of
| that era really knew how to make a lot from a little!
| khernandezrt wrote:
| Unrelated to the article but please compress your images. Why is
| one of them almost 8mb!?
| samtheDamned wrote:
| This was an incredible read! Especially for what looks like the
| first post to this blog too? I wanted to subscribe to the RSS
| feed but unfortunately it gives a 404 error.
| dunder_cat wrote:
| Chiming in as well to say to the author when the victory lap
| here is over: please consider adding the RSS feed! I want to
| see whatever you do next, regardless of how long it takes.
| msephton wrote:
| Here's another polite request for an RSS feed. Thank you
| chrisweekly wrote:
| Haha, this is great. Very impressive -- and a fantastic, detailed
| writeup. Congrats! And thanks for sharing! :)
| anthk wrote:
| Not OSX, but I'd love what Aros m68k is doing with the Amiga but
| for Mac OS System7.
|
| 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.
| duskwuff wrote:
| Possibly of interest: https://mace.home.blog/
|
| Frustratingly, though, they haven't released any source code
| yet.
| anthk wrote:
| That's the same as Executor, or some similar project with
| GNU/Linux with was exactly what Mace does with a free
| license.
|
| 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.
| mlfreeman wrote:
| Uh, I just noticed the Windows NT for GameCube port actually
| claims Wii support too...so maybe one day we'll see a Wii dual
| boot NT4 and OS X 10.0
| jmcneill wrote:
| As the author of the NetBSD Wii and Wii U ports, congrats! I'm
| looking forward to seeing how you solved some of the problems
| that I faced along the way.
| blkhp19 wrote:
| Your ports were a huge inspiration - thanks for contributing so
| much to this space!
| 0xc133 wrote:
| So when will you port MacOS X to the Wii U? Two more CPU
| cores and 2GB of RAM instead of 88MB!
| HerbManic wrote:
| That would be a surprisingly cheap way to get a decent
| "vintage" Mac system considering the cheap resale on WiiUs.
| ninjin wrote:
| Many thanks for all the code! The second hand market is
| currently flooded with Wii U hardware that is cheap enough to
| buy enough stock to last a life time for peanuts. Would be
| amazing fun for PowerPC development and if I had an alternative
| timeline where I went into low-level programming, I would love
| to push for OpenBSD support inspired by your work.
| hoten wrote:
| Wonderful write up, thank you for sharing!
|
| > 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.
| AnnikaL wrote:
| Wow! This is really impressive!
|
| I kind of want to try some project like this sometime, but I
| wouldn't even know where to start...
| msephton wrote:
| Start with the idea and then do some reading and then when
| you're comfortable enough... onwards!
| talkfold wrote:
| Brought the Wii to Hawaii to finish the framebuffer driver.
| Priorities perfectly set.
| cdrnsf wrote:
| Wonderful. Can it run Doom?
| OhMeadhbh wrote:
| Presumably this means you could also port MacOS 9 if you were
| okay with writing a few drivers and patching some virtual ROMs.
| anArbitraryOne wrote:
| I love it. I mean I hate MacOS, but great project
| p0seidon wrote:
| This is incredible. I wonder when an LLM will pull this knowledge
| out to help someone down the line who would never have had the
| craft to pull this off, as it requires so much depth and broad
| skill. Admirable.
| eek2121 wrote:
| Neat, and kudos! Reminds me of my young hobbyist days. I wish low
| level dev work was that approachable now.
|
| 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.
| flopsa wrote:
| This was a brilliant write up and an insane project. Kudos!
| jkbowa wrote:
| Really cool!
| bananaboy wrote:
| Amazing work and write up!
| knivets wrote:
| Refreshing to read an article with an actual engineering work as
| opposed to another article about AI. Great work, very inspiring!
| rafaelgoncalves wrote:
| awesome work and write up! hella impressive!
| willamhou wrote:
| Had a very similar issue porting a hypervisor to ARM S-EL2.
| Writes would succeed, there were no faults, and everything looked
| reasonable in GDB, but the other side never saw the data. The
| root cause was that Secure and Non-Secure physical address spaces
| were backed by different memory even at the same address, and a
| single PTE bit selected between them. That took me much longer to
| understand than I'd like to admit.
| saagarjha wrote:
| Yo dawg I heard you liked virtual addressing so I designed
| virtual addresses for your physical addresses
| Bubble1296 wrote:
| Highly respectable project. My hat's off to you. I'm just
| curious, what computer programming language did you do most of
| this in and what do you think was the most challenging part of
| porting Mac OS X on to the Wii console?
| blkhp19 wrote:
| Thanks! The project was mostly C for the bootloader and C++ for
| the drivers.
|
| 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.
| Bubble1296 wrote:
| I see. Very interesting project. Do you think that you're
| going to post it on GitHub?
| msephton wrote:
| The post shows C language
| dlopes7 wrote:
| It was refreshing reading this in the age of AI slop, thank you
| for the great read and congratulations on the project
| maximilianburke wrote:
| Makes me wonder if 10.4 would work on the WiiU...
| devy wrote:
| This reminds me the 2008-2009 era where Mac OS X Leopard was
| running Hackintosh on Dell Mini 9 and some other netbooks.
|
| 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
| outadoc wrote:
| Super cool project and write-up, I loved reading it!
| sagoshi wrote:
| hand-rolled iokit drivers and a bootloader to get xnu running on
| 88mb of ram with cpu-bound yuv-to-rgb conversion at 60fps, all
| because the wii's powerpc 750cl is close enough to a g3 imac that
| darwin mostly just worked. solid systems work and a genuinely
| useful writeup but might try on a dreamcast personally. rom burns
| Eric_Xua wrote:
| This writeup absolutely ruled - real low-level hacking, great
| storytelling, and super inspiring.
| gauravkashyap6 wrote:
| What stood out to me is how much of this worked because of strong
| abstraction boundaries.
|
| 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.
| saagarjha wrote:
| I feel that modern macOS might be even more abstracted, not
| less. But it is absolutely more complicated and will probably
| require a bunch more work.
| lukeh wrote:
| Right, and I suspect as things get more complicated (and you
| have to ship), abstractions get leaky.
| saagarjha wrote:
| Reading this was the highlight of the week! I love it when people
| port things to places they do not belong :)
| alper wrote:
| How do you get good like this?
| voidUpdate wrote:
| Just keep doing stuff and gaining experience. Sometimes you'll
| find that you don't know how to do something, at that point
| don't just reach for an LLM, do your best to try and understand
| it, google around, and if all else fails, put it down and maybe
| come back to it later with fresh eyes
| faisalfakih wrote:
| Incredible project. The dual-framebuffer RGB -> YUV conversion
| trick is really clever. Really entertaining read as well!
| redbell wrote:
| Excellent project! This is one of the topics that keeps _Hacker_
| News ever refreshing. Seeing work get done in a way that feels
| like real _hacking_ but in a positive way.
|
| 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: WindowsNT (255pts,
| 86cmts): https://news.ycombinator.com/item?id=43221633
| Linux (53pts, 1cmts):
| https://news.ycombinator.com/item?id=30568676 NetBSD
| (4pts,0 cmts): https://news.ycombinator.com/item?id=46668959
|
| 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)
| asimovDev wrote:
| I hope OP is still reading comments. I noticed that the project
| was written in Xcode (the repo even has the xcodeproj folder) but
| in some screenshots I see CLion. Did you switch at some point or
| were you using both throughout the development simultaneously?
|
| Amazing writeup, love this types of blog posts and hope the
| hawaii trip was enjoyable
| blkhp19 wrote:
| I started with CLion, and found the UX to be completely foreign
| (not at all Mac-like) and overall frustrating to use.
|
| 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.
| rbanffy wrote:
| What's not to love? A small and beautiful PowerPC Unix
| workstation, something IBM hasn't done in a long, long time. How
| far does MacPorts go with a PPC?
| stuaxo wrote:
| Great work and writeup.
|
| 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.
| blkhp19 wrote:
| I considered this! There were a lot of things I wanted to try
| but didn't want the timeline of this project to blow up any
| more than it already had. Now that I've done the hard part of
| writing about it and publishing it, I can revisit some of these
| ideas :)
| drzaiusx11 wrote:
| I wonder what, if anything significant, has changed
| architecturally from osx to modern macos and how this post could
| be used as a guide for future porting efforts (aside from the
| obvious 2 CPU isa changes over the last 20 years)
| tom-blk wrote:
| Hehe that's so cool, I didn't know that it was a thing to port
| OSes to the Wii :D
| fortran77 wrote:
| There was a Windows NT 4.0 for PowerPC. And several people have
| had this running on the Wii. https://github.com/Wack0/entii-for-
| workcubes
|
| 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.)
| MarceliusK wrote:
| Really impressive work, and a very fun read
| rajptech wrote:
| The PowerPC-to-Intel transition still has the cleanest binary-
| format story in mainstream consumer OS history -- Rosetta 1 was
| better engineering than people remember. Wild to see the Wii
| hardware resurrected for this.
___________________________________________________________________
(page generated 2026-04-09 17:01 UTC)