Snow — emulador de Macintosh clássico
(snowemu.com)- Snow reproduz de forma próxima ao hardware os Macintosh clássicos baseados no Motorola 680x0, permitindo lidar com ambientes antigos de Mac em sistemas modernos
- Em vez de aplicar patches na ROM ou interceptar chamadas de sistema, tem como objetivo a emulação em nível de hardware, oferecendo também uma interface gráfica e recursos de depuração
- Suporta vários modelos clássicos de Mac, do Macintosh 128K ao SE/30, permitindo experimentar amplamente a primeira linha de Macs
- É um projeto open source sob licença MIT escrito em Rust, com uma demonstração online limitada e documentação de instalação disponíveis
- As versões estáveis podem ser baixadas no GitHub, e os builds de desenvolvimento mais recentes são oferecidos para Windows, macOS e Linux, embora sejam menos testados
Emulação de Mac clássico próxima ao hardware
- Snow é um projeto que emula computadores Macintosh clássicos baseados no Motorola 680x0
- Oferece uma interface gráfica de usuário para operar a máquina emulada e amplos recursos de depuração
- Em vez de aplicar patches na ROM ou interceptar chamadas de sistema, o objetivo é emular o Macintosh, tanto quanto possível, em nível de hardware
- Modelos atualmente suportados:
- Macintosh 128K/512K/512Ke
- Macintosh Plus
- Macintosh SE, non-FDHD e FDHD
- Macintosh Classic
- Macintosh II, non-FDHD e FDHD
- Macintosh IIx, IIcx, SE/30
Forma de disponibilização e caminhos para experimentar
- A linguagem de implementação é Rust, e o projeto está disponível como open source no GitHub
- A licença é a MIT license
- Uma demonstração online limitada está disponível, mas permite usar apenas a máquina emulada, sem a UI do software completo ou outros recursos
- A instalação e informações adicionais podem ser consultadas na documentação online
Lançamentos e canais de suporte
- Versões estáveis são empacotadas quando determinados marcos são alcançados
- As versões estáveis podem ser baixadas em GitHub releases
- Os builds de desenvolvimento mais recentes (bleeding edge) são gerados automaticamente conforme o desenvolvimento do emulador avança e podem incluir recursos mais novos, mas são menos testados
- Builds de desenvolvimento mais recentes disponíveis:
- Windows 10 ou superior x86 64-bit
- Windows 10 ou superior ARM64
- macOS 11.7 Big Sur ou superior Universal
- Linux Ubuntu 24.04 x86 64-bit
- Linux Ubuntu 24.04 ARM64
- Relatos de bugs e solicitações de melhorias são recebidos em GitHub issues
- Suporte ou conversas estão disponíveis no canal
#snowdo The Opcode Collective Discord
1 comentários
Comentários no Hacker News
Para entender o contexto de por que um emulador em nível de hardware, portátil e fácil de usar para Macs clássicos é tão importante, vale ler este texto de 2020: https://invisibleup.com/articles/30/
Consoles de videogame já tinham há muito tempo emuladores como Nestopia, bsnes, Dolphin e Duckstation; no PC, virtualização como VMWare e VirtualBox atendia à maior parte das necessidades, e recentemente também surgiram emuladores de alta fidelidade como 86Box e MartyPC
O C64 tinha o VICE, o Amiga tinha o WinUAE, e o Apple II também contava com emuladores de alta qualidade como KEGS e AppleWin, mas o Mac em geral ficou limitado a emuladores de alto nível e aproximados como o Basilisk II
É possível até rodar a versão para Macintosh do Solitaire no navegador fazendo o navegador emular MS-DOS e executar o Executor/DOS em cima dele: https://archive.org/details/executor
Além do Executor/DOS, uma versão não lançada rodava em estações de trabalho Sun 3, e o Executor/NEXTSTEP rodava em máquinas NeXT, com suporte tanto a dispositivos baseados em 680x0 quanto a PCs x86 capazes de rodar NEXTSTEP
Como o Executor não usava nenhuma propriedade intelectual da Apple, tinha a compatibilidade mais baixa; as substituições de ROM e software de sistema eram uma implementação clean-room, sem desmontar ROMs da Apple nem arquivos do System
Existe um porte para Linux, mas é bem provável que seja difícil de compilar. Isso porque a CPU sintética dependia de extensões específicas do gcc para extrair o máximo de desempenho do 80386
Conheço bastante o Executor, porque escrevi as versões iniciais. Mas as partes realmente impressionantes, como o emulador 68k sintético e o subsistema de cores, foram feitas por programadores muito melhores do que eu
Ele é mais preciso que KEGS ou AppleWin e também cobre mais periféricos, mas é menos amigável ao usuário
Talvez por isso, todas as imagens de disquete que tentei inserir até agora foram ejetadas imediatamente, inclusive o disco de 800K do System 7.1.1 que seria compatível com o Mac II
O Snow tem muito potencial e respeito o esforço investido nele, mas, sinceramente, até agora o panorama da emulação de Mac não parece muito diferente de antes. Vários emuladores oferecem uma matriz de produtos irregular de hardware emulado e recursos suportados, exigem muitos procedimentos e conhecimento prévio sobre a arquitetura interna dos Macs antigos, e parecem estar em um estado de promessa para o futuro
https://wiki.mamedev.org/index.php/Driver:Mac_68K
Por causa da precisão, provavelmente ele não terá os recursos poderosos do BasiliskII. O BasiliskII aplica patches no OS/ROM para adicionar resoluções altíssimas e integração quase perfeita com o sistema de arquivos e a rede do host
É uma pena que o Basilisk seja bem instável, talvez por ser impreciso mas cheio de recursos poderosos. Quando funciona direito, é realmente muito agradável de usar
Dei uma olhada no código de patches do Basilisk e ele não era tão complicado; também há várias reimplementações de partes do Toolbox no código interno do Basilisk, no Executor, no MACE etc.
Portar isso exigiria algum trabalho, mas em geral parece mais uma tradução direta do código com adição baseada em testes
Como dá para encontrar a ROM? Baixei algumas de sites que encontrei no Google, mas o emulador sempre diz “Unknown or unsupported ROM file”. Onde dá para conseguir um arquivo de ROM utilizável?
Boa parte do trabalho que fiz logo depois de me formar na faculdade está armazenada em um monte de discos Bernoulli em formato Mac
Preciso de hardware real porque o software exige um dongle ADB para rodar. Fico me perguntando se existe algum adaptador ADB-USB que possa ser mapeado para um emulador
Para fazer passthrough bruto para um emulador, acho que seria necessário escrever um firmware customizado. Talvez seja mais fácil crackear o software
Se forem dados valiosos, é melhor verificar antes que seja tarde
Tentei inicializar com um disco de instalação padrão do Mac OS 7.1, fácil de encontrar, e uma ROM do Mac Plus, mas o disco é ejetado no Drive 0.
Como funciona no Mini vMac, parece que ainda precisa de melhorias
Achei inesperado que o suporte a HD20 apareça como “não aplicável” para SE, II etc. Pelo que sei, todos os modelos da lista, exceto o II, têm suporte a boot pelo HD20 na ROM.
Uso um emulador de HD20 até em um Mac SE real.
É uma das formas mais convenientes de levar imagens de disco de tamanho arbitrário tanto para emuladores de Mac quanto para emuladores de disquete físicos
Por ser um emulador 68K reimplementado em Rust, não compartilha partes com os núcleos de CPU bem conhecidos em C, como Musashi ou o código do UAE
O Mac também precisa de emulação com precisão de ciclos do hardware, como o Lisa? Usei o lisaem e também fiz experimentos com o Qemu, mas o Lisa OS faz suposições sobre temporização de hardware que o Qemu não consegue atender
A mesma técnica de código com precisão de ciclos usada no Apple II também era usada no Mac.
É por isso que o cursor às vezes congela durante a gravação no disco. O Mac tem um temporizador de interrupção de 60 Hz que também rastreia o cursor, mas ele precisa ser desligado durante operações de escrita.
Isso também aparece de passagem em um texto de Andy Hertzfeld no Folklore.org:
A sensação é muito realista, e o trabalho é excelente. Será que isso poderia ser usado também para emulação do Atari ST?
Também há o Clock Signal (CLK). Ele se descreve como um “emulador que odeia latência para Acorn Electron e Archimedes, Amstrad CPC, Apple II/II+/IIe e os primeiros Macintosh, Atari 2600 e ST, ColecoVision, Enterprise 64/128, Commodore Vic-20 e Amiga, MSX 1/2, Oric 1/Atmos, primeiros compatíveis com PC, Sega Master System, Sinclair ZX80/81 e ZX Spectrum”: https://github.com/TomHarte/CLK