Um desenvolvedor chamado Bryan Keller conseguiu rodar o Mac OS X 10.0 Cheetah no console Nintendo Wii, em um feito que mistura engenharia de baixo nível, teimosia e criatividade. A façanha, que levou mais de uma década para sair do papel, começou em 2013, quando Keller era calouro na faculdade e teve a ideia pela primeira vez.
A motivação final veio de um comentário anônimo no Reddit, em 2021, que afirmava haver “zero por cento de chance” de o projeto funcionar. Keller usou esse ceticismo como combustível para mergulhar de cabeça no desenvolvimento, transformando o videogame em uma máquina capaz de rodar o sistema operacional da Apple.
Leia mais:
- Um dos games mais desejados do Steam, Windrose ganha data de estreia
- 8BitDo lança nova versão de seu popular teclado retrô inspirada no Apple II
- Apps travam 7,5x mais no Windows que no Mac
COMPATIBILIDADE DE HARDWARE
O Wii utiliza um processador PowerPC 750CL, uma evolução direta do chip presente nos iBooks e iMacs G3 da Apple — o que tornava o projeto tecnicamente viável desde o início. O console conta com 88 MB de RAM total, divididos entre 24 MB de 1T-SRAM rápida e 64 MB de GDDR3 mais lenta, memória suficiente para inicializar o Cheetah, que roda com menos de seus 128 MB oficiais mínimos.
Além do processador compatível, o Wii já havia recebido portes de outros sistemas anteriormente. Veja o que já rodou no console antes do Mac OS X:
| Sistema portado | Observação |
|---|---|
| Linux | Um dos primeiros portes, base para vários projetos homebrew |
| NetBSD | Sistema Unix de propósito geral |
| Windows 95 | Porte experimental por entusiastas |
| Windows NT | Porte recente que renovou a motivação de Keller |
| Mac OS X 10.0 Cheetah | O mais recente e complexo de todos |
BOOTLOADER, KERNEL E DRIVERS CUSTOMIZADOS
Para inicializar o Mac OS X no Wii, Keller escreveu um bootloader personalizado do zero, capaz de carregar o kernel a partir do cartão SD, construir uma árvore de dispositivos e repassar o controle ao sistema operacional. Em seguida, ele modificou o código-fonte do kernel XNU para corrigir incompatibilidades com o layout de memória do console. Com o kernel rodando, o próximo obstáculo foi fazer o sistema encontrar o sistema de arquivos raiz, o que exigiu o desenvolvimento de um driver de cartão SD integrado ao modelo IOKit do Mac OS X.
O DESAFIO DAS CORES E DO VÍDEO
A saída de vídeo trouxe um problema peculiar: o hardware do Wii foi projetado para sinais analógicos de TV e espera dados de pixel no formato YUV, enquanto o Mac OS X trabalha com RGB. Isso fazia com que todas as cores aparecessem completamente erradas na tela.
A solução foi implementar um sistema de dois framebuffers, convertendo os dados em tempo real. O processo funciona assim:
- O Mac OS X escreve os dados de pixel normalmente em um framebuffer RGB
- 60 vezes por segundo, o driver do Wii lê esse framebuffer RGB
- Os dados são convertidos em tempo real para o formato YUV
- O framebuffer YUV alimenta a saída de vídeo do console para o display
- O resultado é uma imagem com cores corretas sem que o Mac OS X precise ser modificado
USB, TECLADO E MOUSE
Adicionar suporte a teclado e mouse via USB foi outro grande desafio. O driver AppleUSBOHCI do Mac OS X foi originalmente projetado para hardware PCI, mas o Wii usa um chip SoC proprietário chamado Hollywood — o que exigiu a criação de nubs falsos de PCI para enganar o driver e fazê-lo funcionar.
Don’t Starve Elsewhere é anunciado como novo jogo da franquia de sobrevivência
Outro obstáculo foi a diferença de endianness: enquanto o IOUSBFamily faz a troca de bytes por software, o Wii já realiza essa operação em hardware, gerando uma “dupla inversão” que quebrava o USB. Após dias de pesquisa em fóruns antigos e no IRC, Keller obteve o código-fonte original do IOUSBFamily para o Cheetah, o que permitiu corrigir o problema e habilitar o uso real de teclado e mouse no sistema.
RESULTADO E LEGADO
Após meses de trabalho, Keller conseguiu inicializar o Mac OS X no Wii até a área de trabalho completa, com interface gráfica Aqua funcional, suporte a mouse e teclado, e até o instalador original do sistema rodando. O projeto foi documentado em seu blog pessoal e o código está disponível no GitHub para quem quiser replicar a experiência.
“Os projetos que parecem estar fora do alcance são exatamente os que valem a pena perseguir“, escreveu Keller ao concluir o relato. A frase resume bem o espírito de um projeto que começou como uma ideia de faculdade e terminou como um marco na história do homebrew e da computação retrô.
Fonte: github


