3 ポイント 投稿者 GN⁺ 2025-06-28 | 1件のコメント | WhatsAppで共有
  • Snow は Motorola 680x0 ベースのクラシック Macintosh をハードウェアに近い形で再現し、古い Mac 環境を現代のシステムで扱えるようにする
  • ROM のパッチやシステムコールのフックではなく、ハードウェアレベルのエミュレーションを目指しており、グラフィカル UI とデバッグ機能をあわせて提供する
  • Macintosh 128K から SE/30 まで複数の クラシック Mac モデルをサポートし、初期 Mac 系列を幅広く試せる
  • Rust で書かれた MIT ライセンスのオープンソースプロジェクトであり、制限付きのオンラインデモとインストール文書が公開されている
  • 安定リリースは GitHub から入手でき、最新の開発ビルドはテストが少ない代わりに Windows、macOS、Linux 向けに提供される

ハードウェアに近いクラシック Mac エミュレーション

  • Snow はクラシックな Motorola 680x0 ベースの Macintosh コンピューターをエミュレーションするプロジェクト
  • エミュレートされたマシンを操作するための グラフィカルユーザーインターフェースと広範なデバッグ機能を提供する
  • ROM をパッチしたりシステムコールをフックしたりする方式ではなく、可能な限り ハードウェアレベルで Macintosh をエミュレーションすることを目標としている
  • 現在の対応モデル:
    • Macintosh 128K/512K/512Ke
    • Macintosh Plus
    • Macintosh SE、non-FDHD および FDHD
    • Macintosh Classic
    • Macintosh II、non-FDHD および FDHD
    • Macintosh IIx、IIcx、SE/30

公開形態と体験方法

リリースとサポートチャネル

  • 安定リリースは一定のマイルストーンに到達した時点でパッケージ化される
  • GitHub releases から安定リリースを入手できる
  • 最新の開発ビルド (bleeding edge) はエミュレーター開発の進行に合わせて自動生成され、より新しい機能を含む可能性がある一方で、テストは少ない
  • 提供される最新の開発ビルド:
    • Windows 10 以上 x86 64-bit
    • Windows 10 以上 ARM64
    • macOS 11.7 Big Sur 以上 Universal
    • Linux Ubuntu 24.04 x86 64-bit
    • Linux Ubuntu 24.04 ARM64
  • バグ報告と改善要望は GitHub issues で受け付けている
  • サポートや会話は The Opcode Collective Discord#snow チャネルで可能

