M5Stack:PC-8801 エミュレータ![QUASI88]

M5Stackのような低スペック端末の場合、PC-8801エミュレータは「X88000」よりも「QUASI88」の方が動作が軽いかもしれない、と考えて「QUASI88」も移植してみました。

QUASI88 ~ PC-8801 エミュレータ for UNIX/X11+SDL ~
https://www.eonet.ne.jp/~showtime/quasi88/

結果、M5Stackと、とても相性が良く、かなり軽く動作するPC-8801エミュレータができあがりました!ソフトの内容によっては、実機に迫るのでは?と思えるぐらいの速度まで出せそうです。


ソースはこちらです。PSRAMを用いますので、M5Stack FIRE専用です。

https://github.com/shikarunochi/m5n88Q

操作のためには、基本的には「CardKB」必須です。


M5Stack Official CardKB Mini Keyboard

が、それだけでは厳しいと思いますので、シリアルコンソール経由でも、英数字とカーソルキー&Enter程度は入力可能になっています。

CardKBを使うと「Fn」キー併用で以下の入力が可能です。
Fn+1~10:ファンクションキー1~10
Fn+Up:HOME
Fn+Down:CLR
Fn+Right:INST
Fn+ESC:STOP
Fn+BS :カナ(トグル動作)

サウンド機能は削除しています。(FM音源が無いのは残念ですが、ソフトウェアによるサウンド処理はメチャメチャ重いのです…。)

もともとのQUASI88の設定メニューは、マウス操作前提だったので、ディスク選択とBASICモード選択機能をM5Stack用で新しく作りました。

それと、一つ重要なことが!いまのところ、ディスクへの書き込みはできないです!ゲームのセーブはできません!
書き込み、試しに実装してみたのですが、うまく動かなかったのでいったんナシにしてます。

(2019/03/06)ディスク書き込みできるようになりました!
ファイルが更新されますので、元ファイルのバックアップをしっかり取っておいてください!


起動に必要なROMイメージファイルは、SDカードの /PC88ROM/ フォルダに入れてください。
ディスクイメージは、/PC88ROM/DISK/ フォルダに入れてください。
必要なファイルは QUASI88と同じです。

QUASI88 で必要なROMイメージファイル
https://www.eonet.ne.jp/~showtime/quasi88/memo/rom.html


起動時には、ドライブは空の状態で、N88-BASIC V2モードになります。

「Bボタン」を押すと、ディスクファイル一覧が表示されます。選択したものは、ドライブ1のディスクに設定されます。

d88ファイルの中には、複数のディスクイメージをまとめて格納しているファイルもあります。その場合には、どのディスクイメージをドライブ1に読み込むか選択する画面になります。

ボタンA / B / C で、イメージ 1 / 2 / 3 どれを読み込むか選択してください。選択したものがドライブ1に読み込まれ、選択されなかったものから1つがドライブ2に読み込まれます。(1→2→3→1 順で、選択したものの次のディスクイメージが設定されます。)

中には、イメージファイルが4つ以上入っているファイルもあるのですが、そんな大作をM5Stackでプレイすることは無いと思いますので、対応してません。

こういうやつですね。4 と 5 のファイルは読み込めないです。


「Cボタン」を押すと、起動モードを選択してリセットする画面になります。また、ディスクドライブの内容も確認できます。

基本的な遊び方は、「Bボタン」でディスクを選択 → 「Cボタン」でモード選択&リセットしてソフト起動 !です。

(この動画は設定画面が古いバージョンですね)


最初は動作するだけで満足、のはずだったのですが、結構遊べる状態にまでなりました…!
M5Stack FIRE、パワフルすぎますね。X88000 & QUASI88 エミュレータ作者の方にも感謝です!

80文字モードで動作するソフトだと「文字が小さすぎて読めない!」状態ですね。



このエミュレータが実行可能なのは、2019/02/25 時点では M5Stack FIRE のみです!


Amazonリンク貼りつつ、なんですけど、海外からの通販に抵抗が無い場合は、本家M5Stack の AliExpress で購入してみるのもいいかと思います。販売されている商品の種類も多くて、価格も少し安めです。ただし、到着まで半月~1ヶ月ぐらいかかります。