世界を動かす技術を、日本語で。

Advanced Mac Substituteは1980年代のMac OSをAPIレベルで再実装したものです

概要

Advanced Mac Substitute は、1980年代の Mac OS をAPIレベルで再実装したプロジェクト。 Apple ROMやシステムソフトウェア不要で 68K Macアプリ が動作可能。 従来のエミュレータと異なり、ハードウェア全体を模倣せず OS自体を置換SDL2 など複数プラットフォームに対応したフロントエンドを持つ。 GitHubで ソースコード公開、macOSやLinuxなど各種環境で利用可能。

Advanced Mac Substituteの特徴

  • Advanced Mac Substitute は、1980年代の Mac OS をAPIレベルで再現したソフトウェア
  • Apple純正ROMやシステムソフトウェア を必要としない独自実装
  • 68Kエミュレータ を内蔵し、オリジナルのMacアプリケーション実行を実現
  • 従来のエミュレータと異なり、 OS全体のハードウェアエミュレーションを行わず、OS部分のみを置換
  • 起動時に アプリケーションを直接実行、システムの起動フェーズを省略

対応アプリケーション・ゲーム例

  • MacPaintSystem’s TwilightLode Runner などの有名アプリの動作実績
  • 1984年リリースの AmazingSolitaireMissileIAGO などのゲームが動作可能
  • The Fool’s Errand のプロローグ映像再生もサポート

技術的詳細

  • バックエンド は68Kエミュレータ、 POSIX互換システム でビルド・実行可能
  • フロントエンド はSDL2を利用し、 macOS、X11、Linux framebuffer(fbdev) など多様な環境に対応
  • 1ビットグラフィック、領域、円・角丸矩形、線、カーソル、GrafPorts、テキスト、ウィンドウ、コントロール、メニュー、ダイアログなど多彩な機能をサポート

ソースコード・利用方法

  • GitHub でプロジェクトの ソースコードを公開
  • macOS / OS XX Window SystemLinux framebufferコンソールVNCクライアント などで動作
  • ドキュメントは現在リビジョン中で一部移動中

まとめ

  • Advanced Mac Substitute は、 Apple製ROM不要レガシーMacアプリ を現代環境で動作させる新しい選択肢
  • オープンソース であり、 多様なプラットフォーム に対応
  • レトロMacアプリ愛好家エミュレーション技術に興味がある開発者 に最適

Hackerたちの意見

エグゼキュータと比べてどうなの? https://en.wikipedia.org/wiki/Executor_(software)

クラシックMac OS用のWine?すごいね。お疲れ様!

Wine + FEXっぽいね。

古いアプリ用にCarbonみたいなのがあったらいいな。現代のウィンドウフレームで起動できて(タホの角が欠けてないやつ)、ファイルに保存できるやつ。

まさにこういうプロジェクトが、そんなシステムの基盤になり得るよね。

Advanced Mac Substituteは、ドキュメントや設定ファイルをサンドボックス化されたホストディレクトリに保存するんだ。例えば、MacPaintのデモを見てみて:https://www.v68k.org/advanced-mac-substitute/demo/MacPaint-A... macOSのFinderでHelloドキュメントをダブルクリックすると、MacPaint.appが起動して開くよ。

これが元のハードウェアと比べてどれだけ速いのか想像もつかない。フロッピーディスクドライブ1台(ハードディスクなし)のMac 512kを使ってた頃を思い出すよ。フロッピーを入れるダンスをしてたな。あの頃のコンピュータはもっと機械的だった。フロッピーの読み書き音と一緒に「スローダウン」機能があったら楽しいだろうな。異なる世代のハードウェアの音も追加して、オリジナルのハードディスクの音も合わせてほしい!

最近、音エミュレーションを搭載したレトロハードウェアプロジェクトのショーHNがあったよね。その作者がこれを読んでるかもしれないけど、音エミュレーションが一番好きだったな(実際のハード部分を無視するわけじゃないけど!魅力的だった)。

小さい頃、親のApple IIeでKing's Quest IVをプレイしてた時の「懐かしい」思い出。画面を切り替えるたびに5.25インチのフロッピーディスクを入れ替えなきゃいけなかったんだよね。ゲームには夢中だったけど、ディスクをひっくり返したり入れ替えたりするのが本当に面倒だった。グーグルによると、8枚の両面ディスクで出てたみたいだけど、確か数十枚あった気がする。

