X1の実機で開発をするのはさすがにきついのです。
というわけで、動作確認のためにエミュレーターを使えるようにします。
Macで使えるエミュレーターはあるのか?
まず問題はここです。
検索すると、Windows用はそこそこあるのですが、Macだととたんに情報がありません。
で、現状ほぼ唯一使えそうなのが MESS です。
MESS(Multi Emulator Super System)はMAMEの一種ですが、ゲームだけでなく古いPCのエミュレーターも含んでいるようです。
しかも、Mac向けにビルドされたものが SDLMAME として配布されているので、面倒が少なそうです。
※エミュレーターでX1を動かすためのソフトウェア(BIOS等)を必要としますが、それらの入手に関しては割愛します。
MESS(SDLMAME)を使えるようにする
###SDL2のインストール
まずSDLをインストールします。
このサイト https://www.libsdl.org/download-2.0.php から"Runtime Binaries"にある"Mac OS X"用のdmgファイルをダウンロードします。
dmgファイルを開くと "SDL2.framework" があるので、これを /Library/Frameworks にコピーすればよいです。
##SDLMAMEのダウンロード
SDLMAMEのサイトからSDLMAME本体をダウンロードします。32bitと64bitの両方がありますが、ここでは64bit版(SDLMAME v0.167 64-bit)にします。
zipファイルを適当な場所に展開します。
中にある mame64 という148MBもある実行ファイルがSDLMAMEの本体です。
##BIOSの入手
X1のBIOS(x1.zip)をどこかから入手します。
SDLMAMEの実行ファイル(mame64)のあるディレクトリに roms ディレクトリを作成します。
その下に、x1.zip をzipのままコピーします。
##MESSを実行する前に
これでMESSでX1をエミュレーションできるのですが、実行前に必ず以下のファイルを作成しておきます。
これがないと、MESSを終了させることができなくなります。
実行ファイルのあるディレクトリに cfg というディレクトリがない場合は作成してください。
<?xml version="1.0"?>
<mameconfig version="10">
<system name="default">
<input>
<port type="UI_TOGGLE_UI">
<newseq type="standard">
KEYCODE_LALT KEYCODE_LWIN
</newseq>
</port>
</input>
</system>
</mameconfig>
ここまでで以下のようなファイル構成になります。
- mame64
- + roms
| - x1.zip
|
- + cfg
| - default.cfg
##MESSの起動
ターミナルで以下のように起動します。
mame64 x1
色々とメッセージが出ますが、 とりあえずenterを押して進みます。
"Type OK or .." と出たらOKと押してください。
白い文字で以下のメッセージが出れば、X1のエミュレーションが始まります。
IPL is under preparing
##MESSの終了
Option+commandキーを押すと、以下の様なメッセージが出ます。
Emulation Status
UI: enabled
この状態でESCを押せば終了できます。
X1のエミュレーションが始まると、キーは基本的にX1に渡されてしまうため、MESSそのものを操作できなくなります。
そのため、MESSそのものを操作するときは、MESSのユーザーインターフェースが優先してキー入力を受け取るように切り替える必要があります。
この切替を Option+command でできるようにするために cfg/default.cfg を用意していたのです。
これがないと、ESC を押してもX1が拾ってしまうので、終了できません。
切り替えキーはX1が認識しないキーであれば何でもかまいません。
なお、デフォルトは ScrLock になっていますので、これがついているキーボードを使っているのなら、default.cfg を用意する必要はないかもしれません。