[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 comment](image_url.png) ](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)