Snow: emulador de Macintosh clásico
(snowemu.com)- Snow reproduce de forma cercana al hardware las Macintosh clásicas basadas en Motorola 680x0, lo que permite manejar entornos Mac antiguos en sistemas modernos
- Apunta a una emulación a nivel de hardware, en lugar de aplicar parches a la ROM o interceptar llamadas del sistema, y ofrece una interfaz gráfica junto con funciones de depuración
- Es compatible con varios modelos clásicos de Mac, desde la Macintosh 128K hasta la SE/30, lo que permite experimentar ampliamente con las primeras líneas de Mac
- Es un proyecto open source con licencia MIT escrito en Rust, y cuenta con una demo en línea limitada y documentación de instalación pública
- Las versiones estables se pueden obtener en GitHub, mientras que las builds de desarrollo más recientes están disponibles para Windows, macOS y Linux, aunque con menos pruebas
Emulación de Mac clásicas cercana al hardware
- Snow es un proyecto que emula computadoras Macintosh clásicas basadas en Motorola 680x0
- Ofrece una interfaz gráfica de usuario para operar la máquina emulada y amplias funciones de depuración
- Su objetivo es emular la Macintosh tanto como sea posible a nivel de hardware, en lugar de parchear la ROM o interceptar llamadas del sistema
- Modelos compatibles actualmente:
- Macintosh 128K/512K/512Ke
- Macintosh Plus
- Macintosh SE, non-FDHD y FDHD
- Macintosh Classic
- Macintosh II, non-FDHD y FDHD
- Macintosh IIx, IIcx, SE/30
Modalidad de publicación y formas de probarlo
- El lenguaje de implementación es Rust y está publicado como open source en GitHub
- La licencia es MIT license
- Hay disponible una demo en línea limitada, pero solo permite usar la máquina emulada, sin la UI completa del software ni otras funciones
- La instalación y la información adicional pueden consultarse en la documentación en línea
Versiones y canales de soporte
- Las versiones estables se empaquetan cuando se alcanza un hito determinado
- Las versiones estables se pueden obtener en GitHub releases
- Las builds de desarrollo más recientes (bleeding edge) se generan automáticamente a medida que avanza el desarrollo del emulador y pueden incluir funciones más nuevas, pero tienen menos pruebas
- Builds de desarrollo más recientes disponibles:
- Windows 10 o superior x86 64-bit
- Windows 10 o superior ARM64
- macOS 11.7 Big Sur o superior Universal
- Linux Ubuntu 24.04 x86 64-bit
- Linux Ubuntu 24.04 ARM64
- Los reportes de bugs y las solicitudes de mejora se reciben en GitHub issues
- Para soporte o conversación, se puede usar el canal
#snowen The Opcode Collective Discord
1 comentarios
Opiniones de Hacker News
Para entender el contexto de por qué importa tanto un emulador a nivel de hardware, portátil y fácil de usar para Mac clásicos, conviene leer este artículo de 2020: https://invisibleup.com/articles/30/
Las consolas de videojuegos cuentan desde hace mucho con emuladores como Nestopia, bsnes, Dolphin y Duckstation; en PC, la virtualización como VMWare y VirtualBox cubrió la mayoría de las necesidades, y más recientemente aparecieron emuladores de alta fidelidad como 86Box y MartyPC.
La C64 tenía VICE, la Amiga tenía WinUAE, y la Apple II también contaba con emuladores de alta calidad como KEGS y AppleWin, pero Mac en general se quedó en emuladores de alto nivel y aproximados como Basilisk II.
Incluso se puede hacer que el navegador emule MS-DOS y ejecute Executor/DOS encima para correr la versión Macintosh de Solitario en el navegador: https://archive.org/details/executor
Además de Executor/DOS, hubo una versión no publicada que corría en estaciones de trabajo Sun 3, y Executor/NEXTSTEP se ejecutaba en máquinas NeXT; era compatible tanto con dispositivos basados en 680x0 como con PCs x86 capaces de correr NEXTSTEP.
Executor tenía la compatibilidad más baja porque no usaba en absoluto propiedad intelectual de Apple, y sus reemplazos de ROM y software de sistema eran una implementación de sala limpia, sin desensamblar ROMs de Apple ni archivos System.
Existe un port a Linux, pero probablemente sea difícil de compilar, porque la CPU sintética dependía de extensiones exclusivas de gcc para exprimir al máximo el rendimiento en 80386.
Sé bastante sobre Executor porque escribí una versión inicial. Eso sí, las partes realmente impresionantes, como el emulador sintético de 68k o el subsistema de color, las hicieron programadores mucho mejores que yo.
Es más preciso que KEGS o AppleWin y cubre más periféricos, pero es menos fácil de usar.
Tal vez por eso, todas las imágenes de disquete que probé hasta ahora fueron expulsadas de inmediato, incluida una de System 7.1.1 de 800K que supuestamente es compatible con Mac II.
Snow tiene mucho potencial y respeto el esfuerzo invertido, pero sinceramente el panorama de la emulación de Mac hasta ahora no parece muy distinto de antes. Se ve como una matriz de productos irregular de hardware emulado y funciones compatibles entre varios emuladores, que requiere muchos pasos y conocimientos previos de la estructura interna de las Mac antiguas, con promesas a futuro.
https://wiki.mamedev.org/index.php/Driver:Mac_68K
Por su precisión, probablemente no tenga las funciones potentes de BasiliskII. BasiliskII parchea el OS/ROM para agregar resoluciones muy altas y una integración casi transparente con el sistema de archivos y la red del host.
Es una lástima que Basilisk sea bastante inestable, quizá por esas funciones potentes aunque imprecisas. Cuando funciona bien, es realmente muy cómodo de usar.
Revisé el código de parches de Basilisk y no era tan complejo; además, en el código interno de Basilisk, Executor, MACE y otros hay varias reimplementaciones parciales de Toolbox.
Portarlo requeriría algo de trabajo, pero en general parece más cercano a una traducción directa del código y a agregar pruebas alrededor.
¿Cómo se pueden encontrar las ROM? Descargué algunas desde sitios que encontré en Google, pero el emulador siempre dice “Unknown or unsupported ROM file”. ¿Dónde se pueden conseguir archivos ROM que funcionen?
Gran parte de mi trabajo de los primeros años justo después de graduarme de la universidad está guardado en un montón de discos Bernoulli con formato Mac.
El software requiere un dongle ADB para ejecutarse, así que necesito hardware real. Me pregunto si habrá algún adaptador ADB-USB que se pueda mapear a un emulador.
Para hacer passthrough sin procesar hacia un emulador, creo que habría que escribir firmware personalizado. Tal vez sea más fácil crackear el software.
Si son datos valiosos, conviene revisarlos antes de que sea demasiado tarde.
Probé cargándolo con discos de instalación estándar de Mac OS 7.1 fáciles de conseguir y una ROM de Mac Plus, pero el disco se expulsa en Drive 0
Como Mini vMac sí funciona, parece que todavía necesita mejoras
Me sorprende que el soporte para HD20 aparezca como “no aplica” para el SE, II, etc. Según entiendo, todos los modelos de la lista excepto el II tienen soporte de arranque HD20 en la ROM
También uso un emulador de HD20 en una Mac SE real
Es una de las formas más cómodas de llevar imágenes de disco de tamaño arbitrario tanto a emuladores de Mac como a emuladores de disquetera reales
Como es un emulador 68K reimplementado en Rust, no comparte partes con cores de CPU conocidos escritos en C, como Musashi o el código de UAE
¿La Mac también necesita emulación con precisión de ciclos del hardware, como la Lisa? Probé lisaem y también experimenté con Qemu, pero Lisa OS hace suposiciones sobre los tiempos del hardware que Qemu no puede cumplir
En la Mac también se usaban las mismas técnicas de código con precisión de ciclos que en la Apple II
Esta también es la razón por la que el cursor a veces se congela mientras se escribe al disco. La Mac tiene un temporizador de interrupción de 60 Hz que también rastrea el cursor, pero hay que apagarlo durante las operaciones de escritura
También aparece mencionado de pasada en un texto de Andy Hertzfeld en Folklore.org:
Se siente realmente como hardware real y el trabajo es excelente. ¿Se podría usar esto también para emulación de Atari ST?
También está Clock Signal (CLK). Se describe como “un emulador que odia la latencia para Acorn Electron y Archimedes, Amstrad CPC, Apple II/II+/IIe y las primeras Macintosh, Atari 2600 y ST, ColecoVision, Enterprise 64/128, Commodore Vic-20 y Amiga, MSX 1/2, Oric 1/Atmos, primeras PC compatibles, Sega Master System, Sinclair ZX80/81 y ZX Spectrum”: https://github.com/TomHarte/CLK