Raspberry Pi 500でFM-TOWNSエミュレータを動かす
自宅にあるFM-TOWNSIIモデルMXはCD-ROMドライブが壊れて、大量のゲーム資産が実機で使えなくなっています。

CD-ROMドライブ基板のボリュームを回すと改善されることもあるので調整してみたところ、小さなファイルなら読めるようになったのですが、CD-ROMからシステムやゲームを起動しようとすると必ずエラーが発生してしまいます。
壊れやすいTOWNSのCD-ROMドライブの代替として、こちらのサイトで外付けCD-ROMドライブからゲーム起動するドライバを配布してくれているのですが、いまどきSCSI CD-ROMドライブはなかなか手に入りませんし、中古があったとしても非常に高価になっています。
そんなとき助かるのが、エミュレータです。特に上記サイトの「津軽」は優秀で、ほとんどのTOWNSのゲームが動作するとのことです。実際に手持ちのゲームはちゃんと動くので資産が無駄にならずに済んでいます。
FM-TOWNSのエミュレータとしては昔から「うんづ」が有名ですが、うんづは実際のCDドライブか仮想CDドライブを必要とします。
それと違い、津軽はCD-ROMのイメージファイルを扱えるので便利です。また、WindowsだけでなくLinuxやMacでも動作します。
そこで以前Raspberry Pi 400で津軽をソースからコンパイルして動かしてみようとしたことがあります。このときコンパイルはできましたが、実行するとフロントエンドのメニューは動いても、エミュレータ本体が起動直後に停止してしまいました。津軽のソースコードが高度すぎて原因は突き止められていません。
先日、Pi500を購入したので、もう一度「津軽」にチャレンジしてみました。
Pi500はハードディスクに64ビットのRaspberry Pi OSを入れて使っています。
コンパイル手順はこちらのサイトのmacOSの場合とほぼ同様です。Pi500でもコンパイルはすんなり行えたので起動してみると、

設定画面は表示されます。ここでBIOSなどの設定をしてからSTARTボタンでエミュレータを起動してみると、

起動後すぐに停止してしまいました。残念。
でもまだあきらめません、Linuxで動かせるTOWNSのエミュレータはまだあります。それはMAMEです。
もともとMAMEはアーケードゲーム基盤のエミュレータだったのですが、MAMEから派生した世界中のコンピュータをエミュレートするMESSプロジェクトと統合されて、ありとあらゆるコンピュータが動くエミュレータとなっています。
日本のパソコン・ポケコン・ゲーム機なども、かなりの種類がエミュレートされています。ただし出来の悪いものもありますが。
バージョンアップしたときなどに、たまにPCのLinuxでコンパイルして動かしてみるのですが、TOWNSのエミュレータはまともに動いていました。今度はこれをPi500でも動かしてみようと思います。
かなり前にRaspberry Pi 3 Model B+でコンパイルしたことがありましたが、この時は長い時間コンパイルをつづけた挙句、途中でハングしてしまいました。(OSはMicroSDではなくハードディスクで運用)
Pi500はどうでしょうか。mame本体のコンパイルはPCだと30分くらいですがPi500はもっとかかると思うので、寝る時にコンパイルを開始して(夜中には終わっているでしょうが)朝起きたら完了しているという手順で作業しました。結果、エラーが起きることなく無事コンパイルは終了していました。
参考までにコンパイル手順を書いておきます。
まずMAMEのダウンロードサイトからソースコードをダウンロードします。ダウンロードファイルはexeの自己解凍形式になっていますので、Windowsで実行して解凍してもいいですし、拡張子exeをzipに変えるとPi500上でも解凍できます。
あるいは git clone https://github.com/mamedev/mame.git でも取得できますが、こちらはダウンロードに時間がかかります。
コンパイルに必要なパッケージをインストールします。
sudo apt install git build-essential python3 libsdl2-dev libsdl2-ttf-dev libfontconfig-dev libpulse-dev qtbase5-dev qtbase5-dev-tools qtchooser qt5-qmakeQtライブラリの環境変数をセットします。
export QT_SELECT=qt5
export QT_HOME=/usr/lib/qt5/解凍したMAMEのフォルダに移動して以下のコマンドを入力します。このコマンドではMAMEの各種ツールもコンパイルします。ツールが必要なければオプションのTOOLS=1を外します。
make TOOLS=1 -j3オプション-j3はコンパイルに使うスレッド数です。Pi500はこれより大きな数にできるとは思うのですが、昔Pi3で-j4にしたらハングしたことがあったので、長いコンパイル中に止まらないよう控えめに3にしてしまいました。
コンパイルが終了するとソースフォルダの中に実行ファイルmameとツール群のバイナリができています。それぞれのバイナリは好きなフォルダにコピーして使用できます。今回はMAMEという名のフォルダをつくってその中にmameを入れておきました。
つぎにmameを入れたフォルダ内にromsというフォルダを作り、ここにTOWNSのBIOSを入れます。
TOWNSのBIOSはうんづをダウンロードするとついてくるrombeger.exeをTOWNS本体で実行して取り出します。
fmt_dic.rom
fmt_dos.rom
fmt_f20.rom
fmt_fnt.rom
fmt_sys.rom
mytowns.romというシリアルROMも取り出せるのですが、これをモデルMXのエミュレータ向けにmytownsmx.romにリネームして使うと、チェックサムエラーとなって起動しませんでした。そこでこのファイル抜きで上記のファイルだけをfmtowns.zipというファイル名でアーカイブしてromsフォルダに入れ、(このBIOSだけで動く)初代TOWNSエミュレータを使うことにしました。
TOWNSエミュレータを動かす前にmameでキーバインドを一つ設定しておく必要があります。
ターミナルで今回作成したMAMEフォルダに移動して./mameと入力します。
画面下の「General Settings」をマウスでダブルクリックして選択します。