あなたが説明しているのに近いApple IIエミュレーターを試してみたよ:https://www.virtualii.com/ フロッピーディスクの音やスピード設定もある。

1980年代のソフトウェアがバイナリAPI互換性で動くなんて驚きだよ。タイミングやメモリアライメントのクセ、特定のアロケーターの動作からのメモリレイアウトなどのAPIのクセに頼ってないんだね。実装の詳細に意図せず依存するだけで、他のOSではアプリが動かなくなることもあるから怖いよね。

実装のクセに頼ってるアプリはたくさんあったよ。

Macのクラシックは、アーキテクチャ的にはかなり純粋だった。1ビットのフレームバッファとCPUがあれば、そのマシンができることのほとんどをカバーできる。8ビットマシンの奇妙な使い方は、制限付きの機能から来てたんだよね。スプライトはあるけど8個だけ、色は8x8のセルで2色だけ。多色だけど2つのパレットのうちの1つしか使えなくて、どっちも嫌になる。ほとんどのハックは、その機能の制限を回避するためのものだった。Appleが将来のマシンを考えてその決定をしたかどうかは分からないけど、最初のマシンがプレイヤーミサイルグラフィックスを持ってたら、5世代後の新しいマシンを作るのは頭が痛かっただろうね。

これってMACEより先にゴールに到達したの?それとも目標が違うのかな?

これ、めっちゃ面白そう!最近、Basilisk IIにARM64 JITを追加する作業をしてて、どれだけ大変か分かるよ(今はNuBusのハードウェア検出を回避するためにQuadra ROMをパッチ当ててて詰まってる…)。ぜひ試してみたいな、現代的な快適さ(ファイル共有とか)を持ったクラシックMac環境が小さなマシンで使えたら最高だし。

こういう努力は、古いアプリを現在のハードウェアで「ネイティブ」に動かすいい方法になるかもしれないね。実際、仕事に使えるアプリがたくさんあるのに、今は動かせないものが多いから。

Macromedia Freehand/MXをこうやって動かせるなら嬉しいな。

すごくクール!これ、ARDI Executorを思い出すなぁ。[1] 1990年に初めてリリースされた商業ソフトウェアで、ここで使われているのと同じAPIレベルの再実装アプローチを取ってたんだよね。90年代のPCハードウェアで動いてたのに、めちゃくちゃ速かったのが驚きだった。小さい頃、Windows PCでいくつかのMacゲームを遊ぶために使ってたから、コードの勉強を始めたばかりの時にこれが可能だって見て、本当に感動したよ。:) もっと現代的な実装でこれをやってるのを見るのもいいね!2005年にサービス終了したけど、その後開発者たちがオープンソースにして、数年後にGitHubにコードをアップしたんだ。[2] [1] https://en.wikipedia.org/wiki/Executor_(software) [2] https://github.com/ctm/executor ボーナス:Executorを作ったスタートアップARDIのエンジニアの一人が、ボブ・クリンジェリーの1996年のドキュメンタリー『トライアンフ・オブ・ザ・ナーズ』にちょっとだけ登場して、90年代中頃のシリコンバレーのスタートアップでの生活について話してたよ。

これめっちゃクールだね。あの見た目が好き!クラシックな白黒のmacOSには、時代を超えた「別のタイムライン」のL'Air de Panacheの美学があって、信頼性と安定感を感じるんだ。小学校のコンピュータ室にあった、Macintosh SEやPlusの並んでいるのを思い出すのかも。あのしっかりしたベージュのブロックたち。リアルなウェブブラウジングができるMacOSシステム7のウェブデスクトップUIを作ったよ:https://win9-5.com/macos/ 再想像したものだね。

おお、すごい。笑顔のマシンと空の進行状況バーを見た瞬間、NoScriptに直行して、あなたのドメインをためらわずに有効にしたよ — これは私にとってかなり珍しいこと。魅力的だね!あなたのスクリーンセーバーを見たとき、思わず笑っちゃった。親しみがありつつも異質で、まるで別の宇宙を見ているみたい。少し前に自分でウェブベースのMacシミュレーターを作ったんだ:https://www.metamage.com/apps/maxim/ CSSやJSにもっと慣れるための方法だったし、クラシックMac OSのノスタルジーにも浸れたけど、一番の収穫は、ウェブが複雑な構造を築くための基盤にはしたくないって気づいたことかな。それが間接的にAdvanced Mac Substituteを作るきっかけになったんだ。