91 comments

  • rayiner22 hours ago
    Not only is this an insanely cool project, the writeup is great. I was hooked the whole way through. I particularly love this part:<p>&gt; 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 - <i>to fix this, I’d need to write my own framebuffer driver</i>.<p>I&#x27;m surprised by how well abstracted MacOS is (was). The I&#x2F;O Kit abstraction layers seemed to actually do what they said. A little kudos to the NeXT developers for that.
    • blkhp1921 hours ago
      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.<p>With that said, I haven&#x27;t developed drivers for any other platforms, so I really can&#x27;t say if the abstraction is good compared to what&#x27;s used by modern systems.
    • spijdar22 hours ago
      IOKit was actually built from the ground up for OS X! NeXT had a different driver model called DriverKit. I&#x27;ve never coded against either, but my understanding was they&#x27;re pretty different beasts. (I could be wrong)<p>That said, indeed, the abstraction layer here is delightful! I know that some NetBSD devs managed to get PPC Darwin running under a Mach&#x2F;IOKit compatibility layer back in the day, up to running Xquartz on NetBSD! With NetBSD translating IOKit calls. :-)
      • twoodfin21 hours ago
        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.<p>Steve was not a developer but he made it his business to care about what they cared about.
        • nxobject10 hours ago
          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.<p>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.
          • lukeh9 hours ago
            Yup, even with a hard drive the m68k turbo slab was no speed demon. Wasn&#x27;t too bad on HPPA though.
      • pjmlp9 hours ago
        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.
      • steve197721 hours ago
        Funnily enough, there is a (different) DriverKit in macOS again now ;)
      • erichocean22 hours ago
        As I remember it, they were basically the same—but IOKit is C++ (with restrictions) because 3rd party developers didn&#x27;t want to learn Objective-C.<p>But that&#x27;s a hazy, 20 year old memory.
        • spijdar18 hours ago
          Yes, you&#x27;re right! I&#x27;m just dolt who&#x27;s never checked what a .kext on OS X actually is.<p>I had been under the impression that DriverKit drivers were quite a different beast, but they&#x27;re really not. Here&#x27;s the layout of a NS &quot;.config&quot; bundle:<p><pre><code> .&#x2F;CG6FrameBuffer.config&#x2F;English.lproj .&#x2F;CG6FrameBuffer.config&#x2F;English.lproj&#x2F;Info.rtf .&#x2F;CG6FrameBuffer.config&#x2F;English.lproj&#x2F;Localizable.strings .&#x2F;CG6FrameBuffer.config&#x2F;CG6FrameBuffer_reloc .&#x2F;CG6FrameBuffer.config&#x2F;Default.table .&#x2F;CG6FrameBuffer.config&#x2F;Display.modes .&#x2F;CG6FrameBuffer.config&#x2F;CG6FrameBuffer </code></pre> 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&#x2F;interact!)<p>Now, on OS X:<p><pre><code> .&#x2F;AirPortAtheros40.kext&#x2F;Contents .&#x2F;AirPortAtheros40.kext&#x2F;Contents&#x2F;_CodeSignature .&#x2F;AirPortAtheros40.kext&#x2F;Contents&#x2F;_CodeSignature&#x2F;CodeResources .&#x2F;AirPortAtheros40.kext&#x2F;Contents&#x2F;MacOS .&#x2F;AirPortAtheros40.kext&#x2F;Contents&#x2F;MacOS&#x2F;AirPortAtheros40 .&#x2F;AirPortAtheros40.kext&#x2F;Contents&#x2F;Info.plist .&#x2F;AirPortAtheros40.kext&#x2F;Contents&#x2F;version.plist </code></pre> OS X added a dedicated image type (MH_KEXT_BUNDLE) and they cleaned up a bit, standardized on plists instead of the &quot;INI-esque&quot; .table files, but yeah, basically the same.
        • steve197721 hours ago
          From here:<p><a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=10006411">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=10006411</a><p>&quot;At some stage in the future we may be able to move IOKit over to a good programming language&quot;
          • xenadu0219 hours ago
            IOKit was almost done in Java; C++ was the engineering plan to stop that from happening.<p>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.<p>Also DriverKit&#x27;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.
            • pjmlp8 hours ago
              Mostly because they thought Objective-C wasn&#x27;t going to land well with the Object Pascal &#x2F; C++ communities, given those were the languages on Mac OS previously.<p>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.
              • lukeh5 hours ago
                There was also the Java-like syntax for ObjC but I don’t think that ever shipped.
        • pjmlp8 hours ago
          Yes, also the same reason why Java was originally introduced, Apple was afraid that the developer community educated in Object Pascal &#x2F; C++, wasn&#x27;t keen into learning Objective-C.<p>When those fears proved not true, and devs were actually welcoming Objective-C, it was when they dropped Java and the whole Java&#x2F;Objective-C runtime interop.
    • geerlingguy22 hours ago
      And there are enough parallels to Linux&#x27;s stack, I&#x27;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!
    • MarceliusK1 hour ago
      Once he could satisfy the expected interfaces well enough, the rest of the system seems to have been surprisingly willing to play along
    • steve197721 hours ago
      I guess having targeted multiple architectures and in the case of OPENSTEP also operating systems early on certainly helped.
    • phendrenad219 hours ago
      &gt; I&#x27;m surprised by how well abstracted MacOS is (was).<p>Usually the difference between something being well-abstracted vs poorly-abstracted is how well it&#x27;s explained.
      • shermantanktop9 hours ago
        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.
  • redbell6 hours ago
    Excellent project! This is one of the topics that keeps <i>Hacker</i> News ever refreshing. Seeing work get done in a way that feels like real <i>hacking</i> but in a positive way.<p>You might also be interested in this similar work: <i>Installing Mac OS on the Nintendo Wii [video]</i> (123pts, 37cmts): (<a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=37306018">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=37306018</a>)<p>The author has mentioned earlier attempts to port other OSes to the Wii but it appears these works didn&#x27;t get much traction here on HN except for Windows:<p><pre><code> WindowsNT (255pts, 86cmts): https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=43221633 Linux (53pts, 1cmts): https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=30568676 NetBSD (4pts,0 cmts): https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=46668959 </code></pre> Lastly, since we are in the context of turning the Wii into a computer, I&#x27;d like to <i>honorable mention</i>: Hosting a blog on the Wii (622pts, 104cmts): (<a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=43754953">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=43754953</a>)
  • guyzero23 hours ago
    In addition to the incredible engineering work here the OP casually flexes by showing the development happening _in an economy class airplane seat_.
    • nine_k22 hours ago
      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.)
      • lamasery16 hours ago
        I struggle so much to even comfortably <i>play</i> a <i>handheld</i> video game system on a plane, let alone use a laptop (I have also tried that) that I&#x27;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.<p>I can&#x27;t imagine trying to <i>program</i> 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&#x27;d get nothing done aside from having a bad time.
      • weberer6 hours ago
        Get a pair of XR glasses. I bought some Viture glasses a few years ago and they have been perfect for flights.
    • jedberg21 hours ago
      And the guy next to him is just staring at his phone, probably thinking, &quot;I&#x27;m not even gonna ask&quot;.<p>Although if it were me I&#x27;d probably annoy the heck out of him asking why he had a Wii on the airplane!
      • hbn20 hours ago
        Looks like a Switch 2 actually.
        • jedberg20 hours ago
          You&#x27;re totally right, it&#x27;s a Switch 2.
          • xp8411 hours ago
            I don’t get it, how is he getting OS X running “on a Wii” on a Switch 2?
            • saagarjha8 hours ago
              It&#x27;s what the guy next to him has.
    • dan353hehe18 hours ago
      I think it is a bus maybe? I can see out a window over some seats, and the overhead compartments don&#x27;t really look like ones i&#x27;ve seen before.<p>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!<p>EDIT: nvm, there are multiple pictures of them traveling. First one looks bus like, second one look like an airplane.
      • MBCook11 hours ago
        At first I thought it might be a train. “Surely he’s not doing that on a plane“.<p>Once he showed he went to Hawaii my idea made slightly less sense.
    • Thorrez6 hours ago
      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?
    • easton15 hours ago
      Apple had a commercial about this a million years ago, where a guy decides to edit a video on a plane.<p><a href="https:&#x2F;&#x2F;youtu.be&#x2F;LQWjxAdSsHE" rel="nofollow">https:&#x2F;&#x2F;youtu.be&#x2F;LQWjxAdSsHE</a>
      • nxobject10 hours ago
        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?
    • pa7ch22 hours ago
      I can&#x27;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.
      • badc0ffee22 hours ago
        Still looks like a plane to me, with rows of 2-3-2 seats.<p>There are definitely no buses that wide.
        • blkhp1922 hours ago
          My Wii has been on many planes and trains - and yes, there is a photo of each in my post.
      • asimovDev6 hours ago
        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
      • ooboe18 hours ago
        The picture with the black seats in on a train and the one with the green seats is on a plane.
      • jventura20 hours ago
        It seems a bus to me, just look at the size of the windows. Airplanes don&#x27;t have windows like that..
    • eastbound22 hours ago
      Which means no access to Claude.<p>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’”.
      • lamasery16 hours ago
        &quot;I&#x27;ve now received my Cease and Desist letter from Nintendo over their Wii trademark. Feeling encouraged, I&#x27;ve written a full seven-world Super Mario Brothers sequel for macOS on the Wii that I&#x27;ve titled &#x27;Newer Super Mario Brothers Wii Subsystem for macOS&#x27;&quot;
      • deathanatos16 hours ago
        Why would there be no access to Claude?<p>I mean, you need WiFi, and that&#x27;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.<p>Meanwhile I was taking photos of the seat back infotainment system&#x27;s map, which showed our ETA as being before we left. Sadly, we did not time travel.
        • xp8411 hours ago
          I was on a flight next to someone vibe coding on Cursor via Starlink the other day. It was my first flight with Starlink.
    • kilpikaarna9 hours ago
      That stood out to me as well. Specifically: how did he power the Wii?
      • argsnd5 hours ago
        Many planes have AC power outlets, the Wii uses &lt;20W.
    • varispeed22 hours ago
      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&#x27;t see him.
    • slackfan22 hours ago
      What&#x27;s flex-worthy about this? There&#x27;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?
      • badc0ffee22 hours ago
        It&#x27;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.
        • slackfan20 hours ago
          [flagged]
          • xp8411 hours ago
            I didn’t think OP was saying it was performative, and I read that as they were just really impressed. And I would be too.<p>I agree that coding on a plane can be a good experience, but also it can be tough to keep that focus on some flights, or with some types of neighbors.
  • soci23 hours ago
    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 &quot;iOS&quot; apps when there was not an official appstore for the iPhone.<p>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.
    • MarceliusK1 hour ago
      Pre-App Store iPhone stuff was its own kind of wild west
    • blkhp1920 hours ago
      Thank you for the kind words :)
  • jmcneill18 hours ago
    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.
    • blkhp1918 hours ago
      Your ports were a huge inspiration - thanks for contributing so much to this space!
      • 0xc13312 hours ago
        So when will you port MacOS X to the Wii U? Two more CPU cores and 2GB of RAM instead of 88MB!
        • HerbManic8 hours ago
          That would be a surprisingly cheap way to get a decent &quot;vintage&quot; Mac system considering the cheap resale on WiiUs.
    • ninjin8 hours ago
      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.
  • knivets14 hours ago
    Refreshing to read an article with an actual engineering work as opposed to another article about AI. Great work, very inspiring!
  • devy11 hours ago
    This reminds me the 2008-2009 era where Mac OS X Leopard was running Hackintosh on Dell Mini 9 and some other netbooks.<p>At $349, it was almost a fully functional laptop that runs on Mac OS X (comparing to over $1000+ MacBooks or $1599 MacBook Pros)<p>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).<p>[1] <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Dell_Inspiron_Mini_Series" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Dell_Inspiron_Mini_Series</a><p>[2] <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Hackintosh" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Hackintosh</a>
  • raincole20 hours ago
    &gt; As for RAM, the Wii has a unique configuration: 88 MB total<p>TIL Wii has only 88MB of RAM. Fortunately games weren&#x27;t electron-based.
    • zamadatix19 hours ago
      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.<p>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&#x27;s apps are enjoying the extra fat.
      • vachanmn1239 hours ago
        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_11119 hours ago
          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.
          • jaen5 hours ago
            I wish the &quot;optimizations&quot; meme would die as well, read my comment upthread on how that&#x27;s generally inaccurate.
            • raw_anon_11112 hours ago
              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”
        • tiagod6 hours ago
          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&#x27;s needed for more important tasks.
          • jaen5 hours ago
            That&#x27;s a blatant simplification, and does not match reality as far as I&#x27;ve seen.<p>The OS only only has one large source of memory it uses &quot;optimistically&quot; - the file&#x2F;buffer cache. But that&#x27;s <i>tracked separately</i>, so it doesn&#x27;t show up in normal memory usage numbers (unless you <i>don&#x27;t know how to read them</i>).<p>The other source of &quot;extra&quot; memory usage is memory mapped executable files, which can be unmapped and then read back on demand. That&#x27;s quite small though.<p>Everything else (mostly) is <i>actual</i> memory usage caused by <i>actual</i> drivers and programs (though it can be swapped, but that&#x27;s a major perf hit).<p>The major reason for Windows memory bloat is the hundreds of inefficient services from both Microsoft and hardware vendors that run at startup. The &quot;optimization&quot; pool (let&#x27;s not call it that way) is way smaller than that.<p>eg. pre-loading an application is a <i>pessimization</i> if there&#x27;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.<p>The only actual &quot;optimization&quot; in Windows is Superfetch, and that <i>barely</i> works these days.
    • TazeTSchnitzel19 hours ago
      The Wii settings menu is an HTML webpage. Yes, even 2006 games consoles were not spared the web.
      • msephton11 hours ago
        Wii and DS ran a version of Opera browser.
      • johannes123432117 hours ago
        Well, Microsoft pioneered with that earlier. Win98, or was it 95b, merged the filesystem Explorer with Internet Explorer and came up with ActiveDesktop.
        • tomashubelbauer6 hours ago
          Which was very cool and accessible as a kid, I have fond memories of it.
      • HerbManic16 hours ago
        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_rover14 hours ago
          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.
  • k38f21 hours ago
    Debugging kernel panics on a Wii in an economy seat is a level of focus I can&#x27;t even imagine. Most people can&#x27;t read a book on a plane without losing their place every 5 minutes.
  • NetOpWibby22 hours ago
    <p><pre><code> 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. </code></pre> I LOL&#x27;d
    • glenstein22 hours ago
      I almost think such projects are worth it just to immortalize comments like these. There&#x27;s a whole psychology of wrongness that centers on declaring that not-quite-impossible things will definitely <i>never</i> happen, because it feels like principled skepticism.
      • inlined21 hours ago
        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.<p>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.
        • Groxx20 hours ago
          I&#x27;ve seen more than one half-joke-half-serious chunk of code that would &quot;encode&quot; 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) &quot;asdf&quot; in it.<p>They&#x27;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&#x27;s hard to beat &quot;stupid, simple, and works everywhere&quot; when normal options (e.g. logs) stop working.
          • 0x70dd20 hours ago
            Reminds me of <a href="https:&#x2F;&#x2F;github.com&#x2F;jtolio&#x2F;gls" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;jtolio&#x2F;gls</a> which implement a &quot;thread local storage&quot; in golang
          • saagarjha7 hours ago
            Yeah, I&#x27;ve implemented this before as a protest against Apple stripping crash logs of information.
        • glenstein21 hours ago
          Well you&#x27;re doing gods work as far as I&#x27;m concerned. Conflating difficulty in practice with impossibility in principle is, to my mind, a source of so much unnecessary cognitive error.
          • xattt20 hours ago
            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.
            • itsamario19 hours ago
              Wise men speak when needed; fools because they want
          • deathanatos16 hours ago
            <a href="https:&#x2F;&#x2F;fabiusmaximus.com&#x2F;2017&#x2F;12&#x2F;27&#x2F;arthur-c-clarke-hazards-of-prophecy-lack-of-imagination&#x2F;" rel="nofollow">https:&#x2F;&#x2F;fabiusmaximus.com&#x2F;2017&#x2F;12&#x2F;27&#x2F;arthur-c-clarke-hazards...</a>
        • prpl20 hours ago
          Adversarial software development is also when I do my best work
          • whycome18 hours ago
            Adversarial personal development is definitely a thing too.
        • btown19 hours ago
          Similarly, one of the great things about Python (less so JS with the ecosystem&#x27;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&#x27;ve done things like add print statements around obscure Django errors as a poor imitation of instrumentation. Gets the job done!
        • alexchantavy19 hours ago
          The solution to every software problem is another layer of indirection :-)
      • dj68k18 hours ago
        I&#x27;m remindded of my favorite immortalized comment, &quot;No wireless. Less space than a Nomad. Lame.&quot; Rob Malda of Slashdot, 2001, dunking on the iPod when it debuted.
        • gxs18 hours ago
          So many. The Dropbox comment on HN<p>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<p>I guess Reddit is just less empathetic than HN
      • Groxx20 hours ago
        They&#x27;re kinda like high-effort shitposts. Which are my absolute favorite kind. The worse the effort&#x2F;reward payoff, and the more it makes you ask &quot;WHY??!!?&quot;, the better.
      • mlaretallack20 hours ago
        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.
      • BlueRock-Jake17 hours ago
        Agreed. Also who doesn&#x27;t like knocking a smug commenter down a peg
      • mikepurvis20 hours ago
        Love that it&#x27;s actually linked as well; too bad that user isn&#x27;t still active.
      • blkhp1922 hours ago
        I&#x27;d be lying if I said it wasn&#x27;t a very tiny part of my motivation :)
        • bombcar21 hours ago
          It&#x27;s a variation of &quot;because it&#x27;s there&quot; when asked why would you climb some giant mountain.<p>Impressive work! Now run Dolphin on it. ;)
      • pnptransistor18 hours ago
        Now tell me your opinion on P==NP being confirmed within 5 years.
        • Waterluvian18 hours ago
          <p><pre><code> P == NP &amp;&amp; P !== NP</code></pre>
          • jasomill3 hours ago
            Only in the very special case of N=1+ε for infinitesimal values of ε.
      • gxs18 hours ago
        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
    • bluedino20 hours ago
      Wasn&#x27;t the old Linux joke, don&#x27;t ask &quot;how do I do X with Linux&quot; (because you&#x27;d get ridiculed for not reading the docs) but instead, just state &quot;X isn&#x27;t possible with Linux&quot; and then someone would show you how it&#x27;s done?
      • gbalduzzi19 hours ago
        Or eventually you could answer wrongly to a question without answers, triggering plenty of correct ones
        • chrisweekly19 hours ago
          yeah, it&#x27;s an interesting socio-psychological phenomenon
      • gxs17 hours ago
        Ha so well known it has a name, Cunningham’s law
    • wpm20 hours ago
      I have a project on my desk that started as a response to a line in the Adafruit docs for their RP2040 based MacroPad<p><pre><code> It is not possible to add BLE or WiFi at this time to the MacroPad. </code></pre> 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?
    • bfirsh5 hours ago
      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”.<p>To me, it was obviously possible, and I was determined to prove them wrong.<p>Anyway, this now exists because of that: <a href="https:&#x2F;&#x2F;github.com&#x2F;bfirsh&#x2F;jsnes" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;bfirsh&#x2F;jsnes</a>
    • xeonax9 hours ago
      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<p>[1] <a href="https:&#x2F;&#x2F;xdaforums.com&#x2F;t&#x2F;how-do-i-port-pocos-miui-camera-to-custom-rom.3863917&#x2F;post-78087607" rel="nofollow">https:&#x2F;&#x2F;xdaforums.com&#x2F;t&#x2F;how-do-i-port-pocos-miui-camera-to-c...</a><p>[2] <a href="https:&#x2F;&#x2F;xdaforums.com&#x2F;t&#x2F;anxcamera-closed-on-xda-only-16th-feb-2020.3879357&#x2F;" rel="nofollow">https:&#x2F;&#x2F;xdaforums.com&#x2F;t&#x2F;anxcamera-closed-on-xda-only-16th-fe...</a>
    • bsimpson20 hours ago
      &gt; Readers with a keen eye might notice some issues:<p>&gt; - Everything is magenta.<p>was fun too
    • jasomill5 hours ago
      I thought the same thing about running macOS Ventura on pre-AVX2 Macs until this[1] showed up.<p>[1] <a href="https:&#x2F;&#x2F;github.com&#x2F;acidanthera&#x2F;CryptexFixup" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;acidanthera&#x2F;CryptexFixup</a>
    • userbinator9 hours ago
      Reminds me of the old saying &quot;don&#x27;t interrupt the one doing it, to tell him it can&#x27;t be done.&quot;
    • addybojangles20 hours ago
      So much has happened in the tech world because someone wrote at one point, &quot;You can&#x27;t do that&quot;<p>My favorite part of our online world.
    • ex-aws-dude18 hours ago
      HN is not as bad but I think a lot of internet commenters do this because it gives them a little hit of superiority<p>Plus the internet basically equates cynicism with intelligence<p>There is somehow no concept of &quot;ignorant cynicism&quot;
    • MomsAVoxell20 hours ago
      The missile knows at all times where it is, by knowing at all times where it isn’t.
    • 0xc13312 hours ago
      I’ve never seen someone go to so much effort just to prove a random Redditor wrong, but I am impressed.
    • nancyminusone22 hours ago
      Gotta love that particular Redditors follow up comment:<p>&gt;Go ahead and downvote me. I am correct on every single thing I said
      • arcfour20 hours ago
        The best part is the comment ranting about how the Wii&#x27;s CPU is so fundamentally different, and then:<p>&gt; The Wii uses a PowerPC 750CL processor - an evolution of the PowerPC 750CXe that was used in G3 iBooks and some G3 iMacs.<p>Hilarious.
      • dpoloncsak22 hours ago
        Tempted to necro a 5 year old reddit post just to tell that guy he was wrong, honestly
        • zamadatix19 hours ago
          This is why Reddit defaults to archiving posts (preventing new comments or votes) after 6 months.
        • Jeremy102621 hours ago
          User hasn&#x27;t posted in 4 years. Sadly, they&#x27;d probably never see it.
        • ErneX21 hours ago
          I wanted to, but no replies are allowed now :)
          • LimeLimestone18 hours ago
            I tried messaging them and it says I&#x27;m not allowed to message them. Weird, never had that happen to me
        • noman-land22 hours ago
          Make a new thread calling them out personally.
          • lossyalgo3 hours ago
            Post a link so we can upvote for visibility :)<p>Nevermind, wasn&#x27;t hard to find: <a href="https:&#x2F;&#x2F;www.reddit.com&#x2F;r&#x2F;wii&#x2F;comments&#x2F;1sfzacl&#x2F;porting_mac_os_x_to_the_nintendo_wii&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.reddit.com&#x2F;r&#x2F;wii&#x2F;comments&#x2F;1sfzacl&#x2F;porting_mac_os...</a>
        • oceansky22 hours ago
          Comments are blocked there
      • dfxm1222 hours ago
        The comment score is 1. It doesn&#x27;t even have a controversial flag. The gamification of social media is a mistake.
    • krylon20 hours ago
      I had the same reaction.
    • talkfold18 hours ago
      The &quot;zero percent&quot; guy definitely opened a browser tab to check after the post went live.
  • eek212116 hours ago
    Neat, and kudos! Reminds me of my young hobbyist days. I wish low level dev work was that approachable now.<p>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.<p>It feels like engineering has made this type of thing inaccessible. Most systems require a ton of knowledge and expertise. There is no easy &#x27;in&#x27; for someone with a special interest in development. Even worse, AI is artificially dumbing things down, while making things even more inaccessible.
  • asimovDev6 hours ago
    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?<p>Amazing writeup, love this types of blog posts and hope the hawaii trip was enjoyable
  • gauravkashyap68 hours ago
    What stood out to me is how much of this worked because of strong abstraction boundaries.<p>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.<p>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.
    • saagarjha7 hours ago
      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.
      • lukeh5 hours ago
        Right, and I suspect as things get more complicated (and you have to ship), abstractions get leaky.
  • lampiaio21 hours ago
    As someone who&#x27;s been trying to do something VERY similar (port Mac OS 9 to the Nintendo Wii U), all I can say is I&#x27;m 1) absolutely impressed, and 2) absolutely encouraged, as my project keeps telling me &quot;this is impossible&quot; at every opportunity.
    • itomato17 hours ago
      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.<p>Godspeed.
    • blkhp1920 hours ago
      Very cool! I&#x27;d love to learn more. That seems extra challenging considering Mac OS 9 is closed source!
  • leonidasv22 hours ago
    Nice work and write-up!<p>A side note: you embedded .mov videos inside &lt;img&gt; tags. This is not compatible with all browsers (notably Chrome and Firefox), which won&#x27;t load the videos.
    • efdee22 hours ago
      If it&#x27;s not working on Chrome nor Firefox, it&#x27;s safe to say it&#x27;s incompatible with almost all browsers.
      • blkhp1922 hours ago
        I only tested on Safari - whoops! Fixed now.
        • tverbeure22 hours ago
          Minor usability comment: the screenshots are too small to be readable. Whenever that&#x27;s that case in my blog posts, I make those screenshots clickable and add <i>(Click to enlarge)</i> below it, to make it easier for readers to see the image are original resolution. In markdown, I do that like this:<p>[![Image comment](image_url.png) ](image_url.png)<p>(Of course, I can also right-click and do &quot;Open image in new tab&quot;, but that&#x27;s one click extra...)<p>Congrats on the awesome project, BTW! You were lucky that I wasn&#x27;t sitting next to you on the plane. I would have wasted so much of your time asking dumb questions.
          • blkhp1921 hours ago
            Images now expand when clicked - thanks for the feedback!
        • BLKNSLVR14 hours ago
          Only tested on Safari running on a Wii?
      • leonidasv22 hours ago
        It works on Safari.
      • tengbretson19 hours ago
        Works on Orion.
    • blkhp1922 hours ago
      Whoops, thanks! Fixed.
  • drzaiusx113 hours ago
    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)
  • mackid21 hours ago
    Congrats, great project and great writeup. That would have won MacHack back in the day.<p>Now that the MacBook Neo has an A18, I wonder if you could get MacOS running on an iPhone? :)
    • krsw21 hours ago
      There is a zero percent chance of that ever happening.
      • xuki15 hours ago
        Go ahead and downvote krsw, he is correct on every single thing he said.
      • gaudystead19 hours ago
        Are you willing to elaborate on the _why_ or is this a challenge comment, similar to the reddit comment that spurred this project? ;)
    • msephton11 hours ago
      It&#x27;s already been done <a href="https:&#x2F;&#x2F;www.reddit.com&#x2F;r&#x2F;jailbreak&#x2F;comments&#x2F;1mn7mk1&#x2F;your_jailbroken_idevices_may_be_able_to_run_macos&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.reddit.com&#x2F;r&#x2F;jailbreak&#x2F;comments&#x2F;1mn7mk1&#x2F;your_jai...</a>
    • Xerox921321 hours ago
      Or better yet, an iPad!
    • LoganDark20 hours ago
      I wonder if you can place an A18 from a Neo onto an iPhone board, and then make that work somehow... You wouldn&#x27;t be able to use the one originally from the iPhone because it&#x27;s differently fused to only accept iOS images.
      • circuit1018 hours ago
        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
        • dadoum15 hours ago
          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&#x27; userspace on top of iOS&#x27; kernel [0] with a jailbreak.<p>[0]: <a href="https:&#x2F;&#x2F;x.com&#x2F;khanhduytran0&#x2F;status&#x2F;1954724636727587237" rel="nofollow">https:&#x2F;&#x2F;x.com&#x2F;khanhduytran0&#x2F;status&#x2F;1954724636727587237</a>
          • saagarjha7 hours ago
            You can&#x27;t reinitialize the hardware, but if whatever you are trying to load is compatible with what&#x27;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.
  • willamhou13 hours ago
    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.
    • saagarjha7 hours ago
      Yo dawg I heard you liked virtual addressing so I designed virtual addresses for your physical addresses
  • hoten18 hours ago
    Wonderful write up, thank you for sharing!<p>&gt; 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.<p>Couldn&#x27;t agree more. I&#x27;ve had my own experience porting something that seemed like an intractable problem (<a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=31251004">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=31251004</a>), and when it finally comes together the feeling of accomplishment (and relief!) is great.
  • tombelieber21 hours ago
    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.
  • tiffanyh23 hours ago
    Amazing work.<p>If you like this story, you might also like the story of how Mac OS X was ported to Intel as well.<p><a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=4091216">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=4091216</a>
    • bsimpson14 hours ago
      Blogspam about this Quora post from the founding engineer&#x27;s wife: <a href="http:&#x2F;&#x2F;www.quora.com&#x2F;Apple-Inc-2&#x2F;How-does-Apple-keep-secrets-so-well&#x2F;answer&#x2F;Kim-Scheinberg?srid=i1" rel="nofollow">http:&#x2F;&#x2F;www.quora.com&#x2F;Apple-Inc-2&#x2F;How-does-Apple-keep-secrets...</a>
    • dormento22 hours ago
      Oof linkrot :(((((<p>I remember reading this back then. Amazing story. All the secrecy, and needing to be a very small team.
      • jrmg18 hours ago
        <a href="https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20141228042901&#x2F;http:&#x2F;&#x2F;www.tuaw.com&#x2F;2012&#x2F;06&#x2F;10&#x2F;how-marklar-os-x-on-intel-owes-its-start-to-a-one-year-old-boy&#x2F;" rel="nofollow">https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20141228042901&#x2F;http:&#x2F;&#x2F;www.tuaw.c...</a>
  • zadikian21 hours ago
    My favorite part of this is the detour to ask for the IOUSBFamily src on IRC
  • stuaxo3 hours ago
    Great work and writeup.<p>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.
  • monkpit23 hours ago
    &gt; There is a zero percent chance of this ever happening.<p>Honestly, I would have said the same. Great work!
  • tom-blk2 hours ago
    Hehe that&#x27;s so cool, I didn&#x27;t know that it was a thing to port OSes to the Wii :D
  • nickpeterson21 hours ago
    The one that really bugs me is the Apple TV. It would be a great little box to use for terminals&#x2F;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.
    • wpm20 hours ago
      Good news, just today a bypass was released to allow any EFI bootloader to work on the original Apple TV <a href="https:&#x2F;&#x2F;github.com&#x2F;DistroHopper39B&#x2F;ATV1sm" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;DistroHopper39B&#x2F;ATV1sm</a>
    • zadikian21 hours ago
      The original one does run a modified OS X Tiger. I jailbroke it a while ago to run custom stuff, but didn&#x27;t do much with that. Just remember being able to VNC or SSH into it.
    • Tepix4 hours ago
      Aren&#x27;t those Android boxes that you can get for less than $30 and then flash Linux (Armbian etc) onto a much better option?
    • raw_anon_11119 hours ago
      Hell Apple’s latest monitors have an A19 Pro chip in them which are more powerful than the MacBook Neo.
      • Tepix4 hours ago
        They&#x27;re more than $50 however.
  • sagoshi10 hours ago
    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&#x27;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
  • unanonymousanon22 hours ago
    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!
  • hassaanr20 hours ago
    In love with projects that are done solely because &#x27;why the hell not&#x27;. Fantastic writeup and work.
  • samtheDamned19 hours ago
    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_cat14 hours ago
      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.
      • msephton10 hours ago
        Here&#x27;s another polite request for an RSS feed. Thank you
  • MarceliusK1 hour ago
    Really impressive work, and a very fun read
  • rbanffy5 hours ago
    What&#x27;s not to love? A small and beautiful PowerPC Unix workstation, something IBM hasn&#x27;t done in a long, long time. How far does MacPorts go with a PPC?
  • bsimpson20 hours ago
    This is excellent.<p>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.<p>I was surprised to see regional color spaces leak into the project, but I presume that Nintendo&#x27;s iOS (the coincidentally-named system this is replacing) could handle that abstraction for game developers.
    • zerocrates15 hours ago
      Some of this is just really widespread imprecise usage of terms: what really should be called &quot;YCbCr&quot; in digital contexts is frequently called &quot;YUV.&quot; So-called &quot;YUV&quot; digital formats for video are really really common, and they&#x27;re used for both NTSC and PAL. &quot;YUV420,&quot; 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.<p>The Wii seems to actually use &quot;YUV422&quot; 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&#x27;s video interface to output NTSC progressive by default, but lets you configure for PAL with a config file.
    • duskwuff19 hours ago
      YUV is a color model, akin to RGB or HSL; it&#x27;s independent of video formats like NTSC or PAL.
      • TazeTSchnitzel19 hours ago
        That&#x27;s true in broad strokes, but looking into it, it turns out NTSC&#x27;s variant of YUV is called YIQ, and SECAM&#x27;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.
    • saagarjha7 hours ago
      Nit: Nintendo&#x27;s thing is called IOS
  • alper6 hours ago
    How do you get good like this?
    • voidUpdate5 hours ago
      Just keep doing stuff and gaining experience. Sometimes you&#x27;ll find that you don&#x27;t know how to do something, at that point don&#x27;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
  • Eric_Xua9 hours ago
    This writeup absolutely ruled – real low‑level hacking, great storytelling, and super inspiring.
  • p0seidon17 hours ago
    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.
  • faisalfakih6 hours ago
    Incredible project. The dual-framebuffer RGB -&gt; YUV conversion trick is really clever. Really entertaining read as well!
  • cyrialize20 hours ago
    The Wii is very moddable. I&#x27;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).
    • dansalvato19 hours ago
      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&#x27;d be my go-to choice if I someday ever get the itch to write console homebrew software of my own.
      • cyrialize3 hours ago
        Oh hi! I&#x27;m a huge fan of your work! I&#x27;ve watched so many videos breaking down Doki Doki Literature Club.<p>Thank you for all that you do.
    • blkhp1919 hours ago
      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.
  • saagarjha7 hours ago
    Reading this was the highlight of the week! I love it when people port things to places they do not belong :)
  • Bubble129612 hours ago
    Highly respectable project. My hat&#x27;s off to you. I&#x27;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?
    • blkhp1912 hours ago
      Thanks! The project was mostly C for the bootloader and C++ for the drivers.<p>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.
      • Bubble12962 hours ago
        I see. Very interesting project. Do you think that you&#x27;re going to post it on GitHub?
    • msephton11 hours ago
      The post shows C language
  • MaxLeiter23 hours ago
    Great write-up. I love hardware running software it shouldn’t support
  • OhMeadhbh17 hours ago
    Presumably this means you could also port MacOS 9 if you were okay with writing a few drivers and patching some virtual ROMs.
  • swiftcoder23 hours ago
    Damn, that&#x27;s some dedication! Congrats on getting it running
  • djsavvy19 hours ago
    I&#x27;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!
  • AnnikaL18 hours ago
    Wow! This is really impressive!<p>I kind of want to try some project like this sometime, but I wouldn&#x27;t even know where to start...
    • msephton10 hours ago
      Start with the idea and then do some reading and then when you&#x27;re comfortable enough... onwards!
  • chrisweekly19 hours ago
    Haha, this is great. Very impressive -- and a fantastic, detailed writeup. Congrats! And thanks for sharing! :)
  • bredren20 hours ago
    It is satisfying to see someone hacking on deprecated hardware and software also is keen to look forward into Vision Pro.
  • zdware22 hours ago
    Fun post.<p>Always great when your debugging feedback is via a led xD
    • dpedu20 hours ago
      How about a piezoelectric buzzer? That&#x27;s how the firmware on some iPods were first dumped.<p><a href="https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20050828114013&#x2F;http:&#x2F;&#x2F;www.ipodlinux.org&#x2F;stories&#x2F;piezo&#x2F;" rel="nofollow">https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20050828114013&#x2F;http:&#x2F;&#x2F;www.ipodli...</a>
  • WorldPeas22 hours ago
    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..?<p>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&#x27;m amazed this works as well as it does with seemingly heterogeneous memory
    • zydeco22 hours ago
      I&#x27;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.
      • WorldPeas21 hours ago
        Oh interesting, it looks like that geforce had an entire 64mb of gddr3 too, it&#x27;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)
    • CrazyStat22 hours ago
      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.
      • zadikian21 hours ago
        Tiger had a native PPC version too
  • bottlepalm22 hours ago
    And here I am shopping for Macs because getting a hackintosh working from a VM on Windows is too difficult for me.
  • fortran772 hours ago
    There was a Windows NT 4.0 for PowerPC. And several people have had this running on the Wii. <a href="https:&#x2F;&#x2F;github.com&#x2F;Wack0&#x2F;entii-for-workcubes" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;Wack0&#x2F;entii-for-workcubes</a><p>Much easier to do, because of the superior, more modern architecture of Windows NT. (It&#x27;s not based on Apollo-era OS like OSX is.)
  • flopsa16 hours ago
    This was a brilliant write up and an insane project. Kudos!
  • vsgherzi22 hours ago
    This is some amazing work, a good reminder to dig more into operating systems for myself!
  • mghackerlady23 hours ago
    I&#x27;m pretty sure someones done this for the 360. Also, doesn&#x27;t NT have a wii port?
    • nticompass23 hours ago
      There was a PPC version of Windows NT, and yes someone put it on the Wii!<p><a href="https:&#x2F;&#x2F;github.com&#x2F;Wack0&#x2F;entii-for-workcubes" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;Wack0&#x2F;entii-for-workcubes</a><p>See also: <a href="https:&#x2F;&#x2F;gbatemp.net&#x2F;threads&#x2F;windows-nt-ported-to-wii.667959&#x2F;" rel="nofollow">https:&#x2F;&#x2F;gbatemp.net&#x2F;threads&#x2F;windows-nt-ported-to-wii.667959&#x2F;</a>
      • zymhan21 hours ago
        That was it, I knew someone ported an OS to a Wii recently, thank you
  • outadoc10 hours ago
    Super cool project and write-up, I loved reading it!
  • davenporten23 hours ago
    Hahaha! Yes! We need more of this in the world, love it!
  • oliad121 hours ago
    Nice project! Love seeing emulators &amp; ports
  • xoxxala23 hours ago
    Very neat project and an extremely enjoyable read.
  • maximilianburke11 hours ago
    Makes me wonder if 10.4 would work on the WiiU...
  • delduca19 hours ago
    The best hack of the last 10 years.
  • talkfold18 hours ago
    Brought the Wii to Hawaii to finish the framebuffer driver. Priorities perfectly set.
  • khernandezrt19 hours ago
    Unrelated to the article but please compress your images. Why is one of them almost 8mb!?
  • cdrnsf18 hours ago
    Wonderful. Can it run Doom?
  • carlosjobim21 hours ago
    They are successfully porting Mac OS onto every kind of modern computer over at the hackintosh subreddit, and I can&#x27;t understand why there is so little interest for this stuff in the &quot;hacker&quot; sphere.<p>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.<p><a href="https:&#x2F;&#x2F;www.reddit.com&#x2F;r&#x2F;hackintosh&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.reddit.com&#x2F;r&#x2F;hackintosh&#x2F;</a>
    • nancyminusone20 hours ago
      &gt;better option than Linux<p>I&#x27;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&#x27;s move to ARM)?<p>For usability I mean. It&#x27;s clearly an interesting technical feat.
      • carlosjobim20 hours ago
        Because it has all the advantages of Linux + all the advantages of Windows + many advantages of its own.<p>So to have a fully fledged and more usable computer, for those who don&#x27;t want to purchase the Apple hardware.<p>And the latest Mac OS still supports Intel, so you&#x27;ll get many more years out of a machine. For what I know, the last 10 versions of MacOS are still very usable.
        • bigyabai16 hours ago
          Have you ever tried daily-driving a Hackintosh? It&#x27;s nothing like using a Mac, or even a Windows&#x2F;Linux machine for that matter.<p>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&#x27;s installed. Reinstalling from scratch can take <i>multiple days</i> if you don&#x27;t back up your EFI configuration, so you really want to avoid bricking your install while you tweak the configs to stop being broken.<p>Even as a developer, using a Hackintosh was a waste of my time back in 2018 when &quot;everything was supported&quot;. 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&#x27;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&#x27;t save it: <a href="https:&#x2F;&#x2F;blog.greggant.com&#x2F;posts&#x2F;2025&#x2F;07&#x2F;16&#x2F;open-core-is-dead.html" rel="nofollow">https:&#x2F;&#x2F;blog.greggant.com&#x2F;posts&#x2F;2025&#x2F;07&#x2F;16&#x2F;open-core-is-dead...</a>
          • carlosjobim13 hours ago
            System updates not working or being complicated is a given.<p>About the other things you mention: What do they mean in practice? That video games don&#x27;t work, or that photo&#x2F;video editing doesn&#x27;t work?<p>How does filesystem support differ from MacOS installed on a Mac?<p>From what I understand your comment is only from the perspective of a developer? But there are many other uses for a computer.
            • bigyabai12 hours ago
              You didn&#x27;t answer my question - have you tried making a Hackintosh yourself?<p>I&#x27;m writing from the perspective of a tech-savvy Windows user that had triple-boot working on my desktop and laptop. I&#x27;m willing to deal with <i>some</i> system configuration, but it took upwards of 12 hours to configure my EFI <i>for each</i> unique device I wanted to Hackintosh. And it <i>still</i> didn&#x27;t fix my iCloud or get my laptop trackpad working.<p>That is an entirely unacceptable process for someone who isn&#x27;t a developer. I cannot recommend anyone use an OS that blocks OTA security updates, let alone people that can&#x27;t&#x2F;don&#x27;t&#x2F;won&#x27;t program.
              • carlosjobim12 hours ago
                No I haven&#x27;t, if I had I wouldn&#x27;t have needed to make follow up questions.<p>But if you follow a guide from somebody who has hackintoshed the exact same device you have, then it shouldn&#x27;t take that long, or am I missing something? The posts in the hackintosh subreddit generally details what will work and not work.
  • nticompass23 hours ago
    This is awesome! I can&#x27;t wait to plug in my Wii and give it a try myself.
  • hirvi7423 hours ago
    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.<p>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&#x27;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.
    • blkhp1923 hours ago
      Thank you for the kind words!<p>I like using it for disassembling UIKit (for my day job working on iOS apps), and overall, I like the UI&#x2F;UX and how it feels like a native Mac app.<p>I&#x27;ve tried Ghidra, and while extremely impressive and capable, it might be the most Java-feeling app I&#x27;ve ever used. I&#x27;d love for someone to whip up an AppKit + SwiftUI shell for it.
      • saagarjha7 hours ago
        I&#x27;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&#x27;m not super happy with the design (I feel like it&#x27;s built to be slow…) and I might build on top of something more modern like Binary Ninja instead.
      • xandrius22 hours ago
        You made me curious: why would you need to disassemble UIKit for iOS as part of your day job?
        • blkhp1922 hours ago
          There are bugs and undocumented behaviors that need to be understood in order to be worked around - I wish it wasn&#x27;t the case but such is life developing for closed-source platforms.
        • crazysim22 hours ago
          Sometimes things aren&#x27;t documented and sometimes they could be documented wrong.
      • hirvi7422 hours ago
        &gt; <i>I like using it for disassembling UIKit (for my day job working on iOS apps), and overall, I like the UI&#x2F;UX and how it feels like a native Mac app.</i><p>You are correct about the UI&#x2F;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&#x27;t attempted to use Radare2 for MacOS&#x2F;iOS disassembly. Though I must ask, why are you disassembling UIKit? Looking for private API behavior or working around bugs? I&#x27;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..<p>&gt; <i>Ghidra, and while extremely impressive and capable, it might be the most Java-feeling app</i><p>I chuckled while reading this because I had the exact same thought when I first used Ghidra. I haven&#x27;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&#x27;s defense, using Java was a pragmatic choice. The &quot;write once, run anywhere&quot; promise of Java is likely a near-necessity for a disassembler for government operations.
        • blkhp1922 hours ago
          &gt; Looking for private API behavior or working around bugs?<p>Exactly this!
  • dlopes712 hours ago
    It was refreshing reading this in the age of AI slop, thank you for the great read and congratulations on the project
  • bananaboy16 hours ago
    Amazing work and write up!
  • spiderice20 hours ago
    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!
  • c0_0p_22 hours ago
    Fantastic work and a great write up.
  • mlfreeman19 hours ago
    Uh, I just noticed the Windows NT for GameCube port actually claims Wii support too...so maybe one day we&#x27;ll see a Wii dual boot NT4 and OS X 10.0
  • rafaelgoncalves14 hours ago
    awesome work and write up! hella impressive!
  • kogasa240p21 hours ago
    Wonder if it can happen on the Wii U
    • blkhp1921 hours ago
      With the extra RAM, higher clock speed, and no need to waste CPU cycles converting YUV -&gt; RGB framenbuffers - I bet it would be!
  • rado22 hours ago
    Great, how about on iPhone?
  • lanyard-textile23 hours ago
    Absolutely atrocious. Congratulations!<p>That&#x27;s the hacker spirit.
  • serhack_23 hours ago
    awesome, good to see some real content from pre-AI moment
  • jkbowa16 hours ago
    Really cool!
  • postalcoder20 hours ago
    Sorry if off topic but I was struck by the view from your window. Were you in Hanalei Bay?
    • blkhp1920 hours ago
      I was - incredible views indeed!
      • postalcoder20 hours ago
        Your post and pictures brightened up my day. Thanks!
  • anthk19 hours ago
    Not OSX, but I&#x27;d love what Aros m68k is doing with the Amiga but for Mac OS System7.<p>Yes, I know about Ardi Executor being libre and enhanced now, but that&#x27;s not the point.<p>I&#x27;d love to spawn MiniVMAC with a free system ROM replacement and a free Mac OS 7 reimplementation.
    • duskwuff17 hours ago
      Possibly of interest: <a href="https:&#x2F;&#x2F;mace.home.blog&#x2F;" rel="nofollow">https:&#x2F;&#x2F;mace.home.blog&#x2F;</a><p>Frustratingly, though, they haven&#x27;t released any source code yet.
      • anthk8 hours ago
        That&#x27;s the same as Executor, or some similar project with GNU&#x2F;Linux with was exactly what Mace does with a free license.<p><a href="https:&#x2F;&#x2F;www.v68k.org&#x2F;advanced-mac-substitute&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.v68k.org&#x2F;advanced-mac-substitute&#x2F;</a><p>What I would like to see it&#x27;s the full OS reimplementation a la AROS m68k.<p>There are Minivmac ports for 9front. Exegutor it&#x27;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.<p>On Advanced Mac Substitute, as it has an SDL2 interface, it can be almost done <i>unless</i> it&#x27;s written in C++. If it&#x27;s ANSI C or C99, it might run under 9front.
  • dejongh20 hours ago
    Great hack!
  • anArbitraryOne17 hours ago
    I love it. I mean I hate MacOS, but great project
  • eats_indigo22 hours ago
    honestly expected this port to be headed in the opposite direction
  • stavros22 hours ago
    This is excellent, though if you had chosen another OS, you could have called the project Wiindows.<p>EDIT: Oh interesting, the final paragraph says NT has been ported, didn&#x27;t know that. Sadly, no pun is mentioned in that project.
    • snazz22 hours ago
      “entii-for-workcubes” is a pretty good pun!
      • stavros22 hours ago
        I don&#x27;t know man, &quot;Wiindows&quot; was right there and they chose &quot;entii&quot;? I weep for the missed opportunity more than anything.<p>Maybe it was a legal worry.
  • rdanieli21 hours ago
    nice!
  • frakt0x9023 hours ago
    If all the AI stories on this site were replaced with amazing stuff like this, the world would be a better place.
    • jjice21 hours ago
      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.<p>I&#x27;m not an LLM post hater, but it definitely has been a bit draining lately. This is exactly what I love to see here.
      • mech42218 hours ago
        yeah - I wish the &#x27;Hacker&#x27; part of &#x27;HackerNews&#x27; got more attention. Last few years it often feels more like &quot;VC-Buzzword-of-the-day-News&quot; - AI is just the most recent cycle.
    • kstrauser22 hours ago
      Get to submitting! Be the change you want to see.
    • twoodfin21 hours ago
      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.
  • rvz23 hours ago
    The post is a work of an actual hacker who knows what they&#x27;re doing. Zero mention of &quot;I used Claude&quot; or &quot;Used AI&quot; to understand what is needed for accomplish this task.<p>This is exceptional work. Unlike the low-effort slop posts I see here on &quot;Show HN&quot;.
    • blkhp1922 hours ago
      I used plenty of non-agentic AI to help understand the XNU codebase, and also research various topics. It wasn&#x27;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 :)
    • dirasieb21 hours ago
      looks like they did use AI, swing and a miss for the luddites once again!
    • bigyabai22 hours ago
      Ah, the Procrustian definition of &quot;real hacker&quot;, where using AI disqualifies you but using Github pages is considered only a minor infraction.<p>The build-in-public era of hacking has really turned this field into an influencer economy.
      • jasaldivara22 hours ago
        Whats wrong about Github pages?
        • dewey22 hours ago
          A real hacker would obviously never use a Microsoft product, or worse, post on a VC funded web forum!
        • bigyabai19 hours ago
          Absolutely nothing. People protest Github to virtue signal their anti-Microsoft sentiment and fill a hole in their personality.<p>Similarly, &quot;zero mention of AI&quot; is just a surface-level observation that says nothing about how the project was completed and <i>everything</i> about your own insecurities defining the word hacker.
  • zenlot21 hours ago
    [dead]
  • ValveFan696919 hours ago
    [dead]
  • anskksdkdkdk22 hours ago
    [flagged]
  • ynajjarine21 hours ago
    [flagged]
    • duskwuff19 hours ago
      I bet there&#x27;s some way to make the GPU do the color conversion. It&#x27;s not like it&#x27;s doing much otherwise...
      • MarioMan18 hours ago
        It looks like copying from EFB to XFB can do an RBG to YUV conversion automatically.
    • blkhp1919 hours ago
      Last I checked, the 60fps frame buffer conversion resulted in the system idling at 18% CPU. Certainly not ideal. I&#x27;d love to optimize this further.
      • saagarjha7 hours ago
        Presumably Wii has AltiVec that you could use to accelerate the conversion? Did you happen to look into the code the compiler generates for your loop around rgbrgb16toycbycr?
    • dmitrygr21 hours ago
      This solution’s COU cost can be significantly improved by using memory protection. You protect the frame buffer from writes. The first time it is written, you take a fault, and start refreshing every 60 Hz and leave it writeable. After some number of refreshes, you protect it again, the idea being is that the UI may now be quiescent. I do this in my Palm OS port for the same reason.
      • blkhp1919 hours ago
        I&#x27;m intrigued by this technique! Will look into it, thanks for the tip!
        • dmitrygr18 hours ago
          sample impl is in rePalm sources, but i described basically all there is to it :)<p>saves a lot of CPU
          • saagarjha7 hours ago
            This would work for an idle screen but I can&#x27;t imagine this would be very efficient for real use, unless the hardware cursor is put in some other framebuffer (I assume it&#x27;s not otherwise the author would have probably mentioned it?)
  • guerrilla19 hours ago
    &gt; The Wii uses a PowerPC 750CL<p>Well, okay, that&#x27;s almost cheating.