Desenvolvedor consegue rodar Mac OS X 10.0 no Nintendo Wii

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.

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.

Mac OS X running on a Wii
Bryan Keller/GitHub

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:

  1. O Mac OS X escreve os dados de pixel normalmente em um framebuffer RGB
  2. 60 vezes por segundo, o driver do Wii lê esse framebuffer RGB
  3. Os dados são convertidos em tempo real para o formato YUV
  4. O framebuffer YUV alimenta a saída de vídeo do console para o display
  5. 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ô.

Compartilhe nas redes:

Quer ser parceiro ou ter seu jogo divulgado? Envie e-mail para: contato@centraltechgaming.com.br