3 puntos por GN⁺ 2025-06-28 | 1 comentarios | Compartir por WhatsApp
  • 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

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 #snow en The Opcode Collective Discord

1 comentarios

 
GN⁺ 2025-06-28
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.

    • También existe Executor, aunque su compatibilidad es mucho peor que la de los demás: https://en.wikipedia.org/wiki/Executor_(software)
      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.
    • Ese artículo es objetivamente correcto, pero nunca había visto que se menospreciara de una forma tan extraña el trabajo arduo que la gente ha hecho gratis.
    • Quizá no pueda considerarse “amigable para el usuario”, pero MAME emula Macintosh y Apple II a nivel de hardware.
      Es más preciso que KEGS o AppleWin y cubre más periféricos, pero es menos fácil de usar.
    • Logré arrancar el emulador de Macintosh II FDHD, pero aunque el manual de Snow dice que el emulador de Mac II FDHD ofrece dos SuperDrive, en el menú del emulador https://docs.snowemu.com/manual/media/floppies solo aparece la opción de cargar disquetes de 400K/800K.
      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.
    • Algo que no hay que olvidar es que MAME también tiene cierto soporte para Macintosh 68k.
      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.

    • Un emulador preciso y una base de código limpia son un buen punto de partida para agregar parches o atajos.
      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.

    • Todos los adaptadores ADB-USB que conozco solo soportan mouse y teclado, y el firmware interno los mapea como USB HID.
      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 todavía no hiciste backup, quizá esos datos ya se hayan perdido.
      Si son datos valiosos, conviene revisarlos antes de que sea demasiado tarde.
    • Alguien que tenga una caja Bernoulli funcionando probablemente también tenga una Mac antigua compatible.
    • Tal vez esto sirva: https://www.bigmessowires.com/usb-wombat/
  • 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

    • Las primeras Mac usaban IWM, que básicamente era el controlador Disk II de Wozniak de 1977 reducido a un solo chip
      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:

      Woz's disk technology required that the software feed it new data every 32 microseconds exactly. If we were even a single microsecond early or late, it would cause a glitch in the data and ruin it. In order to write the routines, I needed to know how fast the Macintosh executed each instruction. The manual gave the number of clocks for each instruction, but I wasn't sure how long it took to fetch from memory. So of course, I asked Burrell what the timings were, but I was surprised at his response.
      "I don't know. The Mac is synchronous, just like the Apple II, so each instruction has the same timing, every time you execute it, so you will be able to write disk routines that have exact timing. I don't know what it is, so we'll just measure it. Why don't you write your routine and we'll measure it with the logic analyzer."
      -- https://www.folklore.org/Nybbles.html
      Viendo esto, parece que en teoría también habrían sido posibles en la Mac las técnicas de disco peculiares de la Apple II, como pistas en espiral, sectores de distintos tamaños y varios métodos de nibblización. Me pregunto si realmente se usaron para protección anticopia

  • Se siente realmente como hardware real y el trabajo es excelente. ¿Se podría usar esto también para emulación de Atari ST?

    • ¿Hatari no es ya excelente? https://github.com/hatari/hatari
      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