Snow - クラシック Macintosh エミュレーター
(snowemu.com)- 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
公開形態と体験方法
- 実装言語は Rust で、GitHub でオープンソースとして公開されている
- ライセンスは MIT license
- 制限付きの オンラインデモ が提供されているが、完全なソフトウェアの UI やその他の機能はなく、エミュレートされたマシンのみ利用できる
- インストールと追加情報は オンラインドキュメント で確認できる
リリースとサポートチャネル
- 安定リリースは一定のマイルストーンに到達した時点でパッケージ化される
- 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件のコメント
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 のような高レベル・近似エミュレーターにとどまっていた
ブラウザで 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 エミュレーターやカラーサブシステムのような本当に印象的な部分は、自分よりはるかに優れたプログラマーたちが作った
KEGS や AppleWin より正確で、周辺機器もより多く扱えるが、ユーザーフレンドリーさでは劣る
そのせいか、これまで入れてみたすべてのフロッピーイメージが即座に排出され、Mac II と互換性があるという 800K System 7.1.1 ディスクも同様だった
Snow の可能性は大きく、費やされた労力も尊重しているが、正直なところ、これまでの Mac エミュレーションの状況が昔と大きく変わったようには見えない。複数のエミュレーターが、エミュレートするハードウェアと対応機能のでこぼこした製品マトリクスを提供しており、多くの手順と古い Mac の内部構造に関する事前知識が必要で、将来性を約束している段階に見える
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 アダプターがあるのか気になっている
エミュレーターへ生のパススルーを行うには、カスタムファームウェアを書く必要がありそうだ。おそらくソフトウェアをクラックするほうが簡単かもしれない
価値のあるデータなら、手遅れになる前に確認したほうがよい
入手しやすい標準の 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 では満たせない前提を置いている
Apple II で使われていたのと同じサイクル精度のコード手法が Mac でも使われていた
ディスクへの書き込み中にカーソルがたまに止まる理由もこれ。Mac にはカーソルも追跡する 60Hz の割り込みタイマーがあるが、書き込み中はオフにする必要がある
Folklore.org の Andy Hertzfeld の記事にもさりげなく出てくる:
本当に実物のような感じで、仕事が素晴らしい。これを Atari ST のエミュレーションにも使えるだろうか?
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