1件のコメント

 
GN⁺ 2025-06-28
Hacker News の意見
  • クラシック Mac 向けのポータブルで使いやすいハードウェアレベルのエミュレーターがなぜ大きな意味を持つのか、その背景を知るには 2020 年の記事 https://invisibleup.com/articles/30/ を読むとよい
    ゲームコンソールには Nestopia、bsnes、Dolphin、Duckstation のようなエミュレーターが昔からあり、PC 方面では VMWare や VirtualBox のような仮想化が大半のニーズを満たしてきた。最近では 86Box や MartyPC のような忠実度の高いエミュレーターも出てきた
    C64 には VICE、Amiga には WinUAE、Apple II にも KEGS や AppleWin のような高品質エミュレーターがあったが、Mac はおおむね Basilisk II のような高レベル・近似エミュレーターにとどまっていた

    • 互換性は他よりずっと低いが、Executor もある: https://en.wikipedia.org/wiki/Executor_(software)
      ブラウザで MS-DOS をエミュレートし、その上で Executor/DOS を実行させることで、Macintosh 版ソリティアをブラウザ上で動かすこともできる: https://archive.org/details/executor
      Executor/DOS のほかにも、公開されていないバージョンが Sun 3 ワークステーションで動作しており、Executor/NEXTSTEP は NeXT マシンで実行され、680x0 ベースの機器と NEXTSTEP を動かせる x86 PC の両方をサポートしていた
      Executor は Apple の知的財産を一切使っていなかったため互換性が最も低く、ROM とシステムソフトウェアの代替物は Apple ROM や System ファイルを逆アセンブルしていないクリーンルーム実装だった
      Linux ポートはあるが、ビルドは難しい可能性が高い。80386 で性能を最大限引き出そうとして、合成 CPU が gcc 専用拡張に依存していたためだ
      Executor についてはかなり知っている。初期バージョンを書いたのが自分だからだ。ただし、合成 68k エミュレーターやカラーサブシステムのような本当に印象的な部分は、自分よりはるかに優れたプログラマーたちが作った
    • その記事は客観的には正しいが、人々が無料でやってきた骨の折れる作業を、ここまで奇妙にこき下ろすのは初めて見た
    • 「ユーザーフレンドリー」とは言いにくいかもしれないが、MAME は Macintosh と Apple II をハードウェアレベルでエミュレートする
      KEGS や AppleWin より正確で、周辺機器もより多く扱えるが、ユーザーフレンドリーさでは劣る
    • Macintosh II FDHD エミュレーターは起動できたが、Snow のマニュアルには Mac II FDHD エミュレーターが SuperDrive を 2 台提供するとあるにもかかわらず、https://docs.snowemu.com/manual/media/floppies のエミュレーターメニューでは 400K/800K フロッピーだけを読み込むよう表示される
      そのせいか、これまで入れてみたすべてのフロッピーイメージが即座に排出され、Mac II と互換性があるという 800K System 7.1.1 ディスクも同様だった
      Snow の可能性は大きく、費やされた労力も尊重しているが、正直なところ、これまでの Mac エミュレーションの状況が昔と大きく変わったようには見えない。複数のエミュレーターが、エミュレートするハードウェアと対応機能のでこぼこした製品マトリクスを提供しており、多くの手順と古い Mac の内部構造に関する事前知識が必要で、将来性を約束している段階に見える
    • 忘れてはいけない点として、MAME もある程度68k Macintoshをサポートしている
      https://wiki.mamedev.org/index.php/Driver:Mac_68K
  • 正確性を重視するため、BasiliskII の強力な機能はなさそうだ。BasiliskII は OS/ROM にパッチを当てて、超高解像度やホストのファイルシステム・ネットワークとのほぼシームレスな統合を追加する
    Basilisk は不正確だが強力な機能のせいなのか、かなり不安定なのが残念だ。きちんと動くときは本当に快適に使える

    • 正確なエミュレーターときれいなコードベースは、パッチやショートカットを載せるうえでよい出発点になる
      Basilisk のパッチコードを見てみたが、それほど複雑ではなかったし、Basilisk 内部コード、Executor、MACE などには Toolbox の一部再実装もいくつかある
      移植には多少作業が必要だろうが、概ねコードの直接的な翻訳とテスト基盤の追加に近いものになると思う
  • ROM はどうやって見つけられる? Google で見つけたサイトからいくつか入手してみたが、エミュレーターがいつも “Unknown or unsupported ROM file” と表示する。使えるROM ファイルはどこで入手できる?

  • 大学卒業直後の初期にやった作業のかなりの部分が、Mac フォーマットのBernoulli ディスクの山に保存されている
    ソフトウェアの実行には ADB ドングルが必要なので、実機ハードウェアが必要だ。エミュレーターにマッピングできる ADB-USB アダプターがあるのか気になっている

    • 自分の知る ADB-USB アダプターはすべてマウスとキーボードだけをサポートしており、内部ファームウェアが USB HID にマッピングしている
      エミュレーターへ生のパススルーを行うには、カスタムファームウェアを書く必要がありそうだ。おそらくソフトウェアをクラックするほうが簡単かもしれない
    • まだバックアップしていないなら、そのデータはすでに失われているかもしれない
      価値のあるデータなら、手遅れになる前に確認したほうがよい
    • 動作する Bernoulli ボックスを持っている人なら、おそらくそれに合う古い Mac も一緒に持っている可能性が高い
    • これならできるかもしれない: https://www.bigmessowires.com/usb-wombat/
  • 入手しやすい標準の Mac OS 7.1 インストールディスクと Mac Plus ROM で起動してみたところ、Drive 0 でディスクが排出される
    Mini vMac では動くのを見ると、まだ改善が必要に思える

  • SE、II などについて HD20 サポートが「該当なし」と表示されているのは意外。II を除く一覧の全モデルは、ROM に HD20 ブート対応があると理解している
    実機の Mac SE でも HD20 エミュレーターを使っている
    任意サイズのディスクイメージを Mac エミュレーターと実際のフロッピーエミュレーターの両方へ持っていく、最も手軽な方法の一つ

  • Rust で再実装した 68K エミュレーターなので、C で書かれた有名な CPU コアである Musashi や UAE のコードと共有している部分はない

  • Mac も Lisa のように、ハードウェアのサイクル精度エミュレーションが必要なのか? lisaem を使ってみて Qemu でも実験したが、Lisa OS はハードウェアタイミングについて Qemu では満たせない前提を置いている

    • 初期の Mac は IWM を使っていたが、基本的には Wozniak の 1977 年の Disk II コントローラーを 1 チップに縮小したもの
      Apple II で使われていたのと同じサイクル精度のコード手法が Mac でも使われていた
      ディスクへの書き込み中にカーソルがたまに止まる理由もこれ。Mac にはカーソルも追跡する 60Hz の割り込みタイマーがあるが、書き込み中はオフにする必要がある
      Folklore.org の Andy Hertzfeld の記事にもさりげなく出てくる:

      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
      これを見ると、スパイラルトラック、サイズの異なるセクター、多様なニブル化方式といった Apple II の変わったディスク手法も、理論上は Mac で可能だったのではと思う。実際にコピー防止に使われたのか気になる

  • 本当に実物のような感じで、仕事が素晴らしい。これを Atari ST のエミュレーションにも使えるだろうか?

    • Hatari はすでに優秀では? https://github.com/hatari/hatari
      Clock Signal(CLK) もある。「Acorn Electron と Archimedes、Amstrad CPC、Apple II/II+/IIe と初期 Macintosh、Atari 2600 と ST、ColecoVision、Enterprise 64/128、Commodore Vic-20 と Amiga、MSX 1/2、Oric 1/Atmos、初期の PC 互換機、Sega Master System、Sinclair ZX80/81 と ZX Spectrum のための、レイテンシを嫌うエミュレーター」と説明している: https://github.com/TomHarte/CLK