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.

Leia mais:

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 portadoObservação
LinuxUm dos primeiros portes, base para vários projetos homebrew
NetBSDSistema Unix de propósito geral
Windows 95Porte experimental por entusiastas
Windows NTPorte recente que renovou a motivação de Keller
Mac OS X 10.0 CheetahO 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.

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ô.

Fonte: github

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Rolar para cima