[HN Gopher] I ported Mac OS X to the Nintendo Wii
___________________________________________________________________
I ported Mac OS X to the Nintendo Wii
Author : blkhp19
Score : 1090 points
Date : 2026-04-08 15:40 UTC (7 hours 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!
| 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 :)
| 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.
| ..
| 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.
| 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.
| 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.
| slackfan wrote:
| So what you're saying is if it's flexing, it's entirely
| performative. gotcha.
|
| I don't think that's a healthy way to look at it - dude was
| just getting some work done, but maybe I'm a broken human
| being who's churned out more code than I would ever admit
| while sitting in 32C on a cross-country flight.
| 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.
| 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.
| 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.
| 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.
| twoodfin wrote:
| I'm SOO happy but also wistfully sad when I open a post like
| this that I am desperately excited to read and it's not
| muddled-thinking- and LinkedInese-riddled slop.
| stavros wrote:
| This is excellent, though if you had chosen another OS, you could
| have called the project Wiindows.
|
| EDIT: Oh interesting, the final paragraph says NT has been
| ported, didn't know that. Sadly, no pun is mentioned in that
| project.
| snazz wrote:
| "entii-for-workcubes" is a pretty good pun!
| stavros wrote:
| I don't know man, "Wiindows" was right there and they chose
| "entii"? I weep for the missed opportunity more than
| anything.
|
| Maybe it was a legal worry.
| leonidasv wrote:
| Nice work and write-up!
|
| A side note: you embedded .mov videos inside <img> tags. This is
| not compatible with all browsers (notably Chrome and Firefox),
| which won't load the videos.
| efdee wrote:
| If it's not working on Chrome nor Firefox, it's safe to say
| it's incompatible with almost all browsers.
| leonidasv wrote:
| It works on Safari.
| blkhp19 wrote:
| I only tested on Safari - whoops! Fixed now.
| tverbeure wrote:
| Minor usability comment: the screenshots are too small to
| be readable. Whenever that's that case in my blog posts, I
| make those screenshots clickable and add _(Click to
| enlarge)_ below it, to make it easier for readers to see
| the image are original resolution. In markdown, I do that
| like this:
|
| [ ](image_url.png)
|
| (Of course, I can also right-click and do "Open image in
| new tab", but that's one click extra...)
|
| Congrats on the awesome project, BTW! You were lucky that I
| wasn't sitting next to you on the plane. I would have
| wasted so much of your time asking dumb questions.
| blkhp19 wrote:
| Images now expand when clicked - thanks for the feedback!
| 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.
| 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
| 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
| 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
| 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.
| 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.
| 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.
| 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.
| 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.
| 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
| 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? ;)
| 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
| 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...
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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!
| 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...
| 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.
___________________________________________________________________
(page generated 2026-04-08 23:00 UTC)