「Input Assignments」を選択します。

「User Interface」を選択します。

表示されたリストをスクロールさせ、「Toggle UI Controls」の項目をマウスでダブルクリックします。

Pi500のFn+Insキーを押します。リストにInsと表示されたらEscでメニューを抜けます。「General Settings」のメニューまで戻ったら、念のため「Save Settings」で設定内容を保存しておきましょう。

さらにEscを押していき、mameを終了させます。
それではTOWNSのシステムソフトウェアのCDイメージをmameのあるフォルダに置き、TOWNSエミュレータを起動してみましょう。CDイメージ名は"Towns System Software v2.1 L51"にしてあります。
./mame fmtowns -ramsize 6M -pad1 mouse -pad2 townspad -cdrom "Towns System Software v2.1 L51.cue"エミュレータが起動してきました。ここでマウスクリックかキーを押せば次に進みます。

警告が出ますが、無視してかまいません。マウスかキークリックで次に進みます。

TOWNSのロゴが表示された後、TOWNS OSが起動してきました。



使用してみると実機のTOWNSと変わらない操作感ですし、マウスカーソルがもたつくこともありません。ちゃんと動作していました。
アプリケーションも問題なく動きますし、サウンドもきれいに出力されています。


曲にあった音だけが出るので即興演奏っぽいことが出来る楽しいソフト
Fn+Insキーを押すとmameのUIが使えるモードになります。

もう一度Fn+Insを押せば通常のエミュレーションモードにもどります。
UIが使えるモードでTabキーを押すとmameのメニューが表示されます。ここでエミュレータに関する様々な操作が行えます。またUIモードでEscを押すとmameが終了します。

さらに懐かしのゲームも動かしてみました。「インディ・ジョーンズ アトランティスの運命」です。

./mame fmtowns -ramsize 6M -pad1 mouse -pad2 townspad
-floppydisk1 IndyJones.bin -cdrom IndiJonesFateAtlantis.cue
ルーカス・アーツの作品で、キャラクターをマウスで動かして進めていく「キングスクエスト」タイプのアドベンチャーゲームです。

全編フルボイスとなっており、ハリソン・フォード本人ではありませんが、よく似た声で(英語で)しゃべりまくってくれます。



ゲームの動作も実機並みでストレスなく遊べますし、音声もクリアに聞こえます。
さすがPi500はPi400の2倍以上の処理速度というだけのことはありますね。ちょっと前のデスクトップPCと変わらないような処理能力です。パフォーマンスの問題で、PC Linuxでしかまともに動かせなかったものがRaspberry Piでも動かせるようになってきたようです。衝動買いでしたがPi500買ってよかったと思いました。
mameで動かせるエミュレータはまだまだ山のようにあります。X68000のように公式にBIOSが配布されているものや、パソコンによっては互換BIOSが配布されているものもあるので、色々なエミュレータを動かしてみるのも楽しいでしょう。
ちなみに上記の津軽のサイトにあるTOWNSの互換BIOSは、mameでは使えませんでした。
