X68000ZやMSX0 Stack・MSX3(いつ出るんだ?)など懐かしの名機の復刻が続く中、数か月ほど前にPC-8801のミニチュア復刻版の発表がありました。その名もPasocomMini PC-8801mk II SR。来年の春発売とのことなので入手はまだまだ先になりますが、それまで待ち遠しいので、手持ちのマイコンボードにPC-8801のエミュレータを載せて雰囲気だけでも味わってみることにしました。
使用するマイコンはM5Stack Core2 for AWSです。元となるプログラムはこちらのサイトのものを使わせていただきました。このプログラムはM5Stack FIRE向けに書かれたものでしたが、ライブラリをM5Core2に変更して多少の手直しをするだけでCore2 for AWSで動かすことが出来ました。普通のM5Stack Core2でも動作すると思います。
開発にはPlatformIOを使っています。Arduino IDEに比べて開発効率が圧倒的にいいので、最近はPlatformIOしか使っていません。ただし、今回のソースコードはほぼそのままArduino IDEでコンパイルすることが出来ますのでPlatformIOを使わない人も利用出来ます。(詳細は後述)
ソースコードのダウンロードはこちらから。BOOTHをアップローダーとして使っていますが無料でダウンロードできます。
●PlatformIOでコンパイルする場合
PlatformIOを起動してM5Stack Core2のプロジェクトを作成します。
いったんPlatformIOを終了し、ダウンロードしたファイルのsrcフォルダとplatformio.iniをプロジェクトフォルダの中に上書きします。
PlatformIOを起動するとライブラリなどのダウンロードが開始されますので、終了したらコンパイルとM5Core2への書き込みを行います。
SDカードにPC-8801mkIISRのBIOSがないと起動しません。またI2Cキーボードがないと、すぐにはプロンプトが表示されません。
●Arduino IDEでコンパイルする場合
ダウンロードしたファイルのsrcフォルダの中にあるmain.cppを"任意の名前".inoにリネームします。srcのフォルダも同じ名前にしておくといいでしょう。
Arduino IDEでこの.inoファイルを読み込みます。
LovyanGFXライブラリがArduino IDEにインストールしてあれば、そのままコンパイル・書き込みが出来ます。
SDカードにPC-8801mkIISRのBIOSがないと起動しません。またI2Cキーボードがないと、すぐにはプロンプトが表示されません。
バックライトの明るさはevent.cppの552行目 M5.Axp.SetLcdVoltage(2600) の値を2500~3300にすることで変更できます。
キー入力にCardKBを使うようになっていたので、以前作成したCardKBほぼ互換のキーボードで動作確認しました。
ちゃんとキー入力できました。なのでCardKBでも問題なく利用できると思います。CardKBはどうか分かりませんが、自作のキーボードにはキーリピート機能が無くカーソル移動などの操作性が悪かったので、プログラムを変更してキーリピート機能を追加しました。
PC-8801のアプリはテンキーの2468を移動キーとして利用することが多いので、Fnキー+Rightでカーソルキーをテンキー2468に切り替えられる機能を付けました。ちなみにオリジナルのエミュレータのホームページではFn+RightでINSTと書いてありましたが、実際はShift+BSでINSTになっていました。
また、元のプログラムにはシリアル入力を使ったキー入力機能もありましたが、個人的に必要ないので外してあります。もし必要ならソースコードevent.cppの658行目 //checkSerialKeyboard() のコメントを外してください。
エミュレータの動作ですが、サウンド出力には対応していない代わりにとても高速に動作します。
むかしメチャクチャ遊んだちゃっくんぽっぷ
M5Core2の画面だと40文字なら何とか読めます。80文字になるとかなり小さいのですが、目を近づけて見ればちゃんと読めます。
N88-BASICを使うのは久しぶりです
手持ちの色々なゲームを動かしてみました。
その他雑誌から入力したものなども試しました
ロールプレイングやシミュレーションゲームは目は疲れますが、ちゃんと遊べます。
月刊誌I/Oに掲載されたオールキャストスタートレック
月刊誌アスキーに掲載されたヨーロッパ対戦
月刊誌アスキーに掲載された北海道防衛作戦
アクションゲームをキーボードで遊ぶのはちょっと難しい感じです。プログラム的に2つ以上のキー入力を同時に行えないので1つ1つキーを押しながらの操作は無理がありました。
PC-8801でスクロールシューティングが出来ることにびっくりさせられたアルフォス
今でも時々遊ぶレリクス
あの中村光一氏が月刊誌I/Oに投稿したスクランブル
ためしに別の目的で作ってあったI2Cジョイパッドをつないで遊んでみました。
キーボードに比べると操作性は格段に良くなりますが、キーの同時入力が出来ないのは一緒なので本気でアクションゲームを遊ぶのは無理があります。プログラムを修正するという手もありますが、アクションゲームは目に悪そうなので遊ぶことはないでしょう。キー入力はこのままにしておきます。I2Cジョイパッドについては、また後日投稿しようと思います。
正直PasocomMini PC-8801mkII SRとは全然違いますが、M5Core2でPC-8801mkIISRが動作しているのを見るのは感動的です。ミニチュアっぽい環境で懐かしパソコンが動くのは、PCのエミュレータを使うのとまた違った楽しさがあります。PasocomMini PC-8801mkII SRの発売が待ち遠しいですね。
※コメント投稿者のブログIDはブログ作成者のみに通知されます